<?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>Модулі/Serial - 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">Модулі/Serial</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%2FSerial&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/Serial" title="Modules/Serial">Modules/Serial</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/Serial.html" title="Modules/Serial (100% translated)">English</a> • ‎<a class="mw-pt-progress mw-pt-progress--high" href="../../ru/Modules/Serial.html" title="Модули/Serial (75% 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> <th> ÐžÐ¿Ð¸Ñ </th></tr> <tr> <td> <a href="../Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a> </td> <td> ПоÑлідовні інтерфейÑи </td> <td> 2.7 </td> <td> GPL2 </td> <td> tr_Serial.so </td> <td> en,uk,ru,de </td> <td> x86,x86_64,ARM </td> <td> ТранÑпорт </td> <td> Роман Савоченко<br /> <font size="-2"><i>МакÑим Кочетков (2016)</i></font> </td> <td> Ðадає транÑпорт заÑнований на поÑлідовних інтерфейÑах. ВикориÑтовуєтьÑÑ Ð´Ð»Ñ Ð¾Ð±Ð¼Ñ–Ð½Ñƒ даними через поÑлідовні інтерфейÑи типу RS232, RS485, GSM та Ñхожі. <ul><li> <b><a href="../../en/To_do.html" title="Special:MyLanguage/Works/To do">Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ (To Do)</a>:</b></li></ul> <dl><dd> - перевірити режим модему та додати до нього поле вводу PIN.</dd></dl> </td></tr></table> <p>Модуль надає до програми підтримку транÑпортів, заÑнованих на поÑлідовних інтерфейÑах типу RS232, RS485, GSM та Ñхожі. ПідтримуютьÑÑ Ð²Ñ…Ñ–Ð´Ð½Ñ– та вихідні транÑпорти. Додати нові вхідні та вихідні інтерфейÑи можна за поÑередництвом конфігурації транÑпортної підÑиÑтеми у будь Ñкому конфігураторі OpenSCADA. </p><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> У звичайному режимі поÑлідовного інтерфейÑу не допуÑкаєтьÑÑ Ð±Ð°Ð³Ð°Ñ‚Ð¾Ñ€Ð°Ð·Ð¾Ð²Ðµ викориÑÑ‚Ð°Ð½Ð½Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ й того-ж порту у вхідних та вихідних транÑпортах. Глобального Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñлідовного приÑтрою не здійÑнюєтьÑÑ Ñƒ зв'Ñзку із неоднозначніÑтю цього процеÑу на ÑиÑтемному рівні, а багаторазове викориÑÑ‚Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶Ðµ призвеÑти до непередбачуваних та Ñкладно-вловимих проблем. При потребі організації локального поÑлідовного каналу з парою пов'Ñзаних портів рекомендуєтьÑÑ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñтовувати команду <span style="border: solid gray 1px; padding: 1px; font-family: monospace; font-size: 1.2em; white-space: nowrap;">socat -d -d pty,raw,echo=0,perm=0666 pty,raw,echo=0,perm=0666</span>. </p> <div class="toc" id="toc"><div id="toctitle"><h2>Contents</h2></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#.D0.92.D1.85.D1.96.D0.B4.D0.BD.D1.96_.D1.82.D1.80.D0.B0.D0.BD.D1.81.D0.BF.D0.BE.D1.80.D1.82.D0.B8"><span class="tocnumber">1</span> <span class="toctext">Вхідні транÑпорти</span></a></li> <li class="toclevel-1 tocsection-2"><a href="#.D0.92.D0.B8.D1.85.D1.96.D0.B4.D0.BD.D1.96_.D1.82.D1.80.D0.B0.D0.BD.D1.81.D0.BF.D0.BE.D1.80.D1.82.D0.B8"><span class="tocnumber">2</span> <span class="toctext">Вихідні транÑпорти</span></a></li> <li class="toclevel-1 tocsection-3"><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</span> <span class="toctext">API кориÑтувацького програмуваннÑ</span></a></li> <li class="toclevel-1 tocsection-4"><a href="#.D0.97.D0.B0.D1.83.D0.B2.D0.B0.D0.B6.D0.B5.D0.BD.D0.BD.D1.8F"><span class="tocnumber">4</span> <span class="toctext"><span>ЗауваженнÑ</span></span></a> <ul> <li class="toclevel-2 tocsection-5"><a href="#.D0.92.D1.96.D1.80.D1.82.D1.83.D0.B0.D0.BB.D1.8C.D0.BD.D1.96.2F.D0.BB.D0.BE.D0.BA.D0.B0.D0.BB.D1.8C.D0.BD.D1.96_.D0.BF.D0.BE.D1.81.D0.BB.D1.96.D0.B4.D0.BE.D0.B2.D0.BD.D1.96_.D1.96.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D0.B8"><span class="tocnumber">4.1</span> <span class="toctext">Віртуальні/локальні поÑлідовні інтерфейÑи</span></a></li> <li class="toclevel-2 tocsection-6"><a href="#.D0.9F.D0.B5.D1.80.D0.B5.D0.BA.D0.B8.D0.B4.D0.B0.D0.BD.D0.BD.D1.8F_.D0.BF.D0.BE.D1.81.D0.BB.D1.96.D0.B4.D0.BE.D0.B2.D0.BD.D0.BE.D0.B3.D0.BE_.D1.96.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D1.83_.D1.87.D0.B5.D1.80.D0.B5.D0.B7_.D0.BC.D0.B5.D1.80.D0.B5.D0.B6.D1.83_Ethernet"><span class="tocnumber">4.2</span> <span class="toctext">ÐŸÐµÑ€ÐµÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð¾Ñлідовного інтерфейÑу через мережу Ethernet</span></a></li> </ul> </li> </ul> </div> <h2><span class="mw-headline" id=".D0.92.D1.85.D1.96.D0.B4.D0.BD.D1.96_.D1.82.D1.80.D0.B0.D0.BD.D1.81.D0.BF.D0.BE.D1.80.D1.82.D0.B8"><span class="mw-headline-number">1</span> Вхідні транÑпорти</span></h2> <p>Сконфігурований та запущений вхідний транÑпорт відкриває порт поÑлідовного інтерфейÑу Ð´Ð»Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñ–Ð² клієнтів. Кожний вхідний Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¾Ð±Ð¾Ð²'Ñзково пов'ÑзуєтьÑÑ Ð· одним із доÑтупних транÑпортних протоколів, до Ñкого передаютьÑÑ Ð²Ñ…Ñ–Ð´Ð½Ñ– повідомленнÑ. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:791px;"><a class="image" href="http://oscada.org/wiki/File:Serial_in_uk.png"><img class="thumbimage" height="1150" src="../files/Serial_in_uk.png" width="789" /></a> <div class="thumbcaption">РиÑ.1. Загальні діалоги конфігурації вхідного поÑлідовного інтерфейÑу.</div></div></div></div> <p>За допомогою оÑновного діалогу можна вÑтановити: </p> <ul><li> Стан транÑпорту, а Ñаме: ÑтатуÑ, "ПідключеннÑ" та ім'Ñ Ð‘Ð”, Ñка міÑтить конфігурацію.</li> <li> Ідентифікатор, ім'Ñ Ñ‚Ð° Ð¾Ð¿Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ñпорту.</li> <li> ÐдреÑа інтерфейÑу у форматі Ñ€Ñдка: "<b>{dev}[:{spd}[:{format}[:{opts}[:{mdm}]]]]</b>", де: <ul><li> <i>dev</i> — адреÑа поÑлідовного приÑтрою (/dev/ttyS0);</li> <li> <i>spd</i> — швидкіÑть поÑлідовного приÑтрою із Ñ€Ñду: 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000 або 921600;</li> <li> <i>format</i> — формат аÑинхронних даних "<b>{розмір}{парніÑть}{Ñтоп}</b>" (8N1, 7E1, 5O2, ...);</li> <li> <i>opts</i> — різноманітні параметри, переважно Ð´Ð»Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ¾Ð¼, поділені Ñимволом ',': <ul><li> "[-]h" — апаратне (CRTSCTS);</li> <li> "[-]s" — програмне (IXON|IXOFF);</li> <li> "rts" — викориÑÑ‚Ð°Ð½Ð½Ñ RTS Ñигналу Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ–(false) та перевірки на луну, Ð´Ð»Ñ Ñирого RS-485;</li> <li> "rts1" — викориÑÑ‚Ð°Ð½Ð½Ñ RTS Ñигналу Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ–(true) та перевірки на луну, Ð´Ð»Ñ Ñирого RS-485;</li> <li> "rtsne" — викориÑÑ‚Ð°Ð½Ð½Ñ RTS Ñигналу Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ–(false) без перевірки на луну, Ð´Ð»Ñ Ñирого RS-485;</li> <li> "rts1ne" — викориÑÑ‚Ð°Ð½Ð½Ñ RTS Ñигналу Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ–(true) без перевірки на луну, Ð´Ð»Ñ Ñирого RS-485; </li> <li> "[-]RS485" — викориÑтовувати RS-485 режим, за поÑередництвом TIOCSRS485.</li></ul></li> <li> <i>mdm</i> — режим модему, Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ 'RING'.</li></ul></li> <li> Вибір транÑпортних протоколів.</li> <li> Стан "ПідключеннÑ", у Ñкий переводити транÑпорт при завантажені. </li></ul> <p>За допомогою додаткового діалогу можна вÑтановити: </p> <ul><li> Інтервали чаÑу інтерфейÑу у форматі Ñ€Ñдка: "<b>{symbol}:{frm}[::{rtsDelay1}:{rtsDelay2}]</b>", де: <ul><li> <i>symbol</i> — Ñ‡Ð°Ñ Ñимволу у міліÑекундах, викориÑтовуєтьÑÑ Ð´Ð»Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŽ факту Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ„Ñ€ÐµÐ¹Ð¼Ñƒ;</li> <li> <i>frm</i> — макÑимальний Ñ‡Ð°Ñ Ñ„Ñ€ÐµÐ¹Ð¼Ñƒ у міліÑекундах, викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð¾Ð±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ð¼Ð°ÐºÑимального розміру пакету запиту — фрейму;</li> <li> <i>rtsDelay1</i> — затримка між включеннÑм передавача Ñигналом RTS та початком передачі, у міліÑекундах;</li> <li> <i>rtsDelay2</i> — затримка між закінченнÑм передачі та відключеннÑм передавача Ñигналом RTS, у міліÑекундах.</li></ul></li> <li> Пріоритет задачі вхідного потоку.</li> <li> [MODEM] Параметри модему. Цей режим включаєтьÑÑ Ð¿'Ñтим параметром адреÑи та передбачає Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð·Ð²Ñ–Ð½ÐºÐ° від віддаленого модему (запит "RING"), відповіді на дзвінок (команда "ATA") та наÑтупної передачі запитів від віддаленої Ñтанції до транÑпортного протоколу. Ð’Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ ÑеанÑу зв'Ñзку здійÑнюєтьÑÑ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ñ‚Ð¾Ñ€Ð¾Ð¼ з'Ñ”Ð´Ð½Ð°Ð½Ð½Ñ Ñ‚Ð° призводить до Ð¿ÐµÑ€ÐµÐ¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð´ÐµÐ¼Ñƒ приймача на Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð¾Ð²Ð¸Ñ… дзвінків. <ul><li> Ð§Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ (таймаут) модему на запит, у Ñекундах.</li> <li> Витримка чаÑу перед ініціалізацією модему, в Ñекундах.</li> <li> Витримка чаÑу піÑÐ»Ñ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— модема, в Ñекундах.</li> <li> Перший Ñ€Ñдок ініціалізації (зазвичай міÑтить команду ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ модему "ATZ").</li> <li> Другий Ñ€Ñдок ініціалізації.</li> <li> Ð Ñдок результату ініціалізації модему (зазвичай "OK"), Ñким відповідає модем на ініціалізацію та Ñкого треба очікувати.</li> <li> Запит дзвінка (зазвичай "RING"), Ñкий надÑилає модем у випадку Ð½Ð°Ð´Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¾Ð³Ð¾ виклику.</li> <li> Відповідь на дзвоник (зазвичай "ATA"), Ñкий надÑилаєтьÑÑ Ð¼Ð¾Ð´ÐµÐ¼Ñƒ Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ñ– на дзвінок.</li> <li> Ð Ñдок результату на відповідь на дзвінок (зазвичай "CONNECT"), Ñким відповідає модем на команду відповіді та Ñку треба очікувати.</li></ul></li> <li> Специфічні до протоколу кориÑтувацькі параметри.</li> <li> Скинути уÑÑ– додаткові параметри до типових значень та очиÑтити Ñпецифічні до протоколу кориÑтувацькі параметри.</li></ul> <h2><span class="mw-headline" id=".D0.92.D0.B8.D1.85.D1.96.D0.B4.D0.BD.D1.96_.D1.82.D1.80.D0.B0.D0.BD.D1.81.D0.BF.D0.BE.D1.80.D1.82.D0.B8"><span class="mw-headline-number">2</span> Вихідні транÑпорти</span></h2> <p>Сконфігурований та виконуваний вихідний транÑпорт відкриває порт поÑлідовного інтерфейÑу Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²ÐºÐ¸ запитів через нього. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:791px;"><a class="image" href="http://oscada.org/wiki/File:Serial_out_uk.png"><img class="thumbimage" height="1275" src="../files/Serial_out_uk.png" width="789" /></a> <div class="thumbcaption">РиÑ.2. Загальні діалоги конфігурації вихідного поÑлідовного інтерфейÑу.</div></div></div></div> <p>За допомогою оÑновного діалогу можна вÑтановити: </p> <ul><li> Стан транÑпорту, а Ñаме: ÑтатуÑ, "ПідключеннÑ" та ім'Ñ Ð‘Ð”, Ñка міÑтить конфігурацію.</li> <li> Ідентифікатор, ім'Ñ Ñ‚Ð° Ð¾Ð¿Ð¸Ñ Ñ‚Ñ€Ð°Ð½Ñпорту.</li> <li> ÐдреÑа інтерфейÑу у форматі Ñ€Ñдка: "<b>{dev}[:{spd}[:{format}[:{opts}[:{modTel}]]]]</b>", де: <ul><li> <i>dev</i> — адреÑа поÑлідовного приÑтрою (/dev/ttyS0);</li> <li> <i>spd</i> — швидкіÑть поÑлідовного приÑтрою із Ñ€Ñду: 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 500000, 576000 або 921600;</li> <li> <i>format</i> — формат аÑинхронних даних "<b>{розмір}{парніÑть}{Ñтоп}</b>" (8N1, 7E1, 5O2, ...);</li> <li> <i>opts</i> — різноманітні параметри, переважно Ð´Ð»Ñ ÐºÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñ‚Ð¾ÐºÐ¾Ð¼, поділені Ñимволом ',': <ul><li> "[-]h" — апаратне (CRTSCTS);</li> <li> "[-]s" — програмне (IXON|IXOFF);</li> <li> "rts" — викориÑÑ‚Ð°Ð½Ð½Ñ RTS Ñигналу Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ–(false) та перевірки на луну, Ð´Ð»Ñ Ñирого RS-485;</li> <li> "rts1" — викориÑÑ‚Ð°Ð½Ð½Ñ RTS Ñигналу Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ–(true) та перевірки на луну, Ð´Ð»Ñ Ñирого RS-485;</li> <li> "rtsne" — викориÑÑ‚Ð°Ð½Ð½Ñ RTS Ñигналу Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ–(false) без перевірки на луну, Ð´Ð»Ñ Ñирого RS-485;</li> <li> "rts1ne" — викориÑÑ‚Ð°Ð½Ð½Ñ RTS Ñигналу Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ–(true) без перевірки на луну, Ð´Ð»Ñ Ñирого RS-485;</li> <li> "[-]RS485" — викориÑтовувати RS-485 режим, за поÑередництвом TIOCSRS485.</li></ul></li> <li> <i>modTel</i> — телефон модему, приÑутніÑть цього Ð¿Ð¾Ð»Ñ Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ñ” транÑпорт на роботу у режимі модему.</li></ul></li></ul> <p>За допомогою додаткового діалогу можна вÑтановити: </p> <ul><li> Інтервали чаÑу інтерфейÑу у форматі Ñ€Ñдка: "<b>{conn}:{symbol}[-{NextReqMult}][:{KeepAliveTm}[:{rtsDelay1}:{rtsDelay2}]]</b>", де: <ul><li> <i>conn</i> — макÑимальний Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ð´Ñ– підключеннÑ, у міліÑекундах — тобто відповіді від віддаленого приÑтрою;</li> <li> <i>symbol</i> — макÑимальний Ñ‡Ð°Ñ Ð¾Ð´Ð½Ð¾Ð³Ð¾ Ñимволу, викориÑтовуєтьÑÑ Ð´Ð»Ñ Ð²Ð¸ÑÐ²Ð»ÐµÐ½Ð½Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ„Ñ€ÐµÐ¹Ð¼Ñƒ та таймауту наÑтупного запиту, у міліÑекундах;</li> <li> <i>NextReqMult</i> — множник чаÑу наÑтупного запиту до чаÑу Ñимволу <i>symbol</i>, 4 по замовченню;</li> <li> <i>KeepAliveTm</i> — таймаут Ð¶Ð¸Ñ‚Ñ‚Ñ Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ‚Ñ€Ð°Ð½Ñпорту, в Ñекундах; викориÑтовуйте Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ < 0 Ð´Ð»Ñ Ð·ÑƒÐ¿Ð¸Ð½ÐºÐ¸ транÑпорту піÑÐ»Ñ Ð²Ñ–Ð´ÑутноÑті відповіді на будь-Ñкий запит;</li> <li> <i>rtsDelay1</i> — затримка між включеннÑм передавача Ñигналом RTS та початком передачі, у міліÑекундах;</li> <li> <i>rtsDelay2</i> — затримка між закінченнÑм передачі та відключеннÑм передавача Ñигналом RTS, у міліÑекундах.</li></ul></li></ul> <dl><dd> Може бути пріоритетно визначено другим глобальним аргументом Ð¿Ð¾Ð»Ñ Ð°Ð´Ñ€ÐµÑи, на кшталт "<b>/dev/rfcomm0:9600||1000:40-20</b>".</dd></dl> <ul><li> Ðе відключати при обробці. Інколи Ð·Ð°ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¾Ð³Ð¾ приÑтрою може бути руйнівним, наприклад, на ПЛК LP від ICP-DAS, та Ви можете попередити це цією опцією.</li> <li> [MODEM] Параметри модему. Цей режим включаєтьÑÑ Ð½Ð°ÑвніÑтю п'Ñтого параметру адреÑи та передбачає здійÑÐ½ÐµÐ½Ð½Ñ Ð´Ð·Ð²Ñ–Ð½ÐºÐ° за телефоном, вказаним цим параметром, на момент запуÑку транÑпорту. ПіÑÐ»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð²'Ñзку з віддаленим модемом вÑÑ– запити передачі ÑпрÑмовуютьÑÑ Ñтанції за віддаленим модемом. Ð’Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ ÑеанÑу зв'Ñзку, із зупинкою транÑпорту, здійÑнюєтьÑÑ Ð·Ð° таймаутом активноÑті. <ul><li> Ð§Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ (таймаут) модема на запити, в Ñекундах.</li> <li> Ð§Ð°Ñ Ð¶Ð¸Ñ‚Ñ‚Ñ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ, в Ñекундах. Якщо протÑгом цього чаÑу буде відÑÑƒÑ‚Ð½Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð° даних через транÑпорт, то Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð±ÑƒÐ´Ðµ розірвано.</li> <li> Витримка чаÑу перед ініціалізацією модема, в Ñекундах.</li> <li> Витримка чаÑу піÑÐ»Ñ Ñ–Ð½Ñ–Ñ†Ñ–Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— модему, в Ñекундах.</li> <li> Перший Ñ€Ñдок ініціалізації (зазвичай міÑтить команду ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ модему "ATZ").</li> <li> Другий Ñ€Ñдок ініціалізації.</li> <li> Ð Ñдок результату ініціалізації модему (зазвичай "OK"), Ñким відповідає модем на ініціалізацію та Ñкого треба очікувати.</li> <li> Ð Ñдок додзвону до віддаленого модему (зазвичай "ATDT"). При додзвоні номер телефону додаєтьÑÑ Ð´Ð¾ даного префікÑу.</li> <li> Ð Ñдок результату вдалого Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ (зазвичай "CONNECT").</li> <li> Ð Ñдок результату зайнÑтоÑті лінії (зазвичай "BUSY").</li> <li> Ð Ñдок результату відÑутноÑті неÑущої в лінії (зазвичай "NO CARRIER").</li> <li> Ð Ñдок результату відÑутноÑті гудка лінії (зазвичай "NO DIALTONE").</li> <li> Ð Ñдок виходу з режиму даних (зазвичай "+++") та викориÑтовуєтьÑÑ "Ð§Ð°Ñ Ð¿ÐµÑ€ÐµÐ´ ініціалізацією модему", піÑÐ»Ñ Ð½ÐµÑ—.</li> <li> Команда повіÑити трубку (зазвичай "+++ATH"). Ð¦Ñ ÐºÐ¾Ð¼Ð°Ð½Ð´Ð° викликаєтьÑÑ Ð·Ð°Ð²Ð¶Ð´Ð¸, коли потрібно розірвати підключеннÑ.</li> <li> Ð Ñдок результату команди повіÑити трубку (зазвичай "OK"), Ñким відповідає модем на команду та Ñкий треба очікувати.</li></ul></li> <li> Специфічні до протоколу кориÑтувацькі параметри.</li> <li> Скинути уÑÑ– додаткові параметри до типових значень та очиÑтити Ñпецифічні до протоколу кориÑтувацькі параметри.</li></ul> <p>ТранÑпорт може працювати з апаратною шиною I2С, Ñкщо у ÑкоÑті приÑтрою обрати "/dev/i2c-{N}" та шина дозволить вÑтановити адреÑу підлеглого приÑтрою командою I2C_SLAVE, із <b>першого байту запиту</b>. ШвидкіÑть та формат не відіграють ролі в цьому режимі. Із таймаутів тут фактично працює тільки Ñ‡Ð°Ñ Ñимволу Ñ– переважно Ð´Ð»Ñ Ñ€Ð¾Ð·Ñ€Ð°Ñ…ÑƒÐ½ÐºÑƒ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð²Ñ‚Ð¾Ñ€Ñƒ запиту. </p> <h2><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</span> API кориÑтувацького програмуваннÑ</span></h2> <p><b>Об'єкт "Вихідний транÑпорт" (SYS.Transport.Serial.out_{OutTransport})</b> </p> <ul><li> <i>bool TS( bool rts = EVAL )</i> — керує відправкою, за поÑередництвом вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð¿Ð¸Ñ‚Ñƒ <i>rts</i>, та повертає Ñтан дозволу CTS.</li> <li> <i>bool DR( bool dtr = EVAL )</i> — керує готовніÑтю приÑтрою, за поÑередництвом вÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð³Ð¾Ñ‚Ð¾Ð²Ð½Ð¾Ñті терміналу <i>dtr</i>, та повертає Ñтан готовноÑті DSR.</li> <li> <i>bool DCD()</i> — Ñтан виÑÐ²Ð»ÐµÐ½Ð½Ñ Ð½ÐµÑущої даних.</li> <li> <i>bool RI()</i> — індикатор дзвінка.</li> <li> <i>int sendbreak( int duration = 0 )</i> — надÑилає до потоку Ð¿ÐµÑ€ÐµÑ€Ð¸Ð²Ð°Ð½Ð½Ñ Ð½ÑƒÐ»Ñми протÑгом <i>duration</i> (0 — деÑкий інтервал по замовченню).</li></ul> <h2><span class="mw-headline" id=".D0.97.D0.B0.D1.83.D0.B2.D0.B0.D0.B6.D0.B5.D0.BD.D0.BD.D1.8F"><span class="mw-headline-number">4</span> <span id="Notes" title="#Notes">ЗауваженнÑ</span></span></h2> <p>Комунікації через поÑлідовні інтерфейÑи мають низку оÑобливоÑтей. Ðайбільш важливою оÑобливіÑтю Ñ” критерій Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ‚Ð° Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ критерію. У одних протоколах таким критерієм виÑтупає ознака Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ вказаний розмір повідомленнÑ. Ð’ інших протоколах таким критерієм Ñ” відÑутніÑть даних у вхідному потоці протÑгом вказаного чаÑу — Ñ‡Ð°Ñ Ñимволу. У обох випадках Ñ‡Ð°Ñ Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐºÑ€Ð¸Ñ‚ÐµÑ€Ñ–ÑŽ, або Ñимволу, Ñ” ключовим та Ñильно впливає на загальний Ñ‡Ð°Ñ Ð¾Ð±Ð¼Ñ–Ð½Ñƒ Ñ– ціліÑніÑть даних. Відповідно, чим менше цей Ñ‡Ð°Ñ Ñ‚Ð¸Ð¼ краще, Ñкщо відÑутні втрати хвоÑта даних. Тут Ñ– виникає проблема латентноÑті Ð¾Ð±Ð»Ð°Ð´Ð½Ð°Ð½Ð½Ñ Ñ‚Ð° його драйверів. </p><p>Перевірити латентніÑть каналу обміну, тим Ñамим оптимально налаштувати Ñ‡Ð°Ñ Ð´Ð¾Ð¾Ñ‡Ñ–ÐºÑƒÐ²Ð°Ð½Ð½Ñ-Ñимволу, можна за допомогою інтерфейÑу вкладки "Запит" вихідного транÑпорту. Ð”Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ потрібно вказати зразковий запит відповідного протоколу, вказати "Очікувати таймаут", надіÑлати запит та проконтролювати його ціліÑніÑть. Ð”Ð»Ñ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð±Ñ–Ð»ÑŒÑˆ репрезентативного результату треба запит повторити декілька разів. Якщо ÑпоÑтерігаєтьÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð½ÐµÐ¿Ð¾Ð²Ð½Ð¸Ñ… відповідей, то Ñ‡Ð°Ñ Ñимволу треба збільшити, інакше можна зменшити. </p><p>Ðа вбудованому обладнані поÑлідовних інтерфейÑів RS232/422/485 можна добитиÑÑ Ð½Ð¸Ð·ÑŒÐºÐ¾Ð³Ð¾ Ñ€Ñ–Ð²Ð½Ñ Ð»Ð°Ñ‚ÐµÐ½Ñ‚Ð½Ð¾Ñті — впритул до одиниць міліÑекунд. Однак, на виÑоко-навантажених ÑиÑтемах з безліччю задач у пріоритеті реального чаÑу, латентніÑть може Ñтати недетермінованою, у зв'Ñзку з виконаннÑм потоку обÑÐ»ÑƒÐ³Ð¾Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ð¾Ð´Ñ–Ð¹ Ñдра Linux у низькому пріоритеті. Ð”Ð»Ñ Ð²Ð¸Ñ€Ñ–ÑˆÐµÐ½Ð½Ñ Ñ†Ñ–Ñ”Ñ— проблеми треба вÑтановити виÑокий пріоритет цим потокам, що можна здійÑнити за допомогою Ñкрипту, поміÑтивши його, наприклад, у "/etc/rc.local": </p> <div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="c">#!/bin/sh</span> <span class="c"># Setting the high priority for events kernel threads to rise the serial interfaces reaction</span> <span class="nv">events</span><span class="o">=</span><span class="sb">`</span>ps -Ao pid,comm <span class="p">|</span> sed -n <span class="s1">'/[ ]*\([^ ]\)[ ]*events\/[0-9]/s//\1/p'</span><span class="sb">`</span> <span class="k">for</span> ie in <span class="nv">$events</span><span class="p">;</span> <span class="k">do</span> chrt -pr <span class="m">21</span> <span class="nv">$ie</span> <span class="k">done</span> </pre></div> <p>Цей Ñкрипт не має ÑенÑу Ð´Ð»Ñ Ñдер Linux реального чаÑу, з патчем PREEMPT_RT, оÑкільки вÑÑ– потоки переривань та повідомлень там вже запуÑкаютьÑÑ Ñƒ пріоритеті реального чаÑу. </p><p>Ðа зовнішньому обладнані поÑлідовних інтерфейÑів, наприклад, у перетворювачах USB->RS232/422/485, може виникнути проблема виÑокої латентноÑті, пов'Ñзана з оÑобливіÑтю апаратної реалізації або його драйверу. Вирішувати цю проблему треба шлÑхом Ð²Ð¸Ð²Ñ‡ÐµÐ½Ð½Ñ Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½ÑŒ цього Ð¾Ð±Ð»Ð°Ð´Ð½Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ вÑтановленнÑм більшого чаÑу очікуваннÑ-Ñимволу! </p><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> Ðа ринку зуÑтрічаютьÑÑ USB->Serial перетворювачі, Ñкі працюють тільки з терміналами, тобто вони можуть передавати та опрацьовувати виключно ASCII Ñимволи та не можуть бути переключені у бінарний режим. Відомі екземплÑри таких перетворювачів: PL2303TA (Y-105). </p> <h3><span class="mw-headline" id=".D0.92.D1.96.D1.80.D1.82.D1.83.D0.B0.D0.BB.D1.8C.D0.BD.D1.96.2F.D0.BB.D0.BE.D0.BA.D0.B0.D0.BB.D1.8C.D0.BD.D1.96_.D0.BF.D0.BE.D1.81.D0.BB.D1.96.D0.B4.D0.BE.D0.B2.D0.BD.D1.96_.D1.96.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D0.B8"><span class="mw-headline-number">4.1</span> Віртуальні/локальні поÑлідовні інтерфейÑи</span></h3> <p>ЧаÑто Ð´Ð»Ñ Ð»Ð¾ÐºÐ°Ð»ÑŒÐ½Ð¾Ñ— перевірки, без фізичного обладнаннÑ, потрібна пара портів підключених у одну мережу. Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð°ÐºÐ¸Ñ… портів та Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð±Ð°Ð³Ð°Ñ‚ÑŒÐ¾Ñ… інших операцій над поÑлідовним потоком дозволÑÑ” виконувати утиліта <b>socat</b>. Ðаприклад, Ð´Ð»Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð´Ð²Ð¾Ñ… пов'Ñзаних портів треба виконати команду, Ñка Ñтворить Ñ—Ñ… та повідомить адреÑи: </p> <div class="mw-highlight mw-content-ltr" dir="ltr"><pre>socat -d -d pty,raw,echo<span class="o">=</span>0,perm<span class="o">=</span><span class="m">0666</span> pty,raw,echo<span class="o">=</span>0,perm<span class="o">=</span>0666 <span class="c">#2013/07/02 16:37:29 socat[10402] N PTY is /dev/pts/6</span> <span class="c">#2013/07/02 16:37:30 socat[10402] N PTY is /dev/pts/7</span> <span class="c">#2013/07/02 16:37:30 socat[10402] N starting data transfer loop with FDs [3,3] and [5,5]</span> </pre></div> <h3><span class="mw-headline" id=".D0.9F.D0.B5.D1.80.D0.B5.D0.BA.D0.B8.D0.B4.D0.B0.D0.BD.D0.BD.D1.8F_.D0.BF.D0.BE.D1.81.D0.BB.D1.96.D0.B4.D0.BE.D0.B2.D0.BD.D0.BE.D0.B3.D0.BE_.D1.96.D0.BD.D1.82.D0.B5.D1.80.D1.84.D0.B5.D0.B9.D1.81.D1.83_.D1.87.D0.B5.D1.80.D0.B5.D0.B7_.D0.BC.D0.B5.D1.80.D0.B5.D0.B6.D1.83_Ethernet"><span class="mw-headline-number">4.2</span> ÐŸÐµÑ€ÐµÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð¾Ñлідовного інтерфейÑу через мережу Ethernet</span></h3> <p>У деÑких випадках буває кориÑним перекинути порт поÑлідовного інтерфейÑу віддаленої машини на локальний порт, наприклад, Ð´Ð»Ñ Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸Ñтроїв, підключених до поÑлідовного інтерфейÑу віддаленої машини. ЗвіÑно, Ñкщо вÑтановити на віддалену машину OpenSCADA у конфігурації ПЛК, то можна буде одразу виконувати обробку цих даних, попереднє буферуваннÑ/Ð°Ñ€Ñ…Ñ–Ð²ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ð° інше, але інколи Ð¾Ð±Ð»Ð°Ð´Ð½Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶Ðµ бути Ñкладним Ð´Ð»Ñ Ð·Ð°Ð¿ÑƒÑку OpenSCADA, де й Ñ€Ñтує можливіÑть Ð¿ÐµÑ€ÐµÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð¾Ñлідовного потоку через мережу. Ð”Ð»Ñ Ð²Ð¸Ñ€Ñ–ÑˆÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ Ð·Ð°Ð²Ð´Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð° ÑкориÑтатиÑÑ Ñ‚Ñ–Ñ”ÑŽ-ж утилітою <b>socat</b> або <b>remserial</b>, <b>ser2net</b>, Ñку вдаÑтьÑÑ Ð·Ñ–Ð±Ñ€Ð°Ñ‚Ð¸ та запуÑтити на віддаленій машині. Приклади Ð¿ÐµÑ€ÐµÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð¾Ñлідовного порту: </p> <div class="mw-highlight mw-content-ltr" dir="ltr"><pre><span class="c"># Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñокету на порту 5555 віддаленої машини, Ð´Ð»Ñ Ð¿Ð¾Ñ€Ñ‚Ñƒ /dev/ttyS0</span> socat tcp-l:5555,reuseaddr,fork file:/dev/ttyS0,raw <span class="c"># ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð´Ð¾ Ñокету віддзеркаленого порту віддаленої машини та Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ віддзеркаленого локального інтерфейÑу</span> socat -d -d pty,raw,echo<span class="o">=</span>0,perm<span class="o">=</span><span class="m">0666</span> tcp:192.168.2.4:5555,mss<span class="o">=</span>1400 <span class="c">#2013/07/04 10:09:09 socat[12947] N PTY is /dev/pts/4</span> <span class="c">#2013/07/04 10:09:09 socat[12947] N opening connection to AF=2 192.168.2.4:5555</span> <span class="c">#2013/07/04 10:09:09 socat[12947] N successfully connected from local address AF=2 192.168.2.61:33493</span> <span class="c">#2013/07/04 10:09:09 socat[12947] N starting data transfer loop with FDs [3,3] and [5,5]</span> </pre></div> <p>У випадку з "socat", а можливо й інших утиліт, можна на клієнтÑькому боці опуÑтити запуÑк драйверу EthernetTCP->Serial та підключатиÑÑ Ñ–Ð· OpenSCADA прÑмо на TCP-порт віддаленого приÑтрою. </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> У роботі через драйвер EthernetTCP->Serial Ñ” оÑобливіÑть, Ñка пов'Ñзана із наÑвніÑтю двох таймаутів підключеннÑ: один у драйвері та інший у <a href="../Modules/Sockets.html" title="Special:MyLanguage/Modules/Sockets">Transport.Sockets</a>. Важливо щоб Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñ†ÑŒÐ¾Ð³Ð¾ таймауту у <a href="../Modules/Sockets.html" title="Special:MyLanguage/Modules/Sockets">Transport.Sockets</a> було більше ніж у драйвері інакше можливий зÑув та Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ð·Ð°Ð¿Ñ–Ð·Ð½Ñ–Ð»Ð¸Ñ… відповідей від попередніх запитів. </p><p>Багато виробників промиÑлового комунікаційного Ð¾Ð±Ð»Ð°Ð´Ð½Ð°Ð½Ð½Ñ Ð²Ð¸Ð¿ÑƒÑкають готові конвертери із Ethernet у RS-232/422/485, Ñкі можуть викориÑтовуватиÑÑ Ð· OpenSCADA таким-же чином. Коментарі та перелік перетворювачів з Ñкими роботу OpenSCADA перевірено: </p> <ul><li> <a class="external text" href="http://www.icpdas.com" rel="nofollow noreferrer noopener" target="_blank">ICP DAS</a>: <a class="external text" href="http://www.icpdas.com/products/Industrial/pds/tds-700.htm" rel="nofollow noreferrer noopener" target="_blank">tDS-7xx</a> — налаштовуєтьÑÑ Ñ‡ÐµÑ€ÐµÐ· WEB-Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñ‚Ð° працює за прÑмим підключеннÑм до TCP-порту;</li> <li> <a class="external text" href="http://tibbo.com" rel="nofollow noreferrer noopener" target="_blank">Tibbo</a>: <a class="external text" href="http://tibbo.com/products/controllers/ds100.html" rel="nofollow noreferrer noopener" target="_blank">DS100</a> — <span style="color: red">налаштовуєтьÑÑ Ñ‚Ñ–Ð»ÑŒÐºÐ¸ через програму Ð´Ð»Ñ MS Windows®</span>, надає влаÑний драйвер Ð´Ð»Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–Ñ€Ñ‚ÑƒÐ°Ð»ÑŒÐ½Ð¸Ñ… поÑлідовних інтерфейÑів на Linux, працює за прÑмим підключеннÑм до TCP-порту.</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/Serial/uk">Modules/Serial/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>