Модуль | Ім'я | Версія | Ліцензія | Джерело | Мови | Платформи | Тип | Автор | Опис |
---|---|---|---|---|---|---|---|---|---|
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, ...). |
Contents
[hide]Модуль надає до OpenSCADA підтримку Входів/Виходів загального призначення (GPIO), заснованих на одноплатних ПК:
- BCM2835 та вище — Raspberry PI, PI2, PI3;
- SUNXI AllWinner H2 та вище — Orange Pi, Zero, One, Plus.
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 для однієї плати.
За цією вкладкою Ви можете встановити:
- Стан об'єкту контролера, а саме: статус, "Ввімкнено", "Виконується" та ім'я бази даних, що містить цю конфігурацію.
- Ідентифікатор, ім'я та опис контролеру.
- Стан "Ввімкнено" та "Виконується", у який об'єкт контролеру має бути переведено при запуску.
- Ім'я таблиці для збереження параметрів контролеру.
2 Parameters (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.
За допомогою вкладки конфігурації параметру Ви можете встановити:
- Стан параметру: тип (BCM2835, SUNXI), "Ввімкнений" та перелік статичних функцій.
- Ідентифікатор, ім'я та опис параметру.
- Стан "Ввімкнений", у який параметр має переводитися при запуску.
Вкладку "Атрибути" GPIO зображено на рисунку 3, для BCM2835, та рисунку 4, для SUNXI. Для GPIO також доступна вкладка "Конфігурація" (Рис.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 |