Hlavní navigace

Bezdrátový přenos s IQRF: zasílání příkazů na nody

Ivona Spurná

Fast Response Command je metoda, která slouží k zaslání příkazu z Koordinátoru hromadně na všechny nebo vybrané Nody. Výrazně se tím zkracuje čas potřebný k získání všech informací.

FRC – Fast Response Command

Pokud by byla data sbírána z Nodů jednotlivě, pak by čas potřebný na získání těchto informací byl výrazně vyšší než v případě metody FRC. Metodou FRC můžete získat ze všech Nodů v síti (až 239) po dvou bitech, z až 62 Nodů lze získat 1 bajt, a z až 30 Nodů můžete získat dvoubajtovou informaci. Zjednodušeně řečeno – cestou od Koordinátoru se na všechny dotčené Nody odešle požadavek na získávané informace (či se odešlou příkazy k vykonání), a cestou zpět ke Koordinátoru jsou požadované informace jednotlivými Nody přidávány do FRC zprávy na předem určené pozice ve zprávě.

Ve dvou bitech tak můžete získat stavovou informaci ze všech Nodů, a pokud je potřeba získat podrobnější údaje, lze následně daný Nod oslovit a informace si vyžádat.

Nastavení příkazu FRC

FRC je speciální periferie Koordinátoru, na kterou je odeslán příkaz a případně další data, která příkaz upřesní. Pokud tedy chcete využívat FRC, je třeba tuto periferii na Koordinátoru v konfiguraci povolit. ID periferie FRC je PNUM = 0×0D.

Následuje identifikace druhu příkazu. Na výběr je například PCMD = 0×00 – Send (odeslání příkazu na všechny Nody), PCMD = 0×02 – Send Selective (odeslání příkazu na vybrané Nody), PCMD = 0×01 – Extra Result (získání dodatečných výsledků příkazu FRC – celkový počet bajtů obou příkazů bude 64).

V části PDATA jsou obsažena data – ID příkazu FRC a následující uživatelská data.

Podrobnosti ohledně parametrů příkazu FRC najdete v dokumentaci.

Získání teploty ze všech Nodů

Z terminálu IQRF IDE zašlete příkaz FRC na Koordinátor (PNUM = 0×0D, PCMD = 0×00 – Send – zaslání požadavku na všechny Nody). Hodnota 0×80 v parametru PDATA specifikuje ID předdefinovaného příkazu FRC pro teplotu, následují dva bajty 00.00 nespecifikovaných uživatelských dat (minimálně 2 bajty jsou povinné).

V této ukázce vrátily všechny Nody v síti (zde Nod s adresou 1 a 2) teplotu (27°C a 26°C).

Získání teploty z vybraných Nodů

Z terminálu IQRF IDE zašlete příkaz FRC na Koordinátor (PNUM = 0×0D, PCMD = 0×02 – Send Selective – oslovení pouze vybraných Nodů). Po ID příkazu FRC pro teplotu (0×80) následuje v dalších 30 bajtech specifikace Nodů, kterých se požadavek týká – bitová mapa. Bit 0 prvního bajtu se vynechává (pozice pro Koordinátor), bit 1 prvního bajtu značí Nod s adresou 1, bit 2 prvního bajtu značí Nod s adresou 2 atd., až bit 7 v třicátém bajtu značí Nod s adresou 239. Pokud tedy daný Nod chcete oslovit, vložte na jeho pozici jedničku, v opačném případě nulu. Za specifikací bitové mapy následují uživatelská data (2 – 25 bajtů).

Pokud tedy chceme získat teplotu z nodu 2 a 4, zadáme na pozici 2. a 4. bitu v prvním bajtu jedničky (0001 0100 = 20, což odpovídá 0×14).

PDATA tedy obsahují:

80.14.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.
  • 0×80 – ID příkazu FRC pro získání teploty

  • 14.00. … .00 – bitová mapa Nodů

  • 00.00 – povinné min. dva bajty uživatelských dat

V tomto příkladu vidíme, že Nody vrátily teplotu 28°C a 27°C. Návratové hodnoty oslovených Nodů jsou řazeny v PDATA bez vynechávání hned za sebou, čímž lze získat jednobajtové výstupy z až 62 Nodů bez ohledu na jejich logické adresy.

Další možnosti FRC

Příkaz FRC samozřejmě neslouží pouze pro zjišťování teploty z transceiverů. Lze jím rozeslat jakýkoli příkaz, na který Nody buď umí rovnou samy reagovat nebo je to pomocí Custom DPA Handleru naučíte. Můžete si ve svém handleru nadefinovat vlastní uživatelskou periferii, která bude reagovat na vámi definované příkazy, a to způsobem, který potřebujete.

V následujících dvou příkladech jsou uvedena data pro zapnutí/vypnutí LED na vybraných Nodech.

Zapnutí červené LED na Nodu s adresou 2 (bit 2 v prvním bajtu – 22=4)

02.04.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.05.06.01.FF.FF.

Na začátku parametru PDATA je uvedena hodnota 0×02 (ID příkazu FRC), což znamená, že v uživatelských datech na konci následuje specifický příkaz. V tomto případě příkaz obsahuje hodnoty 05.06.01.FF.FF, kde hodnota 05 znamená délku těchto přídavných uživatelských dat (v bajtech), 06 znamená číslo periferie (červená LED), 01 znamená zapnutí této LED, a dodatečné hodnoty FF.FF mohou zajistit filtrování podle HWPID (zde nedochází k žádnému filtrování).

Vypnutí červené LED na nodu s adresou 4 (bit 4 – 24=16, což odpovídá 0×10)

02.10.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.00.05.06.00.FF.FF.

V příkazu 05.06.00.FF.FF znamená hodnota 00 vypnutí červené LED. Vše ostatní je stejné jako v předchozí ukázce.

V dalších dílech můžete očekávat přiblížení IQRF SDK, což je open source software development package pro zařízení používající IQRF. IQRF SDK umožňuje snadný vývoj bezdrátových síťových aplikací, které pro přenos využívají technologii IQRF, a to v jazyce C nebo Java.

Našli jste v článku chybu?