FB_GetSnmp

Der Funktionsblock ermöglicht es, auf SNMPv1 Get-Befehle zu reagieren. Sie können eine variable Anzahl an Variablen Bindings hinzufügen, um sie an einen SNMP Manager via Traps zu verschicken. Folgende Datentypen werden vom Funktionsblock unterstützt: OCTET_STRING, INTEGER32, COUNTER32, GAUGE32, TIMETICKS, OBJECT_ID

VAR_INPUT
    bEnable               :BOOL;
    bReceive              :BOOL;
    bSendTrap             :BOOL;
    bSendResponse         :BOOL;
    sLocalHostIp          :STRING(15);
    nLocalHostPort        :UDINT;
    sManagerIP            :STRING(15);
    sTcIpConnSvrAddr      :T_AmsNetId :='';
    sObjectID             :T_MAXSTRING;
    sCommunity            :STRING(60);
    iGenericTrapNumber    :INT;
    iSpecificTrapNumber   :BYTE;
    nVarBindings          :USINT := 0;
    pArrVarBinding        :POINTER TO ARRAY[1..iMAX_TRAPBUF_SIZE] OF ST_SNMP_VariableBinding;
    iError                :INT;
END_VAR

bEnable: Mit der steigenden Flanke am Eingang versucht das System einen Socket zu erzeugen. Wenn dieser erstellt wurde, wird bEnabled auf TRUE gesetzt. Der Socket kann mit einer fallende Flanke wieder geschlossen werden.

bReceive: Signalisiert eine eingehende Anfrage.

bSendTrap: Signalisiert einen zu versendenden Trap.

bSendResponse: Signalisiert eine zu versendende Antwort.

sLocalHostIP: String der die IP-Adresse (v4) des lokalen Host (z.B. '172.33.5.1') beinhaltet. Wenn mehr als ein Netzwerkadapter auf dem Rechner vorhanden sind, erlaubt der Parameter den spezifischen Adapter zu verwenden.

nLocalHostPort(optional): Die zu verwendende Port Nr.

sManagerIP: IP Adresse (IPv4) des SNMP Managers.

sTcIpConnSvrAddr: nicht unterstützt.

sObjectID: Beinhaltet den numerischen Wert der die MIB (Management Information Base)  des Gerätes repräsentiert. Maximale Länge des Strings ist 255. Der gültige Wertebereich für jede Nummer ist 0...65535 (e.g. '1.3.1.3.2555.3')

sCommunity:  Beinhaltet den SNMP Community String (e.g. public).

iGenericTrapNumber: Die SNMP Generic Trap Nummer definiert in E_SNMP_GenericTrapNumber.

iSpecificTrapNumber: Die SNMP Specific Trap Nummer wird automatisch auf 0 gesetzt, wenn iGenericTrapNumber nicht 0x06 (E_SNMP_EnterpriseSpecific) ist. Gültiger Wertebereich ist 1...255.

nVarBindings (optional):  Anzahl der Elemente von pArrVarBinding. Maximum ist iMAX_TRAPBUF_SIZE (definiert in den globalen Variablen).

pArrVarBinding (optional): Pointer auf ein Array des  SNMP_ST_VariableBinding.

iError:  Rückgabe von spezifischen SNMP Fehlercodes.

VAR_OUTPUT

    bBusy               :BOOL;
    bError              :BOOL;
    bEnabled            :BOOL;
    bReceived           :BOOL;
    iRecSNMPVersion     :INT; (* SNMP Version,sample SNMPv1 = 0 *)
    sRecCommunity       :STRING(60); (*Community Name *)
    iRecPDUType         :INT;(* SNMP PDU Type, sample GET = A0 *)
    arrRecPDURequestID  :ARRAY[0..3] OF BYTE; (* SNMP PDU Request ID *)
    iRecPDUError        :INT; (*SNMP PDU Error *)
    iRecPDUErrorIndex   :INT; (* SNMP PDU Error Index*)
    sRecObjectID        :T_MAXSTRING; (* Object Identifier *)
    arrRecObjectID      :ARRAY[0..128] OF UDINT;
    nErrID              :UDINT;
END_VAR

bBusy: Dieser Ausgang wird bei der Aktivierung des Funktionsbausteins gesetzt und bleibt gesetzt, bis eine Rückmeldung erfolgt.

bError: Dieser Ausgang wird, nachdem der bBusy-Ausgang zurückgesetzt wurde, gesetzt, sollte ein Fehler bei der Übertragung des Kommandos erfolgen.

bEnabled: Der Ausgang wird gesetzt, wenn ein Socket geöffnet wird.

bReceived: Der Ausgang wird gesetzt, wenn ein Get Befehl eingegangen ist.

iRecSNMPVersion: Angabe der SNMP Version. SNMPv1 = 0.

sRecCommunity: Angabe des Community Strings.

iRecPDUType: Angabe des PDU Types.

arrRecPDURequestID: Array mit den PDU Request IDs.

iRecPDUError: Ausgabe der PDU ErrorID.

iRecPDUErrorIndex: Ausgabe des Fehler Index.

sRecObjectID: String mit der ObejctID.

arrRecObjectID: Der Ausgang wird gesetzt, wenn ein Socket geöffnet wird.

nErrID: Liefert bei einem bError-Ausgang die TwinCAT TCP/IP Connection Server errorFehlernummer zurück.

 

Der Funktionsblock wurde mit folgender Software getestet:

SNMP Trap Watcher  (BTT Software)

Wireshark 1.2.5

iReasoning MIB Browser Personal Edition 7.0

 

Voraussetzungen

Development environment

Target system type

PLC libraries to be linked

TwinCAT version 2.8.0 or higher

PC or CX (x86)

TcpIp.Lib ( Standard.Lib; TcBase.Lib; TcSystem.Lib are included automatically )