<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html class="client-nojs" dir="ltr" lang="en">
<head>
<meta charset="UTF-8" />
<title>Документы/Часто задаваемые вопросы - OpenSCADAWiki</title>
<meta content="MediaWiki 1.26.4" name="generator" />
<link href="https://www.gnu.org/copyleft/fdl.html" rel="copyright" />
<link href="../en/files/doc.css" rel="stylesheet" /></head>
<body><div class="floatright"><a href="index.html"><img alt="OpenSCADA" src="../en/files/index.png" /></a></div><div id="mw_header">
			<div class="mw-indicators">
</div>
			<h1 id="firstHeading" lang="ru">Документы/Часто задаваемые вопросы</h1>
		</div><div class="mw-content-ltr" dir="ltr" id="mw-content-text" lang="ru"><div class="mw-pt-translate-header noprint" dir="ltr" lang="en">This page is a <span class="plainlinks"><a class="external text" href="http://oscada.org/wiki/index.php?title=Special:Translate&amp;group=page-Documents%2FFAQ&amp;action=page&amp;filter=&amp;language=ru" rel="nofollow noreferrer noopener" target="_blank">translated version</a></span> of the page <a class="external" href="http://oscada.org/wiki/Documents/FAQ" title="Documents/FAQ">Documents/FAQ</a> and the translation is 91% complete.</div><hr /><div class="mw-pt-languages" dir="ltr" lang="en"><div class="mw-pt-languages-list autonym"><a class="mw-pt-languages-ui mw-pt-progress mw-pt-progress--complete" href="../en/FAQ.html" title="Documents/FAQ (100% translated)">English</a>&nbsp;• ‎<span class="mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete">mRussian</span>&nbsp;• ‎<a class="mw-pt-progress mw-pt-progress--complete" href="../uk/FAQ.html" title="Документи/Часто задавані питання (100% translated)">Українська</a></div></div>
<div class="toc" id="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="#.D0.9F.D0.BE.D0.BB.D0.B8.D1.82.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B5_.D0.B8_.D0.BA.D0.BE.D0.BD.D1.86.D0.B5.D0.BF.D1.82.D1.83.D0.B0.D0.BB.D1.8C.D0.BD.D1.8B.D0.B5"><span class="tocnumber">1</span> <span class="toctext">Политические и концептуальные</span></a></li>
<li class="toclevel-1 tocsection-2"><a href="#.D0.90.D1.80.D1.85.D0.B8.D1.82.D0.B5.D0.BA.D1.82.D1.83.D1.80.D0.BD.D1.8B.D0.B5.2C_.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B8_.D0.BA.D0.BE.D1.80.D0.BE.D1.82.D0.BA.D0.B8.D0.B5_.22.D0.9A.D0.B0.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B8.D1.82.D1.8C_....22"><span class="tocnumber">2</span> <span class="toctext">Архитектурные, использование и короткие "Как выполнить ..."</span></a>
<ul>
<li class="toclevel-2 tocsection-3"><a href="#.D0.AF.D0.B4.D1.80.D0.BE_OpenSCADA"><span class="tocnumber">2.1</span> <span class="toctext"><span>Ядро OpenSCADA</span></span></a></li>
<li class="toclevel-2 tocsection-4"><a href="#.D0.91.D0.94"><span class="tocnumber">2.2</span> <span class="toctext">БД</span></a></li>
<li class="toclevel-2 tocsection-5"><a href="#.D0.A4.D0.B8.D0.B7.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B9_.D0.B8_.D0.BB.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B9-.D0.B2.D0.B8.D1.80.D1.82.D1.83.D0.B0.D0.BB.D1.8C.D0.BD.D1.8B.D0.B9_.D1.81.D0.B1.D0.BE.D1.80_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.D1.85"><span class="tocnumber">2.3</span> <span class="toctext">Физический и логический-виртуальный сбор данных</span></a></li>
<li class="toclevel-2 tocsection-6"><a href="#.D0.90.D1.80.D1.85.D0.B8.D0.B2.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5-.D0.B8.D1.81.D1.82.D0.BE.D1.80.D0.B8.D1.8F_.D0.B8_.D0.9D.D0.B0.D1.80.D1.83.D1.88.D0.B5.D0.BD.D0.B8.D1.8F"><span class="tocnumber">2.4</span> <span class="toctext">Архивирование-история и Нарушения</span></a></li>
<li class="toclevel-2 tocsection-7"><a href="#.D0.98.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81_.D0.BA.D0.BE.D0.BD.D0.B5.D1.87.D0.BD.D0.BE.D0.B3.D0.BE_.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D1.82.D0.B5.D0.BB.D1.8F"><span class="tocnumber">2.5</span> <span class="toctext">Интерфейс конечного пользователя</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-8"><a href="#.D0.9F.D1.80.D0.BE.D0.B1.D0.BB.D0.B5.D0.BC.D1.8B_.28.D0.B0.D0.BA.D1.82.D1.83.D0.B0.D0.BB.D1.8C.D0.BD.D0.BE.2C_.D0.BE.D0.BA.D1.80.D1.83.D0.B6.D0.B5.D0.BD.D0.B8.D0.B5.2C_.D0.B8.D1.81.D0.BF.D1.80.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.BE.29"><span class="tocnumber">3</span> <span class="toctext"><span>Проблемы</span> (актуально, окружение, исправлено)</span></a></li>
</ul>
</div>

<h2><span class="mw-headline" id=".D0.9F.D0.BE.D0.BB.D0.B8.D1.82.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B5_.D0.B8_.D0.BA.D0.BE.D0.BD.D1.86.D0.B5.D0.BF.D1.82.D1.83.D0.B0.D0.BB.D1.8C.D0.BD.D1.8B.D0.B5"><span class="mw-headline-number">1</span> Политические и концептуальные</span></h2>
<p><b>Q:</b> OpenSCADA непонятна и сложна в освоении. Почему так, и есть ли инструкции быстрого старта и продвинутого "Как выполнить ..."?<br />
<b>Re:</b> OpenSCADA тщательно прописана, предельно структурирована и формализована. Однако впечатления непонимания и сложности ожидаемы. Исходя из целей проекта, программа является предельно модульной, а значит вариантов конфигурации и использования очень много. С одной стороны это усложняет восприятие, но с другой — повышает шансы "охвата" именно Вашей специализированной задачи. Кроме того, нужно всегда помнить, что сложное и непонятно всё неизвестное, которое действительно совсем необязательно является таким. И этот психологический барьер нужно преодолевать при каждом освоении нового. Руководство по быстрому старту существует и доступно <a href="Quick_start.html" title="Special:MyLanguage/Documents/Quick start">здесь</a>, а расширенный "Как выполнить ..." также <a href="How_to.html" title="Special:MyLanguage/Documents/How to">тут</a>..
</p><p><b>Q:</b> Работает ли OpenSCADA в операционной системе QNX, FreeBSD, MS Windows?<br /> 
<b>Re:</b> OpenSCADA разрабатывается по принципам многоплатформенности, основываясь на признанном мировом стандарте POSIX и многоплатформенных библиотеках. Однако, ввиду ограниченности ресурсов и интересами автора и разработчиков, проект ведётся только в ОС Linux. Дальнейшая адаптация к другим платформам запланирована после выпуска версии 1.0 и на данный момент OpenSCADA работает на аппаратных платформах x86, x86_64, ARM и программной платформе Android. Поддержка той или иной платформы будет зависеть от заинтересованности сообщества и наличия отдельного мантейнера для аппаратно-программной платформы.
</p><p><b>Q:</b> Возможно ли управлять OpenSCADA посредством обычного WEB-браузера?<br /> 
<b>Re:</b> Да, возможно. Для конфигурации OpenSCADA из WEB-браузера созданы модули <a href="Modules/WebCfg.html" title="Special:MyLanguage/Modules/WebCfg">UI.WebCfg</a> и <a href="Modules/WebCfgD.html" title="Special:MyLanguage/Modules/WebCfgD">UI.WebCfgD</a>; для исполнения интерфейсов оператора создан модуль <a href="Modules/WebVision.html" title="Special:MyLanguage/Modules/WebVision">UI.WebVision</a> и для создания пользовательских HTML страниц создан модуль <a href="Modules/WebUser.html" title="Special:MyLanguage/Modules/WebUser">UI.WebUser</a>. Которые вызываются модулем <a href="Modules/HTTP.html" title="Special:MyLanguage/Modules/HTTP">Protocol.HTTP</a>, подсистемы "Транспортные Протоколы".
</p><p><b>Q:</b> Допускает ли программа добавление/удаление/обновление модулей на ходу (без остановки)?<br /> 
<b>Re:</b> Данная возможность предусмотрена программой и обеспечивается подсистемой "Управление модулями". Фактически, обновление модулей может происходить автоматически, после обнаружения новой версии модуля.
</p>
<h2><span class="mw-headline" id=".D0.90.D1.80.D1.85.D0.B8.D1.82.D0.B5.D0.BA.D1.82.D1.83.D1.80.D0.BD.D1.8B.D0.B5.2C_.D0.B8.D1.81.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B8_.D0.BA.D0.BE.D1.80.D0.BE.D1.82.D0.BA.D0.B8.D0.B5_.22.D0.9A.D0.B0.D0.BA_.D0.B2.D1.8B.D0.BF.D0.BE.D0.BB.D0.BD.D0.B8.D1.82.D1.8C_....22"><span class="mw-headline-number">2</span> Архитектурные, использование и короткие "Как выполнить ..."</span></h2>
<h3><span class="mw-headline" id=".D0.AF.D0.B4.D1.80.D0.BE_OpenSCADA"><span class="mw-headline-number">2.1</span> <span id="UsingCore" title="#UsingCore">Ядро OpenSCADA</span></span></h3>
<p><b>Q:</b> Каким образом реализуется многоязыковая поддержка? Могу ли я выполнить локализацию на свой родной язык?<br /> 
<b>Re:</b> Многоязыковая поддержка реализована на основе стандарта интернационализации I18n. И файлы интернационализации модулей отделены от файла интернационализации ядра программы, что обеспечивает полноценную поддержку независимого распространения и разработки модулей к OpenSCADA. Перевод программы в целом и модулей в отдельности может быть выполнен независимо от наличия исходных текстов. Для перевода достаточно получить *.po или *.pot файлы нужного компонента и в обычном текстовом редакторе, или специализированной программе, выполнить перевод сообщений в файлах с английского на нужный язык. Актуальные файлы вы можете получить из <a class="external text" href="http://oscada.org/svn/trunk/OpenSCADA" rel="nofollow noreferrer noopener" target="_blank">репозитория исходных текстов проекта</a> в каталоге "src/po" ядра программы и каталогах "src/moduls/{subsys}/{module}/po" модулей, а по завершению предложить результаты нового перевода для включения в репозиторий исходных текстов, написав в <a class="external text" href="http://oscada.org/ru/forum/topics/proekt/" rel="nofollow noreferrer noopener" target="_blank">форум проекта</a> или прямо <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">автору и главному разработчику проекта</a>. PO-файлы не используются программой непосредственно, поэтому для быстрой проверки результата перевода и исправления ошибок форматирования можете воспользоваться командой <span style="border: solid gray 1px; padding: 1px; font-family: monospace; font-size: 1.2em; white-space: nowrap;">msgfmt -vo [openscada|oscd_{ModId}].mo {lang}.po</span> и поместить полученный MO-файл <b>[openscada|oscd_{ModId}].mo</b> в каталоге "/usr/share/locale/{lang}/LC_MESSAGES" актуальной инсталляции OpenSCADA для языка <i>lang</i>.
</p><p><b>Q:</b> Могу ли я создать свой собственный модуль для какой либо подсистемы?<br /> 
<b>Re:</b> Да, конечно. Для помощи в этом создан <a href="../en/API.html" title="Special:MyLanguage/Documents/API">документ</a>, где практически полностью описана архитектура ядра, его функции и API модулей различных подсистем. Дополнительно создано <a href="How_to_Create_module.html" title="Special:MyLanguage/Documents/How to/Create module">руководство по созданию модулей к OpenSCADA</a> и для каждой подсистемы создан модуль-шаблон, взяв за основу который можно быстро создать собственный модуль.
</p><p><b>Q:</b> Как организовывается разделение доступа?<br /> 
<b>Re:</b> Используется схема безопасности подобная UNIX OC. Так, нужные компоненты имеют владельца, принадлежат группам и содержат триаду доступа "rwxrwxrwx". Кроме того, данный механизм безопасности внедрён в <a href="../en/API.html#CntrNode" title="Special:MyLanguage/Documents/API">интерфейс управления OpenSCADA</a>, который в свою очередь пронизывает всю программу.
</p><p><b>Q:</b> Каким образом в OpenSCADA можно реализовывать межмодульные связи?<br /> 
<b>Re:</b> Межмодульные связи могут быть следующих типов:
</p>
<ul><li> Стандартный интерфейс доступа — производится посредством виртуального интерфейса модульных подсистем.</li>
<li> Расширенный интерфейс доступа — предусматривает экспорт функций внешнего интерфейса модулем экспортёром и последующее подключение модуля импортёра к этим функциям с помощью функций объекта "<a href="../en/API.html#TModule" title="Special:MyLanguage/Documents/API">TModule::modFunc()</a>".</li>
<li> Пользовательские функции — любой компонент программы может регистрировать свои пользовательские функции ("<a href="../en/API.html#TCntrNode" title="Special:MyLanguage/Documents/API">TCntrNode::objFuncCall()</a>"), которые в последствии могут быть использованы в окружении пользовательского программирования OpenSCADA.</li></ul>
<p><b>Q:</b> Как OpenSCADA собрать из исходных текстов?<br /> 
<b>Re:</b> Сборка любого программного проекта из исходных текстов, на системном языке вроде C/C++ и сложностью выше среднего, является нетривиальной задачей, особенно для специфических окружений и окружений для которых ещё не выполнена адаптация. Для решения этой задачи нужна соответствующая подготовка и предварительный опыт сборки. Если есть возможность получить OpenSCADA собранной и в виде готовых пакетов под ваше окружение, то обязательно ею воспользуйтесь! Если же нет пакетов под ваше окружение или Вы сознательно желаете собрать программу из исходных текстов под адаптированное окружение то воспользуйтесь <a href="../en/How_to_Build_from_source.html" title="Special:MyLanguage/Documents/How to/Build from source">руководством для сборки из исходных текстов</a>. Адаптация к сборке и работе в других окружениях является значительно более нетривиальной задачей, особенно для окружений очень далёких от POSIX или понятия меж-платформенной совместимости вообще, является отдельным под-проектом OpenSCADA и предусматривает продолжительный процесс вроде <a class="external" href="http://oscada.org/wiki/Special:MyLanguage/Sub-projects/Adaption_to_Android" title="Special:MyLanguage/Sub-projects/Adaption to Android">адаптации к Android</a>, поэтому не нужно её путать с простой сборкой под адаптированное окружение!
</p>
<h3><span class="mw-headline" id=".D0.91.D0.94"><span class="mw-headline-number">2.2</span> БД</span></h3>
<p><b>Q:</b> Могу ли я получить данные непосредственно из БД?<br />
<b>Re:</b> Да, Вы можете. Для баз данных (БД), которые поддерживают SQL, Вы можете использовать <a href="User_API.html#SYS.BD" title="Special:MyLanguage/Documents/User API">функцию SQLReq()</a> к соответствующей БД. В общем и для не SQL баз данных Вы можете использовать API доступа к слою баз данных OpenSCADA в функциях таблицы БД <a href="User_API.html#SYS.BD" title="Special:MyLanguage/Documents/User API">fieldStruct(), fieldSeek(), fieldGet(), fieldSet(), fieldDel()</a>.
</p>
<h3><span class="mw-headline" id=".D0.A4.D0.B8.D0.B7.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B9_.D0.B8_.D0.BB.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B9-.D0.B2.D0.B8.D1.80.D1.82.D1.83.D0.B0.D0.BB.D1.8C.D0.BD.D1.8B.D0.B9_.D1.81.D0.B1.D0.BE.D1.80_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.D1.85"><span class="mw-headline-number">2.3</span> Физический и логический-виртуальный сбор данных</span></h3>
<p><b>Q:</b> Где и как выполнять дополнительную логическую обработку атрибутов параметров, включая логическое связывание в одном объекте?<br /> 
<b>Re:</b> Любая математическая обработка атрибутов параметров может производится в вычислительных объектах контроллеров (модулях подсистемы "Сбор данных"), например, в блочном вычислительном контроллере (<a href="Modules/BlockCalc.html" title="Special:MyLanguage/Modules/BlockCalc">DAQ.BlockCalc</a>) и объекте контроллера на основе Java-подобного языка (<a href="Modules/JavaLikeCalc.html" title="Special:MyLanguage/Modules/JavaLikeCalc">DAQ.JavaLikeCalc</a>). Кроме того, обработка может выполняться на логическом уровне параметров (<a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">DAQ.LogicLev</a>) в модулях подсистемы "Сбор данных", специально для этого предусмотренных (работающих по шаблонам параметров) или содержащих встроенную реализацию механизма шаблонов параметров. Т.е. пользователь может формировать параметры с нужной ему структурой и алгоритмом пост-обработки, формируя логически связанные объекты. Часть обработки может выполняться в СВУ, непосредственно при визуализации (<a href="Modules/VCAEngine.html" title="Special:MyLanguage/Modules/VCAEngine">UI.VCAEngine</a>). Про сбор данных в целом смотрите в <a href="DAQ.html" title="Special:MyLanguage/Documents/DAQ">документе</a>.
</p><p><b>Q:</b> Где проверяются шкалы параметров и различные уставки сигнализации?<br /> 
<b>Re:</b> Проверка шкал и уставок может реализовываться самим контроллером, с сигнализацией через соответствующие атрибуты параметров, а также на логическом уровне параметров, для "сырых" источников данных. Кроме того, данный анализ может производится непосредственно в среде визуализации и управления (СВУ).
</p><p><b>Q:</b> Могу ли я получить (прочитать и записать) значение атрибута параметра сбора данных, например, из процедуры пользовательского интерфейса?<br />
<b>Re:</b> Основным интерфейсом обмена значениями параметров сбора данных с элементами или атрибутами соответствующей части OpenSCADA является статичное связывание, которое является самым быстрым. Однако внутренний язык и динамическая объектная модель узлов OpenSCADA позволяет Вам осуществлять динамический доступ к объектам атрибутов параметров сбора данных, например, Вы можете получить значение атрибута <a href="User_API.html#SYS.DAQ" title="Special:MyLanguage/Documents/User API">функцией get()</a>.
</p><p><b>Q:</b> Как я могу сохранить-восстановить модифицированные данные на логическом уровне?<br />
<b>Re:</b> Действительно, иногда может понадобиться сохранение и затем восстановление, в основном при перезапуске, некоторых модифицированных динамических данных вроде счётчиков пробега оборудования. В целом, обработку такого рода источников данных и оборудования нужно осуществлять на <a class="external" href="http://oscada.org/wiki/Special:MyLanguage/Sub-projects/Logical_level" title="Special:MyLanguage/Sub-projects/Logical level">логическом уровне</a> подсистемы "Сбор данных", а реализовать её можно многими путями, предусматривающими сохранение данных на некотором хранилище и последующее их восстановление, однако наиболее известные способы это:
</p>
<ul><li> Периодическое, или при завершении, сохранение контекста параметров шаблона с помощью запроса пользовательского API OpenSCADA через <a href="User_API.html#SYS" title="Special:MyLanguage/Documents/User API">cntrReq()</a>, где "force" для принудительного сохранения немодифицированных параметров:</li></ul>
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="nx">SYS</span><span class="p">.</span><span class="nx">cntrReq</span><span class="p">(</span><span class="nx">SYS</span><span class="p">.</span><span class="nx">XMLNode</span><span class="p">(</span><span class="s2">"save"</span><span class="p">).</span><span class="nx">setAttr</span><span class="p">(</span><span class="s2">"path"</span><span class="p">,</span><span class="k">this</span><span class="p">.</span><span class="nx">nodePath</span><span class="p">()</span><span class="o">+</span><span class="s2">"/%2fobj"</span><span class="p">).</span><span class="nx">setAttr</span><span class="p">(</span><span class="s2">"force"</span><span class="p">,</span><span class="s2">"1"</span><span class="p">));</span>
</pre></div>
<ul><li> Если атрибут шаблона со счётчиком архивируется тогда при старте параметра Вы можете получить последнее значение из этого архива, например, так:</li></ul>
<div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="k">if</span><span class="p">(</span><span class="nx">f_start</span><span class="p">)</span>    <span class="nx">prevArchRestore</span> <span class="o">=</span> <span class="kc">false</span><span class="p">;</span>
<span class="k">if</span><span class="p">(</span><span class="o">!</span><span class="nx">prevArchRestore</span> <span class="o">&amp;&amp;</span> <span class="p">(</span><span class="nx">archEnd</span><span class="o">=</span><span class="k">this</span><span class="p">.</span><span class="nx">cntr</span><span class="p">.</span><span class="nx">arch</span><span class="p">().</span><span class="nx">end</span><span class="p">(</span><span class="s2">"FSArch.1s"</span><span class="p">)))</span> <span class="p">{</span>
    <span class="nx">SYS</span><span class="p">.</span><span class="nx">messInfo</span><span class="p">(</span><span class="s2">"testArch"</span><span class="p">,</span> <span class="s2">"val="</span><span class="o">+</span><span class="k">this</span><span class="p">.</span><span class="nx">cntr</span><span class="p">.</span><span class="nx">arch</span><span class="p">().</span><span class="nx">getVal</span><span class="p">(</span><span class="nx">archEnd</span><span class="p">)</span><span class="o">+</span><span class="s2">"; "</span>
               <span class="s2">"val1="</span><span class="o">+</span><span class="k">this</span><span class="p">.</span><span class="nx">cntr</span><span class="p">.</span><span class="nx">arch</span><span class="p">().</span><span class="nx">getVal</span><span class="p">(</span><span class="nx">archEnd</span><span class="p">,</span><span class="kc">false</span><span class="p">,</span><span class="s2">"FSArch.1s"</span><span class="p">)</span><span class="o">+</span><span class="s2">"; "</span>
               <span class="s2">"val2="</span><span class="o">+</span><span class="k">this</span><span class="p">.</span><span class="nx">cntr</span><span class="p">.</span><span class="nx">get</span><span class="p">(</span><span class="nx">archEnd</span><span class="o">/</span><span class="mi">1000000</span><span class="p">,</span><span class="nx">archEnd</span><span class="o">%</span><span class="mi">1000000</span><span class="p">));</span>
    <span class="nx">cntr</span> <span class="o">=</span> <span class="k">this</span><span class="p">.</span><span class="nx">cntr</span><span class="p">.</span><span class="nx">arch</span><span class="p">().</span><span class="nx">getVal</span><span class="p">(</span><span class="nx">archEnd</span><span class="p">);</span>
    <span class="nx">prevArchRestore</span> <span class="o">=</span> <span class="kc">true</span><span class="p">;</span>
<span class="p">}</span>
</pre></div>
<ul><li> Создание специальной таблицы БД и запись/чтение этих данных прямо в эту таблицу посредством SQL-запросов через <a href="User_API.html#DB" title="Special:MyLanguage/Documents/User API">SQLReq()</a>.</li></ul>
<p><b>Q:</b> Возможно ли, и каким образом, реализуется резервирование параметров?<br /> 
<b>Re:</b> Как и любая пост-обработка, резервирование параметров осуществляется <a href="DAQ.html#LogicLev" title="Special:MyLanguage/Documents/DAQ">логическим уровнем</a> путём создания шаблона параметра, реализующего возможность в одном параметре описывать несколько однотипных датчиков, которые будут иметь собственные атрибуты значений. Результирующее значение будет помещаться в обобщающий атрибут значения.
</p>
<h3><span class="mw-headline" id=".D0.90.D1.80.D1.85.D0.B8.D0.B2.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5-.D0.B8.D1.81.D1.82.D0.BE.D1.80.D0.B8.D1.8F_.D0.B8_.D0.9D.D0.B0.D1.80.D1.83.D1.88.D0.B5.D0.BD.D0.B8.D1.8F"><span class="mw-headline-number">2.4</span> Архивирование-история и Нарушения</span></h3>
<p><b>Q:</b> Каким образом определяется цикличность архивирования значений?<br /> 
<b>Re:</b> Архивирование является независимой от контроллеров и параметров задачей и выполняется она модульной подсистемой "<a href="Program_manual.html#CfgArch" title="Special:MyLanguage/Documents/Program manual">Архивы-История</a>". Что и как архивировать определяется индивидуально для каждого атрибута параметра. Предусмотрены два режима архивирования: пассивный и активный. Пассивное архивирование определяется цикличностью получения данных у контроллера — циклом модуля сбора данных. Активное архивирование обеспечивается задачей подсистемы архивирования и независимо от цикла и способа сбора данных модулем "DAQ".
</p><p><b>Q:</b> В процессе разработки-наладки у меня остаются несоответствующие активные нарушения. Что с ними делать?<br /> 
<b>Re:</b> Да, учитывая, что нарушения в таблицу активных нарушений часто попадают-формируются пользовательскими процедурами, то "залипание" их там может случаться. Соответственно, вы можете просто перезапустить проект OpenSCADA или удалить-снять такие нарушения в <a class="external" href="http://oscada.org/wiki/File:QTCfg_subsys_arch_mess_ru.png" title="File:QTCfg subsys arch mess ru.png">главной вкладке "Сообщения" страницы подсистемы "Архивы-История"</a>: выбираете уровень нарушений "Информация (1[X]), НАРУШЕНИЕ", устанавливаете размер в 0, после чего в таблице сообщений должны быть все актуальные нарушения, отдельные из которых можно убрать через контекстное меню, а всё видимое кнопкой под таблицей; для большой группы нарушений, и не всех, можете установить их чёткие характеристики времени, уровня и категории, чтобы увидеть в таблица, а соответственно "снять" сразу все необходимые.
</p><p><b>Q:</b> Возможна ли работа с потоковыми данными?<br /> 
<b>Re:</b> Потоковый и пакетный сбор данных работает в связке с архивом и его буфером. Т.е. источник, получив пакет/блок данных, непосредственно помещает его в архив атрибута параметра или же берет пакет с буфера архива при потоковом выводе.
</p><p><b>Q:</b> Могу ли я осуществить экспорт архивных данных (истории) в другой формат, скажем — CSV, Excel?<br />
<b>Re:</b> В целом, экспортировать архивные данные Вы можете и тут есть три особенности, а именно: место, форматы и режим экспорта. Поскольку конечным пользователем, для которого эти данные формируются, является пользователь конечного интерфейса визуализации — оператор, то встроенная функция экспорта предоставляется <a href="Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">этими интерфейсами</a> для данных примитивов <a href="Modules/VCAEngine.html#Diagram" title="Special:MyLanguage/Modules/VCAEngine">диаграммы</a> и <a href="Modules/VCAEngine.html#Document" title="Special:MyLanguage/Modules/VCAEngine">документа</a>, где можно осуществить экспорт в CSV, файл изображения и HTML. Что касается других форматов данных, особенно закрытых и одноплатформенных вроде Excel, то экспорт в них может быть реализован <a href="User_API.html" title="Special:MyLanguage/Documents/User API">пользовательской процедурой</a> через общий интерфейс визуализации пользователя как прямым формированием, если формат простой, так и вызовом внешней утилиты преобразования, если она доступна. Экспорт в целом может осуществляться в двух режимах: интерактивном и потоковом. Именно интерактивный режим встроен в интерфейс пользователя и он предусматривает указание диапазона и качества данных (данных примитивов), как ограничивающих факторов целесообразного времени исполнения этой операции. Потоковый режим предусматривает фоновое, возможно даже вместе с основными процессами, осуществление экспорта как текущих данных так и данных локальных архивов и часто используется для экспорта в таблицу БД с нужной структурой. Экспорт из окружения разработки, как и потоковый режим, встроенными функциями не предусматривается, кроме экспериментальных вроде экспорта в WAV. Это, при необходимости, может быть реализовано <a href="Libs_Service_procedures.html" title="Special:MyLanguage/Libs/Service procedures">сервисной процедурой</a> или частью кода основного процесса для потокового режима.
</p>
<h3><span class="mw-headline" id=".D0.98.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81_.D0.BA.D0.BE.D0.BD.D0.B5.D1.87.D0.BD.D0.BE.D0.B3.D0.BE_.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D1.82.D0.B5.D0.BB.D1.8F"><span class="mw-headline-number">2.5</span> Интерфейс конечного пользователя</span></h3>
<p><b>Q:</b> Каким образом осуществляется речевая сигнализация и что нужно для её работы?<br /> 
<b>Re:</b> Речевая сигнализация, как и иные методы сигнализации, является элементом подсистемы "Пользовательские интерфейсы" и осуществляется в модулях среды визуализации и управления (СВУ), а именно: в движке СВУ <a href="Modules/VCAEngine.html" title="Special:MyLanguage/Modules/VCAEngine">UI.VCAEngine</a> и в визуализаторах <a href="Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">UI.Vision</a> и <a href="Modules/WebVision.html" title="Special:MyLanguage/Modules/WebVision">UI.WebVision</a>. Обычно, для синтеза речи нужен соответствующий синтезатор с поддержкой нужного языка, вроде <b>RHVoice</b>, <b>festival</b>, <b>espeak</b>. Для проигрывания синтезированного звука вам не нужны специфические инструменты в типовом окружении. Однако, для специфических окружений, нужна программа <b>play</b>, которая обычно содержится в пакете <b>sox</b>, но для точного определения зависимостей смотрите в <a href="Modules/VCAEngine.html#Alarms" title="Special:MyLanguage/Modules/VCAEngine">соответствующих процедурах внешних методов уведомления</a>.
</p><p><b>Q:</b> Как я могу быстро и корректно изменить соотношение сторон экрана визуального интерфейса пользователя на другое, например, на 16:9?<br />
<b>Re:</b> Да, основной интерфейс пользователя OpenSCADA, основанный на концепции объектов сигнализации и её <a href="Libs_Main_graphical_elements.html#RootPgSo" title="Special:MyLanguage/Libs/Main graphical elements">корневой странице</a>, приспособлен и разработан под соотношение сторон 4:3. Для общих проектов СВУ запланирована реализация соответствующих стилей на разные соотношения сторон однако мнемосхемы должны оставаться неизменными. Т.е. для ручной, быстрой и корректной смены соотношения сторон Вы, на данный момент, должны выполнить следующее, в дереве проекта СВУ:
</p>
<ul><li> Установить, или умножить оригинальное, атрибут "Геометрия: x масштаб" (geomX) в значение (16/9)/(4/3) = 1.333, для:
<ul><li> <a href="Libs_Main_graphical_elements.html#RootPgSo" title="Special:MyLanguage/Libs/Main graphical elements">корневой страницы</a>;</li>
<li> всех шаблонных страниц вроде "<a href="Libs_Main_graphical_elements.html#grpGraph" title="Special:MyLanguage/Libs/Main graphical elements">Группы графиков</a>", только для страниц использованных как шаблоны;</li>
<li> всех страниц документов и панелей управления, индивидуально.</li></ul></li>
<li> Из-за того, что страницы мнемосхем редко допускают изменение оригинального соотношения сторон, ввиду использования правильных фигур вроде окружности и квадратов, мы вынуждены разрабатывать эти кадры с начала и в размере [900*1.333 x 550] = [1199 x 550].</li></ul>
<p><b>Q:</b> How can I connect the visualiser UI.Vision to a remote visualisation server or PLC with such function?<br />
<b>Re:</b> Yes, you are allowed for creation of visualiser servers and PLCs based on the module <a href="Modules/VCAEngine.html" title="Special:MyLanguage/Modules/VCAEngine">UI.VCAEngine</a> with all VCA-data of the user visualisation projects on them and obliviously with OpenSCADA installed there. Next you are allowed for a connection to the remote visualisation servers or PLCs by the module <a href="Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">UI.Vision</a> for locally developing and visualisation of the remote user visualisation projects. The detailed instruction you can get in the <a href="Quick_start.html" title="Special:MyLanguage/Documents/Quick start">Quick Start manual's</a> part "<a href="Quick_start.html#RemConUse" title="Special:MyLanguage/Documents/Quick start">Connecting and using remote and background configurations</a>" and here you have get a short instruction. This short instruction also usable to get remote control of the visualiser servers and PLCs. To do that you must follow next procedure on a client station with the module UI.Vision and any configuration include pure-empty one:
</p>
<ul><li> Create a connection to the visualiser server or PLC as an OpenSCADA station on <a class="external" href="http://oscada.org/wiki/File:QTCfg_subsys_tr_sub.png" title="File:QTCfg subsys tr sub.png">the transports page</a> of any OpenSCADA configurator, in the "System" mode. If you will set also the "User" mode you will be allowed to control the remote station from the configurator and user, after the navigation tree updating.</li>
<li> Select on <a class="external" href="http://oscada.org/wiki/File:Vision_cfg.png" title="File:Vision cfg.png">the visualiser page</a> of any OpenSCADA configurator: a new connection, start user, user's password of the remote station and a project or projects for their automatic execution, else you will get in the developing mode. Next starting of the module UI.Vision should cause establishing of the remote connection to the visualiser server or PLC with their projects developing or execution. For querying the station together user and password at the module generic call you can select the connection-station "&lt;Select&gt;", useful at presence of many control stations and for opening several of them simultaneously.</li></ul>
<p><b>Q:</b> Как я могу автоматически запустить OpenSCADA с соответствующим оперативным интерфейсом пользователя — проектом диспетчерского контроля?<br />
<b>Re:</b> Конечно, после завершения процесса разработки, Вы должны обеспечить запуск программы вместе с запуском операционной системы и полно-экранное исполнение результирующего оперативного интерфейса пользователя. Для этого Вы должны следовать процедуре:
</p>
<ul><li> Обеспечьте специфические для системы мероприятия запуска самой OpenSCADA с вашим проектом. Тут Вы должны предварительно создать или найти иконку рабочего стола вашего проекта в OpenSCADA из <a href="Program_manual.html#Projects" title="Special:MyLanguage/Documents/Program manual">менеджера проектов OpenSCADA</a> и скопировать или разместить её в каталоге или перечне программ, которые запускаются автоматически вашим окружением рабочего стола. Детали смотрите в документации на соответствующее окружение рабочего стола.</li>
<li> Выберите запуск модуля <a href="Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">UI.Vision</a> с общим запуском OpenSCADA, в <a href="Modules/QTStarter.html#Cfg" title="Special:MyLanguage/Modules/QTStarter">поле "Модули Qt для запуска" модуля UI.QTStarter</a> из любого конфигуратора OpenSCADA.</li>
<li> Выберите Ваш проект СВУ для его автоматического исполнения, в <a href="Modules/Vision.html#Cfg" title="Special:MyLanguage/Modules/Vision">поле "Перечень проектов для запуска" модуля UI.Vision</a> из любого конфигуратора OpenSCADA. Тут мы также рекомендуем установить для исполнения проекта пользователя, отличного от системного, естественно с правами на этот проект.</li></ul>
<p><b>Q:</b> May I adjust my project for some specific branding?<br />
<b>Re:</b> Most visible branding by the end user is placed in <a href="Modules/VCAEngine.html" title="Special:MyLanguage/Modules/VCAEngine">the end user VCA interface</a> but you may want also in some adjustment the splash image, icons and so on:
</p>
<ul><li> icon in the right upper of the frame "<a href="Libs_Main_graphical_elements.html#RootPgSo" title="Special:MyLanguage/Libs/Main graphical elements">Root page (SO)</a>" — just upload your image in <a class="external" href="http://oscada.org/wiki/File:Vision_wlbpg_mime.png" title="File:Vision wlbpg mime.png">the project resources</a> as "logo", in the preferred size <b>110x55</b> pixels (2x1);</li>
<li> icon of the project window-page in it runtime — just upload your <a class="external" href="http://oscada.org/wiki/File:Vision_wlbpg.png" title="File:Vision wlbpg.png">project icon</a>, in the preferred size <b>128x128</b> pixels or clean up that for use the common project icon image (see below) which can be translated — dependently from current interface language;</li>
<li> the project <a class="external" href="http://oscada.org/wiki/File:QTStarter_splash.png" title="File:QTStarter splash.png">starting splash image</a> — prepare a representative image in the preferred size <b>600x300</b> and place it to <a href="Program_manual.html#Config" title="Special:MyLanguage/Documents/Program manual">the project's folder of icons</a> with the name "<b>{ProjectID}_splash.[png|gif|jpg|jpeg]</b>" for both start and exit splash and "<b>{ProjectID}_splash_exit.[png|gif|jpg|jpeg]</b>" for the exit splash;</li>
<li> the project common icon image for <a class="external" href="http://oscada.org/wiki/File:QTCfg_listelem.png" title="File:QTCfg listelem.png">the navigation tree of the OpenSCADA configurators</a> — prepare a representative image in the preferred size <b>128x128</b> and place it to <a href="Program_manual.html#Config" title="Special:MyLanguage/Documents/Program manual">the project's folder of icons</a> with the name "<b>{ProjectName}.[png|gif|jpg|jpeg]</b>", where <i>ProjectName</i> can be whether the language specific one or on the Basic Language for whole cases or even both if your project is <a href="../en/Create_multi_language_project.html" title="Special:MyLanguage/Documents/How to/Create multi language project">the multilanguage one</a>.</li></ul>
<p><b>Q:</b> Оперативный интерфейс оператора запускается на весь экран и я не могу его закрыть для получения доступа к системному окружению рабочего стола!<br />
<b>Re:</b> Конечно, OpenSCADA защищает систему контроля от закрытия и непривилегированного доступа к системному окружению рабочего стола. Т.е. для получения доступа к системному окружению рабочего стола Вы должны быть привилегированным пользователем, изменить пользователя интерфейса на свою учётную запись и в появившемся глобальном меню осуществить нужное: выключить полно-экранный режим, закрыть или выйти из программы. Если глобальное меню не появляется то Вы имеете проблемное окружение рабочего пространства, вроде Unity, которое "отрывает" меню окна; соответственно, предварительно отключите эту функцию окружения!
</p><p><b>Q:</b> Я могу легко подключать аналоговые сигналы для построения трендов примитивом <a href="Modules/VCAEngine.html#Diagram" title="Special:MyLanguage/Modules/VCAEngine">Диаграмма</a>, но использование тут дискретных-логических сигналов не является таким очевидным...<br />
<b>Re:</b> Да, примитив <a href="Modules/VCAEngine.html#Diagram" title="Special:MyLanguage/Modules/VCAEngine">Диаграмма</a> разработан в основном для аналоговых сигналов, но вы можете также использовать тут дискретные-логические сигналы как аналоговые с двумя состояниями [0,1], т.е. их натуральная шкала это [0...1] и если вы подключите один сигнал в автоматической-натуральной шкале, то получите его на весь экран, с заполненными полосами для состояния ПРАВДА (TRUE). Но это не очень удобно и вы не сможете объединить его с другими аналоговыми или дискретными-логичными сигналами даже в полупрозрачном цвете, т.е. вы должны вручную указать шкалу для позиционирования полосы дискретного-логического сигнала в необходимой части экрана. Некоторые примеры шкал:
</p>
<ul><li> <b>[0...5]</b> — вы делите экран по вертикали на пять полос и отображаете сигнал внизу;</li>
<li> <b>[-4...1]</b> — вы делите экран по вертикали на пять полос и отображаете сигнал вверху;</li>
<li> <b>[-2...3]</b> — вы делите экран по вертикали на пять полос и отображаете сигнал в центре;</li>
<li> <b>[0...10]</b> — вы делите экран по вертикали на десять полос и отображаете сигнал внизу.</li></ul>
<p><b>Q:</b> I have a very busy system with many OpenSCADA processes working through the Web interface and I want to decrease the server loading and speed up all those interfaces.<br />
<b>Re:</b> Yes, by default OpenSCADA interface designed for work in some fast enough carrying-live period (100 ms) which suitable mostly for active local Qt-interfaces of <a href="Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">the module UI.Vision</a> with high reactivity and on fast enough networks at working with the visualisation server. But currently you can tune your interface to achieve the loading decrease in times:
</p>
<ul><li> the first and an obviously step that is to increase the carrying-life period in <a class="external" href="http://oscada.org/wiki/File:Vision_wlbpg.png" title="File:Vision wlbpg.png">the VCA Project configuration</a>, where you can set the "Period of the calculation" in a value up to 500 ms for active local Qt-interfaces of <a href="Modules/Vision.html" title="Special:MyLanguage/Modules/Vision">the module UI.Vision</a> and up to 1000 ms for not fast Web-interfaces of <a href="Modules/WebVision.html" title="Special:MyLanguage/Modules/WebVision">the module UI.WebVision</a>;</li>
<li> the second step that is to set the dynamic data updating period depending on what you mean as enough often or disable the periodic updating in whole by setting the period in -2; and do that for <a href="Libs_Main_graphical_elements.html#RootPgSo" title="Special:MyLanguage/Libs/Main graphical elements">the main-root page</a> in <a class="external" href="http://oscada.org/wiki/File:Vision_wdg.png" title="File:Vision wdg.png">the Widget configuration</a> of your project tree; the same you can do for all panels placed in the group "Control panels (control)" of the project logical structure from the same main-root page, setting the needing period for the group itself;</li>
<li> the third step that is deepening to your dynamic widgets-cadres adaption for work on big periodicity without loss the reactivity like to the already adapted ones from the standard library as <a href="Libs_Main_graphical_elements.html#RootPgSo" title="Special:MyLanguage/Libs/Main graphical elements">the main-root page</a> and <a href="Libs_Main_graphical_elements.html#anShow" title="Special:MyLanguage/Libs/Main graphical elements">Analog show</a>; and the adaption mostly means:
<ul><li> sending user events at need of rapid updation in the next life cycle after the events processing;</li>
<li> controlling the widget execution period depending on the activity situation like to blinking the selection cursor and the alarm colors.</li></ul></li></ul>
<h2><span class="mw-headline" id=".D0.9F.D1.80.D0.BE.D0.B1.D0.BB.D0.B5.D0.BC.D1.8B_.28.D0.B0.D0.BA.D1.82.D1.83.D0.B0.D0.BB.D1.8C.D0.BD.D0.BE.2C_.D0.BE.D0.BA.D1.80.D1.83.D0.B6.D0.B5.D0.BD.D0.B8.D0.B5.2C_.D0.B8.D1.81.D0.BF.D1.80.D0.B0.D0.B2.D0.BB.D0.B5.D0.BD.D0.BE.29"><span class="mw-headline-number">3</span> <span id="Problems" title="#Problems">Проблемы</span> (<a class="external text" href="http://oscada.org/ru/forum/sbornyi-forum/?tx_mmforum_pi1%5Baction%5D=list_prefix&amp;tx_mmforum_pi1%5Blist_prefix%5D%5Bprfx%5D=BugConfirmed" rel="nofollow noreferrer noopener" target="_blank">актуально</a>, <a class="external text" href="http://oscada.org/ru/forum/sbornyi-forum/?tx_mmforum_pi1%5Baction%5D=list_prefix&amp;tx_mmforum_pi1%5Blist_prefix%5D%5Bprfx%5D=BugEnvironment" rel="nofollow noreferrer noopener" target="_blank">окружение</a>, <a class="external text" href="http://oscada.org/ru/forum/sbornyi-forum/?tx_mmforum_pi1%5Baction%5D=list_prefix&amp;tx_mmforum_pi1%5Blist_prefix%5D%5Bprfx%5D=BugFixed" rel="nofollow noreferrer noopener" target="_blank">исправлено</a>)</span></h2>
<p><b>Q:</b> Почему я потерял дробную часть у всех загруженных значениях вещественного типа?<br />
<b>Re:</b> Вы используете локаль, отличную от "C" или общего Английского, и устанавливаете её прямо переменной окружения "LC_NUMERIC" или её общим вариантом "LC_ALL", что приводит к использованию в функциях вроде atof() и sprintf() символа разделителя дробной части отличного от "." (точка), часто это "," (запятая).
</p>
<dl><dd> <b>!&gt;</b> Т.е., никогда не устанавливайте переменных окружения "LC_NUMERIC" и "LC_ALL" прямо поскольку они переопределяют корректную установке "LC_NUMERIC" в "C", в середине! Для изменения языка программы используйте только переменные "LANG" и "LANGUAGE", которых всегда достаточно.</dd>
<dd> <b>+&gt;</b> На данный момент проблема полностью исключена, путём проверки и очистки переменной окружения "LC_ALL"!</dd></dl>
<p><b>Q:</b> "Нет доступа для создания политики реального времени для '****'. Создан поток по умолчанию!"<br /> 
<b>Re:</b> Такое сообщение OpenSCADA формирует при попытке установить для потока-задачи политику реального времени, по приоритету больше 0, в случае запуска от обычного пользователя.
</p>
<dl><dd> <b>+&gt;</b> Потенциально такие права можно предоставить путём редактирования файла "/etc/security/limits.conf" таким образом:</dd></dl>
<pre style="white-space: pre;">
user    hard    nice    -20 
user    soft    nice    -15 
user    hard    rtprio  99 
user    soft    rtprio  90
</pre>
<p><b>Q:</b> Я наблюдаю отсутствие всех текстовых меток на графиках (примитив "Диаграмма") интерфейсов модуля <a href="Modules/WebVision.html" title="Special:MyLanguage/Modules/WebVision">UI.WebVision</a>. Почему так?<br />
<b>Re:</b> Такой результат возможен на интерфейсах, построенных на библиотеке GD, и если сама эта библиотека собрана без использования библиотеки FontConfig. На данное время только модуль <a href="Modules/WebVision.html" title="Special:MyLanguage/Modules/WebVision">UI.WebVision</a> использует эту библиотеку для исключительного построения примитивов "Элементарная Фигура" и "Диаграмма".
</p>
<dl><dd> <b>+&gt;</b> Т.е. для исправления этой проблемы Вы должны установить корректный пакет-сборку библиотеки или собрать библиотеку самостоятельно с FontConfig. На данный момент известен один случай такого сорта проблемы с пакетом "libgd2-noxpm" старых версий дистрибутива Linux Debian, где Вы должны установить корректный пакет "libgd2-xpm".</dd></dl>
<p><b>Q:</b> Я наблюдаю отсутствие SVG-изображений в интерфейсах Qt. Почему так?<br />
<b>Re:</b> Как правило это указывает на отсутствие в системе Qt-модуля для SVG-графики, например, пакет "libqt5svg5" в Linux дистрибутивах на основе Debian.
</p>
<dl><dd> <b>+&gt;</b> Установите пакет или непосредственно Qt-плагин поддержки SVG-графики.</dd></dl>






</div><table style="border-top: dotted 2px #999999; margin-top: 20pt; color: gray;" width="100%"><tr><td style="text-align: left;" width="40%"><a href="http://oscada.org/wiki/Documents/FAQ/ru">Documents/FAQ/ru</a> - <a href="http://oscada.org/en/main/about-the-project/licenses/">GFDL</a></td><td style="text-align: center;">April 2025</td><td style="text-align: right;" width="40%">OpenSCADA 1+r3018</td></tr></table></body>
</html>