From OpenSCADAWiki
Jump to: navigation, search
This page is a translated version of the page Modules/GPIO and the translation is 100% complete.

Other languages:
English • ‎российский • ‎українська
Модуль Ім'я Версія Ліцензія Джерело Мови Платформи Тип Автор Опис
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