From OpenSCADAWiki
Jump to: navigation, search
This page is a translated version of the page Documents/Release 0.9 and the translation is 100% complete.

Other languages:
English • ‎mRussian • ‎Українська

1 Введение

Релиз OpenSCADA, открытой SCADA(Supervisory control and data acquisition) системы, версии 0.9 является стабильным промышленным релизом продолжительной поддержки (LTS).

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

Релиз является следующей версией стабильной ветви для которого, в течении продолжительного времени, предоставляется техническая поддержка от разработчиков и обеспечивается выпуск исправлений в виде публичных сборок для основных и стабильных окружений Linux, а также оперативных сборок для владельцев пакетов технической поддержки. Жизненный цикл предыдущего релизу 0.8.0 LTS прекращается его последним обновлением, непосредственно перед первыми сборками пакетов 0.9 LTS.

Именно на этой версии осуществляется окончательный переход на схему разработки Work/LTS, т.е., разработка осуществляется в рамках рабочей версии и на её основе периодически выпускаются стабильные релизы, которые, в свою очередь и параллельно разработке, обновляются путём обратного портирования совместимых изменений из рабочей версии. Инициирующий переход произошёл в 2013 году, когда текущей стабильной версией определено 0.8.0 LTS, а рабочей 0.9 Work. На данный момент, стабильной версией становится анонсированная 0.9 LTS, а рабочей 1 Work.

В целом, новая стабильная версия является результатом шести лет работы с разработки, внедрения в различные решения, стабилизации и эксплуатации OpenSCADA в её рабочей ветви, которая на данный момент выпускается текущей стабильной. Всё это время обновления для 0.8.0 LTS продолжали выпускаться и что будет осуществляться для анонсированной 0.9 LTS.

Этот документ является обобщение протокола изменений (ChangeLog), начиная с нулевой ревизии предыдущей LTS версии, через её обновления и заканчивая текущей. Документ призван коротко и наглядно осветить новые возможности OpenSCADA. Детально ознакомиться с изменениями можно в файле "ChangeLog" дистрибутивных пакетов или из первоисточника: http://oscada.org/svn/tags/openscada_0.9/ChangeLog.

1.1 Общая информация

Проект OpenSCADA основан Савоченко Романом в 2003 году как свободную реализация Системы Диспетчерского Контроля и Сбора Данных (SCADA) или Человеко Машинный Интерфейс (HMI), на основе её фундаментального проектирования в течении 2002 года и опыта использования и разработки коммерческой SCADA-системы до этого.

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

На время анонса 0.9 LTS, OpenSCADA является развитой SCADA/HMI системой, которая довольно широко используется как по прямому назначению, так, благодаря своей гибкости, и во многих смежных областях, и которая с уверенностью может называться более обобщённо — динамическая система работы с данными реального времени.

Номер стабильной версии OpenSCADA меньше единицы только из-за того, что её целью была заявлена многоплатформенность, достичь которой в запланированном объёме планируется следующим стабильным релизом с номером 1. В целом, целями OpenSCADA являются:

  • открытость — в основном GPLv2;
  • масштабируемость, гибкость, расширяемость — модульность и внутренняя динамичность;
  • исполняемая избыточность — резервирование;
  • доступность — открытые исходные тексты; автоматическая сборка архивов, пакетов, живых дисков, ...; многоязычность; динамическая многоязычность; сборка и исполнение на Linux окружениях широкого возрастного диапазона, от 2002 года (2009-ALTLinux 6, LP8x81, Fedora 12; 2012-Debian 7) по современные;
  • надёжность — практическое применение, быстрое решение проблем;
  • безопасность — распределение прав, SSL;
  • многоплатформенность — x86_32, x86_64, ARM, Web, Android, QNX (предадаптировано), MS Windows (запланировано);
  • единый, унифицированных, удобный и развитый интерфейс пользователя — Qt, Web, прозрачное и многоуровневое удалённое управление;
  • широкий спектр источников данных — универсальные, платы DAQ и низкоуровневые шины, созданные в окружении OpenSCADA.

1.2 Применение

Роли OpenSCADA.

К актуальным отраслям применения, где известно хотя-бы одно внедрение и с коротким перечнем которых от участников проекта можно ознакомиться по этой ссылке, относятся:

С некоторыми ограничениями и доработками, в основном во внутреннем окружении пользователя, OpenSCADA может использоваться и в таких отраслях:

  • управление ресурсами предприятия (ERP);
  • Geo-локация и отслеживание положения;
  • торговые системы;
  • медицинские диагностические системы;
  • бухгалтерский учёт;
  • билинговые системы.

2 Результаты предыдущего релизу 0.8.0 LTS

Релиз 0.8.0 LTS выпущен в апреле 2012 года и в течении этих шести лет он претерпел 20 обновлений, которыми, в целом, исправлено более 500 ошибок и добавлено множество усовершенствований, которые не нарушают совместимости библиотечных БД и конфигурации.

Конфигурация и библиотечные БД 0.8.0 LTS были в целом заморожены, ввиду больших несовместимых изменений в 0.9 Work, для методов запуска OpenSCADA, и несовершенство распространение библиотечных БД на момент выпуска 0.8.0 LTS. Поэтому, обновление и переход на версию 0.9 LTS будет нетривиальным, хотя в 0.9 LTS предусмотрено всё возможное для упрощения этой процедуры. Обновление-же 0.9 LTS до запланированной в будущем 1 LTS уже не будет таким сложным и фактически может превратиться исключительно в формальное изменение версии рабочей ветви, поскольку теперь планируется обновление всего, включая и библиотечные БД.

3 Плановые задачи релиза

Развитие OpenSCADA, после предыдущей LTS версии и в рамках рабочей ветви, в основном осуществлялось путём глубокой стабилизации и через практическую адаптацию с элементами расширения существующего функционала, нацеленные на предоставление стабильного и надёжного окружения автоматизации промышленных и смежных задач, а соответственно и не существовало чётко определённого плана. Но за три года до этого релиза такой план появился и составил следующие задачи, что видно из общего плана развития:

  • Полная ревизия основной документации и подготовка анонса этого релиза.
  • Адаптация к работе на программной платформе "Android".
  • Перенос базы знаний OpenSCADA и Wiki-ресурса документирования на новый движок с унификацией структуры под многоязычность с приоритетом: Английский, Украинский, mRussian; и генерация автономной документации по её изменению.
  • Ревизия, актуализация и некоторое расширение Web-модулей OpenSCADA.
  • Расширение и адаптация OpenSCADA к прямой работе с низкоуровневыми шинами и устройствами вроде 1Wire, I2C и реализация проекта умного дома в собственной квартире.
  • Формальное создание и документирование проекта дистрибутива Linux автоматизации с OpenSCADA.
  • Создание автоматизированной системы сборки пакетов OpenSCADA.
  • Перенос серверной инфраструктуры OpenSCADA на собственное оборудование и канал интернета.
  • DAQ.OPC_UA: Упрощение, увеличение функциональности и перенос протокольного кода в отдельную LGPL v3 библиотеку.

Эти задачи выполнены и некоторые детали около них приведены далее.

4 Общесистемные свойства

Новая стабильная версия OpenSCADA получила заметные общесистемные расширения, приобрела большей стабильности в работе и увеличение продуктивности, а также получила заметные усовершенствования графического интерфейса и окружения около неё, вроде: расширенной настройки, документации, доступной прямо из программы (offline и online), и которая значительным образом пересмотрена и актуализирована.

Основная часть документации проекта перенесена на новую Wiki, на основе MediaWiki, и значительный объём этой части был отревизирован и переведен на три языка — Английский, Украинский, mRussian. Для переноса была создана процедура конвертации статей из диалекта движка WackoWiki на MediaWiki, которая была полностью написана на внутреннем языке программирования OpenSCADA и которую многократно использовано для переноса большого объёма старой Wiki. Формат автономной (offline) документации был изменён со статичных PDF-файлов, которые не обновлялись после предыдущей LTS версии, на HTML-файлы, которые динамически генерируются из актуальной базы знаний проекта (Wiki), а также имеют актуальные крос-ссылки между страницами и ссылки на online-документацию, для исключительно внешних материалов. Генерация offline-документации также производится специально написанной процедурой на внутреннем языке OpenSCADA, что, вместе с процедурой конвертации Wiki-диалекта и комплексного тестирования релиза OpenSCADA, является ярким показателем мощности и текущего уровня развитости внутреннего языка OpenSCADA.

В рамках старой Wiki, после выпуска 0.8.0 LTS были добавлены и обновлены некоторые документы, а с переносом на новую Wiki, кроме ревизии и перевода основной части документации, была осуществлена общая унификацию её структуры из соображений: многоязычности (Английского как первичного языка), логичности организации, удобства перевода и возможности убрать дублирование статей с официальным сайтом, которые сейчас просто используются из Wiki. Отдельно отметим значительно-расширенные главные документы:

Первичный язык (Английский) был полностью отревизирован в оригинальных сообщениях программы и во многом для основных статей документации-Wiki OpenSCADA, что на данное время делает OpenSCADA адекватно воспринимаемой для аудитории, которая не понимает исходных языков — Украинского или mRussian. И, вместе с реализацией в полном объёме механизма динамического перевода, делает возможным построение на основе OpenSCADA динамично многоязыковых интерфейсов пользователя, что Вы можете кроме всего прочего посмотреть на публично доступном Web-интерфейсе динамических моделей ТП: АГЛКС, Котёл.

Рабочей версией, в основе этой стабильной, впервые было определено понятие проекту OpenSCADA и реализован сценарий командной строки для запуска и создания проектов OpenSCADA. Непосредственно перед выпуском этой версии, понятие проекта OpenSCADA было окончательно закреплено за директорий с данными отдельного проекта и конфигурационным файлом OpenSCADA, а реализация менеджера проекта была интегрировано непосредственно в OpenSCADA. Соответственно, эта LTS версия имеет развитое понятие менеджера проектов, что позволяет гибко с ними работать и исключить опасную возможность многократного запуска с общими данными одного проекту.

Рабочей версией, также, внедрено изменение версий модулей по изменению в коде модуля и непосредственно перед их выгрузкой в репозиторию исходных текстов, а соответственно, версии модулей OpenSCADA этого релиза наглядно отражают общий уровень их развитости и стабильности.

Живые диски дистрибутива Linux автоматизации проекта OpenSCADA.

В процессе осуществления работ над рабочей ветвью, в основе этой стабильной, было внедрено формирование репозиториев пакетов дистрибутивов Linux со сборками OpenSCADA, которые до этого предоставлялись только как отдельные пакеты. Что заметно упростило развёртывание OpenSCADA и содержание её актуальной. Затем был создан автоматических сборщик этих пакетов, который на данный момент насчитывает до 100 целей, и что значительно упростило выпуск обновлений как для рабочей ветви так и для этой стабильной. Соответственно, к этой LTS версии предоставляются сборки пакетов для основных окружений Linux и вся историю публичных обновлений будет сохранена.

К пакетам сборок OpenSCADA предоставляются также и сборки живых дисков быстрого ознакомления и развёртывания OpenSCADA вместе с системным окружением. Которые до этого момента получили формальное основание в виде Linux дистрибутива автоматизации проекта OpenSCADA.

Основной сервер OpenSCADA.

Сборки и пакеты OpenSCADA сопровождаются рядом открытого и свободного материала внутреннего окружения программы, а именно, это: наработки слоя сбора и обработки данных, элементы графического представления и целые-комплексные проекты моделей ТП. Эти материалы предоставляются в виде файлов БД SQLite и включают:

Хостинг проекта в целом и материалов 0.9 LTS в частности, был перенесен на собственный сервер проекта, где дополнительно были развёрнуты: демонстрационные Web-интерфейсы моделей OpenSCADA, проект мониторинга сервера и умного дома на основе OpenSCADA и сборщик пакетов репозиториев OpenSCADA.

4.1 Внутренние

Разрешающая способность внутренних данных целого типа окружения OpenSCADA увеличена до 64 разрядов. В целом-же, внутренние данные OpenSCADA, с резервированием значения ошибки (EVAL) для каждого, унифицированы общими типами: логическое, целое, реальное, строка и объект. Что в первую очередь касается источников данных.

В ядро OpenSCADA, собственный протокол и все узлы что работают с удалёнными станциями OpenSCADA; добавлена возможность "поднятия" узлов OpenSCADA, которые находятся за другими узлами и, как правило, в другой сети. Что в целом позволяет централизовано управлять сетью станций OpenSCADA на любом уровне иерархии.

4.2 Усовершенствования и адаптация для различных платформ

OpenSCADA на Android.

Эта версия OpenSCADA получила углублённую поддержку и способность к адаптации для различных платформ. Что в основном случилось благодаря адаптации для работы на программной платформе Android и восстановления сборки и работы с ucLibC, и что планируется использовать в дальнейшей адаптации для работы на программных платформах QNX и MS Windows.

Raspberry Pi.
Orange Pi.

Работа на одноплатных ПК была расширена платами Raspberry Pi и Orange Pi.

Nokia N9.

Поддержка Linux смартфорнов Nokia дополнена последним, основанным на MeeGo 1.2, это — Nokia N9. Или это было обновление поддержки Nokia N950.

Кроме непосредственной работы (нативно) на различных платформах, был значительно расширен Web-интерфейс, который сейчас реализует все общие возможности концепции среды визуализации и управления (СВУ).

4.3 Оптимизация, стабилизация и продуктивность

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

  • общим включением-выключением отладки и целевым контролем узлов отладки;
  • особенной отладкой объектов контролеров источников данных;
  • особенной отладкой исполнения проектов СВУ;
  • формированием углублённой статистики исполнения динамических объектов OpenSCADA, таких как: объекты контроллеров источников данных и их параметров, входных и выходных транспортов, сеансов СВУ с детализацией до виджетов;
  • протоколирование входного и выходного трафика транспортов.

Глубокой и всесторонней стабилизации претерпели почти все модули OpenSCADA и многие были оптимизированы, из которых особенно нужно отметить:

  • Все модули БД — добавлена обработка и проверка ошибок БД или СУБД, а также выдача сообщений про эти ошибки в случае пользовательской загрузки и записи; увеличена производительность (до порядка) БД поддерживающих SQL, через реализацию режима предзагрузки сканирующего запроса;
  • Вычислитель на основе Java-подобного языка (DAQ.JavaLikeCalc) — увеличена производительность через: сохранение контекста исполнения функции, предзагрузку постоянных и прямой доступ к строке.
  • Архиватор на БД (Archive.DBArch) — значительно оптимизирована запись и чтение БД, а именно это: групповая запись нескольких архивов в одну таблицу и чтение блоками (кратными десяти) в одном запросе.
  • Все транспорты — в целом увеличена производительность.
  • Рабочий пользовательский интерфейс (WEB) (UI.WebVision) — увеличена чувствительность интерфейса использованием асинхронных запросов в общем цикле обновления.
Резервирование OpenSCADA станций.

Надёжность резервируемой станции в масштабе комплексного решения, точнее сохранение данных истории, была усовершенствована расширением механизма резервирования, который потенциально предусматривает резервирование любой подсистемы и реализует сейчас резервирование подсистем "Сбор данных" и "Архивы-История".

И, для программы в целом, был выполнен ряд формальных всесторонних тестов, которые были предварительно расширены во внутренней процедуре комплексного тестирования релиза OpenSCADA. В результате этих тестов было выявлено несколько ошибок, которые исправлены.

4.4 Сбор данных

Пользовательская объектная модель ядра OpenSCADA.

Учитывая ключевую роль сбора данных в программах такого роду, эта функция, в лице подсистемы "Сбор данных" и её модулей, получила значительные усовершенствования, из которых особенно нужно отметить: смещение акцента в расширении поддерживаемых источников данных из реализации отдельных модулей подсистемы "Сбор данных" на системном языке "C/C++", на их реализацию в окружении OpenSCADA и на её внутреннем языке — логический уровень OpenSCADA. Т.е., на логическом уровне OpenSCADA, может и реализуется все, что: для доступа к данным использует сеть, не требует использования специфических библиотек и функций и не является очень сложным. На данный момент, таким образом реализовано:

Низкоуровневые устройства подключенный к Raspberry Pi.
OpenSCADA на LCD экране Raspberry Pi.
  • Отправка SMS сообщений (SMS) и электронных писем (SMTP).
  • Источник Бесперебойного Питания (UPS), как объект данных с атрибутами и значениями.
  • Простые сенсоры и датчики:
    • Елемер TM510x;
    • EDWARDS TURBOMOLECULAR PUMPS (SCU750);
    • Sycon Multi Drop Protocol (SMDP);
    • Блок питания турбо-молекулярного насоса (TMP-xx03);
    • Измерение температуры IT-3 (IT3);
    • IVE-452HS-02;
    • OPTRIS CT/CTL;
    • CTR 100, 101.
  • Компьютер теплового счётчика VKT7.
  • IEC-60870-104.
  • Тестовые реализации и примеры: DCON, OWEN.
  • Шина "One Wire" с помощью {DS9097,DS9097U} (1W_{DS9097,DS9097}) для чипов: DS1820, DS1820/DS18S20/DS1920, DS1822, DS2413, DS2408, DS2450, DS2438.
  • Шина I2C: PCF8591, PCF8574, BMP180, DS3231, AT24C{32|64}.
  • Общие порты ВВ (GPIO): DHT11,22 (AM23XX). GPIO|I2C: 1602A(HD44780).

Учитывая рост роли логического уровня OpenSCADA, выросли и требования к гибкости модели данных источников данных и в целом, что было удовлетворено:

  • завершением покрытия внутренней модели данных всеми функциями, характерными для области применения;
  • добавлением иерархичности к параметрам объектов контроллеров источников данных;
  • добавлением возможности произвольного и динамического формирования модели данных — набору атрибутов параметров.

Внутренний язык программирования OpenSCADA приобрёл значительные усовершенствования и, сейчас, удовлетворяет всем требования отраслей применения OpenSCADA. Многие из этих усовершенствований попали в предыдущую версию 0.8.0 LTS, а ряд из них не мог туда попасть из-за нарушения обратной совместимости или недостаточной стабильности на то время. Из этих, существенных усовершенствований, нужно ещё раз отметить: увеличение разрешающей способности данных внутреннего окружения OpenSCADA целого типа до 64 разрядов и сохранение контекста исполнения внутренних процедур.

4.5 Графическое окружение

Диалог выбора проектов OpenSCADA.
Пользовательский контроль вида интерфейса Qt.

В целом, графическое окружение получило значительное развитие и главным из них стало расширение модуля запуска Qt-интерфейса, как основы для остальных локальных. В первую очередь, этот модуль и ядро OpenSCADA адаптированы для возможности запуска библиотеки графической среды Qt в основном потоке программы, что исключило много проблем, связанных с исполнением в неглавном потоке, а также обеспечена работа с версией 5 этой библиотеки. Во вторых, этот модуль взял на себя роль интерфейса выбора проектов OpenSCADA при её запуске и переключении, а также создание новых. И в третьих, ввиду его первичности к запуску Qt, он получил функцию управления видом программы независимо от графического окружения и возможность его запуска-закрытия в системный лоток. Что в целом сделало возможным настройку OpenSCADA под персональные требования пользователя и адаптировать её к очень специфическим окружениям вроде Android.

Заметных усовершенствований получили модули конфигурации Qt и Web, где особенно нужно отметить:

  • Конфигуратор-Qt (UI.QTCfg): осуществление запросов к удалённым станциям в отдельном потоке от потока Qt, что сделало его удобнее и более прогнозируемым и что даже, вместе с одним из обновлений, попало в предыдущую стабильную версию 0.8.0 LTS.
  • Конфигуратор-WEB (UI.WebCfgD): в целом, был полностью обновлен на предмет интерфейса, который сейчас является более динамическим, удобным и может быть расширен темами.
OpenSCADA на Web.

Заметных усовершенствований также получила среда визуализации и управления (СВУ), в составе всех её модулей:

  • Движок СВУ и модули визуализаторов вообще (UI.VCAEngine):
    • позволяет осуществлять полноценную-горячую разработку, т.е. — редактирование проекту СВУ на момент его исполнения сеансами;
    • оригинальные сообщения интерфейса являются полностью откорректированными, грамматически и орфографически корректными для Английского языка;
    • предоставлено ряд дополнительных видов примитива "Элементы формы", "Диаграмма" и расширено примитив "Text" отображением "HTML";
    • предоставлено механизм специфических для визуализатора атрибутов виджетов, что позволило раскрыть и использовать их индивидуальные свойства;
    • новый-гибкий механизм сообщений пользователя про внештатные события в контролируемом системой процессе, который предусматривает возможность свободного формирования пользовательских извещателей с нужными свойствами, как: моно-тонный сигнал, синтез речи.
  • Визуализатор-Qt (UI.Vision):
    • заметно улучшена работа исполнения удалённых интерфейсов и обеспечено осуществление запросов к удалённой станции в отдельном потоке от потока Qt, что упростило удалённую разработку с параллельным исполнением проекта;
    • формирование примитива "Документ" может осуществляться с помощью WebKit.
  • Визуализатор-WEB (UI.WebVision):
    • унифицирован, оптимизирован и расширен использованием CSS3;
    • предоставлена реализацию всех элементов-примитивов унифицированного интерфейса;
    • осуществляется масштабирование до доступного пространства окна браузера;
    • увеличена производительность работы и чувствительность интерфейса, через использование исключительно асинхронного механизма при обновлении.

Все Web-модули, в целом, получили возможность изменения вида посредством тем, через общесистемные интерфейсы модуля протокола HTTP и его механизмы обработки запросов и формирования ответов. Также, все они получили поддержку динамического перевода интерфейса, что особенно актуально для многопользовательских Web-интерфейсов и с чем Вы можете ознакомиться на демонстрационных Web-интерфейсах моделей OpenSCADA: АГЛКС, Котел. Добавлен также механизм разделения доступа по страницам, который, кроме всего прочего, позволяет разграничить доступ к Web-модулям вообще.

5 Новые и значительно обновленные модули

В новой версии были добавлены новые модули и значительным образом обновлен ряд существующих:

  • Добавлены новые модули:
    • MMS(IEC-9506) (DAQ.MMS) — модуль поддержки обмена данных по протоколу "Manufacturing Message Specification (MMS, IEC-9506)".
    • Comedi (DAQ.Comedi) — модуль поддержки источников данных реального времени (библиотека "Comedi"), которые основаны на платах сбора данных различных производителей и устанавливаются на шинах: ISA, PCI, PCMCIA и USB.
    • SMH2Gi (DAQ.SMH2Gi) — модуль реализации доступа к аппаратным модулям источников данных ПЛК Segnetics SMH2Gi,SMH4 для "MC", "MR", а также взаимодействия с оригинальным окружением "SMLogix".
    • Fastwel IO (DAQ.Fastwel) — модуль обмена данными с аппаратными модулями Fastwel IO.
    • FT3 (АПСТМ) (DAQ.FT3) — модуль обмена данными с контроллерами АПСТМ, АСДКУ, СУАП.
    • GPIO (DAQ.GPIO) — модуль доступа к GPIO одноплатных ПК вроде Raspberry Pi, Orange Pi и другие.
  • Вычислитель на основе Java-подобного языка (DAQ.JavaLikeCalc) расширен: поддержкой внутренних функций, динамическим переводом сообщений и многими другими функциями интерфейса пользовательского программирования в целом.
  • Шлюз источников данных (DAQ.DAQGate) расширен шлюзованием сообщений, связанных с выбранным источником данных.
  • Сбор данных ОС (DAQ.System) расширен источниками данных: "Файловая Система", "ИБП", "QSensor" и возможностью отделения медленных источников от быстрых.
  • ModBus ({DAQ,Protocol}.ModBus) расширен поддержкой строки, как последовательности значений регистров.
  • Клиент DCON (DAQ.DCON) значительно расширен поддержкой специфических модулей.
  • Роли OpenSCADA как OPC-UA сервер.
    OPC-UA (DAQ.OPC_UA) значительно расширен публикацией и поддержкой "кусков" в клиентской части сервиса, специфический код протокола выделен в библиотеку.
  • Оборудование ICP_DAS (DAQ.ICP_DAS) значительно расширен, а фактически полностью переписан, поддержкой всех присутствующих плат сбора данных от фирмы ICP_DAS для серии I8k, I-87k, на шине ISA и унифицированные типы для стандартных модулей серии I7k.
  • Siemens S7 ПЛК (DAQ.Siemens) значительно расширен собственной реализацией ISO-TSAP.
  • Diamond платы сбора данных (DAQ.DiamondBoards) значительно расширен, а фактически полностью переписан, поддержкой всех присутствующих плат сбора данных от фирмы Diamond Systems.
  • Устройства АСКУ (DAQ.AMRDevs) реализована поддержка счётчика Контар (МЗТА).
  • Все модули БД значительно расширены динамическим переводом.
  • Архиватор на БД (Archive.DBArch) расширен архивацией нескольких архивов в одну таблицу и восстановлением перечня архивов из информации в БД.
  • Архиватор на ФС (Archive.FSArch) добавлена поддержка промежуточных типов "Int16", "Int32", "Int64", "Float", "Double" и дополнен абсолютным ограничением размера архива на диске.
  • Все модули транспортов расширены режимом пулинга входных транспортов и протоколов.
  • Сокеты (DAQ.Sockets) расширен поддержкой шины RAWCAN и инициативным подключением входного транспорта.
  • Последовательный интерфейс (Transport.Serial) расширен поддержкой низкоуровневой шины I2C; специальными пользовательскими функциями последовательного интерфейса: "sendbreak", "TS", "DR", "DCD", "RI"; расширенным управлением RTS для RS-485.
  • Слой безопасных сокетов (Transport.SSL) расширен поддержкой: TLSv1.1, TLSv1.2, DTLSv1.
  • Собственный протокол программы (Protocol.SelfSystem) расширен иерархическим и многоуровневым направлением запросов на внешние хосты.
  • HTTP (Protocol.HTTP) расширен адаптивностью к интерфейсам пользователя в системных диалогах и предоставлением общего API построения HTTP-интерфейсов как для пользователя, так и модулям за ним.
  • Программный конфигуратор (Qt) (UI.QTCfg) запросы интерфейса управления OpenSCADA вынесены в отдельный поток и улучшена реализация элементов контроля.
  • Программный конфигуратор (Динамический WEB) (UI.WebCfgD) расширен новым дизайном с использованием CSS3 и возможностей современных WEB-браузеров.
  • Концепция и движок среды визуализации и управления (UI.VCAEngine) расширен: поддержкой специфических для визуализатора атрибутов виджетов, реализацией нового-гибкого механизма уведомления пользователя, фоновым (в отдельном потоке) исполнением задачи формирования документов, увеличением количества трендов на одном кадре до 100 и поддержкой логарифмической шкалы примитива "Диаграмма".
  • Рабочий пользовательский интерфейс (Qt) (UI.Vision) расширен: для работы в сети через сервер визуализации; реализацией группы специфических этого визуализатора атрибутов; реализацией видов "Дерево", "Таблица" и расширением вида "Кнопка", примитива "Элементы формы"; реализацией вида "XY" примитива "Диаграмма"; значительным рефакторингом кода примитива "Элементарная фигура".
  • Рабочий пользовательский интерфейс (WEB) (UI.WebVision) расширен использованием CSS3 и возможностей современных браузеров, а именно: добавлено масштабирование к доступному пространству окна браузера, реализованы все примитивы унифицированного интерфейса.
  • Библиотека функций системного API среды пользовательского программирования (Special.FLibSYS) расширен функциями и объектами: "floatExtract", "md5", "tmSleep", объект "IO"; значительно расширены существующие функции и объекты: "dbReqSQL", "FFT", "strParse", "strDec4Bin".

6 Выводы

По пути к новому релизу 0.9 LTS промышленного назначения осуществлена большая работу по стабилизации, расширению функциональных возможностей, а также расширению адаптационных возможностей к работе на альтернативных платформах. Всё это в целом ещё больше расширило границы полноценного применения OpenSCADA на всех уровнях систем промышленной автоматизации и смежных направлениях автоматизации и автоматики.

LTS версии OpenSCADA не являются пустым звуком, они реально поддерживаются всё время, до следующей LTS версии, и поддержка этой версии ещё будет расширена сервисными обновлениями. Также, будет осуществлёно смещение акцента и политики внедрения LTS версии, которая до этого рекомендовалась к обновлению конфигураций с замороженными библиотечными БД, на приоритет в использовании на широком спектре новых решений.

Предадаптация OpenSCADA к работе на QNX.

В появлении новой промышленной версии OpenSCADA 0.9 LTS приняли участие:

  • Роман Савоченко: основной объём работ по разработке, тестированию, сборке, документированию и переводу программы и документации тремя языками.
  • Максим Кочетков: реализация модулей DAQ.Fastwel, DAQ.FT3; расширение модуля Transport.Sockets поддержкой RAWCAN и модуля Transport.Serial расширенным управлением RTS для RS-485.
  • Арсен Закоян: реализация поддержки счётчиков электроэнергии "Меркурий 200" и "Меркурий 230".
  • Руслан Ярмолюк: реализация поддержки счётчика электроэнергии NIK 2303.
  • Алмаз Каримов: расширение модуля реализации протокола DCON.
  • Аркадий Кисель: реализация поддержки I2C сенсора температуры, барометрического давления и влажности BME280.
  • Константин (IrmIngeneer): поддержка сборки OpenSCADA на дистрибутиве Linux Gentoo.
  • Сергей Дорошка: предварительная адаптация OpenSCADA к работе на QNX.
  • Организации, которые содействовали наиболее значительному усовершенствованию OpenSCADA через её интеграцию в собственные системы управления:
    • Proviron Holding NV: приобретение пакетов технической поддержки для общей поддержки, исправления и улучшения реализации протокола Siemens ISO-TSAP(ProfiNet), некоторых наработок около Raspberry Pi, 2014, 2016-2018.
    • Лаборатория вакуумных технологий: "Вакуумная технологическая установка", 2011-2018, и финансирование оборудования сервера OpenSCADA, 2014.
    • Оптима: "Система Автоматизации Метрополитена", 2016.
    • Вектор: приобретение пакетов технической поддержки для исправления и улучшения реализации OPC-UA в работе с разными OPC-UA клиентами и серверами, 2015-2016.
    • Краматорсктеплоэнерго+ДІЯ: "САУ шаровых барабанных мельниц ШБМ 287\410 котлоагрегата №8 БКЗ 160–100 ПТ", 2015, та "САУ Фосфатирования, Амминирования и Гидразина котлоагрегатов БКЗ 160–100 ПТ", 2014. В качестве ПЛК использован ICP-DAS LP-8781 с OpenSCADA в роли среды исполнения ПЛК.
    • Хартрон: "Система Контроля Реактивности (СКР) Ядерной Подкритической Установки (ЯПУ)", 2013-2015.
  • Много других организаций и отдельных пользователей, которые пожелали остаться анонимными, через приобретение технической поддержки и услуг, конструктивные отзывы внедрения и эксплуатации.

Последующие усилия разработки будут направлены на:

  • Завершение ревизии основной документации, в основном по модулям и библиотекам.
  • Чёткое определение и обновление политики предоставления коммерческих услуг вокруг проекта OpenSCADA:
    • пересмотр и обновление условий пакетов технической поддержки;
    • политика и организация сборок обновлений к стабильной ветви: сохранение истории всех публичных обновлений и организация сервисных;
    • дистрибуция исключительно коммерческих сборок с публичными демонстрационными на примере пакетов для Android — разработка и формирование механизма контроля за сроком пакета технической поддержки и демонстрационного режиму.
  • Освоение и адаптацию к отрасли "Управление ресурсами предприятия (ERP)" с направленностью на:
    • создание интерфейса управления ресурсами на сервере проекта;
    • создание общего интерфейса контроля задач и их финансирования, с организацией разработчиков к привлечению исполнения этих задач и технической поддержки.
  • Расширение функций применения в отраслях "Умный дом", "Домовая автоматика" и "Бытовые роботы".
  • Адаптацию к работе в окружении операционных систем QNX и MS Windows.

7 Обновления

7.1 [22.02.2022] ПЯТОЕ обновление

Это обновление релиза 0.9 LTS исправляет около 50 ошибок и добавляет МНОЖЕСТВО улучшений с несколькими значительными-концептуальными, с которыми целиком можно ознакомиться в протоколе изменений обновления.

At.png Significant actions of the developer of the OpenSCADA modules on the update

  • FIX:SYS.TMess: Type of labStor(), labSecCRON(), labSecCRONsel(), labTaskPrior(), labMessCat() changed to "string".
=> obligatory revise of using the label functions since the compiler mayn't to say an error in functions like to printf(), TSYS::strMess() but that module will be crashed.

Automation Linux distributive of the project OpenSCADA

  • appending Debian 11 as the distributive base;
  • moving of building the Debian 10,9 base to the Debian 11 environment, then expanding the installer variants;
  • updating TDE to 14.0.11 and next 14.0.12;
  • fixing the plymouth problems, then the installations are safe now and "/var/boot.log" doesn't grow;
  • fixing Digikam, TDEPim, KArm and kdiff3, than appending the new patched packages "tdepim-trinity", "digikam-trinity" and kdiff3-trinity to the distributive collection.

Main WWW-resources of the project — Site

  • significant changes in the Site common interface:
    • the Wiki-pages call in IFRAME appended for a waiting screen and an animated image of representing the loading wait; the opened pages vertical size was precisely fitted also at three attempts;
    • the content window horizontal size limited in 1000 pixels;
    • moving the vertical submenu of the main menu from the static left position to the call at an options button on the left of the main menu;
    • moving to the top right for the service panel with buttons of the language select, call the print variant and the Google-search field;
    • dividing twice the top logo image;
    • the Google-search field: width expanding, moving up and hide under a search icon.
  • changing the registration conditions and rules on the OpenSCADA site;
  • the registration module finished in the translation to Ukrainian and enabled for acknowledge the new users registration by the site administrator.

New and significantly updated parts

  • OpenSCADA Core: 3:11:0 => 3:12:0
(Common Conception of the Data Storage, Messages Translation, Message Sublevels {Main}[0...9] and Unification for the User Messages Transferring)
  • OpenSCADA "BD", "DAQ" subsystems: 14 => 15, 13 => 14
(Significant Unification the Common SQL-code in the OpenSCADA Core)
  • DAQ.DAQGate: 2.5 => 2.9
(redundancy and the messages transferring, asynchronous writing mode implementation)
  • DAQ.JavaLikeCalc: 5.1 => 5.4
  • DAQ.Siemens: 4.2 => 4.4
  • {DAQ,Protocol}.ModBus: 3.3 => 3.4, 2.8 => 2.9
  • {DAQ,Protocol}.OPC_UA: 2.5 => 2.6, 2.1 => 2.2
  • Archive.FSArch: 3.6 => 3.7
  • Archive.DBArch: 3.0 => 3.1
  • Transport.SSL: 3.3 => 3.4
(pointing the certificates and the key directly from an external file with the input transports restarting at it change)
  • Protocol.HTTP: 3.6 => 3.8
  • Protocol.UserProtocol: 1.4 => 1.5
  • BD.DBGate: 1.0 => 1.1
  • BD.SQLite: 3.0 => 4.0
  • BD.MySQL: 3.5 => 4.0
  • BD.PostgreSQL: 2.5 => 3.0
  • BD.FireBird: 2.5 => 3.0
  • UI.QTStarter: 5.10 => 5.12
  • UI.QTCfg: 5.6 => 5.9
  • UI.WebCfg: 1.8 => 2.0
  • UI.WebCfgD: 2.1 => 2.3
  • UI.VCAEngine: 7.1 => 7.8
(finishing of implementing the changes obtaining in the runtime mode by the clocking cycles through)
  • UI.Vision: 7.14 => 8.0
(early opening the restored and specified pages in the init procedure)
  • UI.WebUser: 1.4 => 1.5
  • UI.WebVision: 6.2 => 6.6
  • LibsDB.OscadaLibs.base.anUnif: 2.1 => 2.4
  • LibsDB.OscadaLibs.base.anUnifSt: 1.2 => 1.3
  • LibsDB.OscadaLibs.base.digAlarm: 1.2 => 1.3
  • LibsDB.OscadaLibs.base.codeState: 1.3 => 1.4
  • LibsDB.OscadaLibs.servProc.docOffLine: 1.2 => 1.3
  • LibsDB.OscadaLibs.Controller.test: 1.1 => 1.2
  • LibsDB.vcaBase.Main
    • alarmsAct: 1.1 => 1.3
    • alarmsSt: 1.2 => 1.4
    • RootPgSo: 2.4 => 2.5
    • ElCadr: 1.1 => 1.2
    • TextLab,ImgLab: 1.0 => 1.1
    • graphSelPrm: 1.4 => 1.5
    • objProps: 1.1 => 1.2
    • cntrRegul: 1.1 => 1.2
    • storeHouse: 1.0 => 1.1
  • LibsDB.vcaBase.mnEls.El_Kran_Sh,Compressor: 1.0 => 1.1
  • LibsDB.vcaBase.doc
    • docAlarmsRep: 1.5 => 1.6
    • docUsersSet: 1.5 => 1.7

CONCEPTUAL > Common Conception of the Data Storage

  • the Сonception is commonly unified in the direct storage specification and definition the Generic Storage "*.*" as a combination of the Configuration File and the work Data Base, when the Configuration File is the priority one for accessing the allowed data and the work Data Base for new data.
  • TBDS::{dataSeek,dataGet,dataSet,dataDel,genDBGet,genDBSet}() moved to the bit flags TBDS::ReqGenFlg;
  • the TBDS::dbList() moved to the bit flags TBDS::DBLsFlg;
  • TCntrNode appended of the functions storage() and setStorage() for tracking the availability of node data in different storages and offer a queue of the storages for the mechanism of sequentially removing duplicates, and they also used in the object functions DB(), fullDB(), setDB();
  • the objects are adapted for tracking the multiple storages and are appended of the sequentially removing duplicates: Security.{User,Group}, Transport.{Input,Output}, DAQ.{Controller,TemplateLib}, Archives.{VArchive,VArchiver,MArchiver}, DAQ.JavaLikeCalc.Lib, Protocol.{ModBus,OPC_UA,UserProtocol}.*, UI.WebUser.Page, UI.{VCAEngine,Vision}.{WdgLib,Proj};
  • the generic parameters accessing functions TBDS::genDBGet() and TBDS::genPrmSet() moved under the new storage conception using TBDS::dataGet() and TBDS::dataSet() respectively, and renamed to genPrmGet() and genPrmSet() everywhere;
  • the objects moved to use the new function dataDelTbl(): DAQ.{TController,TPrmTmplLib,JavaLikeCalc,LogicLev,BlockCalc,ModBus,Siemens,OPC_UA}, Archive.DBArch, UI.{VCAEngine,Vision}.{WdgLib,Proj};
  • the functions moved and used everywhere as static ones: TBDS::{dbList,dataSeek,dataGet,dataSet,dataDel,dataDelTbl}();
  • the spare storage addresses with tables were shortened to the standard storage address with the table name unification, where the previous not standard names leave to be edited up to the 1.0 release, for the objects: SYS, DAQ.{TemplateLib,JavaLikeCalc.Lib}, UI.{VCAEngine,Vision}.{WdgLib,Proj};
  • switched to select only DBs: Archive.DBArch, Protocol.HTTP;
  • the root object of the DB subsystem TTypeBD appended of the DB priority base [0...9] in the generic storages list and the Data Base object TBD appended of the configuration field "Priority in list" to control order of the databases from TBDS::dbList(), than control the loading order;
  • the "Work DB" configuration field changing disabled on the modification marking of all nodes;

CONFIGURATION FILE

  • the configuration parameters and tables implementing in the common context of the TBDS::data{Seek,Get,Set}() functions;

REFACTORING THE TCntrNode FLAGS

  • TCntrNode::{chldDel,nodeDis}() moved to direct use the new TCntrNode::EnDisFlag;
  • the flags TCntrNode::{NodeRemove,NodeRemoveOnlyStor} used everywhere of the function postDisable() checking and chldDel() call.

CONCEPTUAL > Significant Unification the Common SQL-code in the OpenSCADA Core

  • unification the table structure control by the structure item object TTable::TStrIt;
  • refactored, initially on SQLite, in the request lists form in the separate list variables;
  • common SQL-code moving to the functions: fieldSQLSeek(), fieldSQLGet(), fieldSQLSet(), fieldSQLDel();
  • declaration in the core for the service definitions, methods and functions to the common SQL-code: SEEK_PRELOAD_LIM, tblStrct, seekSess, connRes, fieldFix(), getSQLVal(), setSQLVal();
  • the fieldFix() appended an argument "langLs" of specifiyng need languages instead the argument "trPresent";
  • propagating in such way of the last MULTILANGUAGE support code in DB.SQLite.

CONCEPTUAL > Messages Translation
TFunction::IO object appended the flag IO::TransltText of marking the translate String IO directly:

  • the types "String (translate)" and "Text (translate)" appended in: template object of DAQ-Parameter, TFunction object of DAQ.JavaLikeCalc, UI-Attributes of UI.VCAEngine;
  • the flag TFld::TransltText used in: value getting of TValue of DAQ-Atributes, DAQ-Attributes translation of DAQ.{LogicLev,ModBus,OPC_UA,Siemens}, UI-Attributes translation of UI.VCAEngine;
  • set to the type "String (translate)" for: the field "colDscrCustNames" of wlb_Main.{alarmsAct,alarmsSt}.

Expanding by the language for the execution environment of the user functions of the OpenSCADA object, for functions like to strftime():

  • the object TCntrNodeObj, the function TCntrNode::objFuncCall() and TConfig::objFunc() expanded in the argument "user" renaming to "user_lang" with pointing language in the second line;
  • DAQ.JavaLikeCalc: the TCntrNodeObj execution appended of the language;
  • SYS.strftime() appended of execution from the pointed language-locale.

TUIS,UI.{QTCfg,Vision}: docGet() expanded by the language in the second line.
FIX: The "Translations" tab expansion and fixing for:

  • the option "check for mismatch (TrChkUnMatch)" renamed to "check/fix (TrChkAndFix)" and expanded of the translation fixing functions: by propagation the translations to empty sources, clearing the double to base translations, merging the base messages as the translations;
  • information of the non matching was appended in the second message text;
  • the translation management table appended of the user functions "Split item" and "Remove from Trs";
  • the translation status appended of the short labels "SINGLELANGUAGE", "MULTILANGUAGE", "MULTILANGUAGE-DYNAMIC"; the message index; size of the cache and the translation context;
  • the base language configuration field of the MULTILANGUAGE modes expanded by list the project locales separated by ";".

FIX: Expansion the Data Messages Translation in the tree modes: SINGLELANGUAGE, MULTILANGUAGE and MULTILANGUAGE-DYNAMIC:

  • the user language obtaining unified in the function lang2Code(), expanded by the arguments "user" and "onlyUser";
  • the lang2CodeBase() function separated to the common one langBase() and appended the function langToLocale() of obtaining the complete locale at language from langBase();
  • the language field of the objects TSYS, TUser appended of the selection list from langBase();
  • FIX: the TMess::mRes lock renamed to TMess::trMessIdxRes and limited in use only for TMess::trMessIdx;
  • the translation cache significant extending and unification:
    • in the new TMess object's functions translCacheGet(), translCacheSet(), translCacheLimits() and the own lock trMessCacheRes;
    • extended by the message category for caching the system translations and users;
    • the cache limiting also appended by the time limit variable "limCacheIts_TM" for what it checked in the service task.
  • appended for the translation context at the new function TMess::trCtx() and the object TrCtxAlloc for handling the context registration as user and language bound to the call thread:
    • TCntrNode::cntrCmd(), Protocol.HTTP, UI.{Vision,WebVision,WebUser,WebCfg,WebCfgD} attached to use the translation context.
  • synchronized in the system prestored and the dynamic-data setting messages;
  • the DB type-module objects were appended by the specific information field "Features" of specifying the supported by DB features;
  • FIX: complete disabling the translation and registering in the message index at the loading for generic TConfig nodes with the JavaLikeCalc procedure text and a deprecated flag of enabling that procedure whole translation;
  • UI.QTCfg: the tree update enabled for the root page updation through the reconnection and the tree update at the user change; enabled for using the system language in the SINGLETRANSLATION mode for remote connections;
  • FIX:UI.VCAEngine: the project styles moved under a new storing table "{DB_TBL}_stls" and its structure with translation;
  • UI.{WebCfg,WebCfgD}: Generically adapted to the dynamic translation in the MULTILANGUAGE-DYNAMIC mode, using the HTTP-variable "lang", the user language and browser language;
  • the How to "Create multi language project" document was created.
PRIMARY PROJECT OBJECTS
  • implemented for the base message and its translations mark as fuzzy - "<!>" in the text end at changing, and warning the translation removing;
  • accessing the dynamic translation moved under the new functions trD()->TMess::translGet() and trDSet()->TMess::translSet(): TArchives,TDAQ,TTypeDAQ,TController,TParamContr,TFunction,TPrmTmpl,TTransports,DAQ.{BlockCalc,JavaLikeCalc};
  • appended in the dynamic translation for:
    • DAQ-attributes name-description postranslation after the system translation and translation in the context help;
    • DAQ-attributes translation in the UserAPI functions: get(), set(), descr();
    • DAQ.JavaLikeCalc: names setting part of the execution form moved to itself;
    • Protocol;{ModBus,OPC_UA,UserProtocol},UI.{VCAEngine,WebUser}.
  • adapted commonly to the new changing conception in the MULTILANGUAGE-DYNAMIC mode through "{base}\000{lang}\000{mess}";
  • appended and used for a new function translIdxCacheUpd() of updating the operative translation messages' index and cache in the MULTILANGUAGE-DYNAMIC mode for the SET command;
  • appended of the translation copy in the SQL INSERT command and for the MULTILANGUAGE-DYNAMIC mode;
  • the configuration file appended of the MULTILANGUAGE-DYNAMIC mode support.
INDIVIDUAL MESSAGES - "Trs"
  • UI.VCAEngine: appended of changing the storage just after the widget procedure compile for placing of the dynamic messages translation to the project storage;
  • the transitive dynamic translation prevented in appending the table "Trs" for messages available in other sources, so checking the message index before;
  • appended for filtering the messages for they translatability before registering.
  • LibsDB.vcaBase:
    • wlb_Main.ElViewGraph: enabled for the transitive translation in the tooltip and for the parameter description;
    • wlb_Main.objProps: enabled for the transitive dynamic translation;
    • wlb_Main.storeHouse: significantly expanded for the specific fields, ordering the columns, appending of the highlighting rules for column values with filter index or list, fixed in whole work.
SYSTEM MESSAGES
  • implemented for a function of prestoring system messages translation trS(), where the base message just return with the catalogue information, that is "{base}\000{cat}" and what is translated really in the call _() — in the background there is used Mess->I18N(), but for the specific language code mess_PreSave="<PSV>";
  • the system translation function TMess::I18N() was attached to the messages cache;
  • the TFld and IO objects expanded in work with the prestoring system messages;
  • module info fields adapted to the MULTILANGUAGE-DYNAMIC mode;
  • adaption to the postranslation for the User API function TConfig::cfg() in the translatable strings;
  • UI.{QTCfg,Vision}: adapted to the control items obtain in language of the user and update the main window interface language at it change;
    • UI.Vision: appended in updation the toolbars at the user change, what also adapted for the dynamic translation; all development dialogs adapted for the dynamic translation.
  • UI.{QTStarter,QTCfg,Vision}: appended for the system Qt-messages translation relating to the selected user language, through the common application property "lang" for the Qt-translation reimplemented function QTranslator::translate(), and then the language commonly switched by the last interface and for all opened; the Starter Menu set for dynamic translation and updating.

CONCEPTUAL > Message Sublevels {Main}[0...9] and Unification for the User Messages Transferring

  • generic adaption to sublevels {Main}[0...9] of the main message levels [0...7];
  • DAQ,DAQ.DAQGate: the function TController::messSet() appended of the messages transferring from the top to the down, so sinking down, making the function virtual one and redefine that in DAQGate, and defining also the new OpenSCADA control service request of the TController object "set:/serv/mess";
  • DAQ: specified for the DAQ-transparency messages in the category form "{TP}{ModId}:{CntrId}[.{prm}][:{spec}]", appended of such messages creation function TController::messSet() and the User API functions SYS.DAQ["Modul"]["Controller"].messSet(), SYS.DAQ["Modul"]["Controller"]["Parameter"].messSet();
  • LibsDB.vcaBase:
    • wlb_Main.{ElCadr,TextLab,ImgLab,cntrRegul},mnEls.{El_Kran_Sh,Compressor}: adapted for the user action messages forming by the new DAQ-function messSet() with the unified category structure for transferring between OpenSCADA stations of different levels;
    • wlb_Main.{alarmsAct,alarmsSt}: adapted to process of sublevels of the main levels with coloring all the levels; expanded by the new user field "Type" as name of the alarm level from the new configuration attribute "types";
    • wlb_doc.{docUsersSet,docAlarmsRep}: appended in the DAQGate source complete scanning for whole transferring hierarchy;
    • wlb_Main.alarmsSt,wlb_doc.{docMessRep,docAlarmsRep}: adapted to the transferred messages by DAQGate;
    • wlb_Main.{alarmsSt,alarmsAct},wlb_doc.docMessRep: improved in the DAQGate source complete scanning for whole transferring hierarchy, also for user actions (OP);
    • wlb_Main.TextLab: optionally enabled for the transitive translation in the status text which often comes from some DAQ-source.

OpenSCADA libraries and projects

  • FIX:LibsDB.{OscadaLibs,vcaBase,vcaTest},{AGLKS,Boiler}.*: Appended, cleaned and fixed for the multilanguage messages by applying the new translation fixing mechanisms.
  • LibsDB.vcaBase,AGLKS.vca,Boiler.St: All project styles moved under a new storing table and its structure with translation.
  • FIX:LibsDB.vcaBase:
    • FIX:wlb_Main.{alarmsAct,alarmsSt}: The default sorting at the field of the alarm time set back to "1" as not default descending order. wlb_Main.alarmsAct: Appended for the field "messCat" of specifying the alarm categories.
    • wlb_Main.{ElViewGraph,graphSelPrm}: Adapted to reset the trend item color to the default styled at setting that to empty; appended of the empty color processing as the default one also taken from the style.
    • FIX:wlb_Main.RootPgSo: Appended of complete updating at the user change, but language also can be changed, and the language.
  • LibsDB.OscadaLibs: The "DB" field content and the table base ID of UserFuncLibs.{techApp,servProc,Controller} renamed to the standard one "flb_techApp", "flb_servProc", "flb_Controller" respectively.
    • tmplib_base.{anUnif,anUnifSt,digAlarm,codeState}: Adapted to the syntax highlight builtin of the input preprocessing procedure.
    • tmplib_base.digAlarm: Expanded in the common attribute DESCR using for the specific parameters redefinition by the new fields "CustomFlds".
    • tmplib_base.anUnif: Expanded in the common attribute DESCR using for the specific parameters redefinition by the new fields "CustomFlds" and "CustomAlarms". Appended of the user procedure option "toSave" of force saving the object at the exit.
  • flb_servProc.docOffLine: Expanded for the index page accessing from any other pages.

API
!!!!:Changes:

  • SYS: TCntrNode::{chldDel,nodeDis}() moved to direct use the new TCntrNode::EnDisFlag: NodeNoFlg, NodeRemove, NodeRemoveOnlyStor; and the space after > 0x100(TCntrNode::NodeSpecific) was reserved for the node specific, where the TParamContr::EnDisFlag set only to NodeRemove_NoArch and Widget::EnDisFlag set only to Widget::{NodeRemove_NoDelMark,NoContainer}. TCntrNode::Flag items renamed SelfModify->Modified, SelfModifyS->ModifiedS, SelfSaveForceOnChild->SaveForceOnChild.
    • Storage object's functions DB(), fullDB() and setDB() expanded of the argument "qTop".
    • The subsystem name moved to the function subName() call and which set "virtual" and "constant", also as subVer() and subId().
    • The description field type of the TFld object and the name field of the IO object changed to "string".
    • Result of TCntrNode::nodeNameSYSM() changed to "string".
    • TMess: The lang2CodeBase() function separated to the common one langBase() and appended the function langToLocale() of obtaining the complete locale at language from langBase().
      • The function lang2Code() expanded by the arguments "user" and "onlyUser".
      • I18N() changed in the arguments for "const string &mess" the first and mLang moved to the second, it result changed to "string", also for TModule::I18N(), and updated all definitions _().
      • The data translation functions (short definitions) renamed to trD_L(), trD_U(), trD_LU(), trDSet_L(), trDSet_U(), trDSet_LU().
      • Removed for I18Ns().
      • labStorGen() merged to labStor() and that labels labStor(), labSecCRON(), labSecCRONsel(), labTaskPrior(), labMessCat() type changed to "string"; appended of the label labStorGen().
      • lang2Code() and lang2CodeBase() renamed to langCode() and langCodeBase() respectively for starting the adaption to the language code more than 2 symbols.
    • Security: The static method "pHashMagic" moved to the definition SEC_HASH_MAGIC.
  • DB: The functions TBDS::{open,close}() renamed to TBDS::{tblOpen,tblClose}() and set to static ones.
    • TBDS::{dataSeek,dataGet,dataSet,dataDel,genDBGet,genDBSet}() moved to the bit flags TBDS::ReqGenFlg (renamed from TBDS::ReqGen): NoFlg, NoException, OnlyCfg, UseTranslation (renamed from ReqGen::UseTranslation), UseCache, UseAllKeys.
    • TBDS::dbList() moved to the bit flags TBDS::DBLsFlg: LsNoFlg, LsCheckSel, LsInclGenFirst.
    • The functions moved as static ones: TBDS::{dbList,dataSeek,dataGet,dataSet,dataDel,dataDelTbl}(), TBDS::{fullDBSYS,fullDB}().
    • The generic parameters accessing functions TBDS::genDBGet() and TBDS::genPrmSet() renamed to genPrmGet() and genPrmSet() everywhere.
  • DAQ: TTypeDAQ::compileFuncSynthHighl() renamed to TTypeDAQ::compileFuncSnthHgl() in a way of the name unification.
  • Archives-History: Definitions of the archive specific names renamed for BUF_ARCH_NM, ALRM_ARCH_NM, ALRM_ARCH_CH_NM to ARCH_BUF, ARCH_ALRM, ARCH_ALRM_CH; and appended for ARCH_NOALRM ("<noalarms>").

Appends:

  • SYS: The global short functions appended of s2l() and s2u().
    • Appended of a new function strParseEnd() of parsing the separated string from the end.
    • The function pathLev() appended of a new argument of position the offset to the next token begin and what also appended in the UserAPI function parsePath() of DAQ.JavaLikeCalc.
    • TCntrNode appended of the functions storage() and setStorage() for tracking the availability of node data. TCntrNode::Flag appended of the item LoadForcibly. TCntrNode::modif() and TCntrNode::modifG() appended of a new argument "forceLoad".
    • The time limit variable "limCacheIts_TM" appended for the cache limiting.
    • The common encoding function strEncode() and the User API one appended the variant "ShieldBin" of shield the binary symbols [\x0-\x8\xB-\xC\x0E-\x1F].
    • TMess: Appended for a function of checking the messages for them translatability — isMessTranslable().
      • Appended for functions of managing the translation cache: translCacheGet(), translCacheSet(), translCacheLimits() and the own lock trMessCacheRes. Appended for a function translIdxCacheUpd() of updating the operative translation messages' index and cache, and functions translItSplit(), translItRemTrs() of the items splitting and removing from Trs.
      • Appended for the translation context at the new function trCtx() and the object TrCtxAlloc for handling.
      • Appended for the data translation trD()->translGet() and trDSet()->translSet().
      • Appended for the prestoring system messages translation trS(), as an other link to I18N().
      • Appended for the function messLevelTest().
      • The TMess::Type structure appended of an item "MaxLev" of the maximum message types/levels specifying.
      • The TMess definitions appended of mess_PreSave="<PSV>" and mess_TrModifMark="<!>".
    • XMLNode: Appended of the new saving option BinShield(0x400) for controllable shield the binary symbols [\x0-\x8\xB-\xC\x0E-\x1F].
    • TConfig,TCfg: Expanded for new parameters TConfig::{trcSet,setTrcSet}(), TCfg::{isSet,setIsSet}() of detection the configuration field changing and using in the partial DB-loading instead toDefault(); and TConfig::{noTransl,setNoTransl}() for global setting the structure default translation. TCfg::setExtVal() function appended an argument "toOne".
    • TError: codes appended of: DB_TrRemoved (22) for mark the translation removing in DB, DB_ReadOnly (23) introduced by SQLite at the unification process, Core_NoNode (5) of the TCntrNode missing, Tr_ErrTransport (12) for the transport errors mark, Tr_ErrResponse (13) and Tr_ErrDevice (14) for more specific transport errors.
  • DB: The TBDS::realDBName() appended of the back conversion argument.
    • The static methods of TBDS appended of the new function dbPart() of getting the storage address parts and appended of a new function dataDelTbl() of the common tables removing, also in the Configuration File.
    • Appended for the structure item object TTable::TStrIt.
    • Common SQL-code moving to the new functions: TTable::fieldSQLSeek(), TTable::fieldSQLGet(), TTable::fieldSQLSet(), TTable::fieldSQLDel(); with the flags TTable::SQLReqFlag: SQLNoFlg, SQLOrderForSeek, SQLFirstSkipForSeek.
    • Declaration in the core for the service definitions, methods and functions to the common SQL-code: SEEK_PRELOAD_LIM, tblStrct, seekSess, connRes, fieldFix(), getSQLVal(), setSQLVal().
    • Appended of the list priority specifying functions TBD::lsPr(), TBD::setLsPr() and virtual one TTypeBD::lsPr().
    • Appended of the DB features specifying virtual function TTypeBD::features().
  • DAQ: TFunction::IO object's structure IO::IOFlgs appended the flag IO::TransltText of marking the translate String IO directly.
    • The function {TController,TParameter}::messSet() appended of the messages transferring from the top to the down, and also the User API functions SYS.DAQ["Modul"]["Controller"].messSet(), SYS.DAQ["Modul"]["Controller"]["Parameter"].messSet().
    • The TCntrNodeObj appended of the function lang() obtained from the second line of the common method mUserLang.
    • The User API functions appended of the function funcSnthHgl() in the DAQ module object and for obtaining the syntax highlight rules of the module and language.
  • Archives-History: Appended of the function "void TArchives::messPut( const TMess::SRec &rec, const string &arch = "" )" variant.
  • Transports: Appended of the new function extHostSeek().
  • UI: Appended of the Configuration File option "FontSnthHglCode" and the corresponded functions TUIS::fontSnthHglCode() and TUIS::setFontSnthHglCode().
    • VCAEngine:
      • The User API functions mime() and mimeSet() appended of the correct equivalents resource() and resourceSet().
      • The Project object appended a Control Interface service request "read:/serv/access", of checking the read access.
      • The Control Interface service request "get:/prm/cfg/prj" appended an option "noName" for preventing the project name request.

SYS

  • FIX:Building: configure.ac: Core library version rose to 3:12:0 and the program version rose to 0.9.5.
    • The module version of the subsystem "BD" rose to 15, the subsystem "DAQ" rose to 14.
    • The Debian 11 root file systems (chroots) are appended for build OpenSCADA; appended for build to Ubuntu 22.04 LTS and Debian 11 ARM64; and Maemo 5 (Nokia N900) removed since the compiler crashes now constantly in several places.
    • data/*.xml: The TBDS Generic parameter "SYSStPref" removed.
    • SYS,data/ModelsDB/{AGLKS/oscada_AGLKS.xml,Boiler/oscada_Boiler.xml}: The configuration parameter "Lang2CodeBase" renamed to "LangBase" with support "Lang2CodeBase" up to the 1.0 release.
  • The source code messages and program documentation:
  • .,DAQ.DAQGate: The messages redundancy and messages transferring in DAQ.DAQGate limited for depth of the requesting messages up to the restoring time or one hour.
    • The archivers redundancy and DAQ.DAQGate switched in the initial messages requesting to:
      • request the active alarms;
      • request the archive in deep and up to the alarms requesting time, without the alarms activation;
      • ordinal-periodic request of the last messages, without the alarms activation.
  • Protocol.HTTP,UI.{WebCfg,WebCfgD,WebUser,WebVision}: Appended of the previous user detection to mark that actions for HTTP-modules with moving the previous user authentication session closing after successful the new one.
    • All the HTTP-modules adapted to the user field in the HTTP-functions with the previous user in the second line.
    • FIX:WebVision: The previous user is used now for detection of the user change between the ordinal users and for single session, than prevent to create new sessions.
  • Expanding the binary symbols [\x0-\x8\xB-\xC\x0E-\x1F] shielding:
    • XMLNode: Appended of the new saving option BinShield(0x400) for controllable shield the binary symbols [\x0-\x8\xB-\xC\x0E-\x1F], what is significant for the WebBrowsers.
    • UI.{WebCfgD,WebVision}: Appended of encoding the XML traffic for the binary symbols shielding using the new option "BinShield".
  • FIX: strParse() rewrote and tested in processing the group symbols merging at the scan; and strParse(), strLine(), pathLev() in position the offset to the next token begin and limiting in the down for 0; and pathLevEnd() in positioning the offset to the next token end and limited in the up for the size. TModSchedul::chkAllowMod(),UI.QTCfg,Protocol.HTTP: switched in use TSYS::pathLevEnd() and TSYS::pathLev() in the new behaviour.
  • Force loading appended of the errors suppression for not modified nodes before that operation.
  • .,DB,DAQ: The global configuration context copying mechanism (interstation) appended for the marking link to the last setting operation object, to easy postmarks setting.
    • DAQ: As a postmark to the saving DAQ-parameter object there appended the attribute "prmTp" with the parameter type, which is used next in true detection the parameter type changing at the following loading.
  • .,UI.{QTCfg,WebCfgD}: The OpenSCADA Control Interface for Tables expanded by the user commands.

DB

  • FIX: The TBD object appended an internal flag "mIsFirst" of control the object first enable and what used to prevent of the table "Trs" registering at each enable-connection-reconnection.
  • FIX: The TBDS::dataDel() fixed-appended in removing multiple items and appended of removing the empty table nodes of the Configuration File.

DAQ

  • FIX: The controller objects manual start defined for some specific hot doings of the object enabling, when the doing was prevented from call twice at the normal start:
    • DAQGate: resync the remote source data at the sync period >= 0;
    • ModBus: force reformation of the acquisition blocks;
    • OPC_UA: force reformation of the monitored items list;
    • Siemens: force reformation of the acquisition blocks.
  • The "Return" type IO of the TFunction object was set to ReadOnly in the manual execution tab.
  • FIX:DAQGate: Appended of the asynchronous writing mode implementation. The configuration field of the remote stations selection moved in simple combobox. The controller object status appended of the counters of read/archive's/wrote values, read messages and the writing buffer status.
    • FIX: Fixed in reusing parameters with empty address for included ones and appended for clearing the address at the parameters copy.
    • FIX: Unified in the sync commonly and fixed in the attributes sync, with preventing in constantly sync of the missed on remote host parameters.
  • FIX:JavaLikeCalc: Prevented in some resources lock of the library function at its program change, when performed the program compile at disabled function.
  • Siemens: Appended of the new option "Maximum size of the request block, bytes" of specifying the maximum requesting block.

Transports

  • The UpRiseLev stations splited in the requesting transport per the first host of the "reforwardHost" address, than preventing the common connection hung at long connection to very far reforward missing station.
  • SSL: Both input and output parts appended of the possibility to point the certificates and the key directly from an external file. Appended for reloading the certificates file of the input transport at it change by the transport reconnect.

Transport Protocols

  • FIX:HTTP: Fixed in reading the "accept-language" HTTP variable only as the two symbol language code, then the common interface is translated also now on FireFox who sends there the country code also.
  • FIX:SelfSystem: In the input part switched to load the whole input message before checking the auth information, then preventing for strange error messages "Error the command format." for the message tail.

User Interface

  • VCAEngine,Vision,WebVision: The "openlist:/serv/pg" control request appended in the attribute "pgGrp" (group) of the opened page for detection several pages open in one container then open last one and close previous ones, to prevent mostly the included pages all close and allow of specifying-override the need pages open.
    • Vision: Refactored also for early opening the restored and specified pages in the init procedure.
  • QTStarter,WebVision,WebCfgD: Qt part, in the generic Qt Library, and Web appended for the table edition text apply at Enter and new line at Ctrl+Enter.
  • FIX:QTCfg,Vision: Prevented from hangs at stopping from a termination signal, from the console mostly, since locking the main Qt thread in modStop() without qApp->processEvents().
  • QTCfg: The text fields appended of checking and activation the builtin syntax highlight rules from the XML-tag "SnthHgl". The Tables appended of finding for pointed strings.
  • VCAEngine:
    • Finishing of implementing the changes obtaining in the runtime mode by the clocking cycles through, after observing the race condition on the attributes changing, which cause to do not update the value on visualizers:
      • rewrote for the modification control mechanism;
      • specifying the forming and fixed cycles;
      • reducing the main calculation clock to uint16;
      • dividing the changes clock value of attributes and the widget commonly to the forming (uint16) and the fixed (uint16) = uint32;
      • processing the changes clock value both at the modification and reading-checking;
      • support of reloading the main calculation clock and clearing the old changes clock value;
      • preventing the empty cycles for the common widgets requesting;
      • removed for code of the previous slide current mark mechanism of the attributes changing detection with the doubles.
    • The Widget copy operation appended of copying the used widget resources (the Image type now only), and in that way there performed.
    • FIX: The "<deleted>" mark setting for the removed inherited included widgets moved to the save function of the container widget, since that is lost at the copy operations and now you can easy undo/redo such widgets removing.
    • FIX: Fixed in the mime data copy at the widget libraries and the projects copy, moving the copy to the copy save, with expanding the mime operations for work with completely specified DBs.
    • FIX: Prevented in the attribute values inheriting for the output links, then do not write to DAQ the obviously wrong values at the hot edition of running projects and their items.
  • FIX:Vision: Fixed, or finished the implementation, for UNDO/REDO the removing operation of the inherited included Widgets of the Project Pages.
    • Adjusted in the focus policy to the UI.WebVision way and appended the focus force clearing at lost, to prevent the widget focus return at window activation, so you can use now the event "ws_FocusIn" in opening external subwindows.
    • The child widgets selection conception at the visual editing of the development mode was unified and fixed in a new part "Visual editing" of the UI.Vision module documentation.
    • Requesting of the widget attributes' values of the developed widget moved to a single big request, than the remote development is become much faster.
  • FIX:WebVision: The session methods mUser and mUserOrig moved under the data mutex lock, due to there can be crashes at active user manipulations.
    • FIX: The view "Combo" of the type "Line" and the types "List" and "Combo" appended of creation value items missed in the selection list.
    • FIX: The popup windows of the calendar and editable combo appended of the geometry check than preventing the main window overflow; and the popup windows closing moved completely at a mouse button press outward the window, together other popup menus.
    • FIX: Improved and fixed in usability the view Table of the primitive FormEl and mostly in the text edition: true width fitting and minimum height setting to 40 pixels, FIX: fixed in specifying the column sorting value "0" as ascending-default and "1" as descending from the top, like to the UI.Vision behaviour and the numbers (integer,float) sort-comparing was implemented separately.
    • Appended for the FrontEnd status display in the session status field with that requesting-scheduling at display the field.

7.1.1 Service updates

7.2 [14.06.2021] ЧЕТВЁРТОЕ обновление

Это обновление релиза 0.9 LTS исправляет около 45 ошибок и добавляет некоторые улучшения, которые целиком вы можете почитать в протоколе изменений обновления.

Переведено в счёт пакета ТП Лаборатории Вакуумных Технологий

At.png Важные действия пользователя по обновлению

  • FIX:SYS: Общее конфигурационное поле "WorkDir" предотвращено от маркирования как модифицированное при переключении проекта, чем и от сохранения в конфигурационном файле, но отсутствует механизм автоматического удаления этого поля из конфигурационного файла старых проектов.
=> удалите вручную общее конфигурационное поле "WorkDir" если оно появилось там ошибочно и вы имеете проблемы использования каталогов чужих проектов этим проектом.

Новые и значительно обновленные части

  • Ядро OpenSCADA: 3:9:0 => 3:10:0
(ревизия механизма переводов)
  • Подсистема "Транспорты" OpenSCADA: 17 => 18
  • {DAQ,Protocol}.OPC_UA,libOPC_UA: 1.7 => 2.1, 1.10 => 2.1, 1.2 => 2.1
(дополнено реализацией сервиса Publish, поддержкой кусков (CHUNKS) на клиентской части Сбора Данных и общим пересмотром кода в этом процессе)
  • DAQ.ModBus: 2.12 => 3.1
  • DAQ.DAQGate: 2.2 => 2.3
  • DAQ.Siemens: 3.5 => 3.6
  • Transport.Sockets: 4.2 => 4.3
  • Transport.Serial: 2.5 => 2.6
  • Transport.SSL: 3.2 => 3.3
  • UI.WebCfgD: 1.5 => 2.0
  • UI.VCAEngine: 6.9 => 7.1
  • UI.QTStarter: 5.8 => 5.9
  • UI.QTCfg: 5.1 => 5.4
(общий пересмотр и переделка таблиц)
  • UI.Vision: 7.7 => 7.13
(общий пересмотр и переделка таблиц в Qt в целом и вида Таблица примитива FormEl СВУ)
  • UI.WebVision: 5.8 => 6.2
(общий пересмотр и переделка таблиц вида Таблица примитива FormEl СВУ)
  • LibsDB.OscadaLibs.DevLib.IEC62056: 1.0 => 1.1
  • LibsDB.vcaBase.Main: 2.0 => 2.1
    • storeHouse: 1.0
    • RootPgSo: 2.3 => 2.4

OpenSCADA библиотеки и проекты

  • LibsDB.vcaBase,AGLKS.vca: Main.RootPgSo: Дополнено на предмет:
    • виджета "alarms" на основе примитива "Протокол" с возможностью включить/выключить;
    • добавления опциональной функции возврата к типовому пользователю после определённого времени неактивности в атрибуте "defUser";
    • переключено на неотносительный алгоритм вычисления вертикальной позиции и высоты главной мнемосхемы.
  • LibsDB.OscadaLibs: DevLib.IEC62056: Переписано в синхронный режим (запрос-ответ) для работы нескольких устройств на одной последовательной шине.
  • LibsDB.vcaBase:
    • Библиотека "Основная" дополнена новой страницей реализации "Склада (storeHouse)".
    • Main.RootPgSo: Периодичность исполнения кадра поднята до 1000 миллисекунд после добавления ранней обработки событий. Значительным образом переключено с клавиатурных последовательностей "Ctrl+?" на "CtrlAlt+?".
  • AGLKS.vca: Страница проекта /prj_AGLKS/pg_so/pg_4/pg_mn/pg_1 переименована в /prj_AGLKS/pg_so/pg_4/pg_mn/pg_CM101, как с другими.

API
!!!!:Изменения:

  • SYS: Функцию TSYS::curTime() дополнено аргументом определения источника часов с использованием функции clock_gettime(). Определение EVAL_RFlt дополнено суффиксом "f".
  • Mess: Функция перевода TMess::translSet() дополнена аргументом "srcFltr" фильтрации по источникам.
  • Транспорты: Функция протокола ВВ pushLogMess() дополнена аргументами "data" и "dataDir".

Дополнения:

  • Mess: Блокирование данных отделено от блокирования всех сообщений в dtRes.
  • SYS: Функции API пользователя дополнены функцией lang() быстрого получения системного языка.
    • Дополнено функцией TSYS::curTimeN().
    • .,DAQ.{LogicLev,ModBus,Siemens}: Дополнено и использовано глобальную постоянную DAQ_APER_FRQ представления частоты апериодических вызовов, вроде f_start, периодических процессов.
  • Безопасность: Объект пользователя дополнен функцией Пользовательского API auth() для аутентификации по паролю.
  • Транспорты: Входные и выходные объекты транспортов дополнены атрибутами протокола ВВ: "mLogLstDt", "mLogLstDtTm".
  • DAQ: Объект DAQ-параметра дополнен информационным полем метки времени изменения с его максимальным значением на объекте контроллера, с помощью нового конфигурационного поля БД "TIMESTAMP" объекта параметра.

Система

  • FIX:Сборка:configure.ac: Версия библиотеки ядра увеличена до 3:10:0 и версия программы увеличена до 0.9.4.
  • Сообщения исходного кода и документация программы:
    • rom_as@oscada.org заменено на roman@oscada.org везде в исходниках.
    • Документ "Modules/OPC_UA" целиком отревизирован для версии модулей 2.1 и перевода.
  • Вкладка "Переводы" несколько отревизирована, дополнена актуальным статусом, дополнена контекстной помощью и менеджер переводов дополнен на предмет:
  • ограничения времени формирования таблицы в prmInterf_TM (7 секунд);
  • конфигурационного поля пропуска количества верхних сообщений;
  • установки перевода только для фильтрованных источников;
  • проверки содержимого на совпадение только для фильтрованных источников;
  • пропуск ошибок отсутствия источников.
  • Функция перевода TMess::translSet() предотвращена от распространения групповых сообщений, изменённых не из менеджера перевода.
  • FIX:.,BD.LDAP,Archive.{DBArch,FSArch},DAQ.{ModBus,MMS},{DAQ,Protocol}.OPC_UA,UI.Vision: Несколько очищено от предупреждений сборки.
  • FIX: Определение EVAL_RFlt дополнено суффиксом "f" для предотвращения ошибочного сравнения double EVAL_RFlt с сохранённым float значением, исправляет работу архиватора Archive.FSArch с типами значений float при выявлении EVAL.
  • FIX:Mess: Блокирование данных отделено от блокирования всех сообщений в dtRes для предотвращения конкурентным блокировкам при активной работе с переводами. Атрибуты mLang2CodeBase, mLang2Code переключены на это новое блокирование.
  • data/openscada-proj.in: Переключено на ссылку содержимого Пользовательской LibsDB на системные библиотеки, с содержимым только на чтение, вместо копирования.

Сбор Данных

  • ModBus,Siemens: Переключено, в формирование значения "f_frq", на использование информации реального исполнения задачи.
  • {DAQ,Protocol}.OPC_UA.{.,libOPC_UA} : Дополнено реализацией сервиса Publish, поддержкой кусков (CHUNKS) на клиентской части Сбора Данных и общим пересмотром кода в процессе этого:
КЛИЕНТ:
  • добавление атрибутов (элементов мониторинга) перенесено из attrPrc() непосредственно в enable() и которая запускается при запуске объекта контроллера
  • ... и обработка элементов улучшена обновлением описания, флагов и связывания;
  • сбор данных унифицирован обработкой в функции параметра upVal()
  • ... и запроса значений функцией объекта контроллера getValMIt() с поддержкой Массивов
  • ... чем вплотную подготовлено для встраивание логического типа параметров;
  • объекты параметров Сбора Данных автивированы для включения других параметров;
  • установка и удаление EVAL ко всем атрибутам проверено во всех режимах;
  • структурные переменные, в просмотрщике выбора DAQ-параметра, разрешены для выбора их элементов отдельно;
  • разбор перечня переменных DAQ-параметров установлен в полный разбор с пропуском пустых строк;
  • объект DAQ-контроллера дополнен закрытием сеанса и безопасного канала при его останове;
  • общий статус объекта контроллера дополнен детализированной информацией на предмет использованного канала безопасности, сеанса, подписки и обрабатываемыми элементами мониторинга;
  • блокирование запроса переименовано в resOPC.
СЕРВЕР:
  • объект OPC-UA Сервера дополнен вкладкой общего статуса сервера с информацией на предмет активности каналов безопасности;
  • объект Узла EndPoint дополнен общим статусом с информацией на предмет активности сеансов и подписок, а также периодичностью и временем исполнения задачи подписок.
БИБЛИОТЕКА:
  • унифицировано и определено типовое значение времени жизни канала безопасности, которое установлено в 300000 мс;
  • типовой LifeTimeCounter подписок установлен в 2400;
  • объект NodeId дополнен функцией прямого сравнения operator==();
  • функция XML_N::childClear() дополнена результатом возврата того самого объекта XML_N для объединения;
  • функция curTime() дополнена аргументом определения источника часов с использованием функции clock_gettime();
  • короткие функции дополнены str2int() и str2uint();
  • некоторые поля переименованы: publInterv в publInterval, cntrLifeTime в lifetimeCnt, cntrKeepAlive в maxKeepAliveCnt, maxNotPerPubl в maxNtfPerPubl, en в publEn;
  • исправление слова "POOL" на "POLL".
БИБЛИОТЕКА_КЛИЕНТ:
  • Client::reqService() дополнен мета-командой "CloseALL" закрытия текущего сеанса и каналу безопасности;
  • функция обработки клиентских сервисов protIO() адаптирована к работе в асинхронном режиме (не запрос);
  • функция Client::messIO() расширена аргументом таймаута с определением также режима запроса;
  • запись в канал и чтение из него отделено в обработке MSG пакетов;
  • адаптация сообщений безопасности к работе со смешанным входным буфером;
  • перенос основного сервисного запроса "OPN" под обработку сообщений из-за отправки обновлений в середине Publish активности.
  • реализован сервис Publish на стороне клиента:
  • объект "Client" дополнен реализацией подобъекта "Subscr" (но сохраняется в Client::SClntSess) с функциями: activate(), monitoredItemAdd() и monitoredItemDel();
  • объект "Client" дополнен функцией poll() с:
  • унификацией чтения значений в обоих режимах Read и Publish;
  • проверкой потери всех Publish запросов в течении OpcUa_ClntPublishResentCntr(2) попыток-времени сохранения живым;
  • восстановления пула Publish.
  • объект Client::Subscr::MonitItem добавлен как представитель элементов мониторинга с доступом из под общего блокирования клиентских ресурсов;
  • сервисные запросы дополнены реализацией, включая обработку ответов: CreateSubscription, DeleteSubscriptions, CreateMonitoredItems, Publish, Poll;
  • реализовано и проверено в поддержке безопасных политик по Publish;
  • целевой пул Publish запросов на подписку установлено в виртуальной функции publishReqsPool() с типовым значением 2.
  • дополнено реализацией кусков (CHUNKS) как в запросах, так и ответах;
  • целиком отревизировано и очищено общую функцию запроса reqService() от дубликатов аргументов и параметров:
  • дополнено восстановлением сеансов при переподключении канала безопасности;
  • унифицировано очистку текущего сеанса и канала безопасности.
  • объект клиента дополнен общим блокированием ресурсов mtxData;
  • свойство сообщения "timeoutHint" установлено в 0 для всех сообщений;
  • запрос Read возвращён к "плоскому" запросу с ограничением только в CHUNKS;
  • ошибка OpcUa_BadSecureChannelIdInvalid добавлена к очистке канала безопасности;
  • Client::SClntSess::{sessOpen,lstMessReq} переименован в {secChnlOpenTm,secLstMessReqTm}
  • ... и предотвращён от очистки и восстановления сеанса и канала безопасности;
  • дополнено отладочными сообщениями ошибок запросов.
БИБЛИОТЕКА_СЕРВЕР:
  • серверная часть адаптирована к работе с UAExpert 1.5 на предмет: установки атрибута AId_Descr DAQ-значения в тип OpcUa_LocalizedText, добавления декларации целочисленного типа OpcUa_IntAuto и OpcUa_UIntAuto;
  • обработка подписок возвращена к их обработке в отдельной задаче и функции subScrCycle() на предмет:
  • правильного расчёта всех таймаутов для выключения;
  • обработки периодичности подписки и публикации;
  • проверки состояния связанных сеансов и каналов безопасности на предмет закрытия подписок.
  • но публикация оставлена на обработку в активности входного канала и функции Server::EP::publishCall() с предотвращением обработки Publish для ошибочных и чужих Подписок, через проверку inPrtId, sesTokId и isSecCnlAct;
  • унификация Сеанса на предмет: связывания сеансов с каналами безопасности переключено на один вместо массива, проверку сеанса всех сообщений дополнено предотвращением использования чужих подключений;
  • не последние куски пакета переключены на отправку прямо, чтобы не добавлять к одному TCP-пакету;
  • EP::mtxData блокирование переключено в PTHREAD_MUTEX_RECURSIVE;
  • каналы безопасности ограничены колчеством OpcUa_SecCnlLimit(10) и очередь публикаций количеством OpcUa_ServerMaxPublishQueue(10);
  • EP::secSize() переименовано в EP::secN() и добавлено EP::sessN(), EP::subscrN() и chnlList();
  • Server.SecCnl.{TokenId,TokenIdPrev} переименовано в Server.SecCnl.{tokenId,tokenIdPrev}.
  • ModBus: Выходная часть RTU варианта протокола дополнена ранним прерыванием ожидания пакетов стандартных функций [ERR,1...6,15,16], что увеличивает общую пропускную способность вдвое.
    • ВВ параметров Логического Уровня включено в перевод, для не связанных строк и так как в DAQ.LogicLev.
    • Разбор атрибутов Сбора Данных переключено на использование TSYS::strLine() и TSYS::strParse(), чем разрешено символ ':' в названии и пустые строки в тексте.
  • DAQGate: Режимы синхронизации дополнены режимом предотвращения синхронизации вообще для объектов сохранённых в кеше, путём разрешения значения -1 конфигурационного поля "Периодичность синхронизации с удалённой станцией, секунд".

Архивы-История

  • FIX:FSArch: Критически исправлено обработку файлов архива значений, при попытке записи их ИД в нулевую строку.
  • DBArch: Архиваторы сообщений дополнены конфигурационным полем "Уникальные и недублирующие сообщения только за временем и категорией".
    • FIX: Исправлено падение при обработке групп архиватора значений из-за неочистки связывания конфигурации полей таблицы (TConfig) под блокированием и неблокирование функции ModVArch::grpLimits() в reqRes.

Транспорты

  • Протокол ВВ, во входной и выходной части, расширен и дополнен:
    • комбинированием данных пакетов с одинаковым направлением и адресом данных в течении prmWait_TM (5 секунд);
    • микросекундную часть времени зафиксировано в 6(шести) символах;
    • сообщения данных дополнены символом направления;
    • ограничением размера одного блока обработки, новым конфигурационным полем;
    • значительным повышением производительности через использование предопределённого буфера.
  • FIX:Serial: Выходной транспорт исправлен в ожидании между запросами на предмет обработки reqRetrMult*wCharTm как миллисекунды.
  • FIX:Sockets: Обнаружено ошибку "Обрыв канала (32)" при записи, после отключения сервера, поэтому попытки переподключения установлены в 2 по (kz <= 0).

Интерфейс Пользователя

  • FIX:Общий пересмотр и переделка таблиц в Qt и Web в целом и вида Таблица примитива FormEl СВУ:
  • QTStarter,QTCfg,Vision: Общий библиотечный класс TableDelegate значительным образом улучшено в работе на QTCfg и Vision:
  • дополнено собственными пользовательскими ролями SelectRole, TextLimRole и OneLineString;
  • отображение ячеек дополнено фоновым цветом через чтение-применение общих ролей;
  • числовые типы (целое и реальное) дополнены принудительным центрированием;
  • строковые типы дополнены опциями выравнивания и заворачивания слов с ролями Qt::TextAlignmentRole;
  • дополнено поддержкой визуального ограничения длинных текстов собственной ролью TextLimRole и типовое значение установлено в 300 символов через дополнительное переопределение sizeHint().
  • FIX: Вид "Таблица" примитива "FormEl":
  • VCAEngine,QTStarter,Vision,WebVision: Дополнено новым типом ячейки 't'-текст, в основном для возможности подтверждения редактирования типа 's'-строка нажатием Enter.
  • VCAEngine,Vision,WebVision: Дополнено опцией "prec" пространства колонки, строки и ячейки для контроля точности реальных значений; и реализацией атрибута "align" колонки и ячейки.
  • WebVision,Vision: Дополнено переключением таблиц в предотвращение двойному хранению исходного содержимого при его размере более чем 10000.
  • FIX:Vision: Использование общего делегата таблицы с возможностью многострочного редактирования.
  • Усовершенствовано отображение колонок, строк и ячеек при обновлении и в целом:
  • ограничением визуального размера содержимого ячейки 300 символами и высоты строк в 70% от общего размера таблицы;
  • более точным выравниванием ширины колонок;
  • подстройкой в режиме разработки, а также при видимости вертикального заголовка;
  • плотным заполнением таблицы через учёт размера видимой полосы вертикальной прокрутки;
  • подстройкой только после полного изменения размера таблицы, чем также допуская ручное изменение колонок и для предоставления такой-правильной подстройки всегда.
  • Реализовано "лёгкую" обработку изменения ширины и обновления:
  • "лёгкое" редактирование без переподстройки колонок при каждом обновлении, только при: появлении первой строки, изменения количества колонок и изменения заголовка колонки, изменении шрифта и изменении размера;
  • применение фиксированной ширины колонки и учёт высоты строк с ограничениями независимо от значения общего атрибута "colsWdthFit";
  • установка значения, раннее изменение размера и подстройка таблицы, перенесены в пространство наличия содержимого таблицы и после сортирования.
  • Функцию экспорта во время исполнения дополнено экспортом вида Таблица примитива "FormEl" в CSV.
  • WebVision:
  • Усовершенствовано отображение колонок, строк и ячеек при обновлении и в целом:
  • реализацией режима не подстройки (отсутствие атрибута "colsWdthFit"), с использованием режима автоматического размещения таблицы для вычисления фиксированной ширины и последующего переключения в фиксированный режим размещения таблицы;
  • многострочным редактированием текста ячеек в полную ширину и высоту ячейки, с применением редактирования по Ctrl+Enter;
  • вид строчных ячеек ограничен 300 символами;
  • отображение логических ячеек изображением состояния TRUE;
  • ячейки таблицы, в режиме редактирования, разрешены к вызову контекстного меню системы-браузера.
  • Реализовано "лёгкую" обработку изменения ширины и обновления:
  • обнаружение изменения таблицы и обновление переключено в режим не сохранения исходного содержимого дважды;
  • предотвращено от полного обновления при модификации атрибута "value".
  • Дополнено поддержкой сортировки по колонкам. Установка в сортировку по первой видимой колонке при включении сортировки.
  • WebCfgD: Расширение таблицы на предмет:
  • большое видимое содержимое текста ограничено 300 символами;
  • строковый тип разрешён для многострочного редактирования используя TEXTAREA;
  • тип данных "bool" отображено изображением, не "On" или "Off";
  • центрирование содержимого логического, чисел, времени и выбора;
  • упрощение редактирования содержимого таблицы для типов время, число и строка, путём удаления кнопок применения и прокручивания.
  • QTStarter,QTCfg,Vision: Начат перенос общего Qt-кода Qt-модулей OpenSCADA в файлы новой библиотеки lib_qtgen.*, которая размещена в каталоге модуля QTStarter и привязано во всех Qt-модулях, и это осуществлено для: внешней icoSize(), colorAdjToBack() и TableDelegate.
  • VCAEngine:
  • Дополнено, и включено как опция сборки, на предмет механизма маркирования изменения атрибутов без дубликатов, путём запроса предыдущих-завершенных циклов, чем также предотвращая необходимости выявления дубликатов в визуализаторах и сохранению большого исходного содержимого.
  • Исполнение проектов улучшено при смене родителя обрабатываемых страниц на лету.
  • Исполнение задач сеансов дополнено ранним исполнением, при наличии событий.
  • FIX: СВУ-стили исправлены при доступе к пустым полям, которые не загружаются.
  • Страницу "Диагностика" СВУ-проектов адаптировано к отображению сообщений уровня отладки при включении отладки.
  • Информацию исполнения сеанса проекта дополнено реальной периодичностью, полученной из задачи, которую также использовано при формировании значения атрибута "f_frq" процедуры.
  • Vision: Диалоги свойств "Виджеты" и "Проекты / Библиотеки виджетов" дополнены собственной строкой статуса и кнопкой вызова контекстной документации. Виджеты TextEdit переключены на собственную строку статуса диалогов свойств, на предмет позиции курсора и что выключено во Всплывающей Подсказке. Виджет редактирования текста кода диалога свойств "Виджеты" дополнен восстановлением позиции курсора после применения или отмены.
  • FIX:WebVision: Дополнен обнаружением исчезания сеанса исполнения проекта и возвратом ошибки, в общем запросе "pgOpenList", и сброса счётчика вычислений "tmCnt".
  • Клавиатурный фокус и события значительным образом усовершенствованы на предмет гарантии работы этого в целом через:
  • установку атрибута "tabindex" для всех активных виджетов и специфично для FormEl — непосредственно в элементы формы;
  • дополнения вычислением числа "tabindex" как уникальный для целого интерфейса, чем предотвращая скачки фокуса;
  • обработки события onfocus на предмет установки собственного фокуса в setFocus();
  • вид Кнопка примитива FormEl дополнен обработкой клавиатурных событий нажатия и отпускания по клавишам Space и Enter;
  • примитив Диаграмма упрощён путём удаления лишнего элемента тега A;
  • FIX: Исправлено переключение фокуса при клацанье на кнопках с изображениями.
  • FIX: Исправлено проверку удаленных виджетов для всех и главной страницы.
  • FIX: Исправлено наконец размножение лишних DIV элементов при смене страницы в контейнере страниц.
  • FIX: Предотвращение зацикливанию при наличии Web-сеанса, но отсутствии соответствующего СВУ-сеанса.
  • FIX:WebCfgD: Целиком отревизировано и расширено на предмет:
  • переноса всех действий внутренних инструментов на реализацию кнопками и размер панели инструментов установлен с 25 в 30 пикселей;
  • удаления фильтрации-изменения размера изображений кнопок инструментов на стороне сервера;
  • установки расстояния между иконкой страницы и заголовком в 10 пикселей;
  • полного обновления контролированной страницы после смены размера окна;
  • расширения поля общего редактирования текста TEXTAREA применением и отменой из клавиатуры;
  • привязки функции обновления хостов к двойному клацанью мышей на общем пространстве области дерева;
  • FIX: исправления функции обновления хостов на предмет выявления элементов дублированных хостов;
  • FIX: принудительного обозначения актуальных-выбранных элементов в дереве контроля после его разворачивания;
  • удаления nodeText() и setNodeText() путём непосредственного использования "innerText" и "textContent".

7.2.1 Сервисные обновления

7.3 [20.12.2020] ТРЕТЬЕ обновление

Это обновление релиза 0.9 LTS исправляет около 40 ошибок и добавляет некоторые улучшения, которые целиком вы можете почитать в протоколе изменений обновления.

Linux Дистрибутив Автоматизации проекта OpenSCADA

  • пакеты "tdelibs" и "tdebase" были удалены из-за применения этих исправлений в главной и стабильной ветви TDE;
  • исправленные пакеты "tdemultimedia-trinity", "tdenetwork-trinity" и "tdeutils-trinity" были пересобраны;
  • собрано новый исправленный пакет "tde-i18n-uk-trinity";
  • перед сборкой пакетов была изменена схема формирования версий пакетов этого дистрибутива из "{+1}:14.0.9-0" на "4:14.0.9-{+1}" с целью предотвращения заморозки этих пакетов в следующих версиях TDE; и главный репозиторий пакетов TDE Живых Дисков переключен на ветвь "r14.0.x" вместо предварительной стабильной, которая также присутствует, но закомментирована;
  • перед этим релизом, в TDE Weblate завершен перевод Украинским языком частей-пакетов TDE: tdelibs, tdebase, tdegraphics, tdenetwork, tdemultimedia, tdepim, tdeadmin, tdeaccessibility, tdeutils, krusader, yakuake, basket; и создан исправленный пакет "tde-i18n-uk-trinity" для перевода отличий ветви "r14.0.x" от главной;
  • заплатка к "tdeutils" дополнена комбинацией клавиш с удержанием Ctrl для медленного изменения яркости дисплея к KMilo.

OpenSCADA библиотеки и проекты

  • FIX:LibsDB.OscadaLibs: Библиотека DevLib дополнена шаблонами "MTP 4D (MTP4D)" и "ModBus база (mbBase)".
  • FIX:LibsDB.vcaBase: Шаблонный проект (tmplSO) очищен от лишних мнемосхем управления рецептами и главная страница дополнена таблицей актуальных сигналов-нарушений. Кадр Main.RootPgSo унифицирован уведомителями только в общих атрибутах для СВУ-сервера и уведомителей Vision, WebVision: notify0, notify1 та notify2.

API
!!!!:Изменения:

  • Архивы-История: {TMArchivator,TVArchivator,TVArchive}::DB() установлена в квалификатор постоянной.
  • Транспорты.{.,*}: Функция установки таймаутов setTimings() выходных транспортов расширена различием типовых таймаутов для различных протоколов, с помощью аргумента "isDef".

Дополнение:

  • SYS.,*:
    • Ограничения и параметры пространства системы перенесены в пространство конфигурации пользователя (конфигурационный файл) для некоторого разрешённого диапазона. STD_WAIT_DELAY перенесено в prmWait_DL и изменено в 0.1 секунд. Предыдущие определения ограничений и параметров пространства системы оставлены для совместимости внешних модулей!
    • TSYS дополнено функцией taskSendSIGALRM() отправки сигнала прерывания "ALARM" задачам OpenSCADA.
    • TValFunc: Дополнено состоянием исполнения функции через функцию isCalc().
  • Транспорты: Выходные транспорты расширены обозначением Сетевых транспортов, функцией isNetwork(), также в пользовательском API.

Система

  • FIX:Сборка:configure.ac: Версию библиотеки ядра увеличено до 3:9:0 и версию программы увеличено до 0.9.3.
  • {DAQ,Протокол}.ModBus:
    • подтип "_b" — битовый тип, дополнен перемещением номера бита к полю номера регистра вроде "R_b:123.12";
    • дополнено флажком "~" для инверсии порядка регистров комплексных подтипов в некоторых регистрах, вроде "_f";
    • флажок "rw" разделён на "r" и "w".
  • Модульную версию подсистемы "Транспорты" увеличено до 17.
  • FIX: Предотвращено аутентификацию в интерфейсе пользователя готовым хешем пароля.

Сбор Данных

  • LogicLev,ModBus,Siemens: Дополнено прерыванием продолжительного исполнения шаблонов при исполнении параметра, с использованием новых функций TValFunc::isCalc() и TSYS::taskSendSIGALRM().
  • FIX:LogicLev: Удалено блокирование исполнения "calcRes", которое использовано только в блокировании записи в параметр в течении вычисления и что может быть продолжительным.

Архивы-История

  • FIX: Полученные текущие значения, в активном режиме архивирования, принудительно установлено в текущее время, что важно для архивирования динамических атрибутов.
  • Конфигурационное поле архива значений "Режим формирования ID автоматически создаваемых архивов" расширено элементом выбора "Все ID контроллера, параметра и атрибута", в процессе расширения ограничения на размер ИД архива значений до 50 символов.
  • FIX:DBArch: Исправлено только прямое архивирование значений в групповом режиме и когда тип значений может сбрасываться в Целый тип, как типовой. Архивирование значений в групповом режиме дополнено удалением соответствующей колонки таблицы при удалении архива, для горячего удаления колонок сразу после добавления нового архиву, чем предотвращая раннему разростанию таблицы до ограничений БД.
  • FIX:FSArch: Адаптация к размеру ИД архива значений больше чем 20 символов, когда дополнительные 14 символов сохраняются в резервной части (переименованной в "archive_add") заголовка и остальное в названии файла.

Транспорты

  • FIX: Функция TTransportIn::assTrO() обработки входных инициативных подключений целиком отревизировано чтобы обеспечить обязательным создание новых подключений в виде нового выходного транспорта, чем предотвращая правильному завершению присутствующих закрытых но не освобождённых выходных транспортов.
  • Команды транспортов переименовано из "Исполнение" в "Подключение" и статусы переименованы из "Запущено. " в "Получение данных. " и "Подключено. ", из "Остановлено. " в "Отключено. ".
  • FIX:{Sockets,SSL}: Типовые таймауты возвращены в "10:1".

Транспортные Протоколы

  • HTTP:
    • Дополнено динамическим названием печенья (cookies) и Пользовательским пространством ИД, где название печенья "oscd_UID" и использовано Пользовательское пространство ИД при работе с общей таблицей сеансов аутентификации, и название печенья "oscd_UID_{PrjNm}" при работе без этого.
    • FIX: POST выходной функции outMess() с множеством частей предотвращён от размещения конечного разделителя и улучшено в формировании "Content-Disposition".
    • Улучшено генерацию ИД пользователя генерацией различных ИД для различных процессов, ограниченное в 1e6, и дополнено случайным и конфигурируемым Пользовательским пространством ИД [0...99] * 1e6, использованным в работе с таблицей общих сеансов аутентификации.
  • SelfSystem: Специфические таймауты выходного транспорта установлены в "20:2".
  • ModBus: Специфические таймауты выходного транспорту установлены в "5:0.1" для Сетевых транспортов — isNetwork() и варианта протокола "RTU".

Интерфейс Пользователя

  • FIX: TUIS::docKeyGet() исправлено на предмет утечки пользовательских объектов массивов.
  • VCAEngine,WebVision,Vision: Примитив "Media" дополнен типом "Audio" и тип "Полное видео" переименован в "Видео", который также имплементирован в WebVision и Vision.
  • QTCfg,Vision: Дополнен функцией подстройки цветов текста к фоновому цвету — colorAdjToBack(), которую использовано в коррекции цветов подсветки синтаксиса, и других динамических цветов, к смене палитры.
  • VCAEngine,Vision: Расширено реализацией уведомлений в процессе их внедрения в WebVision, на предмет:
    • использования стандартного пути получения уведомлений через активацию соответствующих атрибутов;
    • расширение ntfReg() использованием отрицательного типа для обработки всех типов, в основном очистки, и некоторой унификации кода;
    • расширение получением типа ресурса;
    • дополнение уведомителей флажком "notifyServ" включения уведомления на стороне СВУ-сервера;
    • дополнено, на стороне СВУ-сервера, полем "resStatic" прямого определения ресурса (не динамическое);
    • дополнение контекста процедуры уведомления двумя переменными "resTp" и "prcID".
  • FIX:UI.QTStarter: Дополнено периодическим обновлением диалога запуска в перечне проектов.
  • FIX:VCAEngine: Исправлено падение при установке ссылки виджета в "prm". Сервис запроса ресурса "get:/wdg/res", Widget::resourceGet() и {WidgetLib,Project}::mimeDataGet() дополнено запросом частей ресурса, в основном для больших медиа файлов.
  • FIX:Vision: Дополнено проигрыванием уведомлений внутренним проигрывателем на Phonon и не в отдельной задаче уведомителя. Вызов saveState() перемещён из деструктора окна разработки в событие закрытия, поскольку была помечена проблема сохранения пустого контекста после проигрывания некоторого медиа.
  • FIX:WebVision:
    • Имплементация поддержки уведомлений.
    • Имплементация загрузки частей ресурсов, для больших медиа, HTTP параметром "Range: bytes=".
    • FIX: Исправлено лишнюю очистку кеша страницы на предмет виджетов из страниц с общим названием к странице которая удаляется.
  • WebUser: Адаптировано к работе с POST и содержимым в теле.

7.3.1 Сервисные обновления

7.4 [17.08.2020] ВТОРОЕ обновление

Это обновление релиза 0.9 LTS исправляет около 60 ошибок и добавляет некоторые улучшения, которые целиком вы можете почитать в протоколе изменений обновления.

Linux Дистрибутив Автоматизации проекта OpenSCADA

  • Завершено усовершенствование KMix в работе с PulseAudio, путём его динамизации патчем "kmix-UpdMixersForChangeAndChMaster.patch".
  • KRfb (VNC-сервер) был исправлен на предмет аварийного завершения и завершена реализация набора дополнительных клавиш к основной клавиатурной раскладке, в основном Кириллицы, но также и дополнительных UTF символов.
  • Завершено обновление перевода проекта Окружения Рабочего Стола Trinity на Украинский для частей: tdelibs, tdebase, tdenetwork, tdemultimedia, tdepim (в основном), krusader, yakuake.

OpenSCADA библиотеки и проекты

  • LibsDB.OscadaLibs: Библиотеку Устройств дополнено реализацией протокола IEC-62056 (DevLib.IEC62056). Внесетевая документация дополнена документом "СОГЛАШЕНИЕ О ТЕХНИЧЕСКОЙ ПОДДЕРЖКЕ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ "OpenSCADA" версии 2 и нового модуля DB.DBGate.
  • FIX:LibsDB.vcaBase.Main.alarmsSt: Несколько исправлено на предмет оригинальных сообщений и "quietation" целиком заменено на "confirmation". Восстановлено предотвращение дублированных записей новых нарушений в той самой категории.

API
!!!!:Изменения:

  • SYS: Унифицированы статусы станции в функциях isRunning(), isFinalKill() и stopSignal(). TCfg::setReqKey() дополнен новым аргументом "treatDep".
  • DB: dataSeek(),dataGet(),dataSet(): Расширены аргументом локального конфигурационного контекста "localCfgCtx";
  • *,DB: TBDS::dataSeek() и TTable::fieldSeek() переключены на реализацию кеша сканирования в соответствующих модулях.

Дополнения:

  • TMess,DB,DB.{SQLite,MySQL,PostgreSQL,FireBird}: TMess дополнено функцией обнаружения перевода конфигурации translCfg(), которую использовано во всех модулях БД и в dataSet().
  • SYS: Дополнено функциями доступа к глобальному конфигурационному контексту cfgCtx() и setCfgCtx().
    • Загрузка и сохранение конфигурации дополнена собственным блокированием TSYS->cfgLoadSaveM().
    • Дополнено функцией pathLevEnd() обработки путей с конца.
    • TRegExp: Дополнено функцией getPattern().
    • TFld: Дополнено комбинированным строковым вариантом поля длины - lenS().

Система

  • FIX: Сборка:
    • FIX:configure.ac: Версия библиотеки ядра увеличена до 3:8:0 и версия программы увеличена до 0.9.2.
    • Модульную версию подсистемы "БД" увеличено до 14, подсистемы "Транспорты" увеличено до 16.
    • data/ModelsDB/{AGLKS/oscada_AGLKS.xml,Boiler/oscada_Boiler.xml}: Входные транспорты Сокетов унифицированы в названиях "WEB" и "CNTR".
    • data/ModelsDB/AGLKS/St.sql: Входные транспорты SSL унифицированы в названиях "WEB" и "CNTR" и обновлены установкой KeepAlive таймаута в 60 и SSL-сертификата.
    • data/{oscada_start,oscada_server,oscada_plc}.xml:
      • Входные WWW-транспорты унифицированы, где "WEB_1" переименован в "WEB" и удалён "WEB_2".
      • Дополнено выключенными записями БД стандартных библиотек OpenSCADA.
      • /oscada_start.xml: Дополнено выключенными входными транспортами "WEB" и "CNTR". Дополнено архиваторами значений FSArch.{SYS,alarms,actions} и архиваторами сообщений FSArch.{1s,1m,1h}.
  • FIX:data/openscada-proj.in,UI.QTStarter: Реализация встроенного резервирования.
    • FIX:data/openscada-proj.in: Дополнено командами "backup", "backupRestore", "backupList" реализации резервирования проектов.
    • UI.QTStarter: Дополнено вызовом команд резервирования из менеджера проектов - перечня проектов.
  • .,DB,DAQ.{LogicLev,ModBus,Siemens},UI.{QTCfg,WebCfgD}: Реализация механизма междустанционного копирования узлов интерфейса управления.
  • .,UI.QTStarter: Запуск OpenSCADA с GUI модулем в основном потоке значительно пересмотрен на предмет:
    • ранней регистрации GUI модуля в основном потоке непосредственно самим этим модулем и в функции postEnable();
    • адаптации функции perSYSCall() к использованию при обновлении GUI модуля в основном потоке, в основном его заставки (сплеша), в течении запуска и останова (из сервисной задачи) и при загрузке конфигурации (для переключения на заставку запуску);
    • включения динамического отображения сообщений для режима исполнения в основном потоке;
    • унификации отображения заставки в обоих режимах.
  • .,Protocol.SelfSystem,DAQ.AMRDevs: Доступ клиента к интерфейсу управления OpenSCADA расширен множественной аутентификацией, что исключает использование прямых запросов к интерфейсу управления OpenSCADA с аутентификацией в каждом запросе, часто в UI.Vision.
  • FIX:TRegExp: Исправлена обработка шаблонов, добавлением обработки символа окончания, таким образом предотвращая коллизии чёткого определения объектов в TController::alarmSet().
  • FIX:LibsDB.OscadaLibs.doc.diagram,UI.{Vision,WebVision}: Предотвращено двойную подстройку шкалы значений для процентной шкалы и дополнено расширением диапазона значений.
  • FIX: Обработка предков в функции TCntrNode::isModify() разрешено только для узлов в состоянии "Включено".

БД

  • Создан новый модуль "DBGate".
  • FIX: TBDS::dataSet() расширено установкой только ключей и видимых элементов, как у других БД. Дополнено сменой-сохранением определённых элементов в конфигурационном файле вместо полного сохранения всех их в типовой БД.
  • FIX: Исправлен первый ошибочный запуск объектов БД на предмет последующих попыток запуска.
  • FIX: Загрузка БД предотвращена от двойной загрузки из конфигурационного файла и БД, относительно одинаковых записей.
  • Объект TBD дополнен поддержкой сервисных контрольных запросов "call": "/serv/SQL", "/serv/fieldStruct", "/serv/fieldSeek", "/serv/fieldGet", "/serv/fieldSet", "/serv/fieldDel".
  • FIX:SQLite: Обнаружена и исправлена потеря данных при конкурентном доступе, когда генерируется непринципиальная ошибка неактивированности транзакции "cannot commit - no transaction is active (1)", которая, однако, прерывает запись данных.

Сбор Данных

  • FIX: JavaLikeCalc: Исполнение внутренних функций дополнено сохранением контекста общих-собственных регистров, в двух вариантах, первично для поддержки рекурсии.

Транспорты

  • Выходные транспорты унифицированы созданием параметров подключения, с помощью conPrm(), вместо прямых prm1() и prm2().
  • Удалён конфигурационный параметр "START" выходных транспортов, как лишний и для предотвращения продолжительного запуска.
  • FIX:Sockets,SSL: Для предотвращения многоразового исполнения запросов высокой нагрузки и продолжительного контроля, выходные транспорты переключены на:
    • типовую конфигурацию для Попыток=1, Таймауты="30:2";
    • для потери подключений количество попыток установлено в 2;
    • для ошибок "Исчерпано время" подключение также пере-подключается, кроме типа SOCK_FORCE.

Транспортные Протоколы

  • FIX:ModBus: Выходные запросы TCP-варианта дополнены проверкой Идентификатора Транзакции пакетов ответа.
  • FIX:SelfSystem: Выходная часть расширена проверкой соответствия ответов запросам, по названию тега запроса. Дополнено кодированием специальных символов пользователя и пароля, и пустой пароль кодируется как "<EMPTY>".

Интерфейс Пользователя

  • Vision,WebVision: Свойство специфическое для визуализатора "userSetVis" дополнено реализацией пароля после прямо указанного пользователя и для применения со всеми пользователями.
  • FIX:QTStarter: Стандартная-системная заставка запуска/останова обновлена и дополнена информацией про программу (также пользовательские заставки) и проект OpenSCADA, включая иконку проекта. Контекстное меню списка проектов дополнено пунктом удаления не исполняемых проектов.
  • FIX:QTCfg: Дополнен слежением за сменой страницы с индикацией в дереве навигации и с прокруткой к текущему элементу.
  • FIX:VCAEngine: Предотвращено аварийное завершение на больших конфигурациях с продолжительным закрытием сеансов исполнения во время доступа к наследникам виджета (mHerit), добавлением ResRW блокирования "mHeritRes". Свойство "Перевод" процедур виджетов целиком перенесено под прямой доступ и видимость установлена только при наличии процедуры, также как видимость области текста процедуры и периодичности вычисления от выбора языка.
  • FIX:Vision: Существенно унифицирована процедура аутентификации и смены пользователя в UserStBar::userSel() и объект диалога "DlgUser".
  • FIX:WebVision: Унифицирована имплементация примитива "Кнопка": переносом специфических кнопок под <button></button> и добавлением соответствующих CSS-стилей для типового и нажатого состояния с отличной границей и полупрозрачным изображением. Исправлена, в конце концов, проблема закрытия всех страниц контейнера основных страниц с заморозкой последней потерянной страницы при быстром переключении. Дополнено пользовательскими CSS правилами интерфейса.

7.4.1 Сервисные обновления

7.5 [08.04.2020] ПЕРВОЕ обновление

Обновление осуществлено после 1.5 года от релиза 0.9 LTS, соответственно оно стоит 10 обновлений, поскольку им исправлено более 250 ошибок и добавлено множество усовершенствований, которые целиком вы можете почитать в протоколе изменений обновления.

Ключевыми свойствами обновления является:

  • значительное расширение и стабилизация Web-интерфейса в течении практической эксплуатации в большом распределённом решении, построенном на основе модуля UI.WebVision; также расширение и стабилизация горячей разработки в течении множественного исполнения разрабатываемого проекта;
  • тестирование, исправление и расширение резервирования в части сообщений, также благодаря практической эксплуатации в большом распределённом и ещё резервированном решении, в части обще-системного кода и модуля DAQ.ModBus;
  • полная реструктуризация, усовершенствование и дополнение библиотек OpenSCADA в SQLite файлах;
  • общее улучшение документации, дополнение документацией всех библиотек и ревизия большинства документации модулей.

7.5.1 OpenSCADA библиотеки и проекты

  • FIX:DB.LibsDB.{OscadaLibs,vcaBase}: Обновление перевода.
    • FIX:JavaLikeCalc.doc,doc: Библиотека пользовательского интерфейса "Документы" и JavaLikeCalc "Библиотека отчётов и документов" отревизировано, улучшено, дополнено, документировано и документацию добавлена в offline.
      • FIX:doc: {docUsersSet,docAlarmsRep,docMessRep}: Поле "Параметр" переименовано в "Источник", в процессе глобальной унификации структуры сообщений нарушений функции alarmSet().
        • Дополнено реализацией "Годовой отчёт месячных значений (docRepYear)" с функцией ввода значений в ручном режиме, поддержкой сохранения ручных значений в архиве сообщений, их отображения в таблице и диаграмме.
        • {doc,docDin,docRep2WorkSh(переименованный docRepSm2),docAlarmsRep,docRepInstVals(переименованный docGasNodeMgn),docMessRep,docUsersSet, docRepDay(переименованный docGasNodeDayA),docRepMonth(переименованный docGasNodeMonthA),docRepYear(переименованный docResourcesYear)}: выполнено JavaLikeCalc перевод в tr().
        • {docRepInstVals,docRep2WorkSh,docRepDay,docRepMonth}: Значительным образом переписано, улучшено и сделано повторно-используемым, позволив подключение DAQ-параметров.
        • docMessRep: Дополнено обработкой удалённых станций только как дополнительный источник и всегда.
      • JavaLikeCalc.doc: Дополнено реализацией построения "Диаграммы (diagram)" в SVG.
    • PrescrTempl,prescr: Библиотеку интерфейса пользователя и шаблонную библиотеку "Рецепты" отревизировано, улучшено, дополнено, документировано и документация добавлена в offline.
      • PrescrTempl: Дополнено шаблоном "Менеджер", перенесенного из библиотеки контролеров.
      • prescr: Элементы библиотеки расширены линковкой БД и автоматическим созданием таблиц команд и программ.
  • DB.LibsDB.vcaElectroEls: Библиотеку интерфейса пользователя "Элементы электрики" отревизировано, улучшено, дополнено, документировано и документация добавлена в offline.
    • Дополнено четырьмя унифицированными элементами: "Ключ, унифицированный (keyUnif)", "Переключатель, унифицированный (swUnif)", "Состояние общее, унифицированное (stGenUnif)", "Состояние области, унифицированное (stAreaUnif)".
  • FIX:DB.LibsDB.OscadaLibs:
    • Обновлено на предмет некоторых сообщений.
    • FIX:base: Библиотеку шаблонов "Основная библиотека" отревизировано, улучшено, дополнено, документировано и документация добавлена в offline.
      • {anUnif,anUnifSt,manInUnif,digAlarm,codeState,pidUnif,pidUnifImp,SNMP,UPS}: Переведено на унифицированный механизм формирования и контроля нарушений.
      • Дополнено шаблоном "initConsAssignTrs" обработки выходных транспортов инициативных подключений Сокетов для любых типов объектов источников, вроде DAQ-модули, контроллеры и параметры логического уровня.
      • Дополнено шаблоном "codeState" формирования состояния по коду.
      • Дополнено реализацией сложного уведомителя в шаблоне "ntf", отдельная JavaLikeCalc функция и объекты пользовательских протоколов "SMS" и "SMTP" помечены устарелыми.
      • Дополнено шаблоном "UPS", перенесено из библиотеки "Промышленные устройства".
    • FIX:DevLib: Шаблонная библиотека является отделённой частью оригинальной библиотеки "Устройства" с названием "Промышленные устройства", которую отревизировано, улучшено, дополнено, документировано и документация добавлена в offline.
      • FIX:IEC60870: Дополнено отдельным временем "tmPoolAll" периодичности полного опроса.
        • Дополнено поддержкой пакетов M_ME_TF_1, M_ME_NC_1, расширено поддержкой SQ-режима, проверено M_ME_TF_1 и M_ME_NC_1, M_ME_NB_1 в SQ-режиме, AI установлено в вещественный тип.
        • Дополнено опцией "syncTimePLC" контроля синхронизации ПЛК.
      • Дополнено правильной реализацией DCON в шаблонах DCON_Prt, DCON_Prt_DI, DCON_Prt_AO, DCON_Prt_DO, объект пользовательского протокола "DCON" удалён.
      • Дополнено полнофункциональной реализацией протокола OWEN в части сбора данных.
      • Дополнено реализацией DNP3 и её испытано с outstation-demo из opendnp3.
      • Дополнено реализацией модулей счётчиков Pulsar-M (pulsarM).
      • Дополнено реализацией сканера ModBus, как шаблон "ModBusScan".
    • LowDevLib: Шаблонная библиотека является отделённой частью оригинальной библиотеки "Устройства" с названием "Низкоуровневые устройства", которую отревизировано, улучшено, дополнено, документировано и документация добавлена в offline.
      • FIX:{1W_DS9097,1W_DS9097U}: Исправлено определение семейства устройства как шаблон 0x7F, обнаружено на последних DS2413 с первым байтом 0xBA.
      • Дополнено реализацией шаблона "MAX6675", низкоуровневого SPI Конвертора K-Термопар-в-Цыфру Компенсации-Холодных-Спаев.
      • Дополнено реализацией шаблона "SHT3x", низкоуровневого сенсора влажности.
      • Дополнено реализацией шаблона ADS111x(ADS101x) и MCP4725, низкоуровневых I2C-чипов.
    • FIX:JavaLikeCalc.techApp: JavaLikeCalc библиотеку "Технологические аппараты" документировано и документация добавлена в offline. Все Кириллические символы удалено из идентификаторов моделей и все тексты откорректировано.
    • tests: Библиотека шаблонов "Тесты" переименована из библиотеки "S7".
    • JavaLikeCalc.servProc: JavaLikeCalc библиотеку "Сервисные процедуры" отревизировано, несколько улучшено, дополнено, документировано и документация добавлена в offline.
      • docOffLine: Значительно расширено детализацией сообщений про ошибки и размещением незавершённых страниц в аргументе "pagesCur" для продолжения перерывов.
    • JavaLikeCalc.regEl: JavaLikeCalc библиотеку "Элементы регулирования" документировано и документация добавлена в offline.
  • FIX:DB.LibsDB.vcaBase:
    • FIX: Полная и значительная очистка от Кириллических символов и усовершенствование оригинальных идентификаторов и сообщений, с переименованием их на Английский язык.
    • Большинство стандартных кадров и виджетов адаптировано к стилям и создано стиль "Светлый" для всех проектов.
    • FIX:Main: Библиотеку интерфейсов пользователя "Основные элементы" отревизировано, улучшено, дополнено, документировано и документация добавлена в offline.
      • FIX:{alarmsAct,alarmsSt}:
        • Расширено поддержкой квитации-подтверждения, комментариями и пользовательским полями.
        • Поле "Параметр (prm)" переименовано в "Источник" где размещено все удалённые и локальные источники.
      • RootPgSo: Усовершенствованно динамическим созданием объектов сигнализации, количество которых ограничено только общей длиной названий объектов сигнализации и их двумя рядами. Поддерживается также генерация кнопок объектов сигнализации справа от логотипа. Типы отображения также унифицировано идентификаторами "view[1..6]", когда пользователь может их назначить в собственный способ. Совместимость с оригинальными названиями видов сохранено для существующих проектов!
      • Дополнено:
        • панелью-окном контроля "Вычисление параметра графика (graphCalc)";
        • объектным виджетом "Свойства объекта (objProps)";
        • кадром нарушений "Нарушения — отчёт (alarmsStReport)";
        • виджетом "Метка изображением (ImgLab)";
        • кадром "Менеджер пользователей (userManager)".
      • grph_panel: Дополнено независимой кнопкой переключения на время курсора вместо непрямого переключения при смещении глубины.
      • ElViewGraph: Размер шрифта названия уменьшен с 15 до 11 и цвет тренда отображаемых элементов по умолчанию установлен в "gray".
      • Кадры рецептов "prescrEdit", "prescrRun" и "prescrRunSimple" вынесено в новую библиотеку "Рецепты (prescr)".
      • cntrRegul: Толщину трендов увеличено до 2 пикселей.
    • FIX:mnEls: Библиотеку элементов интерфейса пользователя "Элементы мнемосхемы" документировано и документация добавлена в offline.
  • FIX:Model.{AGLKS,Boiler}: Значительно обновлено согласно общим изменениям в библиотеках.
    • FIX: Значительно очищено и все оригинальные идентификаторы переименованы Английским языком, в процессе ревизии документации.
    • FIX: AGLKS.vca,Boiler.St: Адаптировано к новым изменениям основной страницы.
      • Создан стиль "Светлый" для всех проектов. Стили переведены на схему прямого исполнения стилей при их наличии вместо "Нет стиля" и добавлен стиль "Типовой".
    • FIX:Model.AGLKS:
      • FIX:St:
        • FSArch.1m: Удалены странные и временные архиваторы: FSArch.{NetRequsts,test,StatErrors}, DBArch.test и добавлены актуальнные: FSArch.{alarms,actions,SYS}, DBArch.SYS.
      • FIX:vca: Перепривязаны аналоговые параметры и графики.

7.5.2 API

!!!!:Изменения:

  • SYS: Типовой конструктор ResMtx установлен в true для "isRecurs", поскольку это общая ситуация.
    • Большинство функций добавления в контейнер узлов расширено возвратом результирующего идентификатора/имени созданного узла для: chldAdd(), TSecurity::{usrAdd(),grpAdd()}, TTypeBD::open(), TTypeTransport::{inAdd(),outAdd()}, TValue.chldAdd(), DAQ.{TController::add(),TParameter::add(),BlockCalc.blkAdd()}, TTypeArchivator::{messAdd(),valAdd()}, TArchiveS::valAdd(), UI.VCAEngine::{wlbAdd(),prjAdd(),WLib.add(),Project.add(),Project.Page.pageAdd()}, UI.WebUser.uPgAdd().
    • TFld::Selected везде переименован в TFld::Selectable.
    • Вариант специальной функции strMess() с ограничением размера результирующего сообщения удален и заменен функцией strEncode() с типом TSYS::Limit.
    • chldList() и chldPresent() сделаны виртуальными.
  • DAQ,Special: Атрибут "run_st" в TPrmTmplLib и TSpecial переименован в runSt.
  • Archives: TArchiveS::messPut() очищено от аргумента "force".
  • Protocols.HTTP: Функции пользовательского API pgAccess(), pgCreator() перенесены из TProtocol в TProtocolIn.
  • Transports.In: Функция protocol() переименована в protocols() и удалена protocolFull().

Дополнения:

  • SYS: Добавлен общий механизм замков через контейнер замков, функция commonLock().
    • TConfig,*: Функции API пользователя для конфигурации TConfig::cfg() и TConfig::cfgSet() расширены контролем прав.
    • Дополнено функциями TCfg::toDefault() и TConfig::cfgToDefault() сброса конфигурационного контекста к типовому.
    • Объект TFunction дополнен признаком изменённости процедуры isChangedProg(), и флажок TFld::Selectable и функция ioAdd() дополнены результатом позиции добавленного ВВ.
    • Запрос Интерфейса Управления "load" расширен определением выбранной БД в атрибуте "force", для осуществления такой операции над конкретным узлом.
    • XMLNode: Функция получения атрибутов attr() расширена опциональным аргументом определения присутствия.
    • "Массив (Array)" пространства пользователя расширен функциями indexOf() и lastIndexOf().
    • Функция API пользователя SYS.fileRead() расширена аргументами смещения и размера блока чтения.
    • Функция API пользователя strEncode() дополнена поддержкой вариантов "ToLower" и "Limit".
    • API пользователя дополнено функцией strFromCharUTF() формирования строки из UTF-8, UTF-16, UTF-16LE, UTF-16BE, UTF-32, UTF-32LE, UTF-32BE.
    • Дополнено определением периодичности сервисного задания SERV_TASK_PER=10.
    • API пользователя дополнено функцией SYS.fileSize().
    • Добавлена функция str2atime() для конвертации времени в строке во время от эпохи UNIX с поддержкой GMT.
    • TError дополнено названиями кодов ошибок в перечислении "Codes", которые везде использованы.
    • Специальные названия архивов дополнено названием ALRM_ARCH_CH_NM ("<alarmsChange>"), для простой смены присутствующих нарушений.
    • Ограничения дополнены USER_ITS_LIMIT (1000000) для ограничения количества элементов вроде пользовательских массивов из DAQ.JavaLikeCalc.
  • DB: Добавлен контроль закрытия транзакций в ядре OpenSCADA функциями trTm_ClsOnOpen(), trTm_ClsOnReq() и trPr_ClsTask().
    • Добавлен контроль процесса пере-включения объектов БД функцией disabledByUser().
    • Дополнено конфигурацией "Время жизни открытых таблиц", для закрытия неактивных таблиц функцией tblLifeTime().
    • Атрибут TBD::mEn перенесён в защищённое пространство.
  • Транспорты:
    • In: Дополнено виртуальными функциями keepAliveReqs(), keepAliveTm() для правильного KeepAlive на Web.
    • Out: Дополнено сервисом закрытия выходных транспортов согласно временем жизни (неактивности), сервисной функцией outLifeTime().
      • Расширено полем общего контроля попыток в функции attempts().
      • Унифицировано контролем времени последнего запроса в функции lstReqTm().
      • Добавлена функция outAddrHelp() для получения общей помощи по адресу модулей выходных транспортов.
  • Protocol.HTTP: Расширено функцией пользовательского API setUser() для изменения автентифицированного пользователя.
  • DAQ: TController::alarmSet() расширено аргументом "force" для принуждения установки нарушений на объектах контроллеров в резервировании.
    • DAQ-параметры дополнены функцией пользовательского API alarmSet() и функцией vlSetRednt() унифицированной записи значений в резервировании.
    • TDAQS::rdRestDtTm() расширено возвратом double вместо float.
    • Дополнено функцией пользовательского API daqAt().
    • Функцию пользовательского API funcCall() расширено аргументом "err".
    • JavaLikeCalc: Функции пользовательского API charAt() и charCodeAt() расширено поддержкой UTF. Функции пользовательского API расширено isNaN() для bool, integer, real, string (особенно для проверки чисел в строке).
  • Архивы:
    • Объекты TMArchivator и TArchiveS дополнено функцией redntTm() и rdTm() для получения последнего времени резервирования архивов сообщений.
    • TArchiveS::rdRestDtOverTm() расширено возвратом double вместо float.
    • Архивы значений дополнено общей опцией autoIdMode() режима формирования Идентификатора автоматически создаваемых архивов с вариантами перечисления AutoIdMode::{BothPrmAttrId,OnlyPrmId,OnlyAttrId}.
    • Val: Добавлены функции API пользователя getVals() и setVals() для реализации общего механизма доступа к архивам/истории в массиве и с фиксированной периодичностью.
  • UI: Декларацию контекстной документации из описания некоторых узлов унифицировано функцией TUIS::docKeyGet().
    • VCAEngine: Добавлена функция пользовательского API уровня сеанса this.ownerSess().uiCmd(). Виджет исполнения дополнен функцией API пользователя this.attrList() для получения перечня атрибутов виджета.

7.5.3 Система

  • FIX: Сообщения исходного кода и документация программы:
    • TMess: Дополнено очисткой переменной окружения LC_ALL и установкой "LANG" ясли пусто, для предотвращения переопределения LC_NUMERIC=C в конце концов.
    • FIX:.,*: Исправлено множество оригинальных сообщений исходного кода также в течении документирования большинства модулей.
    • FIX:DAQ.JavaLikeCalc: Исправлено перевод JavaLikeCalc кода функцией tr() в создании таблицы перевода "Trs" и записей там в простом режиме (один язык).
    • Контекстная документация:
      • Внесетевая документация дополнена некоторыми модулями OpenSCADA и большинством библиотек внутренних процедур и графических элементов. Файл общих CSS-стилей внесетевой документации "doc/en/files/doc.css" улучшено выключением прозрачного фонового цвета и некоторыми свойствами выбора языка.
      • Унифицировано декларацией из описания некоторых узлов в функции TUIS::docKeyGet() и добавлены узлы для этого:
        • DAQ-шаблоны и JavaLikeCalc библиотеки;
        • СВУ-библиотеки в UI.VCAEngine и UI.Vision.
      • UI: TUIS::docGet() дополнено кодом определения LTS сборок и использования замороженной LTS документации на OpenSCADA файл-сервере.
      • FIX:DAQ.JavaLikeCalc,UI.VCAEngine: Исправлена декларация внесетевой документации для "User_API".
  • FIX: Сборка:
    • FIX:configure.ac: Версия библиотеки ядра увеличена до 3:7:0 и версия программы увеличена до 0.9.1.
    • Дополнено корневыми файловыми системами (chroots) Debian 10, CentOs 8 и Ubuntu 20.04 для сборки OpenSCADA.
      • Исходные тексты значительно почищены на предмет предупреждений сборки из GCC 9 (CentOs 8).
      • UI.{QTCfg,Vision}: Адаптировано к сборке в окружении Debian 10 на предмет Qt5.11.3, GCC8 и ошибки около конфликта макроса message() в StdLibC++ через Qt5.
  • Android: Изучено поведение использования переменной окружения QT_SCALE_FACTOR на Android, которая установлена в 1.5 и удален типовой шрифт "Helvetica,12,-1" вместе с CSS-правилами QScrollBar.
  • Модульная версия подсистемы "Специальные" увеличена до 12; подсистемы "БД", "DAQ", "Архивы" и "UI" увеличена до 13; подсистемы "Транспорты" увеличена до 15.
  • FIX: Потоковость, задания, реальное время и замки:
    • Некоторые общие ресурсы данных dataRes() заменены собственными ресурсами, в основном из-за наблюдения проблем блокирования в Protocol.HTTP и DAQ.ModBus.
    • FIX: Добавлен механизм общих замков через контейнер замков, функция commonLock().
      • FIX: Transport.{Sockets,SSL}: Использовано для системных функций вроде getaddrinfo(), которые не являются многопотоковыми.
    • Планирование задач дополнено фазированием их вызова, что делает нагрузку на процессор ровной.
    • FIX: Ожидание функции TCntrNode::nodeDis() исправлено для нулевого времени и функция chldDel() установлена в отсутствие ожидания по умолчанию.
    • FIX: Исправлена негативная приоритетность политики "BATCH".
    • Archive,DAQ.Controller: Для текущего времени сообщений и значений в основном использовано TSYS::curTime()/1000000 вместо time(NULL) поскольку время сообщений и значений в микросекундах и помечено TSYS::curTime().
  • FIX: Резервирование:
    • .,UI.{QTCfg,Vision,WebCfg,WebCfgD}: Функция "Передача локальных первичных команд" резервированных систем унифицирована и расширена полным перемещением в TCntrNode::cntrCmd(), итак, функция на данное время работает для любых вызовов также из окружения программирования пользователя.
    • Archives,DAQ.DAQGate: Обработка верхней границы времени сообщений в резервировании и DAQGate изменена на использование последнего сообщения для повтора его запроса дважды, чтобы предотвратить потере сообщений на границе.
      • FIX: Резервирование и DAQ.DAQGate восстановлены в записи больших архивных блоков значений, в основном в восстановлении участков архива значений.
      • Первое получение нарушений в резервировании сообщений включено только при наличии архиваторов сообщений в резерве.
      • Размещение сообщений в архиваторах процедурой резервирования TMArchivator::redntDataUpdate() изменено на использование функции put(), для осуществления этой операции автоматически для всех полученных сообщений под замком.
    • DAQ,DAQ.*: Запись значений в резервировании унифицировано функцией vlSetRednt(). Сервис "TValue::get:/serv/attr" расширен несколько лишним запросом последнего запрошенного значения для предотвращения EVAL там при потере соединения.
  • Функция strEncode() дополнена вариантом "Limit" для ограничения размера строки с учётом переменчивости UTF-8, и следующие элементы переведены на неё, вместо удалённого ограничивающего варианта функции strMess(): ключи TConfig, ВВ DAQ-шаблонов, DB.SQLite, UI.QTCfg.
  • FIX: Конфигурация:
    • TConfig,TCfg: Ключевые поля дополнены ограничением их размера перед обрезанием на стороне БД.
      • *: Функции добавления дополнены обработкой формирования идентификатора, или названия, и ограничения их в размере, возвратом результирующего названия инициатора, с использованием расширения функции узла chldAdd() до прямого возврата идентификатора и простого удаления нового узла для одинаковых.
      • DAQ: Идентификаторы ВВ Логического Уровня DAQ-шаблонов расширены ограничением размера до 1.5*OBJ_ID_SZ=30 символов и дополнены их обрезанием при создании.
      • Транспорты: Размер Идентификатора выходных транспортов установлен в OBJ_ID_SZ*2, поскольку они могут комбинироваться из обычного идентификатора узла и некоторого префикса, в автоматическом режиме.
      • Дополнено функцией установки полей TCfg в типовое значение, для предотвращения загрузке значений предыдущих записей в отсутствующие поля.
    • TConfig,*: Функции пользовательского API для конфигурации cfg() и cfgSet() расширены контролем доступа.
    • Загрузка из выбранной БД улучшено предварительной проверкой включения в функции TSYS::chkSelDB().
    • TCntrNode,DAQ,DAQ.JavaLikeCalc: Дополнено функцией load__() для обработки некоторых действий в конце загрузки.
  • Интерфейс Управления:
    • *: Унифицировано на предмет контроля модификации объектов узлов и очищено лишние модификации, переносом модификации из контекста исполнения под опцию "modifCalc".
    • .,UI.{QTCfg,WebCfgD}: Таблицы расширены отдельной помощью по колонкам и ячейкам.
      • Транспорты: Таблица внешних хостов OpenSCADA расширена контекстной помощью к ячейке адреса транспорта, используя функцию outAddrHelp().
  • DAQ-шаблоны и все их реализации дополнены функцией создания атрибутов выбора из второй и третьей строки шаблонного поля "Значение", TFunction::IO дополнен флагом TFld::Selectable.
  • Завершена унифицированная реализацию DAQ-шаблонов — TPrmTempl::Impl, и такие элементы мигрированы и адаптированы к ней: DAQ.{JavaLikeCalc,ModBus,LogicLev,Siemens}, Protocol.{ModBus,UserProtocol}, UI.WebUser.
  • FIX:DAQ,Archive.DBArch: Реализован копирующий конструктор TElem для исправления проблем в Archive.DBArch и многих групп-таблиц в групповом табличном режиме.
  • Function,DAQ.{JavaLikeCalc,LogicLev,ModBus,Siemens}: Расширено слежением за сменой программы функции и на предмет гарячего перезапуска исполняемых процедур, установкой флага "f_start".
  • TMess,XMLNode: Дополнено функцией setUTF8(), формирования UTF-8 из их кодов, взято из XMLNode для использования в других местах.

7.5.4 БД

  • FIX:*: Функция сброса конфигурационного контекста cfgToDefault() использована в начале функции dataSeek() и fieldSeek(), поскольку это обязательная операция, как минимум для конфигурационного файла, и должна также осуществляться для конфигурации в БД относительно новых полей.
  • Дополнено контролем закрытия транзакций в ядре OpenSCADA, в сервисной задаче для таймаута > 10 секунд или в отдельной на БД задаче быстрого закрытия транзакций общих СУБД. Для чего добавлена функция trTm_ClsOnOpen(), trTm_ClsOnReq() и trPr_ClsTask().
  • Объекты БД дополнены восстановлением их включения после потери подключения (или другой причины) для предусмотренных к включению и не выключенных пользователем, с помощью disabledByUser().
  • Дополнено конфигурацией "Время жизни открытых таблиц, секунд", для закрытия неактивных таблиц.
  • FIX:{SQLite,MySQL,PostgreSQL,FireBird}:
    • FIX:{MySQL,PostgreSQL,FireBird}: Усовершенствовано и проверено горячее восстановление потерянных подключений и без потери данных.
      • FIX:FireBird: Восстановлено основную работу в запросе первичных ключей и адаптировано к FireBird версии 3.
      • FIX:MySQL: Решено с аварийным завершением во встроенном переподключении (по MYSQL_OPT_RECONNECT), который заменён собственным и горячим переподключением. Исправлена ошибка "BLOB/TEXT can't have a default value (1)" на современных версиях сервера MariaDB, полным удалением DEFAULT для TEXT.
    • SQLite: Дополнено корректной обработкой блокирования файлов БД SQLite, при доступе к общим библиотекам из различных процессов.

7.5.5 Сбор Данных

  • TController::alarmSet(): Расширено имплементацией концепции тригерования нарушений, которая предусматривает также пропуск нарушений в буфер с целью очистки только при наличии нарушений.
    • Глобально унифицировано и полностью описано в документации на предмет сообщений из объектов контроллеров и DAQ-параметров, когда параметр-источник в сообщении дополняется именем объекта контроллера.
    • FIX: Изменено на использование полного ID-пути параметра, для предотвращения коллизиям в нарушениях от параметров с одинаковыми идентификаторами, но различными источниками.
  • FIX:*: Свойство period() заранее актуализировано, при смене конфигурации "SCHEDULE", для обеспечения корректной периодичности данных архивов.
  • Расширено ранним включением библиотек шаблонов в процессе загрузки, изначально для транспортных протоколов основанных на DAQ-шаблонах.
  • FIX:ModBus:
    • FIX: Режим "Асинхронная запись" восстановлен и проверен на записи после восстановления подключения, для использования в предотвращении потерь. Асинхронная запись перенесена на после фазы запроса с подавлением-задержкой изменения записанных значений в атрибутах до очищения буфера записи.
    • FIX: Исправлена работа в режиме резервирования.
    • FIX: Общая функция upVal() поделена на две функции upValStd() и upValLog() для отдельного обновления типов параметров сначала "Стандартный" и "Логический" тип на конец, для случаев использования данных "Стандартного" типа параметров в "Логическом".
    • Расширено работой с ошибочным или пустым транспортом подключений, чтобы обеспечить его смену из внешних процедур.
    • Расширено флагом "s" строгого запроса сложных данных.
  • FIX:JavaLikeCalc: Расширено попыткой восстановления исполнения предыдущей процедуры в случае ошибок в новой, в основном из DAQ-шаблонов.
    • FIX: Исправлено аварийное завершение при горячей компиляции, в основном при возврате к корректной процедуре после компиляции ошибочной, в случае использования процедурой внутренних функций, возможно и внешних также, из-за отсутствия очистки "fPrmst". Все эти очистки унифицированы в функциях buildClear(), workClear().
    • Установлено в остановку функции при смене источника программы, для применения изменений.
    • FIX: Предотвращено рекурсивные вызовы, что наблюдалось на рекурсивном создании виджетов в UI.VCAEngine.
  • Siemens: Расширен прямым определением типа данных адреса. LibnoDave обновлен к 0.8.5.1.
  • DAQGate: Расширен опцией и функцией размещения различных удалённых контроллеров в виртуальных параметрах.

7.5.6 Архивы-История

  • FIX:Сообщения:
    • /serv/mess: Усовершенствовано во вставке, относительно независимой записи в архив и чисто для обновления присутствующих нарушений.
    • Сообщения макросов "message", "mess_info", ... к функции Mess->put() перенаправлено на запись в буфер, для предотвращения прямой записи в архиваторы.
    • TArchiveS::messPut() очищено от аргумента "force".
  • FIX:Значения:
    • TVArchive::getVals(): Усовершенствовано обработку несвободных буферов (с фиксированной периодичностью) относительно запроса данных из буфера и различных архиваторов, используя промежуточный буферный массив, который проигрывается в конце.
    • FIX: Усовершенствовано обработку ограничения независимо для буфера, архиваторов и их периодичности, для работы запросов данных на большом интервале и высокой периодичности.
    • FIX: TValBuf.get() переключено из генерации исключений на возврат EVAL при отсутствии запрошенных данных.
    • Архиваторы значений дополнены общей опцией "Режим формирования ID автоматически создаваемых архивов" с выбором из режимов: "Оба ID параметра и атрибута", "Только ID параметра", "Только ID атрибута". Для возможности контроля наименования автоматических архивов.
    • TVArchive::{setVals(),setVal()}: Доступ к функциям записи в архив ограничено только пользователям в группе "Архив".
  • FIX:FSArch: Режим сообщений в XML дополнен кешем позиций.
    • FIX: Архивация сообщений значительно усовершенствована и исправлена относительно размещения нескольких различных сообщений на одно время.
    • FIX: Исправлено относительно удаления info.db и его обработки, используя адрес БД как уникальную сущность вместо ограниченного идентификатора БД, который сейчас именуется через индексацию одинаковых.
    • FIX: Создание каталога архива перенесено на начало, до блокирования и создания info.db.
    • FIX: Исправлена архивация дублированных сообщений в режиме предотвращения дубликатам - переписано.
  • FIX:DBArch:
    • FIX: Исправлено включение архивов значений в архиваторы для негруппового типа архивации.
    • FIX: Окончательно исправлен запрос одиночных значений архиву, после неполного исправления от 2018-02-23 только для данных архіватора в периодичности 1 секунда.
    • Адаптировано к работе только в режиме прямой записи архива, для группового режима архивов и относительно обновления целевой информации при записи.

7.5.7 Транспорты

  • .,*: Расширено поддержкой выбора многих протоколов и функция protocol() переименована в protocols().
    • Дополнено сервисом закрытия выходных транспортов по времени жизни (неактивности) и функцией outLifeTime(), унифицировано относительно контроля времени последнего запроса функцией lstReqTm().
  • FIX:Serial: Исправлен режим "Модем" выходного транспорта, корректной обработкой результата функции ResMtx::tryLock(). Поле управления потоком перенесено в поле опций из-за необходимости прямого отключения некоторой опцией вроде -RS485.
  • FIX:Sockets,SSL: Расширено поддержкой IPv6 как для входных, так и выходных транспортов, используя getaddrinfo().
    • Дополнено обработкой (подключением) всех IP-адресов, полученных из символического, особенно для выходных транспортов.
    • Выходные транспорты дополнены прямым определением нескольких адресов хостов.
    • Выходные транспорты усовершенствовано в использовании попыток после получения ошибки запроса "Время чтения истекло.".
    • FIX:Sockets: Исправлена обработка выходных транспортов с адресом "SOCK:{N}" от инициативных подключений, относительно очистки адреса установкой в "SOCK:-1", чем предотвращая возможность перезапуска с использованием уже закрытого описателя сокета, но возможно уже выделенного другой частью программы.
      • Адрес входных транспортов в TCP-режиме может быть расширен дополнительными параметрами и сейчас следующим полем после режима является идентифицирующее сообщение инициативного подключения в режимі 2, т.е. этот режим расширен отправкой идентифицирующих сообщений после установки инициативных подключений.
      • "TCP:" префикс адреса сделан необязательным-опциональным.
      • Режим адреса входного транспорта по умолчанию установлен в 1 (не закрывать, только по параметрам KeepAlive).
      • Порт по умолчанию установлен в 10005.
    • SSL: Дополнено обработкой NO_*_METHOD для TLS1, TLS1_1, TLS1_2, DTLS1 и прямой поддержкой DTLSv1_2. Порт по умолчанию установлен в 10045.

7.5.8 Транспортные Протоколы

  • FIX:HTTP: Дополнено корректной поддержкой KeepAlive, функциями входных транспортов keepAliveTm() и keepAliveReqs(). Расширено таблицей БД "HTTP_AuthSessions" внешних сеансов аутентификации.
  • FIX:ModBus: Входная часть расширена использованием DAQ-шаблонов.
    • Перечень типов данных таблицы ВВ дополнен типом "Объект".
    • Определение варианта протокола по входным запросам несколько улучшено определением отличия вариантов RTU и TCP, через учёт типа транспорта.
  • UserProtocol: Расширено поддержкой DAQ-шаблонов.
  • SelfSystem: Расширено поддержкой попыток выходных транспортов.

7.5.9 Интерфейс Пользователя

  • FIX: TUIS::mimeGet() изменён на предмет поведения определения расширения файла "svg" как "image/svg+xml" для корректного отображения SVG-файлов, и множества таких файлов, на WEB.
  • FIX:VCAEngine,Vision,WebVision: Вариант "LineEdit" примитива "FormEl" дополнен видом "Пароль".
  • FIX: СВУ-стили переведены на схему включения стилей при их присутствии вместо выключения по "Нет стиля", также исправлено создание новых элементов и в целом.
  • VCAEngine,Vision: Вся информацию сведена в поле статуса для виджетов, библиотек и проектов; которые дополнены статусом исполняемой процедуры - наследовано, переопределено.
  • FIX:VCAEngine:
    • Страницы проектов дополнены типом "Ссылка", для оптимизации потребления памяти на высоко-динамических и высоко-повторяемых страницах, на стороне сеанса проекта. Открытие страниц при исполнении проекта (сеансы) улучшено предотвращением лишнего и двойного открытия и закрытия, что критично для контроля ссылок на страницы.
    • Множество мероприятий около редактирования визуальных элементов во время исполнения проекта.
      • Исправлено удаление страниц проекта во время исполнения проекта, на предмет предотвращения блокированию объектов и обеспечения их раннего связывания для удаления страниц сеансов вместе со страницами проектов.
      • Объекты сеансов переведены на собственную блокировку данных для предотвращения мертвого блокирования в сложных ситуациях, поскольку вызовы стилей используют непрямой parent().
    • Оптимизация удалённой разработки:
      • информационные сервисы контроля "/prm/cfg/prj", "/page/page" дополнены получением количества дочерних страниц в атрибуте "chPgN" при установке "getChPgN";
      • дополнено на предмет предотвращения передачи иконок виджетов в контрольном сервисе "/serv/wlbBr" загрузки полного дерева виджетов, установкой атрибутов "disIconsW", "disIconsCW".
    • Сеансы проектов СВУ прибраны, в конце концов, из под контроля модификации режима разработки.
    • Добавлено прямое определение специфических для визуализатора атрибутов, маркируя их префиксом "vs_".
    • FIX: Команда сеанса проекта "close" сервиса "/serv/pg" принудительно обрабатывается, что актуально для ссылок на страницы.
    • FIX: Процедура загрузки СВУ-страниц дополнена очисткой лишних записей и записей унаследованных, но отсутствующих виджетов, в таблице "*_incl".
    • FIX: Исправлена работа функции пользовательского API tr() из документов.
  • FIX:QTCfg,Vision: Исправлена обработка подсветки синтаксиса текстовых полей путём первичной загрузки правил синтаксису а потом текста, для предотвращения порче текста в отдельных случаях, обнаружено в протоколе обмена транспорта и Qt 5.11.
    • Дополнено кнопками принудительной загрузки и сохранения, в меню.
    • Улучшено формирование Таблиц на предмет получения доступной ширины из maximumViewportSize().
  • FIX:Vision,WebVision: Улучшен контроль лент прокрутки вложенных страниц, для обеспечения их работы отдельно, не двух вместе.
    • FIX:ElFigure: Завершена поддержка отражения, реализацией: в целом, черчения Дуги, заполнения в целом и изображением. Заполнение изображением предотвращено от пробелов при доступе поза изображением.
    • FIX:Диаграмма:
      • FIX:Тренды: Расширено построение шкалы времени, для множества суток с полным скрытием времени, и отображение первого значения слева, используя смещение временной зоны. Дополнено поддержкой больших временных интервалов по месяцам.
      • Отключено ограничение точности запрошенных значений архиву, для длинных счётчиков.
      • Улучшена удалённая работа на медленных каналах и с периодичностью буфера значений в 10 секунд.
    • Text,Media,Box: Расширено отображением курсора активности.
    • FormEl: Некоторые виды (Редактирование строки, Редактирование текста, Комбобокс, Список, Дерево, Таблица) расширены отдельным фоном и границей, с помощью специфических пользовательских атрибутов "vs_background", "vs_border".
    • Дополнено специфическим пользовательским атрибутом "vs_winTitle" динамического значения заголовка окна.
  • FIX:Vision:
    • Оптимизация удалённой разработки:
      • Дерево проектов переключено на частичную загрузку ветвей и расширение, для улучшения работы на медленных подключениях.
      • Дерево виджетов улучшено в работе на медленных подключениях путём отключением загрузки иконок виджетов по пороговому времени полной загрузки дерева более 5 секунд и включения этого для времени менее 0.1 секунды.
    • Расширено планированием периода обновления в зависимости от реального качества подключения в режиме исполнения, вроде UI.WebVision.
    • FIX: Общие исправления и усовершенствования режимов исполнения окна:
      • FIX: Ручное масштабирование окна исполнения (относительно полного экрана или максимизации) улучшено и исправлено в обработке признака isResizeManual.
      • FIX: Исправлен запуск в полно-экранном режиме и не полное масштабирование при восстановлении в не нулевую позицию окна.
    • FIX:FormEl:
      • FIX:Таблица: Улучшена подстройка к использованию максимальной ширины из размера виджета и максимума порта отображения, поскольку только максимум порта может быть тут ещё не инициированным. Окончательное исправление подстройки таблиц, переносом процедуры в сообщения: создать, изменить размер и показать. Исключены случайные падений.
      • FIX:Date: Исправлено аварийное завершение при установке конфигурации.
    • FIX: Исправлена регулярная замена основной страницы (аварийное завершение) и масштабирование в режиме исполнения.
    • FIX: Исправлено исполнение относительно аварийного завершения в закрытии внешних окон при закрытии главного окна.
    • FIX: Исправлены диалоги редактирования свойств Страниц/Библиотек и Виджетов относительно:
      • предотвращения закрытия по Esc;
      • отключения отмены изменений по времени в LineEdit;
      • отвязки признака редактируемости от видимости в TextEdit;
      • предотвращения потере изменений во вкладке "Обработка";
      • предупреждения про изменение наследованной вычислительной процедуры.
    • Контроль за фокусом переписан в специфичный около СВУ-виджетов контроль, а не Qt-виджетов, что похоже на UI.WebVision и что предотвращает некоторые проблемы.
    • ElFigure: Редактирование фигур переключено в нормальный режим, без какой-нибудь трансформации (поворота и отражения).
  • FIX:WebVision:
    • FIX:Основное функционирование:
      • FIX: JS функция servSet() записи на сервер переключена в синхронный режим для предотвращения потерь.
      • Унифицирована основная проверка фоновых объектов относительно поддержки опциональных фоновых объектов, для уменьшения общего количества фоновых объектов, где обязательными сейчас являются: "ElFigure", "Диаграмма", "Документ", "FormEl"; и опциональный только "Текст".
      • Границу вертикального расширения основного окна установлено в 10% от общего размера и в 50% для уменьшения, для предотвращения миганию на FireFox от примечаний про блокирование внешних окон. Установлено использование-включение встроенного режима масштабирования согласно к window.devicePixelRatio равного 1 на уровне Web-бравзера.
      • Значительно улучшено обнаружение потерь подключения для перегрузки основной страницы, в случаях возврата к уже закрытым сеансам в Web-браузере.
      • Дополнено реализацией специфического к визуализатору атрибута "userSetVis".
      • FIX: Восстановлена перегрузка целого дерева виджетов для восстановления функции удаления отсутствующих виджетов в визуализаторе при их удалении в СВУ-движке.
      • FIX: Предотвращены лишние и отдельные запросы содержимого вложенных страниц при запуске.
      • FIX: Улучшено поведение контроля фокуса и предотвращены сообщения мыши вне страниц.
    • Дополнено контролем кеша страниц по времени жизни и максимальному количеству страниц как на стороне сервера, так и Web-бравзера, итак этот модуль, на данное время, больше подходит для работы в оперативном режиме!
    • Контроль сеансов:
      • Расширено возможностью ручного закрытия открытых сеансов от административного пользователя.
      • FIX: Обычные пользователи исключены от возможности подключения к чужим сеансам.
      • FIX: Основной код запроса GET значительно упрощён относительно предотвращения переподключениям к СВУ-сеансам без локальных представителей.
      • Дополнено состоянием открытых сеансов на странице контроля, включая подключенный проект и пользователя.
    • FIX:Панель статуса:
      • Добавлен уровень нарушений с функцией глобальной квитации, отправкой "ws_alarmLev".
      • Расширено поддержкой СВУ-стилей в их отображении и изменении.
      • FIX: Исправлено в формировании размера панели статуса, обновлении и предотвращении её мигания при обновлении основной страницы.
    • FIX:FormEl:
      • FIX:{Tree,Table}: исправлен расчёт ширины границы и отступа в конечной геометрии.
        • FIX:Tree: Исправлена обработка пустой строки в конце. Дополнено масштабированием изображений дерева управления.
    • Расширено установкой визуальных элементов СВУ на предмет атрибута "class" в "Примитив {WPrimitive}" и атрибута "id" в идентификатор виджета вроде "wdg_{id}", для упрощения детальной подстройки.
  • FIX:QTStarter: Функция updLookFeel() исправлена на предмет возврата типа "void". Добавлена эмуляцию правой клавиши мыши и контекстного меню при удержании левой клавиши мыши в течении времени, установленного опцией командной строки --simulRightMKeyTm. Это время установлено в 2 секунды для Android.
  • FIX:QTCfg:
    • FIX: Исправлено применение-принятие забытых изменений редактируемых виджетов при переключении к другому узлу. Элементы TextEdit исправлены относительно определения признака редактирования, который отвязан от видимости.
    • Добавлен намёк к группам узлов для команды добавления узла.
    • Операции перемещения, в конфигурационной таблице, расширены горячими клавишами "Ctrl+Up" и "Ctrl+Down".
    • Оптимизация удалённой работы:
      • Предотвращено обновление дерева навигации при выборе любого элемента.
      • Замедление цикла периодического обновления после появления диалога занятости.
    • Ускорено закрытие окна конфигуратора со многими неактивными OpenSCADA хостами, путём раннего уведомления заданий хостов.
  • WebUser: Расширено поддержкой DAQ-шаблонов.

7.5.10 Специальные

  • FIX:FLibSYS:
    • FIX:IO: write() исправлено относительно получения типового типа данных, получение ошибочных данных сделано безопасным.
    • CRC: Завершено использованием нормальных полиномов, входных и выходных относительностей и XOR для выхода.
    • VArchObj: Доступ к функции записи в архив ограничен только пользователями в группе "Архив".

7.5.11 Сервисные обновления

8 Ссылки