SNMPAgent, manages the SNMP Agent

Home / Knowledge Base / Manualistica / Programmazione IEC 61131-3 / Libreria gestione protocollo SNMP / SNMPAgent, manages the SNMP Agent

Il Simple Network Management Protocol (SNMP) è un protocollo di rete senza connessione che utilizzando connessioni UDP sulle porte 161 e 162, consente di semplificare la configurazione, gestione e supervisione (monitoring) di apparati collegati in una rete. Questo blocco funzione esegue la gestione del protocollo SNMP agendo come Agent.

Attivando l'FB si pone in ascolto l'agente sulla porta definita in Port, sono accettate il numero di connessioni contemporanee definite in Connections. In Community occorre definire l'indirizzo della stringa di definizione della comunità accettata dall'Agent.

Per la definizione delle variabili gestite dall'Agent è definita nella libreria una apposita struttura dati. La struttura SNMPVARIABLEDEFS permette di definire le variabili su cui l'Agent può operare. In VDefs occorre fornire l'indirizzo di allocazione della struttura ed in VNr occorre definire il numero delle variabili definite. Il FB gestisce autonomamente il comando SnmpWalk permettendo di “camminare” tra tutte le variabili definite.

Function block
CODESYS: Non disponibile
LogicLab: eLLabSNMPLib

Enable (BOOL) Comando attivazione agent.

SpyOn (BOOL) Se attivo permette di spiare il funzionamento della FB.

Port (UINT) Porta UDP su cui porre in ascolto l'Agent. Solitamente si utilizza la porta 161.

Connections (USINT) Numero di connessioni contemporanee gestite dal FB (Da 1 a 4).

Community (@STRING) Indirizzo allocazione stringa definizione Community.

VDefs (@SNMPVARIABLEDEFS) Indirizzo allocazione struttura SNMPVARIABLEDEFS.

VNr (UDINT) Numero di variabili definite.

Timeout (UINT) Timeout esecuzione query SNMP (mS).

Fault (BOOL) Attivo per un loop se errore gestione.

Trigger di spy

Se SpyOn attivo è possibile utilizzare utilizzare la console di spionaggio per verificare il funzionamento della FB. Sono previsti vari livelli di triggers.

Errori

In caso di errore eseguendo immediatamente dopo la funzione SysGetLastError è possibile rilevare il codice di errore. Fare riferimento alla tabella seguente per la descrizione.

Esempi

Come utilizzare gli esempi.
Nell'esempio viene gestito un agente SNMP, l'agente pubblica 3 variabili. Nella immagine a lato lo screenshot del comando SnmpWalk (Download) che permette di visulizzare tutti gli oggetti pubblicati dall'agent. Per eseguire l'esempio occorre importare la libreria eLLabSNMPLib nel progetto (Articolo).

LogicLab (Ptp137)
PROGRAM ST_SNMPAgent
VAR
    SNMPAgt : SNMPAgent; (* SNMP agent *)
    VDefs : ARRAY[0..2] OF SNMPVARIABLEDEFS; (* Variable definitions *)
    Value : DINT := [-1350]; (* Integer variable *)
END_VAR

// *****************************************************************************
// PROGRAM "ST_SNMPAgent"
// *****************************************************************************
// A simple SNMP agent that responding to manager inquiries. It publish 3 OIDs.
// -----------------------------------------------------------------------------

    // -------------------------------------------------------------------------
    // INITIALIZATION                                                        
    // -------------------------------------------------------------------------
    // Program initialization

    IF (SysFirstLoop) THEN

        // Parametrize the SNMP Agent FB.

        SNMPAgt.SpyOn:=TRUE; //Spy command
        SNMPAgt.Port:=161; //Agent port
        SNMPAgt.Connections:=2; //Accepted connections
        SNMPAgt.Community:=ADR('public'); //Community
        SNMPAgt.VDefs:=ADR(VDefs); //Variable definitions
        SNMPAgt.VNr:=SIZEOF(VDefs)/SIZEOF(VDefs[0]); //Variable number
        SNMPAgt.Timeout:=1000; //Timeout (mS)

        // Definition of the variables on wich the Agent can operate.

        VDefs[0].VType:=SNMP_VT#INTEGER; //Variable type
        VDefs[0].Writable:=TRUE; //Variable can be written
        VDefs[0].OID:=ADR('1.3.6.1.4.1.36955.1'); //OID definition
        VDefs[0].Address:=ADR(Value); //Variable address
        VDefs[0].Length:=SIZEOF(Value); //Variable length

        VDefs[1].VType:=SNMP_VT#OSTRING; //Variable type
        VDefs[1].Writable:=FALSE; //Variable cannot be written
        VDefs[1].OID:=ADR('1.3.6.1.4.1.36955.2'); //OID definition
        VDefs[1].Address:=ADR('Hello!'); //Variable address
        VDefs[1].Length:=Sysstrlen(VDefs[1].Address); //Variable length

        VDefs[2].VType:=SNMP_VT#IPADDRESS; //Variable type
        VDefs[2].Writable:=FALSE; //Variable cannot be written
        VDefs[2].OID:=ADR('1.3.6.1.4.1.36955.3'); //OID definition
        VDefs[2].Address:=ADR('192.168.0.12'); //Variable address
        VDefs[2].Length:=Sysstrlen(VDefs[2].Address); //Variable length
    END_IF;

    // -------------------------------------------------------------------------
    // SNMP AGENT MANAGEMENT                                                 
    // -------------------------------------------------------------------------
    // Manage the SNMP Agent.

    SNMPAgt(Enable:=TRUE); //SNMP Agent

// [End of file]

Ti è stato utile questo articolo ?