Модуль | Ім'я | Версія | Ліцензія | Джерело | Мови | Платформи | Тип | Автор | Опис |
---|---|---|---|---|---|---|---|---|---|
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
Модуль надає до 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 Параметри (BCM2835, SUNXI)
Параметр є безпосереднім представником-віддзеркаленням GPIO, який містить перелік атрибутів дискретного типу у кількості, що відповідає цьому типу GPIO. Вкладку конфігурації параметра зображено на рисунку 2. Збір даних здійснюється лише у синхронному режимі оскільки GPIO має бути швидким.
За допомогою вкладки конфігурації параметру Ви можете встановити:
- Стан параметру: тип (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 |