<?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>Модулі/GPIO - 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">Модулі/GPIO</h1> </div><div class="mw-content-ltr" dir="ltr" id="mw-content-text" lang="uk"><div class="mw-pt-translate-header noprint" dir="ltr" lang="en">This page is a <span class="plainlinks"><a class="external text" href="http://oscada.org/wiki/index.php?title=Special:Translate&group=page-Modules%2FGPIO&action=page&filter=&language=uk" rel="nofollow noreferrer noopener" target="_blank">translated version</a></span> of the page <a class="external" href="http://oscada.org/wiki/Modules/GPIO" title="Modules/GPIO">Modules/GPIO</a> and the translation is 100% complete.</div><hr /><div class="mw-pt-languages" dir="ltr" lang="en"><div class="mw-pt-languages-list autonym"><a class="mw-pt-languages-ui mw-pt-progress mw-pt-progress--complete" href="../../en/Modules/GPIO.html" title="Modules/GPIO (100% translated)">English</a> • ‎<a class="mw-pt-progress mw-pt-progress--complete" href="../../ru/Modules/GPIO.html" title="Модули/GPIO (100% translated)">mRussian</a> • ‎<span class="mw-pt-languages-selected mw-pt-progress mw-pt-progress--complete">УкраїнÑька</span></div></div> <table class="wikitable"> <tr> <th> Модуль </th> <th> Ім'Ñ </th> <th> ВерÑÑ–Ñ </th> <th> Ð›Ñ–Ñ†ÐµÐ½Ð·Ñ–Ñ </th> <th> Джерело </th> <th> Мови </th> <th> Платформи </th> <th> Тип </th> <th> Ðвтор </th> <th> ÐžÐ¿Ð¸Ñ </th></tr> <tr> <td> <a href="../Modules/GPIO.html" title="Special:MyLanguage/Modules/GPIO">GPIO</a> </td> <td> GPIO </td> <td> 2.1 </td> <td> GPL2 </td> <td> daq_GPIO.so </td> <td> en,uk,ru,de </td> <td> x86,x86_64,ARM </td> <td> DAQ </td> <td> Роман Савоченко </td> <td> GPIO різних одноплатних ПК: Broadcom BCM 2835 та більше (Raspberry Pi, ...), SUNXI AllWinner H2 та більше (Orange Pi Zero, ...). </td></tr></table> <div class="toc" id="toc"><div id="toctitle"><h2>Contents</h2></div> <ul> <li class="toclevel-1 tocsection-1"><a href="#.D0.9E.D0.B1.27.D1.94.D0.BA.D1.82_.D0.BA.D0.BE.D0.BD.D1.82.D1.80.D0.BE.D0.BB.D0.B5.D1.80.D1.83"><span class="tocnumber">1</span> <span class="toctext">Об'єкт контролеру</span></a></li> <li class="toclevel-1 tocsection-2"><a href="#.D0.9F.D0.B0.D1.80.D0.B0.D0.BC.D0.B5.D1.82.D1.80.D0.B8_.28BCM2835.2C_SUNXI.29"><span class="tocnumber">2</span> <span class="toctext">Параметри (BCM2835, SUNXI)</span></a> <ul> <li class="toclevel-2 tocsection-3"><a href="#.D0.A4.D1.83.D0.BD.D0.BA.D1.86.D1.96.D1.8F_GPIO:_.D0.A0.D0.B5.D0.B6.D0.B8.D0.BC_.28mode.29"><span class="tocnumber">2.1</span> <span class="toctext">Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ GPIO: Режим (mode)</span></a></li> <li class="toclevel-2 tocsection-4"><a href="#.D0.A4.D1.83.D0.BD.D0.BA.D1.86.D1.96.D1.8F_GPIO:_.D0.9E.D1.82.D1.80.D0.B8.D0.BC.D0.B0.D1.82.D0.B8_.28get.29"><span class="tocnumber">2.2</span> <span class="toctext">Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ GPIO: Отримати (get)</span></a></li> <li class="toclevel-2 tocsection-5"><a href="#.D0.A4.D1.83.D0.BD.D0.BA.D1.86.D1.96.D1.8F_GPIO:_.D0.92.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.B8.D1.82.D0.B8_.28put.29"><span class="tocnumber">2.3</span> <span class="toctext">Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ GPIO: Ð’Ñтановити (put)</span></a></li> </ul> </li> <li class="toclevel-1 tocsection-6"><a href="#.D0.97.D0.B0.D1.83.D0.B2.D0.B0.D0.B6.D0.B5.D0.BD.D0.BD.D1.8F"><span class="tocnumber">3</span> <span class="toctext">ЗауваженнÑ</span></a></li> </ul> </div> <p>Модуль надає до OpenSCADA підтримку Входів/Виходів загального Ð¿Ñ€Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ (GPIO), заÑнованих на одноплатних ПК: </p> <ul><li> BCM2835 та вище — <a class="external text" href="https://www.raspberrypi.org" rel="nofollow noreferrer noopener" target="_blank">Raspberry PI, PI2, PI3</a>;</li> <li> SUNXI AllWinner H2 та вище — <a class="external text" href="http://www.orangepi.org" rel="nofollow noreferrer noopener" target="_blank">Orange Pi, Zero, One, Plus</a>.</li></ul> <p>GPIO на BCM2835 та вище, на Raspberry Pi, нараховує до 32 штирів, деÑкі з Ñких можуть здійÑнювати альтернативні функції на кшталт: I2C, UART, SPIO. Ð”Ð»Ñ Ð´Ð¾Ñтупу до цього GPIO викориÑтано GPIO чаÑтину бібліотеки <a class="external text" href="http://www.airspayce.com/mikem/bcm2835" rel="nofollow noreferrer noopener" target="_blank">libBCM2835</a>, Ñку включено та вона збираєтьÑÑ Ñ€Ð°Ð·Ð¾Ð¼ з цим модулем. </p><p>GPIO на SUNXI AllWinner H2 та вище, на Orange Pi, може мати 9 оÑновних та 6 додаткових банків із 32 штирÑми у кожному, деÑкі з Ñких можуть здійÑнювати альтернативні функції на кшталт: I2C, UART, SPIO. Ð”Ð»Ñ Ð´Ð¾Ñтупу до цього GPIO викориÑтано GPIO чаÑтину бібліотеки <a class="external text" href="https://github.com/duxingkei33/orangepi_PC_gpio_pyH3" rel="nofollow noreferrer noopener" target="_blank">orangepi_PC_gpio_pyH3</a>, Ñку включено та вона збираєтьÑÑ Ñ€Ð°Ð·Ð¾Ð¼ з цим модулем. </p> <h2><span class="mw-headline" id=".D0.9E.D0.B1.27.D1.94.D0.BA.D1.82_.D0.BA.D0.BE.D0.BD.D1.82.D1.80.D0.BE.D0.BB.D0.B5.D1.80.D1.83"><span class="mw-headline-number">1</span> Об'єкт контролеру</span></h2> <p>GPIO у OpenSCADA конфігуруєтьÑÑ ÑˆÐ»Ñхом ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ об'єкту контролеру (РиÑ.1) та параметру контролеру — один параметр GPIO Ð´Ð»Ñ Ð¾Ð´Ð½Ñ–Ñ”Ñ— плати. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:730px;"><a class="image" href="http://oscada.org/wiki/File:GPIO_obj_cntr_uk.png"><img class="thumbimage" height="563" src="../files/GPIO_obj_cntr_uk.png" width="728" /></a> <div class="thumbcaption">РиÑ.1. Вкладка конфігурації об'єкту контролеру.</div></div></div></div> <p>За цією вкладкою Ви можете вÑтановити: </p> <ul><li> Стан об'єкту контролера, а Ñаме: ÑтатуÑ, "Ввімкнено", "ВиконуєтьÑÑ" та ім'Ñ Ð±Ð°Ð·Ð¸ даних, що міÑтить цю конфігурацію.</li> <li> Ідентифікатор, ім'Ñ Ñ‚Ð° Ð¾Ð¿Ð¸Ñ ÐºÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÐµÑ€Ñƒ.</li> <li> Стан "Ввімкнено" та "ВиконуєтьÑÑ", у Ñкий об'єкт контролеру має бути переведено при запуÑку.</li> <li> Ім'Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ñ– Ð´Ð»Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ–Ð² контролеру.</li></ul> <h2><span class="mw-headline" id=".D0.9F.D0.B0.D1.80.D0.B0.D0.BC.D0.B5.D1.82.D1.80.D0.B8_.28BCM2835.2C_SUNXI.29"><span class="mw-headline-number">2</span> Параметри (BCM2835, SUNXI)</span></h2> <p>Параметр Ñ” безпоÑереднім предÑтавником-віддзеркаленнÑм GPIO, Ñкий міÑтить перелік атрибутів диÑкретного типу у кількоÑті, що відповідає цьому типу GPIO. Вкладку конфігурації параметра зображено на риÑунку 2. Збір даних здійÑнюєтьÑÑ Ð»Ð¸ÑˆÐµ у Ñинхронному режимі оÑкільки GPIO має бути швидким. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:730px;"><a class="image" href="http://oscada.org/wiki/File:GPIO_obj_prm_uk.png"><img class="thumbimage" height="563" src="../files/GPIO_obj_prm_uk.png" width="728" /></a> <div class="thumbcaption">РиÑ.2. Вкладка конфігурації параметру.</div></div></div></div> <p>За допомогою вкладки конфігурації параметру Ви можете вÑтановити: </p> <ul><li> Стан параметру: тип (BCM2835, SUNXI), "Ввімкнений" та перелік Ñтатичних функцій.</li> <li> Ідентифікатор, ім'Ñ Ñ‚Ð° Ð¾Ð¿Ð¸Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñƒ.</li> <li> Стан "Ввімкнений", у Ñкий параметр має переводитиÑÑ Ð¿Ñ€Ð¸ запуÑку.</li></ul> <p>Вкладку "Ðтрибути" GPIO зображено на риÑунку 3, Ð´Ð»Ñ BCM2835, та риÑунку 4, Ð´Ð»Ñ SUNXI. Ð”Ð»Ñ GPIO також доÑтупна вкладка "КонфігураціÑ" (РиÑ.5) з режимом Ð’Ð’ та Ñтаном інверÑÑ–Ñ—. </p> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:781px;"><a class="image" href="http://oscada.org/wiki/File:GPIO_obj_prmAttr_uk.png"><img class="thumbimage" height="652" src="../files/GPIO_obj_prmAttr_uk.png" width="779" /></a> <div class="thumbcaption">РиÑ.3. Вкладка "Ðтрибути" параметру "BCM2835".</div></div></div></div> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:881px;"><a class="image" href="http://oscada.org/wiki/File:GPIO_obj_prmAttrSUNXI_uk.png"><img class="thumbimage" height="606" src="../files/GPIO_obj_prmAttrSUNXI_uk.png" width="879" /></a> <div class="thumbcaption">РиÑ.4. Вкладка "Ðтрибути" параметру "SUNXI".</div></div></div></div> <div class="center"><div class="thumb tnone"><div class="thumbinner" style="width:781px;"><a class="image" href="http://oscada.org/wiki/File:GPIO_obj_prmCfg_uk.png"><img class="thumbimage" height="652" src="../files/GPIO_obj_prmCfg_uk.png" width="779" /></a> <div class="thumbcaption">РиÑ.5. Вкладка "КонфігураціÑ" параметру.</div></div></div></div> <p>Ð”Ð»Ñ Ð¼Ð°ÐºÑимально швидкого доÑтупу до GPIO, параметр надає три Ñтатичні функції: "mode", "get" та "put". Ці функції можуть бути викориÑтані у оточені Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼ÑƒÐ²Ð°Ð½Ð½Ñ OpenSCADA Ð´Ð»Ñ Ð¾Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ–Ñ— неординарних алгоритмів взаємодії. Ð”Ð»Ñ Ð°Ð´Ñ€ÐµÑації функції ви можете викориÑтати Ñтатичний виклик адреÑи <b>GPIO.{cntr}.{prm}.{Func}()</b> або динамічний <b>SYS.DAQ.GPIO.{cntr}.{prm}["{Func}"].call()</b>. Де: </p> <ul><li> {cntr} — ідентифікатор об'єкту контролеру;</li> <li> {prm} — ідентифікатор параметру;</li> <li> {Func} — ідентифікатор функції.</li></ul> <p>Ðаразі, також надаєтьÑÑ Ð¼Ð¾Ð¶Ð»Ð¸Ð²Ñ–Ñть динамічного Ð¿Ñ–Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ Ñтатичних функцій, Ñк найшвидшого та одночаÑно гнучкого рішеннÑ, наприклад: </p> <pre style="white-space: pre-wrap;"> function put = addr+".fnc_put"; if(put) { put(D4, vl&0x10); put(D5, vl&0x20); put(D6, vl&0x40); put(D7, vl&0x80); }</pre> <p>Та у такий конфігурабельний ÑпоÑіб, наразі, реалізовано наÑтупні шаблони низькорівневих приÑтроїв: </p> <ul><li> <a href="../Libs_LowLevelDevices.html#DHT" title="Special:MyLanguage/Libs/LowLevelDevices">GPIO: DHT11,22 (AM23XX)</a></li> <li> <a href="../Libs_LowLevelDevices.html#1602A" title="Special:MyLanguage/Libs/LowLevelDevices">GPIO: 1602A(HD44780) (1602A)</a></li></ul> <h3><span class="mw-headline" id=".D0.A4.D1.83.D0.BD.D0.BA.D1.86.D1.96.D1.8F_GPIO:_.D0.A0.D0.B5.D0.B6.D0.B8.D0.BC_.28mode.29"><span class="mw-headline-number">2.1</span> Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ GPIO: Режим (mode)</span></h3> <p><i>ОпиÑ</i>: GPIO режим, вхід або вихід.<br /> <i>Параметри</i>: </p> <table class="wikitable"> <tr> <th> ID </th> <th> Параметр </th> <th> Тип </th> <th> Режим </th> <th> По замовченню </th></tr> <tr> <td> rez </td> <td> Результат </td> <td> Ціле </td> <td> ÐŸÐ¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ </td> <td> </td></tr> <tr> <td> pin </td> <td> Штир </td> <td> Ціле </td> <td> Вхід </td> <td> </td></tr> <tr> <td> set </td> <td> Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñƒ входу: 1-Вхід, 2-Вхід (pull up), 3-Вхід (pull down), 4-Вихід </td> <td> Ціле </td> <td> Вхід </td> <td> 0 </td></tr></table> <h3><span class="mw-headline" id=".D0.A4.D1.83.D0.BD.D0.BA.D1.86.D1.96.D1.8F_GPIO:_.D0.9E.D1.82.D1.80.D0.B8.D0.BC.D0.B0.D1.82.D0.B8_.28get.29"><span class="mw-headline-number">2.2</span> Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ GPIO: Отримати (get)</span></h3> <p><i>ОпиÑ</i>: ÐžÑ‚Ñ€Ð¸Ð¼Ð°Ð½Ð½Ñ Ñ€Ñ–Ð²Ð½Ñ ÑˆÑ‚Ð¸Ñ€Ñƒ GPIO.<br /> <i>Параметри</i>: </p> <table class="wikitable"> <tr> <th> ID </th> <th> Параметр </th> <th> Тип </th> <th> Режим </th> <th> По замовченню </th></tr> <tr> <td> rez</td> <td> Результат </td> <td> Логічний </td> <td> ÐŸÐ¾Ð²ÐµÑ€Ð½ÐµÐ½Ð½Ñ </td> <td> </td></tr> <tr> <td> pin </td> <td> Штир </td> <td> Ціле </td> <td> Вхід </td> <td> </td></tr></table> <h3><span class="mw-headline" id=".D0.A4.D1.83.D0.BD.D0.BA.D1.86.D1.96.D1.8F_GPIO:_.D0.92.D1.81.D1.82.D0.B0.D0.BD.D0.BE.D0.B2.D0.B8.D1.82.D0.B8_.28put.29"><span class="mw-headline-number">2.3</span> Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ GPIO: Ð’Ñтановити (put)</span></h3> <p><i>ОпиÑ</i>: Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ€Ñ–Ð²Ð½Ñ GPIO штиру.<br /> <i>Параметри</i>: </p> <table class="wikitable"> <tr> <th> ID </th> <th> Параметр </th> <th> Тип </th> <th> Режим </th> <th> По замовченню </th></tr> <tr> <td> pin </td> <td> Штир </td> <td> Ціле </td> <td> Вхід </td> <td> </td></tr> <tr> <td> val </td> <td> Ð—Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ </td> <td> Логічне </td> <td> Вхід </td> <td> </td></tr></table> <h2><span class="mw-headline" id=".D0.97.D0.B0.D1.83.D0.B2.D0.B0.D0.B6.D0.B5.D0.BD.D0.BD.D1.8F"><span class="mw-headline-number">3</span> ЗауваженнÑ</span></h2> <p>Модуль випробувано на платах <a class="external" href="http://oscada.org/wiki/Special:MyLanguage/Using/Raspberry_Pi" title="Special:MyLanguage/Using/Raspberry Pi">Raspberry Pi 2, 3 моделі B</a> та <a class="external" href="http://oscada.org/wiki/Using/Orange_Pi" title="Using/Orange Pi">Orange Pi Zero</a>. </p><p>Ð§Ð°Ñ Ð´Ð¾Ñтупу до Ñтатичних функцій було вимірÑно у порівнÑнні із різними методами, що Ви можете подивитиÑÑ <a href="../Modules/JavaLikeCalc.html#Productivity" title="Special:MyLanguage/Modules/JavaLikeCalc">тут</a>, а загальні Ð²Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚Ð¸Ð²Ð½Ð¾Ñті наведено у наÑтупній таблиці: </p> <table class="wikitable"> <tr> <th> GPIO type </th> <th> get(), us </th> <th> put(), us </th></tr> <tr> <td> Raspberry Pi 3 </td> <td> 0.36 </td> <td> 0.27 </td></tr> <tr> <td> Orange Pi Zero </td> <td> 1.2 </td> <td> 1.2 </td></tr></table> </div><table style="border-top: dotted 2px #999999; margin-top: 20pt; color: gray;" width="100%"><tr><td style="text-align: left;" width="40%"><a href="http://oscada.org/wiki/Modules/GPIO/uk">Modules/GPIO/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>