Promotic
WikipediaLinkedInYoutubeTwitterFacebook

PmSNMP - Ovladač pro komunikaci protokolem SNMP

Ovladač slouží pro komunikaci se zařízeními, které podporují protokol SNMP - viz Komunikace protokolem SNMP.
 
Před použitím tohoto ovladače v aplikaci PROMOTIC je vhodné přečíst kapitolu: Komunikace pomocí PROMOTIC ovladačů.
 
Základní vlastnosti ovladače:
- Použití tohoto ovladače je vázáno na zakoupení licence: PmSNMP. S freeeware verzí PmFree nebo při vývoji aplikace (s vývojovou licencí pro testovací účely) je tato komponenta funkční vždy.
- Komunikace je přes Ethernet.
- Aplikace PROMOTIC je z hlediska této komunikace vždy MASTER (tzn. že dává podnět k přenosu dat).
- Ovladač je začleněn do systému PROMOTIC pomocí objektu PmComm.

Ovladač podporuje použití objektu PmCommData (pro čtení i zápis proměnných v PLC). Objekt PmCommMsg se používá pouze pro speciální pomocné zprávy, které zjistí názvy proměnných, které lze vyčítat ze zařízení (viz dále).

Pro snadné přidání tohoto ovladače do aplikace je vhodné použít: Předkonfigurace ve skupině "SNMP protokol"

- Ovladač podporuje SNMP verze 1.
- Ovladač nepoužívá MIB databázi. Externími programy však lze MIB databázi číst a tak zjistit adresy (OID) požadovaných parametrů.
- Ovladač nepodporuje SNMP TRAP.
 
Podporované datové typy:
- Integer: 4-bajt celé číslo (od -2 147 483 648 do +2 147 483 647) (pro čtení i zápis).
- Unsigned32: 4-bajt celé číslo (od 0 do +4 294 967 295) (pro čtení i zápis).
- Counter: 4-bajt celé číslo (od 0 do +4 294 967 295) (pro čtení i zápis).
- OctetString: Textový řetězec ve formátu "HexaString" (binární data ve formátu hexadecimálních hodnot uložených v textovém řetězci) (pro čtení i zápis).

Je to univerzální typ umožňující nést řadu dalších nespecifikovaných typů. Například textový řetězec, datum a čas, fyzická adresa (MAC), pole, atd. Bohužel data tohoto typu nenesou informaci o typu dat v něm zabalených. K rozšifrování obsahu je proto nutná znalost databáze MIB.

Tip: V metodě Pm.TransformValue je implementována podpora pro práci s typem "HexaString".

V ovladači lze význam obsahu tohoto typu upřesnit dodatečnou informací (viz popis ItemId). Jedná se o tyto "podtypy" (v SNMP se tomu říká "Composed syntax"):

- DisplayString = v typu OctetString je uložen textový řetězec
- DateTime = v typu OctetString je uložen datum a čas

- ObjectIdentifier: Textový řetězec obsahující OID (jen pro čtení).
- TimeTicks: Počet sekund od zapnutí zařízení (jen pro čtení).
- IpAddress: Textový řetězec ve formátu IPv4 adresy (jen pro čtení).
 

Doporučené hodnoty parametrů:

Doporučené hodnoty pro Parametry Ethernet:
Číslo TCP/UDP portu161 (standardní číslo portu pro SNMP protokol)
Typ Ethernet přenosuUDP
Popis a doporučené hodnoty pro Parametry protokolu:
Velikost přijímacího bufferu SNMP agentaMaximální délka požadavkové zprávy (v bajtech), kterou může ovladač poslat do SNMP agenta. Podle této hodnoty se pak rozdělují proměnné z jednoho objektu PmCommData do komunikačních zpráv.

Přednastavená hodnota je 512.

Název komunity pro ReadOnly Community string je textový parametr, který identifikuje tzv. SNMP komunitu, ve které jsou odesilatel a příjemce členy. To je použito k implementaci jednoduchého bezpečnostního mechanismu založeného na komunitách.

Pro "ReadOnly" přístup je často používán community string "public".

Tento parametr lze za běhu aplikace změnit a přečíst pomocí metod: SetProtParam("CommunityRO") a GetProtParam("CommunityRO").

Název komunity pro ReadWriteViz předchozí popis u "Název komunity pro ReadOnly".

Pro "ReadWrite" přístup je často používán community string "private".

Tento parametr lze za běhu aplikace změnit a přečíst pomocí metod: SetProtParam("CommunityRW") a GetProtParam("CommunityRW").

Popis komunikace pomocí objektů PmCommData

Pro tento ovladač lze používat objekty PmCommData.

Proměnné v objektu PmCommData (nebo ještě lépe proměnné v objektu PmData s datovým rozšířením ExtComm) mohou být v libovolném množství, libovolného typu v libovolném pořadí. Ovladač sám optimálním způsobem vnitřně vytvořenými komunikačními zprávami vyčítá data ze zařízení.

Proměnné se vyčítají všechny (pokud je povolen konfigurátor Obnovování dat povoleno). Při zápisu do proměnné se posílá do zařízení jen tato jedna proměnná (pokud je povolen konfigurátor Automaticky zasílat při zápisu do položky).

 
Popis konfigurátoru ItemID:

ItemId je textový identifikátor položky, který slouží k adresaci veličiny v zařízení. Z konfigurátoru ItemID ovladač pozná, jak se má hodnota položky přijímat nebo vysílat. Text lze buď napsat ručně, nebo sestavit pomocí okna, které se otevře tlačítkem vpravo od konfigurátoru. Pro zadání lze použít Makro výraz (vyhodnocuje se při spouštění aplikace).

Identifikátor je většinou jen OID adresa. Tyto adresy lze zjistit buď v MIB databázi nebo pomocí zprávy typu SNMP Walk - viz dále. Lze zadávat jen OID adresy které představují hodnotu s podporovaným datovým typem.

Volitelně lze za touto adresou zadat znak "středník" a za ním uvést podtyp - to se zadává pouze pro parametr typu OctetString - viz Podporované datové typy.

Příklady:

1.3.6.1.2.1.1.1.0 = Adresa pro parametr, ve kterém je hodnota popisu zařízení. Tato hodnota je však uložena v typu OctetString. Získaná hodnota tedy bude obsahovat celkem nečitelný text ve formatu HexaString. Skutečný text lze získat zpracováním této hodnoty metodou TransformValue(241), nebo jednodušeji zadat v ItemId i podtyp:
1.3.6.1.2.1.1.1.0;DisplayString = Hodnota popisu zařízení s převodem HexaString na dekódovaný text.
1.3.6.1.4.1.18248.20.1.2.1.1.2.1 = Hodnota teploty (typ Integer) teploměru firmy Papouch.
 
Popis konfigurátoru PmCommData > Parametry > Speciální parametry:
Pevná část OIDPočáteční adresa OID, která se bude opakovat v ItemId více proměnných. Pokud se zde zadá tato počáteční adresa, pak v ItemId těchto proměnných lze zadat jen zbytek této adresy.

Popis komunikace pomocí objektů PmCommMsg

Objekty PmCommMsg lze použít pro speciální komunikace, které nelze provést objektem PmCommData. V případě tohoto ovladače jsou implementovány následující zprávy:
 
- SNMP Get: Vrací hodnotu parametru spolu s jeho datovým typem.
- V záložce Data-zaslání jsou proměnné::
OID (String) = OID adresa parametru
- V záložce Data-příjem jsou proměnné::
ErrCode (Byte) = Číslo chyby. Viz Seznam SNMP chybových kódů.
DType (String) = Název datového typu parametru.
Value (Variant) = Hodnota parametru.
 
- SNMP GetNext: Stejné jako předchozí zpráva "SNMP Get" ale navíc vrací adresu OID "dalšího" parametru.
- V záložce Data-zaslání jsou proměnné::
OID (String) = OID adresa parametru
- V záložce Data-příjem jsou proměnné::
ErrCode (Byte) = Číslo chyby. Viz Seznam SNMP chybových kódů.
NextOID (String) = OID adresa dalšího parametru.
DType (String) = Název datového typu parametru.
Value (Variant) = Hodnota parametru.
 
- SNMP Walk: Tato zpráva cyklicky přenáší zprávy typu "SNMP GetNext" a to tak, že vyčtená hodnota "NextOID" v aktuálním čtení je použita jako OID v následujícím čtení. Toto provádí tak dlouho dokud nedostane chybovou odpověď. "SNMP Walk" tímto postupem "projde" celý strom parametrů.
- V záložce Data-zaslání jsou proměnné::
OID (String) = Adresa počátečního parametru. Je vhodné zadat hodnotu 1.3.6.1.2.1.1.1.
- V záložce Data-příjem jsou proměnné::
Content (String) = Text obsahující většinou mnoho řádků. V každém řádku jsou informace o jednom parametru (OID adresa, datový typ, hodnota).

Seznam SNMP chybových kódů

Hodnotu chybového kódu lze přečíst z proměnné ErrCode v záložce Data-příjem objektu PmCommMsg.
Hodnota Popis
0 = NoError Nebyla žádná chyba.
1 = TooBig Velikost odpovědi je příliš velká pro přenos.
2 = NoSuchName Nebyl nalezen objekt s požadovaným názvem.
3 = BadValue Požadovaná SNMP operace chtěla změnit proměnnou ale je chyba syntaxe nebo hodnoty.
4 = ReadOnly Požadovaná SNMP operace chtěla změnit proměnnou, kterou není povoleno změnit.
5 = GenErr Obecná, blíže nespecifikovaná chyba.
6 = NoAccess Daná SNMP proměnná není přístupná.
7 = WrongType Hodnota je typu, který není konzistentní s požadovaným typem dané proměnné.
8 = WrongLength Hodnota má délku, která je nekonzistentní s požadovanou délkou pro danou proměnnou.
9 = WrongEncoding Hodnota obsahuje Abstract Syntax Notation One (ASN.1) encoding, který je nekonzistentní s tágem pole ASN.1.
10 = WrongValue Hodnota nemůže být přiřazena do proměnné.
11 = NoCreation Proměnná neexistuje a nelze ji vytvořit.
12 = InconsistentValue Hodnota je nekonzistetní s hodnotama jiných objektů.
13 = ResourceUnavailable Přiřazení hodnoty do proměnné vyžaduje alokaci zdrojů, které nejsou dostupné.
14 = CommitFailed Selhalo nastavení proměnné, která je součástí skupiny proměnných.
15 = UndoFailed Selhalo nastavení proměnné, která je součástí skupiny proměnných a také selhalo zpětné nastavení jiných proměnných.
16 = AuthorizationError Nastala chyba autorizace.
17 = NotWritable Do proměnné nelze zapsat nebo ji nelze vytvořit.
18 = InconsistentName Proměnná neexistuje. Nelze ji vytvořit protože takto pojmenovaný objekt je nekonzistentní s ostatními objekty.
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice