Broadcom BCM 2835 GPIO. В основном для и используется в Raspberry Pi.
Лицензия:
GPL
Введение
Модуль предоставляет в систему OpenSCADA поддержку источников данных Входов/Выходов Общего Назначения (GPIO) платы Raspberry PI, основанной на чипе BCM2835. BCM2835 GPIO на Raspberry Pi насчитывает до 32 штырей некоторый из которых могут осуществлять альтернативные функции вроде: I2C, UART, SPIO. Для доступа к этому GPIO в общих функциях использовано библиотеку libBCM2835, которая включена и собирается вместе с этим модулем.
1. Объект контролера
GPIO в OpenSCADA конфигурируется путём создания нового объекта контролера (Рис.1) и объекта параметра контролера — один параметр GPIO этой платы.
Рис.1. Вкладка конфигурации объекта контролера.
По этой вкладке Вы можете установить:
Состояние контроллера, а именно: Статус "Включен", "Запущен" и имя базы данных, которая содержит эту конфигурацию.
Идентификатор, имя и описание контролера.
Состояние, в которое контроллер должен быть переведен при загрузке: "Включать" и "Запускать".
Имя таблицы для сохранения параметров контроллера.
2. Объект параметра контроллера
Объект параметра является непосредственным представлением-отражением GPIO, который содержит перечень атрибутов логического типа в общем количестве 32. Вкладка конфигурации объекта параметра изображена на Рисунке 2. Сбор данных осуществляется только в синхронном режиме поскольку GPIO должен быть быстрым.
Рис.2. Вкладка конфигурации объекта параметра.
С помощью вкладки конфигурации объекта параметра Вы можете установить:
Состояние параметра: тип, "Включенный" и перечень статических функций.
Идентификатор, имя и описание параметра.
Состояние, в который параметр может переводиться при загрузке: "Включать".
Вкладка "Атрибуты" для GPIO изображена на Рисунке 3. Для GPIO также доступна вкладка "Конфигурация" (Рис.4) с режимом ВВ и состоянием инверсии.
Рис.3. Вкладка "Атрибуты" объекта параметра.
Рис.4. Вкладка "Конфигурация" объекта параметра.
Для максимально быстрого доступа к GPIO объект параметра предоставляет три статические функции: "mode", "get" и "put". Эти функции могут быть использованы в окружении программирования системы OpenSCADA для организации неординарных алгоритмов взаимодействия. Для адресации функции вы можете использовать статический вызов адреса BCM2835.{cntr}.{prm}.{Func}() или динамический SYS.DAQ.BCM2835.{cntr}.{prm}["{Func}"].call(). Где:
{cntr} — идентификатор объекта контроллера;
{prm} — идентификатор объекта параметра;
{Func} — идентификатор функции.
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. Детальнее Вы можете посмотреть на странице и задаче.
Время доступа к статичным функциям было измерено в сравнении с различными методами, что Вы можете посмотреть тут.
Для создания производных DAQ шаблонов, с использованием статических функций, Вы также можете применить динамическое подключение к ним, вроде такого:
В такой конфигурабильный способ на данный момент реализованы следующие шаблоны низкоуровневых устройств: