<?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&amp;group=page-Modules%2FGPIO&amp;action=page&amp;filter=&amp;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>&nbsp;• ‎<a class="mw-pt-progress mw-pt-progress--complete" href="../../ru/Modules/GPIO.html" title="Модули/GPIO (100% translated)">mRussian</a>&nbsp;• ‎<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&amp;0x10);
  put(D5, vl&amp;0x20);
  put(D6, vl&amp;0x40);
  put(D7, vl&amp;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>