IO-Link je docela nová digitální komunikace typu bod-bod (point-to-point) zaměřená hlavně na současné jednoduché senzory a akční členy pro průmyslovou automatizaci. Vznikla jako digitální náhrada dosud převažujících analogových výstupů 0 až 10 V, 4 až 20 mA nebo jako náhrada spínaných výstupů. Běžně se senzory s těmito výstupy připojují do průmyslových sběrnic řídích systémů prostřednictvím vstupně-výstupních modulů (remote I/O devices). Tuto funkci v případě IO-Link komunikace přebírá IO-Link Master, který mapuje připojené IO-Link Slave zařízení a funguje jako komunikační brána k nadřazené průmyslové sběrnici. Pomocí IO-Link lze přenášet řídící nebo diagnostická data do senzoru a naopak zpět získávat naměřené hodnoty. Tím lze senzor vzdáleně plně ovládat, včetně změny jeho nastavení či zjišťování jeho stavu. Přestože je senzor vybavený IO-link, je také stále zpětně kompatibilní s tradičními spínanými signály dle standardu IEC 61131-2.
IO-Link komunikace byla primárně navržena pro snadné připojení snímačů k velkým průmyslovým sběrnicím typu Profibus či ProfiNET prostřednictvím PLC nebo Gateway (IO-Link Master jednotka)
Topologie IO-Link komunikace
Jak již bylo zmíněno, základní komunikační struktura je prakticky hvězda, v jejímž středu je IO-Link Master, který řídící a navazuje komunikaci se Slave jednotkami (Device) stylem bod-bod, kterým data předává, automaticky je od nich získává nebo o ně žádá. Fyzicky tak Master musí mít tolik připojovacích rozhraní (konektorů), kolik jednotek (senzorů) chceme připojit. Tím odpadá potřeba adresování jednotek na úrovni samotné IO-Link komunikace.
Topologie IO-Link komunikace je hvězda, v jejímž středu je IO-Link Master, který odděleně komunikuje s každou IO-Link Slave jednotkou, což jsou například snímače. V IO-Link komunikaci tak odpadá adresování Slave jednotek, které si provádí sám Master volbou výstupu na úrovni aplikační hladiny.
Přenosový model (OSI model) se skládá z fyzické vrstvy (PHY), datové linkové (spojovací) vrstvy (DLL) a z aplikační vrstvy (AL), nad kterou bdí samotná provozovaná aplikace systému, přičemž každý výstup Masteru pro připojení Slave jednotky má vlastní fyzickou a linkovou vrstvu. Aplikační hladina IO-Link komunikace na straně Masteru je již jen jedna společná všem Slave jednokám.
Vrstva OSI modelu |
Popis |
Aplikační vrstva AL (Application Layer) |
Definuje a realizuje služby a protokoly pro přístup k procesům a k datům na vyžádání (nastavení parametrů, události, služby) |
Datová linková vrstva (spojovací vrstva) DLL (Data Link Layer) |
Popisuje, definuje a realizuje přenos dat mezi Master a Slave jednotkou |
Fyzická vrstva PHY (Physical Layer) |
popisuje fyzické vlastnosti přenosu a zajišťuje přístup na přenosové médium (kabel) |
Systémová vrstva SM (System Managment) |
speciální vrstva - definuje a realizuje spuštění komunikace na straně Master i Slave jednotky |
Tabulka komunikačního OSI modelu sběrnice IO-Link
Komunikace se realizuje jako přenos mnoha tzv. telegramů v podobě jednotlivých bajtů, které pak dohromady tvoří jeden přenosový rámce (Frame) obsahující vše potřebné pro realizaci přenosu užitečných dat. Rámec již vytváří datová linková vrstva (DLL). Ta má nastarost nejen „obalit“ užitečná data, které je nutné přenést, hlavičkou či kontrolním součtem, ale provádí základní dekódování příkazů a služeb, které se mají vykonat. To již zajistí a provede nejvýš postavená aplikační vrstva, která definuje a vykonává požadované služby, protokoly pro přístup k procesům a požadovaným informacím (procesní data, nastavení parametrů, události, služby). Nezávisle na této struktuře pak pracuje tzv. Systémový managment (SM), který je zajištuje navázání, resp. zahájení komunikace a její základní řízení.
Komunikační OSI model na straně Master a Slave/Device
(pozn.: na straně Master musí být tolik sekcí fyzické a linkové vrstvy PHY/DLL, kolik je připojených Slave jednotek - např. snímačů).
Fyzická vrstva
Fyzickou vrstvu (Phy), tedy způsob jakým fyzicky Master a Slave jednotka přenáší data, přestavuje známý a osvědčený 8bitový asynchronní sériový přenos dat UART, který známe například z RS-232. Proto je také délka dvou nebo třívodičového komunikačního kabelu omezena na 20 metrů a přenosová rychlost může být 4,8, 38,4 nebo 230,4 kb/s.
Kódování bitového sériového přenosu je metodou NRZ (Non Return to Zero), kde stav log. 1 odpovídá napětí 24 V mezi vodiči L+ a C/Q. Stav log. 0 odpovídá napětí 0 V mezi vodiči L+ a C/Q. Díky tomuto kódování bitů lze v IO-Link komunikaci využít již zmíněné možnosti dvouvodičového či třívodičového rozhraní (propojení), které se označuje jako PHY1, resp. PHY 2.
Možné konektory pro realizaci připojení IO-Link komunikace - význam pinů je dán standardem IEC 60947-5-2
(pin 1 = napájení L+, pin 2 = nevyužíván, pin 3 = napájení L-, pin 4 = signál C/Q, pin 5 = nevyužívá se).
Možnost IO-Link i tradičního spínaného výstupu
Slave jednotky (zařízení) vybavené pro IO-Link komunikaci podporují tzv. Standardní IO režim a IO Link režim. Standardní IO režim (SIO) představuje klasický provozní režim se spínaným výstupním signálem ze Slave jednotky, jaké běžně má většina současných snímačů. Na straně portu Master jednotky se vyhodnocuje signálová úroveň jako diskrétní spínaný signál. Na straně slave jednotky dochází k příjmu a vysílání diskrétních signálů (úrovní) na vývodu C/Q.
Datová linková vrstva
Datová linková vrstva je dá se říct hlavní částí IO-Link komunikace, protože reguluje přenos dat prostřednictvím IO-Link rozhraní a slouží jako takové provozní rozhraní mezi čistě softwarovou aplikační vrstvou a čistě hardwarovou fyzickou vrstvou.
Uživatelská data (bajty dat) zasílané z aplikace přes aplikační hladinu jsou v datové linkové vrstvě organizovány do telegramů pro vyslání fyzickou vrstvou, přičemž význam přenášených bajtů je definován typem rámce a datalinkovým příkazem, který je do něj linkovou vrstvou přidán.
V případě IO-Link komunikace představuje telegram přímý přenos UART znaků prostřednictvím IO-Link rozhraní, jak ve směru Master – Slave, tak ve směru Slave – Master. Skupina telegramů, které realizují určitou komunikaci mezi master a slave jednotkou tvoří určitý rámec (Frame). Typy rámců (Frame Type) jsou pevně definované standardem a definují určitou danou kombinaci telegramů od Master a Slave jednotky podle toho jaká data jsou v obou směrech přenášena (procesní data vs. data na vyžádání).
Každý rámec v sobě obsahuje informaci o tzv. datovém kanálu IO-Link komunikace, přičemž i každý typ rámce představuje rozdílný typ datového kanálu a tedy přenáší i odlišná data, informace a požadavky. Jejich specifikace splňuje různorodé požadavky senzorů nebo akčních členů vzhledem k šířce a množství procesních dat a aktuálních provozních a přenosových podmínek.
Zasílaná data se liší podle svého účelu (jejich povaze) určené typem rámce a typem datového kanálu a dělí se na:
- Procesní data (Process data) - informace přenášená s vysokou prioritou a dle pevného rozvrhu. Přenos začíná automaticky pro startovací sekvenci bez potřeby žádosti aplikace. Procesní data zahrnují měřené hodnoty a řídící proměnné. Cyklus procesních dat definuje časový harmonogram zasílání procesních dat o každé stanice. V závislosti na množství položek dat stanice může obsahovat jeden nebo více cyklů.
- Data na vyžádání (On-request data) - informace, které jsou vysílány necyklicky na žádost aplikace, přesněji řečeno komunikaci řídící Master jednotky. Pod tento typ spadají parametry Slave aplikace (například snímače) a data různých událostí.
- Přímé parametry / diagnostická data (Direct parameters / Diagnosis data) - speciální data na žádost, které jsou přenášeny bez potvrzení ve vyhrazeném datovém kanále.
- Události (Events) / Service PDU - informace na vyžádání, jejichž přenos je iniciován nastavením příznaku události v CHK/STAT bajtu Slave jednotky nacházející se ve vyhrazeném datovém kanále. Události mohou být inicializovány samotnou aplikací nebo komunikačním protokolem. Přenos Service PDU realizuje přenos velkého množství dat s požadavkem na jejich potvrzení. Využívá například pro výměnu aplikačních datových objektů.
Ve specifikaci IO-Link komunikace jsou výše uvedené druhy dat (procesní data, data parametrů, data na vyžádání a zprávy o událostech) zprostředkovány prostřednictvím různých kanálů, již výše zmíněných datových kanálů. Ty jsou vzájemně nezávislé a v každém rámci přesně definují povahu (vlastnost) přenášených dat, tedy prakticky říkají Master i Slave jednotkám, jaká jsou to data a jak se s nimi má zacházet (kam se mají ukládat, jak zpracovat apod.). Datové kanály tak realizují takové cesty, které přesně směrují data do správného místa uskladnění (uložení) nebo zpracování. Informace o datovým kanále tvoří část tzv. DL příkazu (datalinkový příkaz). Ten tvoří část řídícího bajtu a existuje 8 různých příkazů. Ty se využívají k zajištění přístup ke čtení nebo zápisu do 4 výše definovaných datových kanálů.
Struktura a typ rámce (CHECK/TYPE bajt)
Komunikace mezi Master a Slave jednotkou zahajuje rámec Masteru, který obsahuje řídící CMD bajt, CHECK/TYPE bajt a případně následují přenážená uživatelská data v podobě procesních dat nebo dat na vyžádání. Pod data na vyžádání spadají i výše uvedené přímé parametry / diagnostická data a události či Service PDU. Informaci o tom zda jsou přenášeny procesních data nebo data na vyžádání definuje CHECK/TYPE bajt a další rozdělení se již provádí volbou datového kanálu. Délka telegramů Master i Slave jednotky se tak mohou lišit v závislosti právě na typu rámce a směru přenosu.
Příklad sekvence přenosu procesních dat a dat na vyžádání prostřednictvím rámce typu 1, kde při přenosu dochází ke střídavému prokládání rámců přenášející procesní data a data na vyžádání. Process data cycle trvá tak dlouho, dokud se nepřenesou všechna procesní data.
Struktura rámce (posloupnost dat v rámci) se dá popsat posloupností písmen: XPnD_XSmd, kde X = adresa dat v datovém kanále, P = procesní data, n = počet bajtů procesních dat, D = směr procesních dat, S = data na vyžádání, m = počet bajtů dat na vyžádání, d = směr přenosu dat na vyžádání.
Z pohledu řazení jednotlivých dat platí, že pokud se například zasílají 2 bajty procesních dat a 2 bajty dat na vyžádání v jednom telegramu, bajt s nejnižší adresou v datovém kanálu se přenáší jako první.
Komunikační rámce mohou být 3 různých typů a jejich volbou Master jednotka specifikuje strukturu a počet telegramů v rámci. Například vobou rámce se definuje množství v něm uživatelských dat v rozsahu 0 až 3 bajty. Informace o typu rámce se přenáší v telegramu
Typy rámců se označují:
- Frame 0 - přenáší se pouze data na vyžádání (On-request data)
- Frame 1 - umožňuje přenést 2 bajty procesních dat nebo 2 bajty dat na vyžádání
- Frame 2 - umožňuje současně přenášet procesní data i data na vyžádání, množství bajtů se definuje.
DL příkaz (CMD bajt)
DL příkazem Master přesněji specifikuje uživatelská data vysílaná v rámci pro jejich následné zařazení na straně Slave jednotky pomocí datového kanálu a adresy umístění dat v datovém kanálu na straně přijmací jednotky. Také zahrnuje specifikaci směru přenosu informací tím, že obsahuje informaci o požadavku zápisu či přečtení dat. Na obrázku níže je uvedena jeho struktura. Zde nejnižší bity 0 až 4 (žlutá pole) obsahují adresu (offset bajtu) uživatelských dat v udaném datovém kanále, tedy informaci, kde se data v Slave jednotce nacházejí. Když servis PDU je adresován přes datový kanál, tyto bity se použijí pro řízení toku uvnitř service PDU. Adresu, tedy pozici uživatelských dat uvnitř service PDU, je pak pouze obsažen nepřímo. Dva bity 5 a 6 (fialová pole) definují datový kanál a 7. bit určuje požadavek na zápis/čtení dat.
Struktura DL příkazu a kódování datového kanálu (Data Channel)
Princip funkce datové linkové vrstvy
Linková vrstva komunikace zde dekóduje, rozlišuje a třídí žádané služby, případně některé služby a požadavky pro ni určené přímo vykonává. Slouží jako takový tranzitní blok, z kterého a do kterého přicházejí příkazy a data od jiných externích jednotek o nichž data přicházejí z fyzické vrstvy, která jejich význam nijak nemění, z nebo do aplikační vrstvy či systémového managmentu, které linková vrstva doplňuje o další informace (kontrolní součet, DL příkazem s informací o datovém kanále, případně generuje chybová a stavová hlášení informující protější Master jednotku či vlastní aplikační vrstvu o stavu přenosu či funkci zařízení.
Následující dva obrázky toto dokumentují a ukazují tok informací / dat / služeb právě mezi datovou linkovou vrstvou uprostřed a okolními bloky fyzické vrstvy (Physical Layer), Aplikační vrstvou (Application layer) a Systémovým managmentem (System managment). Jak je níže patrné, liší se linková vrstva Master a Slave jednotky. V případě Masteru je DLL sloužitější, protože společně se systémovým managmentem inicializuje zahájení komunikace a má na starost řízení režimu a rychlost komunikace či ve spolupráci s aplikační vrstvou generuje a vysílá řídící data pro správu komunikace a nastavení Slave jednotky (snímače).
Popis vzájemné komunikace DLL vrstvy s AL, SM a PHY vrstvou v Master jednotky (vlevo) a Slave jednotky (vpravo) - pro zvětšení klikněte na příslušný obrázek
Služby DLL vrstvy pro AL a SM vrstvu
Linková vrstva umožňuje dekódovat služby a jejich parametry ve směru vysílané z aplikační vrstvy do linkové vrstvě linkové vrstvy, i služby zasílané mezi systémovým managementem a linkovou vrstvou (viz šipky ve výše uvedených obrázcích). Následující tabulku tvoří zkrácený seznam služeb a příkazů zpracovávané DLL i s krátkým popisem.
Služba (příkaz) |
Popis služby / příkazu |
Typ datového kanálu |
Zasílaná data (Obsah příkazu) |
Master |
Slave |
DL-ReadParam |
Přečtení hodnoty parametru ze zařízení (Slave) |
Parameter data |
Adresa, příp. chybové hlášení |
Generuje požadavek - vysílá |
Přímá požadavek a odpovídá - data poskytuje aplikační vrstva |
DL-WriteParam |
Zápis hodnoty parametru do zařízení (Slave) |
Parameter data |
Adresa + hodnota, příp. chybové hlášení |
Generuje požadavek - vysílá |
Přímá požadavek a odpovídá - data poskytuje aplikační vrstva |
DL-SPDTransport |
Přenos žádosti o službu "Service PDU" |
Service PDU |
SPDU, stavový znak |
Generuje i odpovídá (bez interakce aplikační vrstvy) |
Generuje i odpovídá (bez interakce aplikační vrstvy) |
DL-PDOutputUpdate |
AL Masteru žádá DLL o aktualizaci procesních dat na výstupu |
Process data |
výstupní data |
Generuje AL a předává do DLL |
nic |
DL-PDOutputTransport |
DLL Slave jednotky informuje AL o přenosu / příchodu procesních dat |
Process data |
výstupní data |
nic |
Generuje DLL a předává do AL |
DL-PDInputUpdate |
AL Slave jednotky žádá DLL o aktualizaci procesních dat přenos do Masteru |
Process data |
výstupní data |
nic |
Generuje AL a předává do DLL |
DL-PDInputTransport |
DLL Master jednotky informuje AL o přenosu / příchodu procesních dat ze Slave jednotky |
Process data |
vstupní data |
Generuje DLL a předává do AL |
nic |
DL-PDCycle |
DLL informuje AL o konci procesních dat |
Process data |
žádné |
Generuje DLL a předává do AL |
Generuje DLL a předává do AL |
DL-SetMode |
Přepnutí parametrů linkové vrstvy + zahájení komunikace |
Process data |
Požadovaný režim, seznam hodnot |
Generuje AL + SM a předává do DLL |
nic |
DL-Mode |
Ukazuje SM, že je jednotka v provozním režimu |
- |
stavový znak, seznam parametrů |
Generuje DLL a předává do SM |
nic |
DL-Event |
Stav nebo chybová zpráva aplikační vrstvy |
- |
režim, typ, kód události, PDvalid |
Generuje AL a předává do DLL |
Generuje AL a předává do DLL |
DL-Control |
Předání řídících dat z Master do Slave jednotky |
- |
řídící znaky |
Generuje a vysílá řídící data |
Přijímá a zpracovává řídící data |
Tyto služby / příkazy v bloku DLL ve skutečnosti tvoří vstupní a výstupní signály stavových automatů realizovány jako stavové automaty v obrázku označené jako bloky:
- On-request data handler - zpracovává požadavky přenosu dat na vyžádání a Service PDU (realizuje služby/příkazy DL-ReadParam, DL-WriteParam a DL-SPDTransport)
-
PD Handler - zpracovává požadavky přenosu procesních dat (realizuje služby/příkazy DL-OutputUpdate,
DL-OutputTransport, DL-InputUpdate a DL-InputTransport) - Frame Handler - vytváří pro fyzickou vrstvu přenosový rámec (generuje bajty CMD a CHECK/TYPE)
- Startup Handler - realizuje startovací sekvenci a provoz komunikace ve spolupráci se systémovým managmentem SM
Pokud by jste například chtěli si sami naprogramovat datovou linkovou vrstvou IO-Link komunikace v MCU či v nějakém FPGA, tak jde prakticky o to naprogramovat tyto stavové automaty. Zájemce o detaily odkazuji na opravdu prodrobný anglický popis IO-Link specifikace, který naleznete na odkazu IOL-Comm-Spec_10002_V10_090118.pdf
Navíc DLL vrstva obsahuje několik z vnějšího okolí přístupných proměnných, které jsou převážně určené k informování o stav komunikace a nastavení a funkci linkové vrstvy. Těmi jsou DL_nRetry, DL_ReadCommParamStatus a DL_WriteCommParamStatus, které slouží jako stavové proměnné řídící zpracování listu parametrů pro přečtení či zápis parametrů z či do Slave jednotky či počítadlo volání služeb fyzické vrstvy (DL_nRetry).
Zahájení komunikace
Startovací sekvence, kterou vždy iniciuje Master, je složena z fáze, během níž se nejprve inicializuje master, následně se inicializují jednotlivé slave jednotky (device) zasláním řídících a konfiguračních parametrů. Během toho se definují i parametry komunikace. Startovací rutina je řízena systémovým managementem SM, který řídí stav na signálovém vodiči prostřednictvím linkové DLL a fyzické vrstvy PHY.
Detailní popis startovací sekvence najdete v pdf popisu specifikace IO-Link - IOL-Comm-Spec_10002_V10_090118.pdf.
Aplikační vrstva
Aplikační vrstva IO-Link komunikace (AL) slouží jako takový převodník / rozhraní mezi linkovou vrstvou DLL a samotnou nadřazenou aplikací. AL dostává od linkové vrstvy již dekódovaný rámec tak, že obdrží informaci o službě, kterou má vykonat a jaká data k tomu má použít nebo naopak předává DLL informaci o tom co má provést.
Služby, signály a protokoly realizované aplikační vrstvou
Dostupné služby závisí na typu jednotky (stanice). Master a Slave jednotky mají přesně určené role, stejně jako klient a server v kontexu vykonání inviduálních aplikačních (AL) služeb. Například v případě jednotky Master lze jmenovat služby zápisu, čtení, přerušení, odmítnutí, definování, nastavení či přečtení vstupu nebo výstupu apod.
Služba (příkaz) |
Popis služby / příkazu |
Typ dat |
Master |
Slave |
Read |
Přečtení dat na vyžádání ze specifikovaného portu Slave jednotky |
Data na vyžádání |
AL generuje požadavek - vysílá |
AL přijímá požadavek a odpovídá |
Write |
Zápis dat na vyžádání na specifikovaném portu Slave jednotky |
Data na vyžádání |
AL generuje požadavek - vysílá |
AL přijímá požadavek a odpovídá |
Abort |
Příkaz zastavení probíhajícího výše uvedeného čtení či zápisu |
Data na vyžádání |
AL generuje požadavek - vysílá |
AL přijímá požadavek a odpovídá |
Reject |
Odmítnutí požadavku čtení / zápisu |
Data na vyžádání |
AL generuje požadavek - vysílá |
AL přijímá požadavek |
GetInput |
Požadavek přečtení procesních dat z DLL Master jednotky |
Procesní data |
Generuje samotná nadřazená aplikace do AL |
nic |
NewInput |
Informace nadřazené aplikaci, že jsou k dispozici nová procesní data v DLL Master jednotky |
Procesní data |
Generuje AL a předává do nadřazená aplikace |
nic |
SetInput |
Požadavek na aktualizaci procesních dat v DLL Slave jednotky |
Procesní data |
nic |
Generuje samotná nadřazená aplikace do AL |
PDCycle |
Informace o konci vysílání procesních dat |
Procesní data |
nic |
Generuje AL a předává do nadřazená aplikace |
GetOutput |
Požadavek na přečtení procesních dat z DLL Slave jednotky |
Procesní data |
nic |
Generuje samotná nadřazená aplikace do AL |
NewOutput |
Informace nadřazené aplikaci, že jsou k dispozici nová procesní data v DLL Slave jednotky |
Procesní data |
nic |
Generuje AL a předává do nadřazená aplikace |
SetOutput |
Požadavek na aktualizaci procesních dat v DLL Master jednotky |
Procesní data |
Generuje samotná nadřazená aplikace do AL |
nic |
Event |
Stav nebo chybová zpráva aplikační vrstvy |
- |
Příjímá události od Slave jednotky |
Generuje i příjímá události |
Control |
Předání řídících dat z Master do Slave jednotky |
- |
AL generuje a vysílá řídící data |
AL přijímá a zpracovává řídící data |
Přehled služeb / příkazů aplikační vrstvy IO-Link komunikace
Zájemce o detaily odkazuji na opravdu prodrobný anglický popis celé IO-Link specifikace, který naleznete na odkazu IOL-Comm-Spec_10002_V10_090118.pdf.
Závěr
I když je IO-Link "jen" nesíťový komunikační standard mezi nadřazeným řídícím systémem a jednotlivými jednotkami převážně tvořený různými snímači, je struktura standardu docela dost složitá. To je dáno tím, že nejen do detailu definuje jednotlivé provozní stavy, ale i přesně definuje rozdělení a třídění přenášených dat a způsob, jak se budou zpracovávat. Díky tomu není problém snadno zaměnit různé IO-Link snímače aniž by bylo nutné řídící systém složitě přeprogramovávat a snímače okamžitě nastavit jen nahráním pracovních parametrů uložených v řídícím systémů. Naštěstí, pokud by jste chtěli vyvinout nové zařízení s IO-Link, není nutné komunikaci programovat, protože již jsou na trhu specializované integrované mikrokontroléry, převodníky a transceivery, které již IO-Link rozhraní realizují. A to, že IO-Link komunikace má jistě světlou budoucnost, ukazuje následující seznam firem, které tento komunikační standard podporují.
DOWNLOAD & Odkazy
- Webové stránky IO-Link komunikaci - www.io-link.com
- Podrobná specifikace IO-Link komunikace (pdf, anglicky) - IOL-Comm-Spec_10002_V10_090118.pdf
- Krátká obecná prezentace IO-Link (pdf, anglicky) - IO-Link-PraesentationHMI_2009_e.pdf
- Krátký popis IO-Link komunikace (pdf, anglicky) - io-link-en.pdf
- Další odkazy zabývající se IO-Link:
- Další články o komunikačních sběrnicích najdete na stránkách serveru automatizace.HW.cz