Sdsc sysp

Z onlinetechnology.cz

Přejít na: navigace, hledání

Obsah

Definice proměnných

Proměnné poskytované libovolným zařízením řady SDS jsou označeny jako sys[x], kde x je číslo do 0 do 1023.

Tyto proměnné lze číst, popř. do nich zapsat novou hodnotu. To vše můžete provést ve svém SDS-C programu, nebo přes některou z komunikačních funkcí (např. UDP protokolem, nebo přes webové rozhraní).

Proměnná typu i je 32 bit signed integer.

Proměnná typu s je soubor znaků (string) - tj. text - lze použít jen pro čtení.

Některé proměnné lze jen číst (R), do některých lze kromě čtení i zapisovat (RW).

Údaj XX v seznamu proměnných udává verzi firmware, kdy byla daná proměnná zavedena. Význam hodnot:

  • 01 - první verze, výchozí firmware ze začátku roku 2010
  • 02 - druhá verze, bylo vydáno na přelomu roku 2010 a 2011
  • 03 - třetí verze, tj. pouze pro firmware od 03.2011
  • 04 - čtvrtá verze, tj. pouze pro firmware od 06.2011 a novější
  • 05 - pátá verze, tj. pouze pro firmware od 11.2011 a novější
  • 06 - šestá verze, tj. pouze pro firmware od 03.2012 a novější

Všechny proměnné označené jako rezerva mohou být v budoucích verzích firmware nějak využity. Pokud jsou však pro tuto verzi firmware označeny jako rezerva, pak se nesmí používat (zapisovat do nich, kvůli budoucí kompatibilitě). Při čtení obvykle vrací hodnotu nula, ovšem jakmile budou v novém firmware využity, už budou vracet konkrétní hodnotu.

Jazyk C indexuje pole od čísla 0 (nula). Stejně tak tomu je i u SDS-C (pro všechna pole, tj. "sys[]", "ram[]", "text[]").

Pozor však na číslování hardware vstupů a výstupů, ty jsou číslovány dle elektrikářských zvyklostí, to znamena že číslování začíná od čísla 1 (jednička).

Pokud narazíte na zařízení SDS s velmi starou verzí webového rozhraní, kde jsou ještě některé vstupy číslovány od nuly, aktualizujte si toto zařízení aby používalo nejnovější firmware.

Použítí v programu

Zápis a čtení z/do systémových proměnných má okamžitý přímý vliv na hardware, se kterým jsou konkrétní proměnné svázány.

Příklad zápisu v programu: jaká je teplota na čidle 1 (celé stupně Celsia)?

 teplota0_ve_stupnich_C = sys[310] / 100;

Ne vždy je potřeba provádě převody. Pokud např. chcete porovnat dvě hodnoty z různých teplotních čidel, můžete to udělat přímo (bez dělení 100 jako v předchozím příkladu) - samozřejmě toto platí pouze tehdy, pokud porovnáváte hodnoty ve stejných jednotkách:

 if (sys[310] > sys[311]) { echo('Prvni cidlo je teplejsi nez druhe.'); };

Příklad zápisu v programu: jak zapnu relé RE1?

 sys[231] = 1; // v tomto okamžiku dojde k ovládnutí relé

Můžete (od 03 verze SDS-C) použít i #define, příklad:

 #define RELE1 sys[231]
 
 #define TEPLOTA sys[310]
 
 // ...
 
 RELE1 = 1;
 
 if (TEPLOTA > 3200) goto x;

Pole ram[]

Pole ram[] je samostatné nezávislé pole, dostupné pro SDS-C program od verze č. 03.

Obsah pole ram[] je uložen samostatně v RAM paměti, a je při resetu zařízení ztracen.

Obsah pole ram[] se nekryje s dalšími proměnnými programu a tak dále (je to zcela samostatné paměťové pole).

Pole ram[] lze indexovat číslem nebo proměnnou. Příkladem:

 hodnota = ram[10];
 
 index = 23;
 ram[index] = 15 * 2;

Pole ram[] je indexováno od indexu nula (ram[0]). Celková velikost (maximální index) je dán verzí SDS-C a konkrétního firmware v zařízení.

Verze SDS-C č. 03 má maximální velikost pole ram[] nastavenou na 128 položek. Novější verze už mají počet zvýšený.

Pole ram[] můžete využít k čemukoliv co potřebujete. Pozor na funkci http_get(), která může do pole ram[] ukládat obsah textu obdrženého ze serveru (toto chování se nastavuje příslušnými sys[]).

Ukládání trvalých dat

Všechny verze SDS-C mají od začátku k dispozi prostor v oblasti sys[100] až sys[115].

Od verze SDS-C č. 05 je možno, navíc k tomuto základu, zapisovat a přečíst mnohem větší množství údajů v externím paměťovém chipu DATAFLASH (AT45DB), osazeném na desce zařízení SDS.

Pozn. toto není k dispozici pouze pro SDS MICRO LIGHT které používá paměť EEPROM (zde se vždy při čtení vrací hodnota nula), tam máte k dispozici jen původních 16 pozic.

Více informací, způsob použití a důležeté varování je uvedeno na stránce ohledně dataflash.

Pole text[]

Od verze SDS-C č. 06 je možné v určité míře pracovat s texty. Toto má především využití v komunikaci přes sériovou linku (RS232/RS485) a při odesílání a příjmu dat (email, http).

Za tímto účelem je připraveno pole text[]. Detailní popis je zde.

Vyhrazené proměnné

SDS-C obsahuje celou řadu vyhrazených, předem definovaných názvu proměnných. Tyto proměnné obsahují aktuální online informace a údaje, vzhledem ke stavu zařízení. Dá se jimi také zařízení (resp. periférie) přímo ovládat.

Seznam konkrétních zabudovaných funkcí naleznete na jiné stránce.

Jednotné proměnné pro kompletně všechny výrobky řady SDS

STAV SYSTÉMU

sys[0]   01 i R   "pair code" firmware (napevno, identifikátor vázanosti firmware na hardware)
sys[1]   01 i R   počet přihlášených uživatelů do webového rozhraní

sys[2]   01 s R   sysLocation (SNMP, nastaveno ve webové administraci)

sys[3]   01 i R   hodnota UP TIME (čas vyjádřen v setinách sekundy, počítá se od nuly od zapnutí zařízení)

sys[4]   01 i R   hodnota NTP času (UNIX čas, v sekundách, je započítán GMT offset nastavený ve webovém rozhraní)
sys[5]   01 i R   rozpad NTP času: den (1 až 31)
sys[6]   01 i R   rozpad NTP času: měsíc (1 až 12)
sys[7]   01 i R   rozpad NTP času: rok (2011 a dále)
sys[8]   01 i R   rozpad NTP času: hodina (0 až 23)
sys[9]   01 i R   rozpad NTP času: minuta (0 až 59)
sys[10]  01 i R   rozpad NTP času: sekunda (0 až 59)
sys[11]  01 i R   čas: milisekunda (0 až 999) (pozn. současná verze vrací vždy nulu)

POZNÁMKA: určení dne v týdnu:

Využijte sys[4]. Den v týdnu se vypočte následovně:

 dow = ((sys[4] / 86400) + 4) % 7;

Hodnoty "dow":

  • 0 = neděle
  • 1 = pondělí
  • 2 = úterý atd.
  • 6 = sobota

Upozornění: hodnota NTP času je platná až po úspěšném získání informací z NTP serveru. Po zapnutí (restartu) zařízení je NTP time nastaven na nulu. NTP time je aktualizován interně co jednu sekundu, a dále pravidelně (v delším intervalu) z NTP serveru.

pokračování výpisu

sys[12]  01 i R   IP[0] adresa zařízení (nastaveno ve webové administraci)
sys[13]  01 i R   IP[1] adresa zařízení
sys[14]  01 i R   IP[2] adresa zařízení
sys[15]  01 i R   IP[3] adresa zařízení

sys[16]  01 i R   GW_IP[0] adresa brány (nastaveno ve webové administraci)
sys[17]  01 i R   GW_IP[1] adresa brány
sys[18]  01 i R   GW_IP[2] adresa brány
sys[19]  01 i R   GW_IP[3] adresa brány

sys[20]  01 i R   NETMASK[0] síťová maska (nastaveno ve webové administraci)
sys[21]  01 i R   NETMASK[1] síťová maska
sys[22]  01 i R   NETMASK[2] síťová maska
sys[23]  01 i R   NETMASK[3] síťová maska
sys[24]  01 i R   rozhraní Ethernet spuštěno 
                  (hodnota nastavena v okamžiku prvního připojení kabelu, bez další změny)

sys[25]  01 i R   rychlost připojení k síti Ethernet (hodnoty: 0, 10, 100)
                  Od verze SDS-C č. 04 odpovídají aktuální rychlosti přečtené přímo z PHY, 
                  a hodnota je čtena z PHY vždy v okamžiku dotazu programu na hodnotu sys[25]                   
sys[26]  04 i R   hodnota GMT offsetu pro NTP (nastaveno v administraci ve webovém rozhraní)
sys[27] až sys[30]  RESERVED vyhrazeno
sys[31]  04 i R   MAC[0] (nastaveno ve webovém rozhraní)
sys[32]  04 i R   MAC[1] 
sys[33]  04 i R   MAC[2] 
sys[34]  04 i R   MAC[3] 
sys[35]  04 i R   MAC[4] 
sys[36]  04 i R   MAC[5]
sys[37] až sys[47]  RESERVED vyhrazeno
sys[48]  04 i R   informace, je-li přijímací buffer rozhraní UART prázdný, možné hodnoty:
                  == 0 ... v bufferu je jeden popř. více znaků, lze je přečíst (buffer není prázdný)
                  == 1 ... buffer je prázdný (nebyl přijat znak od posledního vyprázdnění bufferu)

sys[49]  04 i R   čtení (vyjmutí) znaku z přijímacího bufferu rozhraní UART
                  pozn. čtením tohoto sys[49] se vyjme znak (je-li v bufferu nějaký k dispozici), 
                  takže si dejte pozor protože po vyjmutí už tento znak v bufferu samozřejmě není ! 
                  Toto způsobí nezkušenému programátorovi potíže. 
                  Proto je vhodnější čtení ze sys[49] provést vždy jednou do vlastní proměnné, 
                  a s tou pak dále dle libosti pracovat.
                  Možné hodnoty: 
                  == 0255 ... hodnota právě vyjmutého znaku z bufferu (znak přijatý UARTem)
                  == -1 ... v bufferu není jakýkoliv znak k dispozici (prázdný buffer)

Poznámka: čtení z UART RX bufferu je k dispozci jen ve verzi SDS-C č. 04 a výše. Poznámka: UART buffer je neustále aktivní a přijímá data z UARTu po celou dobu zapnutí zařízení. Poznámka: UART buffer je vymazán vždy tehdy, když se připojí klient k převodníku Eth/UART

sys[50]  02 i R   je připojen klient (Ethernet) k převodníku Eth/UART (0 = ne)
sys[51]  02 i R   rychlost [bps] rozhraní UART (viz převodník Eth/UART)
sys[52]  02 i R   počet datových bitů rozhraní UART (5,6,7,8)
sys[53]  02 i R   počet stop bitů rozhraní UART (1,2)
sys[54]  02 i R   nastavení paritního bitu rozhraní UART (0,1,2,3,4,5)

Poznámka: parametry sériového rozhraní UART lze nastavit v rámci převodníku Ethernet/UART (přes RFC příkazy), nebo pomocí k tomu určené SDS-C funkce. Pozor, nastavení nelze změnit přímým zápisem hodnoty do sys[50] až sys[54] (ty jsou pouze pro čtení).

sys[55] až sys[61]  RESERVED vyhrazeno
sys[62]  06 i RW  výsledek převodu provedeného funkcí atoi(text[index]);
sys[63]  04 i RW  vypnutí rychlostního omezení programu, nastavte na:
                  == 0 (výchozí hodnota po spuštění programu) ... jeden celý příkaz se provede co 1 msec
                  == 128 ... program je prováděn s co největší rychlostí (bez 1 msec kroku) 
                     - pozor ale na realizaci čekacích smyček, lze použít jen k tomu určené funkce nebo sys[64]

Poznámka: všechny SDS-C programy jsou ve výchozím stavu spouštěny se sys[63] = 0, tzn. jeden celý příkaz je vykonán co 1 msec. Toho některé programy využívají k realizaci čekacích smyček, když se předpokládá jeden vykonaný příkaz za 1 msec. Pokud však vypnete rychlostní omezení, tak tyto čekací smyčky přestanou plnit svou funkci (skončí mnohem dříve). Proto ve svých programem používejte pouze k čekání určené funkce, nebo případně sys[64]:

sys[64]  01 i RW  sekundový odpočítávač - zapište libovolné kladné číslo, 
                  a systém každou vteřinu toto číslo sníží o 1, 
                  až do nuly, kde v sys[64] zůstane nula (dokud tam zase něco nezapíšete)


Všechny funkce OSI7 vracejí status code:

sys[65]  01 i R   status code - hlášení úspěšnosti/chyby OSI7 funkcí (dns, http, email)
                  význam hodnot viz popis na odkazu výše

Poznámka: vždy je doporučeno, po zavolání kterékoliv OSI7 funkce, provést v programu čekání na skončení této funkce. Čekání má kontrolovat právě hodnotu v sys[65], a dokud se tato proměnná nenaplní výsledkem, nevolejte další OSI7 funkci.

DNS resolv: sestavením IP[0].IP[1].IP[2].IP[3] získáte IP adresu (napr. 10.0.0.8) z DNS po úspěšném návratu z funkce DNS resolveru. Tato získaná IP adresa pak může sloužit pro různé účely, např. pro kontrolu DNS serveru jestli žije atd.

sys[66]  01 i R   bajt IP[0] - vystup DNS resolveru, funkce dns_resolve("dotazovanadomena.cz");
sys[67]  01 i R   bajt IP[1] - vystup DNS resolveru, funkce dns_resolve("dotazovanadomena.cz");
sys[68]  01 i R   bajt IP[2] - vystup DNS resolveru, funkce dns_resolve("dotazovanadomena.cz");
sys[69]  01 i R   bajt IP[3] - vystup DNS resolveru, funkce dns_resolve("dotazovanadomena.cz");

Pro funkci DNS resolveru je potřeba provést konfiguraci (přes webové rozhraní).

sys[70]  01 i R   bajt DNS_R_IP[0] - adresa samotného DNS resolveru (DNS server)
sys[71]  01 i R   bajt DNS_R_IP[1] - adresa samotného DNS resolveru
sys[72]  01 i R   bajt DNS_R_IP[2] - adresa samotného DNS resolveru
sys[73]  01 i R   bajt DNS_R_IP[3] - adresa samotného DNS resolveru (nastaveno ve webovém rozhraní)
sys[74]  01 s R   text, reserved (v této verzi nepoužito)
sys[75]  01 i R   návratový kód webového serveru pro HTTP GET (nastaveno po dokončení práce funkce http_get() )
                  (např. číslo 200 pro 'OK', 404 pro 'not found', a tak dále).

sys[76]  03 i RW  číslo portu který použije HTTP klient (výchozí hodnota po startu je 80)
                  pozn. hodnota tohoto sys[76] se přebere v okamžiku zavolání http_get,
                  pozdější zápisy mají vliv až zase v okamžiku dalšího zavolání http_get.

sys[77]  04 i RW  ukládat data přijatá z HTTP serveru po obdržení odpovědi na HTTP GET požadavek
                  do pole ram[]. Tato funkce je výhodná pro okamžité řízení SDS-C programu. Nastavte na:
                  == 0 ... data jsou zahozena, do pole ram[] se neuloží (nedojde ke změně obsahu ram[]/text[])
                  == 1 ... prvních XXX bajtů odpovědi je vloženo do pole ram[] v rozsahu ram[1] až ram[XXX]
                           a do ram[0] je uložena délka odpovědi (tj. hodnota: -1, 0, 1, 2, ... až XXX).
                           (tzn. původní obsah této oblasti pole ram[] je přepsán)
                           pozn. číslo XXX je právě hodnota zapsaná v sys[78]
                  == 2 ... prvních XXX bajtů odpovědi je vloženo do pole text[] v rozsahu text[0] až text[XXX]
                           a do ram[0] je uložena délka odpovědi (tj. hodnota: -1, 0, 1, 2, ... až XXX).
                           (tzn. původní obsah této oblasti pole text[] a položka ram[0] je přepsán)
                           pozn. číslo XXX je právě hodnota zapsaná v sys[78]

                  Hodnota ram[0] je vždy zapsaná, ať je sys[77] jakékoliv. Počítejte s tím ve svém programu !

sys[78]  04 i RW  počet bajtů, které CHCETE uložit do ram[] nebo text[] po přijetí HTTP GET odpovědi
                  výchozí hodnota je 32 (tzn. uloží se 32 znaků + samostatně délka do ram[0])
                  maximální hodnota je omezena velikostí pole ram[] nebo text[]
                  pokud zapíšete 0, jsou všechna data zahozena, ale i v tomto případě dojde k přepisu ram[0] (viz výše)
sys[79] až sys[80]  RESERVED vyhrazeno


Pro funkci SMTP je potřeba provést konfiguraci (přes webové rozhraní).

sys[81]  01 i R   bajt SMTP_S_IP[0] - adresa SMTP serveru (je použita pro funkci smtp_send())
sys[82]  01 i R   bajt SMTP_S_IP[1] - adresa SMTP serveru
sys[83]  01 i R   bajt SMTP_S_IP[2] - adresa SMTP serveru
sys[84]  01 i R   bajt SMTP_S_IP[3] - adresa SMTP serveru (adresa je nastavena ve webovém rozhraní)
sys[85] až sys[91]  RESERVED vyhrazeno

Informace z ICMP PING funkce - ping() :

sys[92]  04 i R   stav ICMP PING RESPONSE v okamžiku čtení tohoto sys[92] 

sys[93]  04 i R   PING SEQ number, hodnota je -1 dokud není přijata odpověď ICMP PING RESPONSE 
                  na ICMP PING REQUEST odeslaný funkcí ping()

sys[94]  04 i R   Round Trip Time, v milisekundách, dokud není přijata platná ICMP PING RESPONSE tak je zde hodnota 0xFFFF
                  čas je zvyšován po pěti milisekundách (ale údaj v sys[94] je přímo v msec, hodnota 55 znamená 55 msec)

Pozn.: ICMP Quench (32bit) je sestaven z "identifier" (16bit) a z "sequence number". Pomocí sys[93] můžete nastavit číslo sekvence na libovolnou hodnotu, přičemž hodnota "identifier" je napevno nastavena na "0x0280" .

VÝZNAM HODNOTY PROMĚNNÉ "stav RESPONSE" PRO PING

  • 0 = klid (není odeslán paket, nečekám na odpověď), popř. byla zadána neplatná IP adresa do funkce ping() a proto se nic neodešle
  • 1 = funkce ping() byla právě zavolána, takže se teprve chystá provést svou činnost, zatím se neví výsledek odesílání
  • 2 = čeká se na odpověď od ARP (POZOR! Znamená to že místo ICMP PING REQUEST paketu byl odeslán ARP paket, protože v ARP tabulce nebyl příslušný záznam
  • 4 = poslán ECHO REQUEST, čekám na ECHO REPLY (požadovaný stav, funkce ping() funguje ok)
  • 8 = právě obdržel ECHO REPLY (byla přijata odpověď od vzdáleného zařízení)


Funkce send_udp():

sys[95]  06 i R   výsledek posledního volání send_udp()
                  Hodnoty:
                  == 0  nic neprovedeno, popř. činnost funkce právě probíhá
                              Hodnota 0 je nastavena okamžitě po jakémkoliv zavolání send_udp().
                  == 1  byl odeslán UDP paket
                              Hodnota 1 je nastavena v okamžiku úspěšného skutečného odeslání UDP paketu
                  == 2  nebyl odeslán UDP paket, protože byl odeslán ARP dotaz 
                              Hodnota 2 je nastavena, pokud není známá MAC pro zadanou IP 
                              a byl tedy místo požadovaného UDP paketu odeslán ARP dotaz
                  == 3  zavolali jste funkci send_udp() znovu dříve, 
                              než byla dokočena činnost předchozího požadavku 
                              (sledujte hodnotu sys[95] a správně ji vyhodnocujte, a nestane se vám to)
sys[96] až sys[98]  RESERVED vyhrazeno

UŽIVATELSKÉ POZICE V PERMANENTNÍ PAMĚTI

sys[99]  05 i RW   předávací proměnná pro čtení a zápis z/do paměti dataflash
sys[100] až sys[115]  
         01 i RW   data uložená do permanentní paměti = co se sem napíše zůstane i po vypnutí zařízení,
                   můžete si sem uložit co chcete (tj. 16x signed long délky 32bit),
                   dále - po speciálním systémovém resetu (RSTD) je vše nastaveno na 0xFFFFFFFF 
                   (pozor! minimalizujte množství zápisů, životnost této paměti není neomezená !)

Paměť EEPROM a paměť DATAFLASH (podle verze HW který máte) je permanentní, tzn. její obsah zůstane i po vypnutí zařízení nezměněn (na rozdíl od paměti RAM, do které se přistupuje pomocí pole ram[]).

sys[116] až sys[139]  RESERVED vyhrazeno

Proměnné nastavitelné uživatelem z webového rozhraní

sys[140] až sys[147] 
         01 i RW uživatelské proměnné, možnost měnit z webu

sys[150] 01 i RW  blokování přístupu 
         Nastavení:
         0 = stránka "control" je přístupná bez hesla, 
         cokoliv jiného = je nutno se přihlásit

Uživatel, který má přístup k webové stránce, může zapsat nový obsah do těchto osmi proměnných (změnit jejich hodnotu), kdykoliv chce. Zápisem do sys[150] můžete nastavit bezpečnost přístupu k této webové stránce.

Adresa webové stránky je (IP je zde pro příklad): http://192.168.1.250/control (více informací zde).

Samozřejmě lze využít i přímého URL pro zápis do proměnných, což je výhodné např. při vzájemné komunikaci dvou zařízení.

Proměnné vstupů a výstupů pro všechny výrobky SDS

POZOR

Podle HW verze výrobku, jsou dostupné jen určité vstupy a výstupy. Zde je uveden plný seznam pro maximální konfiguraci, ale ne všechny HW verze mají všechno. Např. SDS MICRO má pouze dva reléové výstupy, kdežto SDS MACRO má čtyři.

Pokračování výpisu:

sys[151] až sys[182]  
         01 i R   stav binárního vstupu OPTO1 až OPTO32 (optočlen) - fyzický stav (je/není signál)
                               

Pozor, pokud u vašeho SDS (např. historické kousky SDS MICRO LIGHT) má číslované OPTO vstupy od nuly (né od jedničky), musíte si aktualizovate firmware v tomto zařízení, a případně upravit potisk (popis) na desce nebo krabičce.

Důležité info:

Pokud je na LED diodě optočlenu signál, hodnota sys[] pro dané OPTOx dává 0 (nulu), naopak při nepřítomnosti signálu je přítomna nenulová hodnota (vždy testujte na nulovou a nenulovou hodnotu, jediné co je zaručeno je totiž ta nula, kdežto nenulová hodnotu může být jakákoliv - ve skutečnosti každý opto vstup má přidělenou konstantu, podle které lze tento vstup identifikovat).

Pokračování výpisu:

sys[183] až sys[190]  RESERVED vyhrazeno

Pozor, výrobek SDS UPS nemá PWM výstup. Zápis do příslušných sys[] nemá u SDS UPS význam.

sys[191] 01 i RW  "Fm" = frekvence PWM výstupu [Hz]  (výstupní pin PWM na systémovém konektoru)        
sys[192] 01 i RW  poměr nastavení střídy PWM výstupu (SDS-C č. 04: hodnota od 0 do Fm)

Pozn.: od verze SDS-C č. 04 je rozsah frekvence PWM generátoru možno nastavit od 2Hz do 10MHz.

Pro verzi SDS-C č. 04 je poměr možno nastavit v rozsahu od nuly do hodnoty Fm (tj. sys[191]). Podle toho se mění střída od 0% do 100%. Předchozí verze SDS-C používali jiný způsob nastavení (pozor !).

sys[193] až sys[195]  RESERVED vyhrazeno
sys[196] až sys[228]   
         01 i RW  informace, kdo ovládá RE1RE32 (z webového rozhraní: const on / const off / IPW / SDS-C)

VÝZNAM HODNOTY PROMĚNNÉ "kdo ovládá REx" PRO RELÉ

  • 0 = ovládáno z webového rozhraní (ruční řízení - trvale zapnuto, trvale vypnuto)
  • 2 = ovládáno z SDS-C programu (zápis do sys[], je ignorováno nastavení na webu)
  • 4 = ovládáno z IP Watchdogu (interní IP watchdog, nastavuje se přes web)
sys[229] až sys[230]  RESERVED vyhrazeno
sys[231] až sys[262]   
         01 i RW  stav výstupu RE1 až RE32 (= zápis zde ovládá relé)
                  Možné hodnoty:
                  0 ... relé není aktivní (cívka relé bez proudu, MICRO: mosfet není sepnut)
                  nenulová hodnota ... relé je aktivní 
                  (cívka relé pod proudem, MICRO: mosfet je sepnut = výstup REx je spojen na GND)
sys[263] až sys[265]  RESERVED vyhrazeno
sys[266] až sys[298]   
         01 s R   uživatelský textový název pro RE1RE32 (nastaveno ve webovém rozhraní)
sys[264] až sys[300]  RESERVED vyhrazeno
sys[301] 01 i RW  stav pinu D0 (výstupní pin na systémovém konektoru) (pozn. není na SDS UPS)
sys[302] až sys[309]  RESERVED vyhrazeno

Teploměry na externí sběrnici 1-Wire®:

sys[310] až sys[341]   
         01 i R   hodnota údaje (teplota) z konkrétního čidla na 1-Wire® sběrnici

Teploměry mají hodnotu uloženou v násobku 100 (takže např. 24.5°C je uloženo jako číslo 2450, nebo -120.65°C je -12065). Pokud není k dispozici hodnota z čidla, není v záznamu číslo nula (pozor), ale schválně tam je číslo 16777216 (2^24).

Pozn.: pouze SDS MACRO má teploměry 17 až 32, protože má dvě samostatné sběrnice (konektory). Sběrnice A má teploměry 1 až 16, sběrnice B má teploměry 17 až 32. Sběrnice B je k dispozici jen pro SDS MACRO.

sys[342] až [345]  RESERVED vyhrazeno
sys[346] 01 i R   číslo čidla které je právě převáděno na sběrnici B (čteno přes 1-W, tj. je mu aktualizována hodnota)
sys[347] 01 i R   počet všech detekovaných (připojených) čidel na sběrnici B

sys[348] 01 i R   číslo čidla které je právě převáděno na sběrnici A (čteno přes 1-W, tj. je mu aktualizována hodnota)
sys[349] 01 i R   počet všech detekovaných (připojených) čidel na sběrnici A
sys[350] až sys[381]   
         01 i R   čidlo 1 až 32 - aktuální stav/chyba čidla v okamžiku čtení tohoto sys[]

VÝZNAM HODNOTY PROMĚNNÉ "stav/chyba" PRO TEPLOTNÍ ČIDLA

  • 0 = default, čidlo neexistuje, nic nevim (stav ihned po zapnutí, popř. trvale pro prázdnou pozici)
  • 2 = vše ok, komunikuje, odpovidá, právě byl získán výsledek
  • 4 = ví se jen že existuje (byl získán ROMCODE) (obvykle dočasný stav po spuštění zařízení)
  • 8 = začal další převod, čidlo je OK, komunikuje (správný stav)
  • 16 = nepovedlo se začít nový převod, CHYBA (obvykle fyzický problém se sběrnicí)
  • 32 = bylo přijato neplatné CRC, chyba (obvykle fyzický problém se sběrnicí)
sys[382] až [389]  RESERVED vyhrazeno
sys[391] až sys[422]  
         01 s R   uživatelský textový název pro čidlo 1 až 32 (nastaveno ve webovém rozhraní)

Poznámka: SDS MICRO ukládá názvy jen pro prvních osm čidel (z důvodů zpětné kompatibility s produktem light).

Pokračování výpisu:

sys[423] až sys[430]  RESERVED vyhrazeno
sys[431] 01 i R   hodnota A/D převodu ze vstupu AD1 [SoC přímý výstup, 0..1023], už po odečtu offsetu
sys[432] 01 i R   hodnota A/D převodu ze vstupu AD2 [SoC přímý výstup, 0..1023], už po odečtu offsetu
sys[433] 01 i R   hodnota A/D převodu ze vstupu AD3 [SoC přímý výstup, 0..1023], už po odečtu offsetu
sys[434] 01 i R   hodnota A/D převodu ze vstupu AD4 [SoC přímý výstup, 0..1023], už po odečtu offsetu

všechny převodní konstanty A/D nastavené ve webovém rozhraní (viz admin stránka):

sys[435] 01 i R   offset pro A/D 1  [jen pro informaci]
sys[436] 01 i R   div pro A/D 1
sys[437] 01 s R   textový název A/D 1
sys[438] 01 s R   jednotka A/D 1
sys[439] 01 i R   offset pro A/D 2  [jen pro informaci]
sys[440] 01 i R   div pro A/D 2
sys[441] 01 s R   textový název A/D 2
sys[442] 01 s R   jednotka A/D 2
sys[443] 01 i R   offset pro A/D 3  [jen pro informaci]
sys[444] 01 i R   div pro A/D 3
sys[445] 01 s R   textový název A/D 3
sys[446] 01 s R   jednotka A/D 3
sys[447] 01 i R   offset pro A/D 4  [jen pro informaci]
sys[448] 01 i R   div pro A/D 4
sys[449] 01 s R   textový název A/D 4
sys[450] 01 s R   jednotka A/D 4

Pozor! Hodnoty pro jednotlivé A/D data už mají odečtený offset (je to provedeno uvnitř firmware již při zpracovávání A/D převodu) ! Proto ho už ve svém SDS-C programu neodečítejte (bylo by to odečítáno podruhé).

sys[451] až sys[458]  RESERVED vyhrazeno

Proměnné pro S0 impulsní vstup:

sys[459] 01 i R   stav tarifu (0 = T0, 1 = T1)
sys[460] až sys[492]  
         01 i R   informace S0 (vstup 1 až 32) - rezerva

sys[493] až sys[525]  
         01 i R   hodnoty impulsních akumulátorů (počítadel) pro vstup S0 [1] až [32] pro tarif T0
         04 i RW  (od verze SDS-C č. 04 je možno z programu do počítadel i přímo zapisovat)
sys[526] až sys[558]  
         01 i R   hodnoty impulsních akumulátorů (počítadel) pro vstup S0 [1] až [32] pro tarif T1
         04 i RW  (od verze SDS-C č. 04 je možno z programu do počítadel i přímo zapisovat)

sys[559] až sys[591]  
         01 i R   konfigurace - uživatelem nastavené přepočtové konstanty S0 imp./kWh apod. (z webového rozhraní)

sys[592] až sys[624]  
         01 i R   časová vzdálenost mezi dvěmi impulsy (aktuální a předchozí impuls), měřeno v msec

sys[625] až sys[657]  
         01 i R   čas od posledního impulsu, tzn. doba bez impulsu, měřeno v msec


poznámka: tarif T0 a tarif T1 závisí na uživatelem zvoleném externím signálu (přeneseno do sys[459]), viz informace na stránce ohledně S0. Celková hodnota impulsů je samozřejmě součtem těchto dvou impulsních akumulátorů. Pokud není tarifní rozlišení využito, je vše zapisováno do akumulátoru pro T0.

poznámka: časová vzdálenost mezi impulsy se používá pro výpočet aktuálního výkonu (popř. průtoku atd. dle použitého měřiče) - můžete toho využít ve svém SDS-C programu.

poznámka: doba bez impulsu je dostupná teprve pro firmware od 26.9.2010 !

sys[658] až sys[670]  reserved for future use


Pouze pro SDS MICRO LIGHT:

sys[671] 02 i W   zápis na pin M4 (pouze SDS MICRO LIGHT s EEPROM, všechny ostatní výrobky toto nemají)
sys[672] 02 i W   zápis na pin M5 (pouze SDS MICRO LIGHT s EEPROM, všechny ostatní výrobky toto nemají)
sys[673] 02 i W   zápis na pin B1 (SDS MICRO LIGHT, LIGHT2, SDS MICRO DIN)
sys[674] 02 i W   zápis na pin A1 (SDS MICRO LIGHT, LIGHT2, SDS MICRO DIN)

Tyto zmíněné čtyři sys[] jsou dostupné pouze na modulu SDS MICRO LIGHT popř. DIN, s verzí firmware 9.1.2011 nebo novější.

SDS MICRO LIGHT s pamětí EEPROM: k dispozici jsou všechny čtyři výstupy.

SDS MICRO LIGHT s pamětí DATAFLASH: k dispozici jsou jen dva výstupy (A1, B1).

SDS MICRO LIGHT 2 s pamětí DATAFLASH: k dispozici jsou jen dva výstupy (A1, B1).

SDS MICRO DIN: k dispozici jsou jen dva výstupy (A1, B1).

SDS MACRO, SDS UPS: tyto výstupy nejsou k dispozici.

Vše to jsou logické výstupy, s CMOS 3V3 logickými úrovněmi (pro obecné použití je externí pull-up 47kOhm nutný). Lze to použít především pro ovládání BSS138 MOSFETů, např. pro spínání dalších relé (v případě použití BSS138 nedávejte externí pull-up, ale naopak dejte pull-down na GND o hodnotě 47kOhm).

Speciální proměnné pro SDS-UPS

SDS UPS nabízí, kromě již zmíněných proměnných (viz výpis výše), i doplňkové proměnné, specifické pro tento výrobek. Tyto rozšířené systémové proměnné jsou k dispozici ve firmware od 25.4.2011 .

SDS-UPS má všechny sys[0] až sys[699] shodné s SDS-MICRO. Rozdíl je v počtu a osazení periférií.

Pokud nejste spokojeni s originálním nabíjecím algoritmem, máte možnost si ho celý naprogramovat sami v SDS-C: všechny potřebné vstupní a výstupní údaje (proměnné) jsou vám k dispozici. Popřípadě, pokud chcete jen sledovat situaci, můžete je také využít (např. pro logování nabíjecího a vybíjecího proudu akumulátoru a tak dále).

sys[700] 02 i R   reserved
sys[701] 02 i R   reserved
sys[702] 02 i R   reserved
sys[703] 02 i R   reserved

Přepínač algoritmů:

sys[704] 02 i RW  řízení nabíjení - hodnoty které lze zapsat:
                  == 0  ...  nabíjení je ovládáno pomocí firmware (výchozí chování výrobku)
                  == 345  ...  pouze nabíjení (a ne jiné funkce) jsou řízeny programem SDS-C (= chování programujete vy)
                  == 824  ...  kompletní řízení (= volba funkce, nabíjení) je řízeno programem SDS-C

Pokud zvolíte vlastní (ruční) řízení, musíte trvale řídit nabíjení sami pomocí programu v SDS-C. Vlastní ovládání vejde v platnost zápisem čísla 345 nebo 824 do sys[704]. Tento zápis provedete pouze jednou na začátku programu, a dále pak musí trvale následovat váš algoritmus.

Pokud zvolíte 345, jediné co má váš program za úkol, je řídit samotný nabíjecí proces - toto je výhodné, když se nechcete zatěžovat hlídáním provozních stavů (tj. výpadek napájení atd.), což za vás v tomto režimu udělá původní firmware.

Pokud zvolíte 824, musíte sami kompletně řídit všechno chování UPS, tj. nejenom nabíjecí algoritmus, ale i detekce výpadku napájení, přepínání mezi stavy, indikační LED, a tak dále.

sys[705] až sys[731]  reserved

Pro realizaci vlastního nabíjecího algoritmu potřebujete zpracovávat všechny vstupy a důsledně nastavovat všechy výstupy.

Pokud váš program pouze sleduje činnost původního nabíjecího algoritmu, pak může samozřejmě všechny sys[] jen číst.

Vstupy a konfigurace:

sys[732] 02 i R   surová hodnota z A/D převodu - hodnota 2.5V vstupu - odpovídá hodnotě proudu 0.0A
sys[733] 02 i R   surová hodnota z A/D převodu - hodnota proudu do-z akumulátoru
sys[734] 02 i R   surová hodnota z A/D převodu - hodnota proudu z primárního vstupu
sys[735] 02 i R   surová hodnota z A/D převodu - hodnota napětí akumulátoru
sys[736] 02 i R   surová hodnota z A/D převodu - hodnota napětí primárního vstupu

Rozsah surových hodnot z A/D převodu je 0 až 4095. Lineárně to odpovídá příslušné měřené hodnotě. Měření napětí má 0 na 0V a maximální hodnot (4095) na maximu rozsahu. Měření proudu je specifické, protože měření ukazuje kladný i záporný proud, takže 0A je na hodnotě sys[732] (typicky 2047), všechno co je pod touto hodnotu je záporný proud, všechno nad je kladný proud. Znaménko proudu ukazuje, kam proud teče (např. záporný = vybíjení akumulátoru, atd.).

sys[737] až sys[739]  reserved

Následuje konfigurace provedená uživatelem ve webovém rozhraní. Hodnoty jsou přímo v rozmezí 0 až 4095, takže je lze PŘÍMO použít se surovými hodnotami z A/D převodu (tzn. zařízení se už postaralo o převod údajů zadaných uživatelem ve webovém rozhraní na tento formát). V důsledku je pak realizace algoritmu velmi snadná.

sys[740] 02 i R   primary voltage to say target is ok (pri_pvts)
sys[741] 02 i R   primary zadany odpocet v msec (pri_pvat)
sys[742] 02 i R   primary voltage to allow charging (at what voltage to allow chargin) (pri_fchg)
sys[743] 02 i R   accu disconnect voltage level (at what voltage to disconnect accu) (aku_avdv)
sys[744] 02 i R   accu target voltage when charging (when to switch to CV) (aku_avcd)
sys[745] 02 i R   accu target current when charging (constant current when in CC) (aku_accc)
sys[746] 02 i R   target charging voltage (final voltage on accu when fully charged)
sys[747] 02 i R   flag: do not answer ping when primary gone (pri_ping)
sys[748] 02 i R   flag: do not switch accu off (aku_dach)

Hodnoty sys[740] až sys[748] jsou konfigurační údaje (uživatel je změnil přes webové rozhraní, a tím se uložili do pevné paměti, takže vydrží reset nebo vypnutí zařízení). Pokud do nich v SDS-C programu zapíšete, tato nová zapsaná hodnota zůstane platná až do resetu nebo vypnutí, nebo do ručního přepsání uživatelem (ve webovém rozhraní). Zápis do těchto konkrétních sys[] nezpůsobí uložení nových hodnot do pevné paměti.

sys[749] až sys[760]  reserved

Výstupy:

Tyto všechny výstupy musíte správně ovládat po celou dobu, co bude zařízení SDS UPS zapnuto !


sys[761] 02 i RW   ovládání vypínání nabíječe
                   == 0 nabíječ v provozu (zapnuto = nabíjí se, regulujte jiným sys[])
                   != 0 nabíječ mimo provoz (vypnuto = nenabíjí se)

sys[762] 02 i RW   ovládání posunu rozsahu regulace nabíječe 
                   == 0 bez zásahu do zpětné vazby (původní regulační rozsah)
                   != 0 zásah do zpětné vazby (posun rozsahu)
                   (vhodné pro skokové zvýšení výstupního napětí nabíječe, když už nereaguje v původním rozsahu)

sys[763] 02 i RW   ovládání odpojovače baterie 
                   == 0 spínač vypnutý 
                   != 0 spínač sepnutý (baterie připojena)

sys[764] 02 i RW   indikační LED - nabíjení akumulátoru
                   == 0 LED svítí (informace: akumulátor je nabíjen)
                   != 0 LED nesvítí (informace: akumulátor není nabíjen)

sys[765] 02 i RW   indikační LED - výpadek primárního vstupu
                   == 0 LED svítí (informace: napětí primárního vstupu pod dolním limitem)
                   != 0 LED nesvítí (informace: primární vstup má napětí vyšší než je dolní limit)

Řízení nabíjení: Je potřeba správně regulovat pomocí následujícího výstupu:

sys[766] 02 i RW   přímé řízení nabíjecího bloku (výstup regulace sem)
                   minimální hodnota = 1
                   maximální hodnota = 2497
sys[767] až sys[769]  RESERVED vyhrazeno

Následující údaje jsou určeny pro zobrazování na webovém rozhraní:

sys[770] 02 i RW   provozní režim: vždy jedno z UPS_PROVOZ_xxx

sys[771] 02 i RW   nabíjecí režim: vždy jedno z UPS_NABREZIM_xxx

sys[772] 02 i RW   výsledek odhadu stavu baterie: vždy jedno z UPS_BATERIE_ODHAD_xxx

Konstanty pro zápis (je to potřeba dodržet, protože se to přímo zobrazuje na webovém rozhraní):

UPS_PROVOZ_START            0
UPS_PROVOZ_PRIOK            1
UPS_PROVOZ_PRIOK_CHARGING   2
UPS_PROVOZ_ONLY_BATT        4
UPS_PROVOZ_NO_BATT          8

UPS_NABREZIM_CC             0
UPS_NABREZIM_CV             2
UPS_NABREZIM_PAUZA          4
UPS_NABREZIM_URCENI_REZIMU  8

UPS_BATERIE_ODHAD_NEZNAM            0
UPS_BATERIE_ODHAD_MOC_NIZKE_NAPETI  1
UPS_BATERIE_ODHAD_OK_NABIJIM        2
UPS_BATERIE_ODHAD_PLNE_NABITO       4
Osobní nástroje
Translate