Настройки «Менеджера»
Для организации SNMP протокола «Менеджер» на ПЛК необходимо добавить блок SNMP.SNMP_GET_REQUEST. Ниже приведена таблица входов и выходов данного блока.
Входы/выходы блока SNMP.SNMP_GET_REQUEST
|
в/в
|
Название
|
Тип
|
Значение
|
Комментарий
|
|
Input
|
xExecute
|
BOOL
|
|
Запуск
|
|
sHost
|
STRING(100)
|
|
IP адрес агента
| |
|
sOwnIP
|
STRING(100)
|
|
IP адрес менеджера
| |
|
asOIDs
|
ARRAY [0..(gc_uiMaxOIDs - 1)] OF STRING((gc_iMax ValueLength - 1))
|
|
Массив OID
| |
|
iNumberOfOIDs
|
INT
|
|
Номер OID в массиве
| |
|
uiPeerPort
|
UINT
|
161
|
Порт отправителя
| |
|
uiSendPort
|
UINT
|
161
|
Порт приемника
| |
|
eRequestType
|
RequestType
|
|
Тип Запроса*
| |
|
sCommunity
|
STRING
|
‘public’
|
Сообщество, по умолчанию ‘public’
| |
|
xClosePeer
|
BOOL
|
|
Закрытие порта UDP
| |
|
uiTimeout
|
STRING
|
1000
|
Таймаут
| |
|
bySNMPVersion
|
SNMPVersion
|
SNMPVersion. V1
|
Версия SNMP, по умолчанию V1
| |
|
Output
|
xBusy
|
BOOL
|
|
Когда работает -TRUE
|
|
xDone
|
BOOL
|
|
Когда пришел ответ - TRUE
| |
|
xError
|
BOOL
|
|
Когда ошибка - TRUE
| |
|
abResponse
|
ARRAY[0..(gc_uiMaxTelegramLength - 1)] OF BYTE
|
|
| |
|
|
aSNMPValues
|
ARRAY [0..gc_uiMaxSNMPValues] OF SNMPValue
|
|
|
|
iSize
|
INT
|
|
Размер передаваемой информации (в байтах)
|
*Тип запроса (RequestType) – 0-Get request, 1-Get next request
Далее определим необходимые переменные и напишем код программы.
PROGRAM PLC_PRG
VAR
SNMP_GET_REQUEST_0: SNMP.SNMP_GET_REQUEST;
START_snmp: BOOL;
IPagent: STRING(100):='192.168.52.60';
IPmanager: STRING(100):= '192.168.52.59';
NumberOID: INT:=1;
Peerport: UINT := 161;
SendPort: UINT := 161;
Community: STRING := 'public';
ClosePeer: BOOL;
TimeoutSNMP: UINT:=1000;
massiv_OID: ARRAY [0..(snmp.Param.gc_uiMaxOIDs - 1)] OF STRING((snmp.Param.gc_iMaxValueLength - 1));
END_VAR
massiv_OID[0]:='1.3.6.1.4.1.12' ;
SNMP_GET_REQUEST_0(
xExecute:=Start_snmp ,
sHost:=IPagent ,
sOwnIP:=IPmanager ,
asOIDs:= massiv_OID ,
iNumberOfOIDs:=NumberOID ,
uiPeerPort:=Peerport ,
uiSendPort:= SendPort,
eRequestType:= 0,
sCommunity:=Community ,
xClosePeer:=ClosePeer ,
uiTimeout:= TimeoutSNMP,
bySNMPVersion:=0,
xBusy=> ,
xDone=> ,
xError=> ,
abResponse=> ,
aSNMPValues=> ,
iSize=> );
Для корректной работы программы необходимо установить состояние TRUE у параметра START_snmp: выбрать подготовленное значение TRUE и нажать на клавиатуре сочетание клавиш Ctrl+F7.

Изменение значения параметра START_snmp
Для поля massiv_OID[0] укажите требуемый OID в первой ячейке массива (в данном примере – 1.3.6.1.4.1.12, хотя допустимы и другие идентификаторы). Этот OID будет использоваться для запросов к агенту.
Обратите внимание, что переменная massiv_OID показывает ошибку следующего содержания:
C0032: Cannot convert type 'ARRAY [0..(snmp.Param.gc_uiMaxOIDs - 1)] OF STRING((snmp.Param.gc_iMaxValueLength - 1))' to type 'ARRAY [0..(gc_uiMaxOIDs - 1)] OF STRING((gc_iMaxValueLength - 1))'.
Данная ошибка появляется на предкомпиляции, не мешает загрузке программы и ее функционированию, и обусловлена, вероятно, ошибками в библиотеке. Рекомендуется оставить без внимания.
На этом настройка программы для SNMP-менеджера закончена.