From OpenSCADAWiki
Jump to: navigation, search
(Updating to match new version of source page)
Line 32: Line 32:
 
* Имя таблицы для сохранения параметров контроллера.
 
* Имя таблицы для сохранения параметров контроллера.
  
== Parameters (BCM2835, SUNXI) ==
+
== Параметры (BCM2835, SUNXI) ==
The parameter is the direct representative-reflection of the GPIO, which contains a list of attributes of a discrete type in an amount that corresponds to this GPIO type. The parameter configuration tab is shown in Figure 2. The data collection is performed only in synchronous mode since the GPIO should be fast.
+
Параметр является непосредственным представителем-отражением GPIO, который содержит перечень атрибутов дискретного типа в количестве, которое соответствует этому типу GPIO. Вкладка конфигурации параметра изображена на рисунке 2. Сбор данных осуществляется только в синхронном режиме поскольку GPIO должен быть быстрым.
  
 
[[file:GPIO_obj_prm_ru.png|center|frame|Рис.2. Вкладка конфигурации параметра.]]
 
[[file:GPIO_obj_prm_ru.png|center|frame|Рис.2. Вкладка конфигурации параметра.]]

Revision as of 09:31, 30 April 2018

Other languages:
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), основанных на одноплатных ПК:

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);
}

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

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