Обмен по SNMP не работает в DOS и Windows CE.
В качестве шаблона канала обмена используется шаблон UniversalPLC_type4 (группа Источники/Приемники / Пользовательские драйверы / TYPE12).
В реальном времени каналу, к которому привязан шаблон, присваивается подтип 108 с дополнением 10.
Атрибут Дополнительно шаблона должен содержать следующую строку:
SNMP:AGENT=<IP-адрес>;[COMMUNITY=<область>;]OID=<ID>;
Параметры строки:
область – PRIVATE (для записи) или PUBLIC. Если подстрока COMMUNITY=<область> отсутствует, то значение параметра устанавливается автоматически в зависимости от команды:
GET_NEXT или GET – PUBLIC;
SET – PRIVATE;
ID – ID объекта в дереве данных SNMP (дерево представляет собой последовательность вида .число.число…).
Атрибут C0 задает команду:
0 – GET_NEXT (устанавливается автоматически, если шаблон привязан к каналу CALL.ChGroupReq);
1 – GET (устанавливается автоматически, если шаблон привязан к каналу типа INPUT);
2 – SET (устанавливается автоматически, если шаблон привязан к каналу типа OUTPUT);
Атрибут C5 содержит код ошибки:
1 – у агента не хватает места;
2 – несуществующее имя;
3 – некорректное значение;
4 – обнаружена попытка записи, когда запись запрещена;
5 – общая ошибка;
16 – ошибка обмена;
17 – не открыт сеанс.
По команде GET считывается одна переменная и записывается в атрибут (2,In).
По команде SET выполняются следующие действия:
считывается текущее значение переменной;
значение атрибута (9,Q) записывается в переменную.
По команде GET_NEXT в аргументы канала CALL.ChGroupReq записывается структура данных SNMP, начиная с заданного объекта.
Тип данных канала/аргумента должен соответствовать типу данных SNMP. Специфические типы данных SNMP:
counter64 – 64-разрядное число, записывается либо в канал DOUBLE FLOAT, либо в 2 аргумента канала CALL.ChGroupReq (в аргумент с младшим номером пишутся байты 4-7, в следующий аргумент – байты 0-3);
IP-адрес, counter32 – тип данных канала/аргумента должен быть DINT (long);
octet string – записывается в аргументы канала CALL.ChGroupReq. Если в считываемой строке есть непечатный символ, все байты преобразуются в формат HEX и записываются через запятую. Если тип аргумента – STRING или DINT, аргумент меняет тип на длинную строку (ср. Запись длинных строк в канал CALL );
bit – записывается в атрибут/аргумент с типом данных DINT (long) если длина строки меньше или равна 4 байтам;
OID – записывается в аргумент с типом данных STRING;
sequence – не поддерживается;
OPAQUE – записывается так же, как bit.
Если в канале установлен флаг Отладка (49, DBG), в протокол профайлера (файл <имя файла prj>_<порядковый номер узла>.txt) записывается следующая строка:
<OID>=<считанное значение>