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_uk.png|center|frame|Рис.2. Вкладка конфігурації параметру.]]
 
[[file:GPIO_obj_prm_uk.png|center|frame|Рис.2. Вкладка конфігурації параметру.]]

Revision as of 09:32, 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