Библиотека ONI включает в себя протокол ONI GPIO. Принцип работы протокола – использование стандартных GPIO и аналоговых параметров.
Опрос всех контроллеров ONI происходит по протоколу ONI GPIO по умолчанию. Поэтому добавлять протокол в узел не требуется. Никаких специализированных настроек протокол не имеет.
В зависимости от версии ПЛК, по умолчанию в протокол добавлены модули:
Настройки модулей задаются в элементах:
•Встроенные дискретные;
•Встроенные аналоговые;
•Управление V_OUT (только для PLC-W GPIO (v7_4_x) и PLC-270 GPO (v_8_5_x))

Модули имеет одну настройку – Номер модуля, а также несколько каналов с настройкой Name. Количество каналов зависит от версии ПЛК.

Ссылочный файл (тип ярлыка) ссылается на директорию /sys/bus/iio/devices/iio, в котором есть определенный набор файлов.
Используются файлы: name, in_voltage0_raw, in_voltage0_scale. По файлу name определяется имя канала, которое соотносится с именем тега в MasterSCADA 4D. Файлы in_voltage0_raw и in_voltage0_scale используются для вывода напряжения в MasterSCADA 4D: содержимое файлов считывается, перемножается и делится на 1000. Результат записывается в тег.
Если при считывании возникает ошибка, тег принимает значение uncertain.
Если не находится имя для добавленного тега, тег не опрашивается, а в MasterSCADA 4D выводится соответствующее сообщение.
При запуске проекта на исполнение протокол подключается к GPIO, и начинается опрос модулей.
Возможно, что модули в этот момент уже опрашиваются собственной службой ПЛК. В этом случае опроса модулей со стороны MasterSCADA 4D не происходит, при запуске проекта на исполнение появится соответствующая ошибка.
Для остановки службы нужно ввести следующую команду в терминале контроллера:
systemctl stop wb-mqtt-gpio
Для полного отключения службы опроса модулей можно воспользоваться следующей командой:
systemctl disable wb-mqtt-gpio
Для просмотра списка всех дискретных сигналов используется команда: gpioinfo

В список выводится номер "чипов" - cpiochip0, cpiochip1 и т.д. (0 - это встроенные входы), а также модули расширения.
Для модулей расширения используются имена MOD1-3, а затем TX, RX и RTS. Этими сигналами происходит управление или получение сигнала от встроенных в контроллер плат.
Модули вывода располагаются в отдельных "чипах" - cpiochip1, 2 и т.д. Т.е. первый модуль будет принадлежать чипу cpiochip1. Имя образуется следующим образом: 'EXT + номер модуля символ "_" + имя канала'.
Если подключен модуль, которого нет в списке, то можно вызвать команду gpioinfo, получить имена каналов и использовать их.
Если линия используется, то вместо unused будет выведено имя приложения.
Предопределенные каналы имеют тип данных структура. Они содержат три параметра:
•Value – читаемое или записываемое значение соответствующего типа (REAL, LREAL, BOOL, INT, DINT, STRING, BYTE, WORD, DWORD, LWORD, DT, LINT);
•SourceTime – метка времени, формируемая MasterSCADA 4D при получении и отправке данных, тип данных DT;
•StatusCode – признак качества, начальное значение которого установлено в BadWaitingForInitialData для того, чтобы до получения значения по связи не выполнялась запись начального значения в архив, а также выдача начального значения на выходные каналы. Если в дальнейшем опрос произойдет успешно, то значение параметра поменяется на Good. Если при первом опросе возникнет ошибка, то параметр установится в BadNoCommunication. Если при опросах сначала будет установлено Good, а потом возникнет ошибка, то параметр примет значение BadOutOfService (при этом в Value останется последнее полученное значение).
Вид структуры канала в дереве системы:

Для получения информации о состоянии связи с модулями ввода-вывода используются параметры Отказ и Ошибка протокола в группе Встроенные модули:

Параметр Отказ имеет тип значения BOOL. Если параметр принимает состояние TRUE, то это значит, что исполнительная система не может установить связь с данным модулем.
Параметр Ошибка имеет тип значения STRING. Если у исполнительной системы нет связи со всеми модулями ввода/вывода, то параметр принимает значение No connection.