<?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'> <html class="client-nojs" dir="ltr" lang="en"> <head> <meta charset="UTF-8" /> <title>Бібліотеки/ÐизькоРівневіПриÑтрої - OpenSCADAWiki</title> <meta content="MediaWiki 1.26.4" name="generator" /> <link href="https://www.gnu.org/copyleft/fdl.html" rel="copyright" /> <link href="../en/files/doc.css" rel="stylesheet" /></head> <body><div class="floatright"><a href="index.html"><img alt="OpenSCADA" src="../en/files/index.png" /></a></div><div id="mw_header"> <div class="mw-indicators"> </div> <h1 id="firstHeading" lang="uk">Бібліотеки/ÐизькоРівневіПриÑтрої</h1> </div><div class="mw-content-ltr" dir="ltr" id="mw-content-text" lang="uk"><div class="mw-pt-translate-header noprint" dir="ltr" lang="en">This page is a <span class="plainlinks"><a class="external text" href="http://oscada.org/wiki/index.php?title=Special:Translate&group=page-Libs%2FLowLevelDevices&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/Libs/LowLevelDevices" title="Libs/LowLevelDevices">Libs/LowLevelDevices</a> and the translation is 50% 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/Libs_LowLevelDevices.html" title="Libs/LowLevelDevices (100% translated)">English</a> • ‎<a class="mw-pt-progress mw-pt-progress--stub" href="../ru/Libs_LowLevelDevices.html" title="Библиотеки/ÐизкоУровневыеУÑтройÑтва (11% translated)">mRussian</a> • ‎<span class="mw-pt-languages-selected mw-pt-progress mw-pt-progress--med">УкраїнÑька</span></div></div> <table class="wikitable"> <tr> <th> Ðазва </th> <th> ВерÑÑ–Ñ </th> <th> Ð›Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ </th> <th> Джерело </th> <th> Мови </th> <th> Ðвтор </th> <th> ÐžÐ¿Ð¸Ñ </th></tr> <tr> <td> <a href="Libs_LowLevelDevices.html" title="Special:MyLanguage/Libs/LowLevelDevices">Бібліотека низькорівневих ÑенÑорів та чипів</a> </td> <td> 1.6 </td> <td> GPLv2 </td> <td> OscadaLibs.db (<a class="external text" href="http://oscada.org/svn/trunk/OpenSCADA/data/LibsDB/OscadaLibs.sql" rel="nofollow noreferrer noopener" target="_blank">SQL</a>, <a class="external" href="http://oscada.org/wiki/File:OscadaLibs.db.gz" title="File:OscadaLibs.db.gz">GZip</a>) > DAQ.tmplb_LowDevLib </td> <td> en, uk, ru </td> <td> <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Роман Савоченко</a><br /> <font size="-2"><i>Ðркадій КиÑіль (2017)</i></font> </td> <td> Бібліотека шаблонів Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð´Ð¾Ñтупу до даних приÑтроїв низькорівневих шин. <ul><li> <b>ЗаÑновано</b>: Липень 2016</li> <li> <b>Початково Ñтворено:</b> у <a class="external text" href="http://wiki.oscada.org/HomePageEn/Using/APIFunctionLibs/LibUserPrtDevs" rel="nofollow noreferrer noopener" target="_blank">Ñтарій Wiki</a></li> <li> <b>ВикориÑтано:</b> <a class="external" href="http://oscada.org/wiki/Special:MyLanguage/Sub-projects/Server" title="Special:MyLanguage/Sub-projects/Server">проектами розумних будинків</a></li> <li> <b><a href="../en/To_do.html" title="Special:MyLanguage/Works/To do">Ð—Ð°Ð²Ð´Ð°Ð½Ð½Ñ (To Do)</a>:</b></li></ul> <dl><dd>- Реалізувати шаблони Ð´Ð»Ñ Ð´Ð¾Ñтупу до різних BLE Ñ– WiFi низькорівневих приÑтроїв на кшталт Розумних Ламп, Розеток, Перемикачів, ... .</dd></dl> </td></tr></table> <p>Бібліотеку приÑтроїв кориÑтувацьких протоколів Ñтворено Ð´Ð»Ñ Ð½Ð°Ð´Ð°Ð½Ð½Ñ Ð´Ð¾Ñтупу до даних приÑтроїв низькорівневих шин, із протоколом доÑтатньо проÑтим до реалізації у <a href="Modules/UserProtocol.html" title="Special:MyLanguage/Modules/UserProtocol">модулі кориÑтувацького протоколу</a> або безпоÑередньо на <a href="Modules/JavaLikeCalc.html" title="Special:MyLanguage/Modules/JavaLikeCalc">внутрішній мові подібній до Java</a>. </p><p>Ðазви елементів та Ñ—Ñ… параметрів доÑтупні на мовах: ÐнглійÑька, УкраїнÑька та mRussian. Їх вихідний код напиÑано у мово(людÑька)-незалежному режимі з викликом функції перекладу <i>tr()</i> та переклад цих повідомлень також доÑтупний ÐнглійÑькою, УкраїнÑькою та mRussian. </p><p>Ð”Ð»Ñ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð±Ñ–Ð±Ð»Ñ–Ð¾Ñ‚ÐµÐºÐ¸ до проекту Ñтанції OpenSCADA ви можете отримати файл БД Ñк: </p> <ul><li> такий що поÑтачаєтьÑÑ Ð· готовим та відповідним пакетом диÑтрибутиву Linux на кшталт "openscada-libdb-main", "openscada-LibDB.Main";</li> <li> найбільш актуальний та безпоÑередньо отриманий з <a class="external text" href="http://oscada.org/svn/trunk/OpenSCADA/data/LibsDB/OscadaLibs.sql" rel="nofollow noreferrer noopener" target="_blank">репозиторію subversion</a>, перетворений у файл БД SQLite шлÑхом:</li></ul> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 15px"><pre>wget http://oscada.org/svn/trunk/OpenSCADA/data/LibsDB/OscadaLibs.sql sqlite3 -init OscadaLibs.sql OscadaLibs.db .exit </pre></div> <ul><li> Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ <a class="external" href="http://oscada.org/wiki/File:OscadaLibs.db.gz" title="File:OscadaLibs.db.gz">прикріпленого тут</a>.</li></ul> <p>Цей отриманий файл ви надалі можете розміÑтити у теці проекту Ñтанції та Ñтворити об'єкт бази даних Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð‘Ð” "SQLite", зареєÑтрувавши файл бази даних у конфігурації. </p> <div class="toc" id="toc"><div id="toctitle"><h2>Contents</h2></div> <ul> <li class="toclevel-1"><a href="#BT:_RDTech_UM24C.2C_UM25C_.D1.82.D0.B0_UM34C_.28RDTech.29"><span class="tocnumber">1</span> <span class="toctext">BT: RDTech UM24C, UM25C та UM34C (RDTech)</span></a></li> <li class="toclevel-1"><a href="#BT:_ATORCH_UC96.2C_UD24_.28UC96.29"><span class="tocnumber">2</span> <span class="toctext">BT: ATORCH UC96, UD24 (UC96)</span></a></li> <li class="toclevel-1"><a href="#BT:_ATORCH_S1BP_.28S1BP.29"><span class="tocnumber">3</span> <span class="toctext">BT: ATORCH S1BP (S1BP)</span></a></li> <li class="toclevel-1"><a href="#1-.D0.94.D1.80.D1.96.D1.82_.281W.29"><span class="tocnumber">4</span> <span class="toctext">1-Дріт (1W)</span></a></li> <li class="toclevel-1"><a href="#I2C:_PCF8591_.28PCF8591.29"><span class="tocnumber">5</span> <span class="toctext">I2C: PCF8591 (PCF8591)</span></a></li> <li class="toclevel-1"><a href="#I2C:_PCF8574_.28PCF8574.29"><span class="tocnumber">6</span> <span class="toctext">I2C: PCF8574 (PCF8574)</span></a></li> <li class="toclevel-1"><a href="#I2C:_ADS101x.2C_ADS111x_.28ADS111x.29"><span class="tocnumber">7</span> <span class="toctext">I2C: ADS101x, ADS111x (ADS111x)</span></a></li> <li class="toclevel-1"><a href="#I2C:_MCP4725_.28MCP4725.29"><span class="tocnumber">8</span> <span class="toctext">I2C: MCP4725 (MCP4725)</span></a></li> <li class="toclevel-1"><a href="#I2C:_BMP180_.28BMP180.29"><span class="tocnumber">9</span> <span class="toctext">I2C: BMP180 (BMP180)</span></a></li> <li class="toclevel-1"><a href="#I2C:_BME280_.28BME280.29"><span class="tocnumber">10</span> <span class="toctext">I2C: BME280 (BME280)</span></a></li> <li class="toclevel-1"><a href="#I2C:_SHT3x_.28SHT3x.29"><span class="tocnumber">11</span> <span class="toctext">I2C: SHT3x (SHT3x)</span></a></li> <li class="toclevel-1"><a href="#I2C:_DS1307.2CDS3231_.28DS3231.29"><span class="tocnumber">12</span> <span class="toctext">I2C: DS1307,DS3231 (DS3231)</span></a></li> <li class="toclevel-1"><a href="#I2C:_AT24C.7B32.7C64.7D_.28AT24CXX.29"><span class="tocnumber">13</span> <span class="toctext">I2C: AT24C{32|64} (AT24CXX)</span></a></li> <li class="toclevel-1"><a href="#GPIO:_DHT11.2C22_.28DHT.29"><span class="tocnumber">14</span> <span class="toctext">GPIO: DHT11,22 (DHT)</span></a></li> <li class="toclevel-1"><a href="#GPIO:_MAX6675_.28MAX6675.29"><span class="tocnumber">15</span> <span class="toctext">GPIO: MAX6675 (MAX6675)</span></a></li> <li class="toclevel-1"><a href="#GPIO.7CI2C:_1602A.28HD44780.29_.281602A.29"><span class="tocnumber">16</span> <span class="toctext">GPIO|I2C: 1602A(HD44780) (1602A)</span></a></li> </ul> </div> <p>Ð”Ð»Ñ DAQ-шаблонів, загалом, вам треба Ñтворити предÑтавницький об'єкт приÑтрою у <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">модулі Логічного контролеру</a> та обрати відповідний шаблон із бібліотеки шаблонів. Далі, Ð´Ð»Ñ ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¾Ñ— конфігурації, дотримуйтеÑÑŒ Ñпецифіки шаблону у його оÑобиÑтому опиÑÑ–. Концепцію доÑтупу до даних через кориÑтувацький протокол можна зобразити Ñк на риÑунку 1. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:324px;"><a class="image" href="http://oscada.org/wiki/File:UserPrtDevs_concept_uk.png"><img class="thumbimage" height="275" src="files/UserPrtDevs_concept_uk.png" width="322" /></a> <div class="thumbcaption">РиÑ.1. ÐšÐ¾Ð½Ñ†ÐµÐ¿Ñ†Ñ–Ñ Ð´Ð¾Ñтупу до даних через кориÑтувацький протокол.</div></div></div></div> <p>Як можна бачити з риÑунку 1, Ð²Ð·Ð°Ñ”Ð¼Ð¾Ð´Ñ–Ñ Ð· приÑтроєм відбуваєтьÑÑ Ñ‡ÐµÑ€ÐµÐ· деÑкий транÑпорт на Ñкому вони фізично базуютьÑÑ. Запит до транÑпорту Ви можете надіÑлати: </p> <ol><li> БезпоÑередньо за допомогою функції ÑиÑтемного API OpenSCADA об'єкту транÑпорту <i><a href="User_API.html#SYSTransport" title="Special:MyLanguage/Documents/User API">string messIO( string mess, real timeOut = 0 );</a></i>, Ñкщо протоколоÑпецифічна чаÑтина дуже проÑта та дані вам потрібно лише вилучити.</li> <li> Загорнутий запит даних <i>req</i>, функцією <i><a href="User_API.html#SYSTransport" title="Special:MyLanguage/Documents/User API">int messIO( XMLNodeObj req, string prt );</a></i> та Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ <i>prt</i>, Ñкщо протокольна чаÑтина доÑтатньо Ñкладна та вже предÑтавлена у OpenSCADA.</li> <li> Загорнутий запит даних Ñпецифічний до кориÑтувача за допомогою функції <i><a href="User_API.html#SYSTransport" title="Special:MyLanguage/Documents/User API">int messIO( XMLNodeObj req, "UserProtocol" );</a></i> та реалізації <a href="Modules/UserProtocol.html" title="Special:MyLanguage/Modules/UserProtocol">кориÑтувацького протоколу</a>, Ñкщо протокольна чаÑтина доÑтатньо Ñкладна та ще відÑÑƒÑ‚Ð½Ñ Ñƒ OpenSCADA. КориÑтувач реалізує тут Ñаму протоколоÑпецифічну чаÑтину у <a href="Modules/UserProtocol.html" title="Special:MyLanguage/Modules/UserProtocol">модулі UserProtocol</a> та чаÑтину Ñпецифічну до даних у шаблоні Ð´Ð»Ñ <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">Ð¼Ð¾Ð´ÑƒÐ»Ñ Ð›Ð¾Ð³Ñ–Ñ‡Ð½Ð¾Ð³Ð¾ РівнÑ</a> або безпоÑередньо у процедурі контролеру на внутрішній мові Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ <a href="Modules/JavaLikeCalc.html" title="Special:MyLanguage/Modules/JavaLikeCalc">Ð¼Ð¾Ð´ÑƒÐ»Ñ JavaLikeCalc</a>. </li></ol> <dl><dd><dl><dd> <a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../en/files/At.png" width="22" /></a> Цей оÑтанній метод наразі розвинено до можливоÑÑ‚Ñ– Ñ„Ð¾Ñ€Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»ÑŒÐ½Ð¾Ñ— чаÑтини коду безпоÑередньо у тому-ж коді шаблону, Ñк окрема вбудована Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ñ‡ÐµÑ€ÐµÐ· виклик функції запиту першого методу, Ñкщо немає потреби повторного викориÑтаннÑ, або навіть Ñкщо така потреба Ñ” та тут має ÑÐµÐ½Ñ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð¿Ð»ÐµÐºÑного шаблону, Ñкий зможе поєднувати роль й вихідного протоколу, через його Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñ‚Ð°ÐºÐ¾Ð¶ до Ð¼Ð¾Ð´ÑƒÐ»Ñ ÐºÐ¾Ñ€Ð¸Ñтувацького протоколу. Та воно буде повніÑÑ‚ÑŽ зберігатиÑÑ Ñƒ одній бібліотеці шаблонів. </dd></dl></dd></dl> <p><a class="image" href="http://oscada.org/wiki/File:At.png"><img alt="At.png" height="22" src="../en/files/At.png" width="22" /></a> ПрÑма робота із вихідним транÑпортом функції <a href="User_API.html#SYSTransport" title="Special:MyLanguage/Documents/User API">string messIO( string mess, real timeOut = 0 );</a> не передбачає Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚Ñ€Ð°Ð½Ñпорту поза викликом цієї функції, а відтак, Ð´Ð»Ñ Ñкладних протоколів із поÑилками відповіді більш ніж у одному пакеті, що передбачає Ð¿Ñ€Ð¾Ñ†ÐµÑ "доочікуваннÑ", не можна викориÑтовувати Ñпільний транÑпорт, за Ñким можливе надÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¿Ð°ÐºÐµÑ‚Ñ–Ð² різних протоколів або навіть один, але з різних завдань (об'єктів контролерів). Відтак, Ñкщо Ñ” потреба викориÑÑ‚Ð°Ð½Ð½Ñ Ñпільного транÑпорту, то розташовуйте параметри Ð¾Ð¿Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° протоколом у одному об'єкті контролеру (завдані) або викориÑтовуйте <a href="Modules/UserProtocol.html" title="Special:MyLanguage/Modules/UserProtocol">модуль кориÑтувацького протоколу</a>, до Ñкого це Ð·Ð°ÑƒÐ²Ð°Ð¶ÐµÐ½Ð½Ñ Ð½Ðµ має ÑтоÑунку, оÑкільки він здійÑнює таке Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ процедури обробки, Ñк Ñ– решта модульних протоколів OpenSCADA. Ð”Ð»Ñ Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ñ€ÐµÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— протоколу тут ви маєте виконати та дотримуватиÑÑ Ð½Ð°Ð²ÐµÐ´ÐµÐ½Ð¸Ñ… вимог: </p> <ul><li> бути влаÑником прав або автором коду та розповÑюджувати його під будь-Ñкою вільною ліцензією, перевага надаєтьÑÑ GPL;</li> <li> приготувати та зберегти у окремому файлі БД SQLite, або Ñк текÑтовий файл, щодо: опиÑу параметрів (Ð’Ð’), коду процедури напиÑаному та відформатованому за ÑкоюÑÑŒ ÑиÑтемою;</li> <li> напиÑати короткий Ð¾Ð¿Ð¸Ñ Ñ‚Ð° інÑтрукцію Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸Ñтрою за протоколом у ÑпоÑіб Ñхожий на інші тут;</li> <li> напиÑати прÑмий запит до теми форуму "<a class="external text" href="http://oscada.org/ua/forum/topics/rozrobka_openscada/" rel="nofollow noreferrer noopener" target="_blank">Розробка OpenSCADA</a>" щодо Ñ€Ð¾Ð·Ñ‚Ð°ÑˆÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ тут, включити докази його працездатноÑÑ‚Ñ– від будь-Ñкого розробника OpenSCADA або коротке демонÑтраційне відео.</li></ul> <p><br /> </p> <table class="wikitable"> <tr> <td> <span id="RDTech" title="#RDTech"><h3><span class="mw-headline" id="BT:_RDTech_UM24C.2C_UM25C_.D1.82.D0.B0_UM34C_.28RDTech.29"><span class="mw-headline-number">1</span> BT: RDTech UM24C, UM25C та UM34C (<a href="Libs_LowLevelDevices.html#RDTech" title="Special:MyLanguage/Libs/LowLevelDevices">RDTech</a>)</span></h3></span> </td> <td> 1.1 </td> <td> GPLv2 </td> <td> * </td> <td> en,uk </td> <td> <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Роман Савоченко</a> </td></tr></table> <div class="floatright"><a class="image" href="http://oscada.org/wiki/File:LibsLowLevDevsRDTech_uk.png" title="Результат оперативного вÑтановленнÑ."><img alt="Результат оперативного вÑтановленнÑ." height="736" src="files/LibsLowLevDevsRDTech_uk.png" width="339" /></a></div> <p>Шаблон BlueTooth інтерфейÑу до RDTech UM24C/UM25C/UM34C. <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> Ðаразі перевірено лише на UM24C. </p><p>UM24C, UM25C та UM34C від RDTech (RuiDeng) Ñ” недорогими приÑтроÑми Ð²Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ…Ñ–Ð´Ð½Ð¾Ñ— потужноÑÑ‚Ñ– на USB, та вони підтримують доÑтатню колекцію влаÑтивоÑтей так Ñамо Ñк Ñ– забезпечують повний контроль через Bluetooth. Цей шаблон реалізує найбільш Ñвні команди та збір даних, Ñкі доÑтупні через Bluetooth Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ñ€Ð¸Ñтрою.<br /> <a class="image" href="http://oscada.org/wiki/File:RDTech_UM24C.jpg"><img alt="RDTech UM24C.jpg" height="262" src="../en/files/RDTech_UM24C.jpg" width="600" /></a> </p><p>Цей шаблон вперше викориÑтовує нову функцію Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ð²Ð¸Ñ…Ñ–Ð´Ð½Ð¸Ñ… транÑпортів <a href="User_API.html#SYSTransport" title="Special:MyLanguage/Documents/User API">SYS.Transport.outAt()</a> та Bluetooth Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð´Ð»Ñ Ð·Ð±Ð¾Ñ€Ñƒ даних. </p> <ul><li> <b>Загальна працеміÑткіÑÑ‚ÑŒ:</b> 0.3 <span title="людиноднів, 1 ЛД — 10 годин">ЛД<sup style="color: blue">[!]</sup></span></li> <li> <b>ПодÑки:</b> Райан Фінніє за початкове Ð¾Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ‚Ð¾ÐºÐ¾Ð»Ñƒ у <a class="external text" href="https://github.com/smandon/rdumtool" rel="nofollow noreferrer noopener" target="_blank">RDUMTOOL</a></li></ul> <p><b><u>Ð’Ð’ шаблону</u></b><br /> </p> <table class="mw-collapsible mw-collapsed wikitable sortable"> <caption style="white-space:nowrap"> </caption> <tr> <th> Ідентифікатор </th> <th> Параметр </th> <th> Тип </th> <th> Режим </th> <th> Ðтрибут </th> <th> ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ </th> <th> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </th></tr> <tr> <td> transport </td> <td> ТранÑпорт </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> КонÑтанта </td> <td> Serial.RD:/dev/rfcomm0:9600||1000:40-20 </td></tr> <tr> <td> dev </td> <td> ПриÑтрій Ð´Ð»Ñ Ð·Ð²'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ <p>Ðа кшталт "98:D3:31:F8:52:29" Ð´Ð»Ñ Ð·Ð²'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° допомогою "rfcomm bind {N} 98:D3:31:F8:52:29". </p> </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> КонÑтанта </td> <td> </td></tr> <tr> <td> V </td> <td> Вольти </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> A </td> <td> Ðмпери </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> W </td> <td> Вати </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> T </td> <td> Температура, °С </td> <td> Цілий </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> R </td> <td> Опір, Ом </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> rec </td> <td> Ð—Ð°Ð¿Ð¸Ñ </td> <td> Логічний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> recAh </td> <td> ЗапиÑ, ÐГ </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> recWh </td> <td> ЗапиÑ, ВтГ </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> recThr </td> <td> Ð—Ð°Ð¿Ð¸Ñ Ð¿Ð¾Ñ€Ñ–Ð³, Ð [0...0.3] </td> <td> Реальний </td> <td> Вхід </td> <td> Повний доÑтуп </td> <td> Змінна </td> <td> </td></tr> <tr> <td> recTm </td> <td> Ð—Ð°Ð¿Ð¸Ñ Ñ‡Ð°Ñ, Ñекунди </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> grps </td> <td> Групи </td> <td> ТекÑÑ‚ </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> grpNext </td> <td> Група наÑтупна </td> <td> Логічний </td> <td> Вхід </td> <td> Повний доÑтуп </td> <td> Змінна </td> <td> </td></tr> <tr> <td> grpClear </td> <td> Група Ð¾Ñ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ </td> <td> Логічний </td> <td> Вхід </td> <td> Повний доÑтуп </td> <td> Змінна </td> <td> </td></tr> <tr> <td> chMode </td> <td> Режим ЗарÑÐ´Ð¶ÐµÐ½Ð½Ñ </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> scr </td> <td> Екран, [0...6] </td> <td> Цілий </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> scrNext </td> <td> Екран наÑтупний </td> <td> Логічний </td> <td> Вхід </td> <td> Повний доÑтуп </td> <td> Змінна </td> <td> </td></tr> <tr> <td> scrRot </td> <td> Екран повернути </td> <td> Логічний </td> <td> Вхід </td> <td> Повний доÑтуп </td> <td> Змінна </td> <td> </td></tr> <tr> <td> scrTm </td> <td> Ð§Ð°Ñ ÐµÐºÑ€Ð°Ð½Ñƒ, хвилин [0...9] </td> <td> Цілий </td> <td> Вхід </td> <td> Повний доÑтуп </td> <td> Змінна </td> <td> </td></tr> <tr> <td> scrBright </td> <td> ЯÑкравіÑÑ‚ÑŒ екрану, [0...5] </td> <td> Цілий </td> <td> Вхід </td> <td> Повний доÑтуп </td> <td> Змінна </td> <td> </td></tr> <tr> <td> this </td> <td> Об'єкт </td> <td> Об'єкт </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> </td></tr> <tr> <td> f_stop </td> <td> Прапорець зупинки функції </td> <td> Логічний </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> 0 </td></tr> <tr> <td> f_start </td> <td> Прапорець запуÑку функції </td> <td> Логічний </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> 0 </td></tr> <tr> <td> f_err </td> <td> Помилка функції </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> 0 </td></tr> <tr> <td> f_frq </td> <td> ЧаÑтота обчиÑÐ»ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—, Гц </td> <td> Реальний </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> 1000 </td></tr></table> <div class="floatright"><a class="image" href="http://oscada.org/wiki/File:LibsLowLevDevsCfgRDTech_uk.png" title="КонфігураціÑ."><img alt="КонфігураціÑ." height="205" src="files/LibsLowLevDevsCfgRDTech_uk.png" width="370" /></a></div> <p><b><u>ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ñ‚Ð° викориÑтаннÑ</u></b><br /> </p> <dl><dd>1. ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ BlueTooth приÑтрою:</dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre>bluetoothctl <span class="c">#[bluetooth]# scan on</span> <span class="c"># Discovery started</span> <span class="c"># [NEW] Device 98:D3:31:F8:52:29 UM24C</span> <span class="c"># [CHG] Device 98:D3:31:F8:52:29 RSSI: -60</span> <span class="c">#[bluetooth]# scan off</span> <span class="c">#[bluetooth]# pair 98:D3:31:F8:52:29</span> <span class="c"># Attempting to pair with 98:D3:31:F8:52:29</span> <span class="c"># [CHG] Device 98:D3:31:F8:52:29 Connected: yes</span> <span class="c"># Request PIN code</span> <span class="c"># [UM241m[agent] Enter PIN code: 1234</span> <span class="c"># Pairing successful</span> <span class="c">#[bluetooth]# trust 98:D3:31:F8:52:29</span> <span class="c"># [CHG] Device 98:D3:31:F8:52:29 Trusted: yes</span> <span class="c"># Changing 98:D3:31:F8:52:29 trust succeeded</span> <span class="c">#[bluetooth]# exit</span> rfcomm <span class="nb">bind </span><span class="m">0</span> 98:D3:31:F8:52:29 <span class="c"># 0 тут Ð´Ð»Ñ Ð¿Ñ€Ð¸Ð²'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾ /dev/rfcomm0</span> </pre></div> <dl><dd>2. Створити та запуÑтити <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">об'єкт логічного контролеру</a> або викориÑтати будь Ñкий наÑвний із необхідними влаÑтивоÑÑ‚Ñми плануваннÑ.</dd> <dd>3. Створити <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">об'єкт логічного параметру</a> та обрати цей шаблон Ð´Ð»Ñ Ð½ÑŒÐ¾Ð³Ð¾, один Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ приÑтрою. Увімкнути параметр.</dd> <dd>4. У вкладці "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñƒ" об'єкту логічного параметру ви маєте вÑтановити: <ul><li> <i>ТранÑпорт</i> — адреÑу автоматично Ñтворюваного транÑпорту із його параметрами піÑÐ»Ñ ":", відповідно до <a href="User_API.html#SYSTransport" title="Special:MyLanguage/Documents/User API">формату адреÑи функції SYS.Transport.outAt()</a>, де адреÑа приÑтрою відповідає команді <span style="border: solid gray 1px; padding: 1px; font-family: monospace; font-size: 1.2em; white-space: nowrap;">rfcomm bind 0</span> у пункті 1.</li> <li> <i>ПриÑтрій Ð´Ð»Ñ Ð·Ð²'ÑзуваннÑ</i> — тут можна вÑтановити адреÑу Bluetooth приÑтрою у виглÑді "98:D3:31:F8:52:29" Ð´Ð»Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ команди <span style="border: solid gray 1px; padding: 1px; font-family: monospace; font-size: 1.2em; white-space: nowrap;">rfcomm bind {N} </span> при запуÑку шаблону, де <i>N</i> відповідно беретьÑÑ Ñ–Ð· адреÑи попереднього пункту.</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> Команда <b>rfcomm</b> зазвичай недоÑтупна Ð´Ð»Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ непривілейованим кориÑтувачем та Ñкщо ви вÑе-ж бажаєте викликати Ñ—Ñ— таким кориÑтувачем, то маєте вÑтановити їй ознаку <span style="border: solid gray 1px; padding: 1px; font-family: monospace; font-size: 1.2em; white-space: nowrap;">chmod u+s /usr/bin/rfcomm</span> від привілейованого кориÑтувача.</dd></dl></dd> <dd>5. РЕЗУЛЬТÐТ: Об'єкт логічного параметру здійÑнюватиме збір даних та відÑтежуватиме модифікацію запиÑуваних влаÑтивоÑтей.</dd></dl> <p><br /> </p> <table class="wikitable"> <tr> <td> <span id="UC96" title="#UC96"><h3><span class="mw-headline" id="BT:_ATORCH_UC96.2C_UD24_.28UC96.29"><span class="mw-headline-number">2</span> BT: ATORCH UC96, UD24 (<a href="Libs_LowLevelDevices.html#UC96" title="Special:MyLanguage/Libs/LowLevelDevices">UC96</a>)</span></h3></span> </td> <td> 1.2 </td> <td> GPLv2 </td> <td> * </td> <td> en,uk </td> <td> <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Роман Савоченко</a> </td></tr></table> <div class="floatright"><a class="image" href="http://oscada.org/wiki/File:LibsLowLevDevsUC96_uk.png" title="Результат оперативного вÑтановленнÑ."><img alt="Результат оперативного вÑтановленнÑ." height="565" src="files/LibsLowLevDevsUC96_uk.png" width="252" /></a></div> <p>Шаблон BlueTooth інтерфейÑу ATORCH UC96, UD24. </p><p>ATORCH UC96, UD24 Ñ” недорогим приÑтроєм Ð²Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ…Ñ–Ð´Ð½Ð¾Ñ— потужноÑÑ‚Ñ– на USB із багатьма інтерфейÑами Ñ– підтримкою доÑтатньої колекції влаÑтивоÑтей, Ñк Ñ– контролем через Bluetooth. Цей шаблон реалізує лише команду Ð¾Ñ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… Ñ– збір даних через Bluetooth Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ñ€Ð¸Ñтрою.<br /> <a class="image" href="http://oscada.org/wiki/File:ATORCH_UC96.jpg"><img alt="ATORCH UC96.jpg" height="382" src="../en/files/ATORCH_UC96.jpg" width="758" /></a> </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> <b>Загальна працеміÑткіÑÑ‚ÑŒ:</b> 0.3 <span title="людиноднів, 1 ЛД — 10 годин">ЛД<sup style="color: blue">[!]</sup></span></li></ul> <p><b><u>Ð’Ð’ шаблону</u></b><br /> </p> <table class="mw-collapsible mw-collapsed wikitable sortable"> <caption style="white-space:nowrap"> </caption> <tr> <th> Ідентифікатор </th> <th> Параметр </th> <th> Тип </th> <th> Режим </th> <th> Ðтрибут </th> <th> ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ </th> <th> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </th></tr> <tr> <td> transport </td> <td> ТранÑпорт </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> КонÑтанта </td> <td> Serial.UC96:/dev/rfcomm0:9600||1000:40-20 </td></tr> <tr> <td> dev </td> <td> ПриÑтрій Ð´Ð»Ñ Ð·Ð²'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ <p>Ðа кшталт "58:F4:04:33:D5:FD" Ð´Ð»Ñ Ð·Ð²'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° допомогою "rfcomm bind {N} 58:F4:04:33:D5:FD". </p> </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> КонÑтанта </td> <td> </td></tr> <tr> <td> noDataTm </td> <td> Ð§Ð°Ñ Ð²Ð¸ÑÐ²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÑутноÑÑ‚Ñ– даних, Ñекунд </td> <td> Цілий </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> КонÑтанта </td> <td> 60 </td></tr> <tr> <td> V </td> <td> Вольти </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> Vup </td> <td> Вольти макÑимум </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> Vdwn </td> <td> Вольти мінімум </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> A </td> <td> Ðмпери </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> W </td> <td> Вати </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> R </td> <td> Опір, Ом </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> T </td> <td> Температура, °С </td> <td> Цілий </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> Ah </td> <td> ЄмніÑÑ‚ÑŒ, Ðг </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> Wh </td> <td> ЄмніÑÑ‚ÑŒ, ВтГ </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> Tm </td> <td> ЧаÑ, Ñекунди </td> <td> Цілий </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> Dplus </td> <td> Дата+, Ð’ </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> Dminus </td> <td> Дата-, Ð’ </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> clear </td> <td> ОчиÑтити </td> <td> Логічний </td> <td> Вхід </td> <td> Повний доÑтуп </td> <td> Змінна </td> <td> </td></tr> <tr> <td> this </td> <td> Об'єкт </td> <td> Об'єкт </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> </td></tr> <tr> <td> f_start </td> <td> Прапорець запуÑку функції </td> <td> Логічний </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> 0 </td></tr> <tr> <td> f_err </td> <td> Помилка функції </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> 0 </td></tr> <tr> <td> f_frq </td> <td> ЧаÑтота обчиÑÐ»ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—, Гц </td> <td> Реальний </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> 1000 </td></tr> <tr> <td> f_stop </td> <td> Прапорець зупинки функції </td> <td> Логічний </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> 0 </td></tr></table> <div class="floatright"><a class="image" href="http://oscada.org/wiki/File:LibsLowLevDevsCfgUC96_uk.png" title="КонфігураціÑ."><img alt="КонфігураціÑ." height="258" src="files/LibsLowLevDevsCfgUC96_uk.png" width="358" /></a></div> <p><b><u>ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ñ‚Ð° викориÑтаннÑ</u></b><br /> </p> <dl><dd>1. ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ BlueTooth приÑтрою: здійÑнюєтьÑÑ Ñтандартним чином через Ð¿Ð°Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ– довіри без PIN та до UC96_SPP</dd> <dd>2. Створити та запуÑтити <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">об'єкт логічного контролеру</a> або викориÑтати будь Ñкий наÑвний із необхідними влаÑтивоÑÑ‚Ñми плануваннÑ.</dd> <dd>3. Створити <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">об'єкт логічного параметру</a> та обрати цей шаблон Ð´Ð»Ñ Ð½ÑŒÐ¾Ð³Ð¾, один Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ приÑтрою. Увімкнути параметр.</dd> <dd>4. У вкладці "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñƒ" об'єкту логічного параметру ви маєте вÑтановити: <ul><li> <i>ТранÑпорт</i> — адреÑу автоматично Ñтворюваного транÑпорту із його параметрами піÑÐ»Ñ ":", відповідно до <a href="User_API.html#SYSTransport" title="Special:MyLanguage/Documents/User API">формату адреÑи функції SYS.Transport.outAt()</a>, де адреÑа приÑтрою відповідає команді <span style="border: solid gray 1px; padding: 1px; font-family: monospace; font-size: 1.2em; white-space: nowrap;">rfcomm bind 0</span>.</li> <li> <i>ПриÑтрій Ð´Ð»Ñ Ð·Ð²'ÑзуваннÑ</i> — тут можна вÑтановити адреÑу Bluetooth приÑтрою у виглÑді "58:F4:04:33:D5:FD" Ð´Ð»Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ команди <span style="border: solid gray 1px; padding: 1px; font-family: monospace; font-size: 1.2em; white-space: nowrap;">rfcomm bind {N} </span> при запуÑку шаблону, де <i>N</i> відповідно беретьÑÑ Ñ–Ð· адреÑи попереднього пункту.</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> Команда <b>rfcomm</b> зазвичай недоÑтупна Ð´Ð»Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ непривілейованим кориÑтувачем та Ñкщо ви вÑе-ж бажаєте викликати Ñ—Ñ— таким кориÑтувачем, то маєте вÑтановити їй ознаку <span style="border: solid gray 1px; padding: 1px; font-family: monospace; font-size: 1.2em; white-space: nowrap;">chmod u+s /usr/bin/rfcomm</span> від привілейованого кориÑтувача.</dd></dl> <ul><li> <i>Ð§Ð°Ñ Ð²Ð¸ÑÐ²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÑутноÑÑ‚Ñ– даних</i> — тут ви можете вÑтановити Ñ‡Ð°Ñ Ð²Ð¸ÑÐ²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÑутноÑÑ‚Ñ– даних.</li></ul></dd> <dd>5. РЕЗУЛЬТÐТ: Об'єкт логічного параметру здійÑнюватиме збір даних та відÑтежуватиме модифікацію запиÑуваних влаÑтивоÑтей.</dd></dl> <p><br /> </p> <table class="wikitable"> <tr> <td> <span id="S1BP" title="#S1BP"><h3><span class="mw-headline" id="BT:_ATORCH_S1BP_.28S1BP.29"><span class="mw-headline-number">3</span> BT: ATORCH S1BP (<a href="Libs_LowLevelDevices.html#S1BP" title="Special:MyLanguage/Libs/LowLevelDevices">S1BP</a>)</span></h3></span> </td> <td> 1.0 </td> <td> GPLv2 </td> <td> * </td> <td> en,uk </td> <td> <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Роман Савоченко</a> </td></tr></table> <div class="floatright"><a class="image" href="http://oscada.org/wiki/File:LibsLowLevDevsS1BP_uk.png" title="Результат оперативного вÑтановленнÑ."><img alt="Результат оперативного вÑтановленнÑ." height="503" src="files/LibsLowLevDevsS1BP_uk.png" width="372" /></a></div> <p>Шаблон BlueTooth інтерфейÑу ATORCH S1BP </p><p>ATORCH S1BP Ñ” недорогим приÑтроєм Ð²Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ ÐµÐ½ÐµÑ€Ð³Ñ–Ñ— змінного Ñтруму (AC) із підтримкою доÑтатньої колекції влаÑтивоÑтей, Ñк Ñ– контролем через Bluetooth. Цей шаблон реалізує команду Ð¾Ñ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ Ð´Ð°Ð½Ð¸Ñ… Ñ– Ð¿ÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ живленнÑ, Ñк Ñ– збір даних через Bluetooth Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð¿Ñ€Ð¸Ñтрою.<br /> <a class="image" href="http://oscada.org/wiki/File:ATORCH_S1BP.jpg"><img alt="ATORCH S1BP.jpg" height="400" src="../en/files/ATORCH_S1BP.jpg" width="301" /></a> </p><p>ПриÑтрій надÑилає пакети даних не за запитом, а проÑто розÑилає із періодом у одну Ñекунду піÑÐ»Ñ Ð²ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ. </p> <ul><li> <b>Загальна працеміÑткіÑÑ‚ÑŒ:</b> 0.1 <span title="людиноднів, 1 ЛД — 10 годин">ЛД<sup style="color: blue">[!]</sup></span></li></ul> <p><b><u>Ð’Ð’ шаблону</u></b><br /> </p> <table class="mw-collapsible mw-collapsed wikitable sortable"> <caption style="white-space:nowrap"> </caption> <tr> <th> Ідентифікатор </th> <th> Параметр </th> <th> Тип </th> <th> Режим </th> <th> Ðтрибут </th> <th> ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ </th> <th> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </th></tr> <tr> <td> transport </td> <td> ТранÑпорт </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> КонÑтанта </td> <td> Serial.S1BP:/dev/rfcomm2:9600||1000:40-20 </td></tr> <tr> <td> dev </td> <td> ПриÑтрій Ð´Ð»Ñ Ð·Ð²'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ <p>Ðа кшталт "40:2B:6D:EF:48:A7" Ð´Ð»Ñ Ð·Ð²'ÑÐ·ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° допомогою "rfcomm bind {N} 40:2B:6D:EF:48:A7". </p> </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> КонÑтанта </td> <td> </td></tr> <tr> <td> noDataTm </td> <td> Ð§Ð°Ñ Ð²Ð¸ÑÐ²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÑутноÑÑ‚Ñ– даних, Ñекунд </td> <td> Цілий </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> КонÑтанта </td> <td> 60 </td></tr> <tr> <td> V </td> <td> Вольти </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> A </td> <td> Ðмпери </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> W </td> <td> Вати </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> KWh </td> <td> ЕнергіÑ, кВт*годин </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> Hz </td> <td> ЧаÑтота, Гц </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> Pf </td> <td> Фактор потужноÑÑ‚Ñ–, Pf </td> <td> Реальний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> T </td> <td> Температура, °С </td> <td> Цілий </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> Tm </td> <td> ЧаÑ, Ñекунди </td> <td> Цілий </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> clear </td> <td> ОчиÑтити </td> <td> Логічний </td> <td> Вхід </td> <td> Повний доÑтуп </td> <td> Змінна </td> <td> </td></tr> <tr> <td> power </td> <td> Перемкнути режим Ð¶Ð¸Ð²Ð»ÐµÐ½Ð½Ñ Ð’Ð¸Ð¼ÐºÐ½/Ðвто/Увімкн </td> <td> Логічний </td> <td> Вхід </td> <td> Повний доÑтуп </td> <td> Змінна </td> <td> </td></tr> <tr> <td> this </td> <td> Об'єкт </td> <td> Об'єкт </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> </td></tr> <tr> <td> f_stop </td> <td> Прапорець зупинки функції </td> <td> Логічний </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> 0 </td></tr> <tr> <td> f_start </td> <td> Прапорець запуÑку функції </td> <td> Логічний </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> 0 </td></tr> <tr> <td> f_frq </td> <td> ЧаÑтота обчиÑÐ»ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—, Гц </td> <td> Реальний </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> 1000 </td></tr> <tr> <td> f_err </td> <td> Помилка функції </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> 0 </td></tr></table> <div class="floatright"><a class="image" href="http://oscada.org/wiki/File:LibsLowLevDevsCfgS1BP_uk.png" title="КонфігураціÑ."><img alt="КонфігураціÑ." height="253" src="files/LibsLowLevDevsCfgS1BP_uk.png" width="371" /></a></div> <p><b><u>ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ñ‚Ð° викориÑтаннÑ</u></b><br /> </p> <dl><dd>1. ÐŸÑ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ BlueTooth приÑтрою: здійÑнюєтьÑÑ Ñтандартним чином через Ð¿Ð°Ñ€ÑƒÐ²Ð°Ð½Ð½Ñ Ñ– довіри без PIN та до S1BP_SPP</dd> <dd>2. Створити та запуÑтити <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">об'єкт логічного контролеру</a> або викориÑтати будь Ñкий наÑвний із необхідними влаÑтивоÑÑ‚Ñми плануваннÑ.</dd> <dd>3. Створити <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">об'єкт логічного параметру</a> та обрати цей шаблон Ð´Ð»Ñ Ð½ÑŒÐ¾Ð³Ð¾, один Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ приÑтрою. Увімкнути параметр.</dd> <dd>4. У вкладці "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñƒ" об'єкту логічного параметру ви маєте вÑтановити: <ul><li> <i>ТранÑпорт</i> — адреÑу автоматично Ñтворюваного транÑпорту із його параметрами піÑÐ»Ñ ":", відповідно до <a href="User_API.html#SYSTransport" title="Special:MyLanguage/Documents/User API">формату адреÑи функції SYS.Transport.outAt()</a>, де адреÑа приÑтрою відповідає команді <span style="border: solid gray 1px; padding: 1px; font-family: monospace; font-size: 1.2em; white-space: nowrap;">rfcomm bind 0</span>.</li> <li> <i>ПриÑтрій Ð´Ð»Ñ Ð·Ð²'ÑзуваннÑ</i> — тут можна вÑтановити адреÑу Bluetooth приÑтрою у виглÑді "58:F4:04:33:D5:FD" Ð´Ð»Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ команди <span style="border: solid gray 1px; padding: 1px; font-family: monospace; font-size: 1.2em; white-space: nowrap;">rfcomm bind {N} </span> при запуÑку шаблону, де <i>N</i> відповідно беретьÑÑ Ñ–Ð· адреÑи попереднього пункту.</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> Команда <b>rfcomm</b> зазвичай недоÑтупна Ð´Ð»Ñ Ð²Ð¸ÐºÐ»Ð¸ÐºÑƒ непривілейованим кориÑтувачем та Ñкщо ви вÑе-ж бажаєте викликати Ñ—Ñ— таким кориÑтувачем, то маєте вÑтановити їй ознаку <span style="border: solid gray 1px; padding: 1px; font-family: monospace; font-size: 1.2em; white-space: nowrap;">chmod u+s /usr/bin/rfcomm</span> від привілейованого кориÑтувача.</dd></dl> <ul><li> <i>Ð§Ð°Ñ Ð²Ð¸ÑÐ²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÑутноÑÑ‚Ñ– даних</i> — тут ви можете вÑтановити Ñ‡Ð°Ñ Ð²Ð¸ÑÐ²Ð»ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ÑутноÑÑ‚Ñ– даних.</li></ul></dd> <dd>5. РЕЗУЛЬТÐТ: Об'єкт логічного параметру здійÑнюватиме збір даних та відÑтежуватиме модифікацію запиÑуваних влаÑтивоÑтей.</dd></dl> <p><br /> </p> <table class="wikitable"> <tr> <td> <span id="1W" title="#1W"><h3><span class="mw-headline" id="1-.D0.94.D1.80.D1.96.D1.82_.281W.29"><span class="mw-headline-number">4</span> 1-Дріт (<a href="Libs_LowLevelDevices.html#1W" title="Special:MyLanguage/Libs/LowLevelDevices">1W</a>)</span></h3></span> </td> <td> 2.1 </td> <td> GPLv2 </td> <td> * </td> <td> en,uk </td> <td> <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Роман Савоченко</a> </td></tr></table> <div class="floatright"><a class="image" href="http://oscada.org/wiki/File:LibsLowLevDevs1WOp_uk.png" title="Результат оперативного вÑтановленнÑ."><img alt="Результат оперативного вÑтановленнÑ." height="740" src="files/LibsLowLevDevs1WOp_uk.png" width="279" /></a></div> <p>СенÑори <span id="1W" title="#1W">Одно Дротової</span> шини реалізуютьÑÑ 1Дротовими адаптерами DS9097, DS9097U (DS2480B) на шині RS232 Ñ– чипом DS2482-100 на шині I2C. ПідтримуєтьÑÑ Ð¿Ñ€Ñме Ñ– паразитне Ð¶Ð¸Ð²Ð»ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€Ð½Ð¸Ñ… ÑенÑорів. </p><p>ПідтримуютьÑÑ 1Дротові приÑтрої: DS1820, DS1820/DS18S20/DS1920 (не перевірено), DS1822 (не перевірено), DS2413, DS2408, DS2450, DS2438.<br /> <a class="image" href="http://oscada.org/wiki/File:Ds9097.png"><img alt="Ds9097.png" height="500" src="../en/files/Ds9097.png" width="404" /></a> </p><p><b><u>Ð’Ð’ шаблону</u></b><br /> </p> <table class="mw-collapsible mw-collapsed wikitable sortable"> <caption style="white-space:nowrap"> </caption> <tr> <th> Ідентифікатор </th> <th> Параметр </th> <th> Тип </th> <th> Режим </th> <th> Ðтрибут </th> <th> ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ </th> <th> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </th></tr> <tr> <td> transport </td> <td> ТранÑпорт </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> КонÑтанта </td> <td> 1Wire:/dev/ttyS0 </td></tr> <tr> <td> addr </td> <td> ÐдреÑа I2C драйверу <p>[24...27] - Ð´Ð»Ñ DS2482-100 </p> </td> <td> Цілий </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> КонÑтанта </td> <td> 24 </td></tr> <tr> <td> tmResc </td> <td> Період ÑкануваннÑ, Ñекунд </td> <td> Реальний </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> КонÑтанта </td> <td> 60 </td></tr> <tr> <td> onlyAddAtScan </td> <td> Додавати лише при Ñкануванні </td> <td> Логічний </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> КонÑтанта </td> <td> 0 </td></tr> <tr> <td> tryEVAL </td> <td> Спроб, піÑÐ»Ñ Ñких вÑтановлювати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ EVAL </td> <td> Цілий </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> КонÑтанта </td> <td> 3 </td></tr> <tr> <td> adapterS </td> <td> Тип виÑвленого адаптеру </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> No detected </td></tr> <tr> <td> adapter </td> <td> Код виÑвленого адаптеру </td> <td> Цілий </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> -1 </td></tr> <tr> <td> power </td> <td> ЖивленнÑ, Ð´Ð»Ñ Ñ‚ÐµÐ¼Ð¿ÐµÑ€Ð°Ñ‚ÑƒÑ€ </td> <td> Логічний </td> <td> Вхід </td> <td> Тільки Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ </td> <td> Змінна </td> <td> </td></tr> <tr> <td> isData </td> <td> У режимі даних </td> <td> Логічний </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> 0 </td></tr> <tr> <td> tr </td> <td> Вихідний транÑпорт </td> <td> Об'єкт </td> <td> Вихід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> </td></tr> <tr> <td> this </td> <td> Об'єкт </td> <td> Об'єкт </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> </td></tr> <tr> <td> f_frq </td> <td> ЧаÑтота обчиÑÐ»ÐµÐ½Ð½Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ—, Гц </td> <td> Реальний </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> 1000 </td></tr> <tr> <td> f_start </td> <td> Прапорець запуÑку функції </td> <td> Логічний </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> 0 </td></tr> <tr> <td> f_err </td> <td> Помилка функції </td> <td> Ð Ñдок </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> 0 </td></tr> <tr> <td> f_stop </td> <td> Прапорець зупинки функції </td> <td> Логічний </td> <td> Вхід </td> <td> Ðе атрибут </td> <td> Змінна </td> <td> 0 </td></tr></table> <div class="floatright"><a class="image" href="http://oscada.org/wiki/File:LibsLowLevDevs1WCfg_uk.png" title="КонфігураціÑ."><img alt="КонфігураціÑ." height="305" src="files/LibsLowLevDevs1WCfg_uk.png" width="391" /></a></div> <p><b><u>ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ Ñ‚Ð° викориÑтаннÑ</u></b><br /> </p> <dl><dd>1. Створити та запуÑтити <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">об'єкт логічного контролеру</a> або викориÑтати будь Ñкий наÑвний із необхідними влаÑтивоÑÑ‚Ñми плануваннÑ.</dd> <dd>3. Створити <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">об'єкт логічного параметру</a> та обрати цей шаблон Ð´Ð»Ñ Ð½ÑŒÐ¾Ð³Ð¾, один Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ приÑтрою. Увімкнути параметр.</dd> <dd>4. У вкладці "ÐšÐ¾Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ–Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñƒ" об'єкту логічного параметру ви маєте вÑтановити: <ul><li> <i>ТранÑпорт</i> — адреÑу автоматично Ñтворюваного транÑпорту із його параметрами піÑÐ»Ñ ":", відповідно до <a href="User_API.html#SYSTransport" title="Special:MyLanguage/Documents/User API">формату адреÑи функції SYS.Transport.outAt()</a>, де адреÑа приÑтрою відповідає поÑлідовному приÑтрою із адаптером DS9097 або I2C приÑтрою на кшталт "/dev/i2c-1".</li> <li> <i>ÐдреÑа I2C драйверу</i> — у деÑÑтковому номері адреÑи драйверу I2C на шині вище Ñ– у діапазоні, вказаному у допомозі до полÑ.</li> <li> <i>Період ÑкануваннÑ</i> — періодичніÑÑ‚ÑŒ повторного ÑÐºÐ°Ð½ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° предмет пошуку нових Ñ– видалених приÑтроїв.</li> <li> <i>Додавати лише при Ñкануванні</i> — ознака Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¸Ñтроїв лише при Ñкануванні, тобто також Ð·Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñ—Ñ… видаленню (Ð¿Ð¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð¸Ð¼) за помилкових запитах на поганих шинах.</li> <li> <i>Спроб, піÑÐ»Ñ Ñких вÑтановлювати Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ñƒ EVAL</i> — кількіÑÑ‚ÑŒ помилкових Ñпроб перед вÑтановленнÑм атрибутів у EVAL.</li></ul></dd> <dd>5. РЕЗУЛЬТÐТ: Об'єкт логічного параметру на початку здійÑнить пошук 1Дротових приÑтроїв на шині Ñ– ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ… параметрів Ð´Ð»Ñ ÐºÐ¾Ð¶Ð½Ð¾Ð³Ð¾ знайденого. Ðадалі об'єкт логічного параметру здійÑнюватиме збір даних за знайденими приÑтроÑми Ñ– відÑтежуватиме модифікацію запиÑуваних влаÑтивоÑтей.</dd></dl> <p><br /> </p> <table class="wikitable"> <tr> <td> <span id="PCF8591" title="#PCF8591"><h3><span class="mw-headline" id="I2C:_PCF8591_.28PCF8591.29"><span class="mw-headline-number">5</span> I2C: PCF8591 (<a href="Libs_LowLevelDevices.html#PCF8591" title="Special:MyLanguage/Libs/LowLevelDevices">PCF8591</a>)</span></h3></span> </td> <td> 1.0 </td> <td> GPLv2 </td> <td> * </td> <td> en </td> <td> <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Roman Savochenko</a> </td></tr></table> <p>I2C 8-bit 4xA/D and D/A converter. Connects through a Serial output transport into the I2C mode. </p><p><b><u>Template IOs</u></b><br /> </p> <table class="mw-collapsible mw-collapsed wikitable sortable"> <caption style="white-space:nowrap"> </caption> <tr> <th> Identifier </th> <th> Parameter </th> <th> Type </th> <th> Mode </th> <th> Attribute </th> <th> Configuration </th> <th> Value </th></tr> <tr> <td> transport </td> <td> Transport of the I2C, Serial </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> i2c </td></tr> <tr> <td> addr </td> <td> Device address [0...119] </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 72 </td></tr> <tr> <td> vRef </td> <td> Reference voltage, V </td> <td> Real </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 3.2 </td></tr> <tr> <td> ai0 </td> <td> AI0 </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> ai1 </td> <td> AI1 </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> ai2 </td> <td> AI2 </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> ai3 </td> <td> AI3 </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> ao </td> <td> AO </td> <td> Real </td> <td> Input </td> <td> Full access </td> <td> Variable </td> <td> </td></tr> <tr> <td> f_frq </td> <td> Function calculate frequency (Hz) </td> <td> Real </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 1000 </td></tr> <tr> <td> f_start </td> <td> Function start flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_stop </td> <td> Function stop flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_err </td> <td> Function error </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr></table> <p><b><u>Configuring and using</u></b><br /> </p> <dl><dd>1. Create an output transport of the type "<a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a>" and set its Identifier like to "i2c", one for each the I2C bus.</dd> <dd>2. Set proper address of the <a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a> device, only the I2C bus address like "/dev/i2c-{N}". Set the symbol's time into the timeouts field to the minimum value.</dd> <dd>3. Create and start <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical controller object</a> or use any presented one with the needed scheduling properties.</dd> <dd>4. Create <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical parameter object</a> and select the template for that, one for each I2C slave devices. Enable the parameter.</dd> <dd>5. Into the tab "Template configuration" of the logical parameter object you need to set: <ul><li> <i>transport</i> — to the address of the transport into step 1. Tracing for the address changing is supported.</li> <li> <i>addr</i> — the I2C slave device's address [0...119].</li> <li> <i>vRef</i> — reference voltage of the AIs and AO.</li></ul></dd> <dd>6. RESULT: The logical parameter object will perform interaction and placing of gathered data to the AI attributes and also will take the AO and write to the chip.</dd></dl> <p><br /> </p> <table class="wikitable"> <tr> <td> <span id="PCF8574" title="#PCF8574"><h3><span class="mw-headline" id="I2C:_PCF8574_.28PCF8574.29"><span class="mw-headline-number">6</span> I2C: PCF8574 (<a href="Libs_LowLevelDevices.html#PCF8574" title="Special:MyLanguage/Libs/LowLevelDevices">PCF8574</a>)</span></h3></span> </td> <td> 1.0 </td> <td> GPLv2 </td> <td> * </td> <td> en </td> <td> <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Roman Savochenko</a> </td></tr></table> <p>I2C 8-bit 8DIO. Connects through a Serial output transport into the I2C mode. </p><p><b><u>Template IOs</u></b><br /> </p> <table class="mw-collapsible mw-collapsed wikitable sortable"> <caption style="white-space:nowrap"> </caption> <tr> <th> Identifier </th> <th> Parameter </th> <th> Type </th> <th> Mode </th> <th> Attribute </th> <th> Configuration </th> <th> Value </th></tr> <tr> <td> transport </td> <td> Transport I2C </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> i2c </td></tr> <tr> <td> addr </td> <td> Device address (0, 119) </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 39 </td></tr> <tr> <td> di0 </td> <td> DI0 </td> <td> Boolean </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> di1 </td> <td> DI1 </td> <td> Boolean </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> di2 </td> <td> DI2 </td> <td> Boolean </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> di3 </td> <td> DI3 </td> <td> Boolean </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> di4 </td> <td> DI4 </td> <td> Boolean </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> di5 </td> <td> DI5 </td> <td> Boolean </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> di6 </td> <td> DI6 </td> <td> Boolean </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> di7 </td> <td> DI7 </td> <td> Boolean </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> do0 </td> <td> DO0 </td> <td> Boolean </td> <td> Output </td> <td> Full access </td> <td> Variable </td> <td> </td></tr> <tr> <td> do1 </td> <td> DO1 </td> <td> Boolean </td> <td> Output </td> <td> Full access </td> <td> Variable </td> <td> </td></tr> <tr> <td> do2 </td> <td> DO2 </td> <td> Boolean </td> <td> Output </td> <td> Full access </td> <td> Variable </td> <td> </td></tr> <tr> <td> do3 </td> <td> DO3 </td> <td> Boolean </td> <td> Output </td> <td> Full access </td> <td> Variable </td> <td> </td></tr> <tr> <td> do4 </td> <td> DO4 </td> <td> Boolean </td> <td> Output </td> <td> Full access </td> <td> Variable </td> <td> </td></tr> <tr> <td> do5 </td> <td> DO5 </td> <td> Boolean </td> <td> Output </td> <td> Full access </td> <td> Variable </td> <td> </td></tr> <tr> <td> do6 </td> <td> DO6 </td> <td> Boolean </td> <td> Output </td> <td> Full access </td> <td> Variable </td> <td> </td></tr> <tr> <td> do7 </td> <td> DO7 </td> <td> Boolean </td> <td> Output </td> <td> Full access </td> <td> Variable </td> <td> </td></tr> <tr> <td> f_frq </td> <td> Function calculate frequency (Hz) </td> <td> Real </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 1000 </td></tr> <tr> <td> f_start </td> <td> Function start flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_stop </td> <td> Function stop flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_err </td> <td> Function error </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr></table> <p><b><u>Configuring and using</u></b><br /> </p> <dl><dd>1. Create an output transport of the type "<a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a>" and set its Identifier like to "i2c", one for each the I2C bus.</dd> <dd>2. Set proper address of the <a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a> device, only the I2C bus address like "/dev/i2c-{N}". Set the symbol's time into the timeouts field to the minimum value.</dd> <dd>3. Create and start <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical controller object</a> or use any presented one with the needed scheduling properties.</dd> <dd>4. Create <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical parameter object</a> and select the template for that, one for each I2C slave devices. Enable the parameter.</dd> <dd>5. Into the tab "Template configuration" of the logical parameter object you need to set: <ul><li> <i>transport</i> — to the address of the transport into step 1. Tracing for the address changing is supported.</li> <li> <i>addr</i> — the I2C slave device's address [0...119].</li></ul></dd> <dd>6. RESULT: The logical parameter object will perform interaction and placing of gathered data to the DI attributes and also will take the DO and write to the chip.</dd></dl> <p><br /> </p> <table class="wikitable"> <tr> <td> <span id="ADS111x" title="#ADS111x"><h3><span class="mw-headline" id="I2C:_ADS101x.2C_ADS111x_.28ADS111x.29"><span class="mw-headline-number">7</span> I2C: ADS101x, ADS111x (<a href="Libs_LowLevelDevices.html#ADS111x" title="Special:MyLanguage/Libs/LowLevelDevices">ADS111x</a>)</span></h3></span> </td> <td> 1.0 </td> <td> GPLv2 </td> <td> * </td> <td> en </td> <td> <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Roman Savochenko</a> </td></tr></table> <p>I2C 12/16-bit 4xA/D converter. Connect through a Serial output transport into the I2C mode. </p><p><b><u>Template IOs</u></b><br /> </p> <table class="mw-collapsible mw-collapsed wikitable sortable"> <caption style="white-space:nowrap"> </caption> <tr> <th> Identifier </th> <th> Parameter </th> <th> Type </th> <th> Mode </th> <th> Attribute </th> <th> Configuration </th> <th> Value </th></tr> <tr> <td> transport </td> <td> Transport of the I2C, Serial </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> i2c </td></tr> <tr> <td> addr </td> <td> Device address [0...119] </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 72 </td></tr> <tr> <td> range </td> <td> Range, ±V </td> <td> Integer numbers selection </td> <td> Input </td> <td> Full access </td> <td> Variable </td> <td> 2<br /> <p>0;1;2;3;4;5<br /> 6.144;4.096;2.048;1.024;0.512;0.256 </p> </td></tr> <tr> <td> ai0 </td> <td> AI0 </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> ai1 </td> <td> AI1 </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> ai2 </td> <td> AI2 </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> ai3 </td> <td> AI3 </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> f_frq </td> <td> Function calculate frequency (Hz) </td> <td> Real </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 1000 </td></tr> <tr> <td> f_start </td> <td> Function start flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_stop </td> <td> Function stop flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_err </td> <td> Function error </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr></table> <p><b><u>Configuring and using</u></b><br /> </p> <dl><dd>1. Create an output transport of the type "<a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a>" and set its Identifier like to "i2c", one for each the I2C bus.</dd> <dd>2. Set proper address of the <a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a> device, only the I2C bus address like "/dev/i2c-{N}". Set the symbol's time into the timeouts field to the minimum value.</dd> <dd>3. Create and start <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical controller object</a> or use any presented one with the needed scheduling properties.</dd> <dd>4. Create <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical parameter object</a> and select the template for that, one for each I2C slave devices. Enable the parameter.</dd> <dd>5. Into the tab "Template configuration" of the logical parameter object you need to set: <ul><li> <i>transport</i> — to the address of the transport into step 1. Tracing for the address changing is supported.</li> <li> <i>addr</i> — the I2C slave device's address [0...119].</li> <li> <i>range</i> — range of voltage of the AIs.</li></ul></dd> <dd>6. RESULT: The logical parameter object will perform interaction and placing of gathered data to the AI attributes.</dd></dl> <p><br /> </p> <table class="wikitable"> <tr> <td> <span id="MCP4725" title="#MCP4725"><h3><span class="mw-headline" id="I2C:_MCP4725_.28MCP4725.29"><span class="mw-headline-number">8</span> I2C: MCP4725 (<a href="Libs_LowLevelDevices.html#MCP4725" title="Special:MyLanguage/Libs/LowLevelDevices">MCP4725</a>)</span></h3></span> </td> <td> 1.0 </td> <td> GPLv2 </td> <td> * </td> <td> en </td> <td> <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Roman Savochenko</a> </td></tr></table> <p>I2C 12-bit D/A converter. Connect through a Serial output transport into the I2C mode. </p><p><b><u>Template IOs</u></b><br /> </p> <table class="mw-collapsible mw-collapsed wikitable sortable"> <caption style="white-space:nowrap"> </caption> <tr> <th> Identifier </th> <th> Parameter </th> <th> Type </th> <th> Mode </th> <th> Attribute </th> <th> Configuration </th> <th> Value </th></tr> <tr> <td> transport </td> <td> Transport of the I2C, Serial </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> i2c </td></tr> <tr> <td> addr </td> <td> Device address [0...119] </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 96 </td></tr> <tr> <td> vRef </td> <td> Reference voltage, V </td> <td> Real </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 3.2 </td></tr> <tr> <td> ao </td> <td> AO </td> <td> Real </td> <td> Input </td> <td> Full access </td> <td> Variable </td> <td> </td></tr> <tr> <td> f_frq </td> <td> Function calculate frequency (Hz) </td> <td> Real </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 1000 </td></tr> <tr> <td> f_start </td> <td> Function start flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_stop </td> <td> Function stop flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_err </td> <td> Function error </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr></table> <p><b><u>Configuring and using</u></b><br /> </p> <dl><dd>1. Create an output transport of the type "<a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a>" and set its Identifier like to "i2c", one for each the I2C bus.</dd> <dd>2. Set proper address of the <a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a> device, only the I2C bus address like "/dev/i2c-{N}". Set the symbol's time into the timeouts field to the minimum value.</dd> <dd>3. Create and start <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical controller object</a> or use any presented one with the needed scheduling properties.</dd> <dd>4. Create <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical parameter object</a> and select the template for that, one for each I2C slave devices. Enable the parameter.</dd> <dd>5. Into the tab "Template configuration" of the logical parameter object you need to set: <ul><li> <i>transport</i> — to the address of the transport into step 1. Tracing for the address changing is supported.</li> <li> <i>addr</i> — the I2C slave device's address [0...119].</li> <li> <i>vRef</i> — reference voltage of the AO.</li></ul></dd> <dd>6. RESULT: The logical parameter object will perform interaction and take the AO and write to the chip.</dd></dl> <p><br /> </p> <table class="wikitable"> <tr> <td> <span id="BMP180" title="#BMP180"><h3><span class="mw-headline" id="I2C:_BMP180_.28BMP180.29"><span class="mw-headline-number">9</span> I2C: BMP180 (<a href="Libs_LowLevelDevices.html#BMP180" title="Special:MyLanguage/Libs/LowLevelDevices">BMP180</a>)</span></h3></span> </td> <td> 1.0 </td> <td> GPLv2 </td> <td> * </td> <td> en </td> <td> <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Roman Savochenko</a> </td></tr></table> <p>I2C Pressure and Temperature sensor. Connecting through a Serial output transport into the I2C mode. </p><p><b><u>Template IOs</u></b><br /> </p> <table class="mw-collapsible mw-collapsed wikitable sortable"> <caption style="white-space:nowrap"> </caption> <tr> <th> Identifier </th> <th> Parameter </th> <th> Type </th> <th> Mode </th> <th> Attribute </th> <th> Configuration </th> <th> Value </th></tr> <tr> <td> transport </td> <td> Transport of the I2C, Serial </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> i2c </td></tr> <tr> <td> addr </td> <td> Device address [0...119] </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 119 </td></tr> <tr> <td> oss </td> <td> Oversampling setting (0...3) </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 0 </td></tr> <tr> <td> t </td> <td> T, °С </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> p </td> <td> P, Pa </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> f_frq </td> <td> Function calculate frequency (Hz) </td> <td> Real </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 1000 </td></tr> <tr> <td> f_start </td> <td> Function start flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_stop </td> <td> Function stop flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_err </td> <td> Function error </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr></table> <p><b><u>Configuring and using</u></b><br /> </p> <dl><dd>1. Create an output transport of the type "<a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a>" and set its Identifier like to "i2c", one for each the I2C bus.</dd> <dd>2. Set proper address of the <a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a> device, only the I2C bus address like "/dev/i2c-{N}". Set the symbol's time into the timeouts field to the minimum value.</dd> <dd>3. Create and start <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical controller object</a> or use any presented one with the needed scheduling properties.</dd> <dd>4. Create <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical parameter object</a> and select the template for that, one for each I2C slave devices. Enable the parameter.</dd> <dd>5. Into the tab "Template configuration" of the logical parameter object you need to set: <ul><li> <i>transport</i> — to the address of the transport into step 1. Tracing for the address changing is supported.</li> <li> <i>addr</i> — the I2C slave device's address [0...119].</li> <li> <i>oss</i> — oversampling setting of pressure measurement [0...3].</li></ul></dd> <dd>6. RESULT: The logical parameter object will perform interaction and placing of gathered data to the Pressure and Temperature attributes.</dd></dl> <p><br /> </p> <table class="wikitable"> <tr> <td> <span id="BME280" title="#BME280"><h3><span class="mw-headline" id="I2C:_BME280_.28BME280.29"><span class="mw-headline-number">10</span> I2C: BME280 (<a href="Libs_LowLevelDevices.html#BME280" title="Special:MyLanguage/Libs/LowLevelDevices">BME280</a>)</span></h3></span> </td> <td> 1.0 </td> <td> GPLv2 </td> <td> * </td> <td> en </td> <td> Arcadiy Kisel, <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Roman Savochenko</a> </td></tr></table> <p>I2C Barometric Pressure, Temperature and Humidity sensor. Connect through a Serial output transport into the I2C mode. </p><p><b><u>Template IOs</u></b><br /> </p> <table class="mw-collapsible mw-collapsed wikitable sortable"> <caption style="white-space:nowrap"> </caption> <tr> <th> Identifier </th> <th> Parameter </th> <th> Type </th> <th> Mode </th> <th> Attribute </th> <th> Configuration </th> <th> Value </th></tr> <tr> <td> transport </td> <td> Transport of the I2C, Serial </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> i2c </td></tr> <tr> <td> addr </td> <td> Device address [0...119] </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 118 </td></tr> <tr> <td> oss </td> <td> Oversampling setting (0...7) </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 0 </td></tr> <tr> <td> t </td> <td> T, °С </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> p </td> <td> P, Pa </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> h </td> <td> H, % </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> f_frq </td> <td> Function calculate frequency (Hz) </td> <td> Real </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 1000 </td></tr> <tr> <td> f_start </td> <td> Function start flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_stop </td> <td> Function stop flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_err </td> <td> Function error </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr></table> <p><b><u>Configuring and using</u></b><br /> </p> <dl><dd>1. Create an output transport of the type "<a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a>" and set its Identifier like to "i2c", one for each the I2C bus.</dd> <dd>2. Set proper address of the <a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a> device, only the I2C bus address like "/dev/i2c-{N}". Set the symbol's time into the timeouts field to the minimum value.</dd> <dd>3. Create and start <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical controller object</a> or use any presented one with the needed scheduling properties.</dd> <dd>4. Create <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical parameter object</a> and select the template for that, one for each I2C slave devices. Enable the parameter.</dd> <dd>5. Into the tab "Template configuration" of the logical parameter object you need to set: <ul><li> <i>transport</i> — to the address of the transport into step 1. Tracing for the address changing is supported.</li> <li> <i>addr</i> — the I2C slave device's address [0...119].</li> <li> <i>oss</i> — oversampling setting of pressure measurement [0...7].</li></ul></dd> <dd>6. RESULT: The logical parameter object will perform interaction and placing of gathered data to the Pressure, Temperature and Humidity attributes.</dd></dl> <p><br /> </p> <table class="wikitable"> <tr> <td> <span id="SHT3x" title="#SHT3x"><h3><span class="mw-headline" id="I2C:_SHT3x_.28SHT3x.29"><span class="mw-headline-number">11</span> I2C: SHT3x (<a href="Libs_LowLevelDevices.html#SHT3x" title="Special:MyLanguage/Libs/LowLevelDevices">SHT3x</a>)</span></h3></span> </td> <td> 1.0 </td> <td> GPLv2 </td> <td> * </td> <td> en </td> <td> <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Roman Savochenko</a> </td></tr></table> <p>Digital Temperature and Humidity Sensor for the models: SHT30 </p><p><b><u>Template IOs</u></b><br /> </p> <table class="mw-collapsible mw-collapsed wikitable sortable"> <caption style="white-space:nowrap"> </caption> <tr> <th> Identifier </th> <th> Parameter </th> <th> Type </th> <th> Mode </th> <th> Attribute </th> <th> Configuration </th> <th> Value </th></tr> <tr> <td> transport </td> <td> Transport of the I2C, Serial </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> i2c </td></tr> <tr> <td> addr </td> <td> Device address [0...119] </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 68 </td></tr> <tr> <td> H </td> <td> Humidity </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> T </td> <td> Temperature </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> f_frq </td> <td> Function calculate frequency (Hz) </td> <td> Real </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 1000 </td></tr> <tr> <td> f_start </td> <td> Function start flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_stop </td> <td> Function stop flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_err </td> <td> Function error </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr></table> <p><b><u>Configuring and using</u></b><br /> </p> <dl><dd>1. Create an output transport of the type "<a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a>" and set its Identifier like to "i2c", one for each the I2C bus.</dd> <dd>2. Set proper address of the <a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a> device, only the I2C bus address like "/dev/i2c-{N}". Set the symbol's time into the timeouts field to the minimum value.</dd> <dd>3. Create and start <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical controller object</a> or use any presented one with the needed scheduling properties.</dd> <dd>4. Create <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical parameter object</a> and select the template for that, one for each I2C slave devices. Enable the parameter.</dd> <dd>5. Into the tab "Template configuration" of the logical parameter object you need to set: <ul><li> <i>transport</i> — to the address of the transport into step 1. Tracing for the address changing is supported;</li> <li> <i>addr</i> — the I2C slave device's address [0...119].</li></ul></dd> <dd>6. RESULT: The logical parameter object will perform interaction and placing of gathered data to the Temperature and Humidity attributes.</dd></dl> <p><br /> </p> <table class="wikitable"> <tr> <td> <span id="DS3231" title="#DS3231"><h3><span class="mw-headline" id="I2C:_DS1307.2CDS3231_.28DS3231.29"><span class="mw-headline-number">12</span> I2C: DS1307,DS3231 (<a href="Libs_LowLevelDevices.html#DS3231" title="Special:MyLanguage/Libs/LowLevelDevices">DS3231</a>)</span></h3></span> </td> <td> 1.1 </td> <td> GPLv2 </td> <td> * </td> <td> en </td> <td> <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Roman Savochenko</a> </td></tr></table> <p>I2C RTC chips DS1307,DS3231 with Temperature sensor and calibration for DS3231. Connects through a Serial output transport into the I2C mode. </p><p><b><u>Template IOs</u></b><br /> </p> <table class="mw-collapsible mw-collapsed wikitable sortable"> <caption style="white-space:nowrap"> </caption> <tr> <th> Identifier </th> <th> Parameter </th> <th> Type </th> <th> Mode </th> <th> Attribute </th> <th> Configuration </th> <th> Value </th></tr> <tr> <td> transport </td> <td> Transport of the I2C, Serial </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> i2c </td></tr> <tr> <td> addr </td> <td> Device address [0...119] </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 119 </td></tr> <tr> <td> mode </td> <td> Mode </td> <td> Integer numbers selection </td> <td> Input </td> <td> Full access </td> <td> Variable </td> <td> 0 <p>0;1<br /> DS3231;DS1307 </p> </td></tr> <tr> <td> tm </td> <td> Date and time, YYYY-MM-DDTHH:mm:SS </td> <td> String </td> <td> Input </td> <td> Full access </td> <td> Variable </td> <td> </td></tr> <tr> <td> pSQW </td> <td> Enable SQUARE-WAVE OUTPUT </td> <td> Boolean </td> <td> Input </td> <td> Full access </td> <td> Variable </td> <td> </td></tr> <tr> <td> pSQWf<br />(dynamically updated) </td> <td> SQUARE-WAVE OUTPUT frequency </td> <td> Integer </td> <td> Input </td> <td> Full access </td> <td> Variable </td> <td> </td></tr> <tr> <td> agOff<br />(dynamically created for DS3231) </td> <td> Aging offset, [-128...127] </td> <td> Integer </td> <td> Input </td> <td> Full access </td> <td> Variable </td> <td> </td></tr> <tr> <td> t<br />(dynamically created for DS3231) </td> <td> T, °С </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> p32k<br />(dynamically created for DS3231) </td> <td> Enable 32768Hz </td> <td> Boolean </td> <td> Input </td> <td> Full access </td> <td> Variable </td> <td> </td></tr> <tr> <td> f_frq </td> <td> Function calculate frequency (Hz) </td> <td> Real </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 1000 </td></tr> <tr> <td> f_start </td> <td> Function start flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_stop </td> <td> Function stop flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_err </td> <td> Function error </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr></table> <p><b><u>Configuring and using</u></b><br /> </p> <dl><dd>1. Create an output transport of the type "<a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a>" and set its Identifier like to "i2c", one for each the I2C bus.</dd> <dd>2. Set proper address of the <a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a> device, only the I2C bus address like "/dev/i2c-{N}". Set the symbol's time into the timeouts field to the minimum value.</dd> <dd>3. Create and start <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical controller object</a> or use any presented one with the needed scheduling properties.</dd> <dd>4. Create <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical parameter object</a> and select the template for that, one for each I2C slave devices. Enable the parameter.</dd> <dd>5. Into the tab "Template configuration" of the logical parameter object you need to set: <ul><li> <i>transport</i> — to the address of the transport into step 1. Tracing for the address changing is supported.</li> <li> <i>addr</i> — the I2C slave device's address [0...119].</li></ul></dd> <dd>6. RESULT: The logical parameter object will perform interaction and placing of gathered data to the DateTime, Temperature and some one state attributes and also will take the DateTime, some one state attributes and write it to the chip.</dd></dl> <p><br /> </p> <table class="wikitable"> <tr> <td> <span id="AT24CXX" title="#AT24CXX"><h3><span class="mw-headline" id="I2C:_AT24C.7B32.7C64.7D_.28AT24CXX.29"><span class="mw-headline-number">13</span> I2C: AT24C{32|64} (<a href="Libs_LowLevelDevices.html#AT24CXX" title="Special:MyLanguage/Libs/LowLevelDevices">AT24CXX</a>)</span></h3></span> </td> <td> 1.0 </td> <td> GPLv2 </td> <td> * </td> <td> en </td> <td> <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Roman Savochenko</a> </td></tr></table> <p>Provides operations with EEPROM memory based on I2C chips AT24C32 (4KB) and AT24C64 (8KB). Supported random reading and writing. </p><p><b><u>Output user protocol's XML request structure</u></b><br /> <b><{cmd} addr="{ChipAddr}" off="{MemOffset}" size="{ReadSize}" err="1:Error">{ReadWriteSeq}</{cmd}></b> </p> <dl><dd><i>cmd</i> — command, for now there allowed: "read", "write";</dd> <dd><i>addr</i> — I2C device address [0...119];</dd> <dd><i>off</i> — memory part offset;</dd> <dd><i>size</i> — read memory block size.</dd> <dd><i>ReadWriteSeq</i> — Read/Write bytes sequence.</dd> <dd><i>err</i> — sets to result of the request.</dd></dl> <p><b><u>Configuring and using</u></b><br /> </p> <dl><dd>1. Create an output transport of the type "<a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a>" and set its Identifier like to "i2c", one for each the I2C bus.</dd> <dd>2. Set proper address of the <a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a> device, only the I2C bus address like "/dev/i2c-{N}". Set the symbol's time into the timeouts field to the minimum value.</dd> <dd>3. Place some requesting commands directly into presented or a new internal OpenSCADA procedure like to:</dd></dl> <div class="mw-highlight mw-content-ltr" dir="ltr" style="margin-left: 30px"><pre><span class="nx">req</span> <span class="o">=</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">XMLNode</span><span class="p">(</span><span class="s2">"read"</span><span class="p">);</span> <span class="nx">req</span><span class="p">.</span><span class="nx">setAttr</span><span class="p">(</span><span class="s2">"ProtIt"</span><span class="p">,</span><span class="s2">"AT24CXX"</span><span class="p">).</span><span class="nx">setAttr</span><span class="p">(</span><span class="s2">"addr"</span><span class="p">,</span><span class="mi">87</span><span class="p">).</span><span class="nx">setAttr</span><span class="p">(</span><span class="s2">"off"</span><span class="p">,</span><span class="mi">1000</span><span class="p">).</span><span class="nx">setAttr</span><span class="p">(</span><span class="s2">"size"</span><span class="p">,</span><span class="mi">20</span><span class="p">).</span><span class="nx">setText</span><span class="p">(</span><span class="s2">"My message"</span><span class="p">);</span> <span class="nx">req</span> <span class="o">=</span> <span class="nx">SYS</span><span class="p">.</span><span class="nx">XMLNode</span><span class="p">(</span><span class="s2">"write"</span><span class="p">);</span> <span class="nx">req</span><span class="p">.</span><span class="nx">setAttr</span><span class="p">(</span><span class="s2">"ProtIt"</span><span class="p">,</span><span class="s2">"AT24CXX"</span><span class="p">).</span><span class="nx">setAttr</span><span class="p">(</span><span class="s2">"addr"</span><span class="p">,</span><span class="mi">87</span><span class="p">).</span><span class="nx">setAttr</span><span class="p">(</span><span class="s2">"off"</span><span class="p">,</span><span class="mi">1000</span><span class="p">).</span><span class="nx">setText</span><span class="p">(</span><span class="s2">"Stored data"</span><span class="p">);</span> </pre></div> <dl><dd>4. RESULT: Into <i>text()</i> for "read" you will get the read data if no errors occur.</dd></dl> <p><br /> </p> <table class="wikitable"> <tr> <td> <span id="DHT" title="#DHT"><h3><span class="mw-headline" id="GPIO:_DHT11.2C22_.28DHT.29"><span class="mw-headline-number">14</span> GPIO: DHT11,22 (<a href="Libs_LowLevelDevices.html#DHT" title="Special:MyLanguage/Libs/LowLevelDevices">DHT</a>)</span></h3></span> </td> <td> 1.0 </td> <td> GPLv2 </td> <td> * </td> <td> en </td> <td> <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Roman Savochenko</a> </td></tr></table> <p>Digital Temperature and Humidity Sensor for models: DHT11, DHT12, AM2302, AM2320, ... . The module designed for the sensors connect through GPIO, mostly it's <a href="Modules/GPIO.html" title="Special:MyLanguage/Modules/GPIO">Raspberry PI BCM2835 GPIO</a>.<br /> <i>Conditions:</i> Exclusively realtime planing in the priority 199 (FIFO-99). </p><p><b><u>Template IOs</u></b><br /> </p> <table class="mw-collapsible mw-collapsed wikitable sortable"> <caption style="white-space:nowrap"> </caption> <tr> <th> Identifier </th> <th> Parameter </th> <th> Type </th> <th> Mode </th> <th> Attribute </th> <th> Configuration </th> <th> Value </th></tr> <tr> <td> addr </td> <td> GPIO address with functions mode(), get() and put(), mostly it's BCM2835 </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> DAQ.GPIO.io.pi </td></tr> <tr> <td> pin </td> <td> IO pin number of the GPIO </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 17 </td></tr> <tr> <td> tries </td> <td> Tries [1...5] </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 2 </td></tr> <tr> <td> dev </td> <td> Device (0-DHT11, 1-DHT22) </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 1 </td></tr> <tr> <td> t </td> <td> T, °С </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> h </td> <td> H, % </td> <td> Real </td> <td> Input </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> f_frq </td> <td> Function calculate frequency (Hz) </td> <td> Real </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 1000 </td></tr> <tr> <td> f_start </td> <td> Function start flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_stop </td> <td> Function stop flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_err </td> <td> Function error </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr></table> <p><b><u>Configuring and using</u></b><br /> </p> <dl><dd>1. Create an output controller object and a parameter into the DAQ module "BCM 2835", by default it's "pi.pi".</dd> <dd>2. Create and start <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical controller object</a> or use any presented one with the needed scheduling properties (FIFO-199).</dd> <dd>3. Create <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical parameter</a> and select the template for that, one for each sensor. Enable the parameter.</dd> <dd>4. Into the tab "Template configuration" of the logical parameter object you need to set: <ul><li> <i>addr</i> — to the address of the "BCM 2835" parameter like "DAQ.GPIO.io.pi"; tracing for the address changing is supported;</li> <li> <i>pin</i> — GPIO pin number where connected the data pin of the sensor;</li> <li> <i>tries</i> — tries of the sensor reading;</li> <li> <i>dev</i> — generic device specific selection.</li></ul></dd> <dd>5. RESULT: The logical parameter will perform interaction and placing of the gathered data to the Temperature and Humidity attributes.</dd></dl> <p><br /> </p> <table class="wikitable"> <tr> <td> <span id="MAX6675" title="#MAX6675"><h3><span class="mw-headline" id="GPIO:_MAX6675_.28MAX6675.29"><span class="mw-headline-number">15</span> GPIO: MAX6675 (<a href="Libs_LowLevelDevices.html#MAX6675" title="Special:MyLanguage/Libs/LowLevelDevices">MAX6675</a>)</span></h3></span> </td> <td> 0.1 </td> <td> GPLv2 </td> <td> * </td> <td> en </td> <td> Arcadiy Kisel </td></tr></table> <p>Cold-Junction-Compensated K-Thermocouple-to-Digital Converter (0°C to +1024°C). The module designed for the sensors connect through softSPI by GPIO, mostly it's <a href="Modules/GPIO.html" title="Special:MyLanguage/Modules/GPIO">Raspberry PI BCM2835 GPIO</a>.<br /> <i>Conditions:</i> Exclusively realtime planing in the priority 199 (FIFO-99). </p><p><b><u>Template IOs</u></b><br /> </p> <table class="mw-collapsible mw-collapsed wikitable sortable"> <caption style="white-space:nowrap"> </caption> <tr> <th> Identifier </th> <th> Parameter </th> <th> Type </th> <th> Mode </th> <th> Attribute </th> <th> Configuration </th> <th> Value </th></tr> <tr> <td> addr </td> <td> GPIO address with functions mode(), get() and put(), mostly it's BCM2835 </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> DAQ.GPIO.io.pi </td></tr> <tr> <td> pin_cs </td> <td> CS pin number of the GPIO </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 8 </td></tr> <tr> <td> pin_sclk </td> <td> SCLK pin number of the GPIO </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 11 </td></tr> <tr> <td> pin_miso </td> <td> MISO pin number of the GPIO </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 9 </td></tr> <tr> <td> t </td> <td> T, °С </td> <td> Real </td> <td> Output </td> <td> Read only </td> <td> Variable </td> <td> </td></tr> <tr> <td> f_frq </td> <td> Function calculate frequency (Hz) </td> <td> Real </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 1000 </td></tr> <tr> <td> f_start </td> <td> Function start flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_stop </td> <td> Function stop flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_err </td> <td> Function error </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr></table> <p><b><u>Configuring and using</u></b><br /> </p> <dl><dd>1. Create an output controller object and a parameter into the DAQ module "BCM 2835", by default it's "pi.pi".</dd> <dd>2. Create and start <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical controller object</a> or use any presented one with the needed scheduling properties (FIFO-199).</dd> <dd>3. Create <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical parameter</a> and select the template for that, one for each sensor. Enable the parameter.</dd> <dd>4. Into the tab "Template configuration" of the logical parameter object you need to set: <ul><li> <i>addr</i> — to the address of the "BCM 2835" parameter like "DAQ.GPIO.io.pi"; tracing for the address changing is supported; </li> <li> <i>pin_cs</i> — CS pin number where connected the chip selection pin of the sensor; </li> <li> <i>pin_sclk</i> — SCLK pin number where connected the serial clock pin of the sensor;</li> <li> <i>pin_miso</i> — MISO pin number where connected the master in slave out (data) pin of the sensor.</li></ul></dd> <dd>5. RESULT: The logical parameter will perform interaction and placing of the gathered data to the Temperature attributes.</dd></dl> <p><br /> </p> <table class="wikitable"> <tr> <td> <span id="1602A" title="#1602A"><h3><span class="mw-headline" id="GPIO.7CI2C:_1602A.28HD44780.29_.281602A.29"><span class="mw-headline-number">16</span> GPIO|I2C: 1602A(HD44780) (<a href="Libs_LowLevelDevices.html#1602A" title="Special:MyLanguage/Libs/LowLevelDevices">1602A</a>)</span></h3></span> </td> <td> 1.0 </td> <td> GPLv2 </td> <td> * </td> <td> en </td> <td> <a class="external" href="http://oscada.org/wiki/User:RomanSavochenko" title="User:RomanSavochenko">Roman Savochenko</a> </td></tr></table> <p>LCD Module 1602A, STN, BLUB, 16 Character x 2 Line, 5 x 8 Dots, by the direct (<a href="Modules/GPIO.html" title="Special:MyLanguage/Modules/GPIO">Raspberry PI BCM2835 GPIO</a>) or I2C (PCF8574) wiring.<br /> <i>Conditions:</i> Default planing policy but realtime one preferred. </p><p><b><u>Template IOs</u></b><br /> </p> <table class="mw-collapsible mw-collapsed wikitable sortable"> <caption style="white-space:nowrap"> </caption> <tr> <th> Identifier </th> <th> Parameter </th> <th> Type </th> <th> Mode </th> <th> Attribute </th> <th> Configuration </th> <th> Value </th></tr> <tr> <td> transport </td> <td> Transport of the I2C, Serial (i2c) or<br /> <p>GPIO address with function put(), mostly it's BCM2835 (DAQ.GPIO.io.pi) </p> </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> i2c </td></tr> <tr> <td> addr </td> <td> I2C device address [0...119] </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 39 </td></tr> <tr> <td> RS </td> <td> GPIO Pin: Reset </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 7 </td></tr> <tr> <td> E </td> <td> GPIO Pin: Enable </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 8 </td></tr> <tr> <td> D4 </td> <td> GPIO Pin: Data4 </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 25 </td></tr> <tr> <td> D5 </td> <td> GPIO Pin: Data5 </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 24 </td></tr> <tr> <td> D6 </td> <td> GPIO Pin: Data6 </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 23 </td></tr> <tr> <td> D7 </td> <td> GPIO Pin: Data7 </td> <td> Integer </td> <td> Input </td> <td> Not attribute </td> <td> Constant </td> <td> 18 </td></tr> <tr> <td> ln1 </td> <td> Line 1 </td> <td> String </td> <td> Input </td> <td> Full access </td> <td> Variable </td> <td> </td></tr> <tr> <td> ln2 </td> <td> Line 2 </td> <td> String </td> <td> Input </td> <td> Full access </td> <td> Variable </td> <td> </td></tr> <tr> <td> f_frq </td> <td> Function calculate frequency (Hz) </td> <td> Real </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 1000 </td></tr> <tr> <td> f_start </td> <td> Function start flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_stop </td> <td> Function stop flag </td> <td> Boolean </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr> <tr> <td> f_err </td> <td> Function error </td> <td> String </td> <td> Input </td> <td> Not attribute </td> <td> Variable </td> <td> 0 </td></tr></table> <p><b><u>Configuring and using</u></b><br /> </p> <dl><dd>1. Create an output controller and an object of parameter in DAQ module "BCM 2835", by default it's "pi.pi" or create an output transport of the type "<a href="Modules/Serial.html" title="Special:MyLanguage/Modules/Serial">Serial</a>", set address like to "i2c", one for each the I2C bus.</dd> <dd>2. Create and start <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical controller object</a> or use any presented one with the needed scheduling properties.</dd> <dd>3. Create <a href="Modules/LogicLev.html" title="Special:MyLanguage/Modules/LogicLev">a logical parameter object</a> and select the template for that, one for each sensor. Enable the parameter.</dd> <dd>4. Into the tab "Template configuration" of the logical parameter object you need to set: <ul><li> <i>transport</i> — to address of the "BCM 2835" parameter like to "DAQ.GPIO.io.pi" or to address of the transport into step 1; tracing for the address changing is supported;</li> <li> <i>addr</i> — the I2C slave device's address [0...119];</li> <li> <i>RS, E, D4, D5, D6, D7</i> — numbers of the GPIO pins where connected the proper data ones of the sensor.</li></ul></dd> <dd>5. RESULT: The logical parameter object will perform interaction and setting lines' values to the display.</dd></dl> </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/Libs/LowLevelDevices/uk">Libs/LowLevelDevices/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>