АБАК ПЛК
Руководство по настройке и программированию
×

Настройки «Менеджера»

 
Для организации 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-менеджера закончена.
Онлайн помощь создана в Dr.Explain