OpenSCADA

Модули/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, ...).

Contents

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

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. Вкладка конфигурации параметра.

С помощью вкладки конфигурации параметра Вы можете установить:

Вкладка "Атрибуты" 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(). Где:

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

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

И в такой конфигурабильный способ, на данный момент, реализованы следующие шаблоны низкоуровневых устройств:

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 - GFDLDecember 2024OpenSCADA 1+r3000