Как работать с универсальными линиями ввода-вывода GPIO?

Как работать с универсальными линиями ввода-вывода GPIO?

В роутерах RTU предусмотрены 4 универсальных порта ввода-вывода GPIO (маркировка I1, I2, I3 и I4).




Выводы являются независимыми, могут быть программно сконфигурированы в операционной системе и предполагают три режима использования:

        1. Подключение резистивных датчиков.


        2. Управление нагрузкой. В данном режиме выводы I1 - I4 можно объединять для увеличения нагрузочной способности выхода.


        3. Измерение напряжения (режим работы по умолчанию).


PULLUP - "Подтягивающий" резистор к питанию.

PULLDOWN - "Подтягивающий" резистор к заземлению.

ADC - АЦП.


1. Конфигурирование GPIO через WEB

Для настройки GPIO через Web-интерфейс, необходимо перейти во вкладку Службы ---> I/O Lines.




Далее можно выбрать необходимый режим:




АЦП - измерение напряжения.

Сухой контакт - при включении аналоговый вход роутера с помощью резистора подтягивается к напряжению 5В. Подтяжка необходима для правильного функционирования аналогового входа в режиме сухого контакта.

Открытый коллектор - устанавливается активный уровень на выходе "открытый коллектор".

Чтобы измененные через WEB-интерфейс настройки сохранились при следующем включении роутера, поставьте флажок в столбце "Сохранять настройки при загрузке".


2. Конфигурирование GPIO через консоль

Каждый GPIO имеет определенный индекс и направление по умолчанию в операционной системе. Приводим таблицу соответствий:




     При управлении каждой линией I/O могут быть использованы два сигнала:

  • PULLDOWN — “нижний ключ”, притягивающий линии I/O к земле. Может принимать следующие состояния:
    1 – PULLDOWN включен,
    0 – PULLDOWN выключен.
  • PULLUP # — “верхний ключ”, включает источник тока в линии I/O.
    Обратите внимание: сигнал инвертирован, поэтому команды подаются следующим образом:
    1 – PULLUP # выключен,
    0 – PULLUP # включен.

Узнать состояние сигналов PULLUP и PULLDOWN на каждом входе можно с помощью команды:

cat /dev/pux/value

где x — номер входа I/O.


Переключение линий I/O в режим "АЦП"

     Чтобы переключить вход (например, вход IO1) в режим АЦП, подайте следующие команды:

echo high > /dev/pu1/direction
echo low  > /dev/pd1/direction

Это настраивает порт на вход (отключает “верхний ключ”) и отключает “нижний ключ”.


Переключение линий I/O в режим "Сухой контакт"

     Чтобы переключить вход (например, IO1) в режим "Сухой контакт", выполните:

echo low > /dev/pd1/direction

Затем можно управлять "верхним ключом":

echo low  > /dev/pu1/direction
echo high > /dev/pu1/direction

Переключение линий I/O в режим "Открытый коллектор"

     Чтобы переключить вход (например, IO1) в режим "Открытый коллектор", выполните:

echo high > /dev/pu1/direction

Затем можно управлять "нижним ключом":

echo high > /dev/pd1/direction
echo low  > /dev/pd1/direction

Для остальных портов настройка режима работы осуществляется аналогично.


Считывание значений с линий I/O

     Считать непреобразованные значения с каждого входа АЦП можно с помощью команды:

getinfo adcx

где x — номер входа I/O.