Обмен по протоколу SNMP

Обмен по SNMP не работает в DOS и Windows CE.

В качестве шаблона канала обмена используется шаблон UniversalPLC_type4 (группа Источники/Приемники / Пользовательские драйверы / TYPE12).

В реальном времени каналу, к которому привязан шаблон, присваивается подтип 108 с дополнением 10.

Атрибут Дополнительно шаблона должен содержать следующую строку:

SNMP:AGENT=<IP-адрес>;[COMMUNITY=<область>;]OID=<ID>;

Параметры строки:

   областьPRIVATE (для записи) или PUBLIC. Если подстрока COMMUNITY=<область> отсутствует, то значение параметра устанавливается автоматически в зависимости от команды:

   GET_NEXT или GETPUBLIC;

   SETPRIVATE;

   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>=<считанное значение>