<?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>Модулі/ModBus - 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">Модулі/ModBus</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-Modules%2FModBus&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/Modules/ModBus" title="Modules/ModBus">Modules/ModBus</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/Modules/ModBus.html" title="Modules/ModBus (100% translated)">English</a> • ‎<a class="mw-pt-progress mw-pt-progress--complete" href="../../ru/Modules/ModBus.html" title="Модули/ModBus (94% translated)">mRussian</a> • ‎<span class="mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete">УкраїнÑька</span></div></div> <table class="wikitable"> <tr> <th> Модуль </th> <th> Ім'Ñ </th> <th> ВерÑÑ–Ñ </th> <th> Ð›Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ </th> <th> Джерело </th> <th> Мови </th> <th> Платформи </th> <th> Тип </th> <th> Ðвтор </th></tr> <tr> <td> <a href="../Modules/ModBus.html" title="Special:MyLanguage/Modules/ModBus">ModBus</a> </td> <td> ModBus </td> <td> 3.8 </td> <td> GPL2 </td> <td> daq_ModBus.so </td> <td> en,uk,ru,de </td> <td> x86,x86_64,ARM </td> <td> Збір Даних </td> <td> Роман Савоченко </td></tr> <tr> <th colspan="9"> ÐžÐ¿Ð¸Ñ </th></tr> <tr> <td colspan="9"> Ðадає реалізацію клієнтÑького ModBus ÑервіÑу. ПідтримуютьÑÑ Modbus/TCP, Modbus/RTU та Modbus/ASCII протоколи. </td></tr> <tr> <td> <a href="../Modules/ModBus.html" title="Special:MyLanguage/Modules/ModBus">ModBus</a> </td> <td> ModBus </td> <td> 2.10 </td> <td> GPL2 </td> <td> daq_ModBus.so </td> <td> en,uk,ru,de </td> <td> x86,x86_64,ARM </td> <td> Протокол </td> <td> Роман Савоченко </td></tr> <tr> <th colspan="9"> ÐžÐ¿Ð¸Ñ </th></tr> <tr> <td colspan="9"> Ðадає реалізацію ModBus протоколів. ПідтримуютьÑÑ Modbus/TCP, Modbus/RTU та Modbus/ASCII протоколи. <ul><li> <b>Загальна працеміÑткіÑть:</b> > 20 <span title="людино-днів, 1ЛД — 10 годин">ЛД<sup style="color: blue">[!]</sup></span></li> <li> <b><a href="../../en/To_do.html" title="Special:MyLanguage/Works/To do">Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ (To Do)</a>:</b></li></ul> <dl><dd> -</dd></dl> </td></tr></table> <p>ModBus — комунікаційний протокол, заÑнований на клієнт-Ñерверній архітектурі. Розроблений фірмою Modicon Ð´Ð»Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑÑ‚Ð°Ð½Ð½Ñ Ñƒ контролерах з програмованою логікою (ПЛК). Став Ñтандартом де-факто у промиÑловоÑті та широко заÑтоÑовуєтьÑÑ Ð´Ð»Ñ Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ— зв'Ñзку промиÑлового електронного обладнаннÑ. ВикориÑтовуєтьÑÑ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ– даних через поÑлідовні лінії зв'Ñзку RS-485, RS-422, RS-232, а також мережі TCP/IP. Ðа цей Ñ‡Ð°Ñ Ð¿Ñ–Ð´Ñ‚Ñ€Ð¸Ð¼ÑƒÑ”Ñ‚ÑŒÑÑ Ð½ÐµÐºÐ¾Ð¼ÐµÑ€Ñ†Ñ–Ð¹Ð½Ð¾ÑŽ організацією ModBus-IDA. </p><p>ІÑнує три режими протоколу: ModBus/RTU, ModBus/ASCII та ModBus/TCP. Перші два викориÑтовують поÑлідовні лінії зв'Ñзку (переважно RS-485, рідше RS-422/RS-232), оÑтанній викориÑтовує мережі TCP/IP Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ– даних. </p><p>Модуль збору даних надає можливіÑть збирати інформацію з різних джерел за протоколом ModBus у вÑÑ–Ñ… режимах. Також, модулем реалізуютьÑÑ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ— горизонтального резервуваннÑ, а Ñаме — Ñпільної роботи з віддаленою Ñтанцією цього-ж рівнÑ. Ð’ той же чаÑ, модуль протоколу дозволÑÑ” Ñформувати та видати дані за протоколом ModBus у різних режимах та через інтерфейÑи, Ñкі підтримуютьÑÑ Ð¼Ð¾Ð´ÑƒÐ»Ñми <a href="../Program_manual.html#Communication" title="Special:MyLanguage/Documents/Program manual">підÑиÑтеми "ТранÑпорти"</a>. </p> <div class="toc" id="toc"><div id="toctitle"><h2>Contents</h2></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#.D0.97.D0.B0.D0.B3.D0.B0.D0.BB.D1.8C.D0.BD.D0.B8.D0.B9_.D0.BE.D0.BF.D0.B8.D1.81_.D0.BF.D1.80.D0.BE.D1.82.D0.BE.D0.BA.D0.BE.D0.BB.D1.83_ModBus"><span class="tocnumber">1</span> <span class="toctext">Загальний Ð¾Ð¿Ð¸Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ ModBus</span></a> <ul> <li class="toclevel-2 tocsection-2"><a href="#.D0.90.D0.B4.D1.80.D0.B5.D1.81.D0.B0.D1.86.D1.96.D1.8F"><span class="tocnumber">1.1</span> <span class="toctext">ÐдреÑаціÑ</span></a></li> <li class="toclevel-2 tocsection-3"><a href="#.D0.A1.D1.82.D0.B0.D0.BD.D0.B4.D0.B0.D1.80.D1.82.D0.BD.D1.96_.D0.BA.D0.BE.D0.B4.D0.B8_.D1.84.D1.83.D0.BD.D0.BA.D1.86.D1.96.D0.B9"><span class="tocnumber">1.2</span> <span class="toctext">Стандартні коди функцій</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-4"><a href="#.D0.9C.D0.BE.D0.B4.D1.83.D0.BB.D1.8C_.D1.80.D0.B5.D0.B0.D0.BB.D1.96.D0.B7.D0.B0.D1.86.D1.96.D1.97_.D0.BF.D1.80.D0.BE.D1.82.D0.BE.D0.BA.D0.BE.D0.BB.D1.83"><span class="tocnumber">2</span> <span class="toctext">Модуль реалізації протоколу</span></a> <ul> <li class="toclevel-2 tocsection-5"><a href="#API_.D1.84.D1.83.D0.BD.D0.BA.D1.86.D1.96.D1.97_.D0.B2.D0.B8.D1.85.D1.96.D0.B4.D0.BD.D0.B8.D1.85_.D0.B7.D0.B0.D0.BF.D0.B8.D1.82.D1.96.D0.B2"><span class="tocnumber">2.1</span> <span class="toctext">API функції вихідних запитів</span></a></li> <li class="toclevel-2 tocsection-6"><a href="#.D0.9E.D0.B1.D1.81.D0.BB.D1.83.D0.B3.D0.BE.D0.B2.D1.83.D0.B2.D0.B0.D0.BD.D0.BD.D1.8F_.D0.B7.D0.B0.D0.BF.D0.B8.D1.82.D1.96.D0.B2_.D0.B7.D0.B0_.D0.BF.D1.80.D0.BE.D1.82.D0.BE.D0.BA.D0.BE.D0.BB.D0.BE.D0.BC_ModBus"><span class="tocnumber">2.2</span> <span class="toctext">ОбÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñ–Ð² за протоколом ModBus</span></a> <ul> <li class="toclevel-3 tocsection-7"><a href="#.D0.A0.D0.B5.D0.B6.D0.B8.D0.BC_.22.D0.94.D0.B0.D0.BD.D1.96.22"><span class="tocnumber">2.2.1</span> <span class="toctext">Режим "Дані"</span></a></li> <li class="toclevel-3 tocsection-8"><a href="#.D0.A0.D0.B5.D0.B6.D0.B8.D0.BC_.22.D0.A8.D0.BB.D1.8E.D0.B7_.D0.B2.D1.83.D0.B7.D0.BB.D0.B0.22"><span class="tocnumber">2.2.2</span> <span class="toctext">Режим "Шлюз вузла"</span></a></li> <li class="toclevel-3 tocsection-9"><a href="#.D0.A0.D0.B5.D0.B6.D0.B8.D0.BC_.22.D0.A8.D0.BB.D1.8E.D0.B7_.D0.BC.D0.B5.D1.80.D0.B5.D0.B6.D1.96.22"><span class="tocnumber">2.2.3</span> <span class="toctext">Режим "Шлюз мережі"</span></a></li> </ul> </li> <li class="toclevel-2 tocsection-10"><a href="#.D0.97.D0.B2.D1.96.D1.82_.D0.B7.D0.B0.D0.BF.D0.B8.D1.82.D1.96.D0.B2_ModBus"><span class="tocnumber">2.3</span> <span class="toctext"><span>Звіт запитів ModBus</span></span></a></li> </ul> </li> <li class="toclevel-1 tocsection-11"><a href="#.D0.9C.D0.BE.D0.B4.D1.83.D0.BB.D1.8C_.D0.B7.D0.B1.D0.BE.D1.80.D1.83_.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-12"><a href="#.D0.9E.D0.B1.27.D1.94.D0.BA.D1.82_.D0.BA.D0.BE.D0.BD.D1.82.D1.80.D0.BE.D0.BB.D0.B5.D1.80.D1.83"><span class="tocnumber">3.1</span> <span class="toctext">Об'єкт контролеру</span></a></li> <li class="toclevel-2 tocsection-13"><a href="#.D0.9F.D0.B0.D1.80.D0.B0.D0.BC.D0.B5.D1.82.D1.80.D0.B8"><span class="tocnumber">3.2</span> <span class="toctext">Параметри</span></a> <ul> <li class="toclevel-3 tocsection-14"><a href="#.D0.A1.D1.82.D0.B0.D0.BD.D0.B4.D0.B0.D1.80.D1.82.D0.BD.D0.B8.D0.B9_.28Prm.29"><span class="tocnumber">3.2.1</span> <span class="toctext">Стандартний (Prm)</span></a></li> <li class="toclevel-3 tocsection-15"><a href="#.D0.9B.D0.BE.D0.B3.D1.96.D1.87.D0.BD.D0.B8.D0.B9_.28PrmL.29"><span class="tocnumber">3.2.2</span> <span class="toctext">Логічний (PrmL)</span></a></li> </ul> </li> <li class="toclevel-2 tocsection-16"><a href="#API_.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.BE.D0.B3.D0.BE_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D1.83.D0.B2.D0.B0.D0.BD.D0.BD.D1.8F"><span class="tocnumber">3.3</span> <span class="toctext"><span>API кориÑтувацького програмуваннÑ</span></span></a></li> </ul> </li> <li class="toclevel-1 tocsection-17"><a href="#.D0.9F.D0.BE.D1.81.D0.B8.D0.BB.D0.B0.D0.BD.D0.BD.D1.8F"><span class="tocnumber">4</span> <span class="toctext">ПоÑиланнÑ</span></a></li> </ul> </div> <h2><span class="mw-headline" id=".D0.97.D0.B0.D0.B3.D0.B0.D0.BB.D1.8C.D0.BD.D0.B8.D0.B9_.D0.BE.D0.BF.D0.B8.D1.81_.D0.BF.D1.80.D0.BE.D1.82.D0.BE.D0.BA.D0.BE.D0.BB.D1.83_ModBus"><span class="mw-headline-number">1</span> Загальний Ð¾Ð¿Ð¸Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ ModBus</span></h2> <p>Протокол ModBus/{RTU,ASCII} припуÑкає один ведучий (запити) приÑтрій у лінії (master), Ñкий може передавати команди одному або декільком веденим приÑтроÑм (slave), звертаючиÑÑŒ до них за унікальною адреÑою у лінії. СинтакÑÐ¸Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´ протоколу дозволÑÑ” адреÑувати 247 приÑтроїв на одній лінії зв'Ñзку Ñтандарту RS-485 (рідше RS-422 або RS-232). У випадку з режимом TCP, адреÑÐ°Ñ†Ñ–Ñ Ð²Ð¸ÐºÐ»ÑŽÑ‡ÐµÐ½Ð° з протоколу, оÑкільки здійÑнюєтьÑÑ Ð½Ð° рівні TCP/IP Ñтека. </p><p>Ініціатива здійÑÐ½ÐµÐ½Ð½Ñ Ð¾Ð±Ð¼Ñ–Ð½Ñƒ завжди виходить від ведучого приÑтрою. Ведені приÑтрої проÑлуховують лінію зв'Ñзку. МайÑтер подає запит (поÑилка, поÑлідовніÑть байт) у лінію та переходить у режим проÑÐ»ÑƒÑ…Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ñ–Ð½Ñ–Ñ— зв'Ñзку. Ведений приÑтрій відповідає на запит, Ñкий надійшов на його адреÑу. </p><p>Ð—Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñилки відповіді визначаєтьÑÑ Ð·Ð°Ð»ÐµÐ¶Ð½Ð¾ від режиму. У режимі RTU Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñилки визначаєтьÑÑ Ð·Ð° інтервалом чаÑу між закінченнÑм прийому попереднього байту та початком прийому наÑтупного — Ñ‡Ð°Ñ Ñимволу. Якщо цей інтервал перевищив чаÑ, потрібний Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð¹Ð¾Ð¼Ñƒ півтори байти на визначеній швидкоÑті передачі то прийом фрейму відповіді вважаєтьÑÑ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ð¼. У режимі ASCII критерієм Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ñилки Ñ” Ñимвол '\r', а у режимі TCP — очікуваний розмір поÑилки, Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ Ñкий приÑÑƒÑ‚Ð½Ñ Ñƒ заголовку пакету. </p> <h3><span class="mw-headline" id=".D0.90.D0.B4.D1.80.D0.B5.D1.81.D0.B0.D1.86.D1.96.D1.8F"><span class="mw-headline-number">1.1</span> ÐдреÑаціÑ</span></h3> <p>Ð’ÑÑ– операції з даними прив'Ñзано до нулÑ, кожний вид даних (регіÑтр, біт, регіÑтр входу або біт входу) починаєтьÑÑ Ð· адреÑи <b>0</b> та закінчуєтьÑÑ <b>65535</b>. </p> <h3><span class="mw-headline" id=".D0.A1.D1.82.D0.B0.D0.BD.D0.B4.D0.B0.D1.80.D1.82.D0.BD.D1.96_.D0.BA.D0.BE.D0.B4.D0.B8_.D1.84.D1.83.D0.BD.D0.BA.D1.86.D1.96.D0.B9"><span class="mw-headline-number">1.2</span> Стандартні коди функцій</span></h3> <p>У протоколі ModBus можна виокремити декілька множин команд (Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ 1). </p><p><b>Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ 1</b>: Підмножини команд протоколу ModBus </p> <table class="wikitable"> <tr> <th> Підмножина </th> <th> Діапазон кодів </th></tr> <tr> <td> Стандартні </td> <td> 1-21 </td></tr> <tr> <td> Резерв Ð´Ð»Ñ Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ… функцій </td> <td> 22-64 </td></tr> <tr> <td> КориÑтувацькі </td> <td> 65-119 </td></tr> <tr> <td> Резерв Ð´Ð»Ñ Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ–Ñ… потреб </td> <td> 120-255 </td></tr></table> <p>Модулем збору даних викориÑтовуютьÑÑ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð¸ <b>3</b> та <b>6(16)</b> Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° запиÑу регіÑтрів, <b>1</b> та <b>5(15)</b> Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° запиÑу бітів, <b>2</b> та <b>4</b> Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð±Ñ–Ñ‚Ñƒ та регіÑтру входу, відповідно. Ð”Ð»Ñ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— інших та нетипових команд модулем передбачено функцію <a href="#UserAPI">API кориÑтувацького програмуваннÑ</a>, Ñку можна викликати з <a href="../DAQ.html#LogicLev" title="Special:MyLanguage/Documents/DAQ">процедури шаблону логічного рівнÑ</a>, надÑилаючи довільні PDU-пакети та оброблÑючи отримані у відповідь. </p><p>Модуль протоколу обÑлуговує запити командами <b>3</b> та <b>6(16)</b> Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° запиÑу регіÑтрів, <b>1</b> та <b>5(15)</b> Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ñ‚Ð° запиÑу бітів. </p> <h2><span class="mw-headline" id=".D0.9C.D0.BE.D0.B4.D1.83.D0.BB.D1.8C_.D1.80.D0.B5.D0.B0.D0.BB.D1.96.D0.B7.D0.B0.D1.86.D1.96.D1.97_.D0.BF.D1.80.D0.BE.D1.82.D0.BE.D0.BA.D0.BE.D0.BB.D1.83"><span class="mw-headline-number">2</span> Модуль реалізації протоколу</span></h2> <p>Модуль протоколу ModBus міÑтить код реалізації протокольної чаÑтини ModBus, а Ñаме — оÑобливоÑті варіантів протоколів ModBus/TCP, ModBus/RTU та ModBus/ASCII. Модуль протоколу, Ñпільно з обраним транÑпортом, активно викориÑтовуєтьÑÑ Ð¼Ð¾Ð´ÑƒÐ»ÐµÐ¼ збору даних Ð´Ð»Ñ Ð·Ð´Ñ–Ð¹ÑÐ½ÐµÐ½Ð½Ñ Ð±ÐµÐ·Ð¿Ð¾Ñередніх запитів. ОÑкільки модуль протоколу Ñ” автономним то, викориÑтовуючи його, можна Ñтворювати додаткові модулі збору даних за поÑередництвом неÑтандартних функцій Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ ModBus різного Ð¾Ð±Ð»Ð°Ð´Ð½Ð°Ð½Ð½Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ð·Ð°Ñ†Ñ–Ñ—. </p> <h3><span class="mw-headline" id="API_.D1.84.D1.83.D0.BD.D0.BA.D1.86.D1.96.D1.97_.D0.B2.D0.B8.D1.85.D1.96.D0.B4.D0.BD.D0.B8.D1.85_.D0.B7.D0.B0.D0.BF.D0.B8.D1.82.D1.96.D0.B2"><span class="mw-headline-number">2.1</span> API функції вихідних запитів</span></h3> <p>API функції вихідних запитів (<a href="../User_API.html#SYSTransport" title="Special:MyLanguage/Documents/User API">messIO()</a>) оперують обміном блоками PDU, загорнутими у XML-пакети, з відповідною Ñтруктурою: </p> <ul><li> <b><{prt} id="{sId}" reqTm="{reqTm}" node="{node}" reqTry="{reqTry}">{pdu}</{prt}></b></li></ul> <dl><dd>Де: <ul><li> <i>prt</i> — ім'Ñ Ñ‚ÐµÐ³Ñƒ запиту з назвою викориÑтаного варіанту протоколу (TCP, RTU або ASCII).</li> <li> <i>sId</i> — ідентифікатор джерела запиту. ВикориÑтовуєтьÑÑ Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ <a href="#Report">звіту вихідного протоколу</a>.</li> <li> <i>reqTm</i> — Ñ‡Ð°Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ, а Ñаме — чаÑ, протÑгом Ñкого, очікувати відповіді, у міліÑекундах.</li> <li> <i>node</i> — номер вузла Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ ідентифікатор юніту ModBus/TCP.</li> <li> <i>reqTry</i> — кількіÑть Ñпроб повтору запиту з помилкою у відповіді. Тільки Ð´Ð»Ñ Ð²Ð°Ñ€Ñ–Ð°Ð½Ñ‚Ñ–Ð² ModBus/{RTU,ASCII}.</li> <li> <i>pdu</i> — безпоÑередньо блок юніту даних (PDU) протоколу ModBus.</li></ul></dd></dl> <p>Результатний <i>pdu</i> у XML-пакеті замінює <i>pdu</i> запиту, а також вÑтановлюєтьÑÑ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚ "err" з кодом та текÑтом помилки, Ñкщо така мала міÑце. </p> <h3><span class="mw-headline" id=".D0.9E.D0.B1.D1.81.D0.BB.D1.83.D0.B3.D0.BE.D0.B2.D1.83.D0.B2.D0.B0.D0.BD.D0.BD.D1.8F_.D0.B7.D0.B0.D0.BF.D0.B8.D1.82.D1.96.D0.B2_.D0.B7.D0.B0_.D0.BF.D1.80.D0.BE.D1.82.D0.BE.D0.BA.D0.BE.D0.BB.D0.BE.D0.BC_ModBus"><span class="mw-headline-number">2.2</span> ОбÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñ–Ð² за протоколом ModBus</span></h3> <p>Вхідна чаÑтина, обÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñ–Ð² до Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ, здійÑнює перевірку та обробку запитів за поÑередництвом передбачених модулем об'єктів вузлів (риÑ.1). Фактично, реалізуєтьÑÑ Ð¼ÐµÑ…Ð°Ð½Ñ–Ð·Ð¼, Ñкий дозволÑÑ” OpenSCADA виконувати роль Ñерверу ModBus/TCP або підлеглого приÑтрою ModBus/{RTU,ASCII}. Таким чином, OpenSCADA отримує можливіÑть викориÑтовуватиÑÑ Ñƒ ролі будь Ñкого учаÑника мережі ModBus. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:641px;"><a class="image" href="http://oscada.org/wiki/File:ModBus_prt_nodes_uk.png"><img class="thumbimage" height="488" src="../files/ModBus_prt_nodes_uk.png" width="639" /></a> <div class="thumbcaption">РиÑ.1. Вкладка переліку вузлів обÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ…Ñ–Ð´Ð½Ð¸Ñ… запитів протоколу.</div></div></div></div> <p>Вузол протоколу еквівалентно фізичному вузлу приÑтрою мережі ModBus та може працювати у трьох режимах: </p> <ul><li> "Дані" — режим Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… OpenSCADA на маÑиви регіÑтрів та бітів ModBus з передачею Ñ—Ñ… за запитом клієнтÑького вузла або майÑтра.</li> <li> "Шлюз вузла" — режим переÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ (шлюзуваннÑ) запитів до вузла у іншій мережі ModBus через цей вузол.</li> <li> "Шлюз мережі" — режим переÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñ–Ð² до будь Ñкого вузла у іншу мережі ModBus, фактично виконуючи інтеграцію декількох мереж ModBus у одну.</li></ul> <p>ОÑкільки вузлів протоколу може бути Ñтворено багато то виходить, що на одному інтерфейÑÑ–, тобто у одній мережі, одна ÑÑ‚Ð°Ð½Ñ†Ñ–Ñ Ð½Ð° оÑнові OpenSCADA може прозоро предÑтавлÑти декілька вузлів мережі ModBus з різними даними. </p><p>РозглÑнемо оÑобливоÑті конфігурації вузла протоколу у різних режимах. </p> <h4><span class="mw-headline" id=".D0.A0.D0.B5.D0.B6.D0.B8.D0.BC_.22.D0.94.D0.B0.D0.BD.D1.96.22"><span class="mw-headline-number">2.2.1</span> Режим "Дані"</span></h4> <p>Режим викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… OpenSCADA на маÑиви регіÑтрів та бітів ModBus. Загальна ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ð²ÑƒÐ·Ð»Ð° здійÑнюєтьÑÑ Ñƒ вкладці "Вузол" (риÑ.2) параметрами: </p> <ul><li> Стан вузла, а Ñаме: ÑтатуÑ, "Ввімкнено" та ім'Ñ Ð‘Ð”, Ñка міÑтить конфігурацію, з відÑтеженнÑм наÑвноÑті даних у різних Ñховищах та наданнÑм поÑлідовного Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð´ÑƒÐ±Ð»Ñ–ÐºÐ°Ñ‚Ñ–Ð².</li> <li> Ідентифікатор, ім'Ñ Ñ‚Ð° Ð¾Ð¿Ð¸Ñ Ð²ÑƒÐ·Ð»Ð°.</li> <li> Стан "Ввімкнено", у Ñкий переводити вузол при завантажені.</li> <li> ÐдреÑа вузла мережі ModBus від 1 до 247.</li> <li> Вхідний транÑпорт, до мережі Ñкого належить вузол. ОбираєтьÑÑ Ñ–Ð· переліку <a href="../Program_manual.html#TransportIn" title="Special:MyLanguage/Documents/Program manual">вхідних транÑпортів</a> підÑиÑтеми "ТранÑпорти" OpenSCADA. Ð’ÐºÐ°Ð·Ð°Ð½Ð½Ñ Ñимволу "*" у ÑкоÑті транÑпорту робить цей вузол учаÑником будь Ñкої мережі ModBus з обробкою запитів від будь Ñкого транÑпорту.</li> <li> Варіант протоколу ModBus, запити у Ñкому має оброблÑти вузол, із переліку: Ð’ÑÑ–, RTU, ASCII, TCP/IP.</li> <li> Вибір режиму, у даному випадку це режим "Дані".</li> <li> Період обчиÑÐ»ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… у Ñекундах. Вказує період обробки даних, Ñкі формуютьÑÑ Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñ–Ð², а Ñаме: таблиці даних ModBus, програми обчиÑÐ»ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… та обÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° дані OpenSCADA.</li> <li> <a href="../Program_manual.html#DAQTmpl" title="Special:MyLanguage/Documents/Program manual">DAQ шаблон</a> або мова прÑмої процедури. Передбачає Ð¾Ð±Ñ€Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñƒ або мови прÑмої процедури Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° обчиÑÐ»ÐµÐ½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†ÑŒ даних ModBus, а також Ð´Ð»Ñ Ð¾Ð±ÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð¾Ð²Ð½Ñ–ÑˆÐ½Ñ–Ñ… поÑилань на модель даних підÑиÑтеми "Збір Даних".</li></ul> <p>Вузлом у цьому режимі оброблÑютьÑÑ Ð½Ð°Ñтупні Ñтандартні команди протоколу ModBus: </p> <ul><li> <b>1</b> — Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¸ бітів;</li> <li> <b>2</b> — Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¸ бітів входів;</li> <li> <b>3</b> — Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¸ регіÑтрів;</li> <li> <b>4</b> — Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¸ регіÑтрів входів;</li> <li> <b>5</b> — вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ біту;</li> <li> <b>6</b> — вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ регіÑтру;</li> <li> <b>15</b> — вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¸ бітів;</li> <li> <b>16</b> — вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð³Ñ€ÑƒÐ¿Ð¸ регіÑтрів.</li></ul> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:814px;"><a class="image" href="http://oscada.org/wiki/File:ModBus_prt_node_node_uk.png"><img class="thumbimage" height="657" src="../files/ModBus_prt_node_node_uk.png" width="812" /></a> <div class="thumbcaption">РиÑ.2. Вкладка "Вузол" Ñторінки конфігурації вузла протоколу у режимі "Дані".</div></div></div></div> <p>Ð”Ð»Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð²Ñ–Ð´Ð´Ð·ÐµÑ€ÐºÐ°Ð»ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… мережі ModBus, а Ñаме регіÑтрів та бітів, передбачаєтьÑÑ Ð²ÐºÐ»Ð°Ð´ÐºÐ° "Дані" (риÑ.3). Вкладка "Дані" міÑтить таблицю параметрів та програму обробки параметрів визначеною мовою Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾Ñтупною у OpenSCADA, але за шаблоном тут доÑтупно тільки таблицю та у режимі "Ввімкнено". Ð¢Ð°Ð±Ð»Ð¸Ñ†Ñ Ð¼Ñ–Ñтить параметри з влаÑтивоÑÑ‚Ñми: </p> <ul><li> <i>Ідентифікатор</i> — ідентифікатор параметра, Ñ” ключовим у формуванні таблиць регіÑтрів та бітів ModBus. РегіÑтри та біти ModBus визначаютьÑÑ Ð½Ð°Ñтупним чином:</li></ul> <dl><dd><ul><li> <b>R{N}[w~]</b>, <b>RI{N}[w~]</b> — Ñпецифічна форма регіÑтру та регіÑтру входу, може бути розширено ÑуфікÑами: "i"—Int32, "f"—Float, "d"—Double, "s"—РÑдок (розмір по замовченню 10 та до 100 регіÑтрів);</li> <li> <b>R:{N}[:w~]</b>, <b>RI:{N}[:w~]</b> — клаÑична форма регіÑтру та регіÑтру входу, може бути розширено ÑуфікÑами: "i4"—Int32, "i8"—Int64, "f"—Float, "d"—Double, "s"—РÑдок;</li> <li> <b>C{N}[w]</b>, <b>CI{N}[w]</b>, <b>C:{N}[:w]</b>, <b>CI:{N}[:w]</b> — біт та біт входу.</li></ul></dd> <dd>Де: <ul><li> <b>{N}</b> — адреÑа даних ModBus приÑтрою (деÑÑткова, шіÑтнадцÑткова, або віÑімкова) [0...65535];</li> <li> <b>w~e</b> — прапорці: режим запиÑу 'w', інверÑÑ–Ñ Ð¿Ð¾Ñ€Ñдку регіÑтрів '~', Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¿Ð¾Ñ€Ñдку байтів 'e' регіÑтрів (у LE загалом та BE Ð´Ð»Ñ Ñ€Ñдків).</li></ul></dd> <dd>Приклади: <dl><dd>"R0x300" — доÑтуп до регіÑтру;</dd> <dd>"C100w" — доÑтуп до біту, доÑтупний Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñу;</dd> <dd>"R_f200", "R_f200~" — отримати реальне з регіÑтрів 200 та 201, 201 та 200;</dd> <dd>"R_i400,300" — отримати int32 з регіÑтрів 400 та 300;</dd> <dd>"R_s15,20" — отримати Ñ€Ñдок, блок регіÑтрів, з регіÑтру 15 та розміром 20;</dd> <dd>"R_i8:0x10:w" — отримати та вÑтановити int64 у регіÑтри [0x10-0x13];</dd> <dd>"R_d:0x20,0x30" — отримати реальне подвійної точноÑті (8 байтів) з регіÑтрів [0x20,0x30-0x32].</dd></dl></dd></dl> <dl><dt> Ð’ÑÑ– інші параметри, Ñкі не потрапили під вище-зазначені правила, Ñ” внутрішніми, викориÑтовуютьÑÑ Ð´Ð»Ñ Ñ€Ñ–Ð·Ð½Ð¸Ñ… проміжних обчиÑлень, обробки, перетворень та Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ—Ñ… може бути оперативно проконтрольовано та змінено з цієї таблиці у режимі виконаннÑ.</dt></dl> <ul><li> <i>Ім'Ñ</i> — ім'Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñƒ, викориÑтовуєтьÑÑ Ð´Ð»Ñ Ñ–Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð²'Ñзку.</li> <li> <i>Тип</i> — тип параметру із переліку: "Реальний", "Цілий", "Логічний" та "Ð Ñдок". Ð”Ð»Ñ Ñ€ÐµÐ³Ñ–Ñтрів та бітів ModBus має ÑÐµÐ½Ñ Ð²Ñтановлювати "Цілий" та "Логічний" тип відповідно. Ð”Ð»Ñ Ñ€ÐµÐ³Ñ–Ñтрів, розширених пріфікÑами "f" та "s", треба вказати типи "Реальний" та "Ð Ñдок", відповідно.</li> <li> <i>Зв'Ñзок</i> — ознака того, що цей параметр має пов'ÑзуватиÑÑ Ð· атрибутом параметру підÑиÑтеми "Збір даних". Вказані цією ознакою зв'Ñзки вÑтановлюютьÑÑ Ñƒ вкладці "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñƒ".</li> <li> <i>ЗначеннÑ</i> — початкове або поточне Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñƒ, Ñкщо вузол включено.</li></ul> <p>Ð’ таблиці, по замовченню, визначаютьÑÑ Ð´ÐµÐºÑ–Ð»ÑŒÐºÐ° параметрів Ñпеціального призначеннÑ: </p> <ul><li> <i>f_frq</i> — чаÑтота обчиÑÐ»ÐµÐ½Ð½Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– програмою;</li> <li> <i>f_start</i> — ознака першого Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ â€” запуÑку програми.</li> <li> <i>f_stop</i> — ознака оÑтаннього Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ â€” зупинки програми.</li></ul> <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> ОÑкільки у вказівнику розширених типів регіÑтрів може викориÑтовуватиÑÑ Ð½ÐµÐ´Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½Ð¸Ð¹ Ñимвол ',' то доÑтуп до нього із програми можна здійÑнити тільки альтернативним ÑпоÑобом, через об'єкт "arguments": </p> <div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="nx">arguments</span><span class="p">[</span><span class="s2">"R_s10,5w"</span><span class="p">]</span> <span class="o">=</span> <span class="s2">"9876543210"</span><span class="p">;</span> </pre></div> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:798px;"><a class="image" href="http://oscada.org/wiki/File:ModBus_prt_node_data_uk.png"><img class="thumbimage" height="657" src="../files/ModBus_prt_node_data_uk.png" width="796" /></a> <div class="thumbcaption">РиÑ.3. Вкладка "Дані" Ñторінки конфігурації вузла протоколу у режимі "Дані".</div></div></div></div> <p>Ð”Ð»Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² вказаних у ÑкоÑті зв'Ñзків, зв'Ñзки можна вÑтановити Ð´Ð»Ñ Ð²Ð²Ñ–Ð¼ÐºÐ½ÐµÐ½Ð¾Ð³Ð¾ вузла протоколу та у вкладці "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñƒ" (риÑ.4). </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:712px;"><a class="image" href="http://oscada.org/wiki/File:ModBus_prt_node_lnk_uk.png"><img class="thumbimage" height="556" src="../files/ModBus_prt_node_lnk_uk.png" width="710" /></a> <div class="thumbcaption">РиÑ.4. Вкладка "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñƒ" Ñторінки конфігурації вузла протоколу у режимі "Дані".</div></div></div></div> <h4><span class="mw-headline" id=".D0.A0.D0.B5.D0.B6.D0.B8.D0.BC_.22.D0.A8.D0.BB.D1.8E.D0.B7_.D0.B2.D1.83.D0.B7.D0.BB.D0.B0.22"><span class="mw-headline-number">2.2.2</span> Режим "Шлюз вузла"</span></h4> <p>Режим викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ до окремого приÑтрою у іншій мережі ModBus, із мережі ModBus Ð´Ð»Ñ Ñкої Ñконфігуровано цей вузол. Загальна ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ð²ÑƒÐ·Ð»Ð° здійÑнюєтьÑÑ Ñƒ вкладці "Вузол" (риÑ.5) параметрами: </p> <ul><li> Стан вузла, а Ñаме: ÑтатуÑ, "Ввімкнено" та ім'Ñ Ð‘Ð”, Ñка міÑтить конфігурацію.</li> <li> Ідентифікатор, ім'Ñ Ñ‚Ð° Ð¾Ð¿Ð¸Ñ Ð²ÑƒÐ·Ð»Ð°.</li> <li> Стан "Ввімкнено", у Ñкий переводити вузол при завантажені.</li> <li> ÐÐ´Ñ€ÐµÑ Ð²ÑƒÐ·Ð»Ð° вхідної мережі ModBus, від 1 до 247.</li> <li> Вхідний транÑпорт, до мережі Ñкого має ÑтоÑунок вузол. ОбираєтьÑÑ Ð· переліку <a href="../Program_manual.html#TransportIn" title="Special:MyLanguage/Documents/Program manual">вхідних транÑпортів</a> підÑиÑтеми "ТранÑпорти" OpenSCADA. Ð’ÐºÐ°Ð·Ð°Ð½Ð½Ñ Ñимволу "*" у ÑкоÑті транÑпорту робить цей вузол учаÑником будь Ñкої мережі ModBus з обробкою запитів від будь Ñкого транÑпорту.</li> <li> Варіант протоколу ModBus, запити у Ñкому має оброблÑтиÑÑ Ð²ÑƒÐ·Ð»Ð¾Ð¼, з переліку: Ð’ÑÑ–, RTU, ASCII, TCP/IP.</li> <li> Вибір режиму, в цьому випадку цей режим "Шлюз вузла".</li> <li> ТранÑпорт, у Ñкий переÑпрÑмовують запит, з переліку <a href="../Program_manual.html#TransportOut" title="Special:MyLanguage/Documents/Program manual">вихідних транÑпортів</a> підÑиÑтеми "ТранÑпорти".</li> <li> Протокол, у Ñкому переÑпрÑмовувати запит.</li> <li> ÐдреÑа вузла мережі ModBus, від 1 до 247, у Ñку переÑпрÑмовуєтьÑÑ Ð·Ð°Ð¿Ð¸Ñ‚.</li></ul> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:679px;"><a class="image" href="http://oscada.org/wiki/File:ModBus_prt_node_nodeGwNode_uk.png"><img class="thumbimage" height="676" src="../files/ModBus_prt_node_nodeGwNode_uk.png" width="677" /></a> <div class="thumbcaption">РиÑ.5. Вкладка "Вузол" Ñторінки конфігурації вузла протоколу у режимі "Шлюз вузла".</div></div></div></div> <h4><span class="mw-headline" id=".D0.A0.D0.B5.D0.B6.D0.B8.D0.BC_.22.D0.A8.D0.BB.D1.8E.D0.B7_.D0.BC.D0.B5.D1.80.D0.B5.D0.B6.D1.96.22"><span class="mw-headline-number">2.2.3</span> Режим "Шлюз мережі"</span></h4> <p>Режим викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÑпрÑÐ¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñ–Ð² мережі цілком у іншу мережу ModBus, з мережі ModBus Ð´Ð»Ñ Ñкої Ñконфігуровано цей вузол протоколу. Тобто, запит на приÑтрій з будь Ñкою адреÑою буде ÑпрÑмовуватиÑÑ Ñƒ іншу мережу, без переадреÑуваннÑ. Загальна ÐºÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ð²ÑƒÐ·Ð»Ð° протоколу здійÑнюєтьÑÑ Ñƒ вкладці "Вузол" (риÑ.6) параметрами: </p> <ul><li> Стан вузла, а Ñаме: ÑтатуÑ, "Ввімкнено" та ім'Ñ Ð‘Ð”, Ñка міÑтить конфігурацію.</li> <li> Ідентифікатор, ім'Ñ Ñ‚Ð° Ð¾Ð¿Ð¸Ñ Ð²ÑƒÐ·Ð»Ð°.</li> <li> Стан "Ввімкнено", у Ñкий переводити вузол при завантажені.</li> <li> Вхідний транÑпорт мережі, з Ñкого переÑпрÑмовуютьÑÑ Ð·Ð°Ð¿Ð¸Ñ‚Ð¸. ОбираєтьÑÑ Ð· переліку <a href="../Program_manual.html#TransportIn" title="Special:MyLanguage/Documents/Program manual">вхідних транÑпортів</a> підÑиÑтеми "ТранÑпорти" OpenSCADA.</li> <li> Варіант протоколу ModBus, запити у Ñкому має оброблÑти вузол, із переліку: Ð’ÑÑ–, RTU, ASCII, TCP/IP.</li> <li> Вибір режиму, у цьому випадку цей режим "Шлюз мережі".</li> <li> ТранÑпорт мережі, у Ñку переÑпрÑмовувати запит, з переліку <a href="../Program_manual.html#TransportOut" title="Special:MyLanguage/Documents/Program manual">вихідних транÑпортів</a> підÑиÑтеми "ТранÑпорти".</li> <li> Протокол, у Ñкому переÑпрÑмовувати запит.</li></ul> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:679px;"><a class="image" href="http://oscada.org/wiki/File:ModBus_prt_node_nodeGwNet_uk.png"><img class="thumbimage" height="628" src="../files/ModBus_prt_node_nodeGwNet_uk.png" width="677" /></a> <div class="thumbcaption">РиÑ.6. Вкладка "Вузол" Ñторінки конфігурації вузла протоколу у режимі "Шлюз мережі".</div></div></div></div> <h3><span class="mw-headline" id=".D0.97.D0.B2.D1.96.D1.82_.D0.B7.D0.B0.D0.BF.D0.B8.D1.82.D1.96.D0.B2_ModBus"><span class="mw-headline-number">2.3</span> <span id="Report" title="#Report">Звіт запитів ModBus</span></span></h3> <p>Ð”Ð»Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŽ та діагноÑтики за коректніÑтю здійÑÐ½ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñ–Ð² різними компонентами, модулем надаєтьÑÑ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ–Ñть Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð·Ð²Ñ–Ñ‚Ñƒ запитів, що проходÑть через модуль протоколу. Звіт включаєтьÑÑ Ð²ÐºÐ°Ð·Ð°Ð½Ð½Ñм ненульової кількоÑті запиÑів у вкладці "Звіт" Ñторінки Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ (риÑ.7). </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> Цей механізм переважно Ñ” заÑтарілим, оÑкільки його функції наразі виконуютьÑÑ Ñдром програми: </p> <ul><li> <a href="../Program_manual.html#DAQDiagnostic" title="Special:MyLanguage/Documents/Program manual">діагноÑтика джерела даних</a>;</li> <li> <a href="../Program_manual.html#TrDiagnostic" title="Special:MyLanguage/Documents/Program manual">протокол трафіку через транÑпорт</a>.</li></ul> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:709px;"><a class="image" href="http://oscada.org/wiki/File:Modbus_prt_rep_uk.png"><img class="thumbimage" height="628" src="../files/Modbus_prt_rep_uk.png" width="707" /></a> <div class="thumbcaption">РиÑ.7. Вкладка "Звіт" Ñторінки Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ.</div></div></div></div> <h2><span class="mw-headline" id=".D0.9C.D0.BE.D0.B4.D1.83.D0.BB.D1.8C_.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">3</span> <span id="DAQ" title="#DAQ">Модуль збору даних</span></span></h2> <p>Модуль збору даних надає можливіÑть Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° запиÑу регіÑтрів та бітів приÑтроїв за поÑередництвом режимів протоколу TCP, RTU, ASCII та команд запиту <b>1</b> — <b>6</b>, <b>15</b>, <b>16</b>. </p> <h3><span class="mw-headline" id=".D0.9E.D0.B1.27.D1.94.D0.BA.D1.82_.D0.BA.D0.BE.D0.BD.D1.82.D1.80.D0.BE.D0.BB.D0.B5.D1.80.D1.83"><span class="mw-headline-number">3.1</span> Об'єкт контролеру</span></h3> <p>Ð”Ð»Ñ Ð´Ð¾Ð´Ð°Ð½Ð½Ñ Ð´Ð¶ÐµÑ€ÐµÐ»Ð° даних ModBus ÑтворюєтьÑÑ Ñ‚Ð° конфігуруєтьÑÑ Ð¾Ð±'єкт контролеру OpenSCADA. Приклад вкладки конфігурації объекту контролеру даного типу наведено на риÑунку 8. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:796px;"><a class="image" href="http://oscada.org/wiki/File:ModBus_cntr_uk.png"><img class="thumbimage" height="882" src="../files/ModBus_cntr_uk.png" width="794" /></a> <div class="thumbcaption">РиÑ.8. Вкладка конфігурації об'єкту контролеру.</div></div></div></div> <p>За допомогою цієї вкладки можна вÑтановити: </p> <ul><li> Стан об'єкту контролеру, а Ñаме: СтатуÑ, "Ввімкнено", "ВиконуєтьÑÑ" та ім'Ñ Ñховища, Ñке міÑтить конфігурацію.</li></ul> <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> <ul><li> Ідентифікатор, ім'Ñ Ñ‚Ð° Ð¾Ð¿Ð¸Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÐµÑ€Ñƒ.</li> <li> Стан "Ввімкнено" та "ВиконуєтьÑÑ", у Ñкий переводити об'єкт контролеру при завантажені.</li> <li> Політика Ð¿Ð»Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° пріоритет задачі збору даних.</li> <li> ModBus протокол, Ñкий викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ñ–Ð·Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ приÑтрою (TCP/IP, RTU або ASCII).</li> <li> ÐдреÑа вихідного транÑпорту із викориÑтаннÑм уніфікованого Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñ–Ð· навігацією. Типовий порт ModuBus/TCP це 502. Поле може бути вÑтановлено у порожнє та змінено під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ. Формат адреÑи: <ul><li> "<b>{TrModule}.[out_]{TrID}[:{TrAddr}]</b>" — типовий вихідний із автоматичним ÑтвореннÑм <i>TrID</i> за його відÑутноÑті та наданні <i>TrAddr</i>;</li> <li> "<b>{TrModule}.in_{TrID}:{RemConId}</b>" — ініціативний вхідний із ідентифікатором Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñƒ <i>RemConId</i>.</li></ul></li> <li> ModBus вузол призначеннÑ. У випадку з протоколами RTU та ASCII це індивідуальна адреÑа фізичного приÑтрою, а Ð´Ð»Ñ TCP/IP це ідентифікатор одиниці.</li> <li> Об'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ñ–Ð² регіÑтрів. Стандартні функції <b>1</b>-<b>4</b> дозволÑють запитати одразу декілька Ñуміжних регіÑтрів або бітів. Така ÑÑ‚Ñ€Ð°Ñ‚ÐµÐ³Ñ–Ñ Ñ‡Ð°Ñто дозволÑÑ” оптимізувати трафік та чаÑ. Однак, потрібні регіÑтри не завжди розташовані Ñуміжно один до одного та така Ð¾Ð¿Ñ†Ñ–Ñ Ð´Ð¾Ð·Ð²Ð¾Ð»ÑÑ” збирати Ñ—Ñ… у блоки до 100 регіÑтрів або 1600 бітів.</li></ul> <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> <ul><li> ВикориÑтовувати функції запиÑу декількох елементів (<b>15</b>, <b>16</b>). ЗаміÑть функцій одно-елементного запиÑу буде викориÑтано багато-елементні.</li> <li> ÐÑинхронний запиÑ. Вмикає аÑинхронний Ð·Ð°Ð¿Ð¸Ñ Ð·Ð¼Ñ–Ð½ до контролеру, у загальному циклі Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° піÑÐ»Ñ Ñамого Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ…, блокуючи Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñаних значень на один цикл (до Ð¾Ñ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð±ÑƒÑ„ÐµÑ€Ñƒ запиÑу).</li></ul> <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> <ul><li> ПропуÑк циклів Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð½Ð°Ð·Ð°Ð´ запиÑаного. Може бути кориÑним Ð´Ð»Ñ ÐŸÐ›Ðš, що заÑтоÑовують зміни не швидко та вони опрацьовуютьÑÑ Ð·Ð° певний значний чаÑ, залежно від Ð½Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ ÐŸÐ›Ðš. Тож, Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ†Ð¸ÐºÐ»Ñ–Ð² визначає кількіÑть циклів читаннÑ, що пропуÑкаютьÑÑ Ð¿ÐµÑ€ÐµÐ´ зворотнім читаннÑм зміненого значеннÑ, запобігаючи блиманню значеннÑ.</li> <li> Ð§Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñƒ міліÑекундах. Вказує проміжок чаÑ, на протÑзі Ñкого очікувати відповіді. У випадку Ð²ÐºÐ°Ð·Ð°Ð½Ð½Ñ Ð½ÑƒÐ»ÑŒÐ¾Ð²Ð¾Ð³Ð¾ Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸ÑтовуєтьÑÑ Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾ замовченню у транÑпорті. ДозволÑÑ” враховувати індивідуальні влаÑтивоÑті контролеру у загальній мережі.</li> <li> Ð§Ð°Ñ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñƒ Ñекундах. Вказує проміжок чаÑу, за вичерпаннÑм Ñкого здійÑнювати повторну Ñпробу запиту до раніш недоÑтупного приÑтрою.</li> <li> Спроб запиту Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñ–Ð² RTU та ASCII. Вказує на кількіÑть Ñпроб повтору запиту у випадку Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð½ÐµÐ¿Ð¾Ð²Ð½Ð¾Ñ— або пошкодженої відповіді.</li> <li> МакÑимальний розмір блоку запиту у байтах, кориÑний Ð´Ð»Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÐµÑ€Ñ–Ð² з таким обмеженнÑм.</li></ul> <h3><span class="mw-headline" id=".D0.9F.D0.B0.D1.80.D0.B0.D0.BC.D0.B5.D1.82.D1.80.D0.B8"><span class="mw-headline-number">3.2</span> Параметри</span></h3> <p>Модуль збору даних надає два типи параметру: "Стандартний (Prm)" та "Логічний (PrmL)". Додатковими конфігураційними полÑми параметрів цього Ð¼Ð¾Ð´ÑƒÐ»Ñ Ñ”: </p> <ul><li> <i><b>Стандартний (Prm)</b></i>: <ul><li> <i>Перелік атрибутів</i> — міÑтить Ñтруктурований перелік конфігурації атрибутів ModBUS.</li></ul></li> <li> <i><b>Логічний (PrmL)</b></i>: <ul><li> <i>Шаблон параметру</i> — адреÑа шаблону параметру DAQ.</li></ul></li></ul> <h4><span class="mw-headline" id=".D0.A1.D1.82.D0.B0.D0.BD.D0.B4.D0.B0.D1.80.D1.82.D0.BD.D0.B8.D0.B9_.28Prm.29"><span class="mw-headline-number">3.2.1</span> Стандартний (Prm)</span></h4> <p>Головну Ñторінку конфігурації параметру Ñтандартного типу предÑтавлено на риÑунку 9. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:779px;"><a class="image" href="http://oscada.org/wiki/File:ModBus_prm_uk.png"><img class="thumbimage" height="665" src="../files/ModBus_prm_uk.png" width="777" /></a> <div class="thumbcaption">РиÑ.9. Вкладка конфігурації параметру Ñтандартного типу.</div></div></div></div> <p>Ð›Ñ–Ð½Ñ–Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ у параметрі переліку атрибутів запиÑуєтьÑÑ Ñк "<b>{dt}:{numb}[:{flg}[:{id}[:{name}]]]</b>".<br /> Де: </p> <ul><li> <i>dt</i> — тип даних ModBus ("R"—регіÑтр[3,6(16)], "C"—біт[1,5(15)], "RI"—регіÑтр входу[4], "CI"—біт входу[2]);</li></ul> <dl><dd>"R" та "RI" можуть бути розширені ÑуфікÑами: "i2"—Int16, "i4"—Int32, "i8"—Int64, "u2"—UInt16, "u4"—UInt32, "f"—Float, "d"—Double, "b5"—Біт5, "b"—Біт у адреÑÑ–, "s[КОДУВÐÐÐЯ]"—РÑдок (розмір по умовчанню 10 та до 100 регіÑтрів);</dd></dl> <ul><li> <i>numb</i> — адреÑа ModBus приÑтрою (деÑÑткова, шіÑтнадцÑткова або віÑімкова) [0...65535];</li> <li> <i>flg</i> — прапорці: режим запиÑу/Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ (r-читати, w-пиÑати), Ñуворий режим запиту (без комбінуваннÑ) 's', інверÑÑ–Ñ Ð¿Ð¾Ñ€Ñдку регіÑтрів '~', Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¿Ð¾Ñ€Ñдку байтів 'e' регіÑтрів (у LE загалом та BE Ð´Ð»Ñ Ñ€Ñдків);</li> <li> <i>id</i> — ідентифікатор атрибуту що ÑтворюєтьÑÑ;</li> <li> <i>name</i> — ім'Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ що ÑтворюєтьÑÑ.</li></ul> <p>Приклади: </p> <dl><dd>"R:0x300:rw:var:Variable" — доÑтуп до регіÑтру;</dd> <dd>"C:100:rw:var1:Variable 1" — доÑтуп до біту;</dd> <dd>"R_f:200:r:float:Float", "R_f:200:r~:float:Float" — отримати реальне з регіÑтрів 200 та 201, 201 та 200;</dd> <dd>"R_i4:400,300:r:int32:Int32" — отримати int32 з регіÑтрів 400 та 300;</dd> <dd>"R_b10:25:r:rBit:Reg bit", "R_b:25.10:r:rBit:Reg bit" — отримати біт 10 з регіÑтру 25;</dd> <dd>"R_s:15,20:r:str:Reg blk" — отримати Ñ€Ñдок (блок регіÑтрів) з регіÑтру 15 та розміром 20.</dd></dl> <p>ЛініÑ, що починаєтьÑÑ Ð· Ñимволу '#', вважаєтьÑÑ ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð°Ñ€ÐµÐ¼ та не оброблÑєтьÑÑ. </p><p>Відповідно до визначеного переліку атрибутів здійÑнюєтьÑÑ Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñ–Ð² параметру (риÑ.10). </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:647px;"><a class="image" href="http://oscada.org/wiki/File:ModBus_prm_atr_uk.png"><img class="thumbimage" height="536" src="../files/ModBus_prm_atr_uk.png" width="645" /></a> <div class="thumbcaption">РиÑ.10. Вкладка атрибутів параметру Ñтандартного типа.</div></div></div></div> <h4><span class="mw-headline" id=".D0.9B.D0.BE.D0.B3.D1.96.D1.87.D0.BD.D0.B8.D0.B9_.28PrmL.29"><span class="mw-headline-number">3.2.2</span> Логічний (PrmL)</span></h4> <p>Головну Ñторінку конфігурації параметру логічного типу предÑтавлено на риÑунку 11. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:697px;"><a class="image" href="http://oscada.org/wiki/File:ModBusLog_prm_uk.png"><img class="thumbimage" height="536" src="../files/ModBusLog_prm_uk.png" width="695" /></a> <div class="thumbcaption">РиÑ.11. Вкладка конфігурації параметру логічного типа.</div></div></div></div> <p>Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾ÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸ конфігурації шаблону (риÑ.12) запиÑуєтьÑÑ Ñƒ формі "<b>{dt}:{numb}[:{flg}]</b>".<br /> Де: </p> <ul><li> <i>dt</i> — тип даних ModBus ("R"—регіÑтр[3,6(16)], "C"—біт[1,5(15)], "RI"—регіÑтр входу[4], "CI"—біт входу[2]);</li></ul> <dl><dd>"R" та "RI" можуть бути розширені ÑуфікÑами: "i2"—Int16, "i4"—Int32, i8-Int64, u2-UInt16, u4-UInt32, "f"—Float, "d"—Double, "b5"—Біт5, "b"—Біт у адреÑÑ–, "s[КОДУВÐÐÐЯ]"—РÑдок (розмір по умовчанню 10 та до 100 регіÑтрів);</dd></dl> <ul><li> <i>numb</i> — адреÑа даних ModBus приÑтрою (деÑÑткова, шіÑтнадцÑткова або віÑімкова) [0...65535];</li> <li> <i>flg</i> — прапорці: режим запиÑу/Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ (r-читати, w-пиÑати), інверÑÑ–Ñ Ð¿Ð¾Ñ€Ñдку регіÑтрів '~', Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð¿Ð¾Ñ€Ñдку байтів 'e' регіÑтрів (у LE загалом та BE Ð´Ð»Ñ Ñ€Ñдків).</li></ul> <p>Приклади: </p> <dl><dd>"R:0x300:rw" — доÑтуп до регіÑтру;</dd> <dd>"C:100:rw" — доÑтуп до біту;</dd> <dd>"R_f:200:r", "R_f:200:r~" — отримати реальне з регіÑтрів 200 та 201, 201 та 200;</dd> <dd>"R_i4:400,300:r" — отримати int32 з регіÑтрів 400 та 300;</dd> <dd>"R_b10:25:r", "R_b:25.10:r" — отримати біт 10 із регіÑтру 25;</dd> <dd>"R_s:15,20:r" — отримати Ñ€Ñдок (блок регіÑтрів) з регіÑтру 15 та розміром 20.</dd></dl> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:725px;"><a class="image" href="http://oscada.org/wiki/File:ModbusLog_tmpl_uk.png"><img class="thumbimage" height="493" src="../files/ModbusLog_tmpl_uk.png" width="723" /></a> <div class="thumbcaption">РиÑ.12. Вкладка "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñƒ" параметра логічного типу.</div></div></div></div> <p>Модулем передбачена оÑоблива обробка низки атрибутів шаблону: </p> <ul><li> <i>f_frq</i> — чаÑтота обчиÑÐ»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð¸ шаблону або Ñ‡Ð°Ñ Ð¿Ñ–ÑÐ»Ñ Ð¾Ñтаннього обчиÑÐ»ÐµÐ½Ð½Ñ (негативне у Ñекундах) Ð´Ð»Ñ Ð¿Ð»Ð°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° CRON, тільки читаннÑ.</li> <li> <i>f_start</i> — ознака першого Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð¸ шаблону — запуÑк, тільки читаннÑ.</li> <li> <i>f_stop</i> — ознака оÑтаннього Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ†ÐµÐ´ÑƒÑ€Ð¸ шаблону — зупинка, тільки читаннÑ.</li> <li> <i>f_err</i> — помилка параметру, повний доÑтуп. Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ атрибуту шаблону потраплÑÑ” до атрибуту помилки параметру "err". ЗапиÑати Ñюди <b>EVAL</b> Ð´Ð»Ñ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ð¾Ñті вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð·Ð¾Ð²Ð½Ñ– атрибуту "err" та вÑÑ–Ñ… інших у режимі Тільки Ð´Ð»Ñ Ð§Ð¸Ñ‚Ð°Ð½Ð½Ñ.</li> <li> <i>SHIFR</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ ÑˆÐ¸Ñ„Ñ€Ñƒ параметру, тільки читаннÑ.</li> <li> <i>NAME</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð½Ð°Ð·Ð²Ð¸ параметру, тільки читаннÑ.</li> <li> <i>DESCR</i> — Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ð¿Ð¸Ñу параметру, тільки читаннÑ.</li> <li> <i>this</i> — об'єкт даного параметру, дозволÑÑ” отримати доÑтуп до атрибутів параметру, наприклад, Ð´Ð»Ñ Ð´Ð¾Ñтупу до архівів-Ñ–Ñторії.</li></ul> <p>Відповідно до шаблону, Ñкий лежить у оÑнові параметру, ми отримаємо набір атрибутів параметру (риÑ.13). </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:725px;"><a class="image" href="http://oscada.org/wiki/File:ModbusLog_prm_atr_uk.png"><img class="thumbimage" height="493" src="../files/ModbusLog_prm_atr_uk.png" width="723" /></a> <div class="thumbcaption">РиÑ.13. Вкладка атрибутів параметру логічного типу.</div></div></div></div> <h3><span class="mw-headline" id="API_.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.BE.D0.B3.D0.BE_.D0.BF.D1.80.D0.BE.D0.B3.D1.80.D0.B0.D0.BC.D1.83.D0.B2.D0.B0.D0.BD.D0.BD.D1.8F"><span class="mw-headline-number">3.3</span> <span id="UserAPI" title="#UserAPI">API кориÑтувацького програмуваннÑ</span></span></h3> <p>У зв'Ñзку із підтримкою параметрів логічного типу, має ÑÐµÐ½Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð½Ð¸Ð·ÐºÐ¸ функцій кориÑтувацького API Ð´Ð»Ñ Ñ—Ñ… виклику із шаблону логічного параметру. </p> <div class="floatright"><a class="image" href="http://oscada.org/wiki/File:Oscada_UserOM_ModBus_uk.png" title="Об'єктна модель кориÑтувача Ð¼Ð¾Ð´ÑƒÐ»Ñ ModBus."><img alt="Об'єктна модель кориÑтувача Ð¼Ð¾Ð´ÑƒÐ»Ñ ModBus." height="215" src="../files/Oscada_UserOM_ModBus_uk.png" width="323" /></a></div> <p><b>Об'єкт "Контролер" [this.cntr()]</b> </p> <ul><li> <i>string messIO(string pdu)</i> — відправка PDU <i>pdu</i> через транÑпорт об'єкту контролеру за поÑередництвом ModBus протоколу. PDU результату запиту розташовуєтьÑÑ Ð·Ð°Ð¼Ñ–Ñть запиту у <i>pdu</i>, а помилка повертаєтьÑÑ Ñƒ результаті функції.</li></ul> <p><b>Об'єкт "Параметр" [this]</b> </p> <ul><li> <i>bool attrAdd( string id, string name, string tp = "real", string selValsNms = "" )</i> [<span style="color: red">Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¾Ð³Ð¾ параметру логічного типу</span>] — Ð´Ð¾Ð´Ð°Ð½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ <i>id</i> з ім'Ñм <i>name</i> та типом <i>tp</i>. Якщо атрибут вже приÑутній то будуть заÑтоÑовані влаÑтивоÑті, Ñкі можливо змінити "на ходу": ім'Ñ, режим вибору та параметри вибору. <ul><li> <i>id, name</i> — ідентифікатор та ім'Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ атрибуту;</li> <li> <i>tp</i> — тип атрибута [boolean | integer | real | string | text | object] + режим вибору [sel | seled] + тільки Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ [ro];</li> <li> <i>selValsNms</i> — два Ñ€Ñдки зі значеннÑми у першому та Ñ—Ñ… іменами у другому, поділені ";".</li></ul></li> <li> <i>bool attrDel( string id )</i> [<span style="color: red">Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¾Ð³Ð¾ параметру логічного типу</span>] — Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ‚Ñƒ <i>id</i>.</li></ul> <p><br /> </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">4</span> ПоÑиланнÑ</span></h2> <ul><li> <a class="external" href="http://oscada.org/wiki/File:Oscada_UserOM_ModBus_uk.odg" title="File:Oscada UserOM ModBus uk.odg">Діаграма: Об'єктна модель кориÑтувача Ð¼Ð¾Ð´ÑƒÐ»Ñ ModBus.</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/Modules/ModBus/uk">Modules/ModBus/uk</a> - <a href="http://oscada.org/en/main/about-the-project/licenses/">GFDL</a></td><td style="text-align: center;">April 2025</td><td style="text-align: right;" width="40%">OpenSCADA 1+r3018</td></tr></table></body> </html>