FULL-C set and get

Z onlinetechnology.cz

Přejít na: navigace, hledání
Tato stránka popisuje programovací jazyk FULL-C, který je dostupný na vybraných zařízeních SDS. Některá zařízení používají SDS-C, pro který máme návody jinde na této WiKi.

Obsah

Jak je FULL-C program připojen k hardware

Základním důvodem pro existenci FULL-C programu na zařízení SDS je možnost číst stav hardware (např. opto-vstupy) a také hardware řídit (např. spínat relé).

Za tímto účelem je k dispozici sada C funkcí, které může program volat a které buď navrátí aktuální stav ("get" funkce), nebo stav změní ("set" funkce).

Zde je seznam těchto funckí:

         void SDS_set_i32(unsigned int index, signed int value);
   signed int SDS_get_i32(unsigned int index);
 
         void SDS_set_i64(unsigned int index, int64_t value);
   signed int SDS_get_i64(unsigned int index);
 
         void SDS_set_u32(unsigned int index, unsigned int value);
 unsigned int SDS_get_u32(unsigned int index);
 
         void SDS_set_u64(unsigned int index, uint64_t value);
 unsigned int SDS_get_u64(unsigned int index);
 
         void SDS_set_f32(unsigned int index, float value);
        float SDS_get_f32(unsigned int index);
 
         void SDS_set_a(unsigned int index, void *ptr, unsigned int len);
         void SDS_get_a(unsigned int index, void *ptr, unsigned int maxlen);

Historicky zde původně byly i tyto funkce:

         void SDS_set_i(unsigned int index, signed int value);
   signed int SDS_get_i(unsigned int index);
 
         void SDS_set_u(unsigned int index, unsigned int value);
 unsigned int SDS_get_u(unsigned int index);

Ty "nezmizely" jen byly přejmenovány (i na i32, u na u32). Pokud je váš program používá, vše vám bude fungovat i nadále, ale co nejdříve jejich název ve svém programu přepište na nový.


Princip

Základem je použití přístupu k informacím prostřednictvím tzv. indexu.

Pod každou položkou (číselným indexem) je schována odpovídající činnost nebo hodnota (např. index = 3 vrátí přes "get" funkci aktuální hodnotu "UpTime", viz tabulka).

Každá položka však může mít jiný obsah (číslo nebo text): podle toho je potřeba zvolit správný přístup (správnou set\get funcki):

 typ položky              | rozsah         | typ proměnné    | postfix set\get funkce
--------------------------+----------------+-----------------+-------------------------
  signed 32-bit integer   |  -2^31..+2^31  |  int            |  _i32
  signed 64-bit integer   |  -2^63..+2^63  |  int64_t        |  _i32
  unsigned 32-bit integer |      0..+2^32  |  unsigned int   |  _u64
  unsigned 64-bit integer |      0..+2^64  |  uint64_t       |  _u64
  IP address              |  uchar[4]      |  unsigned int   |  _u32
  float                   |  IEEE-754      |  float          |  _f32
  string (text)           |  len\maxlen    |  void* \ char*  |  _a
  binary array            |  len\maxlen    |  void* \ char*  |  _a

Jak lze vidět, bude při psaní programu potřeba správně vybrat postfix u dané funkce.

Příklad: chceme zapsat desetinné číslo "numf", v tom případě se jedná o typ "float numf;" a musíme použít SDS_set_f(index, numf);.


Varování: ačkoliv je většina indexů podobných jako u SDS (pro pole sys[]), nemají všechny indexy stejný význam mezi SDS-C a FULL-C. Vždy používejte tu správnou tabulku pro každý programovací jazyk.


Funkce _u32 \ _i32 \ _f32

Základní funkce určené pro získání číselné hodnoty "z" SDS, popř. zápisu číselné hodnoty "do" SDS. Vždy se jedná o kombinaci indexu (který určuje o co máme zájem) a hodnoty (která je vždy 32 bitová, tj. 4 bajty, ale obsah těchto 4 bajtů už je různý - buď celočíselná hodnota bez nebo se znaménkem (nejvyšší bit), nebo desetinné číslo - floating point).

Čtení hodnoty je potřeba pro zjištění aktuálního stavu (např. stav optického vstupu, nebo poslední známá teplota z čidla). Zápis se pak používá pro ovládání (např. sepnutí relé).


První příklad: čtení 32bitové hodnoty bez znamenka

 unsigned int NTPtime;
 NTPtime = SDS_get_u32(4);
 printf("Aktuální Epoch Time je %u (secs).", NTPtime);

Druhý příklad: čtení 32bitové hodnoty se znaménkem

 int NTPoffset;
 NTPoffset = SDS_get_i32(26);
 printf("Offset pro NTP čas je: %d hod.", NTPoffset);

Třetí příklad: čtení float hodnoty

 float AD_Rinput__in_user_units;
 AD_Rinput__in_user_units = SDS_get_f32(311);
 printf("Resistance Measure Input value is: %0.3f", AD_Rinput__in_user_units);

Čtvrtý příklad: zápis 32bitové hodnoty bez znaménka

 // zapni RELE 1 (zápisem nenulové hodnoty na index [231], viz tabulka)
 SDS_set_u32(231, 0xFF); 

Samozřejmě musíte pro každý index použít správný typ hodnoty (tzn.: unsigned int \ int \ float). Přesné přiřazení naleznete v tabulce na konci této stránky.

Pozn.: i když například víte, že hodnota může být například jenom 0 nebo 1 (příklad), tak vždy se zapisuje nebo čte všech 32bitů (unsigned int \ int \ float). Nepoužité bity jsou vždy nastaveny na nulu.


Funkce _u64 \ _i64

Princip je identický jako pro _u32 a _i32 funkce.

Vždy se podívejte do tabulky, jaké informace můžete v 64bitové formě dostat; většina jich je pouze ve 32bit formě. To ale nevadí, protože přeci například není problém do proměnné typu uint64_t zapsat 32bitové číslo.


Funkce _a

Funkce pracující s polem dat (SDS_get_a, SDS_set_a) vyžadují oproti ostatním set+get funkcím specifické parametry. Vždy se jedná o ukazatel na pole dat, a o informaci o velikosti tohoto pole.


První příklad: čtení textového parametru

 // definujeme si pole o velikosti 32 bajtů; tzn. sem se vleze až 31 znaků plus jeden ukončovací 0x00
 char sysLoc[32];
 
 // SDS uloží text z indexu [2] do pole "sysLoc", o maximální velikosti 32 bajtů
 SDS_get_a(2, (void *)sysLoc, 32);
 
 // a můžeme se podívat na výsledek (výpis do konzole)
 printf("Nastavená system location: %s", sysLoc);


Druhý příklad: čtení pole údajů - pouze položky z indexu označeného (a) v tabulce indexů

 // definujeme si pole o 8 položkách, které obsahuje prvky typu "unsigned int" (každý tento prvek má velikost: 4 bajty)
 unsigned int OPTOvalues[8];
 
 // SDS zapíše 8 pozic od indexu [151] do pole OPTOvalues
 // maximální velikost zápisu = 8*4 , tzn. 8 položek v poli OPTOvalues, každá o 4 bajtech
 SDS_get_a(151, (void *)OPTOvalues, 8 * 4);
 
 // a muzeme pristupovat na jednotlive polozky (jejich obsah je platny vuci okamziku zavolani GET funkce)
 if (0 == OPTOvalues[0]) ...

Pro tyto přístupy je potřeba uvést, že blokové čtení funguje jen vždy od prvního indexu pro daný blok indexů.


Na zcela stejném přístupu funguje SDS_set_a() funkce.


Úplné detaily a všechny příklady

Detailní přehled, doplněný o příklady ve FULL-C, naleznete zde: FULL-C_set_and_get_:_detailed.


Tabulka

Podle typu každé položky lze použít jen právě tu danou specifickou funkci (_i32\_u32\_f32\_a\_i64\_u64), viz následující tabulka.

Je li také uveden klíč "(a)", lze mimo přístup k jedinému indexu využít blokový přístup pomocí funkce SDS_get_a(), která přečte určený počet indexů za sebou a uloží je do připraveného pole (toho se využívá při blokovém čtení většího počtu za-sebou ležících položek, např. blokové čtení stavu všech optovstupů atd.).


-----------+---------+------+----------------------------------------------
  index    | i\u\f\a | směr |  popis 
-----------+---------+------+----------------------------------------------
  0        | u32     |  GET |  firmware PAIRCODE (identifikace typu SDS)
  0        |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  1        | u32     |  GET |  počet přihlášených uživatelů do web admin
  1        |         |  SET |  n/a
-----------+---------+------+----------------------------------------------
  2        | a       |  GET |  sysLocation (text, viz webadmin)
  2        |         |  SET |  n/a
-----------+---------+------+----------------------------------------------
  3        | u32     |  GET |  uptime (increased by 1 each every 10msec) (example: 100 = 1 sec)
  3        |         |  SET |  n/a
-----------+---------+------+----------------------------------------------
  4        | u32     |  GET |  LOCAL time (NTP UTC Epoch, with GMT-offset and DST-offset applied), value in seconds
  4        |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  5        | u32     |  GET |  rozpad LOCAL času = den (1 až 31)
  5        |         |  SET |  n/a
-----------+---------+------+----------------------------------------------
  6        | u32     |  GET |  rozpad LOCAL času = měsíc (1 až 12)
  6        |         |  SET |  n/a
-----------+---------+------+----------------------------------------------
  7        | u32     |  GET |  rozpad LOCAL času = rok (plná hodnota)
  7        |         |  SET |  n/a
-----------+---------+------+----------------------------------------------
  8        | u32     |  GET |  rozpad LOCAL času = hodina (0 až 23)
  8        |         |  SET |  n/a
-----------+---------+------+----------------------------------------------
  9        | u32     |  GET |  rozpad LOCAL času = minuta (0 až 59)
  9        |         |  SET |  n/a
-----------+---------+------+----------------------------------------------
  10       | u32     |  GET |  rozpad LOCAL času = sekunda (0 až 59)
  10       |         |  SET |  n/a
-----------+---------+------+----------------------------------------------
  11       | u32     |  GET |  rozpad LOCAL času = číslo dne v týdnu
  11       |         |  SET |  n/a
-----------+---------+------+----------------------------------------------
  12       | u32     |  GET |  Device IP address
  12       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  13..15   |         |  GET |  n/a (reserved)
  13..15   |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  16       | u32     |  GET |  Gateway IP address
  16       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  17..19   |         |  GET |  n/a (reserved)
  17..19   |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  20       | u32     |  GET |  Network IP Mask
  20       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  21..23   |         |  GET |  n/a (reserved)
  21..23   |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  24       | u32     |  GET |  Ethernet Link Status
  24       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  25       | u32     |  GET |  Ethernet Link Speed (0, 10 nebo 100)
  25       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  26       | i32     |  GET |  NTP GMT offset (-11 .. 11) = hodinový offset mezi UTC a LOCAL
  26       | i32     |  SET |  NTP GMT offset (pozor, nezapíše se do pevné paměti)
-----------+---------+------+----------------------------------------------
  27       | u32     |  GET |  platnost přidělené IP adresy (0 = SDS nemá přidělenou IP)
  27       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  28       | u32     |  GET |  poslední okamžik kdy byla IP patřící SDS změněna
  28       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  29       | u32     |  GET |  stav DHCP (0=vyp, nebo stavové hodnoty: 1..11)
  29       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  30       | u32     |  GET |  aktualní hodnota DHCP lease time (secs)
  30       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  31       | u32     |  GET |  MAC[0] (odpověď je vždy v dolních 8 bitech)
  31       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  32       | u32     |  GET |  MAC[1]
  32       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  33       | u32     |  GET |  MAC[2]
  33       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  34       | u32     |  GET |  MAC[3]
  34       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  35       | u32     |  GET |  MAC[4]
  35       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  36       | u32     |  GET |  MAC[5]
  36       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  37..39   | u32     |  GET |  unique serial number: dword [0], [1] and [2]
  37..39   |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  40       | u32     |  GET |  SoC power-up or reset reason (LSB: 8 bits)
  40       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  41       | a       |  GET |  OEM branding (login web page) [32 chars]
  41       | a       |  SET |  OEM branding (login web page) [32 chars]
-----------+---------+------+----------------------------------------------
  42       | a       |  GET |  OEM branding (welcome web page) [128 chars]
  42       | a       |  SET |  OEM branding (welcome web page) [128 chars]
-----------+---------+------+----------------------------------------------
  43       | u32     |  GET |  NTP-server IP address
  43       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  44       | u32     |  GET |  stav NTP-client (0 = nesynchronizováno)
  44       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  45       | u32     |  GET |  UpTime v jednotkách msec (uptime od startu zařízení)
  45       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  46       | u32     |  GET |  teplota SoC jako RAW hodnota (nutno ručně přepočíst na degC)
  46       | i32     |  GET |  teplota SoC přímo přepočtená na degC (kalibrovaný přepočet)
  46       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  48..60   |         |  GET |  n/a (reserved)
  48..60   |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  61       | u32     |  GET |  random number
  61       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  62..63   |         |  GET |  n/a (reserved)
  62..63   |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  64       | u32     |  GET |  stav sekundového odpočítavače (snižuje se o 1 každou 1sec, až na 0)
  64       | u32     |  SET |  nastavení hodnoty sekundového odpočítávače
-----------+---------+------+----------------------------------------------
  65       | u32     |  GET |  stav automatiky DST (0 = nepoužito, 1 = DST aplikováno, 2 = DST neaplikováno)
  65       | u32     |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  66..84   |         |  GET |  n/a (reserved) 
  66..84   |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  85       | u32     |  GET |  rozlišení typu modulu: BIG nebo STSW (0 = STSW or SMALL)(1 = BIG)
  85       | u32     |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  86       | u32     |  GET |  generický stav běhu FULL-C programu (0, 1, 2, 4, 8, 16, 32, 64)
  86       | u32     |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  87       |         |  GET |  n/a (reserved)
  87       |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  88       |         |  GET |  n/a (reserved) 
  88       |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  89       | u32     |  GET |  IP-WatchDog: stav (0 = vyp)
  89       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  90       | u32     |  GET |  IP-WatchDog: poslední známé RTT (msecs)
  90       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  91       | u32     |  GET |  IP-WatchDog: stav výstupu
  91       |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  92..138  |         |  GET |  n/a (reserved)
  92..138  |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  139      | u32     |  GET |  NTP true epoch-time (secs since Linux Epoch) (clear UTC with *no* GMT or DST offset applied)
  139      |         |  SET |  n/a
-----------+---------+------+----------------------------------------------
  140      | u32     |  GET |  proměnná pro speciální TRAP (401)
  140      | u32     |  SET |  proměnná pro speciální TRAP (401)
-----------+---------+------+----------------------------------------------
  141      | a       |  GET |  proměnná pro speciální TRAP (402) (max 32 znaků)
  141      | a       |  SET |  proměnná pro speciální TRAP (402)
-----------+---------+------+----------------------------------------------
  142      | u32     |  GET |  proměnná pro speciální TRAP (403)
  142      | u32     |  SET |  proměnná pro speciální TRAP (403)
-----------+---------+------+----------------------------------------------
  143      | u32     |  GET |  proměnná pro speciální TRAP (404)
  143      | u32     |  SET |  proměnná pro speciální TRAP (404)
-----------+---------+------+----------------------------------------------
  144      | u32     |  GET |  proměnná pro speciální TRAP (405)
  144      | u32     |  SET |  proměnná pro speciální TRAP (405)
-----------+---------+------+----------------------------------------------
  145      | u32     |  GET |  proměnná pro speciální TRAP (406)
  145      | u32     |  SET |  proměnná pro speciální TRAP (406)
-----------+---------+------+----------------------------------------------
  146      | u32     |  GET |  proměnná pro speciální TRAP (407)
  146      | u32     |  SET |  proměnná pro speciální TRAP (407)
-----------+---------+------+----------------------------------------------
  147      | u32     |  GET |  proměnná pro speciální TRAP (408)
  147      | u32     |  SET |  proměnná pro speciální TRAP (408)
-----------+---------+------+----------------------------------------------
  148      | u32     |  GET |  proměnná pro speciální TRAP (409)
  148      | u32     |  SET |  proměnná pro speciální TRAP (409)
-----------+---------+------+----------------------------------------------
  149      |         |  GET |  n/a (reserved)
  149      |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  150      |         |  GET |  stav blokování zápisu do sdílených proměnných (tzn. podmínění přihlášením)
  150      |         |  SET |  nastavení blokování zápisu do sdílených proměnným (0 = bez nutnosti přihlášení uživatele)
-----------+---------+------+----------------------------------------------
  151..182 | u32 (a) |  GET |  OPTO1..OPTO32 status (pozor: 0 = aktivní)
  151..182 |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  183      | u32     |  GET |  datum vydání FW v tomto SDS (hex: 0x00DDMMYY, nebo jen 0x00000000 u starších FW)
  183      |         |  SET |  n/a
-----------+---------+------+----------------------------------------------
  184      |         |  GET |  n/a (reserved)
  184      |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  185      | u32     |  GET |  TBD (LS-0 Usage Type: LS-0 or DHT) - future
  185      |         |  SET |  n/a
-----------+---------+------+----------------------------------------------
  186      | u32     |  GET |  TBD (DHT Status) - future
  186      |         |  SET |  n/a
-----------+---------+------+----------------------------------------------
  187      | u32     |  GET |  TBD (DHT Humidity) - future
  187      |         |  SET |  n/a
-----------+---------+------+----------------------------------------------
  188      | i32     |  GET |  TBD (DHT Temperature) - future
  188      |         |  SET |  n/a
-----------+---------+------+----------------------------------------------
  189..190 |         |  GET |  n/a (reserved)
  189..190 |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  191      | u32     |  GET |  frekvence PWM generátoru (1Hz .. 5MHz)
  191      |         |  SET |  N/A (použijte SDS_PWM_setDutyAsPercents)
-----------+---------+------+----------------------------------------------
  192      | u32     |  GET |  duty-cycle percent (0..100 [%])
  192      |         |  SET |  N/A (použijte SDS_PWM_setDutyAsPercents)
-----------+---------+------+----------------------------------------------
  193      | u32     |  GET |  PWM-HW: direct "pulse" register value
  193      |         |  SET |  N/A (TBD; možná doplníme)
-----------+---------+------+----------------------------------------------
  194..195 |         |  GET |  n/a (reserved)
  194..195 |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  196..228 | u32 (a) |  GET |  RELAY1..RELAY32 - "kdo" ovládá daný výstup
  196..228 | u32     |  SET |  RELAY1..RELAY32 - 0=ručne, 2=FULL-C, 4=IPwdg
-----------+---------+------+----------------------------------------------
  229..230 |         |  GET |  n/a (reserved)
  229..230 |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  231..262 | u32 (a) |  GET |  RELAY1..RELAY32 - stav (0=vyp)
  231..262 | u32     |  SET |  RELAY1..RELAY32 - stav (0=vyp)
-----------+---------+------+----------------------------------------------
  263..265 |         |  GET |  n/a (reserved)
  263..265 |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  266..297 | a       |  GET |  RELAY1..RELAY32 - název (text, viz webadmin)
  266..297 |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  298..300 |         |  GET |  n/a (reserved)
  298..300 |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  301      | u32     |  GET |  stav (log0/log1) pinu GPIO-TOPBOARD
  301      | u32     |  SET |  stav pinu GPIO-TOPBOARD
-----------+---------+------+----------------------------------------------
  302      | u32     |  GET |  směr (vstup/výstup) pinu GPIO-TOPBOARD
  302      | u32     |  SET |  směr pinu GPIO-TOPBOARD
-----------+---------+------+----------------------------------------------
  303..310 |         |  GET |  n/a (reserved)
  303..310 |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  311..342 | f32 (a) |  GET |  přepočtená hodnota (float) A/D vstupu
  311..342 |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  343..374 | a       |  GET |  jméno A/D vstupu (text)
  343..374 |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  375..406 | a       |  GET |  jednotka A/D vstupu (text)
  375..406 |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  407..428 |         |  GET |  n/a (reserved)
  407..428 |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  429      | u32     |  GET |  surová hodnota Vbatt (raw ADC hodnota) konverze je: Vbatt = (b_raw*3.3)/2048 (Volty)
  429      |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  430      | u32     |  GET |  hodnota VrefInt v miliVoltech (typicky 3300)
  430      |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  431..438 | u32 (a) |  GET |  surová hodnota (raw) A/D vstupu (0..4095)
  431..438 |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  439..462 |         |  GET |  n/a (reserved)
  439..462 |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  463..469 | f32 (a) |  GET |  kalibrační údaje (F0..F6) pro A/D vstup [0]
  463..469 |         |  SET |  n/a (read-only)
-----------+---------+------+---------------------------------------------- 
  470..476 | f32 (a) |  GET |  kalibrační údaje (F0..F6) pro A/D vstup [1]
  470..476 |         |  SET |  n/a (read-only)
-----------+---------+------+---------------------------------------------- 
  477..483 | f32 (a) |  GET |  kalibrační údaje (F0..F6) pro A/D vstup [2]
  477..483 |         |  SET |  n/a (read-only)
-----------+---------+------+---------------------------------------------- 
  484..490 | f32 (a) |  GET |  kalibrační údaje (F0..F6) pro A/D vstup [3]
  484..490 |         |  SET |  n/a (read-only)
-----------+---------+------+---------------------------------------------- 
  491..497 | f32 (a) |  GET |  kalibrační údaje (F0..F6) pro A/D vstup [4]
  491..497 |         |  SET |  n/a (read-only)
-----------+---------+------+---------------------------------------------- 
  498..504 | f32 (a) |  GET |  kalibrační údaje (F0..F6) pro A/D vstup [5]
  498..504 |         |  SET |  n/a (read-only)
-----------+---------+------+---------------------------------------------- 
  505..511 | f32 (a) |  GET |  kalibrační údaje (F0..F6) pro A/D vstup [6]
  505..511 |         |  SET |  n/a (read-only)
-----------+---------+------+---------------------------------------------- 
  512..518 | f32 (a) |  GET |  kalibrační údaje (F0..F6) pro A/D vstup [7]
  512..518 |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
  519..998 |         |  GET |  n/a (reserved)
  519..998 |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
  999      | u32     |  GET |  stav tarifního vstupu (je-li v režimu T0 nebo T1)
  999      | u32     |  SET |  TBD
-----------+---------+------+----------------------------------------------
 1000..1031| u32 (a) |  GET |  [S0-vstup] údaj počítadla pro T0
 1000..1031| u32     |  SET |  [S0-vstup] údaj počítadla pro T0
-----------+---------+------+----------------------------------------------
 1032..1063| u32 (a) |  GET |  [S0-vstup] údaj počítadla pro T1
 1032..1063| u32     |  SET |  [S0-vstup] údaj počítadla pro T1
-----------+---------+------+----------------------------------------------
 1064..1095| u32 (a) |  GET |  [S0-vstup] vzdálenost (msec) mezi impulsy
 1064..1095|         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
 1096..1127| u32 (a) |  GET |  [S0-vstup] čas (msec) od posledního impulsu
 1096..1127|         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
 1128..1499|         |  GET |  n/a (reserved)
 1128..1499|         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
 1500..1531| a       |  GET |  [S0-vstup] konfigurační struktura
 1500..1531| a       |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
 1532..1999|         |  GET |  n/a (reserved)
 1532..1999|         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
 2000..2063| u32 (a) |  GET |  [1-W BUS (A)] device status
 2000..2063|         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
 2100..2163| a       |  GET |  [1-W BUS (A)] konfigurační struktura
 2100..2163|         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
 2200..2263| i32 (a) |  GET |  [1-W BUS (A)] přečtená hodnota (základní)
 2200..2263|         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
 2300..2363| i32 (a) |  GET |  [1-W BUS (A)] přečtená hodnota (doplňková)
 2300..2363|         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
 2364..2499|         |  GET |  n/a (reserved)
 2364..2499|         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
 2500..2563| u32 (a) |  GET |  [1-W BUS (B)] device status
 2500..2563|         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
 2600..2663| a       |  GET |  [1-W BUS (B)] konfigurační struktura
 2600..2663|         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
 2700..2763| i32 (a) |  GET |  [1-W BUS (B)] přečtená hodnota (základní)
 2700..2763|         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
 2800..2863| i32 (a) |  GET |  [1-W BUS (B)] přečtená hodnota (doplňková)
 2800..2863|         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
 2864..2997|         |  GET |  n/a (reserved)
 2864..2997|         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
 2998      | u32     |  GET |  general 1-W Master Chip status: 1 = detecting; 2 or 4 = failure; 8 = working; 16 = disabled by user
 2998      |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
 2999      | u32     |  GET |  general 1-W Master Chip status: detection-retry countdown (*10msec)
 2999      |         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
 3000      |         |  GET |  n/a (reserved)
 3000      |         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
 3001      | a       |  GET |  custom 24-byte string (readable via SNMP)
 3001      | a       |  SET |  write
-----------+---------+------+----------------------------------------------
 3002      | a       |  GET |  custom 24-byte string (readable via SNMP)
 3002      | a       |  SET |  write
-----------+---------+------+----------------------------------------------
 3003      | a       |  GET |  custom 16-byte string (readable via SNMP)
 3003      | a       |  SET |  write
-----------+---------+------+----------------------------------------------
 3004      | a       |  GET |  custom 16-byte string (readable via SNMP)
 3004      | a       |  SET |  write
-----------+---------+------+----------------------------------------------
 3005      | a       |  GET |  custom 16-byte string (readable via SNMP)
 3005      | a       |  SET |  write
-----------+---------+------+----------------------------------------------
 3006..3999|         |  GET |  n/a (reserved)
 3006..3999|         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
 4000..4099| i32     |  GET |  Shared Variables: S00 through S99
 4000..4099|         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
 4100..4199| u32     |  GET |  Shared Variables: U00 through U99
 4100..4199|         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
 4200..4299| f32     |  GET |  Shared Variables: F00 through F99
 4200..4299|         |  SET |  n/a (read-only)
-----------+---------+------+----------------------------------------------
 4300..4399|         |  GET |  n/a (reserved)
 4300..4399|         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
 4400..4999|         |  GET |  n/a (reserved)
 4400..4999|         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------
 5000..5127| u/i/f 32|  GET |  BackUp-RAM (FC version 0x08+)
 5000..5127| u/i/f 32|  SET |  BackUp-RAM (FC version 0x08+)
-----------+---------+------+----------------------------------------------
 5128.. end|         |  GET |  n/a (reserved)
 5128.. end|         |  SET |  n/a (reserved)
-----------+---------+------+----------------------------------------------


Poznámky

Položky obsahující: "konfigurační struktura" vyžadují dostatečně velký prostor pro uložení výsledku (při zavolání SDS_get_a() funkce). V takovém případě se do vámi určené cílové oblasti ukládá celý "struct" který obsahuje všechny potřebné údaje patřící pod danou položku (názvy, hodnoty, atd.). Pro detaily je nejlépe podívat se přímo na aktuální příklady, které přesně popisují postup pro každý typ takové struktury - a vysvětlují tuto poznámku svým kódem.

Indexy označené jako (a) lze blokově číst. Vždy lze blokové čtení (více indexů za sebou v rámci povoleného rozsahu) provést pouze od prvního indexu v bloku (ne od dalších v bloku). Příklad: indexy 1000 až 1031 lze přečíst jako jeden souvislý blok, když se začne číst od prvního indexu v bloku (tj. 1000). Počet následně čtených indexů se udáva dalším parametrem při volání SDS_get_a() funkce. Pokud se pokusíte číst blok indexů ne od začátku bloku, čtení selže - pokud blok indexů začíná na 1000 tak musíte požádat o čtení od indexu 1000, přičemž začátek od 1001 a výše selže.

BackUp-RAM funkce je dostupná je pro firmware který poskytuje verzi FULL-C o hodnotě 0x08 nebo novější. BackUp-RAM je sada 32-bit hodnot, které lze zapisovat a číst, a které jsou (především) uchovány v paměti, která je zálohovaná baterií (tzn. drží hodnotu i po výpadku napájení, tak dlouho než se baterie vybije). Výhodou BackUp-RAM oproti DF je možnost přímého přístupu a rychlosti (naopak DF vyžaduje čtení a zápis celých stránek).


Vysvětlení položek

V tabulce výše jsou uvedeny informace, které naleznete na jednotlivých indexech. Nicméně popisy uvedené v této tabulce jsou velmi zkrácené, a je k nim tedy potřeba mnohem širší vysvětlení. To naleznete na dalších stránkách v rámci této wiki, nebo se nás rovnou zeptejte (přes forum).


Vstupy pro měření napětí

Detaily k A/D vstupům jsou uvedeny zde. Pro psaní programu je důležité mapování indexu na jednotlivé vstupy, viz tabulka.

Osobní nástroje
Translate