česky english Vítejte, dnes je sobota 20. duben 2024

Nebojte se spousty nožiček – 3. část: TCP/IP snadno a bez kompromisů

DPS 1/2011 | Články
Autor: Ing. Jan Weinbrenner

Cílem tohoto článku je seznámit konstruktéry elektronických zařízení s možností připojení jejich zařízení do počítačové sítě. Název článku indikuje snadné řešení, protože i zde ukážeme možnost připojení našeho zařízení do sítě s jen malou úrovní znalostí i při dosažení požadovaného výkonu.

Proč klademe důraz na požadovanou úroveň znalostí? Zde nastíněné řešení nás od požadovaného rozsáhlého studia oprostí a přitom umožní přenášet data rychlostí až 80 Mbs.

Proč připojení pomocí počítačové sítě?

Tato odpověď není jednoznačná. Podívejme se nejdříve, co vlastně máme na výběr. Sériovou linku s úrovněmi RS232, RS485, CAN sběrnici, USB a ethernet s jeho protokoly. Pokud porovnáme tyto komunikační kanály, potom zjistíme, že vlastně jenom ethernet umožňuje v sobě spojit rychlost komunikace, přijatelnou odolnost oproti rušení a přenos na velké vzdálenosti. A když vezmeme v úvahu i možnosti internetu, potom se můžeme připojit do celého světa.

Popis možného řešení a jeho možnosti

Před několika roky jsme byli postaveni před nutnost připojit zkonstruovanou měřicí desku k počítači. Nutným požadavkem přitom byla vysoká rychlost čtení naměřených hodnot. Seriové komunikační porty nevyhovovaly z hlediska rychlosti a USB porty zase neumožňovaly připojení na větší vzdálenost a nevyhovovaly z pohledu odolnosti proti rušení. Při hledání řešení jsme tedy vybrali ethernet a jako komunikační protokol TCP/IP. Jako první řešení se nabídla možnost s komerčně prodávanými převodníky ethernetu na sériovou linku. Zde jsme však brzy zjistili, že toto řešení nedostačuje svou funkčností a následně i komunikační rychlostí. Jako další jsme zkoušeli možnost použití řadiče ethernetu a softwarového řešení TCP/IP protokolu. Zde už bylo rozhodování těžší, jelikož na internetu lze nalézt velké množství tzn. TCP/IPstacků. Některé jsou kvalitnější a některé méně. Navíc toto řešení není moc vhodné pro pomalejší procesory, pokud chceme data přenášet vyšší rychlostí. Během tohoto porovnávání jsme však nalezli řešení firmy Wiznet, které se nám jevilo jako nejvhodnější.

Co nabízí řešení firmy Wiznet?

Jedná se o vlastně o kombinaci ethernetového řadiče, hardwarového TCP/IP stacku a tzv. PHY v jednom čipu s TQFP pouzdrem. Postupným vývojem vznikaly čipy řady W3150, W5100, W5300. Jde tedy o řešení, kde je na jednom čipu umístěna pamět RAM, hardwarově realizován komunikační protokol a kde jsou vyvedeny vývody pro připojení konektoru s transformátorkem pro připojení běžného kabelu RJ45. Toto řešení umožňuje otevřít a komunikovat na 8 na sobě nezávislých spojeních, přes protokoly TCP/IP a UDP. Tyto protokoly jsou tedy implementovány hardwarově. Ostatní protokoly jako například DHCP je možno stáhnout v podobě zdrojových textů od výrobce. Já jsem se rozhodl využít vnitřních možností čipu, jehož vnitřní strukturu čipu lze vidět na obr. 1.

Nebojte se spousty nožiček – 3. část TCPIP snadno a bez kompromisů 1.jpg

Obr. 1 Blokové schéma hardwarového řadiče TCP/IP

Jak připojit čip W5300 k našemu zařízení a co je potřeba?

Čip W5300 se tedy z našeho pohledu chová jako paměť RAM s 8 popř. 16bitovou sběrnicí nebo jako SPI zařízení. V módu paralelního zařízení je nutno použít buď 17 adresových linek, nebo nepřímého adresování. V tomto módu vystačíme se 3 adresovými linkami. Nejdříve se zapisuje adresa a potom data, přičemž lze také využít autoinkrementace. Zapíšeme tedy počáteční adresu, potom data a čip si adresu inkrementuje sám. Komunikace v tomto módu se jeví jako nejoptimálnější. Pro sestavení zapojení je potřeba samotný čip W5300, který lze zakoupit v ceně kolem 200 Kč, oscilátor 25 MHz a konektor RJ45 s integrovaným transformátorkem a několik nezbytných kondenzátorů a odporů. Druhou, o trochu dražší variantou, je zakoupení sestaveného modulu, ze kterého je na DIL liště vyvedena komunikační sběrnice. Jedná se např. o modul WIZ812MJ, který je možné zakoupit v ceně asi 550 Kč např. u SOS electronic. Modul je vidět na obr. 2.

Nebojte se spousty nožiček – 3. část TCPIP snadno a bez kompromisů 2.jpg

Obr. 2 Modul WIZ812MJ

Je komunikace s čipem W5300 opravdu tak snadná?

Ano je. Popíšeme si následující situaci. Máme procesor a k němu připojen rychlý AD převodník, potřebujeme velké množství dat dostat do PC. Pokud tedy ovládáme např. Delphi nebo C Builder, tak postupujeme takto. Na plochu formuláře vložíme standardní TCP komponentu a vyplníme v ní TCP adresu a port. Ukázky TCP/IP komunikace mezi dvěma aplikacemi jsou také součástí demo aplikací dodávanými s Delphi i C Builderem. V našem případě nahradíme druhou aplikaci naším zařízením. V čipu W5300 nastavíme MAC adresu, TCP/IP adresu a adresu brány. TCP/IP adresu nastavíme náhodně, vyplníme tedy 6 bajtů náhodnými hodnotami. Pokud budeme chtít zařízení připojit do internetu a mít stoprocentní jistotu, že se s nikým nepotkáme (tj. nenastavíme stejnou adresu, jakou již někdo má), máme 2 možnosti. Buďto zakoupit prostor 65 536 adres, a nebo opsat adresu z nějaké staré síťové karty. Po vyplnění těchto hodnot, tedy 14 bajtů, již čip reaguje na příkaz PING z příkazové řádky. V čipu W5300 ještě nastavíme jeden námi vybraný socket na požadovaný protokol TCP/IP nebo UDP a nastavíme číslo socketu. V jednom registru vybereme požadovanou činnost jako například poslání dat, připojení atd. Nakonec vyplníme registr pro délku přenášených dat a zapíšeme data. Tím přenášená data ihned dostaneme např. v události OnData našeho programu.

Jaké jsou zkušenosti s používáním čipu Wiznet?

Čipy Wiznet jsme použili v komerční aplikaci a soudě podle ohlasů zákazníků nenastaly žádné problémy. Tyto čipy také používáme ve svých vlastních aplikacích, kde potřebujeme přenášet velké množství dat, mít rychlou odezvu a odolnost proti rušení. Se slušným procesorem lze do počítače dostat bez problémů 50 Mbs. Rovněž tak lze např. přenést 100 naměřených hodnot rychleji, než se po sériové lince dostane do počítače jeden jediný bajt. Navíc, pokud je například na několik sekund odpojen kabel, tak si čip vše pohlídá a data přenese znovu po obnovení spojení. Máme jedinou možnost jak zjistit, že to nastalo. A to na zpoždění dat. Jistě znáte situaci, kdy si na počítači prohlížíte obrázky třeba z Austrálie, ale přečíst hodnotu z teploměru připojeného po sériové lince z vedlejší haly je neřešitelný úkol. Popis čipu Wiznet měl nastínit způsob řešení, který umožňuje zvýšení rychlosti komunikace a odolnosti proti rušení při současném zachování jednoduchosti použití.