Definition der Peripherieadressen des SNMP-Treibers

Die SNMP-Daten werden von einem externen oder internen SNMP-Agents (Live-Agent; für die Parametrierung siehe Parametrierung des SNMP-Treibers) zur Verfügung gestellt und auf DPE-Werte in der WinCC OA Datenbank abgebildet. Für die Datenpunkte, welche die gesammelten Daten repräsentieren, muss eine SNMP-Peripherieadresse parametriert werden. Die Peripherieadresse wird über ein Adressenkonfig, welches über das PARA-Modul zu dem Datenpunkt hinzugefügt wird, parametriert. Klicken Sie mit der rechten Maustaste auf den Datenpunkt im PARA-Modul und selektieren Sie die Option Konfig einfügen. Das Konfig einfügen-Panel wird geöffnet. Selektieren Sie die Peripherieadresse-Option und dann die SNMP-Option aus der Combobox. Das SNMP-Adressenkonfig wird geöffnet:

Abbildung 1. SNMP -Adresskonfig
Anmerkung: Wenn im Zusammenhang mit SNMP die Fehlermeldung "Syntax 5" (Datatype conversion incorrect) angezeigt wird, muss bei der SNMP-Adresse noch ein ".0" am Ende hinzugefügt werden!
Anmerkung: Alt/Neu-Vergleich existiert nicht für SNMP-Adressen. Verwenden Sie die Glättung!

AgentID

Mit der AgentID wählen Sie den Agent, von dem Sie Daten empfangen möchten. Wenn der Agent für diesen Manager über das SNMP-Agent anlegen-Panel parametriert wurde, entspricht die AgentID der dort festgelegten Nummer.

OID

OID ist der SNMP Object Identifier aus dem MIB File des Agents. Im Falle von WinCC OA ist das der OID der WinCC OA MIB und ansonsten ein OID der MIB-Datei des Agents (eines Netzwerkgeräts). Im Falle eines WinCC OA Agents können Sie ein WinCC OA MIB-Element mittels des MIB-Browsers (...) auswählen.

Hinzufügen von Datenpunktelementen durch Verwendung des MIB-Browsers

Beachten Sie, dass Sie die Indexnummer des Datenpunktelements aus dem SNMP Live Agent-Parametrierungspanel zum Ende des OIDs, der über den MIB-Browser selektiert wurde, hinzufügen müssen. Der OID sollte z.B. folgendermaßen aussehen: 1.3.6.1.4.1.13828.2.1.20.1.3.1 (die letzte Nummer '1' ist der Datenpunktindex aus dem Live Agent Parametrierungspanel)

Die Peripherieadresse hat die generelle Form Agentnummer_OID[B]. Das B ist optional und wird bei Tabellen angehängt, wenn eine ganze Spalte der Tabelle ausgelesen werden soll (Block-Abfrage). Das Ergebnis muss dann auf ein Dyn-Element parametriert sein. Sonst muss der OID genau das gewünschte MIB-Element bezeichnen.

So kann man z.B. anstelle eines einzelnen DPEs, das der Live Agent mit dem entsprechenden Index zur Verfügung stellt, 1.3.6.1.4.1.13828.2.1.20.1.2.idx, mittels 1.3.6.1.4.1.13828.2.1.20.1.2B alle Elemente auf einem dyn-DPE abbilden.

Array-Abfragen

Alternativ kann auch eine Liste von bestimmten OIDs gelesen werden (Array-Abfrage). Hierbei ist es notwendig die Peripherieadresse für ein dyn-DPE zu parametrieren und die einzelnen OIDs mit Pipes (= "|") zu verknüpfen, z.B. "1.3.6.1.2.1.2.2.1.10.3|1.3.6.1.2.1.2.2.1.10.7|1.3.6.1.2.1.2.2.1.10.9". Die einzelnen OIDs werden auf den entsprechenden Index des dynamischen DPEs abgebildet.

Anmerkung:
  • Beim Lesen einer Liste von OIDs mittels des Trennzeichens "|" ist es nicht erlaubt, Leerzeichen zu verwenden.

  • Die Liste an OIDs ist auf 4096 Zeichen (inklusive der Trennzeichen) begrenzt.

  • Doppelte oder mehrfache Trennzeichen "|" werden auf ein Trennzeichen getrimmt.

  • Bei der Verwendung fehlerhafter Adressen aufgrund eines syntaktischen Fehlers bricht der Lesevorgang ab und keine Daten werden gelesen. Eine entsprechende Fehlermeldung wird im LogViewer ausgegeben

  • Bei der Abfrage einer hohen Zahl von OIDs kann es dazu kommen, dass der entsprechende Get-Request einen Time-Out erhält oder den Fehler, dass die Abfrage zu groß ist. Um dies zu umgehen, kann mittels des Zusatzes ":<n>" (n = Anzahl an OIDs pro Request) die Abfrage der Array-Adressen auf mehrere Get-Requests aufgeteilt werden, z.B. fragt die Array-Adresse "1.3.6.1.2.1.2.2.1.1.1|1.3.6.1.2.1.2.2.1.1.2|1.3.6.1.2.1.2.2.1.1.3:2" insgesamt 3 OIDs ab, jedoch werden pro Get-Request maximal 2 OIDs verarbeitet.

    Es liegt beim Anwender zu entscheiden, wieviele OIDs innerhalb eines Get-Requests abgehandelt werden können, da WinCC OA nicht in der Lage ist, festzustellen, wie groß die Antwort der Anfrage sein wird.

Per Default wird der Originalwert am DPE nicht mehr aktualisiert, wenn die Abfrage eines OIDs aus der Array-Adresse fehlerhaft war, auch wenn wenn die restlichen OIDs erfolgreich abgefragt wurden. In diesem Fall wird eine entsprechende Fehlermeldung im Logviewer ausgegeben und der zuletzt gültige Wert angezeigt.

Durch den Config-Eintrag [snmpdrv] arrayQueryErrorHandlingMode = 1 aktualisiert der Treiber weiterhin den Originalwert und ersetzt die Werte von fehlerhaften OIDs durch vordefinierte Ersatzwerte. Die Ersatzwerte können für die jeweiligen Transformationstypen mit den entsprechenden Config-Einträgen (arrayQueryErrorValueVisibleString, arrayQueryErrorValueInteger32, etc.) definiert werden, siehe auch [snmpdrv].

Anmerkung:

Welche Werte ersetzt werden, hängt vom Verhalten des verwendeten SNMP-Agent ab. So werden entweder nur die Werte der fehlerhaften OIDs oder aber auch die Werte aller anderen OIDs ersetzt. Bei bestimmten SNMP Agents werden beispielsweise nach einer nicht konfigurierten oder fehlerhaften OID keine nachfolgenden Werte gesendet, z.B.:

Request <OID1>|<OID2>|<OID3>|<OID4>
Response <value1>|<error>|<null>|<null>

In diesem Fall werden sowohl <error> als auch <null> durch den entsprechenden Ersatzwert ersetzt.

Auslesen der Managertables durch Verwendung des MIB-Browsers

Um die Managertable über den MIB-Browser auszulesen, beispielsweise zum Ermitteln des Manager-Status, konfigurieren Sie den Agent folgendermaßen:

Die Portnummer muss der mit SNMPortNr in der Config-Datei festgelegten Portnummer des PMONs entsprechen:

[pmon]
allowSNMP ="Yes"
SNMPPortNr = 4700
v1ReadCommunity = "public"
v1WriteCommunity = "public"

Die Adresse kann mit Hilfe des MIB-Browsers konfiguriert werden.

Fügen Sie den SNMP-Managerindex der Konsole am Ende der OID ein. Die OID soll folgendermaßen aussehen: 1.3.6.1.4.1.13828.2.1.10.1.6.5 (5 ist die SNMP-Managernummer der Konsole). Der Managerindex beginnt mit 1.

Der SNMP-Treiber bietet die Möglichkeit nach Daten (OID, Wert der default Transformation und Datentyp als Text und Nummer) eines Agents zu browsen. Im internen Datenpunktelement Browse.Start vom Typ _SNMPV3Entity bzw. _SNMPAgent wird der Start-OID angegeben, ab welchen gebrowst werden soll. Wenn kein Start-OID eingetragen wurde, wird automatisch mit dem Start-OID "1.3.6.1" gebrowst. Die Ergebnisse werden im jeweiligen internen Datenpunktelement Browse.Result ausgegeben. Für weitere Informationen siehe interne Datenpunkte.

Anmerkung: Um die Anzahl der abgefragten OIDs zu beschränken, kann an die Start-OID die gewünschte Anzahl der OIDs angefügt werden. Hierfür dient der Doppelpunkt ":" als Trennzeichen. z.B. "1.2.3.4:10", hierbei werden 10 OIDs beginnend mit der OID 1.2.3.4 abgefragt. Bitte beachten Sie, dass pro OID 3 Elemente (OID, Wert der default Transformation und Datentyp als Text und Nummer) zurückgeliefert werden.

Subindex

Der Subindex hat in Sende- und Empfangsrichtung unterschiedliche Bedeutung. In Senderichtung wird das Verschicken von Arrays prinzipiell nicht unterstützt d.h. hier ist der Subindex immer 0. Die Ausnahme bildet eine 64bit-Zahl, wo mit Subindex 1 der höherwertige Teil der Zahl gesetzt wird.

In Empfangsrichtung bedeutet Subindex 2 immer die OID des empfangenen Wertes (Datentyp Text). Dies ist notwendig, wenn eine Tabelle spaltenweise eingelesen wird, damit man die einzelnen Zeilen auch einem OID zuordnen kann. Unter Subindex 0 wird auf den tatsächlichen Wert zugegriffen. Bei Uint64 wird mit Subindex 1 der höherwertige Teil der Zahl geliefert. Gepollt werden kann immer nur auf Elemente mit Subindex 0 (Polling = der Manager sendet eine Anforderung an den Agent und ein Agent sendet eine Antwort an den Manager).

Anmerkung: Um die Verwendung eines subindex von 2 zu ermöglichen, ist es nötig, ebenfalls einen subindex von 0 zu konfigurieren.

Treibernummer

Die Treibernummer entspricht der Nummer des verwendeten SNMP-Managers.

Trans. Art

Hier wird der Datentyp eingestellt. Der Datentyp steht im MIB File des Agents und muss korrekt eingestellt werden. Die Datentypen werden im Kapitel Datentypen und Debug-Levels beschrieben.

Richtung

Die Richtung kann ein Ein-, Aus- oder Ein-/Ausgang sein. Eingang bedeutet, dass die Daten von WinCC OA empfangen werden, der Ausgang wiederum, dass WinCC OA die Daten externen SNMP-Managern zur Verfügung stellt und Ein-/Ausgang bedeutet, dass das DPE sowohl als Eingang als auch Ausgang dienen kann.

Empfangsmodus

  • Spontan: Mittels sogenannter Traps können Werte spontan empfangen werden. Wenn das Empfangen von Traps aktiviert ist (enableTraps = "Yes" im ConfigFile), werden diese auf den internen Datenpunkt des SNMP-Managers (_SNMPManager.Trap) abgebildet. Unter PayloadOID sieht man die OID, von der der Trap kommt, und unter PayloadValue den zugehörigen Wert. D.h. auf diesen DPE steht immer der zuletzt empfangene Trap. Nun ist es auch möglich die eingehenden Traps auf einzelne DPE mit parametrierter Adresse abzubilden. Hierzu ist es notwendig einen Agent mit der entsprechenden IP Adresse anzulegen (sofern er nicht bereits vorhanden ist), damit die empfangenen Traps zugeordnet werden können. Wenn man sich also vom lokalen Agent Traps schicken lässt, muss man auch für diesen Agent einen Datenpunkt anlegen. Die Portnummer spielt dabei keine Rolle und wird ignoriert. Danach parametriert man das _address Konfig. Der Trapwert wird auf dem PayloadValue-Element des _SNMPManager-Datenpunkts angezeigt und der OID auf dem PayloadOID-Element. Wird nur von Eingangsadressen unterstützt.

  • Einzelabfrage: Wenn der Empfangsmodus auf "Einzelabfrage" gesetzt ist, ist eine Abfrage nur dann möglich, wenn sie mittels des internen Datenpunktes _DriverCommon.SQ ausgelöst wird.

  • Polling: Der Agent wird je nachdem wie die Einstellungen in der Pollgruppe definiert sind, periodisch gepollt. Alle parametrierten Agents werden z.B. alle 5 Sekunden (abhängig von den Einstellungen für die Pollgruppe) für die Eingangsrichtung gepollt.

Agent-Version

Hier kann angegeben werden, ob es sich um einen V1/2 Agent oder um eine V3 Entity handelt.

Anmerkung: Da ein einzelnes Query (Abfrage auf eine OID) >100ms dauert (100ms lokal; über ein Netzwerk kann es entsprechend länger dauern), ist beim Einstellen des Pollintervalls darauf zu achten, dass das Intervall nicht zu klein gewählt wird, da sonst nicht alle OIDs im angegebenen Pollintervall gepollt werden können. Ist z.B. ein Intervall von 10s zu kurz für 130 OIDs, so werden manche Adressen nur alle 20s gepollt (doppeltes Intervall).

Beachten Sie bitte, dass eine Block-Abfrage in einzelne (SNMP-) Get Befehle aufgeteilt wird, eine Array-Abfrage innerhalb eines einzelnen Befehls behandelt wird.

Wie bereits erwähnt werden die Agents auf Grund der Einstellungen der Pollgruppe gepollt. Die Pollgruppe wird über ein separates Panel parametriert:

Abbildung 2. Pollgruppen-Parametrierung

Das Panel erlaubt eine Pollgruppe zu erstellen oder zu löschen, eine Pollzeit und Synchronisationszeit oder beide anzugeben. Die Synchronisationszeit bedeutet, dass die Daten monatlich, wöchentlich, täglich, Alle Stunden oder Minuten synchronisiert werden. Siehe auch Kapitel Pollgruppen.

MIB-Browser

Der MIB-Browser ermöglicht es, die OID eines MIB-Elementes aus einer MIB-Datei zu wählen. Hierbei können eigene MIB-Dateien eingespielt und hierarchisch durchsucht werden.

MIBs

ETM MIB
Lädt die ETM MIB Datei, welche mit WinCC OA ausgeliefert wird.
MIB Datei:
Die Schaltfläche ermöglicht es, eine MIB-Datei zu wählen und diese dann mittels des MIB-Browser zu durchsuchen.

Agent Browsing

Browse / Aktualisieren
Die "Browse / Aktualisieren" Schaltfläche erlaubt das Abfragen des SNMP Agents nach einer Liste der verfügbaren MIBs. Diese MIBs werden innerhalb des internen Datenpunktes des SNMP Agents gespeichert. Siehe "Laden" Schaltfläche unterhalb.
Laden
Die "Laden" Schaltfläche ermöglicht es die Ergebnisse des letzten "Browse / Aktualiseren" Prozesses zu laden und innerhalb des MIB-Browser anzuzeigen.
Abbildung 3. MIB-Browser