<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html class="client-nojs" dir="ltr" lang="en"> <head> <meta charset="UTF-8" /> <title>Документи/Збір даних - OpenSCADAWiki</title> <meta content="MediaWiki 1.26.4" name="generator" /> <link href="https://www.gnu.org/copyleft/fdl.html" rel="copyright" /> <link href="../en/files/doc.css" rel="stylesheet" /></head> <body><div class="floatright"><a href="index.html"><img alt="OpenSCADA" src="../en/files/index.png" /></a></div><div id="mw_header"> <div class="mw-indicators"> </div> <h1 id="firstHeading" lang="uk">Документи/Збір даних</h1> </div><div class="mw-content-ltr" dir="ltr" id="mw-content-text" lang="uk"><div class="mw-pt-translate-header noprint" dir="ltr" lang="en">This page is a <span class="plainlinks"><a class="external text" href="http://oscada.org/wiki/index.php?title=Special:Translate&group=page-Documents%2FDAQ&action=page&filter=&language=uk" rel="nofollow noreferrer noopener" target="_blank">translated version</a></span> of the page <a class="external" href="http://oscada.org/wiki/Documents/DAQ" title="Documents/DAQ">Documents/DAQ</a> and the translation is 100% complete.</div><hr /><div class="mw-pt-languages" dir="ltr" lang="en"><div class="mw-pt-languages-list autonym"><a class="mw-pt-languages-ui mw-pt-progress mw-pt-progress--complete" href="../en/DAQ.html" title="Documents/DAQ (100% translated)">English</a> • ‎<a class="mw-pt-progress mw-pt-progress--complete" href="../ru/DAQ.html" title="Документы/Сбор данных (94% translated)">mRussian</a> • ‎<span class="mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete">УкраїнÑька</span></div></div> <div style="float:right; border:1px solid gray; width:300px; padding:2px; margin-left: 10pt; margin-bottom: 10pt;"> <ul><li> <b>Ðвтор:</b> <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Роман Савоченко</a> </li></ul> </div> <p>Збір даних SCADA(Supervisory Control and Data Acquisition)-ÑиÑтеми Ñ” Ñ—Ñ— невід'ємною чаÑтиною, Ñка займаєтьÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñм даних із джерел різноманітного походженнÑ. Природа даних, з Ñкими працює SCADA, характеризуєтьÑÑ Ñигналами базових типів значень (цілі, реальні, логічні та Ñ€Ñдок). Сигнали змінюютьÑÑ Ñƒ чаÑÑ– та мають Ñ–Ñторією — життÑ. У теорії ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ñ‚ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ñ–Ñ‡Ð½Ð¸Ð¼Ð¸ процеÑами (ТП), під Ñигналом маєтьÑÑ Ð½Ð° увазі Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð°Ð²Ð°Ñ‡Ð° уÑтановки ТП у коді ÐЦП — "Ñирий" Ñигнал, або у реальному значені — інженерний. Сигнали можуть поєднуватиÑÑ Ñƒ групи за ÑмиÑловим навантаженнÑм, Ñкі чаÑто називаютьÑÑ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸ або комплекÑним тегом. Ðаприклад, розвинуті джерела даних можуть надавати Ñтруктури параметрів із визначеним набором пов'Ñзаних Ñигналів. Крім безпоÑередньо збору даних, до функції цього механізму також входить Ñ– передача дій на виконавчі приÑтрої ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð¢ÐŸ, зазвичай це: заÑувки, наÑоÑи та регулюючі клапани. Сукупно, це Ð¾Ð±Ð»Ð°Ð´Ð½Ð°Ð½Ð½Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð»Ð¾ назву — ПриÑтрій Ð£Ð·Ð³Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ñ–Ð· Об'єктом (ПУО). </p><p>Джерела даних характеризуютьÑÑ Ð²ÐµÐ»Ð¸ÐºÐ¸Ð¼ розмаїттÑм, Ñке можна умовно поділити на три групи: </p> <ul><li> Джерела "Ñирих" даних, Ñкі надають код ÐЦП або рівні диÑкретних Ñигналів, а також Ñкі включають проÑтішу обробку. Зазвичай, це модулі розоÑередженого ПУО або проÑтіші промиÑлові програмовані логічні контролери (ПЛК).</li> <li> Потужні промиÑлові ПЛК, що мають значні обчиÑлювальні потужніÑÑ‚ÑŽ та можливоÑÑ‚Ñ– Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñкладних параметрів з різною Ñтруктурою.</li> <li> Локальні або Ñупутні джерела даних. Ðаприклад, ПУО у виглÑді плат розширеннÑ, а також дані апаратного та програмного Ð¾Ñ‚Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð² Ñкому функціонує ÑиÑтема.</li></ul> <p>Ð Ð¾Ð·Ð¼Ð°Ñ—Ñ‚Ñ‚Ñ Ð´Ð¶ÐµÑ€ÐµÐ» даних породило великий Ñпектр механізмів доÑтупу до них. Локальні джерела даних різнÑÑ‚ÑŒÑÑ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñами Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÑƒ (API), а мережеві джерела, Ñвоєю чергою, транÑпортним та протокольним рівнÑми взаємодії. Ð’ цілому, це призвело до того, що Ð´Ð¾Ð´Ð°Ð½Ð½Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÐºÐ¸ нового джерела даних потребує ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ ÑÐ¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ драйверу. Враховуючи ж велике Ñ€Ð¾Ð·Ð¼Ð°Ñ—Ñ‚Ñ‚Ñ Ð´Ð¶ÐµÑ€ÐµÐ», це доволі затратно та фактично нереально охопити веÑÑŒ Ñпектр ринку таких приÑтроїв. Ð¡Ð¸Ñ‚ÑƒÐ°Ñ†Ñ–Ñ Ð´ÐµÑ‰Ð¾ ÑпрощуєтьÑÑ Ñ–Ð· мережевими джерелами, завдÑки наÑвноÑÑ‚Ñ– низки Ñтандартних та вільних протоколів взаємодії, однак багато джерел вÑе-ж викориÑтовують влаÑні протоколи: закриті комерційні або протоколи, зав'Ñзані на закриті механізми комерційних операційних ÑиÑтем (ОС). </p><p>У термінах OpenSCADA, надаютьÑÑ Ð½Ð°Ñтупні об'єкти моделі даних обÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼ÐµÑ…Ð°Ð½Ñ–Ð·Ð¼Ñƒ збору даних: </p> <ul><li> "Ðтрибут" — об'єкт Ð²Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… Ñигналу, включає поточне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð¾Ð³Ð¾ типу Ñигналу та доÑтуп до Ñ–Ñторії зміни цих значень;</li> <li> "Параметр" — об'єкт групи атрибутів зі Ñтруктурою, відповідною до оÑобливоÑтей окремо взÑтого джерела даних;</li> <li> "Об'єкт контролеру" — об'єкт окремого джерела даних. Як правило це окремий модуль ПУО або приÑтрій промиÑлового ПЛК.</li></ul> <p>Ð”Ð»Ñ Ð²Ñ€Ð°Ñ…ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾ÑобливоÑтей різних приÑтроїв збору даних, а також різних механізмів взаємодії, у OpenSCADA передбачено <a href="Program_manual.html#DAQ" title="Special:MyLanguage/Documents/Program manual">підÑиÑтему "Збір Даних"</a>, Ñка Ñ” модульною. У ÑкоÑÑ‚Ñ– Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ñ–Ð´ÑиÑтеми виÑтупає драйвер ÑÐ¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ñ–Ð· джерелом даних окремого типу. Кожний модуль може міÑтити конфігурацію декількох приÑтроїв цього типу у виглÑді об'єктів контролеру. Загальну Ñхему об'єктів підÑиÑтеми "Збір даних" зображено на риÑунку 1. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:309px;"><a class="image" href="http://oscada.org/wiki/File:Oscada_subsys_daq_str_uk.png"><img class="thumbimage" height="335" src="files/Oscada_subsys_daq_str_uk.png" width="307" /></a> <div class="thumbcaption">РиÑ. 1. Схема підÑиÑтеми "Збір Даних".</div></div></div></div> <div class="toc" id="toc"><div id="toctitle"><h2>Contents</h2></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#.D0.9C.D0.B5.D1.82.D0.BE.D0.B4.D0.B8_.D0.B7.D0.B1.D0.BE.D1.80.D1.83_.D0.B4.D0.B0.D0.BD.D0.B8.D1.85"><span class="tocnumber">1</span> <span class="toctext">Методи збору даних</span></a> <ul> <li class="toclevel-2 tocsection-2"><a href="#.D0.9F.D1.80.D0.BE.D1.81.D1.82.D0.B8.D0.B9_.D1.81.D0.B8.D0.BD.D1.85.D1.80.D0.BE.D0.BD.D0.BD.D0.B8.D0.B9_.D0.BC.D0.B5.D1.85.D0.B0.D0.BD.D1.96.D0.B7.D0.BC_.D0.B7.D0.B1.D0.BE.D1.80.D1.83"><span class="tocnumber">1.1</span> <span class="toctext">ПроÑтий Ñинхронний механізм збору</span></a></li> <li class="toclevel-2 tocsection-3"><a href="#.D0.9F.D1.80.D0.BE.D1.81.D1.82.D0.B8.D0.B9_.D0.B0.D1.81.D0.B8.D0.BD.D1.85.D1.80.D0.BE.D0.BD.D0.BD.D0.B8.D0.B9_.D0.BC.D0.B5.D1.85.D0.B0.D0.BD.D1.96.D0.B7.D0.BC_.D0.B7.D0.B1.D0.BE.D1.80.D1.83"><span class="tocnumber">1.2</span> <span class="toctext">ПроÑтий аÑинхронний механізм збору</span></a></li> <li class="toclevel-2 tocsection-4"><a href="#.D0.9F.D0.B0.D0.BA.D0.B5.D1.82.D0.BD.D0.B8.D0.B9_.D0.BC.D0.B5.D1.85.D0.B0.D0.BD.D1.96.D0.B7.D0.BC_.D0.B7.D0.B1.D0.BE.D1.80.D1.83"><span class="tocnumber">1.3</span> <span class="toctext">Пакетний механізм збору</span></a></li> <li class="toclevel-2 tocsection-5"><a href="#.D0.9F.D0.B0.D1.81.D0.B8.D0.B2.D0.BD.D0.B8.D0.B9_.D0.BC.D0.B5.D1.85.D0.B0.D0.BD.D1.96.D0.B7.D0.BC_.D0.B7.D0.B1.D0.BE.D1.80.D1.83_.D1.82.D0.B0_.D1.96.D0.BD.D1.96.D1.86.D1.96.D0.B0.D1.82.D0.B8.D0.B2.D0.BD.D1.96_.D0.BF.D1.96.D0.B4.D0.BA.D0.BB.D1.8E.D1.87.D0.B5.D0.BD.D0.BD.D1.8F"><span class="tocnumber">1.4</span> <span class="toctext"><span>ПаÑивний механізм збору та ініціативні підключеннÑ</span></span></a></li> </ul> </li> <li class="toclevel-1 tocsection-6"><a href="#.D0.92.D1.96.D1.80.D1.82.D1.83.D0.B0.D0.BB.D1.8C.D0.BD.D1.96_.D0.B4.D0.B6.D0.B5.D1.80.D0.B5.D0.BB.D0.B0_.D0.B4.D0.B0.D0.BD.D0.B8.D1.85"><span class="tocnumber">2</span> <span class="toctext"><span>Віртуальні джерела даних</span></span></a></li> <li class="toclevel-1 tocsection-7"><a href="#.D0.9B.D0.BE.D0.B3.D1.96.D1.87.D0.BD.D0.B8.D0.B9_.D1.80.D1.96.D0.B2.D0.B5.D0.BD.D1.8C_.D0.BE.D0.B1.D1.80.D0.BE.D0.B1.D0.BA.D0.B8_.D0.B4.D0.B0.D0.BD.D0.B8.D1.85"><span class="tocnumber">3</span> <span class="toctext"><span>Логічний рівень обробки даних</span></span></a> <ul> <li class="toclevel-2 tocsection-8"><a href="#.D0.9A.D0.BE.D0.BD.D1.86.D0.B5.D0.BF.D1.86.D1.96.D1.8F_.D0.B4.D0.BE.D1.81.D1.82.D1.83.D0.BF.D1.83_.D0.B4.D0.BE_.D0.B4.D0.B0.D0.BD.D0.B8.D1.85_.D1.87.D0.B5.D1.80.D0.B5.D0.B7_.D0.BA.D0.BE.D1.80.D0.B8.D1.81.D1.82.D1.83.D0.B2.D0.B0.D1.86.D1.8C.D0.BA.D0.B8.D0.B9_.D0.BF.D1.80.D0.BE.D1.82.D0.BE.D0.BA.D0.BE.D0.BB"><span class="tocnumber">3.1</span> <span class="toctext"><span>ÐšÐ¾Ð½Ñ†ÐµÐ¿Ñ†Ñ–Ñ Ð´Ð¾Ñтупу до даних через кориÑтувацький протокол</span></span></a></li> </ul> </li> <li class="toclevel-1 tocsection-9"><a href="#.D0.A0.D0.B5.D0.B7.D0.B5.D1.80.D0.B2.D1.83.D0.B2.D0.B0.D0.BD.D0.BD.D1.8F_.D0.B4.D0.B6.D0.B5.D1.80.D0.B5.D0.BB_.D0.B4.D0.B0.D0.BD.D0.B8.D1.85"><span class="tocnumber">4</span> <span class="toctext"><span>Ð ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¶ÐµÑ€ÐµÐ» даних</span></span></a></li> <li class="toclevel-1 tocsection-10"><a href="#.D0.9C.D1.96.D1.82.D0.BA.D0.B0_.D1.87.D0.B0.D1.81.D1.83_.D0.B4.D0.B6.D0.B5.D1.80.D0.B5.D0.BB.D0.B0_.D0.B4.D0.B0.D0.BD.D0.B8.D1.85"><span class="tocnumber">5</span> <span class="toctext"><span>Мітка чаÑу джерела даних</span></span></a></li> <li class="toclevel-1 tocsection-11"><a href="#.D0.9F.D0.BE.D1.81.D0.B8.D0.BB.D0.B0.D0.BD.D0.BD.D1.8F"><span class="tocnumber">6</span> <span class="toctext">ПоÑиланнÑ</span></a></li> </ul> </div> <h2><span class="mw-headline" id=".D0.9C.D0.B5.D1.82.D0.BE.D0.B4.D0.B8_.D0.B7.D0.B1.D0.BE.D1.80.D1.83_.D0.B4.D0.B0.D0.BD.D0.B8.D1.85"><span class="mw-headline-number">1</span> Методи збору даних</span></h2> <p>Враховуючи різні влаÑтивоÑÑ‚Ñ– джерел даних, а також можливі варіанти взаємодії, методи збору даних можна поділити на: проÑтий Ñинхронний, проÑтий аÑинхронний, пакетний та паÑивний. </p><p>У оглÑді механізмів нижче будуть приймати учаÑÑ‚ÑŒ наÑтупні об'єкти: </p> <ul><li> "ObjectSCADA" — будь-Ñкий об'єкт SCADA-ÑиÑтеми, Ñкий звертаєтьÑÑ Ð·Ð° значеннÑм Ñигналу, наприклад, архіви та візуалізатори;</li> <li> "DAQParamAttribute" — атрибут параметра підÑиÑтеми "Збір Даних", Ñкий виÑтупає поÑередником у доÑтупі до значень Ñигналу джерела даних;</li> <li> "DAQParamAttributeArch" — об'єкт архіву атрибута;</li> <li> "HardwarePLC" — об'єкт джерела даних, наприклад, модулі розоÑередженого ПУО або промиÑлові ПЛК.</li></ul> <h3><span class="mw-headline" id=".D0.9F.D1.80.D0.BE.D1.81.D1.82.D0.B8.D0.B9_.D1.81.D0.B8.D0.BD.D1.85.D1.80.D0.BE.D0.BD.D0.BD.D0.B8.D0.B9_.D0.BC.D0.B5.D1.85.D0.B0.D0.BD.D1.96.D0.B7.D0.BC_.D0.B7.D0.B1.D0.BE.D1.80.D1.83"><span class="mw-headline-number">1.1</span> ПроÑтий Ñинхронний механізм збору</span></h3> <p>Механізм характеризуєтьÑÑ Ð·Ð°Ð¿Ð¸Ñ‚Ð°Ð¼Ð¸ до джерела даних Ñинхронно із запитом до атрибуту параметра (риÑ.2). Цей механізм, зазвичай, заÑтоÑовуєтьÑÑ Ð¿Ñ€Ð¸ роботі з локальними джерелами даних, Ñкі характеризуютьÑÑ Ð½Ð¸Ð·ÑŒÐºÐ¾ÑŽ латентніÑÑ‚ÑŽ, тобто затримкою у відповіді на запит. За допомогою цього методу можна отримати актуальні дані безпоÑередньо із запитом, однак Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ об'єкту буде включати Ñ‡Ð°Ñ Ñ‚Ñ€Ð°Ð½ÑÐ¿Ð¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° обробки запиту джерелом даних. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:686px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_simpleSync.png"><img class="thumbimage" height="179" src="../en/files/DAQ_simpleSync.png" width="684" /></a> <div class="thumbcaption">РиÑ. 2. Діаграма поÑлідовноÑÑ‚Ñ– взаємодії при Ñинхронних запитах.</div></div></div></div> <p>Відповідно до діаграми вище, ми отримуємо наÑтупну поÑлідовніÑÑ‚ÑŒ запитів Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… та Ñ—Ñ… передачі: </p> <ul><li> об'єкт SCADA-ÑиÑтеми надÑилає запит Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¾ об'єкту атрибута параметра <b>DAQParamAttribute::getVal()</b>;</li> <li> об'єкт атрибута параметру, отримавши запит, надÑилає його джерелу даних <b>HardwarePLC::valueRequest()</b>;</li> <li> джерело даних, обробивши запит, повертає результат;</li> <li> об'єкт атрибуту параметра, отримавши результат, повертає його об'єкту SCADA-ÑиÑтеми.</li></ul> <p>У OpenSCADA такий механізм реалізують наÑтупні модулі підÑиÑтеми "Збір Даних": </p> <ul><li> <i><a href="Modules/JavaLikeCalc.html" title="Special:MyLanguage/Modules/JavaLikeCalc">JavaLikeCalc</a></i> — обчиÑлювач на Java-подібній мові виÑокого рівнÑ. У ÑкоÑÑ‚Ñ– джерела даних виÑтупає кориÑтувацька програма на Java-подібній мові. Ðтрибути параметрів Ð¼Ð¾Ð´ÑƒÐ»Ñ Ñинхронно звертаютьÑÑ Ð´Ð¾ входів/виходів обчиÑлювального контекÑту кориÑтувацької функції.</li> <li> <i><a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">LogicLev</a></i> — модуль логічного Ñ€Ñ–Ð²Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² збору даних, детальніше про нього у розділі 3. У ÑкоÑÑ‚Ñ– джерела даних цього Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð²Ð¸Ñтупають інші параметри підÑиÑтеми "Збір Даних" та контекÑÑ‚ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñƒ параметрів. Ðтрибути параметрів Ð¼Ð¾Ð´ÑƒÐ»Ñ Ñинхронно звертаютьÑÑ Ð´Ð¾ атрибутів інших параметрів, у режимі Ð²Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² підÑиÑтеми "Збір Даних", або до входів/виходів контекÑту Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñƒ, у режимі роботи за шаблоном.</li> <li> <i><a href="Modules/BlockCalc.html" title="Special:MyLanguage/Modules/BlockCalc">BlockCalc</a></i> — обчиÑлювач на мові блокових Ñхем. У ÑкоÑÑ‚Ñ– джерела даних виÑтупає кориÑтувацька блокова Ñхема. Ðтрибути параметрів Ð¼Ð¾Ð´ÑƒÐ»Ñ Ñинхронно звертаютьÑÑ Ð´Ð¾ входів/виходів блоків блокової Ñхеми.</li> <li> <i><a href="Modules/DAQGate.html" title="Special:MyLanguage/Modules/DAQGate">DAQGate</a></i> — модуль Ð²Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ð¾Ð±'єктів контролерів віддалених OpenSCADA-Ñтанцій на локальну. У модулі реалізовано Ñинхронний режим запиÑу даних.</li> <li> <i><a href="Modules/ModBus.html" title="Special:MyLanguage/Modules/ModBus">ModBus</a></i> — модуль доÑтупу до даних джерел за поÑередництвом ÑімейÑтва протоколів "ModBus". У модулі реалізовано Ñинхронний режим запиÑу даних.</li> <li> <i><a href="Modules/DiamondBoards.html" title="Special:MyLanguage/Modules/DiamondBoards">DiamondBoards</a></i> — модуль доÑтупу до даних PC/104 плат фірми Diamond Systems. Плати PC/104 розташовуютьÑÑ Ð½Ð° ISA-шині, відповідно Ñ” локальними та доÑтупні порівнÑно швидко. У режимі збору даних не за перериваннÑм, доÑтуп до значень ÐЦП здійÑнюєтьÑÑ Ñинхронно. Режим запиÑу Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¦ÐП завжди працює Ñинхронно.</li></ul> <h3><span class="mw-headline" id=".D0.9F.D1.80.D0.BE.D1.81.D1.82.D0.B8.D0.B9_.D0.B0.D1.81.D0.B8.D0.BD.D1.85.D1.80.D0.BE.D0.BD.D0.BD.D0.B8.D0.B9_.D0.BC.D0.B5.D1.85.D0.B0.D0.BD.D1.96.D0.B7.D0.BC_.D0.B7.D0.B1.D0.BE.D1.80.D1.83"><span class="mw-headline-number">1.2</span> ПроÑтий аÑинхронний механізм збору</span></h3> <p>Механізм характеризуєтьÑÑ Ð·Ð°Ð¿Ð¸Ñ‚Ð°Ð¼Ð¸ до джерела даних незалежно від запиту до атрибуту параметра (риÑ.3). Зазвичай, запити до джерела даних здійÑнюютьÑÑ Ð¿ÐµÑ€Ñ–Ð¾Ð´Ð¸Ñ‡Ð½Ð¾, у влаÑному завдані Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾ÐºÑ€ÐµÐ¼Ð¾ взÑтого контролеру та блоками по декілька Ñигналів. При цьому, запитом до атрибуту параметра повертаєтьÑÑ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ, отримане оÑтаннім ÑеанÑом зв'Ñзку із джерелом даних. Цей механізм зазвичай заÑтоÑовуєтьÑÑ Ð¿Ñ€Ð¸ роботі з віддаленими (мережевими) джерелами даних, Ñкі характеризуютьÑÑ Ð²Ð¸Ñокою латентніÑÑ‚ÑŽ, тобто затримкою у відповіді на запит. </p><p>За допомогою цього методу можна забезпечити оптимізацію чаÑового реÑурÑу, витраченого на один Ñигнал, Ñ– тим Ñамим збільшити макÑимальну кількіÑÑ‚ÑŒ опитаних Ñигналів за інтервал чаÑу опитуваннÑ. </p><p>У ÑкоÑÑ‚Ñ– показового прикладу розглÑнемо промиÑловий ПЛК "Siemens S7-315", при опитувані його по шині ProfiBus (1,5 Мбіт/Ñ). Середній Ñ‡Ð°Ñ Ð¾Ð±Ñ€Ð¾Ð±ÐºÐ¸ MPI-запиту цим контролером Ñтановить 30 мÑ. Якщо викориÑтовувати Ñинхронний механізм Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ Ñигналу, тобто один запит на кожний Ñигнал, то протÑгом однієї Ñекунди ми зможемо отримати Ð±Ñ–Ð»Ñ 33 Ñигналів. Ð Ñкщо заÑтоÑувати аÑинхронний механізм, тобто у одному MPI-пакеті отримувати до 220 байт або 110 Ñигналів цілочиÑельного типу на 16-розрÑдів, то ми зможемо за одну Ñекунду отримати до 3630 Ñигналів. Як можна бачити, ефективніÑÑ‚ÑŒ аÑинхронного механізму, у цьому випадку, Ñкладає 110 разів, а Ñаме Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¼Ð°ÐºÑимальної ємноÑÑ‚Ñ– MPI-пакету. </p><p>Ðедоліком аÑинхронного механізму Ñ” те, що запит значень атрибуту параметра повертає неактуальне на Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ значеннÑ, а Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ñтаннього ÑеанÑу Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÐµÑ€Ñƒ. Утім, Ñкщо врахувати, що джерело даних може оновлюватиÑÑ Ð· періодичніÑÑ‚ÑŽ апаратних обмежень ÐЦП, та й Ñамі давачі можуть мати певні Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñƒ швидкоÑÑ‚Ñ– реакції, то й заÑтоÑÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ñинхронного механізму збору може мати Ñерйозні підÑтави. </p><p>ЗаÑтоÑÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ñинхронного механізму Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу значень у ПЛК Ñ” доволі рідкіÑним Ñвищем, оÑкільки Ð·Ð°Ð¿Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ зазвичай передбачає вплив оператора на ТП. Оператор, по факту, доÑтатньо рідко вноÑить ÐºÐ¾Ñ€Ð¸Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñƒ процеÑ, відтак Ð·Ð°Ð¿Ð¸Ñ Ð¼Ð¾Ð¶Ð½Ð° здійÑнювати Ñинхронно. Однак, Ñ–Ñнують Ñитуації, наприклад, ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð¢ÐŸ регулÑторами на SCADA-ÑиÑтемі, Ñка виконує функції Ñередовища Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ ÐŸÐ›Ðš. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:710px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_simpleAsync.png"><img class="thumbimage" height="279" src="../en/files/DAQ_simpleAsync.png" width="708" /></a> <div class="thumbcaption">РиÑ. 3. Діаграма поÑлідовноÑÑ‚Ñ– взаємодії при аÑинхронних запитах.</div></div></div></div> <p>Згідно до діаграми вище, ми отримуємо наÑтупну картину: </p> <ul><li> атрибут параметру, або вищеÑтоÑщий об'єкт контролеру, виконує періодичні запити <b>HardwarePLC::valueRequest()</b> Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñигналу або групи Ñигналів;</li> <li> отриманні Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñигналів розташовуютьÑÑ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾ у атрибутах параметрів;</li> <li> об'єкт SCADA-ÑиÑтеми надÑилає запит Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¾ атрибута параметра <b>DAQParamAttribute::getVal()</b> та отримує збережене локально Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ ÑеанÑу Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¶ÐµÑ€ÐµÐ»Ð° даних.</li></ul> <p>Ð’ OpenSCADA такий механізм реалізують наÑтупні модулі підÑиÑтеми "Збір Даних": </p> <ul><li> <i><a href="Modules/DAQGate.html" title="Special:MyLanguage/Modules/DAQGate">DAQGate</a></i> — модуль Ð²Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ð¾Ð±'єктів контролерів віддалених OpenSCADA-Ñтанцій на локальну. Ð’ модулі реалізовано аÑинхронний режим Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ….</li> <li> <i><a href="Modules/System.html" title="Special:MyLanguage/Modules/System">System</a></i> — модуль доÑтупу до даних Ð¾Ñ‚Ð¾Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ OpenSCADA. У модулі реалізовано аÑинхронний режим Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ….</li> <li> <i><a href="Modules/ModBus.html" title="Special:MyLanguage/Modules/ModBus">ModBus</a></i> — модуль доÑтупу до даних джерел за поÑередництвом ÑімейÑтва протоколів "ModBus". У цьому модулі аÑинхронний режим реалізовано Ñк Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…, так Ñ– Ð´Ð»Ñ Ñ—Ñ… запиÑу (опціонально) на ПЛК.</li> <li> <i><a href="Modules/SNMP.html" title="Special:MyLanguage/Modules/SNMP">SNMP</a></i> — модуль доÑтупу до даних приÑтроїв мережі за поÑередництвом "Simple Network Management Protocol". Ð’ модулі реалізовано аÑинхронний режим Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ….</li> <li> <i><a href="Modules/Siemens.html" title="Special:MyLanguage/Modules/Siemens">Siemens</a></i> — модуль доÑтупу до даних контролерів фірми Siemens Ñерії S7. У цьому модулі аÑинхронний режим реалізовано Ñк Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…, так Ñ– Ð´Ð»Ñ Ñ—Ñ… запиÑу (опціонально) на ПЛК.</li></ul> <h3><span class="mw-headline" id=".D0.9F.D0.B0.D0.BA.D0.B5.D1.82.D0.BD.D0.B8.D0.B9_.D0.BC.D0.B5.D1.85.D0.B0.D0.BD.D1.96.D0.B7.D0.BC_.D0.B7.D0.B1.D0.BE.D1.80.D1.83"><span class="mw-headline-number">1.3</span> Пакетний механізм збору</span></h3> <p>Пакетний механізм збору характерний збором даних кожного Ñигналу пакетом, Ñкий включає Ñ–Ñторію його зміни. Тобто, за один ÑÐµÐ°Ð½Ñ Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼ÑƒÑ”Ñ‚ÑŒÑÑ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° значень Ñ–Ñторії Ñигналу. Пакетний механізм працює Ñпільно із Ñинхронним та аÑинхронними механізмами. </p><p>У випадку роботи з Ñинхронним механізмом, виконуєтьÑÑ Ñ„Ð°ÐºÑ‚Ð¸Ñ‡Ð½Ðµ Ð¿ÐµÑ€ÐµÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð°Ñ€Ñ…Ñ–Ð²Ñƒ джерела даних Ð´Ð»Ñ Ð¾Ð¿ÐµÑ€Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ñ— роботи у ÑиÑтемі (риÑ. 2). Як Ñ– проÑтий Ñинхронний механізм, його бажано заÑтоÑовувати тільки на низько-латентних джерелах даних або із джерелами, робота Ñких Ñ” ÑеанÑовою, наприклад, у Ñфері комерційного обліку Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ лічильників. </p><p>При роботі Ñпільно із аÑинхронним механізмом, Ñ–ÑÑ‚Ð¾Ñ€Ñ–Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð¸Ñ… Ñигналів зазвичай прÑмо розташовуєтьÑÑ Ñƒ архіви (риÑ. 4), а поточні Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ð° параметру вÑтановлюютьÑÑ Ñƒ оÑтаннє Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÐµÑ‚Ñƒ. Така ÐºÐ¾Ð¼Ð±Ñ–Ð½Ð°Ñ†Ñ–Ñ ÐµÑ„ÐµÐºÑ‚Ð¸Ð²Ð½Ð° при зборі швидких даних або при Ñинхронізації архівів піÑÐ»Ñ Ð²Ñ‚Ñ€Ð°Ñ‚Ð¸ зв'Ñзку з віддаленим джерелом даних. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:555px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_packAsync.png"><img class="thumbimage" height="267" src="../en/files/DAQ_packAsync.png" width="553" /></a> <div class="thumbcaption">РиÑ. 4. Діаграма поÑлідовноÑÑ‚Ñ– взаємодії при аÑинхронних запитах пакетного механізму.</div></div></div></div> <p>Згідно діаграми вище, ми отримаємо наÑтупну поведінку пакетного механізму при аÑинхронних запитах: </p> <ul><li> атрибут параметру, або вищеÑтоÑщий об'єкт контролера, здійÑнює періодичні запити <b>HardwarePLC::valuesRequest()</b> Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð¿Ð°ÐºÐµÑ‚Ñ–Ð² значень Ñигналу або групи Ñигналів;</li> <li> отримані пакети значень Ñигналів розташовуютьÑÑ Ð´Ð¾ архіву, запитом <b>DAQParamAttributeArch::setValues()</b>, а оÑтаннє Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÐµÑ‚Ñ–Ð² розташовуєтьÑÑ Ñƒ атрибут параметру;</li> <li> об'єкт SCADA-ÑиÑтеми надÑилає запит фрагменту архіву до атрибуту параметра <b>DAQParamAttribute::getValues()</b>, а той переÑпрÑмовує запит до архіву <b>DAQParamAttributeArch::getValues()</b>. У результаті, повертаєтьÑÑ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚ архіву, доÑтупний піÑÐ»Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ ÑеанÑу Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¶ÐµÑ€ÐµÐ»Ð° даних;</li> <li> об'єкт SCADA-ÑиÑтеми надÑилає запит оÑтаннього Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð´Ð¾ об'єкту атрибута параметра <b>DAQParamAttribute::getVal()</b> та отримує збережене локальне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ ÑеанÑу Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¶ÐµÑ€ÐµÐ»Ð° даних.</li></ul> <p>У OpenSCADA такий механізм реалізують наÑтупні модулі підÑиÑтеми "Збір Даних": </p> <ul><li> <i><a href="Modules/DAQGate.html" title="Special:MyLanguage/Modules/DAQGate">DAQGate</a></i> — модуль Ð²Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ð¾Ð±'єктів контролерів віддалених OpenSCADA-Ñтанцій на локальну. Реалізує Ñинхронний та аÑинхронний пакетний режими Ð²Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ð°Ñ€Ñ…Ñ–Ð²Ñ–Ð² віддалених OpenSCADA-Ñтанцій.</li> <li> <i><a href="Modules/DiamondBoards.html" title="Special:MyLanguage/Modules/DiamondBoards">DiamondBoards</a></i> — модуль доÑтупу до даних PC/104 плат фірми Diamond Systems. Плати PC/104 розташовуютьÑÑ Ð½Ð° ISA-шині, відтак Ñ” локальними та доÑтупні порівнÑно швидко. У режимі збору даних за перериваннÑм здійÑнюєтьÑÑ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°ÐºÐµÑ‚Ñ–Ð² швидких значень (до 200 кГц) за одну Ñекунду (до 200000 значень у пакеті) та наÑтупного Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… пакетів у архівах атрибутів параметрів DAQ.</li></ul> <h3><span class="mw-headline" id=".D0.9F.D0.B0.D1.81.D0.B8.D0.B2.D0.BD.D0.B8.D0.B9_.D0.BC.D0.B5.D1.85.D0.B0.D0.BD.D1.96.D0.B7.D0.BC_.D0.B7.D0.B1.D0.BE.D1.80.D1.83_.D1.82.D0.B0_.D1.96.D0.BD.D1.96.D1.86.D1.96.D0.B0.D1.82.D0.B8.D0.B2.D0.BD.D1.96_.D0.BF.D1.96.D0.B4.D0.BA.D0.BB.D1.8E.D1.87.D0.B5.D0.BD.D0.BD.D1.8F"><span class="mw-headline-number">1.4</span> <span id="PassiveAndInitiative" title="#PassiveAndInitiative">ПаÑивний механізм збору та ініціативні підключеннÑ</span></span></h3> <p>ПаÑивний механізм збору характерний ініціативою Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… до SCADA-ÑиÑтеми із боку джерела даних. Цей механізм Ñ” доÑтатньо рідкіÑним Ñвищем, однак може мати міÑце за певних умов або обмежень у можливоÑÑ‚Ñ– викориÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ñ€Ñмих механізмів збору даних, риÑунок 1.4a. Прикладом такої Ñитуації можуть Ñлугувати географічно розоÑереджені ÑиÑтеми збору даних за поÑередництвом мобільних мереж GPRS/EDGE/3G/4G/... . ÐÐ°Ð´Ñ–Ð»ÐµÐ½Ð½Ñ Ð²ÑÑ–Ñ… вузлів окремими реальними та Ñтатичними IP-адреÑами, або Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€Ð¿Ð¾Ñ€Ð°Ñ‚Ð¸Ð²Ð½Ð¾Ñ— мобільної мережі, у таких мережах може виÑвитиÑÑ Ð´Ð¾Ñ€Ð¾Ð³Ð¸Ð¼ задоволеннÑм, тому доÑтупніше виÑвлÑєтьÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ñ‚Ð¸Ð²Ð° ÑеанÑу передачі даних із-за динамічних IP-Ð°Ð´Ñ€ÐµÑ Ð½Ð° одну реальну IP-адреÑу Ñерверу SCADA-ÑиÑтеми. Дії на модифікацію передаютьÑÑ Ð´Ð¶ÐµÑ€ÐµÐ»Ñƒ даних в момент ÑеанÑу передачі даних джерелом — читаннÑ. Хоча тут можливі й типові запити через VPN Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ джерела даних та Ñ„ÑƒÐ½ÐºÑ†Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ñ‡ÐµÑ€ÐµÐ· мережеву СУБД-поÑередника. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:729px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_passive.png"><img class="thumbimage" height="190" src="../en/files/DAQ_passive.png" width="727" /></a> <div class="thumbcaption">РиÑ.1.4a. Діаграма поÑлідовноÑÑ‚Ñ– взаємодії у паÑивному механізмі роботи.</div></div></div></div> <p>Згідно до діаграми вище, ми отримуємо наÑтупну поведінку паÑивного механізму: </p> <ul><li> об'єкт джерела даних здійÑнює періодичні ÑеанÑи зв'Ñзку із атрибутом параметру <b>DAQParamAttributeArch::setVal()</b> Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ– Ñвоїх даних та Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ дій;</li> <li> об'єкт SCADA-ÑиÑтеми надÑилає запит оÑтаннього Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ параметра <b>DAQParamAttribute::getVal()</b> та отримує збережене локально Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½ÑŒÐ¾Ð³Ð¾ ÑеанÑу зв'Ñзку джерела даних.</li></ul> <p>У випадку коли хоÑÑ‚, що ініціює підключеннÑ, має динамічну адреÑу Ñка не Ñ” "Ñірою", тобто за нею можна підключитиÑÑ Ð¿Ñ€Ñмо, тоді ініціативне Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð° викориÑтовувати лише Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð²Ð¾Ñ€Ð¾Ñ‚Ð½Ð¾Ñ— адреÑи, за Ñкою прÑмо Ñ– підключатиÑÑ, а у контролері таких підключень здійÑнювати лише оновлÑÐ½Ð½Ñ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾Ñ— адреÑи. </p><p><a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../en/files/At.png" width="22" /></a> Окремим випадком Ñ” ініціатива вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ TCP-Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ джерела даних та подальше здійÑÐ½ÐµÐ½Ð½Ñ Ñтандартних запитів за цим підключеннÑм від Ñервера, що вхідні транÑпорти <a href="Modules/Sockets.html" title="Special:MyLanguage/Modules/Sockets">Ð¼Ð¾Ð´ÑƒÐ»Ñ "Сокети"</a> Ñ– <a href="Modules/SSL.html" title="Special:MyLanguage/Modules/SSL">Ð¼Ð¾Ð´ÑƒÐ»Ñ "SSL"</a> наразі підтримують. Цей режим наразі навіть найрозповÑюдженіший! </p><p>OpenSCADA також Ñама підтримує ініціацію таких підключень, тобто може виÑтупати у ролі джерела даних за "Ñірим" та динамічним IP. Так, вхідний транÑпорт <a href="Modules/Sockets.html" title="Special:MyLanguage/Modules/Sockets">Ð¼Ð¾Ð´ÑƒÐ»Ñ "Сокети"</a> Ñ– <a href="Modules/SSL.html" title="Special:MyLanguage/Modules/SSL">Ð¼Ð¾Ð´ÑƒÐ»Ñ "SSL"</a> у режимі 2 виÑтупає ініціатором підключеннÑ, піÑÐ»Ñ Ñ‡Ð¾Ð³Ð¾ надÑилає ідентифікуючу поÑлідовніÑÑ‚ÑŒ та переходить у звичайний режим Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñ–Ð² від хоÑту, до Ñкого під'єднавÑÑ. <a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../en/files/At.png" width="22" /></a> Щодо чого наразі оÑобливо кориÑним Ñ” віддалений контроль OpenSCADA Ñтанцій у Ñірих мережах за такого підключеннÑ. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:758px;"><a class="image" href="http://oscada.org/wiki/File:Oscada_initCon_uk.png"><img class="thumbimage" height="718" src="files/Oscada_initCon_uk.png" width="756" /></a> <div class="thumbcaption">РиÑ.1.4b. Ініціативне Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð”Ð¶ÐµÑ€ÐµÐ» Даних.</div></div></div></div> <h2><span class="mw-headline" id=".D0.92.D1.96.D1.80.D1.82.D1.83.D0.B0.D0.BB.D1.8C.D0.BD.D1.96_.D0.B4.D0.B6.D0.B5.D1.80.D0.B5.D0.BB.D0.B0_.D0.B4.D0.B0.D0.BD.D0.B8.D1.85"><span class="mw-headline-number">2</span> <span id="Virtual" title="#Virtual">Віртуальні джерела даних</span></span></h2> <p>Крім збору фізичних даних, актуальною Ñ” Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ збору даних. Віртуальні дані предÑтавлÑÑŽÑ‚ÑŒ Ñобою дані, отримані вÑередині ÑиÑтеми Ñк незалежно, так Ñ– на оÑнові фізичних даних. Практично, механізми Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¸Ñ… даних реалізуютьÑÑ Ñ€Ð°Ð·Ð¾Ð¼ з механізмом кориÑтувацьких обчиÑлень. Ð’ Ñередині промиÑлових контролерів та SCADA-ÑиÑтем викориÑтовуютьÑÑ Ñ€Ñ–Ð·Ð½Ñ– мови програмуваннÑ. У випадку з контролерами, у ÑкоÑÑ‚Ñ– таких мов чаÑто викориÑтовуютьÑÑ Ð¼Ð¾Ð²Ð¸ низького Ñ€Ñ–Ð²Ð½Ñ (аÑемблери), однак, оÑтаннім чаÑом, вÑе чаÑтіш викориÑтовуютьÑÑ Ð¼Ð¾Ð²Ð¸ виÑокого Ñ€Ñ–Ð²Ð½Ñ (C, Pascal та інші), а також формальні мови IEC 61131-3 (Ñхеми потоків Ñтанів SFC, блокові Ñхеми FBD, релейні Ñхеми LD та текÑтові ST, IL). У випадку із SCADA-ÑиÑтемами, обчиÑÐ»ÑŽÐ²Ð°Ð½Ð½Ñ Ñ‡Ð°Ñтіше забезпечуютьÑÑ Ð¼Ð¾Ð²Ð°Ð¼Ð¸ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ñокого Ñ€Ñ–Ð²Ð½Ñ Ñ‚Ð° формальними мовами. </p><p>У OpenSCADA можуть бути реалізовані інтерфейÑи Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° віртуальних джерел даних на оÑнові різних мов, у окремих модулÑÑ… підÑиÑтеми "Збір Даних". Ðа поточний Ñ‡Ð°Ñ Ð´Ð¾Ñтупні модулі віртуальних обчиÑлювачів: </p> <ul><li> ОбчиÑлювач на Java-подібній мові: <a href="Modules/JavaLikeCalc.html" title="Special:MyLanguage/Modules/JavaLikeCalc">JavaLikeCalc</a>;</li> <li> Блоковий обчиÑлювач: <a href="Modules/BlockCalc.html" title="Special:MyLanguage/Modules/BlockCalc">BlockCalc</a>.</li></ul> <p>До Ñдра OpenSCADA інтегровано механізм кориÑтувацьких функцій або <a href="User_API.html" title="Special:MyLanguage/Documents/User API">API кориÑтувацького програмуваннÑ</a>. КориÑтувацькі функції можуть надаватиÑÑ Ð±ÑƒÐ´ÑŒ Ñким об'єктом програми, в тому чиÑлі й модулÑми, відповідно до влаÑної функціональноÑÑ‚Ñ–, тим Ñамим надаючи кориÑтувачу деÑкий набір функцій контролю за тим або іншим об'єктом. Функції кориÑтувацького API можуть бути Ñк Ñтатичними, тобто Ñ‚Ñ– що реалізують фікÑовану функціональніÑÑ‚ÑŒ окремого об'єкту, так Ñ– динамічними, тобто Ñ‚Ñ– що формуютьÑÑ ÐºÐ¾Ñ€Ð¸Ñтувачем під потрібне йому Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð½Ð° внутрішній мові кориÑтувацького Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸Ñокого рівнÑ. </p><p>Модуль <a href="Modules/JavaLikeCalc.html" title="Special:MyLanguage/Modules/JavaLikeCalc">JavaLikeCalc</a> надає до OpenSCADA механізм ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¸Ñ… кориÑтувацьких функцій та Ñ—Ñ… бібліотек на Java-подібній мові. ÐžÐ¿Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— на Java-подібній мові полÑгає у обв'Ñзки параметрів функції алгоритмом. Крім цього, модуль наділено функціÑми безпоÑередніх обчиÑлень, шлÑхом ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¾Ð±Ñ‡Ð¸Ñлювальних контролерів із аÑоційованою обчиÑлювальною функцією. Модулем надаєтьÑÑ Ð¼ÐµÑ…Ð°Ð½Ñ–Ð·Ð¼ прекомпілÑції контекÑтно-залежних функцій, що викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð²Ð±ÑƒÐ´Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувацьких алгоритмів безпоÑередньо до контекÑту різних компонентів OpenSCADA, це, наприклад, <a href="Program_manual.html#DAQ" title="Special:MyLanguage/Documents/Program manual">шаблони параметрів підÑиÑтеми "Збір Даних"</a> та <a href="Modules/VCAEngine.html" title="Special:MyLanguage/Modules/VCAEngine">рушій Середовища Візуалізації та Ð£Ð¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ (СВУ)</a>. </p><p>Модуль <a href="Modules/BlockCalc.html" title="Special:MyLanguage/Modules/BlockCalc">BlockCalc</a> надає до OpenSCADA механізм ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувацьких обчиÑлень, що ґрунтуєтьÑÑ Ð½Ð° формальній мові блокових Ñхем. Мови блокового Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ò‘Ñ€ÑƒÐ½Ñ‚ÑƒÑŽÑ‚ÑŒÑÑ Ð½Ð° понÑÑ‚Ñ‚Ñ– блокових Ñхем та функціональних блоків. Причому, залежно від ÑутноÑÑ‚Ñ– блоку, блокові Ñхеми можуть бути: логічними Ñхемами, Ñхемами релейної логіки, моделлю технологічного процеÑу та інше. СутніÑÑ‚ÑŒ блокової Ñхеми полÑгає в тому, що вона міÑтить перелік блоків та зв'Ñзки між ними. З формальної точки зору блок — це елемент (функціÑ), Ñка має входи, виходи та алгоритм обчиÑленнÑ. ВиходÑчи із концепції Ñередовища програмуваннÑ, блок — це кадр значень, аÑоційований з об'єктом функції. Входи та виходи блоків треба поєднувати Ð´Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ†Ñ–Ð»ÑŒÐ½Ð¾Ñ— блокової Ñхеми. </p><p>З метою Ð½Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ API кориÑтувацького Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñми, Ñтворені наÑтупні Ñпеціалізовані модулі Ñтатичних функцій API кориÑтувацького програмуваннÑ: </p> <ul><li> Бібліотека функцій ÑиÑтемного API: <a href="Modules/FLibSYS.html" title="Special:MyLanguage/Modules/FLibSYS">FLibSYS</a>;</li> <li> Бібліотека Ñтандартних математичних функцій: <a href="Modules/FLibMath.html" title="Special:MyLanguage/Modules/FLibMath">FLibMath</a>;</li> <li> Бібліотека функцій ÑуміÑноÑÑ‚Ñ– зі SCADA Complex1: <a href="Modules/FLibComplex1.html" title="Special:MyLanguage/Modules/FLibComplex1">FLibComplex1</a>.</li></ul> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:602px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_progCompon_uk.png"><img class="thumbimage" height="662" src="files/DAQ_progCompon_uk.png" width="600" /></a> <div class="thumbcaption">РиÑ. 6. Загальна Ñтруктура компонентів Ñередовища програмуваннÑ.</div></div></div></div> <h2><span class="mw-headline" id=".D0.9B.D0.BE.D0.B3.D1.96.D1.87.D0.BD.D0.B8.D0.B9_.D1.80.D1.96.D0.B2.D0.B5.D0.BD.D1.8C_.D0.BE.D0.B1.D1.80.D0.BE.D0.B1.D0.BA.D0.B8_.D0.B4.D0.B0.D0.BD.D0.B8.D1.85"><span class="mw-headline-number">3</span> <span id="LogicLev" title="#LogicLev">Логічний рівень обробки даних</span></span></h2> <p>Вище ми відзначали, що тип джерела даних може коливатиÑÑ Ð²Ñ–Ð´ "Ñирого" до комплекÑного. Під "Ñирим" маєтьÑÑ Ð½Ð° увазі джерело, Ñке надає тільки елементарні Ñигнали (цілі, реальні, логічні, Ñ€Ñдок, ...), до того ж окремо. Під комплекÑним маєтьÑÑ Ð½Ð° увазі джерело, Ñке групує Ñигнали та, в параметрі підÑиÑтеми "Збір Даних", надає атрибути додаткового призначеннÑ, Ñкі покривають практично вÑÑ– діагноÑтичні завданнÑ, тобто параметр Ñ” закінченим об'єктом, Ñкий не потребує доповненнÑ. </p><p>Враховуючи таку розбіжніÑÑ‚ÑŒ, може виникнути ÑитуаціÑ, коли інформації у параметру контролера від джерела даних недоÑтатньо Ð´Ð»Ñ Ð¾Ð¿Ð¸Ñу реального об'єкту ТП загалом та потрібен довільний об'єкт більш виÑокого Ñ€Ñ–Ð²Ð½Ñ Ð°Ð±Ñтракції. ВирішеннÑм цієї Ñитуації може бути Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð¸Ñ… параметрів, що Ñ” ненаглÑдним та вноÑить плутанину. Більш правильним рішеннÑм Ñ” викориÑÑ‚Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾ÑˆÐ°Ñ€ÐºÑƒ "Логічного рівнÑ", Ñкий виконує функцію гнучкого Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð²-контейнерів Ñигналів потрібної Ñтруктури та що включає поÑÑ‚-обробку. </p><p>Функціонально, "Логічний рівень" призначено Ð´Ð»Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ñƒ OpenSCADA механізму вільного Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð²-контейнерів Ñигналів потрібної Ñтруктури. </p><p>ЕкÑплуатаційним призначеннÑм "Логічного рівнÑ" Ñ”: </p> <ul><li> Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ñфери заÑтоÑÑƒÐ²Ð°Ð½Ð½Ñ OpenSCADA за рахунок Ð·Ð±Ñ–Ð»ÑŒÑˆÐµÐ½Ð½Ñ Ð³Ð½ÑƒÑ‡ÐºÐ¾ÑÑ‚Ñ– опиÑу параметрів підÑиÑтеми "Збір Даних";</li> <li> ÑÐºÐ¾Ñ€Ð¾Ñ‡ÐµÐ½Ð½Ñ Ñ‚Ñ€ÑƒÐ´Ð¾Ð²Ð¸Ñ‚Ñ€Ð°Ñ‚ на ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñкладних автоматизованих ÑиÑтем.</li></ul> <p>Концепцію "Логічного рівнÑ" заÑновано на шаблонах параметрів, Ð´Ð»Ñ Ñких, у підÑиÑтемі "Збір Даних", передбачено контейнер бібліотек шаблонів (риÑ.1). Кожна бібліотека міÑтить шаблони параметрів, Ñкі можуть викориÑтовуватиÑÑ Ð¼Ð¾Ð´ÑƒÐ»Ñми підÑиÑтеми "Збір Даних" Ð´Ð»Ñ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— параметрів на оÑнові шаблонів. МодулÑми OpenSCADA, Ñкі викориÑтовують шаблони у Ñвоїй роботі, Ñ”: </p> <ul><li> <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">LogicLev</a> — модуль реалізації клаÑичної концепції "Логічного рівнÑ".</li> <li> <a href="Modules/ModBus.html" title="Special:MyLanguage/Modules/ModBus">ModBus</a> — модуль доÑтупу до даних джерел за поÑередництвом ÑімейÑтва протоколів "ModBus". Крім типу параметру прÑмого опиÑу переліку регіÑтрів, модуль підтримує Ñ– логічний тип, де регіÑтри "ModBus" опиÑуютьÑÑ Ñƒ зв'Ñзках шаблону.</li> <li> <a href="Modules/Siemens.html" title="Special:MyLanguage/Modules/Siemens">Siemens</a> — модуль збору даних контролерів фірми Siemens Ñерії S7. ЗавдÑки виÑокій гнучкоÑÑ‚Ñ– та функціональноÑÑ‚Ñ– контролерів цієї Ñерії, що дозволÑÑ” формувати комплекÑні типи даних різноманітної Ñтруктури, вÑÑ– параметри цього Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ñ€Ð°Ñ†ÑŽÑŽÑ‚ÑŒ за шаблонами.</li> <li> <a href="Modules/OPC_UA.html" title="Special:MyLanguage/Modules/OPC UA">OPC-UA</a> — модуль доÑтупу до даних джерел за поÑередництвом протоколу "OPC-UA". Крім типу параметру прÑмого опиÑу переліку вузлів, модуль підтримує Ñ– логічний тип, де вузли "OPC-UA" опиÑуютьÑÑ Ñƒ зв'Ñзках шаблону.</li></ul> <p>Загальний механізм роботи "Логічного рівнÑ", на прикладі Ð¼Ð¾Ð´ÑƒÐ»Ñ <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">LogicLev</a>, зображено на риÑунку 7. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:302px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_loglevel_uk.png"><img class="thumbimage" height="364" src="files/DAQ_loglevel_uk.png" width="300" /></a> <div class="thumbcaption">РиÑ. 7. Механізм роботи "Логічного рівнÑ" на прикладі Ð¼Ð¾Ð´ÑƒÐ»Ñ "LogicLev".</div></div></div></div> <p>ВиходÑчи із цього Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð²Ð¸Ð´Ð½Ð¾, що параметри контролеру логічного Ñ€Ñ–Ð²Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½ÑƒÑŽÑ‚ÑŒ функцію Ð²Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ñ–Ð½ÑˆÐ¸Ñ… параметрів підÑиÑтеми "Збір Даних" (на прикладі параметрів 1 та 4) та довільне Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² на оÑнові шаблонів 1, 2 та інших параметрів підÑиÑтеми "Збір Даних" (на прикладі параметрів 2, 3 та 5). </p><p>Структура параметрів з шаблоном в оÑнові має Ñтруктуру, зображену на риÑунку 8. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:244px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_str_prmtmpl_uk.png"><img class="thumbimage" height="200" src="files/DAQ_str_prmtmpl_uk.png" width="242" /></a> <div class="thumbcaption">РиÑ. 8. Структура параметрів з шаблоном в оÑнові.</div></div></div></div> <p>Як можна бачити із Ñтруктури, параметр логічного Ñ€Ñ–Ð²Ð½Ñ ÑкладаєтьÑÑ Ñ–Ð· об'єкту функції, атрибутів та конфігурації шаблону. Об'єкт функції це екземплÑÑ€ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— шаблону з набором входів/виходів та програмою обчиÑÐ»ÐµÐ½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñƒ на одній із мов кориÑтувацького програмуваннÑ, зазвичай це Java-подібна мова кориÑтувацького Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ <a href="Modules/JavaLikeCalc.html" title="Special:MyLanguage/Modules/JavaLikeCalc">JavaLikeCalc</a>. Утім, шаблон може бути взагалі без програми, надаючи тільки Ñтруктуру Ð¿ÐµÑ€ÐµÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð²Ñ…Ð¾Ð´Ñ–Ð²/виходів. Ðтрибути у Ñтруктурі зображують перелік атрибутів результуючого параметру відповідно до шаблону. ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ñƒ Ñтруктурі надає конфігурацію влаÑтивоÑтей шаблону та його зовнішніх зв'Ñзків. </p><p>Логіку роботи логічного Ñ€Ñ–Ð²Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² можна запиÑати наÑтупним чином: </p> <ul><li> Параметр зв'ÑзуєтьÑÑ Ð· шаблоном, із Ñкого отримуєтьÑÑ Ñтруктура атрибутів, відповідно до функції шаблону.</li> <li> ВиконуєтьÑÑ Ð·Ð²'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±'єкту функції параметру з функцією із шаблону.</li> <li> ФормуєтьÑÑ Ñтруктура зв'Ñзків відповідно до шаблону функції. ВиходÑчи із Ñтруктури зв'Ñзків формуєтьÑÑ Ñ„Ð¾Ñ€Ð¼Ð° зв'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñƒ та кориÑтувачем вÑтановлюютьÑÑ Ð·Ð²'Ñзки.</li> <li> При доÑтупі до атрибутів отриманого параметра здійÑнюєтьÑÑ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€ÐºÐ° на наÑвніÑÑ‚ÑŒ прÑмого зв'Ñзку. У випадку наÑвноÑÑ‚Ñ– прÑмого зв'Ñзку, запит переÑпрÑмовуєтьÑÑ Ð·Ð° цим зв'Ñзком, інакше, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð±ÐµÑ€ÐµÑ‚ÑŒÑÑ Ñ–Ð· об'єкту функції параметру.</li> <li> Паралельно працює обчиÑÐ»ÑŽÐ²Ð°Ð½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— шаблону за об'єктом функції параметрів. При цьому, перед обчиÑленнÑм здійÑнюєтьÑÑ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð½Ð°Ñ‡ÐµÐ½ÑŒ за зв'Ñзками, а піÑÐ»Ñ Ð¾Ð±Ñ‡Ð¸ÑÐ»ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ Ð·Ð¼Ñ–Ð½ за цими зв'Ñзками.</li></ul> <p>Шаблон параметрів, загалом, надає наÑтупне: </p> <ul><li> Ñтруктуру входів/виходів функції шаблону;</li> <li> ознаки конфігурації та зв'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° (конÑтанта, зв'Ñзок);</li> <li> попередні Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ— поÑтійних та шаблону зв'Ñзків;</li> <li> ознаки атрибутів результуючого параметру логічного рівнÑ, типів: не атрибут, атрибут з повним доÑтупом, атрибут з доÑтупом тільки на читаннÑ; </li> <li> механізм обчиÑÐ»ÐµÐ½Ð½Ñ Ð²Ñ…Ð¾Ð´Ñ–Ð²/виходів функції шаблонів мовою кориÑтувацького Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ OpenSCADA.</li></ul> <p>Ðа риÑунку 9 наведено Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð²ÐºÐ»Ð°Ð´ÐºÐ¸ конфігурації шаблону параметрів підÑиÑтеми "Збір Даних" у виглÑді таблиці з конфігурацією входів/виходів та текÑту програми кориÑтувацького програмуваннÑ. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:920px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_prmtmpl_uk.png"><img class="thumbimage" height="737" src="files/DAQ_prmtmpl_uk.png" width="918" /></a> <div class="thumbcaption">РиÑ. 9. Вкладка конфігурації шаблону параметрів підÑиÑтеми "Збір Даних".</div></div></div></div> <p>Вкладкою входи/виходи "Ð’Ð’" шаблону параметрів передбачено наÑтупні влаÑтивоÑÑ‚Ñ– Ñпеціалізованого призначеннÑ: "Ðтрибут", "КонфігураціÑ" та "ЗначеннÑ". </p><p>ВлаÑтивіÑÑ‚ÑŒ "Ðтрибут" виÑтупає ознакою Ð²Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ð²Ñ…Ð¾Ð´Ñƒ/виходу шаблону на результуючий атрибут параметра. Передбачено наÑтупні варіанти цієї влаÑтивоÑÑ‚Ñ–: </p> <ul><li> <i>Ðе атрибут</i> — вхід/вихід функції шаблону не віддзеркалюєтьÑÑ Ð½Ð° атрибут;</li> <li> <i>Тільки читаннÑ</i> — вхід/вихід функції шаблону віддзеркалюєтьÑÑ Ð½Ð° атрибут з доÑтупом тільки на читаннÑ;</li> <li> <i>Повний доÑтуп</i> — вхід/вихід функції шаблону віддзеркалюєтьÑÑ Ð½Ð° атрибут з повним доÑтупом.</li></ul> <p>ВлаÑтивіÑÑ‚ÑŒ "КонфігураціÑ" виÑтупає ознакою, Ñка вказує на викориÑÑ‚Ð°Ð½Ð½Ñ Ð²Ñ…Ð¾Ð´Ñƒ/виходу функції шаблону в результуючій конфігурації шаблону на логічному рівні. Передбачено наÑтупні варіанти цієї влаÑтивоÑÑ‚Ñ–: </p> <ul><li> <i>Змінна</i> — доÑтупний Ð´Ð»Ñ Ð´Ð¾Ñтупу та контролю тільки з процедури шаблона, Ñк змінна, Ñка зберігаєтьÑÑ Ñ–Ð· контекÑтом параметру логічного рівнÑ;</li> <li> <i>КонÑтанта</i> — доÑтупний Ð´Ð»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð½Ð° рівні параметра логічного рівнÑ, у виглÑді поÑтійної розділу конфігурації шаблону;</li> <li> <i>Зв'Ñзок</i> — доÑтупний Ð´Ð»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð½Ð° рівні параметру логічного рівнÑ, у виглÑді зв'Ñзку розділу конфігурації шаблону.</li></ul> <p>Поле "ЗначеннÑ" опиÑує передвÑтановлене Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñтійних та шаблонів зовнішніх зв'Ñзків. Шаблон зовнішніх зв'Ñзків викориÑтовуєтьÑÑ Ð· метою опиÑÐ°Ð½Ð½Ñ Ð¼ÐµÑ…Ð°Ð½Ñ–Ð·Ð¼Ñƒ Ð³Ñ€ÑƒÐ¿ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° автоматичного розподілу зовнішніх зв'Ñзків. Структура шаблону зовнішніх зв'Ñзків однакова у чаÑтині Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ атрибутів параметрів підÑиÑтеми "Збір даних" та розширюєтьÑÑ Ñпецифічним форматом адреÑи окремого Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ñ–Ð´ÑиÑтеми "Збору даних", Ñкий викориÑтовує механізм шаблонів. ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ параметрів підÑиÑтеми "Збір даних" — шаблон конфігурації зовнішнього зв'Ñзку має виглÑд <b>{Параметр}|{атрибут}</b>, де: </p> <ul><li> <i>Параметр</i> — викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð¾Ð±'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² та Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° формі конфігурації;</li> <li> <i>атрибут</i> — Ð´Ð»Ñ Ð°Ñоціативного зв'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² при призначені параметру. </li></ul> <p><span id="LogicLevLnks" title="#LogicLevLnks">Саме подальше зв'ÑзуваннÑ</span> загалом може здійÑнюватиÑÑ: </p> <ul><li> загальним визначеннÑм-обраннÑм адреÑи-атрибуту параметру підÑиÑтеми "Збір даних"; наприклад, зв'Ñзок "LogicLev.experiment.Pi.var" або "prm:/LogicLev/experiment/Pi/var" здійÑнює доÑтуп атрибуту параметру до іншого атрибуту параметра; знак "(+)" у кінці адреÑи вказує на вдале зв'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° приÑутніÑÑ‚ÑŒ цільового об'єкту; Ð´Ð»Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² об'єктного типу допуÑтимий ієрархічний доÑтуп до конкретної влаÑтивоÑÑ‚Ñ– об'єкту шлÑхом Ð²ÐºÐ°Ð·Ð°Ð½Ð½Ñ Ñ—Ñ— шлÑху через Ñимвол '#', наприклад: "LogicLev.experiment.Pi.var#pr1.pr2" або "prm:/LogicLev/experiment/Pi/var#pr1.pr2"; у шлÑху із префікÑом "prm:" ви можете викориÑтовувати елементи відноÑноÑÑ‚Ñ– "." та "..";</li> <li> визначеннÑм Ñпецифічної адреÑи окремого Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ñ–Ð´ÑиÑтеми "Збір даних";</li> <li> прÑмим вÑтановленнÑм поÑтійного Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ форматі "<b>val:Стале значеннÑ</b>";</li> <li> порожньою або помилковою адреÑою, коли Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð·Ð° зв'Ñзком вÑтановлюєтьÑÑ Ñƒ <b>EVAL</b>.</li></ul> <p>У ÑкоÑÑ‚Ñ– прикладу викориÑÑ‚Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñƒ, на риÑунку 10 наведено Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñƒ "F3" Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð»Ð¾Ð³Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ рівнÑ, де предÑтавлено вкладку "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°" Ð´Ð»Ñ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ— шаблону параметру, включаючи зв'ÑзуваннÑ. Ðа риÑунку 11 предÑтавлено вкладку "Ðтрибути" з переліком атрибутів та Ñ—Ñ… значень, Ñтворених за поÑередництвом шаблону. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:845px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_wprm_tmpl_uk.png"><img class="thumbimage" height="597" src="files/DAQ_wprm_tmpl_uk.png" width="843" /></a> <div class="thumbcaption">РиÑ. 10. Вкладка "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñƒ" параметру "F3" Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð»Ð¾Ð³Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ рівнÑ.</div></div></div></div> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:920px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_wprm_a_uk.png"><img class="thumbimage" height="672" src="files/DAQ_wprm_a_uk.png" width="918" /></a> <div class="thumbcaption">РиÑ. 11. Вкладка "Ðтрибути" параметру "F3" Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð»Ð¾Ð³Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ рівнÑ.</div></div></div></div> <h3><span class="mw-headline" id=".D0.9A.D0.BE.D0.BD.D1.86.D0.B5.D0.BF.D1.86.D1.96.D1.8F_.D0.B4.D0.BE.D1.81.D1.82.D1.83.D0.BF.D1.83_.D0.B4.D0.BE_.D0.B4.D0.B0.D0.BD.D0.B8.D1.85_.D1.87.D0.B5.D1.80.D0.B5.D0.B7_.D0.BA.D0.BE.D1.80.D0.B8.D1.81.D1.82.D1.83.D0.B2.D0.B0.D1.86.D1.8C.D0.BA.D0.B8.D0.B9_.D0.BF.D1.80.D0.BE.D1.82.D0.BE.D0.BA.D0.BE.D0.BB"><span class="mw-headline-number">3.1</span> <span id="UserPrt" title="#UserPrt">ÐšÐ¾Ð½Ñ†ÐµÐ¿Ñ†Ñ–Ñ Ð´Ð¾Ñтупу до даних через кориÑтувацький протокол</span></span></h3> <p>ÐаÑтупним рівнем, заÑнованим на Логічному Рівні, Ñ” ÐºÐ¾Ð½Ñ†ÐµÐ¿Ñ†Ñ–Ñ Ð´Ð¾Ñтупу до даних через кориÑтувацький протокол, що реалізуєтьÑÑ Ð°Ð±Ð¾ прÑмо у коді шаблону або Ñк окремий об'єкт КориÑтувацького Протоколу у <a href="Modules/UserProtocol.html" title="Special:MyLanguage/Modules/UserProtocol">модулі Protocol.UserProtocol</a>, де наразі також можна викориÑтовувати DAQ-шаблони. </p><p>Концепцію доÑтупу до даних через кориÑтувацький протокол можна зобразити Ñк на риÑунку 1. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:324px;"><a class="image" href="http://oscada.org/wiki/File:UserPrtDevs_concept_uk.png"><img class="thumbimage" height="275" src="files/UserPrtDevs_concept_uk.png" width="322" /></a> <div class="thumbcaption">РиÑ.1. ÐšÐ¾Ð½Ñ†ÐµÐ¿Ñ†Ñ–Ñ Ð´Ð¾Ñтупу до даних через кориÑтувацький протокол.</div></div></div></div> <p>Як можна бачити з риÑунку 1, Ð²Ð·Ð°Ñ”Ð¼Ð¾Ð´Ñ–Ñ Ð· приÑтроєм відбуваєтьÑÑ Ñ‡ÐµÑ€ÐµÐ· деÑкий транÑпорт на Ñкому вони фізично базуютьÑÑ. Запит до транÑпорту Ви можете надіÑлати: </p> <ol><li> БезпоÑередньо за допомогою функції ÑиÑтемного API OpenSCADA об'єкту транÑпорту <i><a href="User_API.html#SYSTransport" title="Special:MyLanguage/Documents/User API">string messIO( string mess, real timeOut = 0 );</a></i>, Ñкщо протоколоÑпецифічна чаÑтина дуже проÑта та дані вам потрібно лише вилучити.</li> <li> Загорнутий запит даних <i>req</i>, функцією <i><a href="User_API.html#SYSTransport" title="Special:MyLanguage/Documents/User API">int messIO( XMLNodeObj req, string prt );</a></i> та Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ <i>prt</i>, Ñкщо протокольна чаÑтина доÑтатньо Ñкладна та вже предÑтавлена у OpenSCADA.</li> <li> Загорнутий запит даних Ñпецифічний до кориÑтувача за допомогою функції <i><a href="User_API.html#SYSTransport" title="Special:MyLanguage/Documents/User API">int messIO( XMLNodeObj req, "UserProtocol" );</a></i> та реалізації <a href="Modules/UserProtocol.html" title="Special:MyLanguage/Modules/UserProtocol">кориÑтувацького протоколу</a>, Ñкщо протокольна чаÑтина доÑтатньо Ñкладна та ще відÑÑƒÑ‚Ð½Ñ Ñƒ OpenSCADA. КориÑтувач реалізує тут Ñаму протоколоÑпецифічну чаÑтину у <a href="Modules/UserProtocol.html" title="Special:MyLanguage/Modules/UserProtocol">модулі UserProtocol</a> та чаÑтину Ñпецифічну до даних у шаблоні Ð´Ð»Ñ <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð›Ð¾Ð³Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ РівнÑ</a> або безпоÑередньо у процедурі контролеру на внутрішній мові Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ <a href="Modules/JavaLikeCalc.html" title="Special:MyLanguage/Modules/JavaLikeCalc">Ð¼Ð¾Ð´ÑƒÐ»Ñ JavaLikeCalc</a>. </li></ol> <dl><dd><dl><dd> <a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../en/files/At.png" width="22" /></a> Цей оÑтанній метод наразі розвинено до можливоÑÑ‚Ñ– Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»ÑŒÐ½Ð¾Ñ— чаÑтини коду безпоÑередньо у тому-ж коді шаблону, Ñк окрема вбудована Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ñ‡ÐµÑ€ÐµÐ· виклик функції запиту першого методу, Ñкщо немає потреби повторного викориÑтаннÑ, або навіть Ñкщо така потреба Ñ” та тут має ÑÐµÐ½Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑного шаблону, Ñкий зможе поєднувати роль й вихідного протоколу, через його Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñ‚Ð°ÐºÐ¾Ð¶ до Ð¼Ð¾Ð´ÑƒÐ»Ñ ÐºÐ¾Ñ€Ð¸Ñтувацького протоколу. Та воно буде повніÑÑ‚ÑŽ зберігатиÑÑ Ñƒ одній бібліотеці шаблонів. </dd></dl></dd></dl> <p><a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../en/files/At.png" width="22" /></a> ПрÑма робота із вихідним транÑпортом функції <a href="User_API.html#SYSTransport" title="Special:MyLanguage/Documents/User API">string messIO( string mess, real timeOut = 0 );</a> не передбачає Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ñ€Ð°Ð½Ñпорту поза викликом цієї функції, а відтак, Ð´Ð»Ñ Ñкладних протоколів із поÑилками відповіді більш ніж у одному пакеті, що передбачає Ð¿Ñ€Ð¾Ñ†ÐµÑ "доочікуваннÑ", не можна викориÑтовувати Ñпільний транÑпорт, за Ñким можливе надÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¿Ð°ÐºÐµÑ‚Ñ–Ð² різних протоколів або навіть один, але з різних завдань (об'єктів контролерів). Відтак, Ñкщо Ñ” потреба викориÑÑ‚Ð°Ð½Ð½Ñ Ñпільного транÑпорту, то розташовуйте параметри Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° протоколом у одному об'єкті контролеру (завдані) або викориÑтовуйте <a href="Modules/UserProtocol.html" title="Special:MyLanguage/Modules/UserProtocol">модуль кориÑтувацького протоколу</a>, до Ñкого це Ð·Ð°ÑƒÐ²Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ має ÑтоÑунку, оÑкільки він здійÑнює таке Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ процедури обробки, Ñк Ñ– решта модульних протоколів OpenSCADA. </p><p>Створено наÑтупні бібліотеки з викориÑтаннÑм концепції доÑтупу до даних через кориÑтувацький протокол: </p> <ul><li> <a href="Libs_Devices.html" title="Special:MyLanguage/Libs/Devices">Бібліотека промиÑлових приÑтроїв</a></li> <li> <a href="Libs_LowLevelDevices.html" title="Special:MyLanguage/Libs/LowLevelDevices">Бібліотека низькорівневих ÑенÑорів та чипів</a></li></ul> <h2><span class="mw-headline" id=".D0.A0.D0.B5.D0.B7.D0.B5.D1.80.D0.B2.D1.83.D0.B2.D0.B0.D0.BD.D0.BD.D1.8F_.D0.B4.D0.B6.D0.B5.D1.80.D0.B5.D0.BB_.D0.B4.D0.B0.D0.BD.D0.B8.D1.85"><span class="mw-headline-number">4</span> <span id="Redundancy" title="#Redundancy">Ð ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¶ÐµÑ€ÐµÐ» даних</span></span></h2> <p>Ð ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð³Ð°Ð»Ð¾Ð¼, та джерел даних зокрема, Ñлугує Ð´Ð»Ñ Ð¿Ñ–Ð´Ð²Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñ€Ñ–Ð²Ð½Ñ Ð²Ñ–Ð´Ð¼Ð¾Ð²Ð¾ÑтійкоÑÑ‚Ñ– Ñ€Ñ–ÑˆÐµÐ½Ð½Ñ ÑˆÐ»Ñхом Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð»ÑŒÐ½Ð¸Ñ… вузлів до Ñпільної роботи з оÑновним вузлом. У випадку відмови оÑновного вузла відбуваєтьÑÑ Ð¿Ñ–Ð´Ñ…Ð¾Ð¿Ð»ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ð¹ оÑновного вузла резервним. ЧаÑто, Ñхема Ñ€ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶Ðµ працювати Ñ– у режимі розподілу Ð½Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¼Ñ–Ð¶ вузлами, що Ñпільно працюють. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:569px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_red_uk.png"><img class="thumbimage" height="378" src="files/DAQ_red_uk.png" width="567" /></a> <div class="thumbcaption">РиÑ. 12. Горизонтальне та вертикальне резервуваннÑ.</div></div></div></div> <p>У випадку з підÑиÑтемою "Збір Даних", Ñ€ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… (риÑ.12) виконує функції: </p> <ul><li> <b>Ð ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼ÐµÑ…Ð°Ð½Ñ–Ð·Ð¼Ñƒ збору даних</b>. Зазвичай Ñ†Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ñ€ÐµÐ°Ð»Ñ–Ð·ÑƒÑ”Ñ‚ÑŒÑÑ Ð±ÐµÐ· оÑобливих механізмів, шлÑхом проÑтого запуÑку паралельних резервних Ñтанцій з однаковою конфігурацією та працюючих незалежно. Однак, у випадку Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñтанцією функції ПЛК, така поведінка недозволена з причини одночаÑної видачі керуючих дій та відÑутноÑÑ‚Ñ– Ñинхронізації даних обчиÑлювачів.</li> <li> <b>КомпенÑÐ°Ñ†Ñ–Ñ Ð²Ñ‚Ñ€Ð°Ñ‚Ð¸ даних на Ñ‡Ð°Ñ Ð½ÐµÐ´Ð¾ÑтупноÑÑ‚Ñ– вузла</b> за рахунок архіву резервного. Передбачено два механізми компенÑації. Перший та оÑновний механізм здійÑнює Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ñ–Ð»Ñнок архіву з резервної Ñтанції під Ñ‡Ð°Ñ Ð·Ð°Ð¿ÑƒÑку Ñтанції загалом або окремих об'єктів контролерів. ДілÑнка архіву запитуєтьÑÑ Ð· моменту оÑтаннього запиÑу у локальному архіві та по поточний чаÑ. Глибина запиту, при цьому, обмежуєтьÑÑ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñм граничного чаÑу в конфігурації резервуваннÑ. Другий, доповнюючий механізм, здійÑнює Ð·Ð°Ð¿Ð¾Ð²Ð½ÐµÐ½Ð½Ñ "дірок" у архіві значень, під Ñ‡Ð°Ñ Ñ„Ð°ÐºÑ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ запиту кориÑтувача до цих даних. Такий підхід, з одного боку, дозволÑÑ” здійÑнити прогнозовану за чаÑом Ñинхронізацію при Ñтарті, а з іншого боку, фактично виключає втрату даних при умові роботи хоча б однієї Ñтанції на протÑзі вÑього робочого чаÑу.</li> <li> <b>Розподіл Ð½Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾ збору даних між вузлами</b>. При Ñтворені Ñкладних розподілених ÑиÑтем може виÑвитиÑÑ Ð²Ð°Ð¶Ð»Ð¸Ð²Ð¸Ð¼ Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ð½Ð¾Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° оптимізації загальної продуктивноÑÑ‚Ñ– ÑиÑтеми. Враховуючи такі завданнÑ, механізм Ñ€ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿ÐµÑ€ÐµÐ´Ð±Ð°Ñ‡Ð°Ñ” Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð²Ð´Ð°Ð½ÑŒ збору даних окремих джерел (об'єктів контролерів OpenSCADA) тільки на одній Ñтанції. При цьому, Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ñ€ÐµÑˆÑ‚Ð¸ Ñтанцій переходÑÑ‚ÑŒ в режим Ñинхронізації даних зі Ñтанцією, що виконуєтьÑÑ. У випадку втрати зв'Ñзку зі Ñтанцією, що виконуєтьÑÑ, запуÑкаєтьÑÑ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ збору даних. Передбачено, також, можливіÑÑ‚ÑŒ оптимального розподілу Ð½Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð·Ð°Ð´Ð°Ñ‡ збору даних групи об'єктів контролерів, між ÑтанціÑми.</li> <li> <b>ÐžÐ¿Ñ‚Ð¸Ð¼Ñ–Ð·Ð°Ñ†Ñ–Ñ Ð½Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° зовнішні джерела даних</b> за рахунок запиту (обміну) даних у зовнішнього джерела тільки одним вузлом. Ðа практиці чаÑто зуÑтрічаютьÑÑ Ð²Ð¸Ñоко-навантажені джерела даних, або інтерфейÑи доÑтупу до джерел даних, Ð´Ð»Ñ Ñких навіть збір даних однією Ñтанцією може бути проблемою Ñ– вимагатиме Ð·Ð½Ð¸Ð¶ÐµÐ½Ð½Ñ Ð¿ÐµÑ€Ñ–Ð¾Ð´Ð¸Ñ‡Ð½Ð¾ÑÑ‚Ñ– збору, тобто ÑкоÑÑ‚Ñ– даних. Механізм резервуваннÑ, крім розподілу Ð½Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð¼Ñ–Ð¶ ÑтанціÑми за опиÑаною вище Ñхемою, дозволÑÑ” знÑти додаткове Ð½Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° джерело даних та його інтерфейÑи, тим Ñамим підвищивши ÑкіÑÑ‚ÑŒ даних. Ð—Ð°Ð¿Ð¸Ñ Ð´Ð¾ атрибуту резервного об'єкту контролеру призводить до відправки запиту модифікації на оÑновний, тобто — через оÑновний.</li> <li> <b>Ð—Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ð´ÐµÑкої різниці даних на різних вузлах</b>, пов'Ñзане з незбігом моментів чаÑу при незалежному зборі даних окремими вузлами, здійÑнюєтьÑÑ ÑˆÐ»Ñхом Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… зі Ñтанції з активним об'єктом контролера. У ÑиÑтемах виÑокої звітноÑÑ‚Ñ– з резервуваннÑм має бути виключено, або зведено до мінімуму, Ñ€Ð¾Ð·Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ñƒ даних на різних ÑтанціÑÑ…, що передбачає реальний збір даних однією Ñтанцією та Ñинхронізацію з цими даними інших Ñтанцій.</li></ul> <p>Ð ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÑ”Ñ‚ÑŒÑÑ Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²ÑƒÐ²Ð°Ñ‚Ð¸ таким чином щоб БД резервних Ñтанцій зберігалиÑÑ Ð¾Ð´Ð½Ð°ÐºÐ¾Ð²Ð¸Ð¼Ð¸, що надалі дозволить безболіÑно копіювати Ñ—Ñ…, при відновленні, на будь Ñку Ñтанцію та, відповідно, у резервній копії можна зберігати тільки один набір БД. При цьому, налаштуваннÑ, Ñпецифічні до окремої Ñтанції, будуть зберігатиÑÑ Ñƒ конфігураційному файлі та можна буде легко конфігурувати та мінÑти потрібну Ñтанцію через вибір відповідного конфігураційного файлу. </p><p>ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‡Ð¸Ð½Ð°Ñ”Ñ‚ÑŒÑÑ Ð· Ð´Ð¾Ð´Ð°Ð½Ð½Ñ Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð¸Ñ… Ñтанцій до переліку Ñтанцій OpenSCADA на вкладці "ПідÑиÑтема" підÑиÑтеми "ТранÑпорти" (РиÑ.13). Причому додавати тут потрібно не лише резервні Ñтанції до поточної, але й Ñаму цю поточну Ñтанцію з Ñ—Ñ— зовнішньою адреÑою, тобто Ñвоєрідна петлÑ. Ðадалі ці Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð±ÑƒÐ´ÑƒÑ‚ÑŒ збережені до загальної БД резервованої ÑиÑтеми та Ñама БД з цього моменту буде викориÑтовуватиÑÑ Ð¿Ñ€Ð¸ Ñтворені вÑÑ–Ñ… резервних Ñтанцій. Відповідно, важливо на цьому етапі внеÑти вÑÑ– потрібні зміни до загальної БД довкола проекту в цілому! </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:954px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_tr_extHst_uk.png"><img class="thumbimage" height="454" src="files/DAQ_tr_extHst_uk.png" width="952" /></a> <div class="thumbcaption">РиÑ. 13. Вкладка "ПідÑиÑтема" підÑиÑтеми "ТранÑпорти".</div></div></div></div> <p>Далі, на конкретній Ñтанції з копією загальної БД, налаштовуємо Ñ—Ñ— Ñпецифічні параметри у вкладці "РезервуваннÑ" головної Ñторінки (риÑ.14), Ñкі будуть збережені у конфігураційному файлі. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:715px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_sys_rd_uk.png"><img class="thumbimage" height="583" src="files/DAQ_sys_rd_uk.png" width="713" /></a> <div class="thumbcaption">РиÑ. 14. Вкладка "РезервуваннÑ" головної Ñторінки.</div></div></div></div> <p>ПіÑÐ»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ вÑÑ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ñ€ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð´Ñ–Ð¹ÑнюєтьÑÑ Ñƒ вкладці "РезервуваннÑ" підÑиÑтеми "Збір даних" (РиÑ.15). Якщо вÑтановити параметр "Передача локальних первинних команд" (РиÑ.14) то Ñ†Ñ ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ, Ñк Ñ– будь Ñка інша загального характеру, може здійÑнюватиÑÑ Ð½Ð° одній з Ñтанцій, а внеÑенні зміни потраплÑÑ‚ÑŒ на вÑÑ– резервні, звіÑно Ñкщо вони будуть доÑтупні. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:917px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_rd_uk.png"><img class="thumbimage" height="583" src="files/DAQ_rd_uk.png" width="915" /></a> <div class="thumbcaption">РиÑ. 15. Вкладка "РезервуваннÑ" підÑиÑтеми "Збір Даних".</div></div></div></div> <p>Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð¾Ð±ÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼ÐµÑ…Ð°Ð½Ñ–Ð·Ð¼Ñƒ Ñ€ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð¿ÑƒÑкаєтьÑÑ Ð·Ð°Ð²Ð¶Ð´Ð¸ та виконуєтьÑÑ Ð· періодичніÑÑ‚ÑŽ, вÑтановленою у відповідному конфігураційному полі. Реальна робота щодо здійÑÐ½ÐµÐ½Ð½Ñ Ñ€ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð±ÑƒÐ²Ð°Ñ”Ñ‚ÑŒÑÑ Ð¿Ñ€Ð¸ наÑвноÑÑ‚Ñ– хоча б однієї резервної Ñтанції у переліку Ñтанцій та передбачає: </p> <ul><li> Контроль за з'єднаннÑм із зовнішніми ÑтанціÑми. Ð’ процеÑÑ– контролю здійÑнюютьÑÑ Ð·Ð°Ð¿Ð¸Ñ‚Ð¸ до віддалених Ñтанцій, за оновленнÑм інформації про них та перевірки зв'Ñзку. У випадку втрати зв'Ñзку із Ñтанцією, повтор Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ неї здійÑнюєтьÑÑ Ñ‡ÐµÑ€ÐµÐ· проміжок чаÑу, вказаний у конфігураційному полі інтервалу чаÑу Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ. У полі "Живий", Ñтанції, відображаєтьÑÑ Ð¿Ð¾Ñ‚Ð¾Ñ‡Ð½Ð¸Ð¹ Ñтан зв'Ñзку. У полі "Лічильник" предÑтавлено кількіÑÑ‚ÑŒ запитів, здійÑнених до віддаленої Ñтанції, або ж чаÑ, Ñкий залишивÑÑ Ð´Ð¾ здійÑÐ½ÐµÐ½Ð½Ñ Ð½Ð°Ñтупної Ñпроби Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñ–Ð· втраченою Ñтанцією.</li> <li> Локальне Ð¿Ð»Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¾Ð±'єктів контролерів у резерві. ÐŸÐ»Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð´Ñ–Ð¹ÑнюєтьÑÑ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾ до Ñ€Ñ–Ð²Ð½Ñ Ñтанцій та вподобаннÑм Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¾Ð±'єктів контролерів.</li> <li> Виклик функції Ñинхронізації даних локальних об'єктів контролерів, працюючих у режимі Ñинхронізації даних із зовнішніх Ñтанцій.</li></ul> <p>Ð”Ð»Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŽ за чаÑом, витраченим на Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ†Ð¸ÐºÐ»Ñƒ обÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ, передбачено поле ÑтатуÑу. При наближені реального чаÑу Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð´Ð¾ циклу Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð¾Ð±ÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ, рекомендуєтьÑÑ Ð·Ð±Ñ–Ð»ÑŒÑˆÐ¸Ñ‚Ð¸ періодичніÑÑ‚ÑŒ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ завданнÑ! </p><p>Ð”Ð»Ñ Ð¾Ð±'єкту контролера підÑиÑтеми "Збір Даних" передбачено режими Ñ€ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ "ÐÑиметричне" та "Тільки порушеннÑ". ÐÑиметричне Ñ€ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð°Ñ†ÑŽÑ” з тією конфігурацією контролеру віддаленої Ñтанції, Ñка Ñ” Ñ– не намагаєтьÑÑ Ñ—Ñ— узагальнювати. Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ режиму працюють вÑÑ– раніш опиÑані функції та влаÑтивоÑÑ‚Ñ– резервуваннÑ. Ð ÐµÐ·ÐµÑ€Ð²ÑƒÐ²Ð°Ð½Ð½Ñ "Тільки порушеннÑ" передбачає фактичну роботу без резервуваннÑ, але з придушеннÑм порушень від резервного об'єкту контролера з метою Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´ÑƒÐ±Ð»ÑŽÐ²Ð°Ð»ÑŒÐ½Ð¸Ñ… повідомлень про порушеннÑ. </p> <h2><span class="mw-headline" id=".D0.9C.D1.96.D1.82.D0.BA.D0.B0_.D1.87.D0.B0.D1.81.D1.83_.D0.B4.D0.B6.D0.B5.D1.80.D0.B5.D0.BB.D0.B0_.D0.B4.D0.B0.D0.BD.D0.B8.D1.85"><span class="mw-headline-number">5</span> <span id="TimeStamp" title="#TimeStamp">Мітка чаÑу джерела даних</span></span></h2> <p>Фактично вÑÑ– джерела даних, Ñкі підтримуютьÑÑ OpenSCADA, у ÑкоÑÑ‚Ñ– мітки чаÑу оперативних-потокових даних викориÑтовують Ñ‡Ð°Ñ ÐºÐ¾Ð¼Ð¿'ютера де працює OpenSCADA та здійÑнюєтьÑÑ Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ†Ð¸Ñ… джерела даних, навіть у випадку можливоÑÑ‚Ñ– Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ‡Ð°Ñу Ñерверу або джерела у джерела даних, Ñ– чаÑто навіть у випадку коли таким джерелом виÑтупає інша ÑтанціÑ-ПЛК з OpenSCADA. </p><p>Такий підхід визначено з декількох причин, а Ñаме: </p> <ul><li> Ñ€Ð¾Ð·Ñ€Ñ–Ð·Ð½ÐµÐ½Ð½Ñ Ñ‚Ð° Ð²Ð¸Ð¾ÐºÑ€ÐµÐ¼Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð¼Ñ–Ð½Ð½Ð¾ÑÑ‚Ñ– чаÑу оперативних значень джерела даних та ПК збору даних не має жодної практичної мети окрім діагноÑтичної з виÑÐ²Ð»ÐµÐ½Ð½Ñ Ñамого Ñ€Ð¾Ð·Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ñ‡Ð°Ñу, оÑкільки поточні дані архівуютьÑÑ Ñƒ архів періодичних значень, де мітка чаÑу так чи інакше притÑгуєтьÑÑ Ñ‚Ð° округлÑєтьÑÑ Ð´Ð¾ цієї періодичноÑÑ‚Ñ–, тобто чаÑтина чаÑу точніша за період даних архіву втрачаєтьÑÑ;</li> <li> рідко Ñке джерело даних взагалі має годинник реального чаÑу, а коли Ñ– має то до нього одразу ÑтавитьÑÑ Ð²Ð¸Ð¼Ð¾Ð³Ð° Ñинхронізації чаÑу із зовнішнім джерелом зразкового чаÑу, що у Ñвою чергу вимагає Ð²Ð¸Ñ€Ñ–ÑˆÐµÐ½Ð½Ñ Ñкладнощів із прÑмим підключеннÑм GPS приймача або доÑтупом до NTP-Ñерверу у інтернет або локальній мережі; за визначеним-же підходом зразковим чаÑом Ñтає Ñ‡Ð°Ñ ÐŸÐš збору даних, навіть коли він Ñам не Ñинхронізований, оÑкільки він один;</li> <li> мітка чаÑу джерела даних може змінюватиÑÑ Ð· влаÑною періодичніÑÑ‚ÑŽ або це Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð²Ð·Ð°Ð³Ð°Ð»Ñ– може бути аперіодичним, що у випадку викориÑÑ‚Ð°Ð½Ð½Ñ Ñ†Ñ–Ñ”Ñ— мітки при опитувані призведе до прогалин у архіві, та навіть коли періодичноÑÑ‚Ñ– опитуваннÑ-Ð°Ñ€Ñ…Ñ–Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° Ð¾Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¼Ñ–Ñ‚ÐºÐ¸ чаÑу джерела однакові такі прогалини будуть мати міÑце через відÑутніÑÑ‚ÑŒ ÑинхронноÑÑ‚Ñ–, що доведетьÑÑ ÐºÐ¾Ð¼Ð¿ÐµÐ½Ñувати зменшеннÑм періодичноÑÑ‚Ñ– Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð°, відповідно, збільшеннÑм Ð½Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ð° мережу та джерело; відтак це зробить архів мало кориÑним, хоча наразі Ñ– надаєтьÑÑ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ–ÑÑ‚ÑŒ вважати такі прогалини (прохідні) не фактом відÑутноÑÑ‚Ñ– або помилковіÑÑ‚ÑŽ даних.</li></ul> <p>Ðаразі відомо один метод, коли від мітки чаÑу джерела даних Ñ” практична цінніÑÑ‚ÑŒ, це робота з Ñ–Ñторією-архівом на боці джерела даних, коли за виÑвленнÑм прогалин у даних, наприклад, на Ñ‡Ð°Ñ Ð²Ñ–Ð´ÑутноÑÑ‚Ñ– зв'Ñзку, заміÑÑ‚ÑŒ поточних-оперативних даних запитуєтьÑÑ Ð´Ñ–Ð»Ñнка Ñ–Ñторії-архіву, що відповідає цій прогалині. Та цей метод реалізовано у модулі <a href="Modules/DAQGate.html" title="Special:MyLanguage/Modules/DAQGate">DAQ.DAQGate</a>, при роботі OpenSCADA на боці джерела даних або ПЛК. </p> <h2><span class="mw-headline" id=".D0.9F.D0.BE.D1.81.D0.B8.D0.BB.D0.B0.D0.BD.D0.BD.D1.8F"><span class="mw-headline-number">6</span> ПоÑиланнÑ</span></h2> <ul><li> <a class="external" href="http://oscada.org/wiki/File:Oscada_subsys_daq_str_uk.odg" title="File:Oscada subsys daq str uk.odg">Діаграма: Ієрархічна Ñтруктура підÑиÑтеми "Збір даних".</a></li> <li> <a class="external" href="http://oscada.org/wiki/File:Daq.xmi.gz" title="File:Daq.xmi.gz">UML: Діаграми поÑлідовноÑÑ‚Ñ– підÑиÑтеми "Збір Даних".</a></li> <li> <a class="external" href="http://oscada.org/wiki/File:Oscada_initCon_uk.odg" title="File:Oscada initCon uk.odg">Діаграма: Ініціативне Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð”Ð¶ÐµÑ€ÐµÐ» Даних.</a></li> <li> <a class="external" href="http://oscada.org/wiki/File:Daq_loglevel_uk.dia" title="File:Daq loglevel uk.dia">Діаграма: Механізм роботи "Логічного рівнÑ" на прикладі Ð¼Ð¾Ð´ÑƒÐ»Ñ LogicLev.</a></li> <li> <a class="external" href="http://oscada.org/wiki/File:Loglev_prm_uk.dia" title="File:Loglev prm uk.dia">Діаграма: Структура параметру логічного рівнÑ.</a></li> <li> <a class="external" href="http://oscada.org/wiki/File:Daq_progcompon_uk.dia" title="File:Daq progcompon uk.dia">Діаграма: Загальна Ñтруктура компонентів Ñередовища програмуваннÑ.</a></li> <li> <a class="external" href="http://oscada.org/wiki/File:UserPrtDevs_concept_uk.odg" title="File:UserPrtDevs concept uk.odg">Діаграма: ÐšÐ¾Ð½Ñ†ÐµÐ¿Ñ†Ñ–Ñ Ð´Ð¾Ñтупу до даних через кориÑтувацький протокол.</a></li> <li> <a class="external" href="http://oscada.org/wiki/File:Daq_red_uk.odg" title="File:Daq red uk.odg">Діаграма: Горизонтальне та вертикальне резервуваннÑ.</a></li></ul> </div><table style="border-top: dotted 2px #999999; margin-top: 20pt; color: gray;" width="100%"><tr><td style="text-align: left;" width="40%"><a href="http://oscada.org/wiki/Documents/DAQ/uk">Documents/DAQ/uk</a> - <a href="http://oscada.org/en/main/about-the-project/licenses/">GFDL</a></td><td style="text-align: center;">March 2025</td><td style="text-align: right;" width="40%">OpenSCADA 1+r3012</td></tr></table></body> </html>