Документы/Часто задаваемые вопросы

This page is a translated version of the page Documents/FAQ and the translation is 100% complete.

Other languages:
English • ‎российский • ‎українська

Contents

1 Политические и концептуальные

Q: OpenSCADA непонятна и сложна в освоении. Почему так, и есть ли инструкции быстрого старта?
Re: OpenSCADA тщательно прописана, предельно структурирована и формализована. Однако впечатления непонимания и сложности прогнозируемы. Исходя из целей проекта, программа является предельно модульной, а значит вариантов конфигурации и использования очень много. С одной стороны это усложняет восприятие, но с другой повышает шансы "охвата" именно Вашей специализированной задачи. Кроме того нужно всегда помнить, что сложно и непонятно то, чего ещё не знаешь, а вовсе не обязательно потому, что оно действительно таковым является. И этот психологический барьер нужно преодолевать при каждом освоении нового. Руководство по быстрому старту существует и доступно здесь.

Q: Работает ли OpenSCADA в операционной системе QNX, FreeBSD, MS Windows?
Re: OpenSCADA разрабатывается по принципам многоплатформенности, основываясь на признанном мировом стандарте POSIX и многоплатформенных библиотеках. Однако ввиду ограниченности ресурсов проект ведётся только в ОС Linux. Большая адаптация к другим платформам запланирована после выпуска версии 0.9 и на данный момент OpenSCADA работает на аппаратных платформах x86, x86_64, ARM и программной платформе Android. Дальнейшая поддержка той или иной платформы будет зависеть от заинтересованности сообщества и наличия отдельного мантейнера для аппаратно-программной платформы.

Q: Можно ли управлять OpenSCADA посредством обычного WEB-браузера?
Re: Да, можно. Для конфигурации OpenSCADA из WEB-браузера созданы модули UI.WebCfg и UI.WebCfgD; для исполнения интерфейсов оператора создан модуль UI.WebVision и для создания пользовательских HTML страниц создан модуль UI.WebUser. Которые вызываются модулем Protocol.HTTP, подсистемы "Протокол".

Q: Как OpenSCADA собирается из исходных текстов?
Re: Сборка любого программного проекта сложностью выше среднего из исходных текстов является нетривиальной задачей. Для решения этой задачи нужна соответствующая подготовка и предварительный опыт сборки. Если есть возможность получить OpenSCADA собранной и в виде готовых пакетов под ваше окружение, то обязательно ею воспользуйтесь. Если же нет пакетов под ваше окружение или Вы сознательно желаете собрать программу из исходных текстов то воспользуйтесь руководством для сборки из исходных текстов.

Q: Допускает ли программа добавление/удаление/обновление модулей на ходу (без остановки)?
Re: Данная возможность предусмотрена программой и обеспечивается подсистемой "Управление модулями". Фактически, обновление модулей может происходить автоматически после обнаружения новой версии модуля.

Q: Могу ли я создать свой собственный модуль для какой либо подсистемы?
Re: Да, конечно. Для помощи в этом создан документ, где практически полностью описана архитектура ядра, его функции и API модулей различных подсистем. Дополнительно создано руководство по созданию модулей к OpenSCADA и для каждой подсистемы создан модуль-шаблон, взяв за основу который можно быстро создать свой новый модуль.

2 Архитектурные, использование и как сделать

Q: Каким образом реализуется многоязыковая поддержка? Могу ли я выполнить локализацию на свой родной язык?
Re: Многоязыковая поддержка реализована на основе стандарта интернационализации I18n. Причём файлы интернационализации модулей отделены от файла интернационализации ядра программы. Это обеспечивает полноценную поддержку независимого распространения и разработки модулей к OpenSCADA. Перевод программы в целом и модулей в отдельности может быть выполнен независимо от наличия её исходных текстов. Для перевода достаточно получить *.po или *.pot файлы нужного компонента и в обычном текстовом редакторе выполнить перевод сообщений в файлах с английского на нужный язык. На данный момент актуальные файлы Вы можете получить из репозитория исходных текстов проекта.

Q: Как организовывается разделение доступа?
Re: Используется схема безопасности подобная UNIX OC. Так, нужные компоненты имеют владельца, принадлежат группам и содержат триаду доступа "rwxrwxrwx". Кроме того, данный механизм безопасности внедрён в интерфейс управления OpenSCADA, который в свою очередь пронизывает всю программу.

Q: Каким образом в OpenSCADA можно реализовывать межмодульные связи?
Re: Межмодульные связи могут быть следующих типов:

Q: Могу ли я получить данные непосредственно из БД?
Re: Да, Вы можете. Для баз данных (БД), которые поддерживают SQL, Вы можете использовать функцию SQLReq() к соответствующей БД. В общем и для не SQL баз данных Вы можете использовать API доступа к слою баз данных OpenSCADA в функциях таблицы БД fieldStruct(), fieldSeek(), fieldGet(), fieldSet(), fieldDel().

Q: Где и как выполнять дополнительную логическую обработку атрибутов параметров, включая логическое связывание в один объект?
Re: Любая математическая обработка атрибутов параметров может производится в вычислительных объектах контроллеров (модулях подсистемы "Сбор данных"), например, в блочном вычислительном контроллере (DAQ.BlockCalc) и объекте контроллера на основе Java-подобного языка (DAQ.JavaLikeCalc). Кроме того, обработка может выполняться на логическом уровне параметров (DAQ.LogicLev), в модулях подсистемы "Сбор данных", специально для этого предусмотренных (работающих по шаблонам параметров) или содержащих встроенную реализацию механизма шаблонов параметров. Т.е. пользователь может формировать параметры с нужной ему структурой и алгоритмом пост-обработки, формируя логически связанные объекты. Часть обработки может выполняться в СВУ, непосредственно при визуализации (UI.VCAEngine). Про сбор данных в целом смотрите в документе.

Q: Где проверяются шкалы параметров и различные уставки сигнализации?
Re: Проверка шкал и уставок может реализовываться самим модулем контроллера с сигнализацией через соответствующие атрибуты параметров. А также на логическом уровне параметров для "сырых" источников данных. Кроме того, данный анализ может производится непосредственно в среде визуализации и управления (СВУ).

Q: Возможно ли, и каким образом, реализуется резервирование параметров?
Re: Реализуются следующие схемы резервирования:

Q: Каким образом определяется цикличность архивирования значений?
Re: Архивирование является независимой от контроллеров и параметров задачей и выполняется она модульной подсистемой "Архивы". Что и как архивировать определяется индивидуально для каждого атрибута параметра. Предусмотрены два режима архивирования: пассивный и активный. Пассивное архивирование определяется цикличностью получения данных у контроллера, циклом модуля сбора данных. Активное архивирование обеспечивается задачей подсистемы архивирования, независимо от цикла и способа сбора данных модулем "DAQ".

Q: Могу ли я получить (прочитать и записать) значение атрибута параметра сбора данных, например, из процедуры пользовательского интерфейса?
Re: Основным интерфейсом обмена значениями параметров сбора данных является статичное связывание с элементами или атрибутами соответствующей части OpenSCADA, которое является самым быстрым. Однако внутренний язык и динамическая объектная модель узлов OpenSCADA позволяет Вам осуществлять динамический доступ к объектам атрибутов параметров сбора данных, например, Вы можете получить значение атрибута функцией get().

Q: Возможна ли работа с потоковыми данными в программе?
Re: Потоковый и пакетный сбор данных работает в связке с архивом и его буфером. Т.е. источник, получив пакет/блок данных, непосредственно помещает его в архив атрибута параметра или же берет пакет с буфера архива при потоковом выводе.

Q: Каким образом осуществляется речевая сигнализация?
Re: Речевая сигнализация, как и иные методы сигнализации, является элементом подсистемы "Пользовательские интерфейсы" и организовывается в модулях среды визуализации и управления (СВУ), а именно: в движке СВУ UI.VCAEngine и в визуализаторах UI.Vision и UI.WebVision.

Q: Как я могу быстро и корректно изменить соотношение сторон экрана визуального интерфейса пользователя на другое, например, на 16:9?
Re: Да, основной интерфейс пользователя OpenSCADA, основанный на концепции объектов сигнализации и её корневой страницы, приспособлен и разработан под соотношение сторон 4:3. Для общих проектов СВУ запланирована реализацию соответствующих стилей на разные соотношения сторон однако мнемосхемы должны оставаться неизменными, в этом случае. Т.е. для ручной, быстрой и корректной смены соотношения сторон Вы, на данный момент, должны выполнить следующее, в дереве проекта СВУ:

Q: Как я могу подключить визуализатор UI.Vision к удаленному серверу визуализации, или к ПЛК с этой функцией?
Re: Да, Вы можете создавать сервера визуализации и ПЛК, основанные на модуле UI.VCAEngine со всеми данными СВУ проектов визуализации пользователя на них и очевидно с установленной там OpenSCADA. Впоследствии Вы можете подключаться к этим удалённым серверам визуализации и ПЛК с помощью модуля UI.Vision для локальной разработки и визуализации удалённых проектов визуализации пользователя. Эта инструкция также полезна для получения удалённого контроля серверов визуализации и ПЛК! Для осуществления этого Вы должны следовать процедуре на клиентской станции с модулем UI.Vision и с любой конфигурацией включая и пустую:

Q: Как я могу автоматически запустить OpenSCADA с соответствующим оперативным интерфейсом пользователя, проектом диспетчерского контроля?
Re: Конечно, после завершения процесса разработки Вы должны обеспечить запуск программы вместе с запуском операционной системы и полно-экранного исполнения результирующего оперативного интерфейса пользователя. Для этого Вы должны следовать процедуре:

Q: Оперативный интерфейс оператора запускается на весь экран и я не могу его закрыть для получения доступа к системному окружению рабочего стола!
Re: Конечно, OpenSCADA защищает систему контроля от закрытия и непривилегированного доступа к системному окружению рабочего стола. Т.е. для получения доступа к системному окружению рабочего стола Вы должны быть привилегированным пользователем, изменить пользователя интерфейса на свою учётную запись и в появившемся глобальном меню осуществить нужное: выключить полно-экранный режим, закрыть или выйти из программы.

3 Проблемы

Q: Почему я потерял дробную часть у всех загруженных значениях вещественного типа?
Re: Вы используете локаль, отличную от "C" или общего Английского и устанавливаете её прямо переменной окружения "LC_NUMERIC" или её общим вариантом "LC_ALL", что приводит к использованию символа разделителя дробной части отличного от "." (точка), часто это "," (запятая), в функциях вроде atof() и sprintf(). Т.е. никогда не устанавливайте переменных окружения "LC_NUMERIC" и "LC_ALL" прямо поскольку они переопределяют корректную установке "LC_NUMERIC" в "C", в середине! Для изменения языка программы используйте только переменные "LANG" и "LANGUAGE", которых всегда достаточно.

Q: "Нет доступа для создания политики реального времени для '****'. Создан поток по умолчанию!"
Re: Такое сообщение OpenSCADA формирует при попытке установить для потока-задачи политику реального времени, по приоритету больше 0, в случае запуска от обычного пользователя. Потенциально такие права можно предоставить путём редактирования файла "/etc/security/limits.conf" таким образом:

user    hard    nice    -20 
user    soft    nice    -15 
user    hard    rtprio  99 
user    soft    rtprio  90

Q: Я вижу, что на графиках (примитив "Диаграмма") интерфейсов модуля UI.WebVision, отсутствуют все текстовые метки. Почему так?
Re: Такой результат возможен на интерфейсах, построенных на библиотеке GD, и если сама эта библиотека собрана без использования библиотеки FontConfig. На данное время только модуль UI.WebVision использует эту библиотеку для исключительного построения примитивов "Элементарная Фигура" и "Диаграмма". Т.е. для исправления этой проблемы Вы должны установить корректный пакет-сборку библиотеки или собрать библиотеку самостоятельно с FontConfig. На данный момент известен один случай такого сорта проблемы с пакетом "libgd2-noxpm" старых версий дистрибутива Debian, основанного на Linux, где Вы должны установить корректный пакет "libgd2-xpm".