Модулі/GPIO - OpenSCADAWiki

# Модулі/GPIO

This page is a translated version of the page Modules/GPIO and the translation is 100% complete.

English • ‎mRussian • ‎Українська

Модуль | Ім'я | Версія | Ліцензія | Джерело | Мови | Платформи | Тип | Автор | Опис
--- | --- | --- | --- | --- | --- | --- | --- | --- | ---
GPIO | GPIO | 2.1 | GPL2 | daq_GPIO.so | en,uk,ru,de | x86,x86_64,ARM | DAQ | Роман Савоченко | GPIO різних одноплатних ПК: Broadcom BCM 2835 та більше (Raspberry Pi, ...), SUNXI AllWinner H2 та більше (Orange Pi Zero, ...).

Модуль надає до OpenSCADA підтримку Входів/Виходів загального призначення (GPIO), заснованих на одноплатних ПК:

- BCM2835 та вище — Raspberry PI, PI2, PI3;
- SUNXI AllWinner H2 та вище — Orange Pi, Zero, One, Plus.

GPIO на BCM2835 та вище, на Raspberry Pi, нараховує до 32 штирів, деякі з яких можуть здійснювати альтернативні функції на кшталт: I2C, UART, SPIO. Для доступу до цього GPIO використано GPIO частину бібліотеки libBCM2835, яку включено та вона збирається разом з цим модулем.

GPIO на SUNXI AllWinner H2 та вище, на Orange Pi, може мати 9 основних та 6 додаткових банків із 32 штирями у кожному, деякі з яких можуть здійснювати альтернативні функції на кшталт: I2C, UART, SPIO. Для доступу до цього GPIO використано GPIO частину бібліотеки orangepi_PC_gpio_pyH3, яку включено та вона збирається разом з цим модулем.

## 1 Об'єкт контролеру

GPIO у OpenSCADA конфігурується шляхом створення нового об'єкту контролеру (Рис.1) та параметру контролеру — один параметр GPIO для однієї плати.

Рис.1. Вкладка конфігурації об'єкту контролеру.

За цією вкладкою Ви можете встановити:

- Стан об'єкту контролера, а саме: статус, "Ввімкнено", "Виконується" та ім'я бази даних, що містить цю конфігурацію.
- Ідентифікатор, ім'я та опис контролеру.
- Стан "Ввімкнено" та "Виконується", у який об'єкт контролеру має бути переведено при запуску.
- Ім'я таблиці для збереження параметрів контролеру.

## 2 Параметри (BCM2835, SUNXI)

Параметр є безпосереднім представником-віддзеркаленням GPIO, який містить перелік атрибутів дискретного типу у кількості, що відповідає цьому типу GPIO. Вкладку конфігурації параметра зображено на рисунку 2. Збір даних здійснюється лише у синхронному режимі оскільки GPIO має бути швидким.

Рис.2. Вкладка конфігурації параметру.

За допомогою вкладки конфігурації параметру Ви можете встановити:

- Стан параметру: тип (BCM2835, SUNXI), "Ввімкнений" та перелік статичних функцій.
- Ідентифікатор, ім'я та опис параметру.
- Стан "Ввімкнений", у який параметр має переводитися при запуску.

Вкладку "Атрибути" GPIO зображено на рисунку 3, для BCM2835, та рисунку 4, для SUNXI. Для GPIO також доступна вкладка "Конфігурація" (Рис.5) з режимом ВВ та станом інверсії.

Рис.3. Вкладка "Атрибути" параметру "BCM2835".
Рис.4. Вкладка "Атрибути" параметру "SUNXI".
Рис.5. Вкладка "Конфігурація" параметру.

Для максимально швидкого доступу до GPIO, параметр надає три статичні функції: "mode", "get" та "put". Ці функції можуть бути використані у оточені програмування OpenSCADA для організації неординарних алгоритмів взаємодії. Для адресації функції ви можете використати статичний виклик адреси GPIO.{cntr}.{prm}.{Func}() або динамічний SYS.DAQ.GPIO.{cntr}.{prm}["{Func}"].call(). Де:

- {cntr} — ідентифікатор об'єкту контролеру;
- {prm} — ідентифікатор параметру;
- {Func} — ідентифікатор функції.

Наразі, також надається можливість динамічного підключення статичних функцій, як найшвидшого та одночасно гнучкого рішення, наприклад:

    function put = addr+".fnc_put";
    if(put) {
      put(D4, vl&0x10);
      put(D5, vl&0x20);
      put(D6, vl&0x40);
      put(D7, vl&0x80);
    }

Та у такий конфігурабельний спосіб, наразі, реалізовано наступні шаблони низькорівневих пристроїв:

- GPIO: DHT11,22 (AM23XX)
- GPIO: 1602A(HD44780) (1602A)

### 2.1 Функція GPIO: Режим (mode)

Опис: GPIO режим, вхід або вихід.
Параметри:

ID | Параметр | Тип | Режим | По замовченню
--- | --- | --- | --- | ---
rez | Результат | Ціле | Повернення |
pin | Штир | Ціле | Вхід |
set | Встановлення режиму входу: 1-Вхід, 2-Вхід (pull up), 3-Вхід (pull down), 4-Вихід | Ціле | Вхід | 0

### 2.2 Функція GPIO: Отримати (get)

Опис: Отримання рівня штиру GPIO.
Параметри:

ID | Параметр | Тип | Режим | По замовченню
--- | --- | --- | --- | ---
rez | Результат | Логічний | Повернення |
pin | Штир | Ціле | Вхід |

### 2.3 Функція GPIO: Встановити (put)

Опис: Встановлення рівня GPIO штиру.
Параметри:

ID | Параметр | Тип | Режим | По замовченню
--- | --- | --- | --- | ---
pin | Штир | Ціле | Вхід |
val | Значення | Логічне | Вхід |

## 3 Зауваження

Модуль випробувано на платах Raspberry Pi 2, 3 моделі B та Orange Pi Zero.

Час доступу до статичних функцій було виміряно у порівнянні із різними методами, що Ви можете подивитися тут, а загальні вимірювання продуктивності наведено у наступній таблиці:

GPIO type | get(), us | put(), us
--- | --- | ---
Raspberry Pi 3 | 0.36 | 0.27
Orange Pi Zero | 1.2 | 1.2

Modules/GPIO/uk - GFDL | July 2026 | OpenSCADA 1+r3070