Pokud jsou USB zařízení používána v kanceláři, problémy
s rušením prakticky nemohou nastat. Pokud ale přeci jen zařízení
vypoví službu, není problém USB tiskárnu či scanner vypnout a opět
zapnout. Vede-li ale USB kabel v rozvaděči kolem silových rozvodů
s indukční zátěží, jsou podmínky elektromagnetického rušení
mnohem svízelnější. Navíc u průmyslové aplikace není možné prostě
odpojit USB jednotku a opět ji připojit v případě selhání
komunikace.
První problém s USB komunikací byl zaznamenán u aplikace,
u níž byly USB kabely vedeny kolem rozvodů silového ovládání
ventilů. Důvod výpadků komunikace byl nakonec prostý i když
obtížně naleznutelný — použitý USB kabel měl
přerušené stínění (oba USB konektory mají mimo 4 datových a napájecích
vodičů ještě kovové stínění, které musí být v kabelem propojeno).
Po nahrazení vadného kabelu už k problémům nedochází.
Druhý problém se objevil u jednotky DataLab IOm/USB připojené k notebooku. I při použití
dobrého kabelu se projevily problémy s rušením a výpadky
komunikace při zapínání a vypínání elektrických spotřebičů
v blízkosti počítače a kabelu. Tyto problémy ale byly vázány
výhradně na konkrétní notebook a na jiném počítači se je nepodařilo
reprodukovat.
Tyto dva případy nás vedly k rozsáhlým testům a
měřením a k implementací obranných mechanismů proti rušení.
Zjistili jsme že:
Abychom vůbec mohli problém navodit, museli jsme
u jednoho USB kabelu přerušit stínění. Se správným USB kabelem
nebylo možné problémy navodit (což odpovídá prvnímu popsanému
případu), i když jsme spínali nejrůznější zdroje,
transformátorové páječky a podobně. Velmi pomohlo zapojovat
tyto spotřebiče přes velmi dlouhou prodlužku navinutou na
cívce.
Výpadky komunikace nebyly nikdy způsobeny selháním firmware
přímo v jednotce DataLab IO/USB. Ten
pracoval vždy bez přerušení. Ve všech případech selhala USB
komunikace na straně PC (USB Host).
Výpadky nastávaly výhradně na určitých typech počítačů.
Podařilo se je navodit pouze na počítačích s čipovými sadami
Intel. U počítačů s čipovými sadami VIA se problém navodit
nepodařilo.
Tyto poznatky umožnily provést nezbytné úpravy
v ovladačích jednotek DataLab IO/USB a
problémy s rušením USB komunikace tak prakticky
eliminovat:
Nový ovladač (pro Control Web
i ovladače Active X) nepřerušuje komunikaci a neodpojuje
jednotku po výskytu chyby. Ze samotnécho kódu chyby lze jen těžko
odhalit příčinu, neboť rušení může zasáhnout v různých
okamžicích a může vziknout řada chyb (např. CRC Error nebo
A device attached to the system is not functioning). Kód
chyby se také liší v závislosti na implementaci USB Host (na
typu čipové sady).
Obnovení pokusů o komunikaci (opětovné zaslání
požadavků) i po nahlášení chyby zpravidla vede
k bezproblémovému pokračování běhu, výjimečně je ale USB Host a
jeho ovladač v takovém stavu, že to již není možné.
V takovém případě dojde po 2 sekundách k automatickém
odpojení zařízení od USB sběrnice a jeho opětovnému připojení.
Z hlediska systému je to stejné jako by bylo jednotka fyzicky
odpojena a opět připojena. Přitom hodnoty výstupních logických a
analogových signálů v jednotce zůstanou zachovány.
Po provedení těchto úprav se již žádným způsobem nepodařilo
komunikaci natrvalo zastavit bez ohledu na poškozené kabely a velmi
nevybíravé chování k napájení. Maximálně došlo
k 2s přerušení komunikace. Je ale třeba mít na paměti, že
při použití správného kabelu k této situaci prakticky
nedochází.
Tyto funkce jsou k dispozici od verze 1.5 systémového
ovladače 'dlusb.sys' a také ovladače pro Control Web a Active X 'dldrv.dll'. V každém
případě je potřebné dbát na to, aby oba soubory byly alespoň této
verze, nahrazení pouze 'dlusb.sys' či pouze
'dldrv.dll' poslední verzí nestačí.
|