This is topic Групповое чтение SNMP in forum TRACE MODE 6 бесплатная Базовая версия / TRACE MODE 6 free Base version at Форум TRACE MODE: техническая поддержка.


To visit this topic, use this URL:
http://forum.adastra.ru/ultimatebb.php/ubb/get_topic/f/31/t/001025.html

Posted by avorobiev (Участник № / Member № 5452) on :
 
Не получается произвести групповое чтение с устройства, работающего по SNMP.

Создаю канал CALL.ChGroupReq с несколькими аргументами. Делаю привязку к драйверу. Запускаю проект - сниффер WireShark пишет, что производится один запрос GET_NEXT (должно быть несколько, по числу аргументов), на который выдается один ответ от устройства.

Считывание по одному параметру (GET, не через CALL.ChGroupReq) производится корректно.

Версия 6.7.2 базовая
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Надо обновиться до текущего релиза 6.07.7 (с нашего сайта).

Необходимо удостовериться, что настройки источника для канала CALL.ChGroupReq правильные и, в частности, указанный OID существует и описывает группу объектов.

Надо посмотреть на атрибут 4 (ДОСТОВЕРНОСТЬ) этого канала и убедиться в том, что была попытка обмена и она недостоверна.
По значению в атрибуте C5 можно посмотреть, какой код ошибки возвращается.
Можно задать ключ DEBUG=400 в файле конфигурирования запуска узла (TMcom_xx.cnf) и в протоколе профайлера посмотреть сообщения об ошибках обмена.
 
Posted by avorobiev (Участник № / Member № 5452) on :
 
Правильно ли создаю источник? Выбираю TYPE12/UniversalPLC_type4, все оставляю по умолчанию и в строку "Дополнительно" прописываю "SNMP:AGENT=192.168.0.56;OID=.1.3.6.1.3.55.4.1.0;".

Нужно чтобы считало 6 параметров: начиная с .1.3.6.1.3.55.4.2.0 до .1.3.6.1.3.55.4.7.0.

Далее в узле RTM создаю канал CALL, в котором выбираю тип вызова ChGroupReq, задаю период раз 3 секунды (на вкладке Системные->Основные), делаю привязку (на вкладке Системные->Дополнительно) на "источник.Значение". Затем создаю 6 аргументов типа IN.

На экране у элемента "Текст" делаю привязку к созданному каналу call.arg000, call.arg001...В общем все как в примере для Modbus ROC_MDB_TCP.


После запуска C5 у источника, как и аргументы канала call остаются равными 0. WireShark показывает один запрос GET_NEXT .1.3.6.1.3.55.4.1.0, на который приходит корректный ненулевой ответ.
 
Posted by avorobiev (Участник № / Member № 5452) on :
 
Ах да, версия была 6.07.7. Не там посмотрел в первый раз.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
OID=.1.3.6.1.3.55.4.1.0 означает, что это индивидуальная переменная с OID=.1.3.6.1.3.55.4.1
Для запроса группы переменных OID не должен заканчиваться символом 0.
Указываемый OID должен быть дейcтвительно групповым и поддерживаться конкретным агентом.
Агент SNMP сам по своим настройкам определяет, относится ли заданный для группового запроса OID к групповым или индивидуальным.
Структура SNMP-переменных для каждого агента может быть собственной (за исключением некоторых стандартных переменных, определенных протоколом).
В Вашем конкретном примере групповой запрос мог бы быть реализован, если бы у агента была группа с OID, равным 1.3.6.1.3.55.4, в которую входили бы указанные индивидуальные переменные.
При этом для группового запроса надо задавать OID=.1.3.6.1.3.55.4.1
 
Posted by avorobiev (Участник № / Member № 5452) on :
 
Спасибо, заработало.
Если выставить "SNMP:AGENT=192.168.0.56;OID=.1.3.6.1.3.55.4;"., то считывает 6 переменных: с .1.3.6.1.3.55.4.1.0 по .1.3.6.1.3.55.4.6.0.

А есть ли способ начинать считывание не с первой переменной в группе SNMP? Если выставить "SNMP:AGENT=192.168.0.56;OID=.1.3.6.1.3.55.4.1;"., то не работает.
 
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
 
Согласно протоколу SNMP запрос типа GET_NEXT может быть адресован только к OID, который является точкой ветвления.
 


Новости АСУ ТП / News | SCADA / HMI | Обучение / Trainings | Свяжитесь с нами / Contact Us



Powered by Infopop Corporation
UBB.classic™ 6.7.2