Ethernet/IP Protokol

Ethernet/IP Protokol

Podporované typy a verzie zariadení  
Konfigurácia komunikačnej linky
Parametre protokolu linky
Konfigurácia komunikačnej stanice
Parametre protokolu stanice
Konfigurácia meraných bodov
Literatúra
Zmeny a úpravy
Revízie dokumentu

Podporované typy a verzie zariadení


Protokol Ethernet/IP je jeden z najrozšírenejších komunikačných protokolov v USA určený komunikáciu s PLC, motormi a inými zariadeniami procesnej úrovne. Protokol spravuje a vyvíja združenie ODVA, ktorého súčasťou sú firmy ako Rockwell, Honeywell alebo Schneider Electric.

Protokol Ethernet/IP je adaptáciou protokolu CIP (Common Industrial Protocol) na zbernicu Ethernet.

Implementácia v D2000 podporuje:

  • komunikáciu cez TCP/IP

  • explicitné správy (komunikácia typu request/response)

  • štandardnú adresáciu objektov (Class/Instance/Attribute)

  • symbolickú adresáciu objektov (proprietárna implementácia Rockwell)

  • optimalizáciu symbolickej adresácie objektov - tzv. Symbol Instance Addressing

  • optimalizáciu čítania viacerých hodnôt pomocou správ Multiple Service Packet Service

  • prácu so štruktúrami (UDT)

  • prácu s nespojovanými správami (Unconnected Messages)

  • prácu so spojovanými správami (Connected Messages) s použitím správ Forward Open / Large Forward Open

Implementácia v D2000 nepodporuje:

  • komunikáciu cez UDP

  • implicitné správy (I/O messaging)

Komunikácia bola testovaná voči:

  • Allen-Bradley Micro820 

  • 1769 CompactLogix 5370 Controller (1769-L18ER/A)

  • ControlLogix EtherNet/IP bridge Module (1756-EN2TR/C) pripojenému na 1756-L85E ControlLogix 5580 Controller (1756-L85E/B)

  • SLC 5/05 1747-L553/C Ethernet Processor (v režime zapuzdrených PCCC správ)

  • MicroLogix 1100 (v režime zapuzdrených PCCC správ)

Pozn: firmware Micro820 vo verzii 6 podporoval prácu so symbolickými adresami iba čiastočne. Fungovalo čítanie a zápis, ale nie browsovanie - neexistoval class Symbol Object [0x6b]. Verzia firmware 10.0.12 už podporovala aj browsovanie.
Pozn: CompactLogix 5370 podporoval prácu so symbolickými adresami, browsovanie ako aj optimalizáciu práce v symbolickom móde s použitím Symbol Instance ID.

Konfigurácia komunikačnej linky


Kategória komunikačnej linky: TCP/IP-TCP:

  • TCP Parametre - je nutné zadať parametre servera:

    • Host: meno servera vo formáte INET (meno alebo číselná adresa a.b.c.d). V prípade redundantných systémov je možné zadávať aj viacero mien/adries oddelených čiarkami

    • Port: číslo TCP portu (0 až 65535). Štandardný port Ethernet/IP protokolu je 44818

    • Číslo linky: nepoužité, zadajte 0

Pozn: ak sú na linke TCP/IP-TCP všetky stanice v stave StOFF (alebo v simulácii), TCP spojenie bude zatvorené. Takto je možné riadiť TCP komunikáciu zo skriptu pomocou tell príkazu STSTAT.

Parametre protokolu linky


Dialóg konfigurácia linky - záložka Parametre protokolu.
Ovplyvňujú niektoré voliteľné parametre protokolu. Môžu byť zadané nasledovné parametre protokolu linky:

Tab. č. 1

Kľúčové slovo

Plný názov

Popis

Jednotka

Náhradná hodnota

RT

Read Wait Timeout

Čakanie medzi jednotlivými čítaniami dát z komunikácie, pokiaľ neboli načítané žiadne dáta.

sec.mss

0.010

BS

Batch Size

Počet správ po odoslaní ktorých sa čaká Send Delay.

-

1...1000

SD

Send Delay

Čakanie po poslaní jednej dávky správ obsahujúcej Batch Size správ. Účelom je nepreťažiť zariadenie príliš veľkým počtom správ.
Pozn: pri testovanom zariadení Micro820 boli pozorované problémy pri poslaní cca 200 správ (browsovanie inštancií triedy File Object [0x37] s nulovým čakaním. Čakanie 1 ms problém vyriešilo.

sec.mss

0.001

MPR

Max Pending Requests

Maximálny počet nepotvrdených správ. Ak počet nepotvrdených správ dosiahne hodnotu parametra, čaká sa pred vyslaním ďalšej správy. Hodnota 1 znamená, že sa čaká na potvrdenie každej správy (nemôže tak dôjsť k preťaženiu PLC v dôsledku intenzívnej komunikácie).

 

1..100

SE

Write Symbolic: Array Elements

Spôsob zápisu polí pri symbolickej adresácii (Rockwell). Podporené sú tri módy:

  • 0 .. Array Index + Item Count: zapísané sú všetky elementy definované pre konkrétny meraný bod (Array Index+1 resp. Item Count, podľa toho, čo je väčšie)

  • 0 .. Array Index: minimalistická varianta - zapísané sú položky 0 až Array Index

  • 0 .. Max Array Index: maximalistická varianta - zapísané sú položky 0 až Max Array Index, pričom Max Array Index je najväčší počet elementov zo všetkých meraných bodov s rovnakou symbolickou adresou (v rámci stanice)

-

0 .. Array Index

OW

Optimized write of array element

Optimalizácia zápisu použitá, pokiaľ sa zapisuje iba jeden element poľa. Optimalizácia spočíva v tom, že sa zapisuje iba jeden konkrétny prvok a špecifikuje sa jeho index (v protokole udávaný ako Member ID).
Pozn: testované zariadenie Micro820 optimalizáciu podporovalo, testovací softvérový server nie.

-

False

MP

Max Packet Size

Maximálna veľkosť Ethernet/IP správ (Unconnected Explicit message) - podľa normy 504 bajtov.
Pozn: v symbolickom móde (Rockwell) je možné pracovať aj s väčšími poliami s použitím proprietárnych služieb Read Tag Fragmented Service a Write Tag Fragmented Service.
Pozn: táto veľkosť nezahŕňa Encapsulation Header (24 bajtov - Command/Length/Session Handle/Status/Sender Context/Options) ani hlavičku SendRRData/Common Packet Format (16 bajtov - Interface Handle/Timeout/Item1 + Length/Item2 Length).
Pozn: hodnoty väčšie ako 504 bajtov sa použijú iba ak parametre Use Connected TransportLarge Forward Open majú hodnotu YES (používajú sa Connected Explicit Messages a CIP spojenie sa vytvára správou Large Forward Open).
Pozn: pre konkrétny CompactLogix (1769-L24ER-QBFC1B/A LOGIX5324ER) bola maximálna hodnota parametra 4002. Pre väčšie hodnoty už odpoveď na správu Large Forward Open obsahovala chybový kód:
Received Rockwell LargeForwardOpen Response [xDB] with GeneralStatus: Connection failure [x01], Additional status: <09><01><A2><0F> INVALID CONNECTION SIZE

Bytes

504

RS

Response Timeout

Timeout na prijatie odpovede na výzvu. Pokiaľ nie je do tohto času prijatá odpoveď na výzvu, je to považované za chybu a TCP spojenie je zatvorené.

sec.mss

10.000

SO

Optimized Work with Symbolic Names

Optimalizácia práce v symbolickom móde (Rockwell) - tzv. Symbol Instance Addressing. Namiesto použitia symbolických mien sa pri čítaní pracuje s inštančnými identifikátormi (Symbol Instance ID). Symbolické meno sa na inštančný identifikátor prevedie rovnakou službou, ako sa používa pri browsovaní.
Pozn: Nie každé zariadenia alebo verzia firmware Rockwell podporuje túto optimalizáciu (testované Micro820 s firmware 10.0.12 ani 11.0.11 optimalizáciu nepodporovalo). V takomto prípade, pokiaľ vráti chybový kód Service not supported [0x08], optimalizácia bude vypnutá až do reštartu KOM procesu alebo do znovuuloženia konfigurácie príslušnej linky.

-

False

TND

Tcp No Delay

Nastavenie "Tcp No Delay"=True parametra spôsobí nastavenie nízkoúrovňového parametra socketov TCP_NODELAY, čím sa vypne prednastavené spájanie paketov.

-

False

Konfigurácia komunikačnej stanice


  • Komunikačný protokol: Ethernet/IP.

  • Adresa stanice sa nezadáva. Je podporovaných aj viacero staníc (napr. kvôli rôznym časovým parametrom stanice).

 Parametre protokolu stanice


Dialóg konfigurácia stanice - záložka Parametre protokolu.
Ovplyvňujú niektoré voliteľné parametre protokolu. Môžu byť zadané nasledovné parametre protokolu stanice:

Tab. č. 2

Parameter

Popis

Jednotka / rozmer

Náhradná hodnota

Parameter

Popis

Jednotka / rozmer

Náhradná hodnota

Route Path for Unconnected Send (hex)

Octet string reprezentujúci parameter Route_Path (typu padded EPATH, t.j. počet oktetov každého segmentu musí byť párny). Ak je tento parameter zadaný, protokolové správy (Get_Attribute_Single, Set_Attribute_Single, Read Tag [Fragmented] Service, Write Tag [Fragmented] Service) budú zabalené do správy Unconnected Send, ktorá slúži na routovanie.

Pri komunikácii so zariadeniami Micro820, MicroLogix 1100 a CompactLogix nebolo potrebné tento parameter nastavovať.

Pri komunikácii s ControlLogix cez ControlLogix EtherNet/IP bridge Module (1756-EN2TR/C) bolo nutné nastaviť parameter na hodnotu 01 00, čo podľa protokolovej dokumentácie znamená Port 1 (ktorý reprezentuje backplane), a slot 0 (osadený centrálnym procesorom).

Pri komunikácii s procesorom v slote 1 bolo treba nastaviť parameter na hodnotu 01 01, takže obecná syntax na prístup k slotu XX by bola 01 XX.

Komplikovanejšia konfigurácia skladajúca sa z 3 segmentov:

  • ide sa cez cez procesor v slot-e 0: 01 (Backplane) 00 (Slot 0)

  • ďalej sa ide cez port 2 na IP adresu 172.25.58.11: 12 (port 2 s príznakom Extended v 5. bite, ktorý znamená, že nasleduje 1 bajt s dĺžkou dát) 0C (dĺžka dát 12 bajtov) 31 37 32 2E 32 35 2E 35 38 2E 31 31 (ASCII kódy IP adresy 172.25.58.11).
    Pozn: Keby bol počet znakov v reťazci nepárny (napr. 13), tak by za dĺžkou (napr. 0D) nasledovala IP adresa (13 bajtov) a za ňou doplňujúci oktet 00, aby bol počet oktetov v segmente párny.

  • a nakoniec sa ide na procesor v slote 1: 01 (Backplane) 01 (Slot 1)

takže celý reťazec Route Path je: 01 00 12 0C 31 37 32 2E 32 35 2E 35 38 2E 31 31 01 01 (v syntaxi Rockwell OPC servera je to "1,[0,2,172.25.58.11, 1], 1")

octet string

 

Use Multiple Service Packet Service

Nastavenia parametra na hodnotu YES spôsobí, že protokolové správy Read Tag Service budú zabalené do správy Multiple Service Packet Service. Tento parameter slúži na zrýchlenie (zabalenie viacerých správ do jednej), pričom veľkosť jednej správy (Unconnected Explicit message) neprekročí hodnotu Max Packet Size.
Pozn: Táto vlastnosť nie je podporovaná na starších PLC (napr. SLC 5/05 a PLC5E).
Pozn: Na konkrétnom CompactLogix 1769-L36ERM zrýchlilo nastavenie parametra vyčítavací cyklus 1000 objektov z 15 sekúnd na 2.2 sekundy.

YES/NO

NO

Optimize Structure Read

Optimalizované čítanie štruktúr je možné použiť na to, aby sa načítala celá štruktúra z PLC naraz namiesto čítania jednotlivých členov. Každá štruktúra má definovanú šablónu v PLC (UDT- user data template) . Optimalizované čítanie vyžaduje zistenie štruktúry (zoznam jednotlivých členov, ich typov a offsetov v rámci štruktúry).
Načítanie zoznamu môže trvať aj niekoľko desiatok sekúnd, preto po úspešnom načítaní je uložený do súboru Cache-<Nazov_linky>-<RoutePath>.txt v podadresári Cache v aplikačnom adresári. Pri štarte komunikácie sa prioritne vyčítavajú informácie o štruktúrach a šablónach z cache.
Príklad názvu cache súboru: Cache-L.CS.CSVV-0100.txt pre linku L.CS.CSVV a hodnotu parametra Route Path=01 00.

V konfigurácii meraných bodov je nutné vytvoriť jeden bod s adresou štruktúry (napr. Struct1) s Reading mode = Active read (tento bod bude stále neplatný, ale bude slúžiť na generovanie požiadaviek na čítanie) a ostatné merané body s adresami členov štruktúry (napr. Struct1.MyValA, Struct1.MyValB) s Reading mode = Passive read.

Pozn: Je na aplikačnom programátorovi, aby v prípade veľkých štruktúr obsahujúcich podštruktúry nakonfiguroval buď meraný bod na čítanie celej štruktúry (napr. Struct2) alebo viaceré merané body na čítanie podštruktúr (napr. Struct2.SubA a Struct2.SubB) - a zistil, čo je v konkrétnom prípade optimálne z hľadiska rýchlosti a záťaže PLC. 

Pozn: Ak štruktúra obsahuje vnútorné dátové štruktúry (napr. členy typu TIMER, COUNTER, CONTROL, MESSAGE, MOTION), ku ktorým nie je povolený symbolický prístup, čítanie celej štruktúry zlyhá (chyba "Privilege violation [x0F]", s "Additional status" nastaveným na "Reserved by CIP").

Pozn: Vymazanie cache súboru z disku a uloženie komunikačnej stanice spôsobí znovunačítanie zoznamu štruktúr, šablón a znovuvytvorenie cache súboru. Toto môže trvať aj niekoľko desiatok sekúnd, podľa počtu štruktúr a UDT.

YES/NO

NO

Read Extra Template Bytes

Pokiaľ bolo aktívne Optimalizované čítanie štruktúr, v konkrétnych prípadoch sa stalo, že veľká definícia šablóny neprišla celá, ale meno posledného člena bolo skrátené (napr. chýbali 2 znaky a ukončujúca 0). Stalo sa tak, keď sa definícia správy nezmestila do jedného paketu, ale bola väčšia (napr. mala mať 861 alebo 2225 bajtov). Nastavenie tohto parametra na hodnotu 2 alebo 3 (a vyžiadanie si o príslušný počet bajtov viac) vyriešilo problém.

Parametre problematických zariadení:

  • ControlLogix: 1756-L55/A 1756-M23/A LOGIX5555, Module Revision: 15.004

  • komunikačná karta 1756-ENBT/A, Product Revision: 3.009 Build 1, Firmware Version Date: Oct 11 2005, 08:27:13

  • ControlLogix: 1756-L61/B LOGIX5561, Module Revision: 17.003

  • komunikačná karta 1756-ENBT/A, Product Revision: 3.009 Build 1, Firmware Version Date: Oct 11 2005, 08:27:13

0-23

0

--- Connected Transport Parameters ---

Use Connected Transport

Parameter zapína použitie spojovaného CIP transportu. Namiesto Unconnected Send sa vytvorí spojenie (správou Forward Open/Large Forward Open) a následne sa správy posielajú cez vytvorené spojenie.

YES/NO

NO

CIP Connections

Počet paralelných logických CIP spojení. Väčší počet umožňuje rýchlejšiu obsluhu správ, na druhej strane PLC podporujú obmedzený počet CIP spojení. Na jednom CIP spojení môže byť v jednom momente obsluhovaná iba jedna správa.
Viď dokument EtherNet/IP Network Devices, tabuľka na str. 22.

1-16

4

CIP Connection Serial Number

Parameter udáva ID prvého logického CIP spojenia. Ak je CIP Connections>1, tak sa použije nakonfigurované a následné (napr. 10, 11, 12). ID logických CIP spojení musia byť unikátne, t.j. ak je niekoľko staníc (na jednej/viacerých linkách), ktoré komunikujú s tým istým PLC pri použití spojovaného CIP transportu (Use Connected Transport=YES), je nutné nakonfigurovať neopakujúce sa ID.

0-65535

1

Connection Path (hex)

Parameter Connection Path správy Forward Open/Large Forward Open. Prednastavená hodnota znamená:

  • 01 - Port segment: Backplane

  • 00 - Link Address: 0

  • 20 - Path Segment: 0x20 (8-Bit Class Segment)

  • 02 - Class: Message Router (0x02)

  • 24 - Path Segment: 0x24 (8-Bit Instance Segment)

  • 01 - Instance: 0x01

octet string

01 00 20 02 24 01

Vendor ID

Parameter Vendor ID správy Forward Open/Large Forward Open udáva ID výrobcu (identifikácia D2000 KOM procesu).

0 - 65535

0x1234

Tick Time

Parameter Tick Time správy Forward Open/Large Forward Open udáva veľkosť časového intervalu použitého pre výpočet timeoutu správy Forward Open. Viď parameter Timeout Ticks.

ms

128

Timeout Ticks

Parameter Timeout Ticks udáva počet časových intervalov (s veľkosťou Tick Time) použitých pre výpočet timeoutu správy Forward Open/Large Forward Open. Timeout sa vypočíta ako Tick Time * Timeout Ticks.

-

1-255

O->T RPI

Parameter O->T RPI správy Forward Open/Large Forward Open udáva veľkosť Originator -> Target Requested Packet Interval v mikrosekundách.
Definícia z normy Common Industrial Protocol: Requested Packet Interval je čas medzi paketmi požadovaný prijímacím zariadením. Hodnota sa použije na pridelenie šírky pásma v každom z produkčných uzlov. Pri vrátení skutočnej rýchlosti paketov alebo skutočného intervalu paketov možno bude potrebné upraviť pridelenie šírky pásma, pretože sa môžu tieto dve hodnoty líšiť.

 μs

2000000

T->O RPI

Parameter T->O RPI správy Forward Open/Large Forward Open udáva veľkosť Target -> Originator Requested Packet Interval v mikrosekundách.

 μs

2000000

Connection Timeout Multiplier

Parameter Connection Timeout Multiplier správy Forward Open/Large Forward Open. Udáva multiplikátor, ktorým sa násobia parametre O->T RPIT->O RPI na zistenie timeoutu CIP spojenia v smere O->T  resp. T→O.
Prednastavený timeout je teda 2 000 000 μs * 16 = 32 sekúnd.
Poznámka: parametre Connection Timeout Multiplier, O->T RPI a T->O RPI je nutné upraviť, ak perióda/ vyčítavania hodnôt definovaná na stanici je väčšia ako CIP timeout, pretože počas nečinnosti dôjde k expirovaniu CIP spojenia.

x2 - x512

x16

Large Forward Open

Parameter umožňuje namiesto správy Forward Open použiť na vytvorenie spojovaného CIP transportu správu Large Forward Open. V tejto je možné špecifikovať aj väčšiu veľkosť Connection Size ako 504 bajtov, takže správy môžu byť väčšie. Viď poznámku pri parametri Max Packet Size, ktorý špecifikuje Connection Size pre Forward Open/Large Forward Open

YES/NO

NO

--- PCCC Parameters ---

PCCC Max Data Length

Nastavenie parametra na nenulovú hodnotu spôsobí, že použitie PCCC protokolu zapuzdreného v Ethernet/IP protokole. Týmto spôsobom je možné komunikovať so staršími SLC 5/05 a PLC5E. Zároveň sa symbolická adresa meraného bodu začne interpretovať ako adresa vo formáte SLC-500 - viď protokol Allen-Bradley CSP/PCCC (napr. N:3 alebo $T4:0/ACC).
Poznámka: po zmene parametra z 0 na nenulovú hodnotu alebo naspäť je nutné preuložiť merané body, reštartnúť KOM proces alebo použiť tell príkaz RELOAD.

0-240 bytes

0

PCCC Command Set

Výber PCCC príkazov použitých na komunikáciu so staršími SLC 5/05 a PLC5E, pokiaľ je parameter PCCC Max Data Length nastavený na nenulovú hodnotu. Na výber sú tieto možnosti:

  • Typed Read (68), PLC5 logical ASCII addressing (*)

  • Typed Read (68), PLC5 logical binary addressing (*)

  • SLC Protected Typed Logical Read (A1/A2)

* - pri použití týchto príkazov je podporovaný iba zápis pre typ súborov Status (S), Binary (B), Integer (N), Float (F) a aj pre tieto typy je podporený iba zápis celých elementov, nie bitov. Nie je podporovaný zápis pre typy súborov Timer (T) a Counter (C). 

-

 

Konfigurácia meraných bodov


Možné typy hodnôt bodov: Di, Ai, Ci, TxtI, TiR, TiA, Dout, Ao, Co, TxtO, ToR, ToA.

Adresácia meraného bodu môže byť štandardná alebo symbolická (Rockwell).

Štandardná adresácia - Addressing by Class / Instance / Attribute

Tento spôsob adresácie používa správy definované CIP štandardom:

    • Get_Attribute_Single [0x0E]

    • Set_Attribute_Single [0x10]

V rámci týchto správ sa adresuje číslom triedy (Class), inštancie v rámci triedy (Instance) a číslom atribútu konkrétnej inštancie (Attribute).

Class - výber triedy objektu. Class sa dá vybrať zo zoznamu alebo zadať numericky (16-bitové číslo bez znamienka). Okrem tried definovaných v štandarde CIP protokolu sú podporené aj niektoré proprietárne triedy firmy Rockwell.

Instance - zadanie čísla inštancie triedy (32-bitové číslo bez znamienka).

Classwide attribute - v prípade, že je zaškrtnutá táto voľba, sa nezadáva inštancia a namiesto atribútov konkrétnej inštancie je možné pracovať s atribútmi celej triedy (classwide attribute).

Alternative - podľa normy majú niektoré triedy alternatívy (napr. v závislosti od revízie triedy, od podtriedy a pod). Pokiaľ je táto voľba povolená, je nutné si vybrať konkrétnu alternatívu.

Attribute - atribút, ktorého hodnotu možno čítať alebo zapisovať. Atribút sa dá vybrať zo zoznamu alebo zadať numericky (32-bitové číslo bez znamienka). Zoznam atribútov závisí od nastavení parametrov Class, Classwide atribute a Alternative.

Tlačidlom Browse je možné otvoriť browse dialóg a načítať zoznam tried a inštancií v rámci triedy, pokiaľ je nadviazaná komunikácia so zariadením. Pri otvorení sa načíta z dôvodu rýchlosti iba zoznam tried (riadky s ikonkou zložky). Dvojité poklikanie na triedu načíta zoznam inštancií (pokiaľ bol počet inštancií zistený, t.j. nie je nula ani neznámy - "???"). Dvojité poklikanie na konkrétnu inštanciu (riadky s ikonkou tag) prekopíruje triedu a inštanciu do konfiguračného dialógu meraného bodu.Pozn 1: počet skutočne načítaných inštancií triedy môže byť menší ako počet uvedený pri názve triedy.Pozn 2: browsovanie sa pokúša vyčítať všetky inštancie 1 .. Max Instance, kde Max Instance je zistené pri načítaní zoznamu tried. Pokiaľ je ale Max Instance > 1000, skúša sa počas browsovania iba prvých 1000 inštancií. Načítanie všetkých inštancií môže trvať aj niekoľko desiatok sekúnd. Po jeho ukončení sa zmení ikonka zložky zo zatvorenej na otvorenú.Pozn 3: vo verziách z 20.12.2018 a novších bolo implementované recyklovanie prehliadacieho dialógu. Pokiaľ je dialóg zavretý tlačidlom Cancel alebo po výbere inštancie, v skutočnosti je iba skrytý a je k dispozícii pre browsovanie iného meraného bodu v rámci tej istej stanice, takže sa zachová stromová štruktúra prehliadaných objektov. Kliknutie na krížik vpravo hore spôsobí skutočné zavretie dialógu.Tlačidlo Refresh slúži na znovunačítanie zoznamu zo zariadenia. KOM proces cachuje zoznam tried a inštancií, takže druhé a nasledovné otvorenie browse dialógu alebo vyčítanie zoznamu inštancií konkrétnej triedy je podstatne rýchlejšie ako prvé, pri ktorom dochádza k vyčítavaniu dát zo zariadenia.