<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		
		<title>oscada.org: Latest News</title>
		<link>http://oscada.org/</link>
		<description>Latest news from oscada.org</description>
		<language>en</language>
		<image>
			<title>oscada.org: Latest News</title>
			<url>http://oscada.org/fileadmin/tt_news_article.gif</url>
			<link>http://oscada.org/</link>
			<width></width>
			<height></height>
			<description>Latest news from oscada.org</description>
		</image>
		<generator>TYPO3 - get.content.right</generator>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		
		
		
		<lastBuildDate>Mon, 07 May 2012 15:00:00 +0300</lastBuildDate>
		
		
		<item>
			<title>Первый промышленный релиз OpenSCADA 0.7.0 LTS (обновление 8, завершающее)</title>
			<link>http://oscada.org/ru/glavnaja/relizy/odinochnaja-stranica/article/first-production-release-of-openscada-070</link>
			<description>Первая промышленная версия предназначена для повсеместной интеграции в решения автоматизации для...</description>
			<content:encoded><![CDATA[<p class="indent10">&nbsp;</p><div style="text-align: center; "><h1 style="margin: 0px; padding: 2px 0px 7px; font-family: Verdana; font-size: 23px; line-height: 25px; color: rgb(51, 51, 51); ">OpenSCADA 0.7.0 LTS</h1></div><h2 style="margin: 20px 0px 5px; padding: 0px; font-family: Verdana; font-size: 20px; border-bottom: 3px dotted rgb(221, 221, 221); ">Изменения</h2><ul><li>24.10.2010 - Промышленный релиз 0.7.0.</li><li>19.12.2010 - Первое плановое&nbsp;обновление промышленного релиза. Исправлено порядка 30 ошибок.</li><li>01.03.2011 - Второе плановое&nbsp;обновление промышленного релиза. Исправлено более 30 ошибок.</li><li>09.05.2011 - Третье плановое&nbsp;обновление промышленного релиза. Исправлено более 30 ошибок.</li><li>09.07.2011 - Четвёртое плановое&nbsp;обновление промышленного релиза. Исправлено более 15 ошибок и добавлены некоторые улучшения.</li><li>12.10.2011 - Пятое плановое&nbsp;обновление промышленного релиза. Исправлено более 50 ошибок и добавлены некоторые улучшения.</li></ul><h2 style="margin: 20px 0px 5px; padding: 0px; font-family: Verdana; font-size: 20px; border-bottom: 3px dotted rgb(221, 221, 221); ">Введение</h2>
<p id="p14126-3" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Релиз открытой SCADA(Supervisory control and data acquisition) системы версии 0.7.0 является первым стабильным промышленным релизом, что связано с завершением стадии бета-тестирования, начатой с версии 0.6.4.</p>
<p id="p14126-3" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Основной целью данного релиза является предоставление сообществу пользователей и разработчиков свободного программного обеспечения (ПО) платформы для построения решений комплексных систем автоматизации и других смежных решений, а также предоставления коммерческих услуг на основе проекта OpenSCADA.</p>
<p id="p14126-3" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Данный релиз является первым стабильным релизом, для которого предоставляется техническая поддержка от разработчиков и для которого планируется выпуск исправлений в течении продолжительного времени.</p>
<p id="p14126-3" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Данный документ является обработкой(компиляцией) документа &quot;ChangeLog&quot; системы OpenSCADA версии 0.7.0, который призван вкратце и наглядно осветить новые возможности системы OpenSCADA. Детально ознакомиться с изменениями в системе OpenSCADA можно в файле &quot;ChangeLog&quot; из дистрибутива системы или здесь:&nbsp;<span style="color: rgb(0, 51, 153); text-decoration: none; "><a href="http://wiki.oscada.org/Works/ChangeLog" target="_blank" class="outerlink" >http://wiki.oscada.org/Works/ChangeLog</a></span>.</p>
<p id="p14126-7" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="auto indent10">Ключевыми особенностями данной версии являются:</p><ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Реализация плановых задач.</li><li style="font-family: Verdana; font-size: 13px; ">Оптимизация, повышение стабильности, устойчивости и производительности системы.</li><li style="font-family: Verdana; font-size: 13px; ">Усовершенствование и стабилизация СВУ.</li><li style="font-family: Verdana; font-size: 13px; ">Формирование и стабилизация API пользовательского программирования.</li><li style="font-family: Verdana; font-size: 13px; ">Общесистемные расширения.</li><li style="font-family: Verdana; font-size: 13px; ">Значительные улучшения и исправления отдельных модулей.</li><li style="font-family: Verdana; font-size: 13px; ">Формирование документации и переводы документации и интерфейса.</li><li style="font-family: Verdana; font-size: 13px; ">Унификация демонстрационной БД.</li></ul><p id="p14126-8" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="auto indent10">&nbsp;</p>
<p id="p14126-8" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="auto indent10">Новые и обновленные модули:</p><ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Archive.FSArch - 1.3.1 -&gt; 1.4.1, исправления и улучшения для повышения производительности</li><li style="font-family: Verdana; font-size: 13px; ">Archive.DBArch - 0.9.0 -&gt; 0.9.2, исправления и некоторые улучшения</li><li style="font-family: Verdana; font-size: 13px; ">DB.DBF - 2.0.1 -&gt; 2.0.2, исправления</li><li style="font-family: Verdana; font-size: 13px; ">DB.MySQL - 1.6.1 -&gt; 1.6.2, некоторые улучшения</li><li style="font-family: Verdana; font-size: 13px; ">DB.SQLite - 1.6.1 -&gt; 1.6.2, улучшения</li><li style="font-family: Verdana; font-size: 13px; ">DB.FireBird - 0.9.1 -&gt; 0.9.5, значительные улучшения</li><li style="font-family: Verdana; font-size: 13px; ">DB.PostgreSQL - 0.9.0, новый модуль</li><li style="font-family: Verdana; font-size: 13px; ">DAQ.DiamondBoards - 1.2.0 -&gt; 1.2.1, адаптация к изменению API</li><li style="font-family: Verdana; font-size: 13px; ">DAQ.System - 1.7.0 -&gt; 1.7.2, очистка кода и адаптация к изменению API</li><li style="font-family: Verdana; font-size: 13px; ">DAQ.BlockCalc - 1.2.1 -&gt; 1.4.0, улучшения и исправления</li><li style="font-family: Verdana; font-size: 13px; ">DAQ.JavaLikeCalc - 1.5.0 -&gt; 1.8.0, значительные улучшения, исправления и оптимизация</li><li style="font-family: Verdana; font-size: 13px; ">DAQ.LogicLev - 1.0.1 -&gt; 1.1.2, улучшения и исправления</li><li style="font-family: Verdana; font-size: 13px; ">DAQ.SNMP - 0.4.0 -&gt; 0.4.1, адаптация к изменению API</li><li style="font-family: Verdana; font-size: 13px; ">DAQ.Siemens - 1.2.1 -&gt; 1.2.3, исправления и адаптация к изменению API</li><li style="font-family: Verdana; font-size: 13px; ">DAQ.ModBus - 1.0.1 -&gt; 1.1.1, исправления и улучшения</li><li style="font-family: Verdana; font-size: 13px; ">DAQ.DCON - 0.3.0 -&gt; 0.3.3, исправления и улучшения</li><li style="font-family: Verdana; font-size: 13px; ">DAQ.ICP_DAS - 0.5.0 -&gt; 0.7.2, значительные улучшения и исправления</li><li style="font-family: Verdana; font-size: 13px; ">DAQ.DAQGate - 0.8.0 -&gt; 0.9.1, значительные улучшения и исправления</li><li style="font-family: Verdana; font-size: 13px; ">DAQ.SoundCard - 0.6.0 -&gt; 0.6.1, адаптация к изменению API</li><li style="font-family: Verdana; font-size: 13px; ">DAQ.OPC_UA - 0.6.0, новый модуль</li><li style="font-family: Verdana; font-size: 13px; ">Transport.Sockets - 1.4.0 -&gt; 1.4.5, улучшения и исправления</li><li style="font-family: Verdana; font-size: 13px; ">Transport.SSL - 0.8.2 -&gt; 0.9.5, улучшения и исправления</li><li style="font-family: Verdana; font-size: 13px; ">Transport.Serial - 0.5.0 -&gt; 0.7.1, значительные улучшения и исправления</li><li style="font-family: Verdana; font-size: 13px; ">Protocol.HTTP - 1.4.1 -&gt; 1.5.0, значительные улучшения</li><li style="font-family: Verdana; font-size: 13px; ">Protocol.SelfSystem - 0.9.1 -&gt; 0.9.3, исправления и адаптация к изменению API</li><li style="font-family: Verdana; font-size: 13px; ">Protocol.UserProtocol - 0.6.0, новый модуль</li><li style="font-family: Verdana; font-size: 13px; ">Protocol.ModBus - 0.5.0 -&gt; 0.6.1, исправления и улучшения</li><li style="font-family: Verdana; font-size: 13px; ">Protocol.OPC_UA - 0.6.0, новый модуль</li><li style="font-family: Verdana; font-size: 13px; ">Special.FLibComplex1 - 1.0.4 -&gt; 1.0.6, исправления и улучшения</li><li style="font-family: Verdana; font-size: 13px; ">Special.FLibMath - 0.5.1 -&gt; 0.5.2, адаптация к изменению API</li><li style="font-family: Verdana; font-size: 13px; ">Special.FLibSYS - 0.9.0 -&gt; 0.9.2, исправления и улучшения</li><li style="font-family: Verdana; font-size: 13px; ">Special.SystemTests - 1.3.7 -&gt; 1.5.0, переработка и унификация тестов</li><li style="font-family: Verdana; font-size: 13px; ">UI.QTStarter - 1.5.3 -&gt; 1.6.0, улучшения</li><li style="font-family: Verdana; font-size: 13px; ">UI.QTCfg - 1.8.1 -&gt; 1.9.0, значительные улучшения и исправления</li><li style="font-family: Verdana; font-size: 13px; ">UI.WebCfg - 1.5.3 -&gt; 1.5.4, исправления и адаптация к изменению API</li><li style="font-family: Verdana; font-size: 13px; ">UI.WebCfgD - 0.6.2 -&gt; 0.6.5, исправления</li><li style="font-family: Verdana; font-size: 13px; ">UI.VCAEngine - 0.9.0 -&gt; 1.0.0, значительные улучшения, исправления и оптимизация</li><li style="font-family: Verdana; font-size: 13px; ">UI.Vision - 0.9.0 -&gt; 1.0.0, значительные улучшения, исправления и оптимизация</li><li style="font-family: Verdana; font-size: 13px; ">UI.WebVision - 0.7.0 -&gt; 0.9.0, значительные улучшения и исправления</li><li style="font-family: Verdana; font-size: 13px; ">UI.WebUser - 0.6.0, новый модуль</li></ul><p class="bodytext"><span style="color: rgb(0, 51, 153); text-decoration: none; "><a name="h1020-3"></a></span></p>
<h2 style="margin: 20px 0px 5px; padding: 0px; font-family: Verdana; font-size: 20px; border-bottom: 3px dotted rgb(221, 221, 221); ">1 Реализация плановых задач</h2>
<p id="p14126-9" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="auto indent10">В соответствии с планом релиза были выполнены следующие задачи:</p><ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; "><em>Реализация примитивов &quot;Связь&quot; и &quot;Функция&quot; СВУ.</em>&nbsp;- Ввиду непринципиальности для промышленного релиза и невостребованности на данный момент эта задача была вынесена за пределы первого промышленного релиза.</li><li style="font-family: Verdana; font-size: 13px; "><em>Стабилизация и выпуск промышленной ветки OpenSCADA.</em>&nbsp;- Проделана большая работа по стабилизации и оптимизации промышленного релиза, о чём подробнее в следующем разделе.</li><li style="font-family: Verdana; font-size: 13px; "><em>Реализация модуля БД ОДБС, PostgresSQL и транспортного модуля БД.</em>&nbsp;- Максимом Лысенко была выполнена реализация модуля БД &quot;PostgresSQL&quot;. Реализация модуля БД &quot;ODBC&quot; была признана нецелесообразной, поскольку технология &quot;ODBC&quot; фактически является интерфейсом SQL-запросов, который не учитывает особенностей SQL-диалектов реальных БД, а значит не может прямо, без оглядки на тип БД, использоваться в OpenSCADA при решении её основных задач. Перспектива использования &quot;ODBC&quot; остаётся для реализации доступа к БД, у которых нет &quot;родного&quot; API прямого доступа к БД, но есть драйвер ODBC, или для предоставления простого интерфейса SQL-запросов в OpenSCADA. Реализация транспортного модуля БД была вынесена за пределы первого промышленного релиза.</li><li style="font-family: Verdana; font-size: 13px; "><em>Реализация нового механизма/модуля тестов системы OpenSCADA.</em>&nbsp;- Для выполнения внутрисистемных тестов OpenSCADA механизм модуля тестирования был реализован в виде функций пользовательского API, что с одной стороны сохранило возможность автономного вызова статичных тестов и с другой стороны предоставило возможность вызова тестов по одному, вручную, а также из пользовательских скриптов в любом порядке и в нужном количестве отдельных задач.</li></ul><p class="bodytext"><span style="color: rgb(0, 51, 153); text-decoration: none; "><a name="h1020-4"></a></span></p>
<h2 style="margin: 20px 0px 5px; padding: 0px; font-family: Verdana; font-size: 20px; border-bottom: 3px dotted rgb(221, 221, 221); ">2 Оптимизация, повышение стабильности, устойчивости и производительности системы.</h2>
<p id="p14126-10" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">В процессе работ над данной версией, а также её практической адаптации, было обнаружено и исправлено в общей сложности около 200 ошибок.</p>
<p id="p14126-10" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Кроме исправления множества ошибок была проделана работа по оптимизации различных компонентов OpenSCADA. Особенно заметной оптимизации по-прежнему подверглась среда визуализации и управления (СВУ) и её визуализаторы.</p>
<p id="p14126-10" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Перечислим наиболее существенные ошибки, исправление которых значительно отразилось на повышении стабильности:</p><ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; "><em>Общесистемные</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Исправлена некорректная установка политики реального времени для потоков. Не был установлен флаг потока PTHREAD_EXPLICIT_SCHED.</li><li style="font-family: Verdana; font-size: 13px; ">Исправлен контроль за двойным захватом ресурса в одном потоке и захват ресурса по таймауту.</li><li style="font-family: Verdana; font-size: 13px; ">Механизм предотвращения многократного запуска исправлен на предмет проверки PID заблокированного процесса по причине удаления системой lock-файлов из директории /tmp.</li><li style="font-family: Verdana; font-size: 13px; ">Отключена упаковка данных структуры классов с помощью #pragma pack(push,1) по причине появления неявной ошибки с зависанием одного из потоков и блокирования остальных в прошивке OpenSCADA для ПЛК LP8x81.</li><li style="font-family: Verdana; font-size: 13px; ">Код инициализации и обновления модулей обновлен для исключения двойной инициализации разделяемых библиотек.</li><li style="font-family: Verdana; font-size: 13px; ">Функция создания задачи исправлена для предотвращения падения при создании автоматически закрываемых задач при быстром закрытии.</li><li style="font-family: Verdana; font-size: 13px; ">Исправлено зависание функции cron() в случае указания пустого расписания.</li></ul></li><li style="font-family: Verdana; font-size: 13px; "><em>Транспорты</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; "><em>Serial, DAQ.DCON, DAQ.ModBus</em>: Транспорт последовательного интерфейса оптимизирован, сделан типовым и исправлен на предмет нескольких ошибок. Клиенты транспорта адаптированы для использования нового механизма.</li><li style="font-family: Verdana; font-size: 13px; "><em>Sockets, SSL</em>: Исправлена возможность неполной записи функцией write(). При записи в сокет эта функция пишет только часть размером в свой буфер (50кБ). Для полной записи больших сообщений добавлен повтор записи.</li><li style="font-family: Verdana; font-size: 13px; "><em>Transport.SSL:</em>&nbsp;Окончательно исправлено ожидание данных ответа сервера путём дожидания обработки данных в функции BIO_read().</li><li style="font-family: Verdana; font-size: 13px; "><em>Transport.Sockets:</em>&nbsp;Исправлена обработка нулевого результата ожидания хвоста сообщений для исключения зависания на запросах в DAQ.System.HDDTemp.</li><li style="font-family: Verdana; font-size: 13px; "><em>Transport.Serial:</em>&nbsp;Исправлено использование флага &quot;CSTOPB&quot; для указания количества стоп-битов.</li></ul></li><li style="font-family: Verdana; font-size: 13px; "><em>Сбор данных</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; "><em>ModBus</em>: Исправлена потеря ресурса во время сбора данных. По этой причине исключена возможность присвоения строки прямо к объекту ресурсной строки.</li><li style="font-family: Verdana; font-size: 13px; "><em>JavaLikeCalc</em>: Исправлено использование функций для параметров контроллеров DAQ из IO функций для первого использования.</li><li style="font-family: Verdana; font-size: 13px; "><em>DAQ, BlockCalc, JavaLikeCalc, LogicLev, Siemens</em>: Исправлено получение ошибочных данных по схеме резервирования в нерезервированных задачах и при отсутствии резервных станций.</li></ul></li><li style="font-family: Verdana; font-size: 13px; "><em>Protocol.HTTP, UI.WebCfg, UI.WebCfgD, UI.WebUser, UI.Vision:</em>&nbsp;Значение HTTP-параметра &quot;Content-Type&quot; исправлено для элемента &quot;Charset&quot;.</li><li style="font-family: Verdana; font-size: 13px; "><em>UI.VCAEngine:</em>&nbsp;Исправлено падение движка визуализации при изменении мутированных атрибутов, которые многократно унаследованы.</li></ul><p id="p14126-13" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="auto indent10">&nbsp;</p>
<p id="p14126-13" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="auto indent10">Оптимизация и повышение производительности:</p><ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; "><em>SYS.XML</em>: Функция преобразования дерева XML в строку оптимизирована по времени.</li><li style="font-family: Verdana; font-size: 13px; "><em>SYS.Archive</em>: Добавлен механизм адаптивной генерации запросов к архивам различного качества в случае общего запроса. Предотвращает продолжительную обработку в случае запроса больших интервалов времени и наличия менее качественных архивов.</li><li style="font-family: Verdana; font-size: 13px; "><em>DAQ, DAQ.DAQGate</em>: Выполнена оптимизация запросов между резервными станциями по размеру запросов и по времени. Запрашиваются только архивные атрибуты параметров DAQ и атрибуты, запланированные к запросу.</li><li style="font-family: Verdana; font-size: 13px; "><em>Archive.FSArch</em>: Добавлено создание информационных файлов упакованных архивов без хранения этих данных в БД. Эта функция позволяет обеспечить быстрое подключение больших архивов к другим станциям.</li><li style="font-family: Verdana; font-size: 13px; "><em>UI.Vision</em>: В примитиве &quot;ElFigure&quot; для отрисовки вместо QImage использован QPixmap, что значительно повысило производительность.</li><li style="font-family: Verdana; font-size: 13px; "><em>UI.Vision</em>: Для построения изображения примитива &quot;Diagram&quot; использован QImage вместо QPicture, что значительно повысило производительность.</li><li style="font-family: Verdana; font-size: 13px; "><em>TFunction, DAQ.JavaLikeCalc</em>: Добавлен вложенный контекст функций с целью повышения производительности внешних вызовов.</li></ul><p id="p14126-14" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="auto indent10">&nbsp;</p>
<p id="p14126-14" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="auto indent10">Оптимизации использования памяти:</p><ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; "><em>SYS</em>: Система переключена на использование традиционного &quot;map&quot; вместо &quot;hash_map&quot; во всех объектах с целью уменьшения потребления памяти.</li><li style="font-family: Verdana; font-size: 13px; "><em>UI.VCAEngine</em>: Объект атрибута &quot;Attr&quot; оторван от объекта &quot;TCntrNode&quot; с целью уменьшения потребления памяти до 25%.</li></ul><p class="bodytext"><span style="color: rgb(0, 51, 153); text-decoration: none; "><a name="h1020-5"></a></span></p>
<h2 style="margin: 20px 0px 5px; padding: 0px; font-family: Verdana; font-size: 20px; border-bottom: 3px dotted rgb(221, 221, 221); ">3 Усовершенствование и стабилизация СВУ.</h2>
<p id="p14126-15" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Заметные изменения были выполнены в рамках среды визуализации и управления (СВУ), а именно в модулях движка СВУ UI.VCAEngine, визуализаторов UI.Vision и UI.WebVision. Внесённые изменения были направленны на стабилизацию, оптимизацию потребления памяти и улучшение пользовательских свойств СВУ.</p>
<p id="p14126-15" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Улучшения СВУ:</p><ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Добавлена полная поддержка вертикального масштабирования диаграмм.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлена поддержка альфа-канала в атрибуты цвета всех примитивов.</li><li style="font-family: Verdana; font-size: 13px; "><em>UI.VCAEngine</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Включено и сделано безопасным наследование описания мутирующих атрибутов.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлены новые функции пользовательского API для сеансов wdgAdd(), wdgDel(), link(), linkSet(). Добавление этих функций позволило реализовать концепцию полностью динамического формирования интерфейса пользователя.</li><li style="font-family: Verdana; font-size: 13px; ">Свойства прав доступа к виджету реализованы атрибутами &quot;owner&quot; и &quot;perm&quot; для повышения гибкости управления.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлен механизм автоматического создания и запуска сеанса при загрузке.</li></ul></li><li style="font-family: Verdana; font-size: 13px; "><em>UI.Vision</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">В инспектор атрибутов добавлена возможность групповой установки одноимённых атрибутов разных виджетов. Установка производится в групповом контейнере свойств инспектора атрибутов, который появляется при выделении одновременно нескольких виджетов.</li><li style="font-family: Verdana; font-size: 13px; ">В примитиве &quot;ElFigure&quot; для отрисовки вместо QImage использован QPixmap, что значительно повысило производительность.</li><li style="font-family: Verdana; font-size: 13px; ">Для построения изображения примитива &quot;Diagram&quot; использован QImage вместо QPicture, что значительно повысило производительность.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлена поддержка свойств пользовательского интерфейса. Добавлено управление и сохранение размера иконок панелей инструментов.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлена возможность копирования значений атрибутов и связей посредством контекстного меню инспекторов атрибутов и связей.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлена функция поиска по элементу &quot;TextEdit&quot;.</li></ul></li><li style="font-family: Verdana; font-size: 13px; "><em>UI.WebVision</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Добавлена поддержка поворота примитива &quot;Text&quot;.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлена генерация основных событий мыши. Для обработки некоторых событий добавлен стек функций обработчиков.</li><li style="font-family: Verdana; font-size: 13px; ">Для пользователя-отправителя адаптирован доступ к его сеансу и управление.</li></ul></li></ul><p class="bodytext"><span style="color: rgb(0, 51, 153); text-decoration: none; "><a name="h1020-6"></a></span></p>
<h2 style="margin: 20px 0px 5px; padding: 0px; font-family: Verdana; font-size: 20px; border-bottom: 3px dotted rgb(221, 221, 221); ">4 Формирование и стабилизация API пользовательского программирования.</h2>
<p id="p14126-17" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">В значительной степени было произведено формирование нового объектного API пользовательского программирования, которое предусматривает интеграцию пользовательских функций в дерево объектов системы OpenSCADA. Кроме этого, был внесен ряд изменений в существующие библиотеки функций пользовательского API.</p>
<p id="p14126-17" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">В частности были осуществлены следующие изменения:</p><ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; "><em>SYS</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; "><em>SYS, Special.FLibSYS</em>: Объект пользовательского API XMLNodeObj перемещён в ядро OpenSCADA (файлы tvariant.h, tvariant.cpp).</li><li style="font-family: Verdana; font-size: 13px; ">Пользовательское системное API OpenSCADA основанное на объекте TCntrNodeObj расширено для контроля прав доступа пользователя.</li><li style="font-family: Verdana; font-size: 13px; ">Объект TAreaObj переименован в TArrayObj.</li><li style="font-family: Verdana; font-size: 13px; ">Свойства объектов, вызовы функций и обработка исключений пользовательского API унифицировано.</li><li style="font-family: Verdana; font-size: 13px; "><em>SYS.TVarObj</em>: Добавлена функция propList() для возможности сканирования атрибутов.</li></ul></li><li style="font-family: Verdana; font-size: 13px; "><em>DAQ.JavaLikeCalc</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Функции пользовательского API добавлены: insert(), replace(), toReal(), toInt(), parse(), parsePath() и path2sep() в объект значения строкового типа.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлена функция isEVal() к базовым типам, для обнаружения EVAL-значений.</li></ul></li><li style="font-family: Verdana; font-size: 13px; "><em>Special.FLibComplex1</em>: Функция ПИД расширена новыми параметрами: Kd, Tzd и followSp. Удалён параметр Tf.</li><li style="font-family: Verdana; font-size: 13px; "><em>Объектное API пользовательского программирования</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; "><em>SYS</em>: Функции пользовательского API: system(), message(), XMLNode(), cntrReq(), time(), localtime(), strftime(), strptime(), cron(), messDebug(), messInfo(), messNote(), messWarning(), messErr(), messCrit(), messAlert(), messEmerg() и strFromCharCode() добавлены в корневой объект ядра OpenSCADA.</li><li style="font-family: Verdana; font-size: 13px; "><em>DB</em>: Функция пользовательского API SQLReq() добавлена в объект БД.</li><li style="font-family: Verdana; font-size: 13px; "><em>Transport</em>: Функция пользовательского API messIO() добавлена для объекта исходящего транспорта.</li><li style="font-family: Verdana; font-size: 13px; "><em>UI.VCAEngine</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Функции пользовательского API: user(), alrmSndPlay() и alrmQuittance() добавлены в объект сеанса проекта.</li><li style="font-family: Verdana; font-size: 13px; ">В объект &quot;Widget&quot; добавлены функции пользовательского API: ownerSess(), ownerPage(), ownerWdg(), attrPresent(), attr(), attrSet(), wdgAdd(), wdgDel(), link() и linkSet().</li><li style="font-family: Verdana; font-size: 13px; ">Добавлен специальный атрибут &quot;this&quot; во все скрипты СВУ для доступа к объекту виджета и последующего вызова его функций пользовательского API.</li></ul></li><li style="font-family: Verdana; font-size: 13px; "><em>Archives</em>: Функция пользовательского API messGet() добавлена для объекта подсистемы &quot;Архивы&quot;.</li><li style="font-family: Verdana; font-size: 13px; "><em>DAQ.Value</em>: Добавлены функции пользовательского API get() и set() для атрибутов.</li></ul></li></ul><p class="bodytext"><span style="color: rgb(0, 51, 153); text-decoration: none; "><a name="h1020-7"></a></span></p>
<h2 style="margin: 20px 0px 5px; padding: 0px; font-family: Verdana; font-size: 20px; border-bottom: 3px dotted rgb(221, 221, 221); ">5 Общесистемные расширения.</h2>
<p id="p14126-19" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">В общесистемное API системы OpenSCADA были внесены значительные изменения и расширения с целью повышения функциональности и общей стабилизации:</p><ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; "><em>SYS</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Добавлен механизм предотвращения повторного запуска в скрипты: demo-start и user-start.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлены глобальные функции для создания (регистрации) taskCreate() и закрытия taskDestroy() потоков. Все компоненты OpenSCADA используют новое API.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлены файлы debian/* для поддержки построения Debian пакетов.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлена функция strParse() для расширения функции strSepParse() на предмет поддержки многосимвольных разделителей и объединения односимвольных.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлена инфраструктура счётчиков отладки.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлена возможность назначения процессоров для потоков OpenSCADA на много-процессорных системах и много-ядерных процессорах.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлен менеджер задач. Добавлено поле идентификатора процесса потока в менеджер задач.</li><li style="font-family: Verdana; font-size: 13px; ">Для реализации специфических функций добавлена обёртка над задачами OpenSCADA. Добавлена обработка исключений &quot;TError&quot; для задач внутри обёртки.</li><li style="font-family: Verdana; font-size: 13px; ">Код ядра системы OpenSCADA помещён в область имён &quot;OSCADA&quot;. Версия библиотеки ядра OpenSCADA повышена до 1:0:0.</li><li style="font-family: Verdana; font-size: 13px; ">Унифицированы права доступа ко всем элементам интерфейса управления.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлена проверка на версию более 2.0 утилиты сборки libtool. Включена сборка только разделяемых библиотек для модулей.</li><li style="font-family: Verdana; font-size: 13px; ">Идентификатор модуля помещён в класс конструктора для упрощения инициализации перевода текстовых сообщений модулей.</li><li style="font-family: Verdana; font-size: 13px; ">Для всех переводов использовано параметры утилиты xgettext &quot;-C --no-location --no-wrap -k_&quot;. Использовано для очистки от мусора файлов переводов.</li><li style="font-family: Verdana; font-size: 13px; ">Версии API всех модульных подсистем установлено в 5.</li></ul></li><li style="font-family: Verdana; font-size: 13px; "><em>SYS.Function, DAQ.BlockCalc, DAQ.LogicLev, UI.VCAEngine</em>: Добавлен механизм контроля за изменениями параметров контроллеров подсистемы &quot;Сбор данных&quot;.</li><li style="font-family: Verdana; font-size: 13px; "><em>DB</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Добавлено автоматическое открытие доступных таблиц по запросу к ним.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлено управление транзакциями в функцию sqlReq(), а также добавлена функция transCloseCheck().</li></ul></li><li style="font-family: Verdana; font-size: 13px; "><em>TFunction, DAQ.JavaLikeCalc</em>: Добавлен вложенный контекст функций с целью повышения производительности внешних вызовов.</li><li style="font-family: Verdana; font-size: 13px; "><em>DAQ</em>: Код ошибки добавлен в статус контроллера, что позволяет идентифицировать состояние и отображать его.</li><li style="font-family: Verdana; font-size: 13px; "><em>Protocol, Transport, DAQ.ModBus, Protocol.UserProtocol</em>: Добавлена функция itemListIn() для выбора элементов протокола. Добавлен выбор элементов протокола посредством функции TProtocol::itemListIn().</li></ul><p class="bodytext"><span style="color: rgb(0, 51, 153); text-decoration: none; "><a name="h1020-8"></a></span></p>
<h2 style="margin: 20px 0px 5px; padding: 0px; font-family: Verdana; font-size: 20px; border-bottom: 3px dotted rgb(221, 221, 221); ">6 Значительные улучшения и исправления отдельных модулей.</h2>
<p id="p14126-20" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">В процессе работы над данным промышленным релизом значительных изменений, улучшений и стабилизации претерпели отдельные модули OpenSCADA:</p><ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; "><em>DB.MySQL</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Добавлена поддержка неограниченных значений типов данных &quot;Вещественное&quot; и &quot;Целое&quot;.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлено преобразование значения EVAL для вещественного типа.</li></ul></li><li style="font-family: Verdana; font-size: 13px; "><em>DB.SQLite</em>: Улучшен механизм транзакций для поддержки внутрипользовательских SQL-запросов и закрытия старых транзакций.</li><li style="font-family: Verdana; font-size: 13px; "><em>DB.FireBird</em>: Добавлена поддержка многоязыковости текстовых переменных. Унифицирована поддержка транзакций.</li><li style="font-family: Verdana; font-size: 13px; "><em>DAQ</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; "><em>DAQGate</em>: Добавлена поддержка возможности запроса отдельных атрибутов. Использовано для запроса архивируемых и часто запрашиваемых атрибутов. Все остальные атрибуты запрашиваются с периодом синхронизации путём полного запроса. Используется для уменьшения нагрузки и времени при обмене DAQGate с удалённой OpenSCADA станцией.</li><li style="font-family: Verdana; font-size: 13px; "><em>ICP_DAS</em>: Добавлен статус DIP-переключателя для ПЛК LP-8781. Функции отправки сообщений по последовательному интерфейсу перемещены в общую функцию serReq() и все запросы используют её.</li><li style="font-family: Verdana; font-size: 13px; "><em>ModBus</em>: Добавлены суффиксы &quot;i2,i4,f,b0&quot; к регистрам (R и RI) для гибкого доступа посредством различных типов данных.</li><li style="font-family: Verdana; font-size: 13px; "><em>JavaLikeCalc</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Добавлена поддержка обзорного цикла для сканирования свойств объекта &quot;for( &lt;i&gt; in &lt;obj&gt; ) &lt;code&gt;;&quot;.</li><li style="font-family: Verdana; font-size: 13px; ">Свойства объектов, вызовы функций и обработка исключений пользовательского API унифицировано.</li></ul></li></ul></li><li style="font-family: Verdana; font-size: 13px; "><em>Transport</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; "><em>Serial</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Добавлена возможность выбора типа управления потоком. Поддерживается аппаратное (CRTSCTS) и программное (IXON IXOFF) управление потоком.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлена поддержка режима модема для всех входных и выходных транспортов.</li></ul></li><li style="font-family: Verdana; font-size: 13px; "><em>SSL</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Добавлена поддержка KeepAlive лимитов. Добавлена поддержка переподключения после потери соединения и для предотвращения потери сообщений.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлено получение адреса отправителя.</li></ul></li><li style="font-family: Verdana; font-size: 13px; "><em>SSL, Sockets</em>: В исходящий транспорт добавлены тайминги для отдельного управления временем соединения и временем ожидания последующих ответов.</li><li style="font-family: Verdana; font-size: 13px; "><em>Protocol.HTTP</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Добавлена функция исходящего протокола.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлена поддержка автоматического входа.</li></ul></li></ul></li><li style="font-family: Verdana; font-size: 13px; "><em>Archive.FSArch</em>: Добавлено создание информационных файлов упакованных архивов без хранения этих данных в БД. Эта функция позволяет обеспечить быстрое подключение больших архивов к другим станциям.</li><li style="font-family: Verdana; font-size: 13px; "><em>UI.QTCfg</em>:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Добавлена подстройка строк для таблиц, после добавления новых строк. Добавлена поддержка копирования содержимого таблицы в буфер обмена.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлена функция поиска по элементу &quot;TextEdit&quot;.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлена возможность копирования списка выбранных узлов.</li></ul></li></ul><p class="bodytext"><span style="color: rgb(0, 51, 153); text-decoration: none; "><a name="h1020-9"></a></span></p>
<h2 style="margin: 20px 0px 5px; padding: 0px; font-family: Verdana; font-size: 20px; border-bottom: 3px dotted rgb(221, 221, 221); ">7 Формирование документации и переводы документации и интерфейса.</h2>
<p id="p14126-21" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="align-justify auto indent10">Поскольку данный релиз позиционируется как промышленный релиз с продолжительным периодом поддержки, то к его выходу было закончено написание на Русском языке, а также перевод на Английский язык всей основной документации. Кроме того, завершён перевод интерфейса программы на Английский, Русский, Украинский и Немецкий языки:</p><ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Добавлен перевод README на Украинский.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлен перевод документа DAQ и обобщающего документа на Английский.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлен документ &quot;Быстрый старт&quot;.</li><li style="font-family: Verdana; font-size: 13px; ">Выполнен перевод документа &quot;Быстрый старт&quot; на Английский язык.</li><li style="font-family: Verdana; font-size: 13px; ">Общий документ &quot;OpenSCADA&quot; на Английском обновлен для включения частей &quot;Быстрый старт&quot; и DAQ.OPC_UA.</li><li style="font-family: Verdana; font-size: 13px; ">Обновлен перевод интерфейса ядра системы на Русский, Украинский и Немецкий языки.</li><li style="font-family: Verdana; font-size: 13px; ">Для всех переводов использовано параметры утилиты xgettext &quot;-C --no-location --no-wrap -k_&quot;. Использовано для очистки от мусора файлов переводов.</li></ul><p class="bodytext"><span style="color: rgb(0, 51, 153); text-decoration: none; "><a name="h1020-10"></a></span></p>
<h2 style="margin: 20px 0px 5px; padding: 0px; font-family: Verdana; font-size: 20px; border-bottom: 3px dotted rgb(221, 221, 221); ">8 Унификация демонстрационной БД.</h2>
<p id="p14126-22" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="align-justify auto indent10">В процессе подготовки промышленного релиза значительное внимание было уделено улучшению демонстрационной БД как яркой демонстрации функций системы OpenSCADA:</p><ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Значительное обновление для поддержки новых возможностей и включения новых улучшений из системы автоматизации шаровых мельниц.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлена поддержка пользовательского вызова демонстрационной БД в полноценном режиме на запись.</li><li style="font-family: Verdana; font-size: 13px; ">Добавлено масштабирование существующих элементов в случае отсутствия строк и колонок для обзорного кадра и сводной таблицы.</li><li style="font-family: Verdana; font-size: 13px; ">Обновлено для включения новых моделей аппаратов технологических процессов и адаптации всех остальных моделей.</li><li style="font-family: Verdana; font-size: 13px; ">Обновлено для:<ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; ">Добавления объектов сигнализации компрессоров: KM201, KM301, KM202 и KM302.</li><li style="font-family: Verdana; font-size: 13px; ">Поддержки ручного ввода переменных с панели управления.</li><li style="font-family: Verdana; font-size: 13px; ">Обновления перевода.</li><li style="font-family: Verdana; font-size: 13px; ">Исправления нескольких ошибок.</li></ul></li><li style="font-family: Verdana; font-size: 13px; ">Скрипт главной страницы проекта переписан для использования новых функций пользовательского API.</li><li style="font-family: Verdana; font-size: 13px; ">Использован новый механизм доступа к элементам пользовательского интерфейса. Предоставлен реальный доступ на чтение для простого пользователя (&quot;user&quot;).</li></ul><p class="bodytext"><span style="color: rgb(0, 51, 153); text-decoration: none; "><a name="h1020-11"></a></span></p>
<h2 style="margin: 20px 0px 5px; padding: 0px; font-family: Verdana; font-size: 20px; border-bottom: 3px dotted rgb(221, 221, 221); ">9 Решения, построенные на основе OpenSCADA</h2>
<p id="p14126-23" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="align-justify auto indent10">На основе проекта OpenSCADA построен фактически весь спектр решений автоматизации, которые ярко демонстрируют возможности, а также являются сигналом готовности системы для широкого промышленного применения.</p>
<p id="p14126-24" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="align-justify auto indent10">В целом, на основе OpenSCADA авторами проекта решались задачи: полного динамического моделирования технологических процессов (ТП), управление ТП на уровне программируемого логического контроллера (ПЛК) и формирование человеко-машинного интерфейса ТП.</p>
<p id="p14126-24" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="align-justify auto indent10">Моделирование ТП представлено решениями: «Библиотека моделей аппаратов технологических процессов», «Динамическая модель реального времени Анастасиевской ГЛКС» и «Динамическая модель парового котла №9 ДМК». Причём решение «Динамическая модель реального времени Анастасиевской ГЛКС» было положено в основу демонстрационной БД проекта и распространяется со всеми дистрибутивами OpenSCADA.</p>
<p id="p14126-24" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="align-justify auto indent10">Сфера управления ТП на уровне программируемого логического контроллера (ПЛК) представлена решениями: «OpenSCADA в программируемом логическом контроллере (ПЛК)» и «Среда исполнения ПЛК LP-8x81 фирмы ICP DAS на основе OpenSCADA».</p>
<p id="p14126-24" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="align-justify auto indent10">Сфера формирование человеко-машинного интерфейса ТП представлена решениями: «Библиотеки графических элементов пользовательских интерфейсов» и «АСУ ТП шаровых мельниц ШБМ 287\410 котлоагрегата БКЗ 160–100 ПТ».</p>
<p id="p14126-24" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="align-justify auto indent10">Нужно также отметить наличие ряда решений, не вошедших в вышеприведенный перечень, и выполненных разработчиками системы для третьих лиц или непосредственно её пользователями.</p>
<h2 style="margin: 20px 0px 5px; padding: 0px; font-family: Verdana; font-size: 20px; border-bottom: 3px dotted rgb(221, 221, 221); ">Заключение</h2>
<p id="p14126-29" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Система OpenSCADA готова для практического использования в сложных промышленных условиях и выполнения широкого спектра задач автоматического управления технологическими процессами.</p>
<p id="p14126-29" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">С целью предоставления качественного сервиса на основе решений OpenSCADA, а также развития в направлении поддержки специализированного оборудования, протоколов и интерфейсов; разработчиками планируется и активно ведётся работа по формированию политики предоставления услуг на коммерческой основе. В число коммерческих услуг будет входить: техническая поддержка, консультации и целевая разработка расширений, интеграция и внедрение решений, а также разработка специализированных решений и продуктов на основе OpenSCADA.</p>
<p id="p14126-29" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Версия 0.7.0 предоставляет решения OpenSCADA только для платформы Linux x86 и x86_64. Для осуществления поддержки других аппаратных и программных платформ, запланированных проектом, работа будет продолжена. Так, к версии 0.8.0 планируется расширить поддержку аппаратных платформ минимум на платформу АРМ, как представителя RISC архитектур.</p>
<p id="p14126-29" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">В появлении первой промышленной версии системы OpenSCADA активное участие приняли:</p><ul style="margin-top: 0px; margin-bottom: 0px; padding-top: 0px; padding-bottom: 0px; "><li style="font-family: Verdana; font-size: 13px; "><span style="color: rgb(0, 51, 153); text-decoration: none; "><a name=".romansavochenko" href="http://wiki.oscada.org/RomanSavochenko?v=1bw8" title="Roman&amp;nbsp;Savochenko">Савоченко Роман</a></span>: Основной объём работ по проектированию, разработке, документированию и тестированию.</li><li style="font-family: Verdana; font-size: 13px; "><span style="color: rgb(0, 51, 153); text-decoration: none; "><a name=".maximlysenko" href="http://wiki.oscada.org/MaximLysenko?v=2iq" title="Maxim&amp;nbsp;Lysenko">Лысенко Максим</a></span>: Разработка примитива &quot;Элементарная фигура&quot; среды визуализации и управления (СВУ), создание модуля поддержки БД PostgreSQL и перевод большей части документации на Английский язык.</li><li style="font-family: Verdana; font-size: 13px; "><span style="color: rgb(0, 51, 153); text-decoration: none; "><a name=".yashinaksenia" href="http://wiki.oscada.org/YashinaKsenia?v=139q" title="Yashina&amp;nbsp;Ksenia">Яшина Ксения</a></span>: Разработка примитива &quot;Элементарная фигура&quot; СВУ.</li><li style="font-family: Verdana; font-size: 13px; "><em>Попкова Ирина</em>: Перевод интерфейса системы OpenSCADA и её модулей на Немецкий язык.</li><li style="font-family: Verdana; font-size: 13px; "><em>Алмаз Каримов</em>: Разработка модуля поддержки протокола DCON и активное тестирование.</li><li style="font-family: Verdana; font-size: 13px; "><span style="color: rgb(0, 51, 153); text-decoration: none; "><a name=".popkovaleksey" href="http://wiki.oscada.org/PopkovAleksey?v=141x" title="Popkov&amp;nbsp;Aleksey">Попков Алексей</a></span>: Активное тестирование и участие.</li><li style="font-family: Verdana; font-size: 13px; ">Многие другие пользователи системы OpenSCADA, посредством всестороннего тестирования.</li></ul>]]></content:encoded>
			<category>Новость</category>
			
			<author>rom_as@oscada.org</author>
			<pubDate>Mon, 07 May 2012 15:00:00 +0300</pubDate>
			
		</item>
		
		<item>
			<title>20-го апреля 2012 года в городе Москва (Россия) состоялась конференция «Открытые технологии в инженерном деле».</title>
			<link>http://oscada.org/ru/khranilishche-novostei/odinochnaja-stranica/article/on-september-27-30th-2011-in-city-kiev-ukraine-the-international-innovation-forum-and-on-october-1/</link>
			<description>На конференции, 20-го апреля, был зачитан доклад о практике свободных SCADA-систем на OpenSCADA, а...</description>
			<content:encoded><![CDATA[<p class="align-justify indent10">На выставке были представлены следующие решения OpenSCADA:</p><ul><li>Динамические модели технологических процессов и систем управления ими: Газо-лифтная компрессорная станция на шесть компрессоров, Многотопливный паровой котлоагрегат БКЗ-160.</li><li>Модель и контроллер (ICP_DAS) САУ шаровой барабанной мельницы помола угля для котлоагрегатов ТЭЦ.</li><li>OpenSCADA на мобильном устройстве: Nokia N800, N900, N950.</li><li>OpenSCADA на промышленных контроллерах: ICP_DAS LP-8781, Tion-Pro270.</li><li>Система &quot;Умный дом&quot; на плате Tion-Pro270.</li></ul><p class="indent10 align-justify"><span id="result_box" lang="en"><span class="hps">Выражаем большую благодарность организаторам Сергею Хотееву</span></span><span id="result_box" class="short_text" lang="en"><span class="hps">, Леониду Штаднелю и всем причастным за конференцию.</span></span></p>]]></content:encoded>
			<category>Новость</category>
			<category>Доклад</category>
			<category>Публикация</category>
			
			<author>rom_as@oscada.org</author>
			<pubDate>Mon, 23 Apr 2012 10:00:00 +0300</pubDate>
			
		</item>
		
		<item>
			<title>Промышленный релиз OpenSCADA 0.8.0 LTS</title>
			<link>http://oscada.org/ru/khranilishche-novostei/odinochnaja-stranica/article/production-release-of-openscada-080-lts/</link>
			<description>Промышленная версия предназначена для повсеместной интеграции в решения автоматизации для платформ...</description>
			<content:encoded><![CDATA[<div style="text-align: center; "><h1>OpenSCADA 0.8.0 LTS</h1></div><h2>Изменения</h2><ul><li>06.04.2012 - Промышленный релиз 0.8.0.</li></ul><h2>Введение</h2>
<p id="p41321-3" class="align-justify auto indent10"> Релиз открытой SCADA(Supervisory control and data acquisition) системы  версии 0.8.0 является стабильным промышленным релизом продолжительной  поддержки (LTS).</p>
<p id="p41321-4" class="align-justify auto indent10"> Основной целью данного релиза является предоставление сообществу  пользователей и разработчиков свободного программного обеспечения (ПО)  стабильной платформы для построения решений комплексных систем  автоматизации и других смежных решений, а также предоставления  коммерческих услуг на основе проекта OpenSCADA.</p>
<p id="p41321-5" class="align-justify auto indent10"> Данный релиз является следующим стабильным релизом, для которого  предоставляется техническая поддержка от разработчиков и для которого  планируется выпуск исправлений в течение продолжительного времени.  Жизненный цикл предыдущего стабильного релиза 0.7.0 продолжительной  поддержки (LTS) будет прекращён в течении месяца после выпуска 0.8.0  последним обновлением.</p>
<p id="p41321-6" class="align-justify auto indent10"> Данный документ является обработкой(компиляцией) документа &quot;ChangeLog&quot;  системы OpenSCADA версии 0.8.0, включая промежуточные рабочие релизы  0.7.1 и 0.7.2, который призван вкратце и наглядно осветить новые  возможности системы OpenSCADA. Детально ознакомиться с изменениями можно  в файле &quot;ChangeLog&quot; из дистрибутива системы или здесь: <a href="http://wiki.oscada.org/Works/ChangeLog" target="_blank" class="outerlink" >http://wiki.oscada.org/Works/ChangeLog</a>.</p>
<p id="p41321-7" class="auto indent10"> Ключевыми особенностями данной версии являются:</p><ul><li> Реализация плановых задач. </li><li> Оптимизация, повышение стабильности, устойчивости и производительности системы. </li><li> Усовершенствование и стабилизация графической подсистемы. </li><li> Формирование, расширение и стабилизация API пользовательского программирования. </li><li> Общесистемные расширения. </li><li> Публикация решений OpenSCADA.</li></ul><p id="p41321-8" class="auto indent10"> Новые и обновленные модули:</p><ul><li> <em>Archive.DBArch (0.9.5)</em> — Добавлены лимиты запроса данных по времени запроса и ещё некоторые расширения. </li><li> <em>Archive.FSArch (1.5.1)</em> — Значительная стабилизация. Множество расширений, в том числе: <ul><li> Повышение производительности чтения индексов файлов архивов значений. </li><li> Адаптация хранения и чтения вещественного к ARM FPA. </li><li> Добавлены лимиты запроса данных по времени запроса. </li><li> Добавлен лимит на общий размер файлов архиватора значений.  </li></ul></li><li> <em>DB.MySQL (1.7.1)</em> — Стабилизация. Добавлена возможность указания таймаутов подключения. </li><li> <em>DB.SQLite (1.6.4)</em> — Стабилизация. </li><li> <em>DB.FireBird (0.9.7)</em> — Стабилизация. </li><li> <em>DB.PostgreSQL (0.9.2)</em> — Стабилизация. </li><li> <em>DAQ.DiamondBoards (1.2.5)</em> — Добавлена возможность смены типа параметра. Стабилизация. </li><li> <em>DAQ.System (1.7.5)</em> — Стабилизация. Зависимость от библиотеки &quot;Libsensors&quot; сделана опциональной. Добавлено планирование вызовов по CRON. </li><li> <em>DAQ.BlockCalc (1.6.0)</em> — Стабилизация. Множество расширений, в том числе: <ul><li> Добавлена подсветка синтаксиса. </li><li> Добавлено планирование вызовов по CRON. </li><li> Добавлен запускающий и останавливающий вызов блоков. </li><li> Добавлена поддержка объектного типа параметров. </li></ul></li><li> <em>DAQ.JavaLikeCalc (2.0.0)</em> — Значительная стабилизация. Множество расширений, в том числе: <ul><li> Добавлена подсветка синтаксиса. </li><li> Выполнена адаптация к аппаратной архитектуре ARM. </li><li> Добавлена реализация регулярных выражений и ряда расширений API пользователя. </li><li> Добавлена возможность записи символов строки с помощью восьмеричного &quot;\041&quot; и шестнадцатеричного &quot;\x21&quot; числа. </li><li> Добавлен прямой, динамический вызов библиотечных функций. </li><li> Добавлено прямое объединение строковых констант. </li><li> Добавлен условный вызов аргументов выражения (второго аргумента) с логическими операциями ||(OR) и &amp;&amp;(AND). </li><li> Добавлена поддержка объектного типа параметров источника данных. </li></ul></li><li> <em>DAQ.LogicLev (1.3.0)</em> — Стабилизация. Множество расширений, в том числе: <ul><li> Добавлена возможность смены типа параметра. </li><li> Добавлено планирование вызовов по CRON. </li><li> Добавлена поддержка объектного типа параметров. </li></ul></li><li> <em>DAQ.SNMP (0.7.0)</em> — Значительная стабилизация. Множество расширений, в том числе: <ul><li> Реализация полной поддержки клиентской части протокола. </li><li> Добавлена поддержка всех типов значений. </li><li> Добавлена поддержка записи значений. </li><li> Улучшена обработка ошибок. </li><li> Добавлены дополнительные параметры конфигурации подключения. </li><li> Добавлена возможность прямого запроса скаляров. </li></ul></li><li> <em>DAQ.Siemens (1.4.0)</em> — Значительная стабилизация. Множество расширений, в том числе: <ul><li> Версия библиотеки LibnoDave обновлена до 0.8.4.6. </li><li> Добавлено планирование вызовов по CRON. </li><li> Добавлена функция переподключения для &quot;Industrial Ethernet&quot; соединений. </li><li> Добавлен вариант протокола ISO_TCP для S7-200. </li><li> Добавлена поддержка объектного типа параметров. </li><li> Добавлена реализация протокола &quot;ADS&quot;.  </li><li> Несколько унифицированы ошибки подключения. </li><li> Добавлена возможность установки номера БД и смещения в шестнадцатеричном виде. </li></ul></li><li> <em>DAQ.ModBus (1.3.0)</em> — Значительная стабилизация. Множество расширений, в том числе: <ul><li> Добавлена подсветка синтаксиса списка атрибутов.  </li><li> Добавлена поддержка типа параметра &quot;Логический&quot; для работы по  шаблону параметра, а также функции пользовательского API для отправки  произвольных нестандартных ModBus-запросов из шаблонов. </li><li> Добавлена и использована функция формирования сообщений о нарушениях в контроллере. </li><li> Добавлена поддержка функций групповой записи (0x0F, 0x10). </li><li> Добавлен параметр установки ограничения размера блока групповых запросов. </li><li> Добавлена поддержка объектного типа параметров. </li><li> Размер максимального блока запроса сделан опциональным. </li><li> Добавлена возможность комментирования элементов списка атрибутов стандартного типа параметра посредством символа '#' в начале.  </li></ul></li><li> <em>DAQ.DCON (0.5.1)</em> — Модуль полностью переписан на предмет поддержки смешанных модулей посредством выбора команд запроса. Стабилизация. </li><li> <em>DAQ.ICP_DAS (0.8.0)</em> — Добавлена библиотека API &quot;ICP  DAS&quot; libi8k.a для архитектуры ARM и включена возможность сборки модуля  для ARM. Сборка по умолчанию отключена для предотвращения попыток сборки  на неподходящем ARM окружении. Стабилизация. </li><li> <em>DAQ.DAQGate (0.9.5)</em> — Добавлен кеш параметров для их инициализации при автономной работе. Добавлено планирование вызовов по CRON. Стабилизация. </li><li> <em>DAQ.SoundCard (0.6.2)</em> — Стабилизация. </li><li> <em>DAQ.OPC_UA (0.6.2)</em> — Стабилизация. Добавлена подсветка синтаксиса списка атрибутов. Адаптация хранения и чтения вещественного к ARM FPA. </li><li> <em>DAQ.BFN (0.5.1)</em> — Новый модуль. </li><li> <em>Protocol.ModBus (0.6.4)</em> — Стабилизация. Некоторые улучшения. </li><li> <em>Protocol.OPC_UA (0.6.2)</em> — Стабилизация. </li><li> <em>Transport.Sockets (1.5.1)</em> — Значительная стабилизация. Добавлен таймаут повтора запроса исходящего транспорта. </li><li> <em>Transport.SSL (1.0.1)</em> — Стабилизация. Некоторые улучшения. </li><li> <em>Transport.Serial (0.8.0)</em> — Стабилизация. При  инициализации порта использованы предыдущие настройки и реализована  возможность опускать указание некоторых настроек. Добавлено управление  потоком с помощью сигнала RTS для простых преобразователей сигналов  RS232-&gt;RS485. </li><li> <em>Protocol.HTTP (1.6.0)</em> — Стабилизация. Множество расширений, в том числе: <ul><li> Добавлена поддержка переменной HTTP &quot;Transfer-Encoding=chunked&quot; в исходящем транспорте. </li><li> Добавлена поддержка пользовательских шаблонов для внутреннего содержимого модуля. </li><li> Добавлена генерация сообщений аутентификации пользователей. </li><li> Добавлена поддержка всех основных вариантов завершения строки при разборе HTTP-запроса. </li></ul></li><li> <em>Protocol.SelfSystem (0.9.5)</em> — Стабилизация. </li><li> <em>Protocol.UserProtocol (0.6.2)</em> — Добавлена подсветка синтаксиса. Стабилизация. </li><li> <em>Special.FLibComplex1 (1.1.0)</em> — Добавлен прямой, динамический вызов библиотечных функций. </li><li> <em>Special.FLibMath (0.6.0)</em> — Добавлен прямой, динамический вызов библиотечных функций. </li><li> <em>Special.FLibSYS (1.0.0)</em> — Добавлен прямой, динамический вызов библиотечных функций. </li><li> <em>Special.SystemTests (1.5.1)</em> — Небольшие улучшения. </li><li> <em>UI.QTStarter (1.7.0)</em> — Стабилизация. Значительные расширения и улучшения. </li><li> <em>UI.QTCfg (2.1.1)</em> — Стабилизация. Значительные расширения и улучшения. </li><li> <em>UI.WebCfg (1.5.6)</em> — Стабилизация. </li><li> <em>UI.WebCfgD (0.8.1)</em> — Стабилизация. Значительные расширения и улучшения. </li><li> <em>UI.VCAEngine (1.3.0)</em> — Стабилизация. Значительные расширения и улучшения. </li><li> <em>UI.Vision (1.3.0)</em> — Стабилизация. Значительные расширения и улучшения. </li><li> <em>UI.WebVision (1.0.1)</em> — Значительная стабилизация. Значительные расширения и улучшения. </li><li> <em>UI.WebUser (0.6.2)</em> — Стабилизация. Добавлена подсветка синтаксиса процедур.</li></ul><p class="bodytext"> <a name="h1099-3"></a></p>
<h2>1 Реализация плановых задач</h2>
<p id="p41321-9" class="auto indent10"> В соответствии с <a name=".works.roadmap" href="http://wiki.oscada.org/Works/RoadMap?v=10rr" title="Works&amp;nbsp;/&amp;nbsp;Road&amp;nbsp;Map">планом</a> релиза были выполнены следующие задачи:</p><ul><li> <em>Формирование предоставления коммерческих услуг на основе OpenSCADA.</em> — Выстроена концепция и созданы механизмы предоставления коммерческих услуг разработчиками на основе OpenSCADA (<a href="../ru/uslugi" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />http://oscada.org/ru/uslugi</a> ). </li><li> <em>Адаптация системы OpenSCADA для работы на аппаратной платформе ARM.</em>  — Осуществлена сборка, адаптация и полномасштабное тестирование  OpenSCADA на архитектуре ARM; адаптация и тестирование проводились на  интернет планшете фирмы <a href="http://en.wikipedia.org/wiki/Nokia" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />Nokia</a> — <a href="http://en.wikipedia.org/wiki/Nokia_N800" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />N800</a> (<a href="http://wiki.oscada.org/Works/Tests/ARM" target="_blank" class="outerlink" >http://wiki.oscada.org/Works/Tests/ARM</a> ). Выполнена сборка и адаптация OpenSCADA для сложного (очень старого) программного окружения контроллера <a name=".using.lp5xxx" href="http://wiki.oscada.org/Using/LP5xxx?v=19x5" title="Using&amp;nbsp;/&amp;nbsp;LP&amp;nbsp;5&amp;nbsp;xxx">LP-5451</a>, а также сборка для контроллера <a href="http://segnetics.com/main.aspx?Page=412" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />SMH2Gi</a> и смартфонов фирма <a href="http://ru.wikipedia.org/wiki/Nokia" target="_blank" class="outerlink" >Nokia</a>: <a href="http://ru.wikipedia.org/wiki/Nokia_N900" target="_blank" class="outerlink" >N900</a>, N950, <a href="http://ru.wikipedia.org/wiki/Nokia_N9" target="_blank" class="outerlink" >N9</a>. В рамках сборки и адаптации на различные мобильные устройства были выполнены следующие задачи: <ul><li> <em>SYS</em>: <ul><li> Прототипы функций TMess::put(), TMess::get(),  TCntrNode::grpSize(), TCntrNode::grpId(), TCntrNode::grpAt() изменены  для исправления использования беззнакового типа &quot;char&quot; на ARM как  знакового. </li><li> Выполнена адаптация для сборки с GLibC версии меньше 2.5 (2.3.2). </li><li> <em>TVariant, DAQ.{AMRDevs, OPC_UA}</em>: Исправлен невыравненный доступ к данным. </li><li> <em>DAQ.OPC_UA</em>: Добавлены системные функции floatLE(),  floatLErev(), doubleLE(), doubleLErev() для преобразования формата  хранения вещественного числа на различных архитектурах. </li><li> Добавлена адаптация к uClibc. Сборка начинается с версии  0.9.32, которая имеет поддержку функций реального времени вроде  clock_nanosleep(). </li><li> Добавлена проверка и отключение использования &quot;Iconv&quot; и &quot;Intl&quot; (I18N) API. </li><li> Добавлено автоматическое обнаружение и включение параметра конфигурации <em>--enable-CrossCompile</em> для окружения кросс-компиляции. </li><li> Добавлен параметр конфигурации <em>--enable-CoreLibStatic</em> для отключения сборки разделяемой библиотеки ядра OpenSCADA и статической линковки программы вызова-запуска. </li><li> Функция <em>usleep()</em> везде заменена на собственную функцию-обёртку <em>TSYS::sysSleep()</em> по причине отсутствия функции <em>usleep()</em> в uCLibc и доступности её только при специальной конфигурации сборки uClibc. В TSYS::sysSleep() использована nanosleep(). </li><li> Функция pthread_yield() заменена на sched_yield(). </li></ul></li><li> <em>DAQ</em>: <ul><li> <em>JavaLikeCalc</em>: Виртуальная машина переписана для  прямого использования структур команд с целью исключения проблемы  выравнивания, а также для некоторого повышения производительности. </li><li> <em>Siemens</em>: Исправлена проблема библиотеки NoDave на предмет глобального вызова команды упаковки структур &quot;#pragma pack(1)&quot;. </li><li> <em>ICP_DAS</em>: Добавлена библиотека API &quot;ICP DAS&quot; libi8k.a для архитектуры ARM и включена возможность сборки модуля для ARM. </li></ul></li><li> <em>Archive</em>: <ul><li> Прототипы функций TArchiveS::messPut() и TArchiveS::messGet()  изменены для исправления переменной уровня сообщения как знакового  числа. </li><li> <em>FSArch</em>: <ul><li> Исправлено хранение вещественного числа формата LE в архиве на архитектуре ARM.  </li><li> В алгоритме быстрого подсчёта количества битов использовано функцию невыравненного чтения TSYS::getUnalign32().  </li><li> Размер поля кодировки в плоском архиве сообщения расширен с 9 до 99 символов. </li></ul></li></ul></li><li> <em>UI.QTCfg</em>: Добавлено  кратковременное засыпание после закрытия всех окон в функции отключения,  с целью предоставить время окончательно разрушиться объектам всех окон и  предотвратить падение. </li></ul></li><li> <em>Реализация механизма откатов изменений редактирования в Vision.</em>  — В рамках окна визуального редактирования виджетов реализован  многоуровневый механизм отката изменений для всех основных операций:  визуальное изменение геометрии, изменение значения атрибута виджета,  добавление/удаление виджета, копирование виджета и редактирование  виджетов на основе примитива &quot;ElFigure&quot;.</li></ul><p class="bodytext"> <a name="h1099-4"></a></p>
<h2>2 Оптимизация, повышение стабильности, устойчивости и производительности системы</h2>
<p id="p41321-10" class="indent10 auto align-justify"> С момента последнего стабильного релиза в процессе работ над данной  версией, а также её практической адаптации, было обнаружено и исправлено  в общей сложности более 300 ошибок. В целом была проделана работа по  чистке кода от предупреждающих сообщений компилятора, с флагом &quot;-Wall&quot;:</p><ul><li> удаление неиспользованных переменных; </li><li> добавление возврата во всех функциях; </li><li> инициализация переменных с возможностью их использования неопределёнными; </li><li> исключение неполной обработки перечислимых типов в операции выбора; </li><li> сравнение знакового с беззнаковым целым.</li></ul><p id="p41321-11" class="indent10 auto align-justify"> Перечислим наиболее существенные ошибки, исправление которых значительно отразилось на повышении стабильности:</p><ul><li> <em>Общесистемные:</em> <ul><li> Команда сборочной системы &quot;$ make dist&quot; исправлена и адаптирована для корректного создания дистрибутивов OpenSCADA. </li><li> Функция <em>TSYS::cron()</em> для вызова по расписанию неоднократно исправлена. </li><li> Тип переменной для хранения результата функции <em>find()</em> строки везде изменён на корректный &quot;size_t&quot;. </li><li> Исправлены внеплановые вызовы по расписанию, связанные с рассинхронизацией значений функций <em>time()</em> и <em>clock_gettime(CLOCK_REALTIME,&amp;sp_tm)</em>. </li><li> Исправлена проверка и ожидание потоков на доступность при перекрытии с остановкой предыдущего одноимённого потока. </li><li> Отключено ожидание инициализации для отсоединяемых задач с целью предотвращения зависания на ожидании быстро закрываемых задач. </li><li> Исправлена работа функций невыравненного чтения <em>getUnalign*()</em> на ARM. Проблема обнаружена на PXA270. </li><li> <em>Function</em>: Исключена возможность утечки памяти в случае попытки установить объект в необъектный параметр функции. </li><li> <em>DAQ.ModBus, Transport.Serial, UI.{WebCfg, WebCfgD, WebUser, WebVision}</em>:  Исправлено ошибочное использование символа завершения строки '\n' для  множества программных платформ UNIX, MAC, DOS/Windows, путём замены  на&quot;\x0A&quot; . </li><li> <em>ResString</em>: Для чтения-записи строки использован оборот &quot;string(vl.data(), vl.size())&quot;, с целью предотвращения COW алгоритма. </li><li> <em>Function</em>: Исправлена проверка на модификацию при установке значений разных типов IO (Вещественное в Целое). </li></ul></li><li> <em>Базы данных:</em> <ul><li> <em>DB.PostgreSQL</em>: Исправлена обработка адреса БД на предмет определения пустых полей. </li></ul></li><li> <em>Транспорты и протоколы:</em> <ul><li> <em>Transport</em>: <ul><li> Исправлена загрузка всех транспортов из БД в случае наличия записей про транспорт, модуль которого отсутствует. </li><li> Исправлено использование беззнакового типа в возврате функций <em>read()</em> и <em>write()</em>. Добавлены ресурсы к счётчикам входных/выходных запросов. </li><li> Включена возможность прерывания исходящего транспорта сигналом  на ожидании таймаута. Полезно для прерывания транспорта при  выходе/останове. </li><li> <em>Sockets</em>: <ul><li> Исправлен пропуск инициализации размера возвратного значения для функции <em>getsockopt()</em>. </li><li> Исправлено закрытие клиентского соединения по таймауту времени жизни, для подключений при отсутствии данных.  </li><li> Unix-сокет установлен в неблокирующий режим посредством флага  O_NONBLOCK. Исправлено формирование сообщений об ошибках для исходящих  транспортов.  </li></ul></li><li> <em>Serial</em>: Установлен флаг O_NONBLOCK для функции <em>open()</em> последовательного устройства с целью предотвращения блокирования открытия порта на некоторых USB-&gt;RS485 преобразователях.  </li><li> <em>Sockets, SSL</em>: Добавлена очистка входного буфера для предотвращения повторного использования на высоколатентных каналах после таймаута. </li></ul></li><li> <em>Transport, DAQ.{AMRDevs, DCON, ICP_DAS, ModBus, OPC_UA}, Protocol.HTTP</em>: Исправлено использование функции <em>TTransportOut::messIO()</em> при запросе хвоста и получении нулевого ответа. </li><li> <em>Protocol.HTTP, UI.{WebCfg, WebCfgD, WebVision, WebUser}</em>: Исправлен разбор элементов POST-запроса на предмет разбора всех атрибутов каждого элемента. </li></ul></li><li> <em>Сбор данных и архивы:</em> <ul><li> <em>Archive</em>: <ul><li> Исправлено использование буфера мягкой сетки с низким и высоким разрешением времени в архивах значений. </li><li> Исправлено вычисление начала архива в функции <em>begin()</em> при пустом буфере. </li><li> <em>FSArch</em>: <ul><li> Исправлено создание файлов архива сообщений при помещении  множества старых сообщений. Добавлен параметр предотвращения дубликатов. </li><li> Результат функции <em>fgetc()</em> записан в целочисленную переменную вместо символьной, что исправило обнаружение &quot;EOF&quot;. </li><li> Исправлено чтение данных из буфера архива в соответствии с размером буфера в алгоритме быстрого вычисления количества битов. </li><li> Исправлено помещение смещения в кеш из алгоритма быстрого вычисления количества битов. </li><li> Исправлена некорректная обработка конца невыравненных блоков быстрого алгоритма подсчёта количества битов. </li><li> Добавлен монопольный ресурс к вызову функции <em>calcVlOff()</em> с целью предотвращения некорректной работы с кешем. </li></ul></li></ul></li><li> <em>DAQ</em>: <ul><li> <em>System</em>: Исправлено падение при выходе для источника &quot;Hddtemp&quot;. </li><li> <em>ModBus</em>: Режим установки значений атрибутов параметров изменён на активный и улучшена обработка ошибок. </li><li> <em>JavaLikeCalc</em>: <ul><li> Добавлена проверка индекса при доступе к символу строки по индексу с целью предотвращения выхода за диапазон. </li><li> Исправлено падение функции <em>replace()</em> объекта &quot;RegExp&quot;. </li></ul></li><li> <em>Siemens</em>: <ul><li> Исправлено получение и запись значений вещественных типов. </li><li> Исправлено переподключение в случае ошибки. </li><li> Исправлено использование свойства размера целого, вещественного и строкового типов. </li><li> Добавлена очистка связей параметра при его выключении. </li></ul></li></ul></li></ul></li><li> <em>Интерфейсы визуализации:</em> <ul><li> <em>VCAEngine</em>: <ul><li> Исправлено блокирование сеанса для динамически активных проектов при динамическом доступе к собственным атрибутам виджета. </li><li> Предотвращена возможность потери изменений в сервере  визуализации при отображении в визуализаторах путём предварительного  сохранения значения тактового счётчика в сервисном запросе &quot;openList&quot;. </li><li> Ресурсы атрибутов виджетов сделаны более прозрачными  (посредством использования рекурсивного мютекса) и использован один  общий ресурс, для сеансов и другого, с целью предотвращения  перекрёстного блокирования одной задачи другой. </li></ul></li><li> <em>Vision, WebVision</em>: <ul><li> Повышено разрешение координат всех виджетов до трёх знаков  после запятой с целью обеспечения нормального позиционирования на  больших масштабах. </li><li> Исправлен доступ за границу вектора при отрисовке графиков примитива &quot;FormEls&quot;. </li><li> Исправлено обновление изображения примитива &quot;Элементарная фигура&quot; при изменении масштаба. </li><li> Исправлено обновление примитива &quot;Протокол&quot; по времени и размеру. </li></ul></li><li> <em>Vision</em>: <ul><li> Исправлено падение сеанса для проектов с периодом исполнения более 500 мс. </li><li> Реализована доводка координат фигур примитива &quot;Элементарная фигура&quot; к остатку положения виджета. </li><li> Масштабирование текста примитива &quot;Текст&quot; изменено на изменение  размера шрифта вместо масштабирования конечного изображения, что  повысило общее качество отображения шрифта. </li></ul></li><li> <em>WebVision</em>: <ul><li> Удалена проверка попадания точек фигур в область отображения  примитива &quot;Элементарная фигура&quot;. Данная функция переложена на библиотеку  GD. </li><li> Исключена возможность падения для примитивов &quot;Diagram&quot; или  &quot;ElFigure&quot; в случае передачи некорректных значений атрибутов изображения  &quot;xSc&quot; или &quot;ySc&quot; из Web-браузера. </li><li> Исправлено открытие и замена корневой страницы. </li><li> Исправлена обработка масштаба вложенных страниц с учётом масштаба корневой. </li><li> Исправлена очистка хвоста примитива &quot;Протокол&quot;.</li></ul></li></ul></li></ul><p id="p41321-12" class="auto indent10"> Оптимизация и повышение производительности:</p><ul><li> <em>SYS</em>: <ul><li> Механизм ресурса объекта &quot;ResString&quot; заменён с RW-блокировок на  мютекс с целью повысить производительность и сократить потребление  памяти. </li><li> <em>TConfig</em>: Объект элемента конфигурации (TCfg) основан  на TVariant. Доступ к объекту &quot;TCfg&quot; сделан прозрачным, что позволяет  использовать связи без базовых типов. </li><li> Механизм хранения дочерних узлов в карте по ключу &quot;string&quot;  изменён на тип ключа &quot;const char*&quot;. Все узлы адаптированы к  константности идентификатора. </li></ul></li><li> <em>Archive.FSArch</em>: Обработка индексной таблицы  архива значений значительно ускорена посредством использования быстрого  алгоритма вычисления количества битов в 32-разрядном целом. </li><li> <em>UI.WebCfgD</em>: <ul><li> Добавлено изменение размера иконок на стороне сервера с целью снижения трафика. </li><li> Использован групповой запрос содержимого страниц для  значительного повышения производительности на медленных и  высоколатентных каналах. </li></ul></li><li> <em>UI.QTCfg</em>: <ul><li> Использован групповой запрос к интерфейсу управления для  повышения производительности на медленных и высоколатентных соединениях. </li><li> Исключён многократный запрос элементов выборных колонок таблиц. </li></ul></li><li> <em>UI.Vision</em>: Повышена производительность отрисовки заполнений примитива &quot;ElFigure&quot;. </li><li> <em>UI.VCAEngine</em>: <ul><li> Выполнены мероприятия по повышению скорости запуска сеанса проекта в числе: <ul><li> Пропущена инициализация базовых атрибутов ввиду их последующего наследования. </li><li> Удален перевод некоторых сообщений времени исполнения сеанса. </li><li> Реализовано включение только нужных страниц при запуске  сеанса. Остальные страницы исполняющегося сеанса включаются по мере  обращения к ним. Это позволило значительно повысить скорость запуска  сеанса, а также уменьшить зависимость скорости запуска от сложности  проекта визуализации. </li></ul></li><li> Реализация архивного режима примитива &quot;Документ&quot;  изменена на прямую работу с БД, что позволило расширить глубину архива  до 1000000 документов и без ущерба для оперативной памяти.</li></ul></li></ul><p class="bodytext"> <a name="h1099-5"></a></p>
<h2>3 Усовершенствование и стабилизация графической подсистемы</h2>
<p id="p41321-13" class="indent10 auto align-justify"> Заметная работа была выполнена в рамках графической подсистемы, а именно в модулях движка СВУ <em>UI.VCAEngine</em>, визуализаторов <em>UI.Vision</em> и <em>UI.WebVision</em>,  а также конфигураторах. Внесённые изменения были направленны на  стабилизацию, оптимизацию потребления памяти и улучшение  пользовательских свойств.</p>
<p id="p41321-14" class="auto indent10"> Улучшения графической подсистемы:</p><ul><li> <em>Добавлено API подсветки синтаксиса.</em> На основе данного API подсветка синтаксиса добавлена в: <ul><li> <em>DAQ</em>: <ul><li> <em>BlockCalc</em>: Подсветка синтаксиса в описании атрибутов параметров. </li><li> <em>JavaLikeCalc</em>: Подсветка синтаксиса к компилятору языка <em>JavaLikeCalc.JavaScript</em>, а также ко всем текстовым полям, использующим этот язык внутри модуля.  </li><li> <em>ModBus, OPC_UA</em>: Подсветка синтаксиса списка атрибутов. </li></ul></li><li> <em>Protocol.UserProtocol</em>: Подсветка синтаксиса к текстам процедур протокола. </li><li> <em>UI</em>: <ul><li> <em>QTCfg</em>: Отображение многоуровневой подсветки синтаксиса, передаваемой из модели данных в виде правил регулярных выражений. </li><li> <em>VCAEngine</em>: Подсветка синтаксиса к текстовым атрибутам примитивов виджета, для которых это нужно. </li><li> <em>Vision</em>: Подсветка синтаксиса к текстовым атрибутам примитивов виджета, а также текстам программ виджетов. </li><li> <em>WebUser</em>: Подсветка синтаксиса процедур формирования Web-интерфейса. </li></ul></li></ul></li><li> <em>UI.QTStarter</em>: <ul><li> Адаптация для ARM. </li><li> Шрифт сообщение в &quot;сплеше&quot; зафиксирован в размере 10 пикселов для обеспечения единообразного отображения. </li><li> Реализован останов OpenSCADA в случае закрытия последнего окна диалога выбора QT UI-модулей. </li><li> Реализован проброс параметров командной строки QT4 из OpenSCADA (например, <em>--qws</em> и <em>--style</em> в <em>-qws</em> и <em>-style</em>). </li></ul></li><li> <em>UI.QTCfg</em>: <ul><li> Добавлена возможность ручного изменения высоты текстовых и  табличных полей. Изменение осуществляется схватыванием и перетаскиванием  нижнего края поля. </li><li> Адаптация для ARM. </li><li> Групповой запрос &quot;CntrReqs&quot; использован для запроса контекста страницы.  </li><li> Добавлено ограничение на высоту строк таблиц в половину высоты таблицы.  </li><li> Введено ограничение на размер диалога ввода и включено адаптивное определение его размера по содержимому.  </li><li> У элементов доступных для изменения высоты пользователем для  обеспечения работы везде установлен фиксированный стиль &quot;StyledPanel&quot;.  </li><li> Добавлена функция полнотекстового редактирования текста ячеек таблиц.  </li><li> Движок воспроизведения правил подсветки синтаксиса полностью переписан для упрощения и предотвращения скрытых ошибок. </li></ul></li><li> <em>UI.{VCAEngine, Vision, WebVision}</em>: <ul><li> Исправлено обращение за границы массива (вектора) при построении трендов примитива &quot;Диаграмма&quot;. </li><li> Добавлено и реализовано свойство ширины графика примитива &quot;Диаграмма&quot;. </li><li> Добавлена периодическая проверка дерева виджетов страницы с  целью обнаружения факта удаления виджетов путём запроса полного перечня  виджетов. </li><li> Реализовано отображение графиков группы графиков примитива  &quot;Диаграмма&quot; в шкале значения в случае отличия шкал всех графиков не  более чем на 20%.  </li><li> Добавлена и реализована возможность выбора режима  подтверждения для элементов редактирования строки и текста примитива  &quot;Элементы формы&quot;. </li><li> Исправлена возможность потери некоторых изменений в модели при отображении их в визуализаторах. </li><li> Добавлено и реализовано свойство количества значений на пиксел  в графиках примитива &quot;Диаграмма&quot; с целью управления детализацией  экспорта в CSV и т.д. </li><li> Реализована логарифмическая шкала значений для графиков примитива &quot;Диаграмма&quot;. </li><li> Добавлено и реализовано свойство сохранения соотношения сторон  главной страницы при разворачивании главного окна исполнения сеанса  проекта. </li><li> Добавлен новый тип &quot;Полное Видео&quot; в примитиве &quot;Медиа&quot;. Для реализации в <em>UI.Vision</em> использован медиа-движок &quot;Phonon&quot;. </li><li> Добавлено поле свойств архива &quot;prm{X}prop&quot; в примитиве  &quot;Диаграмма&quot;, которое заполняется значением доступной глубины и  периодичности архива. </li></ul></li><li> <em>UI.VCAEngine</em>: <ul><li> Добавлены специфические свойства к атрибутам примитивов вроде помощи и подсветки синтаксиса. </li><li> Реализовано включение страниц сеанса проекта по надобности с  целью повышения скорости запуска и оптимизации использования оперативной  памяти.  </li><li> Примитив &quot;Документ&quot; переделан для ведения архивов, архивного  режима полностью в БД, а также добавлена функция пользовательского API  для доступа к элементам архива. </li><li> Добавлена периодическая (30 минут) проверка и закрытие уже неиспользованных (потерянных) сеансов проектов. </li><li> Удалён предыдущий (противоречивый) механизм отката удаления  вложенных виджетов и заменён полноценным механизмом откатов в  визуализаторе <em>UI.Vision</em>.  </li><li> Выполнена оптимизация использования памяти элементами сеанса до 20%.  </li><li> Удалена поддержка первой, устаревшей, версии структуры БД среды визуализации.  </li><li> Добавлено ограничение на время генерации документов в примитиве &quot;Документ&quot; в 5 секунд.  </li><li> Добавлена поддержка типа атрибутов &quot;Объект&quot; и &quot;Текст&quot;. </li><li> Отключена принудительная инициализация новых пользовательских атрибутов в EVAL. </li><li> Добавлена контекстная подсказка к атрибутам примитивов виджетов.  </li><li> Примитив &quot;Документ&quot; переключен в режим полного разбора XML с целью полноценного сохранения разметки XHTML. </li><li> Добавлена индикация состояния корректности ссылок в виде &quot;(+)&quot; в конце. </li><li> Добавлено перенаправление необработанных событий к странице  выше. Это позволяет глобально обрабатывать события на самой верхней  странице. </li><li> Добавлена возможность установки связи между виджетами типа &quot;wdg:&quot; как в виде абсолютной, так и относительной формы. </li><li> Добавлена поддержка типа связи &quot;arh:&quot;. </li><li> Добавлена поддержка объектного типа параметров источника данных. </li></ul></li><li> <em>UI.Vision</em>: <ul><li> Добавлено отображение помощи по атрибутам виджета. </li><li> Адаптация для ARM. </li><li> Добавлена индикация сообщения о потере соединения с сервером визуализации, а также восстановление при удалённой визуализации. </li><li> Добавлен отдельный полнотекстовый редактор для текстовых атрибутов. </li><li> Добавлена реализация полноценных откатов и повторов изменений при визуальном редактировании виджетов. </li><li> Улучшения в отзывчивости и обновлении изменений в сеансе  исполнения проекта: оптимизирована производительность отрисовки  примитива &quot;ElFigure&quot;, обработка изменения уровня виджета &quot;geomZ&quot;. </li><li> Добавлен экспорт в CSV формат из примитивов &quot;Диаграмма&quot; и &quot;Документ&quot;. </li><li> Введено ограничение на размер диалогов ввода и включено адаптивное определение их размеров по содержимому. </li><li> Полностью переписан механизм исполнения правил подсветки синтаксиса.  </li><li> Добавлено создание нового сеанса после восстановления удалённого подключения и отсутствии предыдущего сеанса. </li><li> Фон окна редактируемого виджета установлен в шаблон QT::Dense7Pattern с целью устранения возможного перекрытия по цвету. </li><li> Добавлена обработка событий выбора виджета при нажатии в области скролинга, но за пределами виджета. </li><li> Примитив &quot;Элементарная фигура&quot;: <ul><li> Добавлен диалог установки свойств отдельно выбранных фигур.  </li><li> Выполнена реорганизация операций из диалога свойств и контекстного меню с динамическими и статическими свойствами. </li><li> В процессе добавления фигуры реализована её отрисовка при перемещении курсора мыши. </li></ul></li></ul></li><li> <em>UI.WebVision</em>: <ul><li> Добавлена поддержка gif и jpg изображений в элементах примитива &quot;Элементарная фигура&quot;. </li><li> Исправлена обработка масштаба вложенных кадров, а также пересмотрен механизм формирования-включения скрола.  </li><li> Добавлена функция преобразования изображений на стороне  сервера. Функцию преобразования использовано для изменения размера и  обесцвечивания изображений неактивных кнопок. </li><li> Реализовано открытие малых окон вложенных страниц в виде  DIV-блоков, что решает проблему блокировки и продолжительного открытия  внешних окон многими браузерами. </li><li> Главная страница интерфейса отцентрована в окне браузера.  </li></ul></li><li> <em>UI.WebCfgD</em>:  <ul><li> Уменьшена яркость обесцвеченных-пассивных кнопок. </li><li> Все окна диалогов реализованы в виде DIV-блоков с целью  исключить проблемы и задержки в открытии внешних окон различными  браузерами. </li><li> Использован групповой запрос содержимого страниц для  значительного повышения производительности на медленных и  высоколатентных каналах. </li><li> Добавлена информация в строке статуса о текущем пользователе и возможность его смены. </li><li> Выполнена адаптация для работы в полную ширину экрана.</li></ul></li></ul><p class="bodytext"> <a name="h1099-6"></a></p>
<h2>4 Формирование, расширение и стабилизация API пользовательского программирования</h2>
<p id="p41321-15" class="indent10 auto align-justify"> Было продолжено формирование объектного API пользовательского  программирования, которое предусматривает интеграцию пользовательских  функций в дерево объектов системы OpenSCADA. Кроме этого был внесен ряд  изменений в существующие библиотеки функций пользовательского API.</p>
<p id="p41321-16" class="auto indent10"> В частности были осуществлены следующие изменения:</p><ul><li> <em>SYS</em>: <ul><li> Пользовательское API для объекта TArrayObj расширено на предмет  возможности использования объектных свойств, если свойства - не числа. </li><li> В дерево объектов OpenSCADA пользовательского API добавлена функция <em>SYS.Security.access()</em> для контроля доступа пользователя OpenSCADA к ресурсам с нужными правами. </li><li> Добавлены функции работы с файлами: <em>SYS.fileRead()</em> и <em>SYS.fileWrite()</em>. </li><li> К API объекта &quot;XMLNodeObj&quot; добавлена функция <em>getElementBy()</em> для поиска вложенных узлов по значению атрибута. </li><li> Добавлена функция осуществления кодирования текста между различными символьными кодировками. </li><li> Добавлена функция <em>NodeObj.nodePath()</em>. </li></ul></li><li> <em>SYS, DAQ.JavaLikeCalc</em>: Добавлена реализация  поддержки пользовательского API регулярных выражений, основанной на  &quot;PCRE&quot;, посредством объекта &quot;TRegExp&quot;. Реализован интерфейс функций <em>RegExp.exec()</em> и <em>RegExp.test()</em> в стандарте для языка &quot;JavaScript&quot;. Для DAQ.JavaLikeCalc реализована &quot;<strong>new RegExp()</strong>&quot; инициализация для объекта &quot;TRegExp&quot;. Для DAQ.JavaLikeCalc реализованы дополнительные функции с использованием &quot;RegExp&quot;: <em>int  search(); Array match(); Array split(RegExp pat, int limit); string  replace(string substr, string str); string replace(RegExp pat, string  str)</em>. </li><li> <em>TConfig, TBD, TTransportIn, TTransportOut, TUser, TGroup,  TPrmTmplLib, TPrmTempl, TParamContr, TController, TVArchive,  TVArchivator, TMArchivator</em>: Добавлены функции пользовательского API <em>cfg()</em> и <em>cfgSet()</em> для доступа к конфигурации объектов (хранящейся в БД). </li><li> <em>TFunction, DAQ.JavaLikeCalc</em>: Добавлен объект пользовательского API &quot;TFuncArgObj&quot; для получения аргументов функции. </li><li> <em>DB</em>: Добавлены функции пользовательского API <em>fieldStruct(), fieldSeek(), fieldGet(), fieldSet() и fieldDel()</em> для объекта таблицы, с целью предоставить пользовательский доступ к БД посредством интерфейса БД OpenSCADA. </li><li> <em>DAQ</em>: <ul><li> Добавлена функция <em>TController::alarmSet()</em> для генерации типовых нарушений в объекте контроллера модулей подсистемы &quot;Сбор данных&quot;. </li><li> Добавлена функция <em>SYS.DAQ[&quot;Modul&quot;][&quot;Controller&quot;][&quot;Parameter&quot;][&quot;Attribute&quot;].arch()</em> для прямого обращения к объекту архива, связанного с атрибутом параметра. </li><li> Добавлены функции пользовательского API <em>enable()</em> и <em>start()</em> для прямого контроля за состоянием объекта контроллера. </li><li> <em>JavaLikeCalc</em>: <ul><li> Добавлена встроенная функция <em>typeof()</em> для проверки типа значения. </li><li> Для типа данных &quot;null&quot; добавлена функция <em>isEVal()</em>, которая всегда возвращает &quot;true&quot;. </li><li> К объектам библиотечных функций добавлена функция пользовательского API <em>call()</em>. </li></ul></li><li> <em>ModBus</em>: Добавлена функция пользовательского API <em>messIO()</em>  в объект контроллера &quot;ModBus&quot; с целью предоставления возможности  отправки нестандартных ModBus-запросов прямо из шаблона параметра. </li></ul></li><li> <em>DAQ.JavaLikeCalc, Special.{FLibComplex1, FLibMath, FLibSYS}</em>: Добавлена функция динамического вызова библиотечных функций <em>SYS.DAQ.JavaLikeCalc[&quot;lib_{Lib}&quot;].funcId(prms, ...)</em>. </li><li> <em>Archive</em>: Добавлены функции пользовательского API <em>status()</em>, <em>end()</em> и <em>begin()</em> для доступа к состоянию и свойствам объекта архиватора сообщений. </li><li> <em>UI.VCAEngine</em>: Добавлена функция пользовательского API <em>wdgAt()</em> для простого подключения к виджету как по абсолютному, так и относительному пути.</li></ul><p class="bodytext"> <a name="h1099-7"></a></p>
<h2>5 Общесистемные расширения</h2>
<p id="p41321-17" class="indent10 auto align-justify"> В общесистемное API системы OpenSCADA были внесены значительные  изменения и расширения с целью общей стабилизации и ввиду общих  мероприятий по чистке кода, а также реорганизации дерева исходных  текстов:</p><ul><li> <em>SYS</em>:  <ul><li> Реализована новая структура дерева исходных текстов.  </li><li> Все ресурсы проекта перемещены в отдельный архив.  </li><li> Для создания архивов исходных текстов и ресурсов можно использовать команды &quot;$ make dist-lzma&quot; и &quot;$ make dist-reslzma&quot;.  </li><li> Документация выполнена статичной для модулей и поделена по  языкам. Для каждого языка документации формируется отдельный пакет. В  документации каждого языка создан индексный файл по всему перечню  локальной и сетевой документации. Общий перечень локальной документации  значительно расширен новыми документами, а также вспомогательной сетевой  документацией. </li><li> Добавлены пакеты библиотечных БД &quot;*-LibDB.Main&quot; и &quot;*-LibDB.VCA&quot;, помещены в &quot;data/LibsDB&quot;.  </li><li> Вместо &quot;DemoDB&quot; пакета добавлены пакеты моделей &quot;AGLKS&quot; и &quot;Boiler&quot; помещены в &quot;data/ModelsDB&quot;.  </li><li> Конфигурационные файлы для построения RPM и DEB пакетов обновлены. </li><li> Зависимость на библиотеку PCRECPP глобально заменена на PCRE. </li><li> Добавлена новая функция <em>TSYS::time2str()</em> для преобразования интервалов времени в строку вроде &quot;1час 23мин 10сек&quot;. Эта функция использована везде. </li><li> Добавлена реализация собственного XML-парсера вместо Expat.  Собственный XML-парсер решает проблему поддержки различных кодировок,  отличных от UTF, а также безопасной обработки ситуации наличия  недопустимых для текущей кодировки символов. </li><li> <em>TMess</em>: Общие сообщения интерфейса управления перемещены в одну функцию <em>TMess::lab*</em>. </li><li> Объект хранения строки с ресурсом &quot;ResString&quot; значительно  расширен на предмет прозрачного преобразования из/в тип &quot;std::string&quot;. </li><li> Добавлена возможность сохранения в конфигурационный файл: <ul><li> Добавлен префикс БД &quot;&lt;cfg&gt;&quot; для представления конфигурационного файла в роли источника загрузки/сохранения конфигурации. </li><li> Функции <em>TDBS::dataSeek()</em> и <em>TDBS::dataDel()</em> обновлены для строгой обработки конфигурационного файла. </li><li> Функция <em>chkSelDB()</em> адаптирована для поддержки записи в конфигурационный файл. </li><li> Добавлено сохранение больших и многострочных значений полей  конфигурации в текстовом поле отдельного тега конфигурационного файла. </li></ul></li><li> Тип &quot;long long&quot;, обычно 64-рязрядное целое, заменён везде на более определённый &quot;int64_t&quot; на всех архитектурах. </li><li> Объекты потоков OpenSCADA жёстко слинкованы со своим потоком. Добавлена статистика загрузки и вызовов периодичных потоков. </li><li> Реализована возможность проверки загруженных объектов на их  отсутствие в БД и удаление. Функция проверки активируется только в  случае прямой загрузки из БД. </li><li> Добавлена системная периодическая функция <em>perSYSCall()</em> вызова объектов подсистем и их модулей. Используется для сервисных целей ненагруженных и редких задач модулей и подсистем. </li><li> Функция тестирования выражения по шаблону перемещена в объект &quot;TRegExp&quot;. </li><li> <em>XMLNode</em>: <ul><li> Полностью удалён код использования XML-парсера &quot;Expat&quot;. </li><li> Добавлена возможность загрузки текстовых частей тега в  отдельные специальные теги в полном режиме. Предназначено для полного  сохранения конфигурации тега. </li><li> Добавлена возможность загрузки и сохранения блоков комментариев в отдельные специальные теги, в полном режиме. </li></ul></li><li> Добавлена встроенная функция включения генерации  дампа памяти (снятия ограничения на размер файла) посредством параметра  запуска OpenSCADA <em>--CoreDumpAllow</em>. </li><li> Во все скрипты запуска OpenSCADA добавлена процедура  автоматической обработки файла дампа памяти (формирование файла  разворота стека — backtrace). Файл дампа памяти ожидается в рабочей  директории в виде &quot;core&quot;. </li><li> Добавлена возможность включения (встраивания) модулей в библиотеку ядра OpenSCADA. </li><li> Версия модульного API всех подсистем увеличена до 6. </li><li> <em>TConfig, TValFunc, TVal</em>: Хранение строковых  конфигурационных полей переведено в объект ресурсной строки &quot;ResString&quot;,  а затем возвращено с использованием внутреннего ресурса. </li><li> <em>TVariant</em>: Механизм хранения для строки изменён в  хранение указателя на массив в &quot;union&quot; с адаптивным механизмом выделения  памяти (простая, вплоть до 7 символов хранится статически, а под более  память выделяется динамически). </li><li> Сборочная система была значительно обновлена на предмет: <ul><li> Добавлена проверка и отключение использования &quot;Iconv&quot; и &quot;Intl&quot; (I18N) API. </li><li> Добавлено автоматическое обнаружение и включение параметра конфигурации <em>--enable-CrossCompile</em> для окружения кросс-компиляции. </li><li> Добавлен параметр конфигурации <em>--enable-CoreLibStatic</em> для отключения сборки разделяемой библиотеки ядра OpenSCADA и статической линковки программы вызова-запуска. </li><li> Добавлена сводная таблица конфигурации, в конце. </li><li> Перемещение кода обработки I18N в файл I18N.mk и включение его  непосредственно в Make-файлы, по надобности, на последней стадии  конфигурации. </li><li> Добавлен общий макрос AX_MOD_EN() для унифицированного контроля модулей. </li><li> Добавлена установка включаемых файлов (заголовки). </li><li> Добавлен файл openscada.pc для проверки конфигурации OpenSCADA при построении внешних модулей. </li><li> Глобальная версия исходных файлов OpenSCADA изменена в 0.8.0 и версия библиотеки ядра OpenSCADA изменена в 2.0.0. </li></ul></li><li> Реализация манипуляции объектами через атрибуты параметров: <ul><li> Реализована общая поточная безопасность (threadsafe) для  объектов пользовательского API: &quot;TVarObj&quot;, &quot;TArrayObj&quot; и &quot;XMLNodeObj&quot;.  Добавлено автоматическое удаление объекта в &quot;AutoHD&quot; при возврате  функцией AHDDisConnect() — &quot;true&quot;. </li><li> Добавлена обратная сериализация (разбор XML представления  объекта) для объектов &quot;TVarObj&quot;, &quot;TArrayObj&quot; и &quot;XMLNodeObj&quot;. Включено  для &quot;TVariant&quot;, &quot;TVal&quot;, &quot;TValFunc&quot;, &quot;UI.VCAEngine.Widget&quot;, что позволяет  сохранять и загружать значения типа Объект в БД. </li><li> <em>TVal, DAQ.{BlockCalc,JavaLikeCalc,LogicLev,ModBus,Siemens}, UI.VCAEngine</em>: Добавлена поддержка типа значения &quot;Объект&quot;. Включено для повсеместного использования. </li></ul></li></ul></li><li> <em>DOC</em>: <ul><li> Выполнена проверка и исправление Английских текстов в ядре  OpenSCADA. Обновлены переводы ядра OpenSCADA на Немецкий, Русский и  Украинский языки. </li><li> Выполнена проверка и исправление Английских текстов модулей  OpenSCADA. Обновлены переводы модулей OpenSCADA на Немецкий, Русский и  Украинский языки. </li><li> Обновлены все основные документы на доступных языках:  openscada.pdf, build.pdf, properties.pdf, &quot;OpenSCADA API&quot;, &quot;Про  OpenSCADA&quot;, &quot;Библиотека TechApp&quot;, &quot;Quick Start&quot;, &quot;WLib Основные&quot;, &quot;WLib  Элементы мнемосхем&quot;. </li></ul></li><li> <em>Базы данных библиотек</em>: <ul><li> В библиотеку основных визуальных элементов добавлено: <ul><li> Кадры реализации редактирования и исполнения &quot;Рецептов&quot; — &quot;Пользовательских программ&quot;. </li><li> Диалог выбора и конфигурации параметров для кадра &quot;Группа Графиков&quot;. </li><li> Добавлены некоторые улучшения в кадр &quot;Группа Графиков&quot; для выбора параметров пользователем и другого. </li><li> В кадр &quot;Группа Графиков&quot; добавлен горизонтальный скрол-бар обзора архивов. </li></ul></li><li> К комплекту пакета библиотек добавлено <a name=".using.graphicelementslibraries.electroelements" href="http://wiki.oscada.org/Using/GraphicElementsLibraries/ElectroElements?v=wjs" title="Using&amp;nbsp;/&amp;nbsp;Graphic&amp;nbsp;Elements&amp;nbsp;Libraries&amp;nbsp;/&amp;nbsp;Electro&amp;nbsp;Elements">библиотеку элементов Электрических схем</a>.  </li><li> Кадр главной страницы дополнен механизмом &quot;проигрывания&quot; моделей технологических процессов (ТП). </li><li> Модель <a name=".using.modeldmkk9" href="http://wiki.oscada.org/Using/ModelDMKK9?v=yz3" title="Using&amp;nbsp;/&amp;nbsp;Model&amp;nbsp;DMKK&amp;nbsp;9">промышленного котлоагрегата</a> переведено на Английский и Украинский языки. </li></ul></li><li> <em>DB</em>: Добавлено временное ограничение в 5 секунд и поле указания начального смещения для запроса содержимого больших таблиц. </li><li> <em>Transport</em>: <ul><li> Добавлена функция <em>TTransportS::traf2str()</em> для преобразования значения счётчика трафика в строку вроде &quot;12.5КиБ&quot;. </li><li> Типы форматов исходящих запросов расширены вариантами текста с разным завершением строки: LF, CR, CR/LF. </li></ul></li><li> <em>DAQ</em>: <ul><li> Добавлена возможность выбора типа атрибута шаблона &quot;Объект&quot;. </li><li> <em>DiamondBoards, ModBus, LogicLev</em>: Добавлена возможность смены типа параметра для отключенных параметров многотиповых модулей подсистемы &quot;Сбор данных&quot;. </li><li> <em>LogicLev, ModBus, Siemens</em>: <ul><li> В случае выполнения по расписанию в атрибут &quot;f_frq&quot; записывается время после последнего вычисления в отрицательном значении. </li><li> Добавлены инициализирующие и останавливающие вызовы при включении/выключении параметра. </li><li> Добавлено обновление атрибутов параметра логического типа при изменении типа, флага &quot;ТолькоЧтение&quot; или имени в шаблоне. </li></ul></li></ul></li><li> <em>TArchives</em>: <ul><li> Добавлена возможность использования регулярных выражений при поиске по категории посредством &quot;/match/&quot; </li><li> <em>DBArch, FSArch</em>: Добавлена временная граница при запросе сообщений из архива. </li><li> Адрес ссылки на атрибут параметра упрощён к виду &quot;DAQMod.Cntr.Prm.attr&quot;. Поддержка старых адресов сохранена.</li></ul></li></ul><p class="bodytext"> <a name="h1099-8"></a></p>
<h2>6 Публикация решений OpenSCADA</h2>
<p id="p41321-18" class="indent10 auto align-justify"> В процессе осуществления работ над данным релизом на разных конференциях  и выставках были представлены решения на основе проекта OpenSCADA:</p><ul><li> <a href="http://www.foss-sea.org.ua/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />FOSS Sea 2011</a>  — на конференции был зачитан доклад о решениях на основе OpenSCADA, а в  холе был организован мини-стенд с решениями на основе OpenSCADA вживую. </li><li> <a href="http://www.hi-techexpo.com/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />Международный инновационный форум 2011</a>  — в составе стенда OOO НИП &quot;ДІЯ&quot; и Днепродзержинского Государственного  Университета (ДГТУ) было представлено оборудование и материалы с  решениями на основе OpenSCADA. </li><li> <a href="http://conference.osdn.org.ua/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />10 Всеукраинская Конференция разработчиков и пользователей свободного ПО</a>  — на конференции был зачитан доклад о решениях на основе OpenSCADA, а в  холе был организован мини-стенд с решениями на основе OpenSCADA вживую. </li><li> Дни разработчиков QT <a href="http://qt.nokia.com/qtdevdays2011" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />Qt Developer Days 2011</a>  в Мюнхене и Сан-Франциско: в рамках этих мероприятий в Qt Demo Pavilion  состоялась демонстрация OpenSCADA посредством представления решений <a href="http://wiki.oscada.org/Using/ModelDMKK9" target="_blank" class="outerlink" >Динамическая модель парового котла №9 ДМК</a> на ПК и <a href="http://wiki.oscada.org/Using/ModelAGLKS" target="_blank" class="outerlink" >Динамическая модель реального времени Анастасиевской ГЛКС</a> на Nokia N9.</li></ul><p class="bodytext"> <a name="h1099-9"></a></p>
<h2>Заключение</h2>
<p id="p41321-19" class="indent10 auto align-justify"> В процессе создания нового стабильного релиза 0.8.0 промышленного  назначения с продолжительным сроком поддержки проделана большая работа  по стабилизации, расширению функциональных возможностей, а также  адаптации для работы на альтернативных аппаратных платформах (на  архитектуре ARM). Всё это в целом позволило расширить рамки полноценного  применения OpenSCADA на все уровни систем автоматизации от ПЛК,  серверов SCADA-систем и до распределённых систем визуализации.</p>
<p id="p41321-20" class="auto indent10"> В появлении новой промышленной версии системы OpenSCADA 0.8.0 активное участие приняли:</p><ul><li> <a name=".romansavochenko" href="http://wiki.oscada.org/RomanSavochenko?v=11j8" title="Roman&amp;nbsp;Savochenko">Савоченко Роман</a>: Основной объём работ по разработке, документированию и тестированию. </li><li> <a name=".maximlysenko" href="http://wiki.oscada.org/MaximLysenko?v=2iq" title="Maxim&amp;nbsp;Lysenko">Лысенко Максим</a>:  Сопровождение и стабилизация примитива &quot;Элементарная фигура&quot; среды  визуализации и управления (СВУ), а так-же перевод и обновление большей  части документации на Английский язык. </li><li> <em>Попкова Ирина</em>: Перевод и обновление интерфейса системы OpenSCADA и её модулей на Немецкий язык. </li><li> <em>Алмаз Каримов</em>: Расширение модуля поддержки протокола DCON и активное тестирование. </li><li> <a name=".popkovaleksey" href="http://wiki.oscada.org/PopkovAleksey?v=141x" title="Popkov&amp;nbsp;Aleksey">Попков Алексей</a>: Сборка пакетов для Fedora-based дистрибутивов. </li><li> Многие другие пользователи системы OpenSCADA посредством всестороннего тестирования.</li></ul><p id="p41321-21" class="indent10 auto align-justify"> Последующие усилия разработки будут направлены на реализацию программной  многоплатформенности, а также расширение функциональности путём  создания модулей поддержки новых интерфейсов, в том числе и по схеме  авансированной разработки, с распределением затрат реализации на  проданные экземпляры (для модулей взаимодействующих с коммерческими  системами и интерфейсами). Для реализации централизованного  распространения решений, услуг и расширений на основе OpenSCADA  планируется создание магазина в рамках главного информационного ресурса  OpenSCADA (<a href="../" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">http://oscada.org</a>).</p>]]></content:encoded>
			<category>Новость</category>
			<category>Релиз</category>
			
			<author>rom_as@oscada.org</author>
			<pubDate>Fri, 06 Apr 2012 17:00:00 +0300</pubDate>
			
		</item>
		
		<item>
			<title>OpenSCADA в программируемом логическом контроллере (ПЛК)</title>
			<link>http://oscada.org/ru/khranilishche-novostei/odinochnaja-stranica/article/openscada-into-programmable-logic-controller-plc/</link>
			<description>Имя: ПЛК
Основан: октябрь 2008г
Версия: 1.0.0
Статус: GPL
Участники: Роман Савоченко
Описание:...</description>
			<content:encoded><![CDATA[<p id="p26270-5" class="indent10 auto align-justify"> Современные системы автоматического управления технологическими  процессами (АСУ ТП) являются достаточно сложными. Условно иерархию АСУ  ТП можно разделить на два уровня: нижний и верхний уровень. Нижний  уровень АСУ ТП содержит полевое оборудование (датчики и исполнительные  механизмы), а также программируемые логические контроллеры (ПЛК).  Верхний уровень представляет из себя систему оперативной визуализации и  контроля за технологическим процессом — SCADA-система. ПЛК являются  ответственной частью АСУ ТП, которая выполняет функцию сбора данных  полевого оборудования, вычисление и выдачу регулирующих, блокировочных и  других воздействий на регулирующие органы полевого оборудования.</p>
<p id="p26270-6" class="indent10 auto align-justify"> OpenSCADA является открытой реализацией SCADA-системы, которая основана  на модульной архитектуре, что позволяет строить конечные решения под  различные требования. Целевым назначением OpenSCADA являются системы  верхнего уровня, однако высокая степень модульности, и как следствие  масштабируемости, позволяет решать широкий круг задач смежных областей.</p>
<h2>1. Промышленные программируемые логические контроллеры</h2>
<p id="p26270-7" class="indent10 auto align-justify"> Рынок ПЛК насыщен широким спектром изделий различной архитектуры и  конструкции. Архитектурно ПЛК можно разделить на три условные группы:</p><ul><li> жёстко-программируемые ПЛК и модульные устройства согласования с объектом (УСО); </li><li> высокоинтеллектуальные коммерческие ПЛК; </li><li> PC-совместимые ПЛК.</li></ul><p id="p26270-8" class="indent10 auto align-justify"> Жёстко-программируемые ПЛК обычно строятся на основе одно-кристальных  микроЭВМ или микросхемах программируемой логики. Программа таких  контроллеров или прошивается единоразово, предоставляя возможность  программной параметризации, или же формируется специализированными  средами наделёнными функциями компиляции бинарной прошивки среды  исполнения с пользовательской программой, например <a href="http://www.isagraf.ru/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">ISaGRAF</a> и <a href="http://www.labview.ru/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">LabView</a>. В качестве представителя такого ПЛК можно в пример привести модули распределённого УСО фирмы <a href="http://www.advantech.com/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">Advantech</a>.</p>
<p id="p26270-9" class="indent10 auto align-justify"> Высокоинтеллектуальные коммерческие ПЛК обычно строятся на базе более  мощного оборудования с архитектурой, близкой к полноценному  PC-компьютеру. Основным отличием от стандартного PC-совместимого ПЛК  является закрытая программная, а часто и аппаратная архитектуры.  Программное окружение таких контроллеров обычно основывается на  операционной системе реального времени, планирующей несколько  пользовательских потоков с разделением их по приоритетам.  Пользовательское программирование таких ПЛК осуществляется работой в  фирменном программном окружении, формирующем в качестве результата  бинарный код потока ПЛК. В качестве представителя такого оборудования  можно привести ПЛК серии S7 фирмы <a href="http://www.automation.siemens.com/simatic/controller/html_76/produkte/simatic-s7-400.htm" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">Siemens</a>.</p>
<p id="p26270-10" class="indent10 auto align-justify"> PC-совместимые ПЛК - это группа скорее не ПЛК, прямо совместимых с PC, а  ПЛК, которые не имеют интегрированной среды исполнения и часто  поставляемых без операционной системы. Архитектура таких ПЛК может быть  различной, начиная от экономичных решений архитектуры x86 и заканчивая  архитектурными решениями ARM и MIPS. Среду исполнения таких ПЛК обычно  формируют из ПО того же класса, что и в случае с жёстко программируемыми  ПЛК в виде исполняемого бинарного файла под одну из распространённых,  масштабируемых или специализированных ОС (DOS, QNX, Linux, WinCE,  VxWorks). Часто встречаются и специализированные под задачу решения. В  качестве представителей этого класса можно рассматривать ПЛК формфактора  <a href="http://ru.wikipedia.org/wiki/PC/104" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">PC/104</a>.</p>
<p id="p26270-11" class="indent10 auto align-justify"> Варианты конструктивного исполнения ПЛК можно условно разделить на  моноблочные и модульные. Моноблочные ПЛК предоставляют фиксированную  конфигурацию УСО, специализированную под ограниченный круг задач.  Модульные конструкции предоставляют возможность лёгкого расширения  конфигурации УСО под нужную задачу. Существуют также и гибридные  конструкции, представляющие из себя моноблок, способный расширять своё  УСО за счёт внешних блоков УСО, подключаемых по одному из стандартных  интерфейсов, например, по RS-485.</p>
<h2>2. OpenSCADA как среда исполнения ПЛК</h2>
<p id="p26270-12" class="indent10 auto align-justify"> Архитектура системы OpenSCADA позволяет создавать конечные решения под  различные требования и ресурсы путём модульного расширения. Эта  возможность оказывается полезной в свете ограниченности ресурсов ПЛК.  Кроме того, учитывая постоянное развитие аппаратного обеспечения, а  также непрерывное повышение интеграции и экономичности современных  микропроцессорных решений, OpenSCADA позволяет последовательно расширять  функциональность ПЛК, сохраняя преемственность со старыми решениям.  Например, на основе системы OpenSCADA можно строить решения с  минимальными требованиям на уровне: CPU 100 МГц, память и флешь диск по  30 Мб.</p>
<p id="p26270-13" class="indent10 auto align-justify"> Как было отмечено выше ресурсы современных ПЛК могут колебаться  достаточно в больших пределах, причём ПЛК фиксированного типа,  построенные на однокристальных микроЭВМ, всё дальше вытесняются в  узко-специализированные области развитыми PC-архитектурами. Такая  тенденция делает всё более интересной возможность создания  унифицированной открытой платформы для реализации среды исполнения ПЛК  на основе унифицированных PC-платформ.</p>
<p id="p26270-14" class="indent10 auto align-justify"> OpenSCADA позволяет реализовать идею создания открытой платформы для  реализации среды исполнения ПЛК. Уже сейчас можно реализовывать  окружения ПЛК, немногим уступающее коммерческим интеллектуальным  контроллерам, а во многом и превосходящие их за счёт возможности  интеграции функций, характерных для SCADA систем, в окружение ПЛК,  расширяя функциональные и пользовательские характеристики ПЛК и приводя  его на единую со SCADA кодовую базу, а также оптимизируя стоимость  конечного решения.</p>
<p id="p26270-15" class="auto indent10"> Перечислим функции решаемые OpenSCADA в рамках окружения ПЛК:</p><ul><li> сбор данных различного спектра оборудования в синхронном, асинхронном или блочных режимах; </li><li> пользовательские процедуры обработки данных и выдачи  управляющих воздействий на Java-подобном языке высокого уровня и на  формальном языке блочных схем; </li><li> архивирование данных, начиная от временных буферов в памяти и  заканчивая полноценными архивами на файловой системе или в БД различной  дискретизации и глубины; </li><li> интеграция в инфраструктуру АСУ ТП путём реализации стандартных протоколов взаимодействия (ModBus, SNMP, OPC UA ...); </li><li> интеграция с СУБД для экспорта данных, хранения конфигурации или архивов; </li><li> свободная конфигурация и администрирование сети ПЛК как  посредством оперативного интерфейса станции администрирования, так и  посредством Web-интерфейса; </li><li> возможность реализации панелей оператора с интерфейсом контроля и управления на встроенной Touch-панели; </li><li> предоставление Web-интерфейсов оперативного и диспетчерского контроля.</li></ul><p class="bodytext"><a name="h802-1"></a></p>
<h2>3. Прошивка и создание программного окружения ПЛК архитектуры x86</h2>
<p id="p16396-1" class="indent10 auto align-justify"> Перед реализацией прошивки ПЛК ставились следующие требования:</p><ul><li>  Компактность. В связи с прямой зависимостью цены на промышленные  флеш-диски от их объёма, а также реальным отсутствием необходимости  частого обновления, образ прошивки нужно упаковывать, достигнув уровня  компактности 8-50Мб на среду исполнения ПЛК в окружении полноценной ОС. </li><li> Унифицированный исходный репозиторий. Поскольку прошивка не  является чем-то немодифицируемым, нерасширяемым и окончательно  фиксированным, то в её основе должен лежать реальный развивающийся  репозиторий пакетов ОС. Это позволит продолжительное время формировать  обновления и расширения, не поддерживая при этом опосредованный  репозиторий. </li><li> Отлаженная и простая процедура сборки. Учитывая тот факт, что  конфигурация прошивки может некоторое время стабилизироваться, кроме  того в компонентах ОС и OpenSCADA будут обнаруживаться и устраняться  ошибки, то процедура сборки прошивки не должна быть обременительна, а  напротив - легко адаптируемой. </li><li> Прозрачная реализация режима записи в дереве ОС. Хотя прошивка  и подразумевает создание упакованного немодифицируемого образа  прошивки, однако специфика работы среды исполнения ПЛК подразумевает  модификацию БД и ведение архивов. Кроме того, наличие возможности  коррекции исходной конфигурации является важным требованием. </li><li> Надёжность и устойчивость к внезапным выключениям. Спецификой  эксплуатации ПЛК является, как правило, отсутствие возможности  корректного выключения, а также практическая реальность ситуаций  мгновенного и непредсказуемого пропадания питания. ПЛК в таких ситуациях  должен сохранять работоспособность, в смысле содержать журналлируемую  ФС и обеспечивать её проверку и автоматическое устранение ошибок. </li><li> Условное разделение конфигурации ПЛК на два типа: <ul><li> ПЛК без локального дисплея, возможно с простым текстовым табло. </li><li> Touch-панели c функцией ПЛК.</li></ul></li></ul><p class="bodytext"> <a name="h802-2"></a></p>
<h3>3.1. Инструменты и сборка рабочих окружений</h3>
<p id="p16396-2" class="indent10 auto align-justify"> Учитывая вышеприведенные требования, для создания прошивки был выбран репозиторий пакетов дистрибутива ОС Linux <a href="http://altlinux.ru/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">ALTLinux</a> и инструмент создания дистрибутивов <a href="http://www.altlinux.org/Mkimage" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">mkimage</a>.  mkimage - инструмент для сборки образов Sisyphus-based системы по  шаблону. В качестве исходного набора шаблонов был взят набор шаблонов  формирования дистрибутивов ALTLinux по адресу  <i>git://git.altlinux.org/people/boyarsh/packages/mkimage-profiles-desktop</i>  командой:<br /></p><blockquote style="margin-bottom:0;margin-top:0;"><p id="p16396-2" class="indent10 auto align-justify"> <span style="font-family: Courier;">git clone git://git.altlinux.org/people/boyarsh/packages/mkimage-profiles-desktop</span></p></blockquote><p id="p16396-2" class="indent10 auto align-justify"> За основу формирования PLC шаблона был взят стандартный &quot;rescue&quot;, как наиболее компактный и близкий к целевой задаче ПЛК.</p>
<h4>3.1.1. Результат</h4>
<p id="p16396-20" class="auto indent10"> В результате получаем прошивку размером от 30 до 100Мб, удовлетворяющую фактически всем заявленным требованиям и обеспечивающую:</p><ul><li> Загрузку в течении 27 сек от включения контроллера и включая инициализацию BIOS. </li><li> Проверку и восстановление рабочей файловой системы в файле work. </li><li> Хранение пользовательских данных и изменений прошивки в файле work. </li><li> Автоматическую настройку сети по DHCP (или 192.168.0.1). </li><li> Доступ к контроллеру по SSH и удобный интерфейс работы, включая mc. Пароли по умолчанию (root:123456; admin:123456). </li><li> Синхронизацию времени посредством ntp. </li><li> Исполнение OpenSCADA с доступными сетевыми интерфейсами: <ul><li> конфигурация через Web (порты: 10002 и 10004); </li><li> среда исполнения через Web (порты: 10002 и 10004); </li><li> интерфейс управления OpenSCADA (порт 10005).</li></ul></li></ul><p class="bodytext"> <a name="h802-6"></a></p>
<h4>3.1.2. OpenSCADA</h4>
<p id="p16396-21" class="indent10 auto align-justify"> В качестве среды исполнения ПЛК используем систему OpenSCADA. Для  данного случая возьмём сборку с отдельными пакетами на каждый модуль и  укажем для установки виртуальный пакет openscada-plc, который содержит  зависимости на все пакеты OpenSCADA, обычно используемые для данной  конфигурации. Пакет графической библиотеки gd2 был пересобран без  поддержки формата графического файла xpm и получил название  libgd2-noxpm. Пересборка делалось для того что бы исключить тяжелые  зависимости на библиотеки графического интерфейса XOrg.</p>
<p id="p16396-22" class="auto indent10"> В результате получилась среда исполнения ПЛК с поддержкой:</p><ul><li> БД: <ul><li> SQLite </li></ul></li><li> Архивирование: <ul><li> на файловую систему </li></ul></li><li> Источник данных: <ul><li> вычислитель функциональных блоков </li><li> вычислитель на Java-подобном языке высокого уровня </li><li> контроллеры логического уровня </li><li> различные ПЛК по протоколу ModBus (RTU,ASCII,TCP) </li><li> данные ОС </li></ul></li><li> Транспорт: <ul><li> последовательные интерфейсы; </li><li> TCP, UDP и UNIX сокеты; </li><li> безопасный слой сокетов (SSL). </li></ul></li><li> Транспортные протоколы: <ul><li> HTTP </li><li> собственный протокол контроля OpenSCADA </li></ul></li><li> Пользовательский интерфейс: <ul><li> движок среды визуализации и управления (СВУ) </li><li> визуализатор СВУ на основе Web-технологий </li><li> конфигуратор OpenSCADA на основе Web-технологий</li></ul></li></ul><p id="p16396-23" class="indent10 auto align-justify"> Конфигурация OpenSCADA запускается в режиме демона в локали uk_UA.UTF-8 с  использованием локальной БД SQLite, предоставляя по умолчанию сетевые  сервисы:</p><ul><li> конфигурация через Web (порты: 10002 и 10004); </li><li> среда исполнения через Web (порты: 10002 и 10004); </li><li> интерфейс управления OpenSCADA (порт: 10005).</li></ul><h3>3.2. <a href="http://irobo.com.ua/irobo-3000a-ns103-d425-r1-h120.html" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif">iROBO-3000a</a></h3>
<p id="p16396-32" class="indent10 auto align-justify"> iROBO-3000a представляет из себя безвентиляторный промышленный компьютер  с установленным Intel Atom D425 1.8 GHz с VGA, 2xGb LAN, 4xCOM, 4xUSB,  1GB RAM, 1x2.5&quot; SATA HDD 120GB, Mini-PCIe, 4x4 DIO, CF слот, SIM Card  слот, Audio, WDT, рабочий диапазон температур -5..+55°С.  Производительности данного компьютера достаточно для выполнения как  функций сервера сбора, контроля и управления, так и функций станции  визуализации. Однако, ввиду использования непроизводительного процессора  семейства Atom выполнение математических моделей технологических  процессов потребует всех ресурсов процессора. Например, при исполнении  математической модели <a name=".using.modelaglks" href="http://wiki.oscada.org/Using/ModelAGLKS?v=12ql" title="Using&amp;nbsp;/&amp;nbsp;Model&amp;nbsp;AGLKS">АГЛКС</a>  процессор нагружается на 86%. Контроллер имеет сертификат &quot;УкрСЕПРО&quot;,  что может быть важным для многих пользователей на территории Украины.</p><div style="float:center; text-align:center"><p class="bodytext"><img src="http://wiki.oscada.org/Using/PLC/firmware/files?get=irobo.png" alt="iROBO-3000a (541&amp;nbsp;Кб)" title="iROBO-3000a (541&amp;nbsp;Кб)" height="443" width="800"></p></div><p id="p16396-33" class="indent10 auto align-justify"> Рабочее окружение OpenSCADA для этого компьютера строилось на основе пакетной базы дистрибутива <a href="http://www.altlinux.ru/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">ALTLinux</a> T6, а также свежесобранного окружения рабочего стола <a href="http://www.trinitydesktop.org/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">Trinity</a>  (TDE). Сборка окружения осуществлялась на основе вышеописанной  концепции с помощью обновлённого профиля &quot;mkimage&quot;. В новый профиль  также была добавлена цель &quot;plc&quot;, однако её суть изменилась, фактически  став копией цели &quot;live&quot;, что стало возможным благодаря внедрению на  этапе первичной инициализации прозрачного монтирования раздела с меткой  &quot;alt-live-storage&quot; как отражения упакованной файловой системы с  произвольным доступом на модификацию. В целом это позволило создать  фиксированное ядро прошивки с базовым набором программного окружения  размером 300Мб и возможностью свободного расширения путём доустановки  нужных пакетов из дистрибутива.</p>
<p id="p16396-34" class="indent10 auto align-justify"> В качестве окружения рабочего стола было выбрано Trinity по причине  наличия проблемы фонового артефактинга в связке XOrgServer 1.10 + QT4, а  также малой ресурсоёмкости TDE при высокой развитости и стабильности.</p>
<p id="p16396-35" class="indent10 auto align-justify"> Архив профилей сборки нового окружения получил название <a href="ftp://ftp.oscada.org/OpenSCADA/PLC/mkimage-profiles-6-kdesktop-plc.tgz" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/file.gif" alt="">mkimage-profiles-6-kdesktop-plc.tgz</a>, а последняя сборка прошивки <a href="ftp://ftp.oscada.org/OpenSCADA/PLC/ALTLinux6-OpenSCADA_0.7.2-i586-plcUI_TDE-generic.flash.tar" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">ALTLinux6-OpenSCADA_0.7.2-i586-plcUI_TDE-generic.flash.tar</a>.</p>
<p class="bodytext"><a name="h1086-1"></a></p>
<h2>4. Прошивка и создание программного окружения ПЛК архитектуры ARM</h2>
<p id="p40616-1" class="indent10 auto align-justify"> Широкое распространение во встраиваемых решениях получила архитектура <a href="http://ru.wikipedia.org/wiki/ARM" target="_blank" class="outerlink" >ARM</a>  благодаря её сравнительно высокой производительности в сочетании с  низким энергопотреблением и ценой. С целью выполнения плановой задачи  обеспечения аппаратной многоплатформенности система OpenSCADA была  адаптирована к сборке и работе на оборудовании ARM-архитектуры. Так,  были выполнены проекты <a name=".using.nokialinux" href="http://wiki.oscada.org/Using/NokiaLinux?v=15z7" title="Using&amp;nbsp;/&amp;nbsp;Nokia&amp;nbsp;Linux">Сборка проекта OpenSCADA для мобильных устройств фирмы Nokia (N800, N900, N950)</a> и <a name=".using.lp5xxx" href="http://wiki.oscada.org/Using/LP5xxx?v=19x5" title="Using&amp;nbsp;/&amp;nbsp;LP&amp;nbsp;5&amp;nbsp;xxx">Сборка OpenSCADA и прошивки для ARM-контроллеров фирмы ICP DAS (LP-5141)</a>.  Целью данного раздела является систематизация методик и отслеживание  проблем создания сборок OpenSCADA и прошивок программного окружения в  целом для различного встраиваемого оборудования архитектуры ARM.</p>
<p id="p40616-2" class="indent10 auto align-justify"> Особенностью ARM архитектуры является отсутствие обязательной  аппаратно-зависимой программной системы первичной инициализации и  конфигурации оборудования, характерной для x86 архитектур, — BIOS, а  структура аппаратной конфигурации обычно содержит: центральный процессор  (CPU), встроенную оперативную и флешь-память, а также ряд встроенного  оборудования на стандартных шинах системного уровня. При этом флешь и  оперативная память находятся в общем адресном сегменте. Инициализация  такой системы программным окружением осуществляется загрузкой  исполняемого кода непосредственно на встроенную флешь-память.</p>
<p id="p40616-3" class="indent10 auto align-justify"> Для работы вычислительных функций OpenSCADA да и многих сопутствующих  библиотек и программ важна производительность вычислений с плавающей  точкой. Особенностью процессоров архитектуры ARM является простота ядра  процессора и необязательное наличие расширений вроде математического  сопроцессора. Как следствие производительность на операциях с плавающей  точкой сильно зависит от конкретно взятого процессора, а также способа  эмуляции вычислений с плавающей точкой в случае отсутствия сопроцессора  вообще. На процессорах ARM-архитектуры встречаются два формата работы с  плавающей точкой: FPA и VFP. Формат FPA является устаревшим и встречался  в виде аппаратной реализации с ядрами ARM до семейства <a href="http://ru.wikipedia.org/wiki/StrongARM" target="_blank" class="outerlink" >StrongARM</a>(ARMv4). Ядра ARM семейства <a href="http://ru.wikipedia.org/wiki/XScale" target="_blank" class="outerlink" >XScale</a>(ARMv5TE) вообще не комплектовались математическим сопроцессором. А ядра ARM, начиная с семейства <a href="http://ru.wikipedia.org/wiki/ARM11" target="_blank" class="outerlink" >ARM11</a>(ARMv6)  комплектуются математическим сопроцессором формата VFP. В тоже время  ARM процессора с архитектурой версии ARMv5 до сих пор широко  распространены, а значит вопрос производительности математических  вычислений для них сводится к производительности эмуляции формата FPA  или VFP. В случае с окружением ОС Linux эмуляция FPA обычно  осуществляется ядром Linux путём обработки исключений процессора при  вызове FPA команд. Программная эмуляция в математической библиотеке  обычно встречается с форматом VFP для чего требуется пересборка всех  программ. При этом эмуляция FPA посредством исключений хуже по  производительности программной эмуляции VFP почти на порядок. Сравнить  производительность вычислений с плавающей точкой на разных архитектурах,  процессорах и способах эмуляции можно из таблицы ниже:</p><table rules="all" frame="box" style="border-style: solid; border-color: rgb(0, 0, 0);" class="contenttable"> <thead><tr class="userrow"><th scope="col" class="usercell"><p class="bodytext"> <strong>Оборудование</strong> </p></th><th scope="col" class="usercell"><p class="bodytext"> <strong>Операция sin(Пи) [в JavaLikeCalc], мкс</strong> </p></th><th scope="col" class="usercell"><p class="bodytext"> <strong>Операция pow(Пи,2) [в JavaLikeCalc], мкс</strong> </p></th></tr></thead><tbody> <tr class="userrow"><td class="usercell" colspan="3"><p class="bodytext"> <em>ARM</em> </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> ICP DAS LP-5141 (PXA270, FPA) </p></td><td class="usercell"><p class="bodytext"> 100 [200] </p></td><td class="usercell"><p class="bodytext"> 51 [152] </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> ZAO ZEO TionPro270 (PXA270, SoftVFP, uCLibc-0.9.32.1, -Os) </p></td><td class="usercell"><p class="bodytext"> 22 [51] </p></td><td class="usercell"><p class="bodytext"> 14 [41] </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> ZAO ZEO TionPro270 (PXA270, SoftVFP, GLibC-2.14.1, -O2) </p></td><td class="usercell"><p class="bodytext"> 15 [33] </p></td><td class="usercell"><p class="bodytext"> 12 [31] </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> Segnetics SMH2Gi (ARM926EJ-S, SoftVFP) </p></td><td class="usercell"><p class="bodytext"> 23 [44] </p></td><td class="usercell"><p class="bodytext"> 12 [31] </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> Nokia N800 (400 МГц) </p></td><td class="usercell"><p class="bodytext"> 6 [15] </p></td><td class="usercell"><p class="bodytext"> 6 [17] </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> Nokia N900 (1ГГц), N950 (1ГГц) </p></td><td class="usercell"><p class="bodytext"> 3 [6] </p></td><td class="usercell"><p class="bodytext"> 2 [6] </p></td></tr> <tr class="userrow"><td class="usercell" colspan="3"><p class="bodytext"> <em>x86</em> </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> AMD Geode LX800 (500 МГц) </p></td><td class="usercell"><p class="bodytext"> 3 [7] </p></td><td class="usercell"><p class="bodytext"> 4 [9] </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> AMD Athlon X2 3600+ </p></td><td class="usercell"><p class="bodytext"> 3 [3] </p></td><td class="usercell"><p class="bodytext"> 3 [3] </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> AMD Turion L625 1.6 </p></td><td class="usercell"><p class="bodytext"> 3 [4] </p></td><td class="usercell"><p class="bodytext"> 3 [4] </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> Intel Core2 Duo 1.6 </p></td><td class="usercell"><p class="bodytext"> 2 [2] </p></td><td class="usercell"><p class="bodytext"> 2 [3] </p></td></tr> </tbody></table><p id="p40616-4" class="auto">&nbsp;</p>
<p id="p40616-4" class="indent10 auto align-justify"> Разница во времени вычисления при прямом вызове математической операции и  из виртуальной машины JavaLikeCalc связана с влиянием частоты ядра  процессора (частоты, на которой оно работает) и которым выполняется  часть команды до передачи её математическому сопроцессору.  Производительность математического сопроцессора обычно не связана  непосредственно с производительностью и частотой ядра процессора.</p>
<p id="p40616-5" class="indent10 auto align-justify"> Типовое программное окружение на основе ОС Linux для оборудования на основе ARM представляет из себя: Загрузчик <a href="http://ru.wikipedia.org/wiki/Das_U-Boot" target="_blank" class="outerlink" >UBoot</a>,  Ядро Linux и Корневую Файловую Систему (КФС). Загрузчик UBoot грузится в  нулевой сектор флешь-памяти, а его настройки хранятся в первом. Со  второго сектора загружается код ядра, а сразу после него КФС. КФС обычно  оформляется в виде файловой системы <a href="http://ru.wikipedia.org/wiki/JFFS2" target="_blank" class="outerlink" >JFFS2</a> или <a href="http://en.wikipedia.org/wiki/UBIFS" target="_blank" class="outerlink" >UbiFS</a>,  которые оптимизированы для работы на блочных устройствах — флешь памяти  с ограниченным ресурсом записи. Примеры разбивки блочного устройства  (флешь-памяти) для LP-5141 и TionPro270 представлены ниже:</p><blockquote style="margin-bottom:0;margin-top:0;"><p id="p40616-5" style="font-family: Courier;" class="indent10 auto align-justify"># LP-5141 </p>
<p id="p40616-5" style="font-family: Courier;" class="indent10 auto align-justify">$ cat /proc/mtd </p>
<p id="p40616-5" style="font-family: Courier;" class="indent10 auto align-justify">dev:    size   erasesize  name </p>
<p id="p40616-5" style="font-family: Courier;" class="indent10 auto align-justify">mtd0: 00040000 00020000 &quot;Bootloader&quot; </p>
<p id="p40616-5" style="font-family: Courier;" class="indent10 auto align-justify">mtd1: 00040000 00020000 &quot;Bootloader Param&quot; </p>
<p id="p40616-5" style="font-family: Courier;" class="indent10 auto align-justify">mtd2: 00280000 00080000 &quot;Kernel&quot; </p>
<p id="p40616-5" style="font-family: Courier;" class="indent10 auto align-justify">mtd3: 03c80000 00080000 &quot;JFFS2 Filesystem&quot; </p>
<p id="p40616-5" style="font-family: Courier;" class="indent10 auto align-justify"># TionPro270 </p>
<p id="p40616-5" style="font-family: Courier;" class="indent10 auto align-justify">$ cat /proc/mtd </p>
<p id="p40616-5" style="font-family: Courier;" class="indent10 auto align-justify">dev:    size   erasesize  name </p>
<p id="p40616-5" style="font-family: Courier;" class="indent10 auto align-justify">mtd0: 00080000 00040000 &quot;Bootloader&quot; </p>
<p id="p40616-5" style="font-family: Courier;" class="indent10 auto align-justify">mtd1: 00400000 00040000 &quot;Kernel&quot; </p>
<p id="p40616-5" style="font-family: Courier;" class="indent10 auto align-justify">mtd2: 01b80000 00040000 &quot;Filesystem&quot;</p></blockquote><p id="p40616-6" class="indent10 auto align-justify"> Корневая файловая система содержит типовое UNIX-дерево с рабочими  программами, библиотеками и другими файлами. Основой любой программы или  библиотеки являются системные библиотеки <a href="http://ru.wikipedia.org/wiki/Glibc" target="_blank" class="outerlink" >GLibC</a> или <a href="http://ru.wikipedia.org/wiki/UClibc" target="_blank" class="outerlink" >UClibc</a>.  OpenSCADA адаптирована для сборки и работы с &quot;GLibC&quot; версии &gt;= 2.3.  &quot;UClibC&quot;, созданная как облегчённая версия &quot;GLibC&quot; для встраиваемых  систем, содержит ряд ограничений и до сих пор не реализует или содержит  ошибки в реализации для ряда функций. </p>
<p id="p40616-7" class="indent10 auto align-justify"> КФС и программное окружение на основе Linux может поставляться вместе с  ARM-оборудованием и содержать закрытые бинарные библиотеки, модули ядра  Linux и т.д. В таком случае независимая сборка и замена исходного  программного окружения становится непрактичной поскольку приводит к  потере исходной функциональности. Однако, часто встречается ситуация  поставки оборудования ARM без исходного программного окружения или с  окружением, которое не содержит закрытого кода и которое может быть  заменено. Примером первого случая является контроллер <a href="http://wiki.oscada.org/Using/LP5xxx?v=19x5" title="Using&nbsp;/&nbsp;LP&nbsp;5&nbsp;xxx" target="_blank" >LP-5141</a>  и подобные фирмы &quot;ICP DAS&quot;, которые содержат бинарную сборку библиотеки  API специализированного оборудования (libi8k) и модули ядра Linux для  его инициализации. Примером второго случая является одноплатный  компьютер <a href="http://www.zao-zeo.ru/catalog/sbc/67-tion-pro270" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">Тион-Про270</a>, создание программного окружения и сборки OpenSCADA для архитектуры ARM которого будем рассматривать ниже.</p>
<h3>4.1.  Инструменты сборки ядра Linux и рабочих окружений под разные целевые архитектуры </h3>
<p id="p40616-8" class="indent10 auto align-justify"> Сформировать Linux КФС можно на основе готовых пакетов существующего  бинарного дистрибутива, пакетов исходных текстов существующего  дистрибутива, а также собрать из оригинальных исходных текстов  посредством ToolChain в одной из сборочных систем.</p>
<p id="p40616-9" class="indent10 auto align-justify"> Сборка программ или целой КФС для архитектур, отличных от x86 и x86_64,  обычно осуществляется посредством кросскомпиляции с использованием  утилит (ToolChain) для сборки, линковки и отладки под целевую  архитектуру ARM. Для автоматизации этого процесса создан ряд  инструментов сборки готовых КФС.</p>
<h4>4.1.1.  <a href="http://buildroot.uclibc.org/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif">BuildRoot</a> </h4>
<p id="p40616-10" class="indent10 auto align-justify"> Данная система сборки является частью проекта создания альтернативной библиотеки функций языка &quot;C&quot; <a href="http://ru.wikipedia.org/wiki/UClibc" target="_blank" class="outerlink" >UClibc</a>,  поэтому в основном нацелена на сборку окружений с &quot;UClibc&quot;, с  соответствующими ограничениями. BuildRoot хорошо показал себя в работе  на хостовых системах разных версий и позволяет без особых проблем  собирать программные окружения на основе Linux.</p>
<h4>4.1.2.  <a href="http://www.ptxdist.org/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif">PTXDist</a> </h4>
<p id="p40616-13" class="indent10 auto align-justify"> Универсальный инструмент сборки ядер, ToolChain и программных окружений  на основе Linux фирмы &quot;Pengutronix&quot;. PTXDist является мощным и гибким  инструментом, однако старые его версии имеют проблемы на современных  хостовых системах, что усложняет задачу сборки программных окружений для  сравнительно старых, но всё ещё распространённых, аппаратных платформ.  Например, сейчас (2012 год) можно встретить новое оборудование с  процессорами ARM XScale, ARM9 (ARMv5) времён 2003 года. Однако, новыми  версиями PTXDist неплохо поддерживаются старые платформы, о чём можно  узнать из таблицы поддержки по ссылке: <a href="http://www.pengutronix.de/oselas/toolchain/index_en.html" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">http://www.pengutronix.de/oselas/toolchain/index_en.html</a>.</p>
<h3>4.2.  <a href="http://www.zao-zeo.ru/catalog/sbc/67-tion-pro270" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif">Тион-Про270</a></h3>
<p id="p40616-16" class="indent10 auto align-justify"> Одноплатный компьютер &quot;Тион-Про270&quot; представляет собой  высокоинтегрированную вычислительно-управляющую систему на базе  процессора Marvell PXA270 с ARM ядром семейства XScale от фирмы <a href="http://www.zao-zeo.ru/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">ЗЭО</a>. Данная плата была передана разработчикам проекта OpenSCADA <a href="../ru/soobshchestvo/uchastniki/userInfo/aleksey" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">Алексеем Попковым</a> с целью адаптации OpenSCADA.</p>
<p id="p40616-17" class="indent10 auto align-justify"> Все материалы по сборке программного окружения с OpenSCADA и готовые сборки для платы Тион-Про270 можно получить по ссылке: <a href="ftp://ftp.oscada.org/OpenSCADA/PLC/TionPro270" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">ftp://ftp.oscada.org/OpenSCADA/PLC/TionPro270</a></p><div style="float:center; text-align:center"><p class="bodytext"><img src="http://wiki.oscada.org/Using/PLC/firmwareARM/files?get=tionpro270.png" alt="TionPro270 (344&amp;nbsp;Кб)" title="TionPro270 (344&amp;nbsp;Кб)" height="369" width="640"></p></div><p id="p40616-18" class="indent10 auto align-justify"> Плата поставляется производителем оборудования с предустановленным  программным окружением на основе Linux™ или Windows CE©. Кроме того все  исходные материалы программных окружений доступны на <a href="http://www.zao-zeo.ru/dokuwiki" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">Wiki-ресурсе</a> производителя.</p>
<h3>4.3.  <a href="http://segnetics.com/main.aspx?Page=412" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif">SMH2Gi</a></h3>
<p id="p40616-35" class="indent10 auto align-justify"> Свободнопрограммируемый панельный контроллер &quot;SMH2Gi&quot; представляет собой  высокоинтегрированную вычислительно-управляющую систему на базе  процессора iMx27 с ядром ARM926EJ-S от фирмы <a href="http://segnetics.com/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">Сегнетикс</a>. Адаптация и сборка OpenSCADA для этого контроллера понадобилась в рамках проекта создания <a name=".using.vacuumprocunit" href="http://wiki.oscada.org/Using/VacuumProcUnit?v=7d3" title="Using&amp;nbsp;/&amp;nbsp;Vacuum&amp;nbsp;Proc&amp;nbsp;Unit">автоматизированной системы управления вакуумной технологической установки</a>.</p>
<p id="p40616-36" class="indent10 auto align-justify"> Все материалы по сборке программного окружения с OpenSCADA и готовые  сборки для панельного контроллера можно получить по ссылке: <a href="ftp://ftp.oscada.org/OpenSCADA/PLC/Segnetics-SMH2Gi" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">ftp://ftp.oscada.org/OpenSCADA/PLC/Segnetics-SMH2Gi</a></p><div style="float:center; text-align:center"><p class="bodytext"><img src="http://wiki.oscada.org/Using/PLC/firmwareARM/files?get=smh2gi.png" alt="SMH2Gi (259&amp;nbsp;Кб)" title="SMH2Gi (259&amp;nbsp;Кб)" height="470" width="419"></p></div><p id="p40616-37" class="indent10 auto align-justify"> Панельный контроллер поставляется производителем оборудования с  предустановленным программным окружением на основе Linux™ и собственной  средой исполнения контроллера &quot;SMLogix&quot;. Роль OpenSCADA для данного  контроллера рассматривалась как расширенная среда программирования  контроллера, интегрированная и программируемая из станции верхнего  уровня на основе OpenSCADA. Для сохранения возможности представления и  контроля данных, полученных в OpenSCADA, на встроенном дисплее, при этом  минимизировав трудозатраты на адаптацию, решено было сохранить исходную  среду исполнения &quot;SMLogix&quot; для выполнения задачи представления данных  на внутреннем дисплее, а данные транслировать в/из неё посредством  локального ModBus/TCP соединения.</p>
<p id="p40616-37" class="indent10 auto align-justify">В отношении программного окружения панельного контроллера SMH2Gi в целом  нужно сделать несколько замечаний. В контроллере использовано ядро  Linux 2.6.29 с расширением жёсткого реального времени, что позволяет  удерживать периодичные интервалы времени до 100 мкс. Кроме того, все  критичные системные потоки запущены с политикой управления планированием  реального времени. При этом, хотя процессор не имеет математического  сопроцессора, эмуляция выполнена оптимально в виде SoftVFP. Всё это  позволяет в OpenSCADA исполнять высоко-детерминированные задачи  управления с периодичностью до 100 мкс и приемлемой вычислительной  производительностью. </p>
<p class="bodytext"><a name="p27259-2"></a> </p>]]></content:encoded>
			<category>Решение</category>
			
			<author>rom_as@oscada.org</author>
			<pubDate>Wed, 01 Feb 2012 18:56:00 +0200</pubDate>
			
		</item>
		
		<item>
			<title>Сборка проекта OpenSCADA для мобильных устройств фирмы Nokia (N800, N900, N950)</title>
			<link>http://oscada.org/ru/khranilishche-novostei/odinochnaja-stranica/article/build-the-openscada-project-for-mobile-devices-of-the-nokia-company-n800-n900-n950/</link>
			<description>Имя: NokiaLinux
Основан: декабрь 2010г
Участники: Роман Савоченко, Максим Лысенко
Описание:...</description>
			<content:encoded><![CDATA[<p id="p41420-4" class="indent10 auto align-justify"> Фирма <a href="http://ru.wikipedia.org/wiki/Nokia" target="_blank" class="outerlink" >Nokia</a>  является одним из мировых лидеров в производстве и продаже мобильных  телефонов. В 2005 году фирма Nokia выпустила карманный персональный  компьютер (КПК) N770 на основе развитого <em>Linux</em> окружения с собственным окружением рабочего стола (на GTK+) — <a href="http://en.wikipedia.org/wiki/Hildon" target="_blank" class="outerlink" >Hildon</a> под общим названием проекта <a href="http://ru.wikipedia.org/wiki/Maemo" target="_blank" class="outerlink" >Maemo</a>. В последствии на основе платформы <em>Maemo</em> было выпущено ещё три мобильных устройства, а именно два КПК «интернет-планшета» <a href="http://ru.wikipedia.org/wiki/Nokia_N800" target="_blank" class="outerlink" >N800</a>, <a href="http://ru.wikipedia.org/wiki/Nokia_N810" target="_blank" class="outerlink" >N810</a> и смартфон «интернет-планшет» <a href="http://ru.wikipedia.org/wiki/Nokia_N900" target="_blank" class="outerlink" >N900</a>. В 2010 году фирма <em>Nokia</em> объединила свои усилия по работе над <em>Maemo</em> с проектом <a href="http://ru.wikipedia.org/wiki/Moblin" target="_blank" class="outerlink" >MobLin</a> фирмы <a href="http://ru.wikipedia.org/wiki/Intel" target="_blank" class="outerlink" >Intel</a>, создав проект <a href="http://ru.wikipedia.org/wiki/MeeGo" target="_blank" class="outerlink" >MeeGo</a>. На основе платформы <em>MeeGo</em> в 2011 году было выпущено два смартфона <em>N950</em>(прототип) и <a href="http://ru.wikipedia.org/wiki/Nokia_N9" target="_blank" class="outerlink" >N9</a>.</p>
<p id="p41420-5" class="indent10 auto align-justify"> Для проекта <em>OpenSCADA</em> мобильные устройства фирмы <em>Nokia</em> на платформах <em>Maemo</em> и <em>MeeGo</em> интересны в плане их основы на развитом окружении <em>ОС Linux</em>, отсутствия блокировок и ограничений на расширения этих платформ путём сборки и адаптации типовых программ <em>ОС Linux</em>, что позволяет просто осуществить адаптацию <em>OpenSCADA</em> на аппаратные платформы <a href="http://ru.wikipedia.org/wiki/ARM" target="_blank" class="outerlink" >ARM</a> и сборку для вышеупомянутых мобильных устройств фирмы <em>Nokia</em>.</p>
<p id="p41420-6" class="indent10 auto align-justify"> Адаптация проекта <em>OpenSCADA</em> для работы на аппаратных платформах <em>ARM</em> была выполнена в 2011 году в соответствии с общим планом развития <a href="http://wiki.oscada.org/Works/RoadMap" target="_blank" class="outerlink" >http://wiki.oscada.org/Works/RoadMap</a> в окружении КПК <em>N800</em> (<a href="http://wiki.oscada.org/Works/Tests/ARM" target="_blank" class="outerlink" >http://wiki.oscada.org/Works/Tests/ARM</a>). В значительной степени адаптация была выполнена в рамках <a href="http://ru.wikipedia.org/wiki/chroot" target="_blank" class="outerlink" >chroot</a>  окружения дистрибутива ALTLinux, как более свежего и менее проблемного.  Последние сборки OpenSCADA уже полноценно и корректно работают в родном  окружении <em>N800</em>.</p>
<h2>N800 (Maemo 4.1)</h2>
<p id="p41420-7" class="indent10 auto align-justify"> КПК <a href="http://ru.wikipedia.org/wiki/Nokia_N800" target="_blank" class="outerlink" >N800</a>  (рис.1) содержит процессор OMAP2420 с рабочей частотой 400 МГц,  сенсорный (резистивный) дисплей 4,1&quot; 800×480 и построен на основе  программной платформы <em>Maemo 4.1</em>. </p><div style="float:center; text-align:center"><p class="bodytext"><img src="http://wiki.oscada.org/Using/NokiaLinux/files?get=N800.png" alt="КПК N800 (657&amp;nbsp;Кб)" title="КПК N800 (657&amp;nbsp;Кб)" height="436" width="800"><br /> Рис. 1. КПК (интернет-планшет) N800</p></div><p id="p41420-8" class="indent10 auto align-justify"> На этапе знакомства и изучения возможности сборки OpenSCADA под или для  N800 были обнаружены проблемы некоторой устарелости программного  окружения и ряд проблем при исполнении собранной OpenSCADA, часть из  которых была связана с неготовностью OpenSCADA для работы на архитектуре  ARM. По этой причине была осуществлена также сборка OpenSCADA в  &quot;chroot&quot; окружении дистрибутива <a href="http://altlinux.org/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">ALTLinux</a> на N800. Из наиболее существенных проблем, с которыми пришлось столкнуться при сборке OpenSCADA, можно отметить:</p><ul><li> <em>Сравнительно небольшой объём оперативной, а также выгружаемой памяти для сборки.</em>  Так, устройство содержит 128Мб оперативной памяти и до 128Мб  выгружаемой, чего недостаточно для сборки в &quot;chroot&quot; некоторых модулей  пользовательского интерфейса с оптимизацией (-O2). </li><li> <em>Проблема доступа к файловой системе при загрузке БД библиотек и моделей OpenSCADA.</em>  На первых этапах запуска OpenSCADA в родном окружении N800 было  обнаружено падение OpenSCADA при загрузке стандартных библиотек в БД  SQLite, чего не замечалось в chroot окружении ALTLinux. В последствии  эта проблема была решена путём тонкой адаптации OpenSCADA для работы в  &quot;плохом&quot; <a name="lp5xxx" href="http://wiki.oscada.org/Using/LP5xxx?v=19x5" title="Using/LP&amp;nbsp;5&amp;nbsp;xxx">окружении контроллера LP-5141 фирмы &quot;ICP DAS&quot;</a>. </li><li> <em>Невысокая производительность устройства.</em> Устройство  содержит процессор TI OMAP 2420 с частотой 400МГц, чего не достаточно  для полноценного запуска математических моделей технологических  процессов. В целом низкая частота процессора усугубляется невысокой  скоростью вычислений с плавающей точкой, детальнее об этом можно увидеть  из <a name="plc" href="http://wiki.oscada.org/Using/PLC?v=18jj#h1086-1" title="Using/PLC">анализа производительности вычислений с плавающей точкой</a>.</li></ul><p id="p41420-9" class="indent10 auto align-justify"> Для безопасного проведения экспериментов с устройством и предотвращения  возможного повреждения исходного программного окружения была настроена  мульти-загрузка с возможностью загрузки как в исходное программное  окружение на внутреннем flash-носителе так и в экспериментальное  окружение на внутренней SD-карте, копии исходного программного окружения  (<a href="http://habrahabr.ru/blogs/n800/24111" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">http://habrahabr.ru/blogs/n800/24111</a>).</p>
<p id="p41420-10" class="indent10 auto align-justify"> Для создания &quot;chroot&quot; окружения ARM репозитория ALTLinux использовано руководство <a href="http://www.altlinux.org/Ports/arm/chroot" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">http://www.altlinux.org/Ports/arm/chroot</a>.  На основе полученного chroot было создано сборочное окружение для  сборки в нём OpenSCADA непосредственно на N800. Теоретически возможна  сборка непосредственно на большой машине, через quemu, однако при этом у  меня возникли проблемы с падением quemu. Кроме сборки OpenSCADA  полученное &quot;chroot&quot; окружение также успешно использовалось для запуска  свежего окружения KDE 3.5.12 на N800.</p>
<p id="p41420-11" class="indent10 auto align-justify"> Впоследствии, для сборки OpenSCADA с графическим интерфейсом под родное  окружение, что стало возможно с появлением пакетов QT4, было установлено  официальное SDK и окружение компиляции фирмы Nokia. Установка  проводилась посредством скрипта установки сборочного окружения <a href="http://tablets-dev.nokia.com/4.1/maemo-scratchbox-install_4.1.sh" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">maemo-scratchbox-install_4.1.sh</a> и скрипта установки SDK <a href="http://tablets-dev.nokia.com/4.1/maemo-sdk-install_4.1.sh" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">maemo-sdk-install_4.1.sh</a>. Общее описание SDK можно получить по <a href="http://maemo.org/development/sdks/maemo-4-1-diablo-sdk" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">ссылке</a>.</p>
<p id="p41420-12" class="indent10 auto align-justify"> <span class="mark">Внимание!</span> В расширенном репозитории Maemo 4.1  последняя версия QT4 (libqtcore4, libqtgui4-4.5.3-1maemo1) содержит  ошибку, которая приводит к падению приложения в момент создания/удаления  виджетов, что можно наблюдать в конфигураторе OpenSCADA на библиотеке  QT. Для обхода этой проблемы необходимо установить и зафиксировать от  обновления предыдущую версию QT4 (libqtcore4, libqtgui4-4.5.2-1maemo2),  которая не имеет этой проблемы и работает стабильно.</p>
<p id="p41420-13" class="auto indent10"> Кроме первоочередной цели сборки и запуска OpenSCADA на этом устройстве были также выполнены задачи:</p><ul><li>  Установка окружения рабочего стола KDE3 (3.5.8) в роли более развитого и  привычного окружения, дополняющего исходное окружение &quot;Hildon&quot;. </li><li> Исправление работы программы виртуальной клавиатуры <a href="http://kde-apps.org/content/show.php/Kvkbd?content=56019" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />kvkbd</a> при переключении <em>Shift</em>. </li><li> Сборка программы файлового менеджера <a href="http://www.krusader.org/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />krusader</a>.</li></ul><p class="bodytext"> <a name="h1082-4"></a></p>
<h2>N900 (Maemo 5)</h2>
<p id="p41420-14" class="indent10 auto align-justify"> Nokia N900 содержит процессор ARM Cortex-A8 OMAP3430 (600 МГц),  сенсорный (резистивный) дисплей 3.5&quot; 848×480 и построен на основе  программной платформы <a href="http://ru.wikipedia.org/wiki/Maemo" target="_blank" class="outerlink" >Maemo 5</a>. </p><div style="float:center; text-align:center"><p class="bodytext"><img src="http://wiki.oscada.org/Using/NokiaLinux/files?get=N900.png" alt="Мобильный телефон N900 (448&amp;nbsp;Кб)" title="Мобильный телефон N900 (448&amp;nbsp;Кб)" height="362" width="650"><br /> Рис. 2. Мобильный телефон N900</p></div><p id="p41420-15" class="indent10 auto align-justify"> Для сборки OpenSCADA под родное окружение было установлено официальное  SDK и окружение компиляции фирмы Nokia. Установка проводилась  посредством скрипта установки сборочного окружения <a href="http://repository.maemo.org/stable/5.0/maemo-scratchbox-install_5.0.sh" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">maemo-scratchbox-install_5.0.sh</a> и скрипта установки SDK <a href="http://repository.maemo.org/stable/5.0/maemo-sdk-install_5.0.sh" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">maemo-sdk-install_5.0.sh</a>. Общее описание SDK можно получить по <a href="http://www.developer.nokia.com/info/sw.nokia.com/id/c05693a1-265c-4c7f-a389-fc227db4c465/Maemo_5_SDK.html" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">ссылке</a>.</p>
<h2>N950, N9 (MeeGo 1.2 Harmattan)</h2>
<p id="p41420-16" class="indent10 auto align-justify"> Nokia N950 содержит процессор ARM Cortex-A8 OMAP3630 (1 ГГц), сенсорный  (емкостной) дисплей 4&quot; 854×480 и построен на основе программной  платформы <em>MeeGo 1.2 Harmattan</em>. </p>
<p id="p41420-17" class="auto indent10"> Телефон был получен от Nokia в рамках программы <a href="http://qt.nokia.com/qt-in-use/ambassadors/qtambassador" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">Qt Ambassador Program</a> для адаптации на него системы OpenSCADA.</p><div style="float:center; text-align:center"><p class="bodytext"><img src="http://wiki.oscada.org/Using/NokiaLinux/files?get=N950.png" alt="Мобильный телефон N950 (412&amp;nbsp;Кб)" title="Мобильный телефон N950 (412&amp;nbsp;Кб)" height="342" width="700"><br /> Рис. 3. Мобильный телефон N950</p></div><p id="p41420-18" class="indent10 auto align-justify"> Для сборки OpenSCADA под родное окружение было установлено официальное  SDK и окружение компиляции фирмы Nokia. Установка проводилась  посредством скрипта установки <a href="http://harmattan-dev.nokia.com/stable/harmattan/harmattan-sdk-setup.py" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">harmattan-sdk-setup.py</a>. Общее описание SDK и инструкцию по установке можно получить по <a href="http://harmattan-dev.nokia.com/docs/library/html/guide/html/Developer_Library_Alternative_development_environments_Platform_SDK_user_guide_Installing_Harmattan_Platform_SDK.html" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">ссылке</a>.</p>]]></content:encoded>
			<category>Новость</category>
			<category>Решение</category>
			
			<author>rom_as@oscada.org</author>
			<pubDate>Sun, 01 Jan 2012 09:53:00 +0200</pubDate>
			
		</item>
		
		<item>
			<title>OpenSCADA приняла участие в выставке в рамках Qt Developer Days 2011 в Мюнхене и Сан-Франциско</title>
			<link>http://qt.nokia.com/qtdevdays2011</link>
			<description>На выставке были представлены следующие решения:

Динамическая модель парового котла №9 ДМК на...</description>
			<content:encoded><![CDATA[]]></content:encoded>
			<category>Новость</category>
			<category>Публикация</category>
			
			
			<pubDate>Thu, 08 Dec 2011 16:58:00 +0200</pubDate>
			
		</item>
		
		<item>
			<title>Релиз OpenSCADA 0.7.2</title>
			<link>http://oscada.org/ru/khranilishche-novostei/odinochnaja-stranica/article/release-of-openscada-072/</link>
			<description>Основной целью данного релиза является стабилизация и отработка ключевых функций перед выпуском...</description>
			<content:encoded><![CDATA[<p class="indent10">&nbsp;</p><div style="text-align: center; "><h1 style="margin: 0px; padding: 2px 0px 7px; font-family: Verdana; font-size: 23px; line-height: 25px; color: rgb(51, 51, 51); ">OpenSCADA 0.7.2 </h1></div><h2>Введение</h2>
<p id="p80923-3" class="align-justify auto indent10"> Данный релиз является плановым выпуском рабочей версии системы  OpenSCADA, которые обычно осуществляются с периодичностью 3-4 месяца.  Основной целью данного релиза является стабилизация и отработка ключевых  функций перед выпуском следующей версии OpenSCADA продолжительной  поддержки (LTS) 0.8.0. Кроме основных задач в рамках данного релиза  проделана большая работа по стабилизации, чистке исходного кода,  всестороннему расширению возможностей, а также опробование на  встраиваемых и мобильных устройствах архитектуры ARM.</p>
<p id="p80923-4" class="indent10 auto align-justify"> Данный документ является обработкой(компиляцией) документа &quot;ChangeLog&quot;  системы OpenSCADA версии 0.7.2, который призван вкратце и наглядно  осветить новые возможности. Детальнее ознакомиться с изменениями в  системе OpenSCADA можно в файле &quot;ChangeLog&quot; из дистрибутива системы или  здесь: <a href="http://wiki.oscada.org/Works/ChangeLog" target="_blank" class="outerlink" >http://wiki.oscada.org/Works/ChangeLog</a>.</p>
<p id="p80923-5" class="auto indent10"> Ключевыми особенностями данной версии являются:</p><ul><li> Реализация плановых задач. </li><li> Оптимизация, повышение стабильности, устойчивости и производительности системы. </li><li> Усовершенствование и стабилизация графической подсистемы. </li><li> Расширение API пользовательского программирования. </li><li> Общесистемные расширения. </li><li> Публикация решений OpenSCADA.</li></ul><p id="p80923-6" class="auto indent10"> Новые и обновленные модули:</p><ul><li> <em>Archive.DBArch (0.9.5)</em> — Добавлены лимиты запроса данных по времени запроса и ещё некоторые расширения. </li><li> <em>Archive.FSArch (1.5.0)</em> — Повышение производительности  чтения индексов файлов архивов значений. Адаптация хранения и чтения  вещественного к ARM FPA. Добавлены лимиты запроса данных по времени  запроса. Некоторые расширения. Значительная стабилизация. </li><li> <em>DB.FireBird (0.9.7)</em> — Стабилизация. </li><li> <em>DB.MySQL (1.7.1)</em> — Стабилизация. </li><li> <em>DB.PostgreSQL (0.9.2)</em> — Стабилизация. </li><li> <em>DB.SQLite (1.6.4)</em> — Стабилизация. </li><li> <em>DAQ.BFN (0.5.1)</em> — Очистка кода. </li><li> <em>DAQ.BlockCalc (1.5.0)</em> — Добавлено планирование вызовов по CRON. Добавлен запускающий и останавливающий вызов блоков. Стабилизация. </li><li> <em>DAQ.DAQGate (0.9.5)</em> — Добавлено планирование вызовов по CRON. Стабилизация. </li><li> <em>DAQ.DCON (0.5.1)</em> — Стабилизация. </li><li> <em>DAQ.DiamondBoards (1.2.5)</em> — Добавлена возможность смены типа параметра. Стабилизация. </li><li> <em>DAQ.ICP_DAS (0.8.0)</em> — Добавлена библиотека API &quot;ICP DAS&quot; libi8k.a для архитектуры ARM и включена возможность сборки модуля для ARM. Стабилизация. </li><li> <em>DAQ.JavaLikeCalc (1.9.5)</em> — Добавлен прямой,  динамический вызов библиотечных функций. Добавлено прямое объединение  строковых констант. Добавлен условный вызов аргументов выражения  (второго аргумента) с логическими операциями ||(OR) и &amp;&amp;(AND).  Значительная стабилизация. Некоторые расширения. </li><li> <em>DAQ.LogicLev (1.2.0)</em> — Стабилизация. Добавлена возможность смены типа параметра. Добавлено планирование вызовов по CRON. Некоторое расширение. </li><li> <em>DAQ.ModBus (1.2.0)</em> — Добавлена поддержка типа  параметра &quot;Логический&quot; для работы по шаблону параметра, а также функции  пользовательского API для отправки произвольных-нестандартных  ModBus-запросов из шаблонов. Добавлена и использована функция  формирования сообщений о нарушениях в контроллере. Добавлена поддержка  функций групповой записи (0x0F, 0x10). Значительная стабилизация. </li><li> <em>DAQ.OPC_UA (0.6.2)</em> — Стабилизация. Адаптация хранения и чтения вещественного к ARM FPA. </li><li> <em>DAQ.SNMP (0.6.1)</em> — Стабилизация. Некоторые улучшения.  </li><li> <em>DAQ.Siemens (1.3.0)</em> — Значительная стабилизация.  Версия библиотеки LibnoDave обновлена до 0.8.4.6. Добавлено планирование  вызовов по CRON. Добавлена функция переподключения для &quot;Industrial  Ethernet&quot; соединений. Некоторые расширения. </li><li> <em>DAQ.System (1.7.5)</em> — Стабилизация. Добавлено планирование вызовов по CRON. </li><li> <em>Transport.SSL (1.0.0)</em> — Стабилизация. Некоторые улучшения. </li><li> <em>Transport.Serial (0.7.3)</em> — Стабилизация. </li><li> <em>Transport.Sockets (1.5.0)</em> — Значительная стабилизация. </li><li> <em>Protocol.HTTP (1.6.0)</em> — Добавлена поддержка  пользовательских шаблонов для внутреннего содержимого модуля. Добавлена  генерация сообщений аутентификации пользователей. Добавлена поддержка  всех основных вариантов завершения строки при разборе HTTP-запроса. </li><li> <em>Protocol.ModBus (0.6.3)</em> — Стабилизация. Некоторые улучшения. </li><li> <em>Protocol.OPC_UA (0.6.2)</em> — Стабилизация. </li><li> <em>Protocol.SelfSystem (0.9.5)</em> — Стабилизация. </li><li> <em>Protocol.UserProtocol (0.6.2)</em> — Стабилизация. </li><li> <em>Special.FLibComplex1 (1.1.0)</em> — Добавлен прямой, динамический вызов библиотечных функций. </li><li> <em>Special.FLibMath (0.6.0)</em> — Добавлен прямой, динамический вызов библиотечных функций. </li><li> <em>Special.FLibSYS (1.0.0)</em> — Добавлен прямой, динамический вызов библиотечных функций. </li><li> <em>UI.QTCfg (2.1.0)</em> — Стабилизация. Значительные расширения и улучшения. Реализация ряд функций для повышения удобства. </li><li> <em>UI.QTStarter (1.6.2)</em> — Стабилизация. Шрифт сообщение в &quot;сплеше&quot; зафиксирован в размере 10 пикселов, для обеспечения единообразного отображения. </li><li> <em>UI.VCAEngine (1.2.0)</em> — Стабилизация. Значительные расширения и улучшения. </li><li> <em>UI.Vision (1.2.0)</em> — Значительная стабилизация. Значительные расширения и улучшения. </li><li> <em>UI.WebCfg (1.5.6)</em> — Стабилизация. </li><li> <em>UI.WebCfgD (0.8.0)</em> — Стабилизация. Значительные расширения и улучшения. </li><li> <em>UI.WebUser (0.6.2)</em> — Стабилизация. </li><li> <em>UI.WebVision (1.0.0)</em> — Значительная стабилизация. Значительные расширения и улучшения.</li></ul><p class="bodytext"> <a name="h1083-3"></a></p>
<h2>1 Реализация плановых задач</h2>
<p id="p80923-7" class="auto indent10"> В соответствии с <a name=".works.roadmap" href="http://wiki.oscada.org/Works/RoadMap?v=nrh" title="Works&amp;nbsp;/&amp;nbsp;Road&amp;nbsp;Map">планом</a> релиза были выполнены следующие задачи:</p><ul><li> <em>Реализация механизма откатов изменений редактирования в Vision. </em>  — В рамках окна визуального редактирования виджетов реализован  многоуровневый механизм отката изменений для всех основных операций:  визуальное изменение геометрии, изменение значения атрибута виджета,  добавление/удаление виджета, копирование виджета и редактирование  виджетов на основе примитива &quot;ElFigure&quot;. </li><li> <em>Адаптация системы OpenSCADA для работы на аппаратной платформе ARM.</em> — В дополнении к первичной адаптации, в прошлом релизе, для планшета <a href="http://ru.wikipedia.org/wiki/Nokia_N800" target="_blank" class="outerlink" >N800</a> (<a href="http://wiki.oscada.org/Works/Tests/ARM" target="_blank" class="outerlink" >http://wiki.oscada.org/Works/Tests/ARM</a> ) была выполнена сборка и адаптация OpenSCADA для сложного (очень старого) програмного окружения контроллера <a name=".using.lp5xxx" href="http://wiki.oscada.org/Using/LP5xxx?v=dsm" title="Using&amp;nbsp;/&amp;nbsp;LP&amp;nbsp;5&amp;nbsp;xxx">LP-5451</a>, а так-же сборка для контроллера <a href="http://segnetics.com/main.aspx?Page=412" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />SMH2Gi</a> и смартфонов фирма <a href="http://ru.wikipedia.org/wiki/Nokia" target="_blank" class="outerlink" >Nokia</a>: <a href="http://ru.wikipedia.org/wiki/Nokia_N900" target="_blank" class="outerlink" >N900</a>, N950, <a href="http://ru.wikipedia.org/wiki/Nokia_N9" target="_blank" class="outerlink" >N9</a>. В рамках сборки и адаптации на различные мобильные устройства были выполнены следующие задачи: <ul><li> <em>DAQ.ICP_DAS</em>:	Добавлена библиотека API &quot;ICP DAS&quot; libi8k.a для архитектуры ARM и включена возможность сборки модуля для ARM. </li><li> <em>SYS, DAQ.OPC_UA</em>: Добавлены системные функции  floatLE(), floatLErev(), doubleLE(), doubleLErev() для преобразования  формата хранения вещественного числа на различных архитектурах. </li><li> <em>SYS</em>: Выполнена адаптация для сборки с GLibC версии меньше 2.5 (2.3.2). </li><li> <em>Archive.FSArch</em>: <ul><li> Исправлено хранение вещественного числа формата LE в архиве, на архитектуре ARM.  </li><li> В алгоритме быстрого подсчёта количества битов использовано функцию невыравненного чтения TSYS::getUnalign32().  </li><li> Размер поля кодировки в плоском архиве сообщения расширен с 9 до 99 символов.</li></ul></li></ul></li></ul><p class="bodytext"> <a name="h1083-4"></a></p>
<h2>2 Оптимизация, повышение стабильности, устойчивости и производительности системы</h2>
<p id="p80923-8" class="indent10 auto align-justify"> В процессе работ над данной версией, а также её практической адаптации,  было обнаружено и исправлено в общей сложности около 170 ошибок. Так-же  была продолжена работа по чистке кода от предупреждающих сообщений  компилятора, с флагом &quot;-Wall&quot;.</p>
<p id="p80923-9" class="indent10 auto align-justify"> Перечислим наиболее существенные ошибки, исправление которых значительно отразилось на повышении стабильности:</p><ul><li> <em>SYS</em>: <ul><li> Исправлены внеплановые вызовы по расписанию, связанные с  рассинхронизацией значений функций time() и  clock_gettime(CLOCK_REALTIME,&amp;sp_tm). </li><li> Исправлена проверка и ожидание потоков на доступность при перекрытии с остановкой предыдущего, одноимённого потока. </li><li> Отключено ожидание инициализации для отсоединяемых задач с целью предотвращения зависания на ожидании быстро закрываемых задач. </li><li> Исправлена работа функций невыравненного чтения getUnalign*() на ARM. Проблема обнаружена на PXA270. </li></ul></li><li> <em>Archive.FSArch</em>: <ul><li> Исправлено чтение данных из буфера архива в соответствии с размером буфера в алгоритме быстрого вычисления количества битов. </li><li> Исправлено помещение смещения в кеш из алгоритма быстрого вычисления количества битов. </li><li> Исправлена некорректная обработка конца невыравненных блоков быстрого алгоритма подсчёта количества битов. </li><li> Добавлен монопольный ресурс к вызову функции calcVlOff() с целью предотвращения некорректной работы с кешем. </li></ul></li><li> <em>Transport, DAQ.AMRDevs, DAQ.DCON, DAQ.ICP_DAS, DAQ.ModBus, DAQ.OPC_UA, Protocol.HTTP</em>: Исправлено использование функции TTransportOut::messIO() при запросе хвоста и получении нулевого ответа. </li><li> <em>DAQ.ModBus, Transport.Serial, UI.WebCfg, UI.WebCfgD, UI.WebUser, UI.WebVision</em>:  Исправлено ошибочное использование символа завершения строки '\n' для  множества программных платформ UNIX, MAC, DOS/Windows, путём замены  на&quot;\x0A&quot; . </li><li> <em>Transport.*</em>: Исправлено использование беззнакового  типа в возврате функций read() и write(). Добавлены ресурсы к счётчикам  входных/выходных запросов. </li><li> <em>Transport.Sockets</em>: Исправлен пропуск инициализации размера возвратного значения для функции getsockopt(). </li><li> <em>DAQ.JavaLikeCalc</em>: Исправлено падение функции replace(), объекта &quot;RegExp&quot;. </li><li> <em>DAQ.Siemens</em>: Исправлено получение и запись значений  вещественных типов. Исправлено переподключение в случае ошибки.  Исправлено использование свойства размера целого, вещественного и  строкового типов. Добавлена очистка связей параметра при его выключении. </li><li> <em>UI.Vision, UI.WebVision</em>: Исправлен доступ за границу вектора при отрисовке графиков примитива &quot;FormEls&quot;. </li><li> <em>UI.VCAEngine</em>: Предотвращена возможность потери  изменений в сервере визуализации при отображении в визуализаторах путём  предварительного сохранения значения тактового счётчика в сервисном  запросе &quot;openList&quot;. </li><li> <em>UI.WebVision</em>: <ul><li> Исправлено открытие и замена корневой страницы. </li><li> Исправлена обработка масштаба вложенных страниц, с учётом масштаба корневой.</li></ul></li></ul><p id="p80923-10" class="auto indent10"> Оптимизация и повышение производительности:</p><ul><li> <em>SYS</em>:  Механизм ресурса объекта &quot;ResString&quot; заменён с RW-блокировок на мютекс, с  целью повысить производительность и сократить потребление памяти. </li><li> <em>Archive.FSArch</em>: Обработка индексной таблицы архива  значений значительно ускорена посредством использования быстрого  алгоритма вычисления количества битов в 32-разрядном целом. </li><li> <em>UI.WebCfgD</em>: Использован групповой запрос содержимого  страниц для значительного повышения производительности на медленных и  высоколатентных каналах. </li><li> <em>UI.Vision</em>: Повышена производительность отрисовки заполнений примитива &quot;ElFigure&quot;. </li><li> <em>UI.VCAEngine</em>: <ul><li> Выполнены мероприятия по повышению скорости запуска сеанса  проекта в числе: пропущена инициализация базовых атрибутов ввиду их  последующего наследования. </li><li> Удален перевод некоторых сообщений времени исполнения сеанса. </li><li> Реализовано включение только нужных страниц при запуске  сеанса. Остальные страницы исполняющегося сеанса включаются по мере  обращения к ним. Это позволило значительно повысить скорость запуска  сеанса, а также уменьшить зависимость скорости запуска от сложности  проекта визуализации. </li><li> Реализация архивного режима примитива &quot;Документ&quot; изменена на  прямую работу с БД, что позволило расширить глубину архива до 1000000  документов и без ущерба для оперативной памяти.</li></ul></li></ul><p class="bodytext"> <a name="h1083-5"></a></p>
<h2>3 Усовершенствование и стабилизация графической подсистемы</h2>
<p id="p80923-11" class="indent10 auto align-justify"> Заметная работа была выполнена в рамках графической подсистемы, а именно  в модулях движка СВУ UI.VCAEngine, визуализаторов UI.Vision и  UI.WebVision, а также конфигураторах. Внесённые изменения были  направленны на стабилизацию, оптимизацию потребления памяти и улучшение  пользовательских свойств.</p>
<p id="p80923-12" class="indent10 auto align-justify"> Улучшения графической подсистемы:</p><ul><li> <em>UI.VCAEngine, UI.Vision, UI.WebVision</em>: <ul><li> Исправлено обращение за границы массива (вектора) при построении трендов, примитива &quot;Диаграмма&quot;. </li><li> Добавлено и реализовано свойство ширины графика, примитива &quot;Диаграмма&quot;. </li><li> Добавлена периодическая проверка дерева виджетов страницы с  целью обнаружения факта удаления виджетов, путём запроса полного перечня  виджетов. </li><li> Реализовано отображение графиков, группы графиков примитива  &quot;Диаграмма&quot; в шкале значения в случае отличия шкал всех графиков не  более чем на 20%.  </li><li> Добавлена и реализована возможность выбора режима  подтверждения для элементов редактирования строки и текста примитива  &quot;Элементы формы&quot;. </li><li> Исправлена возможность потери некоторых изменений в модели, при отображении их в визуализаторах. </li><li> Добавлено и реализовано свойство количества значений на пиксел  в графиках примитива &quot;Диаграмма&quot;, с целью управления детализацией  экспорта в CSV и т.д. </li><li> Реализована логарифмическая шкала значений для графиков примитива &quot;Диаграмма&quot;. </li><li> Добавлено и реализовано свойство сохранения соотношения сторон  главной страницы при разворачивании главного окна исполнения сеанса  проекта. </li></ul></li><li> <em>UI.VCAEngine</em>: <ul><li> Реализовано включение страниц сеанса проекта по надобности, с  целью повышения скорости запуска и оптимизации использования оперативной  памяти.  </li><li> Примитив &quot;Документ&quot; переделан для ведения архивов, архивного  режима, полностью в БД, а также добавлена функция пользовательского API  для доступа к элементам архива. </li><li> Добавлена периодическая (30 минут) проверка и закрытие уже неиспользованных (потерянных) сеансов проектов. </li><li> Удалён предыдущий (противоречивый) механизм отката удаления  вложенных виджетов и заменён полноценным механизмом откатов в  визуализаторе <em>UI.Vision</em>.  </li><li> Выполнена оптимизация использования памяти элементами сеанса до 20%.  </li><li> Удалена поддержка первой, устаревшей, версии структуры БД среды визуализации.  </li><li> Добавлено ограничение на время генерации документов в примитиве &quot;Документ&quot; в 5 секунд.  </li><li> Добавлена поддержка типа атрибутов &quot;Объект&quot; и &quot;Текст&quot;. </li><li> Отключена принудительная инициализация новых пользовательских атрибутов в EVAL. </li><li> Примитив &quot;Документ&quot; переключен в режим полного разбора XML с целью полноценного сохранения разметки XHTML. </li><li> Добавлена индикация состояния корректности ссылок в виде &quot;(+)&quot; в конце. </li></ul></li><li> <em>UI.Vision</em>: <ul><li> Добавлена реализация полноценных откатов и повторов изменений при визуальном редактировании виджетов. </li><li> Улучшения в отзывчивости и обновлении изменений в сеансе  исполнения проекта: оптимизирована производительность отрисовки  примитива &quot;ElFigure&quot;, обработка изменения уровня виджета &quot;geomZ&quot;. </li><li> Добавлен экспорт в CSV формат из примитивов &quot;Диаграмма&quot; и &quot;Документ&quot;. </li><li> Введено ограничение на размер диалогов ввода и включено адаптивное определение их размеров по содержимому. </li><li> Полностью переписан механизм исполнения правил подсветки синтаксиса.  </li><li> Добавлено создание нового сеанса после восстановления удалённого подключения и отсутствии предыдущего сеанса. </li><li> Фон окна редактируемого виджета установлен в шаблон QT::Dense7Pattern с целью устранения возможного перекрытия по цвету. </li><li> Добавлена обработка событий выбора виджета при нажатии в области скролинга, но за пределами виджета. </li><li> Примитив &quot;Элементарная фигура&quot;: <ul><li> Выполнена реорганизация операций из диалога свойств и контекстного меню с динамическими и статическими свойствами. </li><li> В процессе добавления фигуры реализована её отрисовка при перемещении курсора мыши. </li></ul></li></ul></li><li> <em>UI.WebVision</em>: <ul><li> Исправлена обработка масштаба вложенных кадров, а также пересмотрен механизм формирования-включения скрола.  </li><li> Добавлена функция преобразования изображений на стороне  сервера. Функцию преобразования использовано для изменения размера и  обесцвечивания изображений неактивных кнопок. </li><li> Реализовано открытие малых окон вложенных страниц в виде  DIV-блоков, что решает проблему блокировки и продолжительного открытия  внешних окон многими браузерами. </li><li> Главная страница интерфейса отцентрована в окне браузера.  </li></ul></li><li> <em>UI.QTCfg</em>: <ul><li> Добавлено ограничение на высоту строк таблиц в половину высоты таблицы.  </li><li> Введено ограничение на размер диалога ввода и включено адаптивное определение его размера по содержимому.  </li><li> У элементов доступных для изменения высоты пользователем, для  обеспечения работы везде, установлен фиксированный стиль &quot;StyledPanel&quot;.  </li><li> Добавлена функция полнотекстового редактирования текста ячеек таблиц.  </li><li> Движок воспроизведения правил подсветки синтаксиса полностью переписан для упрощения и предотвращения скрытых ошибок. </li></ul></li><li> <em>UI.WebCfgD</em>:  <ul><li> Уменьшена яркость обесцвеченных-пассивных кнопок. </li><li> Все окна диалогов реализованы в виде DIV-блоков с целью  исключить проблемы и задержки в открытии внешних окон различными  браузерами. </li><li> Использован групповой запрос содержимого страниц для  значительного повышения производительности на медленных и  высоколатентных каналах. </li><li> Добавлена информация в строке статуса о текущем пользователе и возможность его смены. </li><li> Выполнена адаптация для работы в полную ширину экрана.</li></ul></li></ul><p class="bodytext"> <a name="h1083-6"></a></p>
<h2>4 Расширение API пользовательского программирования</h2>
<p id="p80923-13" class="indent10 auto align-justify"> Было продолжено формирование объектного API пользовательского  программирования, которое предусматривает интеграцию пользовательских  функций в дерево объектов системы OpenSCADA. Кроме этого был внесен ряд  изменений в существующие библиотеки функций пользовательского API.</p>
<p id="p80923-14" class="auto indent10"> В частности были осуществлены следующие изменения:</p><ul><li> <em>SYS</em>: <ul><li> Добавлены функции работы с файлами: SYS.fileRead() и SYS.fileWrite(). </li><li> К API объекта XMLNodeObj добавлена функция getElementBy() для поиска вложенных узлов по значению атрибута. </li><li> Добавлена функция осуществления кодирования текста между различными символьными кодировками. </li><li> Добавлена функция NodeObj.nodePath(). </li></ul></li><li> <em>TConfig, TBD, TTransportIn, TTransportOut,  TUser, TGroup, TPrmTmplLib, TPrmTempl, TParamContr, TController,  TVArchive, TVArchivator, TMArchivator</em>: Добавлены функции пользовательского API cfg() и cfgSet() для доступа к конфигурации объектов (хранящейся в БД). </li><li> <em>DAQ</em>: <ul><li> Добавлена функция TController::alarmSet() для генерации типовых  нарушений в объекте контроллера модулей подсистемы &quot;Сбор данных&quot;. </li><li> Добавлена функция  SYS.DAQ[&quot;Modul&quot;][&quot;Controller&quot;][&quot;Parameter&quot;][&quot;Attribute&quot;].arch() для  прямого обращения к объекту архива, связанного с атрибутом параметра. </li><li> Добавлены функции пользовательского API enable() и start() для прямого контроля за состоянием объекта контроллера. </li></ul></li><li> <em>DAQ.JavaLikeCalc, Special.FLibComplex1, Special.FLibMath, Special.FLibSYS</em>: Добавлена функция динамического вызова библиотечных функций SYS.DAQ.JavaLikeCalc[&quot;lib_{Lib}&quot;].funcId(prms, ...). </li><li> <em>Archive</em>: Добавлены функции пользовательского API  status(), end() и begin() для доступа к состоянию и свойствам объекта  архиватора сообщений. </li><li> <em>DAQ.JavaLikeCalc</em>: <ul><li> Для типа данных &quot;null&quot; добавлена функция isEVal(), которая всегда возвращает &quot;true&quot;. </li><li> К объектам библиотечных функций добавлена функция пользовательского API call(). </li></ul></li><li> <em>DAQ.ModBus</em>: Добавлена функция  пользовательского API messIO() в объект контроллера &quot;ModBus&quot; с целью  предоставления возможности отправки нестандартных ModBus-запросов прямо  из шаблона параметра.</li></ul><p class="bodytext"> <a name="h1083-7"></a></p>
<h2>5 Общесистемные расширения</h2>
<p id="p80923-15" class="indent10 auto align-justify"> В общесистемное API системы OpenSCADA были внесены значительные изменения и расширения с целью общей стабилизации и расширения:</p><ul><li> <em>SYS</em>:  <ul><li> Объект хранения строки с ресурсом &quot;ResString&quot; значительно расширен на предмет прозрачного преобразования из/в тип std::string. </li><li> Добавлена возможность сохранения в конфигурационный файл: <ul><li> Добавлен префикс БД &quot;&lt;cfg&gt;&quot; для представления конфигурационного файла в роли источника загрузки/сохранения конфигурации. </li><li> Функции TDBS::dataSeek() и TDBS::dataDel() обновлены для строгой обработки конфигурационного файла. </li><li> Функция chkSelDB() адаптирована для поддержки записи в конфигурационный файл. </li><li> Добавлено сохранение больших и многострочных значений полей  конфигурации в текстовом поле отдельного тега конфигурационного файла. </li></ul></li><li> Тип &quot;long long&quot;, обычно 64-рязрядное целое заменён везде на более определённый &quot;int64_t&quot; на всех архитектурах. </li><li> Объекты потоков OpenSCADA жёстко слинкованы со своим потоком. Добавлена статистика загрузки и вызовов периодичных потоков. </li><li> Реализована возможность проверки загружаемых объектов на их  отсутствие в БД и удаление. Функция проверки активируется только в  случае прямой загрузки из БД. </li><li> Добавлена системная периодическая функция perSYSCall() вызова  объектов подсистем и их модулей. Используется для сервисных целей  ненагруженных и редких задач модулей и подсистем. </li><li> Функция тестирования выражения по шаблону перемещена в объект TRegExp. </li><li> <em>SYS.XMLNode</em>: <ul><li> Полностью удалён код использования XML-парсера &quot;Expat&quot;. </li><li> Добавлена возможность загрузки текстовых частей тега в  отдельные-специальные теги, в полном режиме. Предназначено для полного  сохранения конфигурации тега. </li><li> Добавлена возможность загрузки и сохранения блоков комментариев в отдельные-специальные теги, в полном режиме. </li></ul></li></ul></li><li> <em>DOC</em>: <ul><li> Выполнена проверка и исправление Английских текстов в ядре  OpenSCADA. Обновлены переводы ядра OpenSCADA на Немецкий, Русский и  Украинский языки. </li><li> Выполнена проверка и исправление Английских текстов модулей  OpenSCADA. Обновлены переводы модулей OpenSCADA на Немецкий, Русский и  Украинский языки. </li><li> Обновлены все основные документы на доступных языках:  openscada.pdf, build.pdf, properties.pdf, &quot;OpenSCADA API&quot;, &quot;Про  OpenSCADA&quot;, &quot;Библиотека TechApp&quot;, &quot;Quick Start&quot;, &quot;WLib Основные&quot;, &quot;WLib  Элементы мнемосхем&quot;.  </li></ul></li><li> <em>Базы данных библиотек</em>: <ul><li> Библиотека основных визуальных элементов дополнена кадрами  реализации редактирования и исполнения &quot;Рецептов&quot;-&quot;Пользовательских  программ&quot;. </li><li> К комплекту пакета библиотек добавлено <a name=".using.graphicelementslibraries.electroelements" href="http://wiki.oscada.org/Using/GraphicElementsLibraries/ElectroElements?v=ywe" title="Using&amp;nbsp;/&amp;nbsp;Graphic&amp;nbsp;Elements&amp;nbsp;Libraries&amp;nbsp;/&amp;nbsp;Electro&amp;nbsp;Elements">библиотеку элементов Электрических схем</a>.  </li><li> Кадр главной страницы дополнен механизмом &quot;проигрывания&quot; моделей технологических процессов (ТП). </li><li> Модель <a name=".using.modeldmkk9" href="http://wiki.oscada.org/Using/ModelDMKK9?v=yz3" title="Using&amp;nbsp;/&amp;nbsp;Model&amp;nbsp;DMKK&amp;nbsp;9">промышленного котлоагрегата</a> переведено на Английский и Украинский языки. </li></ul></li><li> <em>DB</em>: Добавлено временное ограничение в 5 секунд и поле указания начального смещения для запроса содержимого больших таблиц. </li><li> <em>DAQ</em>: Добавлена возможность выбора типа атрибута  шаблона &quot;Объект&quot;. Предназначено в первую очередь для хранения внутренних  данных в объекте и не может быть использовано как тип атрибута  параметра объекта контроллера источника данных. </li><li> <em>TArchives</em>: Добавлена возможность использования регулярных выражений при поиске по категории посредством &quot;/match/&quot; </li><li> <em>Transport</em>: Типы форматов исходящих запросов расширены вариантами текста с разным завершением строки: LF, CR, CR/LF. </li><li> <em>DAQ, DAQ.DiamondBoards, DAQ.ModBus, DAQ.LogicLev</em>: Добавлена возможность смены типа параметра для отключенных параметров многотиповых модулей подсистемы &quot;Сбор данных&quot;. </li><li> <em>DAQ.LogicLev, DAQ.Siemens, DAQ.ModBus</em>: В случае  выполнения по расписанию в атрибут &quot;f_frq&quot; записывается время после  последнего вычисления в отрицательном значении. Добавлены  инициализирующие и останавливающие вызовы при включении/выключении  параметра. </li><li> <em>TArchives, Archive.DBArch, Archive.FSArch</em>: Добавлена временная граница при запросе сообщений из архива. </li><li> <em>SYS.TConfig, Archives, DAQ, Security, Transports, Archive.*, DAQ.*, Protocol.UserProtocol, Transport.*, UI.VCAEngine, UI.WebUser</em>: Хранение строковых конфигурационных полей переведено в объект ресурсной строки &quot;ResString&quot;.</li></ul><p class="bodytext"> <a name="h1083-8"></a></p>
<h2>6 Публикация решений OpenSCADA</h2>
<p id="p80923-16" class="indent10 auto align-justify"> В процессе осуществления работ над данным релизом на разных конференциях  и выставках были представлены решения на основе проекта OpenSCADA:</p><ul><li> <a href="http://www.foss-sea.org.ua/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />FOSS Sea 2011</a>  — на конференции был зачитан доклад о решениях на основе OpenSCADA, а в  холе был организован мини-стенд с решениями на основе OpenSCADA вживую. </li><li> <a href="http://www.hi-techexpo.com/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />Международный инновационный форум 2011</a>  — в составе стенда OOO НИП &quot;ДІЯ&quot; и Днепродзержинского Государственного  Университета (ДГТУ) было представлено оборудование и материалы с  решениями на основе OpenSCADA. </li><li> <a href="http://conference.osdn.org.ua/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />10 Всеукраинская Конференция разработчиков и пользователей свободного ПО</a>  — на конференции был зачитан доклад о решениях на основе OpenSCADA, а в  холе был организован мини-стенд с решениями на основе OpenSCADA вживую. </li><li> Дни разработчиков QT <a href="http://qt.nokia.com/qtdevdays2011" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />Qt Developer Days 2011</a>  в Мюнхене и Сан-Франциско: в рамках этих мероприятий в Qt Demo Pavilion  состоялась демонстрация OpenSCADA посредством представления решений <a href="http://wiki.oscada.org/Using/ModelDMKK9" target="_blank" class="outerlink" >Динамическая модель парового котла №9 ДМК</a> на ПК и <a href="http://wiki.oscada.org/Using/ModelAGLKS" target="_blank" class="outerlink" >Динамическая модель реального времени Анастасиевской ГЛКС</a> на Nokia N9.</li></ul><p class="bodytext"> <a name="h1083-9"></a></p>
<h2>Заключение</h2>
<p id="p80923-17" class="indent10 auto align-justify"> Данным релизом системы OpenSCADA фактически завершена работа по  адаптации на аппаратную архитектуру ARM, что выразится в предоставлении и  публикации официальных сборок релиза 0.7.2 для мобильных устройств.</p>
<p id="p80923-18" class="align-justify auto indent10"> Хотя выпуск данного релиза несколько запоздал и затянулся он всё же был  тщательно подготовлен и станет хорошей основой для доводки кодовой базы  проекта к предстоящему ответственному релизу 0.8.0 LTS. Кроме этого  данный релиз можно использовать и для повсеместного внедрения и  применения в ответственных задачах с последующим плавным переходом на  0.8.0 LTS после его выхода.</p>
<p id="p80923-19" class="indent10 auto align-justify"> Последующие усилия разработчиков будут направлены на завершения плановых  заданий и подготовке к выпуску релиза OpenSCADA продолжительной  поддержки (LTS) версии 0.8.0.</p>]]></content:encoded>
			<category>Новость</category>
			<category>Релиз</category>
			
			<author>rom_as@oscada.org</author>
			<pubDate>Mon, 05 Dec 2011 16:00:00 +0200</pubDate>
			
		</item>
		
		<item>
			<title>27-30го сентября 2011г. в городе Киев (Украина), состоялся международный инновационный форум, а 1 октября конференция и выставка открытых решений - FOSS 2011</title>
			<link>http://oscada.org/ru/khranilishche-novostei/odinochnaja-stranica/article/on-september-27-30th-2011-in-city-kiev-ukraine-the-international-innovation-forum-and-on-october/</link>
			<description>На стенде Днепродзержинского Государственного Университета (ДГТУ) и фирмы ООО НИП &quot;ДІЯ&quot;, в рамках...</description>
			<content:encoded><![CDATA[<p class="align-justify indent10">На форуме и выставке были представлены следующие решения OpenSCADA:</p><ul><li>Динамические модели технологических процессов и систем управления ими: Газо-лифтная компрессорная станция на шесть компрессоров, Многотопливный паровой котлоагрегат БКЗ-160.</li><li>Модель и контроллер (ICP_DAS) САУ шаровой барабанной мельницы помола угля для котлоагрегатов ТЭЦ.</li><li>OpenSCADA на мобильном устройстве: Nokia N800, N950.</li><li>OpenSCADA на промышленных контроллерах: ICP_DAS LP-8781, LP-5141.</li></ul>]]></content:encoded>
			<category>Новость</category>
			<category>Доклад</category>
			<category>Публикация</category>
			
			<author>rom_as@oscada.org</author>
			<pubDate>Sun, 25 Sep 2011 09:15:00 +0300</pubDate>
			
		</item>
		
		<item>
			<title>Сборка OpenSCADA и прошивки для ARM-контроллеров фирмы ICP DAS (LP-5141)</title>
			<link>http://oscada.org/ru/khranilishche-novostei/odinochnaja-stranica/article/building-openscada-and-firmware-for-arm-controllers-of-icp-das-company-lp-5141/</link>
			<description>Имя: LP-5xxx
Основан: август 2011г
Завершен: сентябрь 2011г
Версия: 1.0.0
Участники: Роман...</description>
			<content:encoded><![CDATA[<p id="p21236-4" class="indent10 auto align-justify"> Фирма <a href="http://www.icpdas.com/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">ICP_DAS</a> достаточно давно выпускает контроллеры на процессорах <a href="http://ru.wikipedia.org/wiki/ARM" target="_blank" class="outerlink" >ARM</a> архитектуры с предустановленным окружением <a href="http://ru.wikipedia.org/wiki/Linux" target="_blank" class="outerlink" >ОС Linux</a>, что делает интересным создание сборки OpenSCADA или новой прошивки с OpenSCADA.</p>
<p id="p21236-5" class="auto indent10"> До последнего момента ряд причин препятствовали созданию сборки OpenSCADA для ARM-контроллеров ICP DAS:</p><ul><li> отсутствие на руках одного из ARM-контроллеров; </li><li> неготовность OpenSCADA для работы на ARM-архитектуре; </li><li> крайне устаревшее окружение Linux ARM-контроллеров фирмы &quot;ICP DAS&quot;.</li></ul><p id="p21236-7" class="indent10 auto align-justify"> На данный момент все эти препятствия были устранены. Так, благодаря  Петру Литковцу на руках появился контроллер LP-5141, а к этому моменту  OpenSCADA в значительной степени была уже адаптирована к работе на  ARM-архитектуре, посредством отработки и стабилизации на наладонном  компьютере фирмы <a href="http://www.nokia.ru/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">Nokia</a> - <a href="http://ru.wikipedia.org/wiki/Nokia_N800" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">N800</a>.  В последствии же работы с контроллером LP-5141 было устранено последнее  препятствие путём обновления исходного программного окружения с  сохранением изначального функционала.</p>
<p id="p21236-7" class="indent10 auto align-justify">В общем, целью данного проекта является отработка механизмов и создание  сборки OpenSCADA для контроллеров семейства ARM фирмы &quot;ICP DAS&quot;, а также  создание прошивок под контроллеры &quot;ICP DAS&quot;, которые будут попадать в  руки разработчиков OpenSCADA.</p>
<h2>1. ПЛК LP-5141</h2>
<p id="p51258-8" class="align-justify auto indent10"> ПЛК (рис.1) конструктивно выполнен в виде моноблока, который не содержит  встроенного УСО, кроме возможности установки одной специальной платы  расширения IO, а подключение внешнего осуществляется посредством  встроенного интерфейса RS-485, например, в виде модулей серии I-7000  фирмы &quot;ICP DAS&quot;.</p><div style="float:center; text-align:center"><p class="bodytext"><img src="http://wiki.oscada.org/Using/LP5xxx/files?get=lp5141.png" alt=" (27&amp;nbsp;Кб)" title=" (27&amp;nbsp;Кб)" height="200" width="154"><br /> Рис. ПЛК серии LP-5xxx.</p></div><p id="p21236-9" class="auto">&nbsp;</p>
<p id="p21236-9" class="auto indent10"> Процессор контроллера имеет следующие технические характеристики:</p><table rules="all" frame="box" style="border-style: solid; border-color: rgb(0, 0, 0);" class="contenttable"><thead><tr class="userrow"><th scope="col" class="usercell"><p class="bodytext"> CPU </p></th><th scope="col" class="usercell"><p class="bodytext"> PXA270 или совместимый (32-бит и 520МГц) </p></th></tr></thead><tbody> <tr class="userrow"><td class="usercell"><p class="bodytext"> SDRAM </p></td><td class="usercell"><p class="bodytext"> 128 MB </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> Flash </p></td><td class="usercell"><p class="bodytext"> 64 MB </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> EEPROM </p></td><td class="usercell"><p class="bodytext"> 16 KB<br /> Хранение данных: 40 лет; 1,000,000 циклов удаления/записи. </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> Расширенная Flash память </p></td><td class="usercell"><p class="bodytext"> microSD сокет с одной microSD картой на 2GB (может поддерживать 16 GB microSDHC карты) </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> 64-бит Серийный Номер Оборудования </p></td><td class="usercell"><p class="bodytext"> Есть </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> Двойной Watchdog таймер </p></td><td class="usercell"><p class="bodytext"> Есть </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> VGA </p></td><td class="usercell"><p class="bodytext"> 800 × 600 </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> Ethernet порты </p></td><td class="usercell"><p class="bodytext"> RJ-45 x 2, 10/100 Base-TX Ethernet Контроллер (Авто-согласование, авто MDI/MDI-X, LED индикатор) </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> USB 1.1 (хост) </p></td><td class="usercell"><p class="bodytext"> 1 </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> COM1 (/dev/ttySA0) </p></td><td class="usercell"><p class="bodytext"> RS-232 (RxD, TxD and GND); Не изолирован </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> COM2 (/dev/ttySA1) </p></td><td class="usercell"><p class="bodytext"> RS-485 (D2+,D2-); 2500 VDC; изолирован </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> COM3 (/dev/ttySA3) </p></td><td class="usercell"><p class="bodytext"> RS-232 (RxD, TxD and GND); Не изолирован </p></td></tr> <tr class="userrow"><td class="usercell"><p class="bodytext"> Рабочая температура </p></td><td class="usercell"><p class="bodytext"> -25 ~ +75 °C </p></td></tr></tbody></table><h2>2. Программное окружение на основе OpenSCADA.</h2>
<p id="p21236-10" class="indent10 auto align-justify"> Программное окружение, основанное на ОС Linux, для ARM контроллеров  фирмы ICP DAS обычно имеет: ядро Linux 2.6.19, GLibC 2.2.5 и GCC 2.95.  Для сборки стороннего ПО фирмой ICP-DAS предоставляется SDK с  кросскомпилятором, набором библиотек и заголовков к ним (Linux  toolchain). Как можно видеть, версии GLibC и GCC очень старые, а именно  времён 2001 года. Сборка OpenSCADA в таком окружении фактически  невозможна. Если использование GLibC версии 2.2.5 ещё возможно, то GCC  версии 2.95 имеет C++ компилятор, который на сборке кода OpenSCADA  просто рушится, а стандартная библиотека C++ или STL крайне ограничена и  под неё требуется значительная и главное бессмысленная адаптация. По  этой причине потребовалось обновление исходного программного окружения  до версии GCC компилятора или библиотеки C++ не менее 3.</p>
<p id="p21236-11" class="indent10 auto align-justify"> Поскольку внутренняя флешь-память имеет сравнительно небольшой объём (64  Мб), а полная пересборка исходного программного окружения контроллера —  достаточно трудоёмкий процесс, то решено было обеспечить совместимость  базовых библиотек нового и старого окружения. А именно, возможность  использовать библиотеки вроде fontconfig, i8k из исходного окружения и  работу программ исходного окружения с новыми библиотеками.</p>
<p id="p21236-12" class="indent10 auto align-justify"> В процессе подбора нового программного окружения для процессора PXA-270  контроллера &quot;ICP DAS&quot; было опробовано несколько вариантов, поскольку  часть из них обладала теми или иными недостатками:</p><ul><li> <em><a href="http://kegel.com/crosstool" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />crosstool-0.43</a></em>  — интересный хотя и устаревший проект (последняя версия 2006 года) по  сборке Linux кроссокружения под нужное оборудование. Был отложен после  нескольких неудачных попыток собрать новое окружение для работы с  &quot;Software FP&quot; и &quot;VFP&quot;. Как в последствии оказалось для объектных файлов  исходного окружения некорректно показывается информация о якобы наличии  там &quot;Software FP&quot; и &quot;VFP&quot;, хотя на самом деле операции с вещественными  числами там осуществляются посредством &quot;FPA&quot;. В последствии решения  проблемы, описанной в разделе &quot;<a href="http://wiki.oscada.org/Using/LP5xxx?v=brs#h1076-5" name="oh1076-5">Замечания</a>&quot;,  с помощью данного инструмента был собран ToolChain на основе профиля  &quot;arm-xscale.dat&quot; и &quot;gcc-4.0.2-glibc-2.3.6-tls.dat&quot;, который в конечном  итоге был положен в основу новой прошивки. </li><li> <em><a href="http://pxa-linux.sourceforge.net/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />PXA-Linux Project</a></em> — проект по созданию независимого набора инструментов Linux для сборки под процессор PXA. Имеет бинарную сборку <a href="ftp://ftp.arm.linux.org.uk/pub/armlinux/people/xscale/mainstone/02-25-2005/bin/arm-linux-toolchain-bin-12-15-04-driscoll.tar.gz" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/file.gif" />02-25-2005/bin/arm-linux-toolchain-bin-12-15-04-driscoll.tar.gz</a>.  Оказалось, что эта сборка собрана с &quot;Software FP&quot; и &quot;VFP&quot;, а также  имеет проблемы в виде отключения ряда расширение компилятора gcc,  например: __attribute__((packed)). </li><li> <em><a href="http://voipac.com/" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />Voipac</a></em> — бинарная сборка инструментов кросскомпиляции (<a href="http://voipac.com/downloads/pxa/toolchain/bin/arm-linux-gcc-3.4.1.tar.gz" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/file.gif" />arm-linux-gcc-3.4.1.tar.gz</a>)  от фирмы &quot;Voipac&quot; для собственного оборудования на процессоре PXA-270.  Данный набор подошёл идеально по всем параметрам и первоначально сборка  проводилась с помощью него. Данный ToolChain был собран с помощью ранее  рассмотренного <a href="http://kegel.com/crosstool" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />crosstool</a>.</li></ul><p id="p21236-14" class="indent10 auto align-justify"> Результирующее окружение контроллера с OpenSCADA было сформировано путём  замены базовых библиотек исходного окружения на библиотеки из нового  набора инструментов, сборки OpenSCADA и помещения файлов OpenSCADA в  дерево исходного окружения.</p>
<p id="p21236-15" class="auto indent10"> OpenSCADA была собрана с отключением ряда библиотек и модулей. Так, были собраны и проверены модули и функции OpenSCADA:</p><ul><li> <em>Ядро OpenSCADA</em>  — собрано с библиотекой LibGD2 (работа проверена). В процессе проверки и  адаптации расширены функции хранения конфигурации OpenSCADA в  конфигурационном файле. </li><li> <em>DB.SQLite</em> — БД SQLite (работа проверена). Собрана  библиотека и модуль OpenSCADA для работы с БД SQLite. В процессе  проверки обнаружена и выполнен обход ошибки в GLibC 2.3.2, связанной с  отсутствием проверки на взаимо-блокирование &quot;rw&quot;-ресурсов. </li><li> <em>DB.DBF</em> — БД DBF (работа проверена). Модуль работы с DBF-файлами версии 3. </li><li> <em>Transport.Sockets</em> — Модуль транспорта Сокетов TCP,  UDP и Unix (работа проверена). В процессе использования TCP-сокетов  обнаружена и устранена неинициализация структуры проверки состояния  сокета. </li><li> <em>Transport.SSL</em> — Модуль транспорта безопасных сокетов: SSL, TLS (работа проверена). </li><li> <em>Transport.Serial</em> — Модуль транспорта последовательных  интерфейсов (работа проверена). Выяснилось, что COM3 почему-то  расположен на устройстве /dev/ttySA3. </li><li> <em>Protocol.SelfSystem</em> — Модуль собственного протокола OpenSCADA (работа проверена). </li><li> <em>Protocol.HTTP</em> — Модуль реализации протокола HTTP (работа проверена). </li><li> <em>Protocol.ModBus</em> — Модуль реализации протокола ModBus (работа проверена). Конфигурация станции как сервера данных посредством протокола ModBus. </li><li> <em>Protocol.OPC_UA</em> — Модуль реализации протокола OPC UA  (работа проверена). Конфигурация станции как сервера данных посредством  протокола OPC UA. Обнаружена проблема различия представления  вещественного на x86 и ARM FPA! </li><li> <em>Protocol.UserProtocol</em> — Модуль свободной реализации простых протоколов пользователем посредством языка программирования OpenSCADA (работа проверена). </li><li> <em>DAQ.System</em> — Модуль данных операционной системы (работа проверена). Собран без использования библиотеки LibSensors. </li><li> <em>DAQ.JavaLikeCalc</em> — Модуль реализации Java-подобного пользовательского языка и вычислений на его основе (работа проверена). </li><li> <em>DAQ.BlockCalc</em> — Модуль реализации блочных вычислений (работа проверена). </li><li> <em>DAQ.LogicLev</em> — Модуль реализации источников данных логического уровня (работа проверена). </li><li> <em>DAQ.ModBus</em> — Модуль работы с источниками данных посредством протокола ModBus (работа проверена). </li><li> <em>DAQ.DCON</em> — Модуль работы с источниками данных  посредством протокола DCON (работа проверена). Например, с устройствами  ICP_DAS серии I-7000. Обнаружено и исправлено падение при получении  отрицательного размера ответа. Результат ответа возвращается теперь  всегда &gt;= 0. </li><li> <em>DAQ.ICP_DAS</em> — Модуль источников данных ICP_DAS (<span class="cl-blue">нет оборудования для проверки</span>).  Последовательные серии: I-87000 и I-7000; параллельные (быстрые): серии  I-8000. Модуль собран с библиотекой libi8k.a для ARM-архитектуры.<br /> </li><li> <em>DAQ.DAQGate</em> — Модуль реализации шлюзования источников данных других станций OpenSCADA (работа проверена). </li><li> <em>DAQ.OPC_UA</em> — Модуль работы с источниками данных  посредством протокола OPC_UA (работа проверена). Обнаружена проблема  различия представления вещественного на x86 и ARM FPA - добавлено  преобразование при передаче! </li><li> <em>DAQ.Siemens</em> — Модуль работы с контроллерами Siemens, посредством Industrial Ethernet (ISO_TCP) (работа проверена). </li><li> <em>DAQ.SNMP</em> — Модуль сбора данных сетевого оборудования по протоколу SNMP (работа проверена). </li><li> <em>Archive.DBArch</em> — Модуль архивирования на БД (работа проверена). </li><li> <em>Archive.FSArch</em> — Модуль архивирования на файловую  систему (работа проверена). Обнаружена проблема при проверке архива,  выдача сообщения при запуске: &quot;Error archive file structure:  &lt;ARCHIVES/VAL/1s/CPULoad_load 2011-09-12 17:47:17.val&gt;. Margin =  -8 byte. Will try fix it!&quot;. В результате выяснено, что алгоритм быстрого  подсчёта битов не выравнен на 4 байта при чтении буфера памяти -  исправлено. </li><li> <em>UI.WebCfg</em> — Модуль Web конфигуратора OpenSCADA (работа проверена). </li><li> <em>UI.WebCfgD</em> — Модуль Web динамического конфигуратора OpenSCADA (работа проверена). </li><li> <em>UI.VCAEngine</em> — Модуль движка визуализации (работа проверена). </li><li> <em>UI.WebVision</em> — Модуль визуализатора пользовательских интерфейсов в <em>UI.VCAEngine</em> посредством Web-интерфейса (работа проверена). </li><li> <em>UI.WebUser</em> — Модуль свободной пользовательской визуализации посредством Web-интерфейса (работа проверена). </li><li> <em>Special.FLibComplex1</em> — Библиотека функций совместимости с Complex1(ООО НИП &quot;ДІЯ&quot;) (работа проверена). Используются для блочного программирования. </li><li> <em>Special.FLibMath</em> — Библиотека стандартных математических функций (работа проверена). </li><li> <em>Special.FLibSYS</em> — Библиотека системных функций расширения OpenSCADA (работа проверена).</li></ul><h2>3. Замечания</h2>
<p id="p21236-19" class="indent10 auto align-justify"> Поскольку выяснилось, что операции с вещественными числами выполняются  посредством команд сопроцессора FPA (Float Point Acceleration), которого  в данном процессоре просто нет, а вызовы самих команд осуществляются  через исключение имитацией в ядре Linux, то производительность  математических вычислений оказывается крайне низкой, даже в сравнении с  прямым &quot;Software FP&quot;, &quot;VFP&quot;. Например, вычисление одной операции <strong>sin(pi)</strong> осуществляется ~200 мкс, в сравнении с ~15 мкс на N800 с VFP и ~2 мкс на x86, детальнее в таблице по <a name=".using.plc" href="http://wiki.oscada.org/Using/PLC?v=18jj#h1086-1" title="Using&amp;nbsp;/&amp;nbsp;PLC">этой ссылке</a>.  Таким образом, рассматривать данный контроллер как платформу для хоть  сколь-нибудь серьёзных вычислений нельзя! Мало того, вещественные числа  при работе с FPA хранятся по-другому, а именно - особый <em>big-endian</em>, что требует преобразования в случае с бинарным внешним обменом в типовое <em>little-endian</em> представление, например, для DAQ.OPC_UA.</p>
<p id="p21236-20" class="indent10 auto align-justify"> В исходной конфигурации порт COM1 (/dev/ttySA0) используется в роли  консоли, которая инициализируется командой ядра &quot;console=/dev/ttySA0&quot;.  Однако, после настройки это не нужно, а часто и желательно освободить  ещё один COM-порт для других целей. Освободить COM1 от работы на консоль  можно переназначив другое устройство для этой роли, например, командой:  <strong>$ busybox setconsole /dev/tty1</strong>. Однако, этот способ не  полностью освобождает COM-порт и запросы теряются, вычитываясь  параллельным подключением. Вероятно нужно отредактировать параметры  строки запуска ядра в загрузчике U-Boot, хотя войти в него можно только в  положении RS=2, для которого однако параметры инициализации отделены от  основного режима работы RS=0. Нужно добиться входа в U-Boot от  основного режима работы RS=0!</p>
<p id="p21236-21" class="indent10 auto align-justify"> В процессе использования созданного программного окружения с OpenSCADA  обнаружена странная проблема, которая заключается в падении OpenSCADA  при доступе к экземпляру ресурсной строки из разных потоков. Проблема  воспроизводится при опросе контроллера по протоколу ModBus/RTU с  периодичностью 100мс, опросе отсутствующего модуля посредством DCON на  том же интерфейсе RS485, что и ModBus/RTU. В этот же момент  осуществляется периодическая (1 секунда) запись двух регистров в  опрашиваемый по протоколу ModBus/RTU контроллер. Падение происходит не  сразу, а в течение 10 минут - 5 часов. Разбор проблемы:</p><div class="indent"><p class="bodytext">(*) В случае отключения записи в контроллер по протоколу ModBus/RTU падения не наблюдаются.<br /> (*) Выяснено, что падения начинают происходить в случае достижения  функции TMdContr::modBusReq() модуля DAQ.ModBus, а именно параллельного  доступа к свойству объекта контроллера &quot;mPrt&quot; в контексте конструктора  &quot;XMLNode req(mPrt);&quot; из разных потоков чтения и записи.<br /> (*) Для выяснения природы проблемы была настроена генерация  предсмертного дампа памяти, а также собран кроссовый отладчик gdb. При  изучении предсмертного дампа памяти выяснено, что происходит разрушение  стека и разумных причин в OpenSCADA для данного явления нет, а значит  это проблема системного окружения для специфических условий.<br /> (*) При доступе к свойству &quot;mAddr&quot; в первой строке функции  TMdContr::modBusReq() и проблемном контексте &quot;XMLNode req(mPrt);&quot; (при  неполной записи) падения не замечено.<br /> (*) Проверка вызова второй строки &quot;XMLNode req(mPrt);&quot; при записи и в  целом с постоянной &quot;RTU&quot;. При замене на &quot;RTU&quot; в целом падение замечается  уже в другом месте. При замене только неполной записи падение не  замечается. Вторым и последним местом падения оказалась следующая строка  <strong>req.setAttr(&quot;id&quot;,id())</strong>. Общее между ними то, что  осуществляется доступ к элементу конфигурации строкового типа,  использующему объект ресурсного типа &quot;ResString&quot;. Вывод: текущее  программное окружение некорректно работает с объектом &quot;ResString&quot; при  доступе на чтение (немодифицирующий) из двух разных потоков.<br /> (*) Способ хранения объекта &quot;ResString&quot; в элементе конфигурационного  поля &quot;TCfg&quot; значения не имеет, а именно — падение наблюдается при прямом  хранении &quot;ResString&quot; в &quot;TCfg&quot;, а также при прямом обращении к объекту  &quot;string&quot; внутри &quot;ResString&quot; в случае с &quot;id()&quot;.<br /> (*) Проверка при отключении охвата ресурсом проблемы не решает.<br /> (*) Сборка нового окружения с помощью &quot;PTXDist&quot; и запуск его через  &quot;chroot&quot;: при запуске EABI окружения для TionPro270 из под chroot  происходит ошибка &quot;Illegal instruction!&quot;. Не запускается EABI ядро от  TionPro270 c похожей ошибкой. Собранный ToolChain из профиля  &quot;arm-xscale_hardfloat-linux-gnu_gcc-4.0.4_glibc-2.3.6_binutils-2.17_kernel-2.6.18.ptxconfig&quot;  в &quot;OSELAS.Toolchain-2011.11.0&quot; падает с ошибкой сегментации при запуске  OpenSCADA, собранной под исходное окружение.<br /> (*) Сборка OpenSCADA с включением всех нужных модулей в библиотеку ядра OpenSCADA проблему также не решает.<br /> (*) Осуществлена проверка той же конфигурации на другом PXA270-устройстве (<a href="http://wiki.oscada.org/Using/PLC#h1086-5" target="_blank" class="outerlink" >TionPro270</a>)  для окончательного выяснения источника проблемы (аппаратного или  программного окружения) — конфигурация проработала беспроблемно двое  суток.<br /> (*) Заменить в объекте TCfg &quot;ResString&quot; на обычный &quot;string&quot; с выносом  ресурса доступа в объект контейнера TConfig, заодно и уменьшив  потребление памяти посредством обобщения ресурса доступа к объекту  строки, — замена осуществлена, проблема осталась.<br /> (*) Вычитать сборку с заменой &quot;ResString&quot; на обычный &quot;string&quot; в TCfg и проверить место текущего падения — место падения то же.<br /> (*) Взять &quot;crosstool&quot; и собрать несколько более свежий toolchain —  собран toolchain &quot;gcc-4.0.2-glibc-2.3.6-arm-xscale-linux-gnu&quot;, проблема  воспроизводится, скорее всего проблема в работе с памятью текущего ядра.  В процессе изучения найдены прецеденты с подобными проблемами в  glibc-2.2 — 2.7, которые содержат реализацию malloc, небезопасную для  потоков (nothread-safe).<br /> (*) Замена аллокатора памяти — не удалось найти рабочей и при этом  прозрачной реализации стороннего аллокатора, ptmalloc3 просто падает.<br /> (*) Сборка ToolChain и OpenSCADA со всеми возможными параметрами  включения thread-safe — во всех вариантах проблема присутствует, а  именно на ToolChain с параметрами GLibC: &quot;<strong>--with-tls --with-__thread</strong>&quot; и OpenSCADA собрана с параметрами: &quot;<strong>-pthread -D_REENTERANT</strong>&quot;.<br /> (*) Перехват обращений аллокации памяти и оборачивание глобальным ресурсом функций &quot;С&quot; <strong>malloc</strong>, <strong>free</strong> и &quot;С++&quot; new, delete   — падения наблюдаются.<br /> (+) Проверка гипотезы проблемности реализации (атомарности) COW (Copy on  Write) алгоритма в объекте &quot;string&quot; — копирование из объекта &quot;string&quot;  хранилища выполнено посредством <strong>val.c_str()</strong>, что  исключает выполнение COW: подтверждено, что данная проблема связана с  алгоритмом COW, а именно с атомарностью доступа к счётчику строк  &quot;_Atomic_word _M_refcount;&quot;, вероятно, из-за устаревшей системы потоков  linuxthread.</p></div><h2>4. Заключение</h2>
<p id="p21236-22" class="indent10 auto align-justify"> В результате была получена сборка OpenSCADA для Linux контроллеров  ARM-архитектуры фирмы &quot;ICP DAS&quot;. Сборку можно загрузить прямо на любой  Linux-ARM контроллер, распаковав её в корне работающей исходной системы.  При этом, однако, останутся дубликаты старых базовых библиотек  (/lib/*), которые после удачной перегрузки можно удалить.</p>
<p id="p21236-23" class="indent10 auto align-justify"> Для контроллеров семейства LP-5x4x создана прошивка со сборкой  OpenSCADA, которую можно загрузить стандартным для данных контроллеров  образом, который описан в фирменной документации &quot;ICP DAS&quot;. Прошивка для  LP-5x4x возможно подойдёт и для LP-5x3x, однако это не проверялось!</p>
<p id="p21236-24" class="indent10 auto align-justify"> Ввиду устаревшей и неоптимальной исходной сборки Linux окружения от  &quot;ICP_DAS&quot;, что накладывает ограничение на свободу сборки оптимального  окружения, по завершению проекта планируется обратиться к фирме  &quot;ICP_DAS&quot; с просьбой исправить данное положение дел.</p><div class="indent"><p class="bodytext">(*) Обращение осуществлено однако никакой реакции, вплоть до ответа на запрос, не последовало!</p></div>]]></content:encoded>
			<category>Новость</category>
			<category>Решение</category>
			
			<author>rom_as@oscada.org</author>
			<pubDate>Fri, 23 Sep 2011 09:53:00 +0300</pubDate>
			
		</item>
		
		<item>
			<title>16-18го сентября 2011г. на море, в городе Одесса (Украина), состоялась конференция и выставка открытых решений - FOSS Sea 2011</title>
			<link>http://oscada.org/ru/khranilishche-novostei/odinochnaja-stranica/article/on-september-16-18th-2011-in-odessa-the-conference-of-developers-and-users-of-the-free-software-and/</link>
			<description>Конференция разработчиков и пользователей свободного программного обеспечения организовывается...</description>
			<content:encoded><![CDATA[<p class="indent10 align-justify">На выставке были представлены следующие решения OpenSCADA:</p><ul style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 6px; padding-left: 60px; overflow-x: auto; overflow-y: auto; "><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 0px; "><span class="right-column inline-block" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Динамические  модели технологических процессов и систем управления ими: Газо-лифтная  компрессорная станция на шесть компрессоров, Многотопливный паровой  котлоагрегат БКЗ-160.</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 0px; "><span class="right-column inline-block" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">Модель и контроллер (ICP_DAS) САУ шаровой барабанной мельницы помола угля для котлоагрегатов ТЭЦ.</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 0px; "><span class="right-column inline-block" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">OpenSCADA на мобильном устройстве: Nokia N800, N950.</span></li><li style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; text-indent: 0px; "><span class="right-column inline-block" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">OpenSCADA на промышленных контроллерах: ICP_DAS LP-8781, LP-5141.</span></li></ul>]]></content:encoded>
			<category>Новость</category>
			<category>Доклад</category>
			<category>Публикация</category>
			
			<author>rom_as@oscada.org</author>
			<pubDate>Mon, 19 Sep 2011 11:00:00 +0300</pubDate>
			
		</item>
		
	</channel>
</rss>
