<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html class="client-nojs" dir="ltr" lang="en"> <head> <meta charset="UTF-8" /> <title>Документы/Сбор данных - OpenSCADAWiki</title> <meta content="MediaWiki 1.26.4" name="generator" /> <link href="https://www.gnu.org/copyleft/fdl.html" rel="copyright" /> <link href="../en/files/doc.css" rel="stylesheet" /></head> <body><div class="floatright"><a href="index.html"><img alt="OpenSCADA" src="../en/files/index.png" /></a></div><div id="mw_header"> <div class="mw-indicators"> </div> <h1 id="firstHeading" lang="ru">Документы/Сбор данных</h1> </div><div class="mw-content-ltr" dir="ltr" id="mw-content-text" lang="ru"><div class="mw-pt-translate-header noprint" dir="ltr" lang="en">This page is a <span class="plainlinks"><a class="external text" href="http://oscada.org/wiki/index.php?title=Special:Translate&group=page-Documents%2FDAQ&action=page&filter=&language=ru" 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 94% 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> • ‎<span class="mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete">mRussian</span> • ‎<a class="mw-pt-progress mw-pt-progress--complete" href="../uk/DAQ.html" title="Документи/Збір даних (100% translated)">УкраїнÑька</a></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_ru.png"><img class="thumbimage" height="335" src="files/Oscada_subsys_daq_str_ru.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.D1.8B_.D1.81.D0.B1.D0.BE.D1.80.D0.B0_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.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.BE.D0.B9_.D1.81.D0.B8.D0.BD.D1.85.D1.80.D0.BE.D0.BD.D0.BD.D1.8B.D0.B9_.D0.BC.D0.B5.D1.85.D0.B0.D0.BD.D0.B8.D0.B7.D0.BC_.D1.81.D0.B1.D0.BE.D1.80.D0.B0"><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.BE.D0.B9_.D0.B0.D1.81.D0.B8.D0.BD.D1.85.D1.80.D0.BE.D0.BD.D0.BD.D1.8B.D0.B9_.D0.BC.D0.B5.D1.85.D0.B0.D0.BD.D0.B8.D0.B7.D0.BC_.D1.81.D0.B1.D0.BE.D1.80.D0.B0"><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.D1.8B.D0.B9_.D0.BC.D0.B5.D1.85.D0.B0.D0.BD.D0.B8.D0.B7.D0.BC_.D1.81.D0.B1.D0.BE.D1.80.D0.B0"><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.D1.81.D0.B8.D0.B2.D0.BD.D1.8B.D0.B9_.D0.BC.D0.B5.D1.85.D0.B0.D0.BD.D0.B8.D0.B7.D0.BC_.D1.81.D0.B1.D0.BE.D1.80.D0.B0_.D0.B8_.D0.B8.D0.BD.D0.B8.D1.86.D0.B8.D0.B0.D1.82.D0.B8.D0.B2.D0.BD.D1.8B.D0.B5_.D0.BF.D0.BE.D0.B4.D0.BA.D0.BB.D1.8E.D1.87.D0.B5.D0.BD.D0.B8.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.D0.B8.D1.80.D1.82.D1.83.D0.B0.D0.BB.D1.8C.D0.BD.D1.8B.D0.B5_.D0.B8.D1.81.D1.82.D0.BE.D1.87.D0.BD.D0.B8.D0.BA.D0.B8_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.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.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B9_.D1.83.D1.80.D0.BE.D0.B2.D0.B5.D0.BD.D1.8C_.D0.BE.D0.B1.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.BA.D0.B8_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.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.D0.B8.D1.8F_.D0.B4.D0.BE.D1.81.D1.82.D1.83.D0.BF.D0.B0_.D0.BA_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.D0.BC_.D1.87.D0.B5.D1.80.D0.B5.D0.B7_.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D1.82.D0.B5.D0.BB.D1.8C.D1.81.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.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B8.D1.81.D1.82.D0.BE.D1.87.D0.BD.D0.B8.D0.BA.D0.BE.D0.B2_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.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.D0.B5.D1.82.D0.BA.D0.B0_.D0.B2.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D0.B8_.D0.B8.D1.81.D1.82.D0.BE.D1.87.D0.BD.D0.B8.D0.BA.D0.B0_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.D1.85"><span class="tocnumber">5</span> <span class="toctext"><span>Метка времени иÑточника данных</span></span></a></li> <li class="toclevel-1 tocsection-11"><a href="#Links"><span class="tocnumber">6</span> <span class="toctext">Links</span></a></li> </ul> </div> <h2><span class="mw-headline" id=".D0.9C.D0.B5.D1.82.D0.BE.D0.B4.D1.8B_.D1.81.D0.B1.D0.BE.D1.80.D0.B0_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.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.BE.D0.B9_.D1.81.D0.B8.D0.BD.D1.85.D1.80.D0.BE.D0.BD.D0.BD.D1.8B.D0.B9_.D0.BC.D0.B5.D1.85.D0.B0.D0.BD.D0.B8.D0.B7.D0.BC_.D1.81.D0.B1.D0.BE.D1.80.D0.B0"><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 такой механизм реализуют Ñледующие модули подÑиÑтемы "Cбор данных": </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.BE.D0.B9_.D0.B0.D1.81.D0.B8.D0.BD.D1.85.D1.80.D0.BE.D0.BD.D0.BD.D1.8B.D0.B9_.D0.BC.D0.B5.D1.85.D0.B0.D0.BD.D0.B8.D0.B7.D0.BC_.D1.81.D0.B1.D0.BE.D1.80.D0.B0"><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 такой механизм реализуют Ñледующие модули подÑиÑтемы "Cбор данных": </p> <ul><li> <i><a href="Modules/DAQGate.html" title="Special:MyLanguage/Modules/DAQGate">DAQGate</a></i> — модуль Ð¾Ñ‚Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð² контроллеров удалённых OpenSCADA-Ñтанций на локальную. Ð’ модуле реализован аÑинхронный режим Ñ‡Ñ‚ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ….</li> <li> <i><a href="../en/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.D1.8B.D0.B9_.D0.BC.D0.B5.D1.85.D0.B0.D0.BD.D0.B8.D0.B7.D0.BC_.D1.81.D0.B1.D0.BE.D1.80.D0.B0"><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 такой механизм реализуют Ñледующие модули подÑиÑтемы "Cбор данных": </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.D1.81.D0.B8.D0.B2.D0.BD.D1.8B.D0.B9_.D0.BC.D0.B5.D1.85.D0.B0.D0.BD.D0.B8.D0.B7.D0.BC_.D1.81.D0.B1.D0.BE.D1.80.D0.B0_.D0.B8_.D0.B8.D0.BD.D0.B8.D1.86.D0.B8.D0.B0.D1.82.D0.B8.D0.B2.D0.BD.D1.8B.D0.B5_.D0.BF.D0.BE.D0.B4.D0.BA.D0.BB.D1.8E.D1.87.D0.B5.D0.BD.D0.B8.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> A special case is the initiative of the TCP-connection establishing from the data source and the standard requests do next by the server through the connection, that the input transports of <a href="Modules/Sockets.html" title="Special:MyLanguage/Modules/Sockets">the module "Sockets"</a> and <a href="../en/Modules/SSL.html" title="Special:MyLanguage/Modules/SSL">the module "SSL"</a> are currently supported. This mode is currently even the most popular! </p><p>OpenSCADA also supports the initiation of such connections itself, that is, it can act as a data source for "gray" and dynamic IP. So, the input transport of <a href="Modules/Sockets.html" title="Special:MyLanguage/Modules/Sockets">the module "Sockets"</a> and <a href="../en/Modules/SSL.html" title="Special:MyLanguage/Modules/SSL">the module "SSL"</a> in the mode 2 initiates the connection and then sends an identifying sequence and enters the normal mode of receiving requests from the host to which it is connected. <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> Regarding what is currently especially useful is the remote control of OpenSCADA stations in "gray" networks with such a connection. </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.png"><img class="thumbimage" height="718" src="../en/files/Oscada_initCon.png" width="756" /></a> <div class="thumbcaption">Fig.1.4b. Initiative connection of the Data Sources.</div></div></div></div> <h2><span class="mw-headline" id=".D0.92.D0.B8.D1.80.D1.82.D1.83.D0.B0.D0.BB.D1.8C.D0.BD.D1.8B.D0.B5_.D0.B8.D1.81.D1.82.D0.BE.D1.87.D0.BD.D0.B8.D0.BA.D0.B8_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.D1.85"><span class="mw-headline-number">2</span> <span id="Virtual" title="#Virtual">Виртуальные иÑточники данных</span></span></h2> <p>Кроме Ñбора физичеÑких данных, актуальной ÑвлÑетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¾Ð³Ð¾ Ñбора данных. Виртуальные данные предÑтавлÑÑŽÑ‚ Ñобой данные, полученные внутри ÑиÑтемы как незавиÑимо, так и на оÑнове физичеÑких данных. ПрактичеÑки, механизмы Ñ„Ð¾Ñ€Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð¸Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ… данных реализуютÑÑ ÑовмеÑтно Ñ Ð¼ÐµÑ…Ð°Ð½Ð¸Ð·Ð¼Ð¾Ð¼ пользовательÑких вычиÑлений. Ð’ Ñреде промышленных контроллеров и SCADA-ÑиÑтем иÑпользуютÑÑ Ñ€Ð°Ð·Ð»Ð¸Ñ‡Ð½Ñ‹Ðµ Ñзыки программированиÑ. Ð’ Ñлучае Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»Ð»ÐµÑ€Ð°Ð¼Ð¸, в качеÑтве таких Ñзыков чаÑто иÑпользуютÑÑ Ñзыки низкого ÑƒÑ€Ð¾Ð²Ð½Ñ (аÑÑемблеры), однако, в поÑледнее времÑ, вÑÑ‘ чаще иÑпользуютÑÑ Ñзыки выÑокого ÑƒÑ€Ð¾Ð²Ð½Ñ (C, Pascal и другие), а также формальные Ñзыки ÐœÐК 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_ru.png"><img class="thumbimage" height="662" src="files/DAQ_progCompon_ru.png" width="600" /></a> <div class="thumbcaption">РиÑ. 6. ÐžÐ±Ñ‰Ð°Ñ Ñтруктура компонентов Ñреды программированиÑ.</div></div></div></div> <h2><span class="mw-headline" id=".D0.9B.D0.BE.D0.B3.D0.B8.D1.87.D0.B5.D1.81.D0.BA.D0.B8.D0.B9_.D1.83.D1.80.D0.BE.D0.B2.D0.B5.D0.BD.D1.8C_.D0.BE.D0.B1.D1.80.D0.B0.D0.B1.D0.BE.D1.82.D0.BA.D0.B8_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.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 class="new" href="http://oscada.org/wiki/index.php?title=LogicLev&action=edit&redlink=1" title="LogicLev (page does not exist)">LogicLev</a>, изображён на риÑунке 7. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:296px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_loglevel_ru.png"><img class="thumbimage" height="360" src="files/DAQ_loglevel_ru.png" width="294" /></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_ru.png"><img class="thumbimage" height="200" src="files/DAQ_str_prmtmpl_ru.png" width="242" /></a> <div class="thumbcaption">РиÑ. 8. Структура параметров Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð¾Ð¼ в оÑнове.</div></div></div></div> <p>Как можно видеть из Ñтруктуры, параметр логичеÑкого ÑƒÑ€Ð¾Ð²Ð½Ñ ÑоÑтоит из объекта функции, атрибутов и конфигурации шаблона. Объект функции Ñто ÑкземплÑÑ€ иÑÐ¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¸ шаблона Ñ Ð½Ð°Ð±Ð¾Ñ€Ð¾Ð¼ входов/выходов и программой вычиÑÐ»ÐµÐ½Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° на одном из Ñзыков пользовательÑкого программированиÑ, обычно Ñто Java-подобный Ñзык пользовательÑкого Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¾Ð´ÑƒÐ»Ñ <a href="Modules/JavaLikeCalc.html" title="Special:MyLanguage/Modules/JavaLikeCalc">DAQ.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:1044px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_prmtmpl_ru.png"><img class="thumbimage" height="724" src="files/DAQ_prmtmpl_ru.png" width="1042" /></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">The further linking</span> in general can be carried out by: </p> <ul><li> general definition-selecting the address-attribute of the subsystem "DAQ"; for example, the link "LogicLev.experiment.Pi.var" or "prm:/LogicLev/experiment/Pi/var" performs the access of the parameter attribute to the other parameter attribute; sign "(+)" at the end of the address indicate about successful linking and presence of the target; for the object-type attributes there permissible hierarchical access to a specific property of the object, by specifying its path through the symbol '#', for example: "LogicLev.experiment.Pi.var#pr1.pr2" or "prm:/LogicLev/experiment/Pi/var#pr1.pr2"; in the path with the "prm:" prefix you can use items of the relativity "." and "..";</li> <li> definition of the specific address of a separate module of the subsystem "DAQ";</li> <li> direct setting a constant value in the format "<b>val:Constant value</b>";</li> <li> empty or erroneous address when the value by the link is set to <b>EVAL</b>.</li></ul> <p>Ð’ качеÑтве примера иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð° на риÑунке 10 приведено изображение параметра "F3" Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкого уровнÑ, где предÑтавлена вкладка "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°" Ð´Ð»Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¸ шаблона параметра, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ ÑвÑзывание. Ðа риÑунке 11 предÑтавлена вкладка "Ðтрибуты" Ñ Ð¿ÐµÑ€ÐµÑ‡Ð½ÐµÐ¼ атрибутов и их значений, Ñозданных поÑредÑтвом шаблона. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:869px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_wprm_tmpl_ru.png"><img class="thumbimage" height="606" src="files/DAQ_wprm_tmpl_ru.png" width="867" /></a> <div class="thumbcaption">РиÑ. 10. Вкладка "ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð°" параметра "F3" Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкого уровнÑ.</div></div></div></div> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:915px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_wprm_a_ru.png"><img class="thumbimage" height="690" src="files/DAQ_wprm_a_ru.png" width="913" /></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.D0.B8.D1.8F_.D0.B4.D0.BE.D1.81.D1.82.D1.83.D0.BF.D0.B0_.D0.BA_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.D0.BC_.D1.87.D0.B5.D1.80.D0.B5.D0.B7_.D0.BF.D0.BE.D0.BB.D1.8C.D0.B7.D0.BE.D0.B2.D0.B0.D1.82.D0.B5.D0.BB.D1.8C.D1.81.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_ru.png"><img class="thumbimage" height="275" src="files/UserPrtDevs_concept_ru.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.D0.B8.D1.80.D0.BE.D0.B2.D0.B0.D0.BD.D0.B8.D0.B5_.D0.B8.D1.81.D1.82.D0.BE.D1.87.D0.BD.D0.B8.D0.BA.D0.BE.D0.B2_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.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:515px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_red_ru.png"><img class="thumbimage" height="351" src="files/DAQ_red_ru.png" width="513" /></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:974px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_tr_extHst_ru.png"><img class="thumbimage" height="450" src="files/DAQ_tr_extHst_ru.png" width="972" /></a> <div class="thumbcaption">РиÑ. 13. Вкладка "ПодÑиÑтема" подÑиÑтемы "ТранÑпорты".</div></div></div></div> <p>Далее, на конкретной Ñтанции Ñ ÐºÐ¾Ð¿Ð¸ÐµÐ¹ общей БД, наÑтраиваем её ÑпецифичеÑкие параметры во вкладке "Резервирование" главной Ñтраницы (РиÑ.14), которые будут Ñохранены в конфигурационном файле. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:778px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_sys_rd_ru.png"><img class="thumbimage" height="589" src="files/DAQ_sys_rd_ru.png" width="776" /></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:933px;"><a class="image" href="http://oscada.org/wiki/File:DAQ_rd_ru.png"><img class="thumbimage" height="589" src="files/DAQ_rd_ru.png" width="931" /></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.D0.B5.D1.82.D0.BA.D0.B0_.D0.B2.D1.80.D0.B5.D0.BC.D0.B5.D0.BD.D0.B8_.D0.B8.D1.81.D1.82.D0.BE.D1.87.D0.BD.D0.B8.D0.BA.D0.B0_.D0.B4.D0.B0.D0.BD.D0.BD.D1.8B.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="Links"><span class="mw-headline-number">6</span> Links</span></h2> <ul><li> <a class="external" href="http://oscada.org/wiki/File:Oscada_subsys_daq_str.odg" title="File:Oscada subsys daq str.odg">Diagram: Hierarchical structure of the subsystem "DAQ".</a></li> <li> <a class="external" href="http://oscada.org/wiki/File:Daq.xmi.gz" title="File:Daq.xmi.gz">UML: Sequence diagrams of the subsystem "DAQ".</a></li> <li> <a class="external" href="http://oscada.org/wiki/File:Oscada_initCon.odg" title="File:Oscada initCon.odg">Diagram: Initiative connection of the Data Sources.</a></li> <li> <a class="external" href="http://oscada.org/wiki/File:Daq_loglevel.dia" title="File:Daq loglevel.dia">Diagram: The mechanism of the "Logic Level" on the example of LogicLev module.</a></li> <li> <a class="external" href="http://oscada.org/wiki/File:Loglev_prm.dia" title="File:Loglev prm.dia">Diagram: Structure of the parameters, with a template in their basis.</a></li> <li> <a class="external" href="http://oscada.org/wiki/File:Daq_progcompon.dia" title="File:Daq progcompon.dia">Diagram: The overall structure of the programming area components.</a></li> <li> <a class="external" href="http://oscada.org/wiki/File:UserPrtDevs_concept.odg" title="File:UserPrtDevs concept.odg">Diagram: Conception of custom accessing to services and device's data.</a></li> <li> <a class="external" href="http://oscada.org/wiki/File:Daq_red.odg" title="File:Daq red.odg">Diagram: Horizontal and vertical redundancy.</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/ru">Documents/DAQ/ru</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>