Модуль | Ім'я | Версія | Ліцензія | Джерело | Мови | Платформи | Тип | Автор | Опис |
---|---|---|---|---|---|---|---|---|---|
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 Параметри
Параметр є безпосереднім представником-віддзеркаленням 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.
Access time to the static functions was measured comparing to the different methods which you can see here and the GPIO performance measurement provided into the following table:
GPIO type | get(), us | put(), us |
---|---|---|
Raspberry Pi 3 | 0.36 | 0.27 |
Orange Pi Zero | 1.2 | 1.2 |