<?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/ua/golovna/relizi/odinochna-storinka/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 style="margin: 0px 0px 5px; "><li>24.10.2010 - Промисловий реліз 0.7.0.</li><li>19.12.2010 - Перше&nbsp;планове&nbsp;оновлення&nbsp;промислового&nbsp;релізу. Виправлено біля&nbsp;30 помилок.</li><li>01.03.2011 - Друге планове&nbsp;оновлення&nbsp;промислового&nbsp;релізу. Виправлено більш 30 помилок.</li><li>09.05.2011 - Трете планове&nbsp;оновлення&nbsp;промислового&nbsp;релізу. Виправлено більш 30 помилок.</li><li>09.07.2011 - Четверте планове&nbsp;оновлення&nbsp;промислового&nbsp;релізу. Виправлено більш 15 помилок та додано деякі удосконалення.</li><li>12.10.2011 - П'яте планове&nbsp;оновлення&nbsp;промислового&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="p29849-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="p29849-3" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Основною метою цього релізу є надання співтовариству користувачів та розробників вільного програмного забезпечення (ПЗ) платформи для побудови рішень комплексних систем автоматизації та інших суміжних рішень, а також надання комерційних послуг на основі проекту OpenSCADA.</p>
<p id="p29849-3" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Цей реліз є першим стабільним релізом, для якого надається технічна підтримка від розробників та для якого планується випуск виправлень протягом довгого проміжку часу.</p>
<p id="p29849-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="p29849-3" 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; ">Удосконалення та стабілізація СВК.</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="p29849-8" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="auto indent10">&nbsp;</p>
<p id="p29849-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="h1022-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="p29849-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="h1022-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="p29849-10" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">У процесі робот над цією версією, а також її практичної адаптації, було виявлено та виправлено в загальній складності біля 200 помилок.</p>
<p id="p29849-10" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Крім виправлення багатьох помилок була зроблена робота по оптимізації різних компонентів OpenSCADA. Особливо помітної оптимізації все ще було піддано середовище візуалізації та керування (СВК) та його візуалізатори.</p>
<p id="p29849-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="p29849-13" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="auto indent10">&nbsp;</p>
<p id="p29849-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="p29849-14" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="auto indent10">&nbsp;</p>
<p id="p29849-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="h1022-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="p29849-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="p29849-16" 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; "><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="h1022-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="p29849-17" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Значним чином було виконано формування нового об'єктного API програмування користувача, яке передбачає інтеграцію функцій користувача у дерево об'єктів системи OpenSCADA. Крім цього було внесено низку змін до існуючих бібліотек функцій API користувача.</p>
<p id="p29849-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="h1022-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="p29849-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="h1022-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="p29849-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="h1022-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="p29849-21" 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; ">Додано переклад 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="h1022-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="p29849-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="h1022-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="p29849-23" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">На основі проекту OpenSCADA побудовано фактично весь спектр рішень автоматизації, які яскраво демонструють можливості, а також становлять сигнал готовності системи для широкого промислового застосування.</p>
<p id="p29849-23" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">В цілому на основі OpenSCADA авторами проекту вирішувалися завдання: повного динамічного моделювання технологічних процесів (ТП), управління ТП на рівні програмованого логічного контролеру (ПЛК) та формування людино-машинного інтерфейсу ТП.</p>
<p id="p29849-23" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Моделювання ТП представлено рішеннями: «Бібліотека моделей апаратів технологічних процесів», «Динамічна модель реального часу Анастасіївської ГЛКС» та «Динамічна модель парового котлу №9 ДМК». Причому рішення «Динамічна модель реального часу Анастасіївської ГЛКС» було покладено у основу демонстраційної БД проекту та яка розповсюджується зі всіма дистрибутивами OpenSCADA.</p>
<p id="p29849-23" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Сфера управління ТП на рівні програмованого логічного контролера (ПЛК) представлена рішеннями: «OpenSCADA у програмованому логічному контролері (ПЛК)» та «Середовище виконання ПЛК LP-8x81 фірми ICP DAS на основі OpenSCADA».</p>
<p id="p29849-23" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Сферу формування людино-машинного інтерфейсу ТП представлено рішеннями: «Бібліотеки графічних елементів інтерфейсів користувача» та «АСУ ТП кульовими млинами ШБМ 287\410 котлоагрегату БКЗ 160–100 ПТ».</p>
<p id="p29849-23" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Потрібно також відзначити наявність низки рішень, які не увійшли до вищенаведеного переліку, та виконаних розробниками системи для третіх осіб або безпосередньо її користувачами.</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="p29849-29" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">Система OpenSCADA готова для практичного використання у складних промислових умовах та виконання широкого спектру завдань автоматичного управління технологічними процесами.</p>
<p id="p29849-29" style="font-family: Verdana; font-size: 13px; margin: 0px; padding: 0px; " class="indent10 auto align-justify">З метою надання якісного сервісу на основі рішень OpenSCADA, а також розвитку у напрямку підтримки спеціалізованого обладнання, протоколів та інтерфейсів; розробниками планується, та активно ведеться, робота по формуванню політики надання послуг на комерційній основі. У число комерційних послуг буде входити: технічна підтримка, консультації та цільова розробка розширень, інтеграція та впровадження рішень, а також розробка спеціалізованих рішень та продуктів на основі OpenSCADA.</p>
<p id="p29849-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="p29849-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/ua/novini/odinochna-storinka/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/ua/novini/odinochna-storinka/article/production-release-of-openscada-080-lts/</link>
			<description>Промислова версія призначена для повсюдної інтеграції до рішень автоматизації для платформ Linux...</description>
			<content:encoded><![CDATA[<div style="text-align: center; "><h1>OpenSCADA 0.8.0 LTS</h1></div><h2>Зміни</h2><ul style="margin: 0px 0px 5px; "><li>06.04.2012 — Промисловий реліз 0.8.0.</li></ul><h2>Вступ</h2>
<p id="p38007-3" class="align-justify auto indent10"> Реліз відкритої SCADA(Supervisory control and data acquisition) системи  версії 0.8.0 є стабільним промисловим релізом тривалої підтримки (LTS).</p>
<p id="p38007-4" class="indent10 auto align-justify"> Основною метою цього релізу є надання співтовариству користувачів та  розробників вільного програмного забезпечення (ПЗ) стабільної платформи  для побудови рішень комплексних систем автоматизації та інших суміжних  рішень, а також надання комерційних послуг на основі проекту OpenSCADA.</p>
<p id="p38007-5" class="align-justify auto indent10"> Цей реліз є наступним стабільним релізом, для якого надається технічна  підтримка від розробників та для якого планується випуск виправлень на  протязі тривалого часу. Життєвий цикл попереднього стабільного релізу  0.7.0 тривалої підтримки (LTS) буде припинено протягом місяця після  випуску 0.8.0, останнім поновленням.</p>
<p id="p38007-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="p38007-7" class="auto indent10"> Ключовими особливостями цієї версії є:</p><ul><li> Реалізація планових задач. </li><li> Оптимізація, підвищення стабільності, стійкості та продуктивності системи. </li><li> Удосконалення та стабілізація графічної підсистеми. </li><li> Формування, розширення та стабілізація API користувацького програмування. </li><li> Загальносистемні розширення. </li><li> Публікація рішень OpenSCADA.</li></ul><p id="p38007-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="h1100-3"></a></p>
<h2>1 Реалізація планових задач</h2>
<p id="p38007-9" class="auto indent10"> У відповідністю з планом релізу було виконано наступні завдання:</p><ul><li> <em>Формування надання комерційних послуг на основі OpenSCADA.</em> - Побудовано концепцію та створено механізми надання комерційних послуг розробниками на основі OpenSCADA (<a href="../ua/poslugi" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" />http://oscada.org/ua/poslugi</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> (RU)). Виконано збірку та адаптацію 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> Функцію usleep() скрізь замінено на власну функцію-обгортка TSYS::sysSleep() по причині відсутності функції <em>usleep()</em> у &quot;uCLibc&quot; та доступності її тільки при спеціальній конфігурації збірки 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> В алгоритмі швидкого підрахунку кількості бітів виправлено функцію невирівнюваного читання <em>TSYS::getUnalign32()</em>.  </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="h1100-4"></a></p>
<h2>2 Оптимізація, підвищення стабільності, стійкості та продуктивності системи</h2>
<p id="p38007-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="p38007-11" class="auto indent10"> Перелічимо більш суттєві помилки, виправлення яких значно відобразилося на підвищені стабільності:</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="p38007-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="h1100-5"></a></p>
<h2>3 Удосконалення та стабілізація графічної підсистеми</h2>
<p id="p38007-13" class="align-justify auto indent10"> Значну роботу було виконано у межах графічної підсистеми, а саме у модулях рушія СВК <em>UI.VCAEngine</em>, візуалізаторів <em>UI.Vision</em> та <em>UI.WebVision</em>,  а також конфігураторах. Внесені зміни були направлені на стабілізацію,  оптимізацію споживання пам'яті та покращення користувацьких  властивостей.</p>
<p id="p38007-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="h1100-6"></a></p>
<h2>4 Формування, розширення та стабілізація API користувацького програмування</h2>
<p id="p38007-15" class="align-justify auto indent10"> Було продовжено формування об'єктного API користувацького програмування,  яке передбачає інтеграцію користувацьких функцій до дерева об'єктів  системи OpenSCADA. Крім того було внесено низку змін у існуючі  бібліотеки функцій користувацького API.</p>
<p id="p38007-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 об'єкту XMLNodeObj додано функцію <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()</em>, <em>fieldSeek()</em>, <em>fieldGet()</em>, <em>fieldSet()</em> та <em>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="h1100-7"></a></p>
<h2>5 Загальносистемні розширення</h2>
<p id="p38007-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">бібліотеку елементів Електричних схем (RU)</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">промислового котлоагрегату(RU)</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></ul><div class="indent"> * <em>DBArch, FSArch</em>: Додано межу часу під час запиту повідомлень із архіву.<br /> </div><ul><li> Адресу посилання на атрибут параметру спрощено до вигляду &quot;DAQMod.Cntr.Prm.attr&quot;. Підтримка старих адрес збережено.</li></ul></li></ul><p class="bodytext"> <a name="h1100-8"></a></p>
<h2>6 Публікація рішень OpenSCADA</h2>
<p id="p38007-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="h1100-9"></a></p>
<h2>Заключення</h2>
<p id="p38007-19" class="indent10 auto align-justify"> В процесі створення нового стабільного релізу 0.8.0, промислового  призначення з тривалим строком підтримки, виконано велику роботу по  стабілізації, розширенню функціональних можливостей, а також адаптації  для роботи на альтернативних апаратних платформах (на архітектурі ARM).  Все це в цілому дозволило розширити межі повноцінного застосування  OpenSCADA на всі рівні систем автоматизації, від ПЛК, серверів  SCADA-систем та до розподілених систем візуалізації.</p>
<p id="p38007-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="p38007-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/ua/novini/odinochna-storinka/article/openscada-into-programmable-logic-controller-plc/</link>
			<description>Ім'я: ПЛК
Засновано: жовтень 2008р
Версія: 1.0.0
Статус: GPL
Учасники: Роман Савоченко
Опис:...</description>
			<content:encoded><![CDATA[<p id="p40673-5" class="indent10 auto align-justify"> Сучасні системи автоматизованого керування технологічними процесами (АСК  ТП) є достатньо складними. Умовно ієрархію АСК ТП можна поділити на два  рівня: нижній та верхній рівень. Нижній рівень АСК ТП містить польова  обладнання (датчики та виконавчі механізми), а також програмовані  логічні контролери (ПЛК). Верхній рівень представляє з себе систему  оперативної візуалізації та контролю за технологічним процесом —  SCADA-система. ПЛК становить відповідальну частину АСК ТП, яка виконує  функцію збору даних польового обладнання, обчислення та видачу  керувальних, блокувальних та інших дій на керувальні органи польового  обладнання.</p>
<p id="p40673-6" class="indent10 auto align-justify"> OpenSCADA є відкритою реалізацією SCADA-системи, яку засновано на  модульній архітектурі, що дозволяє будувати кінцеві рішення під  різноманітні вимоги. Цільовим призначення OpenSCADA є системи верхнього  рівня, однак висока ступінь модульності, і як наслідки масштабованості,  дозволяють вирішувати широке коло задач суміжних областей.</p>
<h2>1. Промислові програмовані логічні контролери</h2>
<p id="p40673-7" class="indent10 auto align-justify"> Ринок ПЛК насичено широким спектром виробів різної архітектури та  конструкції. Архітектурно ПЛК можна поділити на три умовні групи:</p><ul><li> жорстко-програмовані ПЛК та модульні пристрої погодження з об'єктом (ППО); </li><li> високоінтелектуальні комерційні ПЛК; </li><li> PC-сумісні ПЛК.</li></ul><p id="p40673-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="p40673-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="p40673-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="p40673-11" class="indent10 auto align-justify"> Варіанти конструктивного виконання ПЛК можна умовно поділити на  моно-блочні та модульні. Моно-блочні ПЛК надають фіксовану конфігурацію  ППО, спеціалізовану під обмежене коло завдань. Модульні конструкції  надають можливість легкого розширення конфігурації ППО під потрібне  завдання. Існують також і гібридні конструкції, які представляють із  себе моно-блок, спроможний розширювати своє ППО за рахунок зовнішніх  блоків ППО, які підключаються по одному з стандартних інтерфейсів,  наприклад, за RS-485.</p>
<h2>2. OpenSCADA як середовище виконання ПЛК</h2>
<p id="p40673-12" class="indent10 auto align-justify"> Архітектура системи OpenSCADA дозволяє створювати кінцеві рішення під  різні вимоги та ресурси шляхом модульного розширення. Ця можливість  виявляється корисною у світлі обмеженості ресурсів ПЛК. Крім того,  враховуючи постійний розвиток апаратного забезпечення, а також  безперервне підвищення інтеграції та економічності сучасних  мікропроцесорних рішень, OpenSCADA дозволяє послідовно розширювати  функціональність ПЛК, зберігаючи наступність зі старими рішеннями.  Наприклад, на основі системи OpenSCADA можна будувати рішення з  мінімальними вимогами на рівні: CPU 100 МГц, пам'ять та флеш диск по 30  Мб.</p>
<p id="p40673-13" class="indent10 auto align-justify"> Як було зазначено вище ресурси сучасних ПЛК можуть коливатися у  достатньо великих межах, причому ПЛК фіксованого типу, побудовані на  однокристальних мікроЕОМ, все далі відтискаються у вузько-спеціалізовані  області розвиненими PC-архітектурами. Така тенденція робить все більш  цікавою можливість створення уніфікованої відкритої платформи для  реалізації середовища виконання ПЛК на основі уніфікованих PC-платформ.</p>
<p id="p40673-14" class="indent10 auto align-justify"> OpenSCADA дозволяє реалізувати ідею створення відкритої платформи для  реалізації середовища виконання ПЛК. Вже зараз можна реалізувати  оточення ПЛК, яке небагато чим поступається комерційним інтелектуальним  контролерам, а багато у чому і перевершує їх за рахунок можливості  інтегрування функцій, характерних для SCADA систем, у оточення ПЛК,  розширюючи функціональні та користувацькі характеристики ПЛК та  приводячи його на єдину зі SCADA кодову базу, а також оптимізуючи  вартість кінцевого рішення.</p>
<p id="p40673-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="h1014-1"></a></p>
<h2>3. Прошивка та створення програмного оточення ПЛК архітектури x86</h2>
<p id="p99656-1" class="auto indent10"> Перед реалізацією прошивки ПЛК ставилися наступні вимоги:</p><ul><li>  Компактність. У зв'язку з прямою залежністю ціни на промислові  флеш-диски від їх об'єму, а також реальною відсутністю потреби частого  оновлення, образ прошивки потрібно упаковувати, досягнувши рівня  компактності 8-50Мб на середовище виконання ПЛК у оточенні повноцінної  ОС. </li><li> Уніфікований вихідний репозиторій. Оскільки прошивка не є  чимось немодифікованим, не розширюваним та остаточно фіксованим, то у її  основі має лежати реальний репозиторій пакетів ОС який розвивається. Це  дозволить довгий час формувати обновлення та розширення, не підтримуючи  при цьому опосередкованого репозиторію. </li><li> Відлагоджена та проста процедура збору. Враховуючи той факт,  що конфігурація прошивки може деякий час стабілізуватися, крім того у  компонентах ОС та OpenSCADA будуть знаходитися та усуватися помилки, то  процедура збору прошивки не має бути обтяжливою, а напроти - легко  адаптованою. </li><li> Прозора реалізація режиму запису до дерева ОС. Хоча прошивка і  має на увазі створення упакованого немодифікованого образу прошивки,  однак специфіка роботи середовища виконання ПЛК передбачає модифікацію  БД та ведення архівів. Крім того, наявність можливості корекції вихідної  конфігурації є важливою вимогою. </li><li> Надійність та стійкість до раптових вимикань. Специфікою  експлуатації ПЛК є, як правило, відсутність можливості коректного  виключення, а також практична реальність ситуацій миттевого та  непередбачуваного пропадання живлення. ПЛК у таких випадках має  зберігати працеспроможність, у сенсі того що містити журнальовану ФС та  забезпечувати її перевірку та автоматичне усунення помилок. </li><li> Умовний поділ конфігурації ПЛК на два типа: <ul><li> ПЛК без локального дисплею, можливо з простим текстовим табло. </li><li> Touch-панелі з функцією ПЛК.</li></ul></li></ul><p class="bodytext"> <a name="h1014-2"></a></p>
<h3>3.1. Інструменти та збірка робочих оточень</h3>
<p id="p99656-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 за адресою  git://git.altlinux.org/people/boyarsh/packages/mkimage-profiles-desktop,  командою:</p><blockquote style="margin-bottom:0;margin-top:0;"><p id="p99656-2" style="font-family: Courier;" class="indent10 auto align-justify"> git clone git://git.altlinux.org/people/boyarsh/packages/mkimage-profiles-desktop</p></blockquote><p id="p99656-2" class="indent10 auto align-justify">За основу формування PLC шаблону було взято стандартний &quot;rescue&quot;, як найбільш компактний та близький до цільової задачі ПЛК.</p>
<h4>3.1.1. Результат</h4>
<p id="p99656-20" class="indent10 auto align-justify"> У результаті отримаємо прошивку розміром від 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="h1014-6"></a></p>
<h4>3.1.2. OpenSCADA</h4>
<p id="p99656-21" class="indent10 auto align-justify"> У якості середовища виконання ПЛК використано систему OpenSCADA. Для  цього випадку візьмемо збірку з окремими пакетами на кожний модуль та  вкажемо для встановлення віртуальний пакет openscada-plc, який містить  залежності на всі пакети OpenSCADA, які за звичай використовуються для  даної конфігурації. Пакет графічної бібліотеки gd2 було перезібрано без  підтримки формату графічного файлу xpm та який отримав назву  libgd2-noxpm. Перезбірка робилася для того щоб виключити тяжкі  залежності на бібліотеки графічного інтерфейсу XOrg.</p>
<p id="p99656-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="p99656-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="p99656-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=""></p></div><p id="p99656-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="p99656-34" class="indent10 auto align-justify"> У якості оточення стільниці було обрано Trinity з причини наявності  проблеми фонового артифактингу у зв'язці XOrgServer 1.10 + QT4, а також  малої ресурсомісткості TDE при високій розвинутості та стабільності.</p>
<p id="p99656-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="h1087-1"></a></p>
<h2>4. Прошивка та створення програмного оточення ПЛК архітектури ARM</h2>
<p id="p81692-1" class="indent10 auto align-justify"> Широке розповсюдження у вбудованих рішеннях отримала архітектура <a href="http://uk.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) (RU)</a> та <a name=".homepageuk.using.lp5xxx" href="http://wiki.oscada.org/HomePageUk/Using/LP5xxx?v=15j" title="Home&amp;nbsp;Page&amp;nbsp;Uk&amp;nbsp;/&amp;nbsp;Using&amp;nbsp;/&amp;nbsp;LP&amp;nbsp;5&amp;nbsp;xxx">Збірка OpenSCADA та прошивки для ARM-контролерів фірми ICP DAS (LP-5141)</a>.  Метою даного розділу є систематизація методик та відстеження проблем  створення збірок OpenSCADA та прошивок програмного оточення в цілому для  різного вбудованого обладнання архітектури ARM.</p>
<p id="p81692-2" class="indent10 auto align-justify"> Особливістю ARM архітектури є відсутність обов'язкової апаратно-залежної  програмної системи первинної ініціалізації та конфігурації обладнання,  характерної для, x86 архітектур — BIOS, а структура апаратної  конфігурації зазвичай містить: центральний процесор (CPU), вбудовану  оперативну та флеш-пам'ять, а також низку вбудованого обладнання на  стандартних шинах системного рівня. При цьому флеш та оперативна пам'ять  знаходяться у загальному адресному сегменті. Ініціалізація такої  системи програмним оточенням здійснюється завантаженням виконуваного  коду безпосередньо на вбудовану флеш-пам'ять.</p>
<p id="p81692-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://uk.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="rhs" 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="p81692-4" class="auto">&nbsp;</p>
<p id="p81692-4" class="indent10 auto align-justify"> Різниця у часі обчислення при прямому виклику математичної операції та  із віртуальної машини JavaLikeCalc пов'язана із впливом частоти ядра  процесору (частоти на якій воно працює) та яким виконується частина  команди до передачі її математичному сопроцесору. Продуктивність  математичного сопроцесору зазвичай не пов'язана безпосередньо із  продуктивністю та частотою ядра процесору.</p>
<p id="p81692-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 наведено нижче:<br /> </p><blockquote style="margin-bottom:0;margin-top:0;"><p id="p81692-5" style="font-family: Courier;" class="auto"># LP-5141 </p>
<p id="p81692-5" style="font-family: Courier;" class="auto">$ cat /proc/mtd  </p>
<p id="p81692-5" style="font-family: Courier;" class="auto">dev:    size   erasesize  name </p>
<p id="p81692-5" style="font-family: Courier;" class="auto">mtd0: 00040000 00020000 &quot;Bootloader&quot; </p>
<p id="p81692-5" style="font-family: Courier;" class="auto">mtd1: 00040000 00020000 &quot;Bootloader Param&quot; </p>
<p id="p81692-5" style="font-family: Courier;" class="auto">mtd2: 00280000 00080000 &quot;Kernel&quot; </p>
<p id="p81692-5" style="font-family: Courier;" class="auto">mtd3: 03c80000 00080000 &quot;JFFS2 Filesystem&quot; </p>
<p id="p81692-5" style="font-family: Courier;" class="auto"># TionPro270 </p>
<p id="p81692-5" style="font-family: Courier;" class="auto">$ cat /proc/mtd </p>
<p id="p81692-5" style="font-family: Courier;" class="auto">dev:    size   erasesize  name </p>
<p id="p81692-5" style="font-family: Courier;" class="auto">mtd0: 00080000 00040000 &quot;Bootloader&quot; </p>
<p id="p81692-5" style="font-family: Courier;" class="auto">mtd1: 00400000 00040000 &quot;Kernel&quot; mtd2: 01b80000 00040000 &quot;Filesystem&quot;</p></blockquote><p id="p81692-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="p81692-7" class="indent10 auto align-justify"> КФС та програмне оточення на основі Linux може постачатися разом із  ARM-обладнанням та містити закриті бінарні бібліотеки, модулі ядра Linux  та т.п. У такому випадку незалежна збірка та заміна первинного  програмного оточення становиться непрактичною оскільки призводить до  втрати первинної функціональності. Однак часто зустрічається ситуація  постачання обладнання ARM без первинного програмного оточення або з  оточенням, яке не містить закритого коду та яке може бути замінено.  Прикладом першого випадку є контролер <a href="http://wiki.oscada.org/HomePageUk/Using/LP5xxx?v=15j" title="Home&nbsp;Page&nbsp;Uk&nbsp;/&nbsp;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="p81692-8" class="indent10 auto align-justify"> Сформувати Linux КФС можна на основі готових пакунків існуючого  бінарного дистрибутива, пакунків вихідних текстів існуючого  дистрибутиву, а також побудувати із оригінальних вихідних текстів за  посередництвом ToolChain у одній із збіркових систем.</p>
<p id="p81692-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="p81692-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="p81692-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="p81692-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="../ua/spivtovaristvo/uchasniki/userInfo/aleksey" title="Внешняя ссылка (откроется в новом окне)" target="_blank" class="outerlink" ><img src="http://wiki.oscada.org/themes/default/icons/web.gif" alt="">Олексієм Попковим</a> з метою адаптації OpenSCADA.</p>
<p id="p81692-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=""></p></div><p id="p81692-18" class="auto"> Плата постачається виробником обладнання з предвстановленим програмним  оточенням на основі 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>5.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="p81692-35" class="auto"> Вільнопрограмований панельний контролер &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">автоматизованої системи керування вакуумної технологічної установки (RU)</a>.</p>
<p id="p81692-36" class="auto"> Всі матеріали по збірці програмного оточення з 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=""></p></div><p id="p81692-37" class="indent10 auto align-justify"> Панельний контролер постачається виробником обладнання з  передвстановленим програмним оточенням на основі Linux™ та власним  оточенням виконання контролера &quot;SMLogix&quot;. Роль OpenSCADA для даного  контролера розглядалася як розширене середовище програмування  контролеру, інтегроване та програмоване із станції верхнього рівня на  основі OpenSCADA. Для збереження можливості надання та контролю даними  отриманих у OpenSCADA на вбудованому дисплеї, при цьому мінімізувавши  працевитрати на адаптацію, вирішено було зберегти вихідне середовище  виконання &quot;SMLogix&quot; для виконання завдання представлення даних на  внутрішньому дисплеї, а дані транслювати до/із неї за посередництвом  локального ModBus/TCP підключення.</p>
<p id="p81692-37" class="indent10 auto align-justify">У відношенні програмного оточення панельного контролера SMH2Gi в цілому  потрібно зробити декілька зауважень. У контролері використано ядро Linux  2.6.29 з розширенням жорсткого реального часу, що дозволяє утримувати  періодичні інтервали часу до 100 мкс. Крім того всі критичні системні  потоки запущені з політикою керування планування реального часу. При  цьому, хоча процесор не має математичного сопроцесора, емуляція виконана  оптимально у вигляді SoftVFP. Все це дозволяє у OpenSCADA виконувати  високо-детерміновані завдання керування з періодичністю до 100 мкс та  прийнятною обчислювальною продуктивністю. </p>]]></content:encoded>
			<category>Рішення</category>
			
			<author>rom_as@oscada.org</author>
			<pubDate>Wed, 01 Feb 2012 08:54:00 +0200</pubDate>
			
		</item>
		
		<item>
			<title>Збірка проекту OpenSCADA для мобільних пристроїв фірми Nokia (N800, N900, N950)</title>
			<link>http://oscada.org/ua/novini/odinochna-storinka/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="p11413-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" >WikiPediaRu: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" >WikiPediaRu:MeeGo</a>. На основі платформи <em>MeeGo</em> у 2011 році було випущено два смартфони <em>N950</em>(прототип) та <em>N9</em>.</p>
<p id="p11413-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="p11413-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="p11413-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=""><br /> Рис. 1. КПК (інтернет-планшет) N800</p></div><p id="p11413-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/HomePageUk/Using/LP5xxx?v=15j" title="HomePageUk/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/HomePageUk/Using/PLC?v=7g7#h1087-1" title="HomePageUk/Using/PLC">аналізу продуктивності обчислювань з плаваючою точкою</a>.</li></ul><p id="p11413-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="p11413-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="p11413-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="p11413-12" class="auto"> <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="p11413-13" class="indent10 auto align-justify"> Крім першочергової мети збірки та запуску 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="h1093-4"></a></p>
<h2>N900 (Maemo 5)</h2>
<p id="p11413-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=""><br /> Рис. 2. Мобільний телефон N900</p></div><p id="p11413-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="p11413-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="p11413-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=""><br /> Рис. 3. Мобільний телефон N950</p></div><p id="p11413-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 10:05: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 17:07:00 +0200</pubDate>
			
		</item>
		
		<item>
			<title>Реліз OpenSCADA 0.7.2</title>
			<link>http://oscada.org/ua/novini/odinochna-storinka/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="p26212-3" class="indent10 auto align-justify"> Цей реліз є плановим випуском робочої версії системи OpenSCADA, який за  звичай здійснюється з періодичністю 3-4 місяці. Основною метою цього  релізу є стабілізація та опрацювання ключових функцій перед випуском  наступної версії OpenSCADA тривалої підтримки (LTS) 0.8.0. Крім основних  задач у межах цього релізу здійснено велику роботу зі стабілізації,  чистки вихідного коду, всебічного розширення можливостей, а також  опробування на вбудованих пристроях архітектури ARM.</p>
<p id="p26212-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> (RU).</p>
<p id="p26212-5" class="auto indent10"> Ключовими особливостями цієї версії є:</p><ul><li> Реалізація планових завдань. </li><li> Оптимізація, підвищення стабільності, стійкості та продуктивності системи. </li><li> Удосконалення та стабілізація графічної підсистеми. </li><li> Розширення API користувацького програмування. </li><li> Загальносистемні розширення. </li><li> Публікація рішень OpenSCADA.</li></ul><p id="p26212-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="h1085-3"></a></p>
<h2>1 Реалізація планових задач</h2>
<p id="p26212-7" class="auto indent10"> У відповідності із <a name=".homepageuk.works.roadmap" href="http://wiki.oscada.org/HomePageUk/Works/RoadMap?v=59r" title="Home&amp;nbsp;Page&amp;nbsp;Uk&amp;nbsp;/&amp;nbsp;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="h1085-4"></a></p>
<h2>2 Оптимізація, підвищення стабільності, стійкості та продуктивності системи</h2>
<p id="p26212-8" class="indent10 auto align-justify"> У процесі робіт над цією версією, а також її практичної адаптації, було  виявлено та виправлено загалом біля 170 помилок. Також була продовжена  робота по очищенню кода від попереджувальних повідомлень компілятору, з  прапорцем &quot;-Wall&quot;.</p>
<p id="p26212-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="p26212-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="h1085-5"></a></p>
<h2>3 Удосконалення та стабілізація графічної підсистеми</h2>
<p id="p26212-11" class="indent10 auto align-justify"> Значну роботу була виконано у межах графічної підсистеми, а саме у  модулях рушія СВК UI.VCAEngine, візуалізаторів UI.Vision та  UI.WebVision, а також конфігураторах. Внесені зміни були направлені на  стабілізацію, оптимізацію споживання пам'яті та покращення  користувацьких властивостей.</p>
<p id="p26212-12" class="auto indent10"> Покращення графічної підсистеми:</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="h1085-6"></a></p>
<h2>4 Розширення API користувацького програмування</h2>
<p id="p26212-13" class="indent10 auto align-justify"> Було продовжено формування об'єктного API користувацького програмування,  яке передбачає інтеграцію користувацьких функцій до дерева об'єктів  системи OpenSCADA. Крім того було внесено низку змін у існуючі  бібліотеки функцій користувацького API.</p>
<p id="p26212-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="h1085-7"></a></p>
<h2>5 Загальносистемні розширення</h2>
<p id="p26212-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">бібліотеку елементів Електричних схем(RU)</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">промислового котлоагрегату(RU)</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="h1085-8"></a></p>
<h2>6 Публікація рішень OpenSCADA</h2>
<p id="p26212-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="h1085-9"></a></p>
<h2>Заключення</h2>
<p id="p26212-17" class="indent10 auto align-justify"> Цим релізом системи OpenSCADA фактично завершено роботу по адаптації на  апаратну архітектуру ARM, що відіб'ється у наданні та публікації  офіційних збірок релізу 0.7.2 для мобільних пристроїв.</p>
<p id="p26212-18" class="indent10 auto align-justify"> Хоча випуск даного релізу дещо запізнився та затягнувся його все ж було  ретельно підготовлено та він стане доброю основою для доведення кодової  бази проекту до майбутнього відповідального релізу 0.8.0 LTS. Крім того  цей релиз можна використовувати і для повсюдного впровадження та  застосування у відповідальних задачах з наступним плавним переходом на  0.8.0 LTS після його вихода.</p>
<p id="p26212-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/ua/novini/odinochna-storinka/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:23:00 +0300</pubDate>
			
		</item>
		
		<item>
			<title>Збірка OpenSCADA та прошивки для ARM-контролерів фірми ICP DAS (LP-5141)</title>
			<link>http://oscada.org/ua/novini/odinochna-storinka/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="p56259-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="p56259-5" class="indent10 auto align-justify"> До останнього часу низка причин ставали на перепоні збірки OpenSCADA для ARM-контролерів ICP DAS:</p><ul><li> відсутність на руках жодного із ARM-контролерів; </li><li> неготовність OpenSCADA для роботи на ARM-архітектурі; </li><li> дуже застаріле оточення Linux ARM-контролерів фірми &quot;ICP DAS&quot;.</li></ul><p id="p56259-6" 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="p56259-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="p25028-8" class="indent10 auto align-justify"> ПЛК (рис.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=""><br /> Рис. ПЛК серії LP-5xxx.</p></div><p id="p56259-9" class="indent10 auto align-justify"> Процесор контролеру має наступні технічні характеристики:</p><table rules="all" frame="rhs" 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><p class="bodytext"> <a name="h1077-4"></a></p>
<h2>2. Програмне оточення на основі OpenSCADA.</h2>
<p id="p56259-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="p56259-11" class="indent10 auto align-justify"> Оскільки внутрішня флеш-пам'ять має порівняно невеликий об'єм (64 Мб), а  повна перезбірка початкового програмного оточення контролера —  достатньо трудомісткий процес, то було вирішено забезпечити сумісність  базових бібліотек нового та старого оточення. А саме, можливість  використовувати бібліотеки на зразок fontconfig, i8k з первинного  оточення та роботу програм первинного оточення з новими бібліотеками.</p>
<p id="p56259-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/HomePageUk/Using/LP5xxx?v=15j#h1077-5" name="oh1077-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="p56259-14" class="indent10 auto align-justify"> Результуюче оточення контролеру з OpenSCADA було сформовано шляхом  заміни базових бібліотек первинного оточення на бібліотеки з нового  набору інструментів, збірки OpenSCADA та розташування файлів OpenSCADA у  дереві первинного оточення.</p>
<p id="p56259-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="p56259-19" class="indent10 auto align-justify"> Оскільки з'ясувалося, що операції з реальними числами виконуються за  посередництвом команд сопроцесору FPA (Float Point Acceleration), якого у  цьому процесорі просто немає, а виклики самих команд здійснюються через  виключення, шляхом імітації у ядрі Linux, то продуктивність  математичних обчислень виявляється дуже низькою, навіть у порівнянні з  прямим &quot;Software FP&quot;, &quot;VFP&quot;. Наприклад, обчислення однієї операції <strong>sin(pi)</strong> здійснюється ~200 мкс, у порівняні із ~20 мкс на N800 з VFP та ~2 мкс на x86, детальніше у таблиці за <a name=".homepageuk.using.plc" href="http://wiki.oscada.org/HomePageUk/Using/PLC?v=7g7#h1087-1" title="Home&amp;nbsp;Page&amp;nbsp;Uk&amp;nbsp;/&amp;nbsp;Using&amp;nbsp;/&amp;nbsp;PLC">цим посиланням</a>.  Таким чином, розглядати цей контролер як платформу для хоч якихось  серйозних обчислень не можна! Мало того, реальні числа, при роботі із  FPA, зберігаються по іншому, а саме особливий <em>big-endian</em>, що вимагає перетворення, у випадку із бінарним зовнішнім обміном, до типового <em>little-endian</em> вигляду, наприклад, для DAQ.OPC_UA.</p>
<p id="p56259-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="p56259-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 із схожою помилкою. Побудований 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 (RU)</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="p56259-22" class="indent10 auto align-justify"> У результаті було отримано збірку OpenSCADA для Linux контролерів,  ARM-архітектури, фірми &quot;ICP DAS&quot;. Збірку можна завантажити безпосередньо  на будь який Linux-ARM контролер, розпакувавши її у корні працюючої  первинної системи. При цьому однак залишаться дублікати старих базових  бібліотек (/lib/*), які, після вдалого перевантаження, можна видалити.</p>
<p id="p56259-23" class="indent10 auto align-justify"> Для контролерів сімейства LP-5x4x створено прошивку зі збіркою  OpenSCADA, яку можна завантажити стандартним для даних контролерів  чином, який описано у фірмовій документації &quot;ICP DAS&quot;. Прошивка для  LP-5x4x можливо підійде і для LP-5x3x, однак це не перевірялося!</p>
<p id="p56259-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 10:05:00 +0300</pubDate>
			
		</item>
		
		<item>
			<title>16-18го вересня 2011р. на морі, у місті Одеса(Україна), відбулася конференція та виставка відкритих рішень - FOSS Sea 2011</title>
			<link>http://oscada.org/ua/novini/odinochna-storinka/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>
