PLC

Páteční průmyslový protokol: CIP

Zdroj: ODVA

Grafika s označením CIP a strukturou zprávy
Ilustrace: redakce

CIP není přenosový protokol, ale objektový model a sada služeb, které se vezou po různých přenosech. Stejná zpráva „přečti atribut 7 instance 1 třídy Identity“ funguje v EtherNet/IP přes TCP, v DeviceNetu přes CAN i v ControlNetu. Pochopit CIP znamená přestat se učit tři protokoly.

Struktura CIP zprávy

Co to je a odkud pochází

Common Industrial Protocol vyvinula ODVA jako společnou aplikační vrstvu pro své sítě. Myšlenka: zařízení se popisuje jako objekt, ne jako paměťová mapa. Adresa „holding registr 40001" je nahrazena adresou „třída 0x04, instance 3, atribut 1" — tedy sémantikou, ne offsetem.

Objektový model

Základ jsou tři pojmy:

  • Třída — typ objektu (Identity 0x01, Message Router 0x02, Assembly 0x04, Connection Manager 0x06, Parameter 0x0F).
  • Instance — konkrétní výskyt třídy v zařízení; jedno zařízení má typicky jednu Identity a několik Assembly instancí.
  • Atribut — vlastnost instance: ID výrobce, sériové číslo, stav, velikost dat.

Každá třída má navíc povinné atributy dané specifikací — proto se každé zařízení umí představit stejně, i když je od jiného výrobce.

Služby a zpráva

Zpráva má tři části: kód služby (1 bajt), velikost cesty (1 bajt) a EPATH, za kterým následují data. Nejpoužívanější služby:

KódSlužbaVýznam
0x01Get_Attributes_Allpřečti všechny atributy instance
0x0EGet_Attribute_Singlepřečti jeden atribut
0x10Set_Attribute_Singlezapiš jeden atribut
0x4CForward_Openotevři spojení pro I/O data
0x4EForward_Closeuzavři spojení
0x52Unconnected_Sendpošli zprávu bez spojení

EPATH se skládá ze segmentů. Logický segment začíná 0x20 (8bitová třída), 0x21 (16bitová), 0x24 (8bitová instance), 0x25 (16bitová), 0x30 (atribut). Pro Identity, instance 1, atribut 7 tedy pošlete 20 01 24 01 30 07.

Na čem to běží

CIP je přenosově nezávislý — to je jeho hlavní konstrukční vlastnost:

  • EtherNet/IP — CIP přes TCP (explicit) a UDP (implicit), porty 44818 a 2222.
  • DeviceNet — CIP přes CAN, 125/250/500 kb/s, max. 64 uzlů.
  • ControlNet — deterministický přenos, dnes už okrajový.
  • CompoNet — pro velké množství levných I/O.

Stejný objektový model znamená, že nástroj pro konfiguraci DeviceNetu mluví stejnými službami jako EtherNet/IP.

Konfigurace

Konfiguruje se přes EDS soubor (popis objektů a parametrů) a nástroj výrobce. Pro I/O data se nastavují assembly instance — které objekty se mají posílat cyklicky. Typický postup: vybrat vstupní assembly (např. instance 100), výstupní (150), nastavit RPI a velikosti, otevřít spojení.

Testování a kód

CIP zprávu lze poslat i ručně — v Pythonu přes pycomm3:

from pycomm3 import CIPDriver

with CIPDriver("192.168.1.30") as dev:
    # precti atribut 7 (Product Name) instance 1 tridy Identity (0x01)
    r = dev.generic_message(service=0x0E, class_code=0x01, instance=1, attribute=0x07)
    print(r.value)      # b'1756-L83E/B'

Stejnou zprávu uvidíte ve Wiresharku jako cip.service == 0x0e.

Kdy to použít

Vždy, když pracujete s rodinou protokolů ODVA. Pro integraci stačí vědět, že každá hodnota má svou třídu, instanci a atribut — a že „tag" v Rockwellu je jen pojmenovaná cesta k takovému objektu.

Licence

Specifikace CIP je dostupná od ODVA (členství a zakoupení dokumentů), implementace musí projít conformance testem. CIP není open source a nevznikne jeho otevřená varianta — je to průmyslový standard s vlastníkem.

Pro vývojáře: když si nejste jistí, co zařízení umí, přečtěte si třídu Identity (0x01) a Object List (0xAC) — první dá výrobce a verzi, druhá seznam všech instancí. Z těch dvou zpráv se dá odvodit skoro celé rozhraní.

Seriál Páteční průmyslový protokol vychází každý pátek. Další díl najdete v přehledu série.

Zdroje

  1. Common Industrial Protocol (CIP) — ODVA
  2. EtherNet/IP — technology standards — ODVA

Odkazy vedou na primární zdroje. Text článku je redakční shrnutí, ne převzatá zpráva.