Модули/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/ru - GFDL | July 2026 | OpenSCADA 1+r3070