Модуль | Имя | Версия | Лицензия | Источник | Языки | Платформы | Тип | Автор | Описание |
---|---|---|---|---|---|---|---|---|---|
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), основанных на одноплатных ПК:
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, которая включена и собирается вместе с этим модулем.
GPIO в OpenSCADA конфигурируется путём создания нового объекта контролера (Рис.1) и параметра контролера — один параметр GPIO для одной платы.
По этой вкладке Вы можете установить:
Параметр является непосредственным представителем-отражением GPIO, который содержит перечень атрибутов дискретного типа в количестве, которое соответствует этому типу GPIO. Вкладка конфигурации параметра изображена на рисунке 2. Сбор данных осуществляется только в синхронном режиме поскольку GPIO должен быть быстрым.
С помощью вкладки конфигурации параметра Вы можете установить:
Вкладка "Атрибуты" GPIO изображена на рисунке 3, для BCM2835, и рисунке 4, для SUNXI. Для GPIO также доступна вкладка "Конфигурация" (Рис.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); }
И в такой конфигурабильный способ, на данный момент, реализованы следующие шаблоны низкоуровневых устройств:
Описание: GPIO режим, вход или выход.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Целое | Возврат | |
pin | Штырь | Целое | Вход | |
set | Установка режима входа: 1-Вход, 2-Вход (pull up), 3-Вход (pull down), 4-Выход | Целое | Вход | 0 |
Описание: Получение уровня штыря GPIO.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
rez | Результат | Логический | Возврат | |
pin | Штырь | Целое | Вход |
Описание: Установка уровня GPIO штыря.
Параметры:
ID | Параметр | Тип | Режим | По умолчанию |
---|---|---|---|---|
pin | Штырь | Целое | Вход | |
val | Значение | Логическое | Вход |
Модуль опробован на платах 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 | March 2024 | OpenSCADA 0.9.7 |