<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="cs">
	<id>https://wiki.merenienergie.cz/subdom/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Adamn</id>
	<title>SDS: Síťový Dohledový Systém - Příspěvky uživatele [cs]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.merenienergie.cz/subdom/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Adamn"/>
	<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Speci%C3%A1ln%C3%AD:P%C5%99%C3%ADsp%C4%9Bvky/Adamn"/>
	<updated>2026-06-13T12:18:50Z</updated>
	<subtitle>Příspěvky uživatele</subtitle>
	<generator>MediaWiki 1.35.1</generator>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=S%C3%AD%C5%A5ov%C3%BD_Dohledov%C3%BD_Syst%C3%A9m&amp;diff=981</id>
		<title>Síťový Dohledový Systém</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=S%C3%AD%C5%A5ov%C3%BD_Dohledov%C3%BD_Syst%C3%A9m&amp;diff=981"/>
		<updated>2025-12-23T17:54:44Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;div class=&amp;quot;warningbox&amp;quot;&amp;gt;Výrobky SDS jsou navrženy a vyrobeny v EU, děkujeme za jejich nákup a využívání.&amp;lt;br&amp;gt;Pomáháte tak i správné věci, jakou je finanční a morální pomoc napadené Ukraině při její obraně.&amp;lt;br&amp;gt; Přispět můžete ještě více, přímo na [https://u24.gov.ua u24.gov.ua] nebo [https://www.zbraneproukrajinu.cz České nadaci].&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-2 large-4 columns&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;První Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
Řada '''ST''': ''aktuální''&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS MICRO: ST]] / [[SDS MICRO: ST DP|ST-DP]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS IO6: ST]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS MACRO: ST]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS TTCPRO: ST]] (+[[SDS TTCPRO: GSM|GSM]], +[[SDS TTCPRO: 8in2out|8in2out]])&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS MINI: ST]] ([[SDS MINI: LoRa|+ LoRA]])&amp;lt;/li&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
Řada '''LM''':&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS MICRO: LM]] &amp;lt;br&amp;gt;varianty: LIGHT / E (DIN)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS IO6: LM]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS MACRO: LM]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS UPS: LM]] varianta: ONEDPS&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;Druhá Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS BIG|SDS BIG / BIG2]] (DP, DS84) : 64 / 128 / 512&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; &amp;amp;nbsp;&amp;amp;nbsp; [[SDS BIG: DALI|+DALI]] [[SDS BIG: MBUS|+MBUS]] [[SDS BIG: LoRA|+LoRA]] [[SDS_BIG:_SW-RELE6|+RELE6]] [[SDS_BIG:_SW-RTC-COM-O6|+RTC/O6]] [[SDS_BIG:_SW-IN24S7AI2|+IN24S7AI2]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS SMALL]] : 64 / 128 / 512&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS STSW]] : 64 / 128 / 512&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS MBGW|SDS ENERGO MBGW]] : 512&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;SDS Doplňkové Moduly&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;li&amp;gt; [[SDS 1W T-RH]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;li&amp;gt; [[SDS ANALOG RH]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;li&amp;gt; [[SDS PWM10]]&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-4 large-4 columns&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;SDS-C&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS-C: intro|úvod]] a [[SDS-C: popis jazyka|popis jazyka]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS-C: sdsc_sysp|systémové proměnné]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS-C: sdsc_rsvdf|vyhrazené funkce]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS-C: sdsc_sysf|systémové funkce]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[OSI7 status code|OSI stavové hodnoty]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS-C: examples|příklady]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS-C: DataFlash|paměť DataFlash]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS-C: rychlost|rychlost]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS-C: sharing|sdílené proměnné]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS-C: program upload|způsoby nahrání SDS-C do SDS]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;FULL-C&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[FULL-C: intro|úvod]] a [[FULL-C: popis jazyka|popis jazyka]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[FULL-C: tips and tricks|důležité postupy, triky, tipy]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[FULL-C: set and get|systémové proměnné]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[FULL-C: functions|systémové funkce]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[FULL-C: examples|příklady]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[FULL-C: sharing|sdílené proměnné]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[FULL-C: SD card|použití SD karty]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[FULL-C: 64 bit|64-bitové proměnné a programování]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[FULL-C: program upload|způsoby nahrání FC do SDS]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;Webové Rozhraní&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[HTTPS, TLS]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1PŘ [[Webové Rozhraní: První Produktová Řada|web]], 2PŘ [[Webové Rozhraní: Druhá Produktová Řada|web]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; 1PŘ [[M2M: První Produktová Řada|M2M]], 2PŘ [[M2M: Druhá Produktová Řada|M2M]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[User Web Page]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS Audit Log]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[Config Status]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;small-6 large-4 columns&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;Aktualizace&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[Seznam Všech SDS]] - co si vybrat&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; '''[[Firmware|&amp;gt; &amp;gt; &amp;gt; Nový Firmware &amp;lt; &amp;lt; &amp;lt;]]'''&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[Konfigurace Zařízení SDS]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;Kontakty&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [http://forum.merenienergie.cz Live Podpora: Fórum] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[Přímý kontakt na vývojáře SDS]] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [http://www.onlinetechnology.cz E-SHOP OnlineTechnology.cz] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [http://energycloud.merenienergie.cz Portál Měření Energií] &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [https://vati.cz/zakazkove-programovani Zakázková tvorba programů pro SDS]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;div&amp;gt;&amp;lt;br&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;Technologie&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS v síti: tipy, příklady, nastavení]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[HW Vstupy]] a [[HW Výstupy]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS: Měření energie]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[S0|Odečet rozhraní S0]], a [[S0 Algoritmus]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[MQTT]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[MODBUS-TCP]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SNMP]] + [[SNMP: TRAP|TRAP]] , [[SNMP:_OIDs|seznam OID]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SMTP]] (email)&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; SDS: 1PŘ [[M2M: UDP protocol|UDP]], 2PŘ [[M2M: S-UDP protocol|S-UDP]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; GET/POST:&amp;lt;br&amp;gt;1PŘ [[HTTP Klient: První Produktová Řada|HTTP klient]], 2PŘ [[FULL-C:_http_client_functions|HTTP klient]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[SD karta]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[LoRA]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[OneWire]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[DALI]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[I2C]], [[CAN]], [[RS485, RS422, RS232]], [[MODBUS-RTU]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; [[MBUS]]&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
=== Síťový Dohledový Systém - OnlineTechnology.cz ===&lt;br /&gt;
&lt;br /&gt;
Vítejte v aktualizované wiki pro výrobky SDS, vyvíjené a vyráběné v České Republice.&lt;br /&gt;
&lt;br /&gt;
Tento web poskytuje dokumentaci k jednotlivým výrobkům řady SDS (Síťový Dohledový Systém): návody, výkresy, odkazy na nový firmware, a řada dalších důležitých informací.&lt;br /&gt;
&lt;br /&gt;
 PROČ KOUPIT PRÁVĚ NAŠE VÝROBKY SDS?&lt;br /&gt;
 * vynikající poměr cena / výkon&lt;br /&gt;
 * nejlepší poměr přepočítané ceny na jeden vstup/výstup, bez kompromisu v návrhu a realizaci výrobku&lt;br /&gt;
 * plná uživatelská programovatelnost, žádná omezení&lt;br /&gt;
 * trvalá osobní technická podpora, bez ohledu na datum prodeje nebo typ či počet zařízeni&lt;br /&gt;
 * trvalá podpora naprosto všech prodaných výrobků (stále vydáváme nový firmware, a to i pro ty nejstarší výrobky)&lt;br /&gt;
 * trvalá aktualizace hardware (vydáváme nové lepší moduly, a stále podporujeme i ty předchozí)&lt;br /&gt;
 * integrace i do systémů jako je Node-RED a další&lt;br /&gt;
 * živé diskusní fórum a návody na wiki&lt;br /&gt;
&lt;br /&gt;
 PLC/PAC SDS&lt;br /&gt;
 * Programmable Logic Controller / Programmable Automation Controller - to je SDS&lt;br /&gt;
 * Programování v jazyce SDS-C nebo FULL-C bez omezení, možnost sledování a změna parametrů za běhu&lt;br /&gt;
 * Velké množství I/O a komunikačních rozhraní&lt;br /&gt;
 * SDS je bezpečné a stabilní - nezaloženo na Linuxu, naopak: SDS běží na profesionálně napsaném a testovaném firmware&lt;br /&gt;
&lt;br /&gt;
 AN-D označuje skupinu odpovědnou za vývoj a design výrobku - prodej je v režii výrobce. &lt;br /&gt;
 Designed in Czech Republic, Europe. Made in Czech Republic, Europe.&lt;br /&gt;
 &lt;br /&gt;
 VAROVÁNÍ - POZOR NA KLONY NAŠEHO VÝROBKU (např. LK3) - klony nejsou oficiální, mají chyby a nemají od nás podporu ! nenechte se podvést !&lt;br /&gt;
&lt;br /&gt;
 Chcete integrovat SDS do svého výrobku ? Nabízíme možnost OEM zástavby.&lt;br /&gt;
&lt;br /&gt;
=== Prodej ===&lt;br /&gt;
&lt;br /&gt;
SDS okamžitě zakoupíte na oficiálním eshopu: www.onlinetechnology.cz&lt;br /&gt;
&lt;br /&gt;
Pro přeprodej a velkobchod nabízíme (nejen množstevní) slevy. Pro OEM a partnery (integrátoři SDS do projektů) také nabízíme ceny dohodou.&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=980</id>
		<title>Firmware</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=980"/>
		<updated>2025-11-23T10:25:07Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Nový Firmware ==&lt;br /&gt;
&lt;br /&gt;
Aktualizujte si své SDS - nahrejte do něj nový firmware, který získáte na této stránce - '''naskrolujte dolů''' kde naleznete odkaz na BIN soubor pro vaše zařízení.&lt;br /&gt;
&lt;br /&gt;
Postup a řešení problémů: [[Manual_Firmware_Update|Návod pro aktualizaci Firmware v SDS]].&lt;br /&gt;
&lt;br /&gt;
Důležité první kroky, které je nutné provést s každým novým zakoupeným modulem: [[New_Device_First_Setup_Steps|První nutné kroky pro nově zakoupené zařízení SDS]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Odkazy ke stáhnutí ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pro aktualizaci firmware ve vašem zařízení (nebo pro zápis SDS-C respektive FULL-C programu), potřebujete jednu z následujících aplikací (Win32 EXE program), vyberte ten správný podle typu zařízení.&amp;lt;br&amp;gt;Následně si pak stáhnete soubor se samotným novým firmware, který přes tuto aplikaci do připojeného zařízení pošlete. Úplný návod je na jiné stránce na této wiki.&amp;lt;br&amp;gt;Vybraná aplikace současně slouží pro vývoj a nahrání SDS-C respektive FULL-C programu (a webu, a dalších) do zařízení SDS.&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;PC Software&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_sdsc_winexe.jpg]] '''Program SDSC.exe''' (programovací jazyk SDS-C, aktualizace firmware pro SDS '''první řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; stáhnout WinEXE pro SDS-C [https://sds.an-d.cz/firmware/SDSC_310123.exe zápis/simulace/upload SDS-C (SDS-C '''verze 09''') a UWEB, ze dne 31.1.2023]&amp;lt;br&amp;gt;SHA-256: daf1095f206404e33223f675f5d0bc09d4fc5dfd7d9f79f4f735af88f5ff1e6a&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program FULLC.exe''' (programovací jazyk FULL-C, aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; (FC verze '''0x12''' - '''aktuální'''): stáhnout WinEXE pro FULL-C [https://sds.an-d.cz/firmware/FULLC_220724.exe zápis/upload FULL-C a UWEB, ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro Firmware od 9.3.2023 včetně, pro všechny varianty SDS (64kB a 128kB a 512kB)&amp;lt;br&amp;gt;SHA-256: b4cb95d8ec8a6e844a3a4c9a2e9fc50ece60ccf44e8043f8c10f46b2294cae0b&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program SDSLOAD.exe''' (&amp;quot;jednokrokový&amp;quot; upload .FC souborů a aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; ('''aktuální''' verze, pro FW od 10.7.2017 včetně a dále) stáhnout WinEXE [https://sds.an-d.cz/firmware/SDSLOAD_220724.exe program SDSLOAD ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro všechny SDS varianty 64kB a 128kB a 512kB, (subvarianty DP a DS84)&amp;lt;br&amp;gt;SHA-256: ded5bf1aca2e04e22c33899a0976deccc8ff76eb88f53ecd9769788b7daa25a7&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_empty.jpg]] '''Program SDS LOG'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; Program '''[[SDS LOG: intro|SDS LOG]]''' - verze 0.1 ze dne 26.8.2011 - [https://sds.an-d.cz/firmware/SDS_LOG.exe stáhnout EXE program]&lt;br /&gt;
&amp;lt;li&amp;gt; Zdrojové kódy programu SDS LOG (Creative Commons Licence) [[SDS LOG: source code|ke stáhnutí zde]]&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS LOG: changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;První Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMICROE.jpg]]  [[Soubor:Thumbnail_SDSMICRO.jpg]] [[Soubor:Thumbnail_SDS_DIN.jpg]] '''D0000001''' MICRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: LM]] varianty '''LIGHT''', '''LIGHT 2''' a '''E (DIN)'''.&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny varianty a revize SDS MICRO LM.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_151125_CZ.bin SDS-MICRO-LM-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_151125_EN.bin SDS-MICRO-LM-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B0000057''' MICRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_151125_CZ.bin SDS-MICRO-ST-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_151125_EN.bin SDS-MICRO-ST-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B000D957''' MICRO ST DP&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST DP]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST DP.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_151125_CZ.bin SDS-MICRO-ST-DP-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_151125_EN.bin SDS-MICRO-ST-DP-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MINI_1.png]] [[Soubor:Thumbnail_SDS_MINI_2.png]] '''B0000020''' MINI ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MINI: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MINI ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MINI_151125_CZ.bin SDS-MINI-ST-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MINI_151125_EN.bin SDS-MINI-ST-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
[[SDS MINI: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMACRO.jpg]] '''C0000001''' MACRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: LM]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_151125_CZ.bin SDS-MACRO-LM-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_151125_EN.bin SDS-MACRO-LM-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MACRO_ST_rev1.png]] '''C0000057''' MACRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_151125_CZ.bin SDS-MACRO-ST-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_151125_EN.bin SDS-MACRO-ST-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSTTCPRO.jpg]] '''B0000001''' TTCPRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS TTCPRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_151125_CZ.bin SDS-TTCPRO-ST-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_151125_EN.bin SDS-TTCPRO-ST-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS TTCPRO ST má shodný Change Log se SDS MINI ST, a to zde: [[SDS MINI: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSIO6.jpg|160px]] '''D0000006''' IO6 LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: LM]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_151125_CZ.bin SDS-IO6-LM-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_151125_EN.bin SDS-IO6-LM-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 LM má shodný Change Log se SDS MICRO LM, a to zde: [[SDS MICRO: LM: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_empty.jpg]] '''D0000011''' IO6 ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_151125_CZ.bin SDS-IO6-ST-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_151125_EN.bin SDS-IO6-ST-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 ST má shodný Change Log se SDS MICRO ST, a to zde: [[SDS MICRO: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_FTP_rev1.png]] '''F0000001''' FTP LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS FTP: LM]], výchozí firmware.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Firmware: ''SDS FTP ze dne 7.9.2010'' už nahrán ve výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS FTP: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_ONEDPS.jpg]] '''E000AAA1''' UPS ONEDPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: ONEDPS]], finální jednodesková verze (aktuální) (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stáhnout firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_CZ.bin (Česká lokalizace) SDS-UPS-ONEDPS-LM ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;Download firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_EN.bin (English language version) SDS-UPS-ONEDPS-LM released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS UPS: LM: ONEDPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_TWODPS.jpg]] '''C00xxxxx''' UPS TWODPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: TWODPS]], HW rev3u - DVOUDESKOVÁ (UŽ NEPRODÁVANÁ) varianta.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je zaslán na požádání (pošlete email), aktuální verze je z 1.3.2011 (dále aktualizováno na specifické požádání, raději proto přejděte na nový HW).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Každá deska má svou kalibraci, proto každá deska má svůj vlastní FW, proto musíte uvést S/N svého výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;HISTORIE: [[SDS UPS: LM: TWODPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;Druhá Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSBIG.jpg]] [[Soubor:Thumbnail_SDSSMALL.jpg]] '''B1900001''' / '''B1900002''' / '''B1900004''' : BIG, BIG2, SMALL, STSW, MBGW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Společný firmware pro výrobky [[SDS BIG]], [[SDS SMALL]] a [[SDS STSW]] a [[SDS MBGW]]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je jednotný pro všechny varianty '''SDS Druhé Produktové Řady''', nutné je rozlišení dle varianty 64kB/128kB/512kB. Rozlišení podle dalších subvariant (DP, DS84) se neprovádí.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je společný pro BIG a BIG2, rozlišení je pouze dle varianty 64/128/512.&lt;br /&gt;
&amp;lt;li&amp;gt;Pozn. Modul SMALL a modul MBGW interně obsahuje modul STSW, nahrává se tam tedy stejný FW.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware vždy vyžaduje použití odpovídající, aktuální verze FULLC.EXE programu. &lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS BIG/SMALL/STSW: [[SDS BIG: firmware changelog|firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;64kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 64kB) [https://sds.an-d.cz/firmware/SDS_BIG_64K_251025_EN.bin firmware &amp;quot;64kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 25.10.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;128kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 128kB) [https://sds.an-d.cz/firmware/SDS_BIG_128K_251025_EN.bin firmware &amp;quot;128kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 25.10.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;512kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [[firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 12.4.2022|informace pokud máte SDS512 s FW &amp;lt;b&amp;gt;starším&amp;lt;/b&amp;gt; než 12.4.2022]]&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [https://sds.an-d.cz/firmware/SDS_BIG_512K_251025_EN.bin firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 25.10.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;Informace: SDS BIG/SMALL/STSW 512 se starším FW než 12.4.2022 vyžaduje přeprogramování u výrobce.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| POZOR&lt;br /&gt;
'''Aktualizujte''' své doplňkové sandwich desky, tzn. [[SDS BIG: DALI]], [[SDS BIG: LORA]] - na verzi FW 5.12.2016 '''nebo novější'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Aktualizaci lze provést jen fyzicky u výrobce, ten ji provede bezplatně (zašlete výrobci vaše SDS pro jeho aktualizaci). Se starým FW nebude tento HW plně fungovat.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Informace ===&lt;br /&gt;
&lt;br /&gt;
 VŽDY MĚJTE VE SVÉM ZAŘÍZENÍ NEJNOVĚJŠÍ FIRMWARE, A POUŽÍVEJTE TAKÉ NEJNOVĚJŠÍ SDS-C EXE / FULL-C EXE PROGRAM.&lt;br /&gt;
 V opačném případě vám budou chybět nové funkce, které neustále přidáváme, a také nebudete mít opravené nalezené chyby.&lt;br /&gt;
 V případě že chcete získat podporu, musíte mít instalovaný nejnovější firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Historický Software ===&lt;br /&gt;
&lt;br /&gt;
Za účelem aktualizace takových SDS, kde už dlouho nebyl aktualizován firmware, je potřeba použít odpovídající EXE program pro aktualizaci takovéhoto zařízení.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== První Produktová Řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro SDS-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_151119.exe ze dne '''15.11.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 08, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020118.exe ze dne '''2.1.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 07, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020317.exe ze dne '''2.3.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 8.8.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_060216.exe ze dne '''6.2.2016''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které nemají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 24.1.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_231111.exe ze dne '''23.11.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 04&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_170211.exe ze dne '''17.2.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''února 2011''')&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro ''SDS-C verze č. 03'' (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_140511.exe ze dne '''14.5.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''konce května 2011''')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Druhá Produktová řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro FULL-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_070323.exe ze dne '''7.3.2023''']&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_311222.exe ze dne '''31.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 11, (firmware od 9.1.2023 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_071222.exe ze dne '''7.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 10, (firmware od 18.11.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_161022.exe ze dne '''16.10.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0F, (firmware od 16.10.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_110722.exe ze dne '''11.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0E, (firmware od 11.7.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010722.exe ze dne '''1.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0D, (firmware od 6.8.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030422.exe ze dne '''3.4.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0C, (firmware od 23.3.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010322.exe ze dne '''1.3.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0B, (firmware od 6.8.2020 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030119.exe ze dne '''3.1.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0A, (firmware od 3.1.2019 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010718.exe ze dne '''1.7.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 09, (firmware od 27.6.2018 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_100717.exe ze dne '''10.7.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 08, (firmware od 10.7.2017 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_080617.exe ze dne '''8.6.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 06, (firmware starší než Červenec-2017, a pouze pro variantu SDS 64kB)&lt;br /&gt;
&lt;br /&gt;
* (historická verze) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_201022.exe ze dne 20.10.2022]&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_120417.exe ze dne 12.4.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB která používá ''starý'' firmware (2017 nebo starší)&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_100717.exe ze dne 10.7.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB a 128kB (nepodporuje variantu 512kB tak jako aktuální stáhnutelná verze aplikace)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta Testing ==&lt;br /&gt;
&lt;br /&gt;
Než vydáme novou verzi, je potřeba změny a novinky otestovat.&lt;br /&gt;
&lt;br /&gt;
Pokud jste ochotní se testu zúčastnit, pak se podívejte [https://forum.sds.an-d.cz/viewtopic.php?id=129 na tento odkaz]. Zde jsou uveřejněny vždy nejnovější beta verze firmware.&lt;br /&gt;
&lt;br /&gt;
Diskuse s vývojem k aktuálnímu Firmware je k dispozici na našem fóru.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_MACRO:_ST:_firmware_changelog&amp;diff=979</id>
		<title>SDS MACRO: ST: firmware changelog</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_MACRO:_ST:_firmware_changelog&amp;diff=979"/>
		<updated>2025-11-15T14:25:10Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SDS-MACRO ST ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
Tato stránka se věnuje změnám ve firmware a v HW pro výrobek SDS-MACRO ST.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Změny jsou seřazeny tak, že nejnovější verze (která je stáhnutelná z webu) je popsána jako první.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 15.11.2025 ==&lt;br /&gt;
* přepracována interní DNS cache - pro funkci dns_resolv() - zprovozněno TTL&lt;br /&gt;
* SDS-C: přidány indexy 303 a 304 a 305&lt;br /&gt;
* SDS-C: přidán index 2198&lt;br /&gt;
&lt;br /&gt;
== 2.11.2023 ==&lt;br /&gt;
* oprava SNMP (způsob předávání chybových hodnot)&lt;br /&gt;
* opraveno: LOGIC-S0 lze použít pro výběr Tarifu&lt;br /&gt;
&lt;br /&gt;
== 29.11.2022 ==&lt;br /&gt;
* SDS-C: přidán index 137&lt;br /&gt;
* dns_resolv hlásí chybu sítě (resp. odpojený ethernet) dříve&lt;br /&gt;
* oprava možného problému na sériové lince, kdy mohlo dojít k náhodnému malému zpoždění odeslání dat&lt;br /&gt;
&lt;br /&gt;
== 26.11.2022 ==&lt;br /&gt;
* SDS-C: oprava možného teoretického problému u funkce serialX_write při odesílání z pole ram[] (ostatní zdroje dat/pole problém neměly)&lt;br /&gt;
* SDS-C: přidány indexy 2811...2816 a 2861...2866 (statistiky COMx)&lt;br /&gt;
&lt;br /&gt;
== 4.8.2022 ==&lt;br /&gt;
* zlepšení funkce OneWire - další doplnění pro counterfeit čidla&lt;br /&gt;
* zlepšení funkce OneWire - odstranění náhodných výpadků pro čidla vlhkosti&lt;br /&gt;
* zlepšení funkce OneWire - širší prohledávání sběrnice (velká saturace neznámými čidly nevyčerpá počet kroků při hledání)&lt;br /&gt;
* opraveno hlášení o stavu (chybějící) konfigurace na úvodní webové stránce&lt;br /&gt;
* malá bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 1.7.2022 ==&lt;br /&gt;
* SDS umí číst teplotu i z counterfeit teplotních čidel (pozná je a přizpůsobí se jejich poškozené komunikaci)&lt;br /&gt;
* opravena chyba při výpisu teplot na webu (jinde to bylo OK), kdy v rozmezí -0.99 degC až 0.00 degC chyběl znak mínus&lt;br /&gt;
* funkční autorizovaný HTTP POST pro nahrání nového FW, SDSC, UserWeb, konfigurace a sdílených proměnných&lt;br /&gt;
* další drobné úpravy a opravy&lt;br /&gt;
&lt;br /&gt;
== 27.12.2021 ==&lt;br /&gt;
* opraveno: nastavení názvu relé 2 až 6 se teď správně ukládá (funguje)&lt;br /&gt;
* HW: při poruše hlavního zdroje hodin (krystal) se použije záložní zdroj&lt;br /&gt;
* HW: využíváme RTC pro udržení času při přechodu přes reset (drží čas dokud zase nepřijde NTP)&lt;br /&gt;
* aktualizován bootloader (vyžaduje fyzické přeprogramování u výrobce) - umí znovu nahrát FW pokud se v SoC poškodí&lt;br /&gt;
&lt;br /&gt;
== 3.5.2021 ==&lt;br /&gt;
* oprava nastavování frekvence PWM1 přes webové rozhraní&lt;br /&gt;
&lt;br /&gt;
== 14.4.2021 ==&lt;br /&gt;
* oprava hodnot v sys 39 (0 vyp, 3 zap)&lt;br /&gt;
&lt;br /&gt;
== 13.4.2021 ==&lt;br /&gt;
* možnost ručního řízení (zap-vyp) aplikace automatiky LČ (zápis do sys 39) když je vypnutý NTP&lt;br /&gt;
&lt;br /&gt;
== 11.4.2021 ==&lt;br /&gt;
* možnost uživatelsky vypnout NTP klient a nastavovat čas přes SDS-C (sys 38 nebo sys 4), vhodné pro jiné zdroje času (LoRA, GSM, sběrnice, atd.).&lt;br /&gt;
&lt;br /&gt;
== 26.3.2021 ==&lt;br /&gt;
* SDS-C: oprava chování wait() v režimu sys[63]=128 (teď už čeká po správnou dobu, ne po kratší)&lt;br /&gt;
&lt;br /&gt;
== 12.3.2021 ==&lt;br /&gt;
* oprava COM1 a COM6 - chybně aktivní parita i když nebyla uživatelem nastavena; opraveno&lt;br /&gt;
&lt;br /&gt;
== 9.2.2021 ==&lt;br /&gt;
* SDS-C: oprava TID v MODBUS-TCP&lt;br /&gt;
* MBTC výpis rozšířen&lt;br /&gt;
* SDS-C: drobná úspora heap (více dostupného místa)&lt;br /&gt;
* SDS-C: dns resolv drobný fix&lt;br /&gt;
* SDS-C: http_get a http_post důležitý fix&lt;br /&gt;
* SDS-C: nová funkce http_close&lt;br /&gt;
* SDS-C: chyba -7 pro MODBUS-TCP a pro MQTT&lt;br /&gt;
* vylepšený algoritmus S0, rozšířené možnosti nastavení detektoru S0 (nastavení přidáno ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 10.1.2021 ==&lt;br /&gt;
* web: ruční přepnutí CBY pro relé (tzn. &amp;quot;kdo ovládá relé&amp;quot;), na &amp;quot;SDS-C&amp;quot;, dané relé nevypne (off) ale ponechá jeho stávající stav (on, off) &lt;br /&gt;
&lt;br /&gt;
== 5.1.2021 ==&lt;br /&gt;
* SDS-C: oprava textcmp()&lt;br /&gt;
* bezpečnostní oprava&lt;br /&gt;
* dřívější odeslání NTP požadavku po výpadku síťového spojení &lt;br /&gt;
&lt;br /&gt;
== 20.11.2020 ==&lt;br /&gt;
* changelog založen&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_MACRO:_LM:_firmware_changelog&amp;diff=978</id>
		<title>SDS MACRO: LM: firmware changelog</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_MACRO:_LM:_firmware_changelog&amp;diff=978"/>
		<updated>2025-11-15T14:24:59Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SDS-MACRO LM ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
Tato stránka se věnuje změnám ve firmware a v HW pro výrobek SDS-MACRO LM.&lt;br /&gt;
&lt;br /&gt;
Změny jsou seřazeny tak, že nejnovější verze (která je stáhnutelná z webu) je popsána jako první.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 15.11.2025 ==&lt;br /&gt;
* přepracována interní DNS cache - pro funkci dns_resolv() - zprovozněno TTL&lt;br /&gt;
* SDS-C: přidány indexy 303 a 304 a 305&lt;br /&gt;
* SDS-C: přidán index 2198&lt;br /&gt;
&lt;br /&gt;
== 1.7.2022 ==&lt;br /&gt;
* opravena chyba při výpisu teplot na webu (jinde to bylo OK), kdy v rozmezí -0.99 degC až 0.00 degC chyběl znak mínus&lt;br /&gt;
* obsluha času: možnost zápisu do sys[4], sys[39]&lt;br /&gt;
* doplněny další možné vstupní typy do funkcí itoa/itoh&lt;br /&gt;
* možnost zakázat NTP&lt;br /&gt;
&lt;br /&gt;
== 26.3.2021 ==&lt;br /&gt;
* zásadní změna: &amp;lt;b&amp;gt;zrušen systém virtuálních S0 vstupů a zaveden systém mapování 1:1 (optovstupy na S0 vstupy)&amp;lt;/b&amp;gt;&lt;br /&gt;
* zaveden inovovaný algoritmus detekce S0 impulsů (stejný jako pro řadu ST), tedy s možností bohaté uživatelské konfigurace detektoru&lt;br /&gt;
* SDS-C: oprava chování wait() v režimu sys[63]=128 (teď už čeká po správnou dobu, ne po kratší)&lt;br /&gt;
&lt;br /&gt;
== 9.2.2021 ==&lt;br /&gt;
* SDS-C: dns resolv drobný fix&lt;br /&gt;
* SDS-C: http_get a http_post drobný fix&lt;br /&gt;
* SDS-C: nová funkce http_close&lt;br /&gt;
* SDS-C: chyba -7 pro MODBUS-TCP a pro MQTT&lt;br /&gt;
&lt;br /&gt;
== 5.1.2021 ==&lt;br /&gt;
* SDS-C: oprava textcmp()&lt;br /&gt;
* bezpečnostní oprava&lt;br /&gt;
* dřívější odeslání NTP požadavku po výpadku síťového spojení &lt;br /&gt;
&lt;br /&gt;
== 23.10.2020 ==&lt;br /&gt;
* SDS-C: oprava http_get/post: správná vyplnění výsledů i pro situaci kdy server ukončí spojení přes TCP RST&lt;br /&gt;
&lt;br /&gt;
== 4.8.2020 ==&lt;br /&gt;
* SNMP fix - správná hodnota ve .5.13 až .5.16&lt;br /&gt;
* drobné opravy a optimalizace&lt;br /&gt;
&lt;br /&gt;
== 18.7.2020 ==&lt;br /&gt;
* SDS-C: SMTP klient správně zvládne i servery které (chybně) nereagují potvrzením na předání těla emailu&lt;br /&gt;
* SDS-C: http klient upraven (zvýšena odolnost na výpadky spojení se serverem, upraveny timeouty)&lt;br /&gt;
&lt;br /&gt;
== 26.6.2020 ==&lt;br /&gt;
* různé drobky/opravy dle hlášení uživatelů a testů&lt;br /&gt;
&lt;br /&gt;
== 15.5.2020 ==&lt;br /&gt;
* SDS-C 09: přidáno http_post()&lt;br /&gt;
&lt;br /&gt;
== 14.5.2020 ==&lt;br /&gt;
* oprava pro některé sys[] pro S0 vstupy (které se automaticky neaktualizovaly)&lt;br /&gt;
&lt;br /&gt;
== 11.5.2020 ==&lt;br /&gt;
* oprava Content-Length pro CSS soubor (problém s Chrome)&lt;br /&gt;
* oprava chování při odpojeném SDS-1W-T-RH&lt;br /&gt;
&lt;br /&gt;
== 20.4.2020 ==&lt;br /&gt;
* podpora pro modul SDS-1W-T-RH (rovnice pro HIH-5031)&lt;br /&gt;
* implementován SDS Audit Log&lt;br /&gt;
* zvýšená ochrana proti brute-force hledání vstupního hesla&lt;br /&gt;
&lt;br /&gt;
== 14.11.2019 ==&lt;br /&gt;
* oprava chyby v zobrazování výkonu u S0 vstupů (mohlo se stát při více logických vstupech, které měli navíc jiné logické pořadí vůči fyzickému vstupu)&lt;br /&gt;
* relé lze z webového rozhraní aktivovat i v režimu OneShot &lt;br /&gt;
* SDS-C: emailový klient odesílá i platný datum v hlavičce emailu (je-li v SDS k dispozici platný čas)&lt;br /&gt;
&lt;br /&gt;
== 5.3.2019 ==&lt;br /&gt;
* oprava chyby v konfiguraci S0 vstupů (webová administrace), dále jsou tam také doplněny lepší popisy aktuálního obsazení optovstupů (mapování na tarif a virtuální S0)&lt;br /&gt;
&lt;br /&gt;
== 12.1.2019 ==&lt;br /&gt;
* optimalizace webového serveru (množství přenášenyćh dat sníženo až o polovinu, bez změny funkce) - ocení se to zejména při přenosu po úzkých linkách (např. gprs, modemy) &lt;br /&gt;
&lt;br /&gt;
== 4.1.2019 ==&lt;br /&gt;
* překlopena beta do oficiálního vydání&lt;br /&gt;
* SDS-C: verze 08 (pole share[], nové položky v sys[], nové sds-c funkce)&lt;br /&gt;
* watchdog sds-c programu&lt;br /&gt;
&lt;br /&gt;
== 1.7.2018 ==&lt;br /&gt;
* SDS-C: přidán sys 183 poskytující datum vydání FW který je právě nahrán v SDS &lt;br /&gt;
* M2M: hodnota okamžitého výkonu pro S0 vstupy je vždy číslo+jednotka, zatímco text 'čekám...' je už jen pouze na s0.htm &lt;br /&gt;
&lt;br /&gt;
== 27.3.2018 ==&lt;br /&gt;
* oprava funkce zápisu prázdného řetězce do názvu 1-Wire teploměru (&amp;quot;smazání názvu&amp;quot; uživatelem)&lt;br /&gt;
* SNMP: sdsS0translatedUnitT0,1 je poskytováno jako hodnota od odečtu (ne od úplného začátku měření, jak to bylo předtím)&lt;br /&gt;
* oprava někdy vynechaného načtení konfigurace (okrajové případy, ale přece)&lt;br /&gt;
&lt;br /&gt;
== 12.3.2018 ==&lt;br /&gt;
* oprava měření na S0 vstupech (některé vstupy se starším FW nemusely být, v určitých okrajových situacích, plně funkční)&lt;br /&gt;
&lt;br /&gt;
== 8.3.2018 ==&lt;br /&gt;
* oprava používání zámku (lock) v administraci 1-Wire sběrnice BUS-B&lt;br /&gt;
* oprava echo.htm - zobrazuje se&lt;br /&gt;
* oprava echo.htm - správně wrapuje obsah, a nejsou tam nadbytečné 0x00&lt;br /&gt;
* vhodnější řešení rexmitu částí webových stránek a dynamických dat (ocení to zejména uživatelé s mobilním připojením pro SDS)&lt;br /&gt;
&lt;br /&gt;
== 2.3.2018 ==&lt;br /&gt;
* aktulizace a oprava ve výpočtu &amp;quot;aktuálního výkonu&amp;quot; pro okrajové situace (např. krajní hodnoty impulsní konstanty)&lt;br /&gt;
&lt;br /&gt;
== 18.12.2017 ==&lt;br /&gt;
* možnost automického přepínání &amp;quot;letní/zimní&amp;quot; čas (CEST/CET time) byla při &amp;quot;změně času&amp;quot; ověřena a je funkční jak má být&lt;br /&gt;
* SDS-C: přidán sys[4], sys[11], sys[38], sys[39]&lt;br /&gt;
* SDS-C: sys[4] = local-time&lt;br /&gt;
* SDS-C: sys[11] = vždy &amp;quot;správné&amp;quot; číslo dne v týdnu&lt;br /&gt;
* SDS-C: sys[38] = utc-time&lt;br /&gt;
* SDS-C: sys[39] = stav automatiky přepínání CEST/CET času &lt;br /&gt;
* správný zápis pouze do T0 pro všechny S0 vstupy, které nemají aktivované tarifní rozdělení (bez ohledu na stav tarifního vstupu)&lt;br /&gt;
* zámek 1-W pozice se ukládá do pevné paměti (při stisku tlačítka na webovém rozhraní)&lt;br /&gt;
* vylepšení v oblasti VCP (telnet pro sériovou linku) - spolehlivější&lt;br /&gt;
* zpřesněny prvky ochrany S0 stránek heslem (SDS lépe volí kdy a jak blokovat přístup na jednotlivé eX a S0 stránky)&lt;br /&gt;
* UserWEB projekt má opravenu chybu, kdy nebylo možno použít delší Name Chain tabulku (tedy lze už vložit mnohem více souborů)&lt;br /&gt;
&lt;br /&gt;
== 10.8.2017 ==&lt;br /&gt;
* SDS-C: zvýšena verze na hodnotu 07&lt;br /&gt;
* SDS-C: přidány nové sys[] položky (indexy 1792 až 2047)&lt;br /&gt;
* SDS-C: optimalizovaná cache pro velké programy&lt;br /&gt;
* SDS-C: maximální počet proměnných zvýšen na 144&lt;br /&gt;
* SDS-C: maximální počet procesů (procedur) zvýšen na 96&lt;br /&gt;
* SDS-C: hloubka zásobníku (stacku) zvýšena na 24&lt;br /&gt;
* vydán nový odpovídající SDSC.exe&lt;br /&gt;
&lt;br /&gt;
== 3.8.2017 ==&lt;br /&gt;
* oprava chyby kdy se po každém spuštění systému mohla ztratit část S0 konfigurace (nastavení tarifního vstupu)&lt;br /&gt;
&lt;br /&gt;
== 18.4.2017 ==&lt;br /&gt;
* (nová funkčnost) použití UserWEB Projektu&lt;br /&gt;
* oprava v echo() pro zápis do sériové linky (uart)&lt;br /&gt;
* drobné ale důležité fixy v html stránkách (texty, vzhled)&lt;br /&gt;
* nové NTP dotazy lze aktivovat i z SDS-C programu (viz aktualizovaný seznam sys)&lt;br /&gt;
&lt;br /&gt;
== 24.11.2016 ==&lt;br /&gt;
* opraven chybně zpracovaný vstup při zadávání nastavení parametrů S0 vstupu (hodnota &amp;quot;minimální délka impulsu&amp;quot; byla špatně zpracována a uložena)&lt;br /&gt;
* SDS-C: přidán přímý přístup do LCD Frame Bufferu přes sys[1024] až sys[1551]&lt;br /&gt;
&lt;br /&gt;
== 28.3.2016 ==&lt;br /&gt;
* impulse counter lze z webu zadat do plných 32 bitů, původně jen 31 bitů&lt;br /&gt;
* další drobné opravy&lt;br /&gt;
* oprava zpracování nastavení baudrate při komunikaci RFC2217&lt;br /&gt;
&lt;br /&gt;
== 23.2.2016 ==&lt;br /&gt;
* oprava nefunkčního zápisu pomocí SNMP (několik předchozích verzí, teď opraveno)&lt;br /&gt;
&lt;br /&gt;
== 5.2.2016 ==&lt;br /&gt;
* oprava funkce RSTD - rozšíření funkce RSTD: krátký zkrat (approx 1 sec) po zapnutí spustí BL (zařízení čeká na nový firmware), zatímco dlouhý zkrat (déle než 3 sec) spustí aplikaci a současně vymaže nastavení (set to Factory Defaults)&lt;br /&gt;
* možnost vyhledávat všechny zařízení SDS na subnetu pomocí rozšířené funkce (Find a SDS) v EXE aplikaci (např. když ztratíte IP adresu do webového rozhraní a potřebujete se na SDS připojit)&lt;br /&gt;
&lt;br /&gt;
== 15.11.2015 ==&lt;br /&gt;
* důležité opravy&lt;br /&gt;
&lt;br /&gt;
== 3.7.2015 ==&lt;br /&gt;
* vylepšený DHCP client&lt;br /&gt;
* řada oprav podle průběžného testování&lt;br /&gt;
&lt;br /&gt;
== 2.4.2015 ==&lt;br /&gt;
* srovnáno s SDS-MICRO 2.4.2015 (opravy chyb a nové funkce)&lt;br /&gt;
&lt;br /&gt;
== 9.9.2014 ==&lt;br /&gt;
* opravena chyba pro sys[64]==1 (vnitřním zaokrouhlením to skočilo na nulu)&lt;br /&gt;
&lt;br /&gt;
== 17.8.2014 ==&lt;br /&gt;
* srovnáno se stejnou verzí firmware SDS-MICRO&lt;br /&gt;
&lt;br /&gt;
== 8.7.2014 ==&lt;br /&gt;
* opravy v oblasti obsluhy sériového rozhraní (RS485)&lt;br /&gt;
* do webové administrace přidána možnost vzájemného přehození pozic dvou 1-Wire záznamů&lt;br /&gt;
* další drobné opravy z průběžných beta testů&lt;br /&gt;
&lt;br /&gt;
== 1.3.2014 ==&lt;br /&gt;
* SDS-C: nová funkce serial_write()&lt;br /&gt;
* SDS-C: nový timeout pro smtp_send() - zamezí specifickému možnému zaseknutí programu, když SMTP server přestane odpovída uprostřed transkace po více než 50sec&lt;br /&gt;
* SDS-C: lcd_setpixel() má nové možné parametry, které umožní změnu jen RAM bufferu bez překlopení do LCD (významné zrychlení, při kreslení více pixelů stačí překlopit buffer do LCD jen jednou nakonec)&lt;br /&gt;
* SDS-C: opravena funkce snmp_send_trap() - horní část seznamu trapů byla předtím chybně neodeslatená (teď už je vše OK)&lt;br /&gt;
* vylepšení odolnosti při výpadku a při obnovení připojení k Ethernetu&lt;br /&gt;
* různé drobné důležité opravy (viz beta testy)&lt;br /&gt;
&lt;br /&gt;
== 25.1.2014 ==&lt;br /&gt;
* opravy a nové funkce, srovnáno s firmware SDS MICRO&lt;br /&gt;
&lt;br /&gt;
== 30.11.2013 ==&lt;br /&gt;
* opravy a nové funkce, srovnáno s firmware SDS MICRO&lt;br /&gt;
&lt;br /&gt;
== 3.10.2013 ==&lt;br /&gt;
* celá řada drobných oprav&lt;br /&gt;
* login html stránka upravena (w3c valid)&lt;br /&gt;
* možnost nastavit MTD pro S0 měření&lt;br /&gt;
* nový SDSC.exe program&lt;br /&gt;
* SDS-C: přidána funkce lcd_setpixel()&lt;br /&gt;
&lt;br /&gt;
== 24.3.2013 ==&lt;br /&gt;
* opravena chyba kdy nebylo možné ručně zadat více než hodnotu 32767 do impulsního počítadla z webového rozhraní&lt;br /&gt;
&lt;br /&gt;
== 16.3.2013 ==&lt;br /&gt;
Všechny změny ze všech vydaných BETA firmware verzí, od června do března, tj. především následující položky:&lt;br /&gt;
* zápis výpadku a znovu-připojení Ethernetu do logu historie&lt;br /&gt;
* při odpojení a následném znovu-připojení Ethernetu dojde od teď záměrně ke smazání celé ARP tabulky, takže všechny MAC-IP páry jsou vyžádány znovu (pro případ že se např. vyměnil router atd.)&lt;br /&gt;
* SDS-C: get_txt[xxx] (vypíše pole text od indexu xxx až do znaku 0x00 na některém z následujících indexů v tomto poli)&lt;br /&gt;
* get_sys[xxx] vrací i text pro textové položky (vyzkoušejte všechny sys[] které jsou textové)&lt;br /&gt;
* SDS-C: přidáno sys[900] až sys[931] (text ROM CODE pro 1-W čidla)&lt;br /&gt;
* upraveno zpracování ARP tabulky (více bezpečné pro dlouhodobý provoz)&lt;br /&gt;
* možnost řízení tarifního signálu pro S0 prostřednictvím SDS-C programu&lt;br /&gt;
* funkce &amp;quot;odečet&amp;quot; pro S0 (viz nastavení S0 vstupů ve webové administraci)&lt;br /&gt;
* SDS-C: funkce smtp_send() akceptuje text[] nejen pro obsah zprávy, ale i pro adresu příjemce a subject&lt;br /&gt;
* SDS-C: funkce http_get() akceptuje text[] nejen pro obsah zprávy, ale i pro nastavení HTTP HOST parametru&lt;br /&gt;
&lt;br /&gt;
== 29.5.2012 ==&lt;br /&gt;
* funkce http_get() nuluje svou interní položku &amp;quot;host&amp;quot; před zapsáním nové hodnoty do této položky, takže pokud se funkce volá opakovaně s kratším textem, je použit právě jen ten kratší text&lt;br /&gt;
&lt;br /&gt;
== 7.5.2012 ==&lt;br /&gt;
* opravena funkčnost PWM výstupu - lze správné nastavit střídu v rozmezí 0 až 100% viz návod na WiKi&lt;br /&gt;
&lt;br /&gt;
== 18.3.2012 ==&lt;br /&gt;
* finální podoba SNMP MIB (stáhněte si aktualizovaný MIB soubor)&lt;br /&gt;
&lt;br /&gt;
== 12.3.2012 ==&lt;br /&gt;
* řada důležitých oprav, aktualizujte !&lt;br /&gt;
* všechny nové funkce dostupné v SDS MICRO jsou dostupné i pro SDS MACRO (srovnání firmware)&lt;br /&gt;
&lt;br /&gt;
== 22.1.2012 ==&lt;br /&gt;
* všechny nové funkce z BETA testu přidány do dostupného firmware (pozn. podpora pro čtyři S0 vstupy)&lt;br /&gt;
&lt;br /&gt;
== 27.10.2011 ==&lt;br /&gt;
* do webového rozhraní přidáno tlačítko: možnost nastavení střídy PWM &amp;quot;na zkoušku&amp;quot; (bez uložení do pevné paměti)&lt;br /&gt;
* web: funkce /get_sys a /get_ram může vrátit řadu proměnných za sebou&lt;br /&gt;
&lt;br /&gt;
== 2.10.2011 ==&lt;br /&gt;
* přidán sys[26]&lt;br /&gt;
* přidán sys[63]&lt;br /&gt;
* přidán sys[78]&lt;br /&gt;
* doplněn UDP protokol o čtyři nové funkce (čtení / zápis polí sys[] a ram[])&lt;br /&gt;
&lt;br /&gt;
== 6.9.2011 ==&lt;br /&gt;
* pouze úpravy pro RS485 výstup - přepracovaný kód pro výstup dat (serial_text_out nepřevádí konstanty na text)&lt;br /&gt;
&lt;br /&gt;
== 31.7.2011 ==&lt;br /&gt;
* opraven problém s UDP protokolem - příkaz '''write''' (už funguje vždy ok)&lt;br /&gt;
* nový SDSC.exe program - doplňuje správnou HTML serverovou hlavičku pro uživatelskou stránku&lt;br /&gt;
&lt;br /&gt;
== 29.7.2011 ==&lt;br /&gt;
* možnost zápis z SDS-C programu do systémových proměnných sys[559] až sys[561]&lt;br /&gt;
* nová funkce pro UDP protokol - funkce '''write''' umožňuje hromadný zápis do sys[] systémových proměnných&lt;br /&gt;
&lt;br /&gt;
== 25.7.2011 ==&lt;br /&gt;
* IP watchdog už umí ovládat i zbylé dvě relé (původně jen RE1 a RE2, teď RE1 až RE4)&lt;br /&gt;
&lt;br /&gt;
== 24.7.2011 ==&lt;br /&gt;
* opravena chyba v telnet připojení, kdy se při pokusu odeslat znak na sériovou linku zařízení resetovalo, teď už je to ok&lt;br /&gt;
&lt;br /&gt;
== 10.7.2011 ==&lt;br /&gt;
* možnost změnit číslo TCP portu webového serveru webového rozhraní výrobku (změna stejným způsobem jako je změna IP nebo MAC adresy...) &lt;br /&gt;
* přidán IP Watchdog do hlavní nabídky ve webovém rozhraní&lt;br /&gt;
&lt;br /&gt;
* doplněny funkce, které jsou v SDS MICRO (viz changelog MICRO ze dne 16.6.2011)&lt;br /&gt;
** řada doplňků v SDS-C, webovém rozhraní, atd.&lt;br /&gt;
&lt;br /&gt;
== 21.5.2011 ==&lt;br /&gt;
* od této verze jsou k dispozici dvě jazykové varianty - plně Česká varianta a plně Anglická varianta&lt;br /&gt;
* varianty se liší pouze texty ve webovém rozhraní, jejich funkčnost je ale zcela shodná (bez rozdílů)&lt;br /&gt;
&lt;br /&gt;
== 14.5.2011 ==&lt;br /&gt;
* vydána pouze nová EXE aplikace pro nahrávání SDS-C&lt;br /&gt;
* od této verze umožňuje použít složité kostrukce s IF, např.: if (test) { kus programu; } else { kus programu; };&lt;br /&gt;
&lt;br /&gt;
== 1.5.2011 ==&lt;br /&gt;
* stránka /usys.xml&lt;br /&gt;
&lt;br /&gt;
== 17.3.2011 ==&lt;br /&gt;
* možnost nahrát si vlastní webovou stránku (pomocí stejného EXE jakým se nahrává SDS-C)&lt;br /&gt;
* možnost změnit port HTTP klienta (funkce http_get)&lt;br /&gt;
&lt;br /&gt;
== 6.3.2011 ==&lt;br /&gt;
* přechod na novou verzi SDS-C (verze 03)&lt;br /&gt;
&lt;br /&gt;
== 17.2.2011 ==&lt;br /&gt;
* SDS-C doplněno o funkce: lcd_echo, lcd_clear, lcd_newline  (použijte nový EXE pro SDS-C)&lt;br /&gt;
&lt;br /&gt;
== 6.2.2011 ==&lt;br /&gt;
* přemístěn výpis teplot z teplotních čidel na konec status stránky&lt;br /&gt;
* dalši úvodní drobnosti...&lt;br /&gt;
&lt;br /&gt;
== 11.1.2011 ==&lt;br /&gt;
* založena tato stránka&lt;br /&gt;
&lt;br /&gt;
== starší verze ==&lt;br /&gt;
* changelog pro verze starší než 2011 není k dispozici&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_MICRO:_LM:_firmware_changelog&amp;diff=977</id>
		<title>SDS MICRO: LM: firmware changelog</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_MICRO:_LM:_firmware_changelog&amp;diff=977"/>
		<updated>2025-11-15T14:24:49Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SDS-MICRO LM / SDS-IO6 LM ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
Tato stránka se věnuje změnám ve firmware a v HW pro výrobek SDS MICRO LM (všechny jeho varianty) a SDS IO6 LM.&lt;br /&gt;
&lt;br /&gt;
Změny jsou seřazeny tak, že nejnovější verze (která je stáhnutelná z webu) je popsána jako první.&lt;br /&gt;
&lt;br /&gt;
Proč je vydáván nový firmware? Protože operativně řešíme požadavky uživatelů, a jsou doplňovány nové funkce.&lt;br /&gt;
&lt;br /&gt;
Firmware poskytujeme zcela zadarmo po celou dobu životnosti výrobku. Děláme to vše pro Vás.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 15.11.2025 ==&lt;br /&gt;
* přepracována interní DNS cache - pro funkci dns_resolv() - zprovozněno TTL&lt;br /&gt;
* SDS-C: přidány indexy 303 a 304 a 305&lt;br /&gt;
* SDS-C: přidán index 2198&lt;br /&gt;
&lt;br /&gt;
== 1.7.2022 ==&lt;br /&gt;
* opravena chyba při výpisu teplot na webu (jinde to bylo OK), kdy v rozmezí -0.99 degC až 0.00 degC chyběl znak mínus&lt;br /&gt;
* obsluha času: možnost zápisu do sys[4], sys[39]&lt;br /&gt;
* IO6: doplněny další možné vstupní typy do funkcí itoa/itoh (MICRO už to mělo)&lt;br /&gt;
* IO6: možnost zakázat NTP (MICRO už to mělo)&lt;br /&gt;
&lt;br /&gt;
== 28.6.2021 ==&lt;br /&gt;
* IO6: web: oprava oneshotreset&lt;br /&gt;
* IO6: web: přepnutí relé (CBY) na SDS-C ponechá stav relé (zap/vyp) (předtím to natvrdo dalo vyp, což nebylo správně)&lt;br /&gt;
&lt;br /&gt;
== 26.3.2021 ==&lt;br /&gt;
* SDS-C: oprava chování wait() v režimu sys[63]=128 (teď už čeká po správnou dobu, ne po kratší)&lt;br /&gt;
&lt;br /&gt;
== 9.2.2021 ==&lt;br /&gt;
* SDS-C: dns resolv drobný fix&lt;br /&gt;
* SDS-C: http_get a http_post drobný fix&lt;br /&gt;
* SDS-C: nová funkce http_close&lt;br /&gt;
* SDS-C: chyba -7 pro MODBUS-TCP a pro MQTT&lt;br /&gt;
&lt;br /&gt;
== 5.1.2021 ==&lt;br /&gt;
* SDS-C: oprava textcmp()&lt;br /&gt;
* bezpečnostní oprava&lt;br /&gt;
* dřívější odeslání NTP požadavku po výpadku síťového spojení &lt;br /&gt;
&lt;br /&gt;
== 23.10.2020 ==&lt;br /&gt;
* SDS-C: oprava http_get/post: správná vyplnění výsledů i pro situaci kdy server ukončí spojení přes TCP RST&lt;br /&gt;
&lt;br /&gt;
== 4.8.2020 ==&lt;br /&gt;
* SNMP fix - správná hodnota ve .5.13 až .5.16&lt;br /&gt;
* drobné opravy a optimalizace&lt;br /&gt;
&lt;br /&gt;
== 18.7.2020 ==&lt;br /&gt;
* SDS-C: SMTP klient správně zvládne i servery které (chybně) nereagují potvrzením na předání těla emailu&lt;br /&gt;
* SDS-C: http klient upraven (zvýšena odolnost na výpadky spojení se serverem, upraveny timeouty)&lt;br /&gt;
&lt;br /&gt;
== 27.6.2020 (jen MICRO) ==&lt;br /&gt;
* oprava nestartování předchozí verze FW na některých specifických typech HW varianty SDS-MICRO-x&lt;br /&gt;
&lt;br /&gt;
== 26.6.2020 ==&lt;br /&gt;
* SDS-C 09: http_post()&lt;br /&gt;
* MQTT klient&lt;br /&gt;
* různé drobky/opravy dle hlášení uživatelů a testů&lt;br /&gt;
&lt;br /&gt;
== 11.5.2020 ==&lt;br /&gt;
* oprava Content-Length pro CSS soubor (problém s Chrome)&lt;br /&gt;
* oprava chování při odpojeném SDS-1W-T-RH&lt;br /&gt;
&lt;br /&gt;
== 20.4.2020 ==&lt;br /&gt;
* podpora pro modul SDS-1W-T-RH (rovnice pro HIH-5031)&lt;br /&gt;
&lt;br /&gt;
== 15.4.2020 ==&lt;br /&gt;
* implementován SDS Audit Log&lt;br /&gt;
* zvýšená ochrana proti brute-force hledání vstupního hesla&lt;br /&gt;
&lt;br /&gt;
== 14.11.2019 ==&lt;br /&gt;
* drobný bugfix pro S0 (způsob zobrazování aktuálního výkonu)&lt;br /&gt;
* relé lze z webového rozhraní aktivovat i v režimu OneShot&lt;br /&gt;
* SDS-C: emailový klient odesílá i platný datum v hlavičce emailu (je-li v SDS k dispozici platný čas) &lt;br /&gt;
&lt;br /&gt;
== 17.1.2019 ==&lt;br /&gt;
* bugfix SDS-C watchdogu&lt;br /&gt;
&lt;br /&gt;
== 12.1.2019 ==&lt;br /&gt;
* optimalizace webového serveru (množství přenášenyćh dat sníženo až o polovinu, bez změny funkce) - ocení se to zejména při přenosu po úzkých linkách (např. gprs, modemy) &lt;br /&gt;
&lt;br /&gt;
== 4.1.2019 ==&lt;br /&gt;
* překlopena beta do oficiálního vydání&lt;br /&gt;
* SDS-C: verze 08 (pole share[], nové položky v sys[], nové sds-c funkce)&lt;br /&gt;
* watchdog sds-c programu&lt;br /&gt;
&lt;br /&gt;
== 1.7.2018 ==&lt;br /&gt;
* SDS-C: přidán sys 183 poskytující datum vydání FW který je právě nahrán v SDS&lt;br /&gt;
&lt;br /&gt;
== 30.3.2018 ==&lt;br /&gt;
* oprava funkce zápisu prázdného řetězce do názvu 1-Wire teploměru (&amp;quot;smazání názvu&amp;quot; uživatelem) &lt;br /&gt;
* M2M: hodnota okamžitého výkonu pro S0 vstupy je vždy číslo+jednotka, zatímco text 'čekám...' je už jen pouze na s0.htm&lt;br /&gt;
* SNMP: sdsS0translatedUnitT0,1 je poskytováno jako hodnota od odečtu (ne od úplného začátku měření, jak to bylo předtím)&lt;br /&gt;
* drobná oprava při změně nastavení S0, teď se to ihned provede (v okrajových případech bylo někdy potřeba pro načtení změn SDS restartovat, teď už ne).&lt;br /&gt;
&lt;br /&gt;
== 12.3.2018 ==&lt;br /&gt;
* oprava měření na S0 vstupech (některé vstupy se starším FW nemusely být, v určitých okrajových situacích, plně funkční)&lt;br /&gt;
&lt;br /&gt;
== 8.3.2018 ==&lt;br /&gt;
* oprava echo.htm - zobrazuje se&lt;br /&gt;
* oprava echo.htm - správně wrapuje obsah, a nejsou tam nadbytečné 0x00&lt;br /&gt;
* vhodnější řešení rexmitu částí webových stránek a dynamických dat (ocení to zejména uživatelé s mobilním připojením pro SDS)&lt;br /&gt;
&lt;br /&gt;
== 2.3.2018 ==&lt;br /&gt;
* aktulizace a oprava ve výpočtu &amp;quot;aktuálního výkonu&amp;quot; pro okrajové situace (např. krajní hodnoty impulsní konstanty)&lt;br /&gt;
&lt;br /&gt;
== 18.12.2017 ==&lt;br /&gt;
* možnost automického přepínání &amp;quot;letní/zimní&amp;quot; čas (CEST/CET time) byla při &amp;quot;změně času&amp;quot; ověřena a je funkční jak má být&lt;br /&gt;
* správný zápis pouze do T0 pro všechny S0 vstupy, které nemají aktivované tarifní rozdělení (bez ohledu na stav tarifního vstupu)&lt;br /&gt;
* zámek 1-W pozice se ukládá do pevné paměti (při stisku tlačítka na webovém rozhraní)&lt;br /&gt;
* vylepšení v oblasti VCP (telnet pro sériovou linku) - spolehlivější&lt;br /&gt;
* zpřesněny prvky ochrany S0 stránek heslem (SDS lépe volí kdy a jak blokovat přístup na jednotlivé eX a S0 stránky)&lt;br /&gt;
* UserWEB projekt má opravenu chybu, kdy nebylo možno použít delší Name Chain tabulku (tedy lze už vložit mnohem více souborů)&lt;br /&gt;
&lt;br /&gt;
== 23.10.2017 ==&lt;br /&gt;
* hlavní nová funkce: přidána volitelná funkce (checkbox ve webovém rozhraní) pro plně automatickou volbu Letního Času (SELČ - aplikovatelné napříč Evropou)&lt;br /&gt;
* další podstatná úprava: doplnění dalších testů na timeout při OSI7 funkcích (např. http_get) - tzn. test na více místech, který má zabránít zablokování funkce (1029) když selže spojení na server (vyhlásí novou chybu 1030 a odblokuje se).&lt;br /&gt;
* přidány SNMP položky (OID) pro text &amp;quot;ADC jednotka&amp;quot; (pro každý AD vstup).&lt;br /&gt;
* drobné bugfixy a zvýšení spolehlivosti, podle průběžných hlášení uživatelů (např. mírně zvětšeny RX a TX vyrovnávací paměti pro COM1 sériový port, atd.).&lt;br /&gt;
* SDS-C: přidán sys[4], sys[11], sys[38], sys[39]&lt;br /&gt;
* SDS-C: sys[4] = local-time&lt;br /&gt;
* SDS-C: sys[11] = vždy &amp;quot;správné&amp;quot; číslo dne v týdnu&lt;br /&gt;
* SDS-C: sys[38] = utc-time&lt;br /&gt;
* SDS-C: sys[39] = stav automatiky přepínání CEST/CET času&lt;br /&gt;
&lt;br /&gt;
== 10.8.2017 ==&lt;br /&gt;
* SDS-C: zvýšena verze na hodnotu 07 (funguje i pro výrobky s EEPROM tak pro výrobky s NVM-DF)&lt;br /&gt;
* SDS-C: přidány nové sys[] položky (indexy 1792 až 2047)&lt;br /&gt;
* SDS-C: optimalizovaná cache pro velké programy&lt;br /&gt;
* SDS-C: maximální počet proměnných zvýšen na 144&lt;br /&gt;
* SDS-C: maximální počet procesů (procedur) zvýšen na 96&lt;br /&gt;
* SDS-C: hloubka zásobníku (stacku) zvýšena na 24&lt;br /&gt;
* vydán nový odpovídající SDSC.exe&lt;br /&gt;
&lt;br /&gt;
== 3.8.2017 ==&lt;br /&gt;
* oprava chyby kdy se po každém spuštění systému mohla ztratit část S0 konfigurace (nastavení tarifního vstupu)&lt;br /&gt;
&lt;br /&gt;
== 18.4.2017 ==&lt;br /&gt;
* (nová funkčnost) použití UserWEB Projektu&lt;br /&gt;
* oprava v echo() pro zápis do sériové linky (uart)&lt;br /&gt;
* drobné ale důležité fixy v html stránkách (texty, vzhled)&lt;br /&gt;
* nové NTP dotazy lze aktivovat i z SDS-C programu (viz aktualizovaný seznam sys)&lt;br /&gt;
&lt;br /&gt;
== 24.11.2016 ==&lt;br /&gt;
* opraven chybně zpracovaný vstup při zadávání nastavení parametrů S0 vstupu (hodnota &amp;quot;minimální délka impulsu&amp;quot; byla špatně zpracována a uložena)&lt;br /&gt;
&lt;br /&gt;
== 28.3.2016 ==&lt;br /&gt;
* impulse counter lze z webu zadat do plných 32 bitů, původně jen 31 bitů&lt;br /&gt;
* další drobné opravy&lt;br /&gt;
&lt;br /&gt;
== 26.3.2016 ==&lt;br /&gt;
* oprava chybného zpracování RFC2217 příkazu pro změnu BaudRate (zpracoval se jen poslední byte místo celého dwordu, teď opraveno)&lt;br /&gt;
&lt;br /&gt;
== 23.2.2016 ==&lt;br /&gt;
* oprava nefunkčního zápisu pomocí SNMP (několik předchozích verzí, teď opraveno)&lt;br /&gt;
&lt;br /&gt;
== 5.2.2016 ==&lt;br /&gt;
* oprava funkce RSTD - rozšíření funkce RSTD: krátký zkrat (approx 1 sec) po zapnutí spustí BL (zařízení čeká na nový firmware), zatímco dlouhý zkrat (déle než 3 sec) spustí aplikaci a současně vymaže nastavení (set to Factory Defaults)&lt;br /&gt;
* možnost vyhledávat všechny zařízení SDS na subnetu pomocí rozšířené funkce (Find a SDS) v EXE aplikaci (např. když ztratíte IP adresu do webového rozhraní a potřebujete se na SDS připojit)&lt;br /&gt;
&lt;br /&gt;
== 15.11.2015 ==&lt;br /&gt;
* důležité opravy&lt;br /&gt;
&lt;br /&gt;
== 3.7.2015 ==&lt;br /&gt;
* vylepšený DHCP client&lt;br /&gt;
* řada oprav podle průběžného testování&lt;br /&gt;
&lt;br /&gt;
== 2.4.2015 ==&lt;br /&gt;
* veškeré opravy od posledního vydání (viz průběh BETA testů)&lt;br /&gt;
* významně zvýšena spolehlivost a stabilita při síťové zátěži (Eth. komunikace)&lt;br /&gt;
* SDS-C: přidáno sys[193]&lt;br /&gt;
* SDS-C: přidáno sys[37]&lt;br /&gt;
* SDS-C: přidáno sys[139]&lt;br /&gt;
* SDS-C: možnost zápisu do sys[4]&lt;br /&gt;
* SNMP TRAP předává plný OID (dosud dával jen OID useknutný za E.ID)&lt;br /&gt;
&lt;br /&gt;
== 9.9.2014 ==&lt;br /&gt;
* opravena chyba pro sys[64]==1 (vnitřním zaokrouhlením to skočilo na nulu)&lt;br /&gt;
&lt;br /&gt;
== 17.8.2014 ==&lt;br /&gt;
* přidána možnost použít get_var[index] pro čtení vnitřních proměnných v SDS-C přes web&lt;br /&gt;
* SNMP: umožňuje zápis do všech položek přes &amp;quot;Counter32&amp;quot; (nová záležitost) a původní &amp;quot;Integer&amp;quot; typ&lt;br /&gt;
* SNMP: přidána možnost zápisu do položek S0-impulse-counter (T0 a T1)&lt;br /&gt;
* RS485: při vysílání je budič aktivní max 1msec (nebo méně) od posledního znaku&lt;br /&gt;
&lt;br /&gt;
== 8.7.2014 ==&lt;br /&gt;
* opravy v oblasti obsluhy sériového rozhraní (RS485)&lt;br /&gt;
* do webové administrace přidána možnost vzájemného přehození pozic dvou 1-Wire záznamů&lt;br /&gt;
* další drobné opravy z průběžných beta testů&lt;br /&gt;
&lt;br /&gt;
== 8.3.2014 ==&lt;br /&gt;
* SDS-C: opraveno chyba omezující možný rozsah sys[78] (bylo omezeno na 0xFF, už není - teď správně vezme max velikost pole ram[] nebo text[])&lt;br /&gt;
&lt;br /&gt;
== 1.3.2014 ==&lt;br /&gt;
* SDS-C: nová funkce serial_write()&lt;br /&gt;
* SDS-C: nový timeout pro smtp_send() - zamezí specifickému možnému zaseknutí programu, když SMTP server přestane odpovídat uprostřed transkace po více než 50sec&lt;br /&gt;
* SDS-C: opravena funkce snmp_send_trap() - horní část seznamu trapů byla předtím chybně neodeslatená (teď už je vše OK)&lt;br /&gt;
* vylepšení odolnosti při výpadku a při obnovení připojení k Ethernetu&lt;br /&gt;
* různé drobné důležité opravy (viz beta testy)&lt;br /&gt;
&lt;br /&gt;
== 23.1.2014 ==&lt;br /&gt;
* překlopená beta-verze (po ukončené ověřovací sérii testů)&lt;br /&gt;
* SDS-C: úpravy (spolehlivost) v http_get(), dns_resolve()&lt;br /&gt;
* rozšířena 1-W funkcionality (další chipy)&lt;br /&gt;
* možnost &amp;quot;zrušit odečet&amp;quot; tlačítkem ve webovém rozhraní&lt;br /&gt;
* možnost nastavit minimální akceptovanou délku S0 impulsu pro každý vstup samostatně&lt;br /&gt;
* maximální velikost user.htm je zvětšena (teď lze vyplnit celou DF)&lt;br /&gt;
&lt;br /&gt;
== 30.11.2013 ==&lt;br /&gt;
* celá řada drobných oprav (nalezené v rámci testování od poslední verze)&lt;br /&gt;
* S0.htm: všechny hodnoty zobrazují údaje od posledního odpočtu (chybělo pro T0/T1 kWh)&lt;br /&gt;
* web: /get_dfi[x]&lt;br /&gt;
* SDS-C: čtení a zápis celé stránky z/do paměti DataFlash&lt;br /&gt;
&lt;br /&gt;
== 3.10.2013 ==&lt;br /&gt;
* celá řada drobných oprav&lt;br /&gt;
* login html stránka upravena (w3c valid)&lt;br /&gt;
* možnost nastavit MTD pro S0 měření&lt;br /&gt;
* nový SDSC.exe program&lt;br /&gt;
&lt;br /&gt;
== 16.3.2013 ==&lt;br /&gt;
* zápis výpadku a znovu-připojení Ethernetu do logu historie&lt;br /&gt;
* při odpojení a následném znovu-připojení Ethernetu dojde od teď záměrně ke smazání celé ARP tabulky, takže všechny MAC-IP páry jsou vyžádány znovu (pro případ že se např. vyměnil router atd.)&lt;br /&gt;
* SDS-C: get_txt[xxx] (vypíše pole text od indexu xxx až do znaku 0x00 na některém z následujících indexů v tomto poli)&lt;br /&gt;
* get_sys[xxx] vrací i text pro textové položky (vyzkoušejte všechny sys[] které jsou textové)&lt;br /&gt;
* SDS-C: přidáno sys[900] až sys[931] (text ROM CODE pro 1-W čidla)&lt;br /&gt;
* upraveno zpracování ARP tabulky (více bezpečné pro dlouhodobý provoz)&lt;br /&gt;
* možnost řízení tarifního signálu pro S0 prostřednictvím SDS-C programu&lt;br /&gt;
* funkce &amp;quot;odečet&amp;quot; pro S0 (viz nastavení S0 vstupů ve webové administraci)&lt;br /&gt;
* SDS-C: funkce smtp_send() akceptuje text[] nejen pro obsah zprávy, ale i pro adresu příjemce a subject&lt;br /&gt;
* SDS-C: funkce http_get() akceptuje text[] nejen pro obsah zprávy, ale i pro nastavení HTTP HOST parametru&lt;br /&gt;
&lt;br /&gt;
== 4.2.2013 ==&lt;br /&gt;
* při zobrazení echo.htm, když je konzole plná textu, nedojde k resetu zařízení&lt;br /&gt;
* opraveno časování pro 1-Wire sběrnici (vráceno na původní stav před úpravou v 20.12), uptime počítá také správně&lt;br /&gt;
* SDS-C: přidáno sys[45]&lt;br /&gt;
* SDS-C: přidáno sys[46]&lt;br /&gt;
* SDS-C: přidáno sys[98]&lt;br /&gt;
* SDS-C: echoinline() funguje správně&lt;br /&gt;
&lt;br /&gt;
== 20.12.2012 ==&lt;br /&gt;
Významné vydání, oprava řady drobných chyb průběžně hlášených od uživatelů, celá řada nových funkcí&lt;br /&gt;
* DHCP CLIENT&lt;br /&gt;
* SNMP write&lt;br /&gt;
* rychlejší boot loader&lt;br /&gt;
* rychlejší webová administrace&lt;br /&gt;
* přesnější udržování aktuálního času v zařízení (dvojnásobná kontrola přesnosti a korekce)&lt;br /&gt;
* přepracované úložiště v pevné paměti - SDS s eeprom ukládá všech 16 názvů pro teploměry&lt;br /&gt;
* možnost změny portu &amp;quot;UDP protokolu&amp;quot; (výchozí port 280)&lt;br /&gt;
* SDS-C: konzole zvětšena o zhruba 400 znaků&lt;br /&gt;
* délky textů pro (názvy) S0 jsou 32 bajtů, což je až 32 znaků (české znaky v UTF-8 berou 2 bajty), nicméně vše se v defaultu už vleze&lt;br /&gt;
* pro každý S0 vstup lze nastavit rozdílnou cenu pro T0 a T1 (stav tarifu)&lt;br /&gt;
* SDS-C: funkce send_udp()&lt;br /&gt;
* SDS-C: přidáno sys[61]&lt;br /&gt;
* SDS-C: přidáno sys[27]&lt;br /&gt;
* SDS-C: funkce echoinline()&lt;br /&gt;
* správné zpracování LOGIC S0 u zařízení SDS MICRO, které tento vstup nemají&lt;br /&gt;
* upraven CSV soubor (vypisuje detaily pro S0)&lt;br /&gt;
* upraven xml.xml a s0.xml (vše funguje jak má i při plném osazení, typicky pro SDS MACRO 8)&lt;br /&gt;
* SDS-C: sprintf dává 0x00 na konec textu (tohle chybělo)&lt;br /&gt;
* SDS-C: http_get() zapisuje 0x00 na &amp;quot;konec&amp;quot; text[], když se do text[] ukládá přijatá odpověď.&lt;br /&gt;
* SDS-C: oprava která má zajistit nevyvolání chyby 1029 pro http_get() funkci &lt;br /&gt;
* rozšířený MIB (položky pro S0 hodnoty)&lt;br /&gt;
* SDS-C: SNMP TRAP (odesílání TRAPů z SDS-C programu)&lt;br /&gt;
* a řada drobných obrav a vylepšení&lt;br /&gt;
&lt;br /&gt;
== 7.5.2012 ==&lt;br /&gt;
* opravena funkčnost PWM výstupu - lze správné nastavit střídu v rozmezí 0 až 100% viz návod na WiKi&lt;br /&gt;
&lt;br /&gt;
== 29.3.2012 ==&lt;br /&gt;
* firmware funguje správně i v historických zařízeních SDS MICRO LIGHT (1) používajících 24C16/24C256&lt;br /&gt;
&lt;br /&gt;
== 27.3.2012 ==&lt;br /&gt;
* spolehlivé načítání prvních osmi uložených pozic teploměrů z pevné paměti po resetu&lt;br /&gt;
* automaticky umístí nadbývající připojené teploměr na pozice 9 až 16&lt;br /&gt;
* zamykání pozic teploměrů funguje správně&lt;br /&gt;
* předělaná SDS-C funkce smtp_send() - má větší pracovní buffer, zvládne náročnější SMTP servery&lt;br /&gt;
&lt;br /&gt;
== 18.3.2012 ==&lt;br /&gt;
* finální podoba SNMP MIB (stáhněte si aktualizovaný MIB soubor)&lt;br /&gt;
&lt;br /&gt;
== 11.3.2012 ==&lt;br /&gt;
* malá změna v SNMP MIB (srovnání MIBů mezi MICRO/MACRO)&lt;br /&gt;
* další drobné opravy nahlášené po testování firmware z 8.3.&lt;br /&gt;
&lt;br /&gt;
== 8.3.2012 ==&lt;br /&gt;
* odstraněno zpoždění v převodníku Ethernet-Serial (Virtual COM port)&lt;br /&gt;
&lt;br /&gt;
== 4.3.2012 ==&lt;br /&gt;
Řada oprav a vylepšení, pocházející z BETA testování (viz forum)&lt;br /&gt;
* správný výpočet data od 29.2.2012&lt;br /&gt;
* možnost uzamknout pozice 1-Wire zařízení (teploměry)&lt;br /&gt;
* rozšířené SNMP&lt;br /&gt;
* SDS-C verze č. 06&lt;br /&gt;
* pole text[] a funkce atoi(), sprintf()&lt;br /&gt;
* uživatelská stránka může být i jako přímo indexová stránka webového rozhraní&lt;br /&gt;
* všechny fyzické vstupy a výstupy jsou počítány od jedničky&lt;br /&gt;
* další drobné úpravy a opravy, viz soupis u BETA testů&lt;br /&gt;
&lt;br /&gt;
== 17.1.2012 ==&lt;br /&gt;
* oprava indexů v &amp;quot;temp&amp;quot; tagech v xml.xml a temp.xml&lt;br /&gt;
&lt;br /&gt;
== 16.1.2012 ==&lt;br /&gt;
* opravy v přenosu hodnot teplot jednotlivými protokoly (v případě teploty menší než 0 stupňů Celsia byl špatně umístěn znak minus)&lt;br /&gt;
&lt;br /&gt;
== 15.1.2011 ==&lt;br /&gt;
* opravena chyba s user-dataflash (oprava má význam pouze pro výrobky osazené DF, nikoliv EE, tam chyba nebyla)&lt;br /&gt;
&lt;br /&gt;
== 21.12.2011 ==&lt;br /&gt;
* zapracovány všechny nové funkce, testované v rámci BETA testování nového firmware (probíhalo od 27.10.)&lt;br /&gt;
&lt;br /&gt;
== 27.10.2011 ==&lt;br /&gt;
* do webového rozhraní přidáno tlačítko: možnost nastavení střídy PWM &amp;quot;na zkoušku&amp;quot; (bez uložení do pevné paměti)&lt;br /&gt;
* web: funkce /get_sys a /get_ram může vrátit řadu proměnných za sebou&lt;br /&gt;
&lt;br /&gt;
== 2.10.2011 ==&lt;br /&gt;
* přidán sys[26]&lt;br /&gt;
* přidán sys[63]&lt;br /&gt;
* přidán sys[78]&lt;br /&gt;
* doplněn UDP protokol o čtyři nové funkce (čtení / zápis polí sys[] a ram[])&lt;br /&gt;
&lt;br /&gt;
== 31.7.2011 ==&lt;br /&gt;
* opraven problém s UDP protokolem - příkaz '''write''' (už funguje vždy ok)&lt;br /&gt;
* nový SDSC.exe program - doplňuje správnou HTML serverovou hlavičku pro uživatelskou stránku&lt;br /&gt;
&lt;br /&gt;
== 29.7.2011 ==&lt;br /&gt;
* možnost zápis z SDS-C programu do systémových proměnných sys[559] až sys[561]&lt;br /&gt;
* nová funkce pro UDP protokol - funkce '''write''' umožňuje hromadný zápis do sys[] systémových proměnných&lt;br /&gt;
&lt;br /&gt;
== 25.6.2011 ==&lt;br /&gt;
* možnost změnit číslo TCP portu webového serveru webového rozhraní výrobku (změna stejným způsobem jako je změna IP nebo MAC adresy...)&lt;br /&gt;
&lt;br /&gt;
== 16.6.2011 ==&lt;br /&gt;
* verze SDS-C č. 04&lt;br /&gt;
* SDS-C: plně funkční funkce ping()&lt;br /&gt;
* rozšíření maximální velikosti SDS-C programu ve všech verzích SDS MICRO (light, light2, DIN)&lt;br /&gt;
** DATAFLASH maximální velikost programu je 65472 bajtů&lt;br /&gt;
** 24C16 maximální velikost programu je 900 bajtů&lt;br /&gt;
** 24C256 maximální velikost programu je 31416 bajtů&lt;br /&gt;
&lt;br /&gt;
* web: nastavení uživatelské proměnné pomocí volání sdscep pracuje s doplňkovými parametry (např. vrací hodnotu)&lt;br /&gt;
* upravena obsluha eeprom paměti (jiný I2C driver) - tzn. větší spolehlivost a větší rychlost&lt;br /&gt;
* sys[25] po každém zavolání čte hodnotu z PHY HW a vrací skutečný stav v daný okamžik&lt;br /&gt;
* čtení ze sériové linky je teď dostupné pro program v SDS-C (viz sys[48] a sys[49])&lt;br /&gt;
* změna řízení PWM výstupu, lze teď plynule regulovat poměr log0 a log1 v celém rozsahu&lt;br /&gt;
* všechny stránky předělány na UTF-8, vstupy textů berou i České znaky atd.&lt;br /&gt;
* výpis MAC adresy pro SDS-C program (viz sys[31] až sys[36])&lt;br /&gt;
* SDS-C: http_get může uložit získaná data webové stranky do pole ram[]&lt;br /&gt;
* zcela změněn ARP algoritmus, měl by teď bez problémů pracovat i na větších podsítích než je /24&lt;br /&gt;
* web: informační stránka /arp.htm&lt;br /&gt;
* SDS-C: zvětšena velikost pole ram[] na 512 záznamů&lt;br /&gt;
* web: výpis hodnot sys[] a ram[] pomocí dynamicky generované webové stránky (např. /get_ram[123] )&lt;br /&gt;
* web: čtení výpisu sys[] a ram[] lze zakázat v nastavení (SDS-C parametr)&lt;br /&gt;
* SDS-C: možnost zápisu do S0 impulsních počítadel (nulování, úpravy hodnot, atd.)&lt;br /&gt;
* pokud je konkrétní relé ve webovém rozhraní nastaveno na něco jiného, než na &amp;quot;ovládáno z SDS-C&amp;quot;, tak jeho stav SDS-C program nezmění&lt;br /&gt;
&lt;br /&gt;
== 21.5.2011 ==&lt;br /&gt;
* opravy v českém a anglickém překladu webového rozhraní&lt;br /&gt;
&lt;br /&gt;
== 14.5.2011 ==&lt;br /&gt;
* vydána pouze nová EXE aplikace pro nahrávání SDS-C&lt;br /&gt;
* od této verze umožňuje použít složité kostrukce s IF, např.: if (test) { kus programu; } else { kus programu; };&lt;br /&gt;
&lt;br /&gt;
== 13.5.2011 ==&lt;br /&gt;
* od této verze jsou k dispozici dvě jazykové varianty - plně Česká varianta a plně Anglická varianta&lt;br /&gt;
* varianty se liší pouze texty ve webovém rozhraní, jejich funkčnost je ale zcela shodná (bez rozdílů)&lt;br /&gt;
&lt;br /&gt;
== 20.3.2011 ==&lt;br /&gt;
* funkční nahrávání uživatelské webové stránky&lt;br /&gt;
&lt;br /&gt;
== 3.3.2011 ==&lt;br /&gt;
* pouze nový simulační WinEXE program pro SDS-C&lt;br /&gt;
** funkční simulátor LCD (SDS MACRO)&lt;br /&gt;
** vylepšení v hlášení chyb při kontrole programu SDS-C&lt;br /&gt;
&lt;br /&gt;
== 27.2.2011 ==&lt;br /&gt;
* změněn výpis UpTime v Actual Status webové stránce na dny/hod/min/sec/msec&lt;br /&gt;
* doplněna generovaná webová stránka: echo.htm (obsahuje pouze výpis konzole SDS-C, vhodné pro embedding do jiného webu)&lt;br /&gt;
* nový XML soubor - usys.xml - výpis vzdálených proměnných SDS-C&lt;br /&gt;
* možnost volby nezasílání http dat pro volání sdscep (umožnujě tzv. tichou aktualizaci hodnoty sys)&lt;br /&gt;
* do SNMP doplněna hodnota teploty SoC (vyčtená z HW, bez převodu na °C)&lt;br /&gt;
* příprava pro nahrání uživatelské webové stránky (plná podpora bude v následující verzi fw)&lt;br /&gt;
* nová verze SDS-C, nové možnosti, nový simulátor&lt;br /&gt;
** SDS-C: možnost použít #define v programu&lt;br /&gt;
** SDS-C: možnost použít uživatelské proměnné jako indexy do pole (sys, ram)&lt;br /&gt;
** SDS-C: k dispozici je univerzální pole ram[]&lt;br /&gt;
** SDS-C: nová WinEXE aplikace, řada drobností...&lt;br /&gt;
&lt;br /&gt;
== 30.1.2011 ==&lt;br /&gt;
* úpravy specifické pro verzi LIGHT s EEPROM (restart zařízení)&lt;br /&gt;
&lt;br /&gt;
== 29.1.2011 ==&lt;br /&gt;
* v SNMP doplněn výpis celé hodnoty (x100) pro 1-W teploměry 2 až 16&lt;br /&gt;
&lt;br /&gt;
== 28.1.2011 ==&lt;br /&gt;
* dvě nové funkce v SDS-C, pro zápis do sériového portu &lt;br /&gt;
* zpřesněný interní čítač reálného času&lt;br /&gt;
&lt;br /&gt;
== 26.1.2011 ==&lt;br /&gt;
* změněna minimální akceptovaná délka S0 impulsu, bylo původně 16 msec jako minimum, od této verze je to 5 msec (z důvodů připojení speciálních nepřímých elektroměrů).&lt;br /&gt;
* doplňky v simulátoru SDS-C, zejména ohledně času, korekce optovstupů, atd.&lt;br /&gt;
&lt;br /&gt;
== 9.1.2011 ==&lt;br /&gt;
* nová položka v SNMP - pro každé teplotní čidlo je poskytována plná hodnota násobena 100 (např. 12.35°C je předáno jako 1235)&lt;br /&gt;
* pouze SDS MICRO LIGHT: v SDS-C doplněny čtyři sys[], umožňující přímé ovládání vývodů A1, B1, M4, M5 (CMOS 3V3 logika, pájecí plošky)&lt;br /&gt;
&lt;br /&gt;
== 7.12.2010 ==&lt;br /&gt;
* upraven způsob výpočtu a prezentace okamžitého výkonu (S0), zejména v případě přerušení dodávky S0 impulsů&lt;br /&gt;
&lt;br /&gt;
== 1.12.2010 ==&lt;br /&gt;
* firmware podporuje i jiné osazené dataflash (menší velikosti) paměti&lt;br /&gt;
&lt;br /&gt;
== 29.11.2010 ==&lt;br /&gt;
* oprava v chování SDS-C, kdy pokud byl program právě ve funkci wait(), tzn. čekal, a v tu chvíli byl nahrán nový program, tak nebylo čekání zrušeno, a nový program byl spuštěn až po dokončení čekání&lt;br /&gt;
* úpravy odkazů na www.merenienergie.cz, portal.merenienergie.cz&lt;br /&gt;
&lt;br /&gt;
== 20.10.2010 ==&lt;br /&gt;
* upraven UDP protokol - doplněno ROMCODE pro teplotní čidla&lt;br /&gt;
* upraveno zadávání uživatelských sys[] proměnných z webu (už lze zadávat i záporné čísla)&lt;br /&gt;
* opravena ztráta nastavení GMT offset po resetu zařízení&lt;br /&gt;
&lt;br /&gt;
== 8.10.2010 ==&lt;br /&gt;
* opraven SNMP který měl od verze 10.9. problémy&lt;br /&gt;
* tento a novější firmware je vhodný pro spolupráci se službou portal.merenienergie.cz&lt;br /&gt;
&lt;br /&gt;
== 6.10.2010 ==&lt;br /&gt;
* oprava výpisu přepočtené spotřeby (kW) - doplněno vždy na tři desetinná místa&lt;br /&gt;
* funkční nulování převodu peněz&lt;br /&gt;
* SMTP konfigurace se správně načte po zapnutí zařízení&lt;br /&gt;
&lt;br /&gt;
== 26.9.2010 ==&lt;br /&gt;
* SDS-C: stránka &amp;quot;control&amp;quot;, uživatelsky editovatelné proměnné&lt;br /&gt;
* SDS-C: do sys[] doplněna informace pro S0 (čas od posledního impulsu)&lt;br /&gt;
* drobné doplňky do XML, příprava pro SDSMON.exe&lt;br /&gt;
* UDP protokol, popis viz wiki&lt;br /&gt;
&lt;br /&gt;
== 17.9.2010 ==&lt;br /&gt;
* oprava v SDS-C: funkce http_get a smtp_send, od teď umožnují vkládat proměnné až na pozici do maximální délky zprávy (1024 znaků)&lt;br /&gt;
* výstup /temp.txt je doplněn na dvojici: romcode : teplota&lt;br /&gt;
* výstup /temp.xml je doplněn o tagy s romcode&lt;br /&gt;
&lt;br /&gt;
== 15.9.2010 ==&lt;br /&gt;
* doplněn výstup teplot ze všech čidel, do textové formy, /temp.txt&lt;br /&gt;
* odečet teplotních web-snippet tempX.htm akceptuje hex znaky (tj. 0-9, a-f)&lt;br /&gt;
&lt;br /&gt;
== 14.9.2010 ==&lt;br /&gt;
* opraven výpis teploty v csv.csv&lt;br /&gt;
* nový xml soubor: temp.xml - pouze s údaji o teplotě&lt;br /&gt;
&lt;br /&gt;
== 10.9.2010 ==&lt;br /&gt;
* opraveno zobrazení kWh na webových stránkách (špatný číselný text u vyšších hodnot kWh)&lt;br /&gt;
&lt;br /&gt;
== 8.9.2010 ==&lt;br /&gt;
* ve firmware byl zvýšen maximální počet obsluhovaných teplotních sensorů z 8 na 16&lt;br /&gt;
&lt;br /&gt;
== 14.8.2010 ==&lt;br /&gt;
* opraveno SDS-C - správnost předávání konstantních číselných parametrů funkcím&lt;br /&gt;
* doplněna nová funkce do SDS-C - funkce http_get&lt;br /&gt;
* nový Win32 program pro práci s SDS-C (doplněna funkčnost vzdálených labelů)&lt;br /&gt;
* zobrazení názvů tarifů na celkové stránce pro S0 (předtím bylo jen na detailních stránkách)&lt;br /&gt;
&lt;br /&gt;
== 9.8.2010 ==&lt;br /&gt;
* firmware funguje i pro HW rev2,3 (SDS MICRO light), předchozí verze 3.8. nenašla externí flash paměť&lt;br /&gt;
&lt;br /&gt;
== 3.8.2010 ==&lt;br /&gt;
* opravena chyba kdy nedošlo k přečtení konfigurace pro S0 vstupy z pevné paměti, už je to ok&lt;br /&gt;
* upraven výpočet okamžitého výkonu, aby při nepřipojeném měřiči ukazoval nulu&lt;br /&gt;
&lt;br /&gt;
== 2.8.2010 ==&lt;br /&gt;
* zcela přepracováno webové rozhraní pro měřiče energie&lt;br /&gt;
* rozšířené snmp/xml/csv pro měřiče energie&lt;br /&gt;
* možnost připojít více samostatnyćh měřičů energie najednou&lt;br /&gt;
* vstup pro tarifní rozlišení (denní/noční proud, výroba/dodávka, atd.)&lt;br /&gt;
* vylepšený Windows&amp;amp;reg; program pro nahrávání firmware&lt;br /&gt;
&lt;br /&gt;
== 26.7.2010 ==&lt;br /&gt;
&lt;br /&gt;
* nový firmware pro převodník Ethernet/Serial&lt;br /&gt;
* samostatná stránka ve webovém rozhraní pro zobrazení stavu převodníku Ethernet/Serial&lt;br /&gt;
&lt;br /&gt;
== 23.7.2010 ==&lt;br /&gt;
&lt;br /&gt;
* úprava chování pinu RSTD - pokud se zkratuje a zapne se zařízení, je kromě původní funkce (reset konfigurace) spuštěn i bootloader, tzn. bootloader lze odteď pouštět jak z webového rozhraní (původní stav), tak odteď i přes RSTD - toto má výhodu, pokud se nepovede nahrát celý nový firmware, tak lze znovu spustit bootloader a opakovat nahrávání znovu&lt;br /&gt;
* drobná oprava v SMTP klientu&lt;br /&gt;
* byl vydán nový Windows&amp;amp;reg; program pro nahrávání programů v SDS-C&lt;br /&gt;
&lt;br /&gt;
== 18.7.2010 ==&lt;br /&gt;
&lt;br /&gt;
* maximální počet znaků v přihlašovacích údajích pro SMTP je rozšířen na 32 znaků&lt;br /&gt;
* drobné opravy ve webovém rozhraní&lt;br /&gt;
&lt;br /&gt;
== 15.7.2010 ==&lt;br /&gt;
&lt;br /&gt;
* ošetřena funkčnost SMTP při použití přihlašovacích údajů pro SNMP o maximálním počtu znaků (navíc v budoucnu to bude prodlouženo)&lt;br /&gt;
&lt;br /&gt;
== 10.7.2010 ==&lt;br /&gt;
&lt;br /&gt;
* opravy drobností tak jak byly nahlášeny od uživatelů&lt;br /&gt;
* tři desetinné místa na ose grafu spotřeby energie&lt;br /&gt;
* oprava hodnoty dne u data v grafu spotřeby energie&lt;br /&gt;
* doplňky v http serveru, úprava hlavičky pro CSV&lt;br /&gt;
* přihlašovací stránka se už zobrazí všude a vždy (předtím někdy neprošlo např. nod32)&lt;br /&gt;
* příprava pro centrální sběrný program SDSMON.exe&lt;br /&gt;
&lt;br /&gt;
== 2.6.2010 ==&lt;br /&gt;
&lt;br /&gt;
* oficiální verze SDS-C k dispozici&lt;br /&gt;
* celá řada nových funkcí, především pro SDS-C&lt;br /&gt;
* SMTP - odesílání emailů (z programu SDS-C)&lt;br /&gt;
* výstup dat i ve formě CSV souboru (středníkový oddělovač pro Excel&amp;amp;reg;)&lt;br /&gt;
&lt;br /&gt;
== 17.5.2010 ==&lt;br /&gt;
&lt;br /&gt;
* opraven výpis LOGu pro IP adresy&lt;br /&gt;
* záznam nepovedených přístupů (když to někdo zkouší se špatným heslem)&lt;br /&gt;
* drobnosti v http serveru&lt;br /&gt;
* graf S0 má místo +1kWh jen +0.1kWh&lt;br /&gt;
* oprava detekce EEPROM (aktualizujte FW !)&lt;br /&gt;
&lt;br /&gt;
== 15.5.2010 ==&lt;br /&gt;
&lt;br /&gt;
* změna výchozího NTP serveru (default config)&lt;br /&gt;
* kratší odpočet při změně NTP serveru&lt;br /&gt;
* stránka S0 i z hlavního menu&lt;br /&gt;
&lt;br /&gt;
== 12.5.2010 ==&lt;br /&gt;
&lt;br /&gt;
* drobné úpravy&lt;br /&gt;
* informace o datové paměti (bude důležité pro SDS-C)&lt;br /&gt;
* volba NTP serveru&lt;br /&gt;
&lt;br /&gt;
== 4.5.2010 ==&lt;br /&gt;
&lt;br /&gt;
* řada doplňků pro S0 vstup (přepočty, kreslení grafu, xml)&lt;br /&gt;
&lt;br /&gt;
== 23.4.2010 ==&lt;br /&gt;
&lt;br /&gt;
* počítáni S0 impulsů (opto 3), speciální webové zobrazení a přepočty&lt;br /&gt;
* doplňky v SNMP, doplněný MIB&lt;br /&gt;
* nepřipojené teploměry hlásí teplotu 32767&lt;br /&gt;
* příprava stránky pro řízení relé pomocí teploměrů&lt;br /&gt;
&lt;br /&gt;
== 25.1.2010 ==&lt;br /&gt;
&lt;br /&gt;
* možnost pojmenovat si všechny analogové vstupy&lt;br /&gt;
* doplněno: název analogového vstupu lze přečíst přes SNMP&lt;br /&gt;
* doplněno: název relátka lze přečíst přes SNMP&lt;br /&gt;
&lt;br /&gt;
== 15.1.2010 ==&lt;br /&gt;
&lt;br /&gt;
* opraveno chybějící tlačítko u přihlašovací stránky (šlo pouze stiskem klávesy Enter)&lt;br /&gt;
* doplněno chybějící čtvrté nastavovací tlačítko u ADC konstant&lt;br /&gt;
&lt;br /&gt;
== 11.1.2010 ==&lt;br /&gt;
&lt;br /&gt;
* opraveno (doplňeno) chybějící záporné znaménko u výpisu teploty (web, SNMP)&lt;br /&gt;
&lt;br /&gt;
== 31.10.2009 ==&lt;br /&gt;
&lt;br /&gt;
* navýšení maximálního počtu současně přihlášených uživatelů do webového rozhraní&lt;br /&gt;
&lt;br /&gt;
== 30.10.2009 ==&lt;br /&gt;
&lt;br /&gt;
* zvýšení max počtu 1-Wire&amp;amp;reg; teploměrů na 8 kusů na jedné sběrnici&lt;br /&gt;
* doplněn výstup SNMP o údaje desetinných hodnot pro všechny teploměry&lt;br /&gt;
* doplněno uživatelské nastavení přepočítavacích hodnot pro A/D převod, použité pro zobrazení ve webovém rozhraní a pro xml výstup&lt;br /&gt;
* zobrazení sysLocation také v přehledové stránce (actual status)&lt;br /&gt;
* možnost pojmenovat si všechny teploměry (16 znaků pro každý)&lt;br /&gt;
* možnost pojmenovat si ovládané relé (16 znaků pro každé)&lt;br /&gt;
&lt;br /&gt;
== 29.10.2009 ==&lt;br /&gt;
&lt;br /&gt;
* drobnosti před vydáním 30.10.2009&lt;br /&gt;
&lt;br /&gt;
== 10.10.2009 ==&lt;br /&gt;
&lt;br /&gt;
* NTP klient - synchronizace času a data protokolem NTP&lt;br /&gt;
* nastavení NTP serveru a GMT prostřednictvím &amp;quot;Admin config&amp;quot; webové stránky&lt;br /&gt;
* zobrazení NTP času a data v &amp;quot;actual status&amp;quot; webové stránce&lt;br /&gt;
* zobrazení času a data v &amp;quot;Log&amp;quot; webové stránce u všech položek&lt;br /&gt;
&lt;br /&gt;
== 20.09.2009 ==&lt;br /&gt;
&lt;br /&gt;
* webová stránka &amp;quot;aktuální stav&amp;quot; - upraveno pro správné zobrazování v IE&lt;br /&gt;
* v nadpisu webové stránky (tag title) se zobrazuje název zařízení a navíc celý obsah textu ''sysLocation''&lt;br /&gt;
&lt;br /&gt;
== 07.09.2009 ==&lt;br /&gt;
&lt;br /&gt;
* 1-Wire&amp;amp;reg; měří na 1/16 stupně Celsia, upraveno časování (větší spolehlivost), lze připojit více čidel&lt;br /&gt;
* možnost změny MAC adresy (přímo z webového rozhraní)&lt;br /&gt;
* zobrazení informační (potvrzovací) stránky před změnou IP, MAC&lt;br /&gt;
&lt;br /&gt;
== výchozí firmware ==&lt;br /&gt;
&lt;br /&gt;
* výchozí firmware&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_MICRO:_ST:_firmware_changelog&amp;diff=976</id>
		<title>SDS MICRO: ST: firmware changelog</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_MICRO:_ST:_firmware_changelog&amp;diff=976"/>
		<updated>2025-11-15T14:24:43Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SDS-MICRO ST / SDS-MICRO ST DP / SDS-IO6 ST ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
Tato stránka se věnuje změnám ve firmware a v HW pro výrobek '''SDS MICRO ST''' a '''SDS MICRO ST DP''' a '''SDS IO6 ST'''.&lt;br /&gt;
&lt;br /&gt;
Změny jsou seřazeny tak, že nejnovější verze (která je stáhnutelná z webu) je popsána jako první.&lt;br /&gt;
&lt;br /&gt;
Proč je vydáván nový firmware? Protože operativně řešíme požadavky uživatelů, a jsou doplňovány nové funkce.&lt;br /&gt;
&lt;br /&gt;
Firmware poskytujeme zcela zadarmo po celou dobu životnosti výrobku. Děláme to vše pro Vás.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 15.11.2025 ==&lt;br /&gt;
* přepracována interní DNS cache - pro funkci dns_resolv() - zprovozněno TTL&lt;br /&gt;
* SDS-C: přidány indexy 303 a 304 a 305&lt;br /&gt;
* SDS-C: přidán index 2198&lt;br /&gt;
&lt;br /&gt;
== 2.11.2023 ==&lt;br /&gt;
* oprava SNMP (způsob předávání chybových hodnot)&lt;br /&gt;
&lt;br /&gt;
== 6.2.2023 ==&lt;br /&gt;
* pouze SDS MICRO ST DP : nový výchozí firmware&lt;br /&gt;
&lt;br /&gt;
== 29.11.2022 ==&lt;br /&gt;
* SDS-C: přidán index 137&lt;br /&gt;
* dns_resolv hlásí chybu sítě (resp. odpojený ethernet) dříve&lt;br /&gt;
* oprava možného problému na sériové lince, kdy mohlo dojít k náhodnému malému zpoždění odeslání dat&lt;br /&gt;
&lt;br /&gt;
== 26.11.2022 ==&lt;br /&gt;
* SDS-C: oprava možného teoretického problému u funkce serialX_write při odesílání z pole ram[] (ostatní zdroje dat/pole problém neměly)&lt;br /&gt;
* SDS-C: přidány indexy 2811...2816 a 2861...2866 (statistiky COMx)&lt;br /&gt;
&lt;br /&gt;
== 4.8.2022 ==&lt;br /&gt;
* zlepšení funkce OneWire - další doplnění pro counterfeit čidla&lt;br /&gt;
* zlepšení funkce OneWire - odstranění náhodných výpadků pro čidla vlhkosti&lt;br /&gt;
* zlepšení funkce OneWire - širší prohledávání sběrnice (velká saturace neznámými čidly nevyčerpá počet kroků při hledání)&lt;br /&gt;
* opraveno hlášení o stavu (chybějící) konfigurace na úvodní webové stránce&lt;br /&gt;
* malá bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 1.7.2022 ==&lt;br /&gt;
* SDS umí číst teplotu i z counterfeit teplotních čidel (pozná je a přizpůsobí se jejich poškozené komunikaci)&lt;br /&gt;
* opravena chyba při výpisu teplot na webu (jinde to bylo OK), kdy v rozmezí -0.99 degC až 0.00 degC chyběl znak mínus&lt;br /&gt;
* funkční autorizovaný HTTP POST pro nahrání nového FW, SDSC, UserWeb, konfigurace a sdílených proměnných&lt;br /&gt;
* další drobné úpravy a opravy&lt;br /&gt;
&lt;br /&gt;
== 27.12.2021 ==&lt;br /&gt;
* HW: při poruše hlavního zdroje hodin (krystal) se použije záložní zdroj&lt;br /&gt;
* HW: využíváme RTC pro udržení času při přechodu přes reset (drží čas dokud zase nepřijde NTP)&lt;br /&gt;
* aktualizován bootloader (vyžaduje fyzické přeprogramování u výrobce) - umí znovu nahrát FW pokud se v SoC poškodí&lt;br /&gt;
&lt;br /&gt;
== 14.4.2021 ==&lt;br /&gt;
* oprava hodnot v sys 39 (0 vyp, 3 zap) &lt;br /&gt;
&lt;br /&gt;
== 13.4.2021 ==&lt;br /&gt;
* možnost ručního řízení (zap-vyp) aplikace automatiky LČ (zápis do sys 39) když je vypnutý NTP &lt;br /&gt;
&lt;br /&gt;
== 11.4.2021 ==&lt;br /&gt;
* možnost uživatelsky vypnout NTP klient a nastavovat čas přes SDS-C (sys 38 nebo sys 4), vhodné pro jiné zdroje času (LoRA, GSM, sběrnice, atd.). &lt;br /&gt;
&lt;br /&gt;
== 26.3.2021 ==&lt;br /&gt;
* SDS-C: oprava chování wait() v režimu sys[63]=128 (teď už čeká po správnou dobu, ne po kratší) &lt;br /&gt;
&lt;br /&gt;
== 12.3.2021 ==&lt;br /&gt;
* oprava COM1 a COM6 - chybně aktivní parita i když nebyla uživatelem nastavena; opraveno &lt;br /&gt;
&lt;br /&gt;
== 9.2.2021 ==&lt;br /&gt;
* SDS-C: oprava TID v MODBUS-TCP&lt;br /&gt;
* MBTC výpis rozšířen&lt;br /&gt;
* SDS-C: drobná úspora heap (více dostupného místa)&lt;br /&gt;
* SDS-C: dns resolv drobný fix&lt;br /&gt;
* SDS-C: http_get a http_post důležitý fix&lt;br /&gt;
* SDS-C: nová funkce http_close&lt;br /&gt;
* SDS-C: chyba -7 pro MODBUS-TCP a pro MQTT&lt;br /&gt;
* vylepšený algoritmus S0, rozšířené možnosti nastavení detektoru S0 (nastavení přidáno ve webovém rozhraní) &lt;br /&gt;
&lt;br /&gt;
== 10.1.2021 ==&lt;br /&gt;
* web: ruční přepnutí CBY pro relé (tzn. &amp;quot;kdo ovládá relé&amp;quot;), na &amp;quot;SDS-C&amp;quot;, dané relé nevypne (off) ale ponechá jeho stávající stav (on, off) &lt;br /&gt;
&lt;br /&gt;
== 5.1.2021 ==&lt;br /&gt;
* SDS-C: oprava textcmp()&lt;br /&gt;
* bezpečnostní oprava&lt;br /&gt;
* dřívější odeslání NTP požadavku po výpadku síťového spojení &lt;br /&gt;
&lt;br /&gt;
== 23.10.2020 ==&lt;br /&gt;
* SDS-C: oprava http_get/post: správná vyplnění výsledů i pro situaci kdy server ukončí spojení přes TCP RST&lt;br /&gt;
* web: oprava tempX.htm&lt;br /&gt;
* oprava ovládání PDx (při změně z webu se nesáhne na ostatní bity nastavené např. ze SDS-C) &lt;br /&gt;
&lt;br /&gt;
== 20.9.2020 ==&lt;br /&gt;
* zvýšení odolnosti na výpadky komunkace (crc chyby) na OneWire sběrnici &lt;br /&gt;
&lt;br /&gt;
== 4.8.2020 ==&lt;br /&gt;
* drobné opravy a optimalizace&lt;br /&gt;
* IO6-ST: oprava detekce eth &lt;br /&gt;
&lt;br /&gt;
== 18.7.2020 ==&lt;br /&gt;
* SDS-C: SMTP klient správně zvládne i servery které (chybně) nereagují potvrzením na předání těla emailu&lt;br /&gt;
* SDS-C: http klient upraven (zvýšena odolnost na výpadky spojení se serverem, upraveny timeouty) &lt;br /&gt;
&lt;br /&gt;
== 27.6.2020 (jen MICRO-ST) ==&lt;br /&gt;
* oprava možného okrajového problému s nečitelnými AD vstupy &lt;br /&gt;
&lt;br /&gt;
== 26.6.2020 ==&lt;br /&gt;
* různé drobky/opravy dle hlášení uživatelů a testů&lt;br /&gt;
* plně otestovaný MODBUS klient a MQTT klient&lt;br /&gt;
* audit log &lt;br /&gt;
&lt;br /&gt;
== 20.6.2020 ==&lt;br /&gt;
* SDS-C verze 09: přidáno http_post()&lt;br /&gt;
* MODBUS-TCP klient&lt;br /&gt;
* doladění MQTT klienta &lt;br /&gt;
&lt;br /&gt;
== 14.6.2020 ==&lt;br /&gt;
* SDS-C verze 09&lt;br /&gt;
* MQTT klient&lt;br /&gt;
* podpora pro modul SDS-1W-T-RH (rovnice pro HIH-5031)&lt;br /&gt;
* různé opravy (podle ostatních SDS) &lt;br /&gt;
&lt;br /&gt;
== 15.11.2019 ==&lt;br /&gt;
* oprava přehozených AD3 a AD4 &lt;br /&gt;
&lt;br /&gt;
== 14.11.2019 ==&lt;br /&gt;
* první vydání FW pro SDS MICRO ST&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_MINI:_ST:_firmware_changelog&amp;diff=975</id>
		<title>SDS MINI: ST: firmware changelog</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_MINI:_ST:_firmware_changelog&amp;diff=975"/>
		<updated>2025-11-15T14:24:34Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SDS-MINI ST a SDS-TTCPRO ST ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
Tato stránka se věnuje změnám ve firmware a v HW pro výrobek SDS-MINI ST a pro SDS-TTCPRO ST.&lt;br /&gt;
&lt;br /&gt;
Změny jsou seřazeny tak, že nejnovější verze (která je stáhnutelná z webu) je popsána jako první.&lt;br /&gt;
&lt;br /&gt;
Proč je vydáván nový firmware? Protože operativně řešíme požadavky uživatelů, a jsou doplňovány nové funkce.&lt;br /&gt;
&lt;br /&gt;
Firmware poskytujeme zcela zadarmo po celou dobu životnosti výrobku. Děláme to vše pro Vás.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 15.11.2025 ==&lt;br /&gt;
* přepracována interní DNS cache - pro funkci dns_resolv() - zprovozněno TTL&lt;br /&gt;
* SDS-C: přidány indexy 303 a 304 a 305&lt;br /&gt;
* SDS-C: přidán index 2198&lt;br /&gt;
&lt;br /&gt;
== 2.11.2023 ==&lt;br /&gt;
* oprava SNMP (způsob předávání chybových hodnot)&lt;br /&gt;
&lt;br /&gt;
== 29.11.2022 ==&lt;br /&gt;
* SDS-C: přidán index 137&lt;br /&gt;
* dns_resolv hlásí chybu sítě (resp. odpojený ethernet) dříve&lt;br /&gt;
* oprava možného problému na sériové lince, kdy mohlo dojít k náhodnému malému zpoždění odeslání dat&lt;br /&gt;
&lt;br /&gt;
== 26.11.2022 ==&lt;br /&gt;
* SDS-C: oprava možného teoretického problému u funkce serialX_write při odesílání z pole ram[] (ostatní zdroje dat/pole problém neměly)&lt;br /&gt;
* SDS-C: přidány indexy 2811...2816 a 2861...2866 (statistiky COMx)&lt;br /&gt;
&lt;br /&gt;
== 4.8.2022 ==&lt;br /&gt;
* zlepšení funkce OneWire - další doplnění pro counterfeit čidla&lt;br /&gt;
* zlepšení funkce OneWire - odstranění náhodných výpadků pro čidla vlhkosti&lt;br /&gt;
* zlepšení funkce OneWire - širší prohledávání sběrnice (velká saturace neznámými čidly nevyčerpá počet kroků při hledání)&lt;br /&gt;
* opraveno hlášení o stavu (chybějící) konfigurace na úvodní webové stránce&lt;br /&gt;
* malá bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 1.7.2022 ==&lt;br /&gt;
* SDS umí číst teplotu i z counterfeit teplotních čidel (pozná je a přizpůsobí se jejich poškozené komunikaci)&lt;br /&gt;
* opravena chyba při výpisu teplot na webu (jinde to bylo OK), kdy v rozmezí -0.99 degC až 0.00 degC chyběl znak mínus&lt;br /&gt;
* funkční autorizovaný HTTP POST pro nahrání nového FW, SDSC, UserWeb, konfigurace a sdílených proměnných&lt;br /&gt;
* další drobné úpravy a opravy&lt;br /&gt;
&lt;br /&gt;
== 27.12.2021 ==&lt;br /&gt;
* HW: při poruše hlavního zdroje hodin (krystal) se použije záložní zdroj&lt;br /&gt;
* HW: využíváme RTC pro udržení času při přechodu přes reset (drží čas dokud zase nepřijde NTP)&lt;br /&gt;
* aktualizován bootloader (vyžaduje fyzické přeprogramování u výrobce) - umí znovu nahrát FW pokud se v SoC poškodí&lt;br /&gt;
&lt;br /&gt;
== 14.4.2021 ==&lt;br /&gt;
* oprava hodnot v sys 39 (0 vyp, 3 zap)&lt;br /&gt;
&lt;br /&gt;
== 13.4.2021 ==&lt;br /&gt;
* možnost ručního řízení (zap-vyp) aplikace automatiky LČ (zápis do sys 39) když je vypnutý NTP&lt;br /&gt;
&lt;br /&gt;
== 11.4.2021 ==&lt;br /&gt;
* možnost uživatelsky vypnout NTP klient a nastavovat čas přes SDS-C (sys 38 nebo sys 4), vhodné pro jiné zdroje času (LoRA, GSM, sběrnice, atd.).&lt;br /&gt;
&lt;br /&gt;
== 26.3.2021 ==&lt;br /&gt;
* SDS-C: oprava chování wait() v režimu sys[63]=128 (teď už čeká po správnou dobu, ne po kratší)&lt;br /&gt;
&lt;br /&gt;
== 12.3.2021 ==&lt;br /&gt;
* oprava COM1 a COM6 - chybně aktivní parita i když nebyla uživatelem nastavena; opraveno&lt;br /&gt;
&lt;br /&gt;
== 9.2.2021 ==&lt;br /&gt;
* SDS-C: oprava TID v MODBUS-TCP&lt;br /&gt;
* MBTC výpis rozšířen&lt;br /&gt;
* SDS-C: drobná úspora heap (více dostupného místa)&lt;br /&gt;
* SDS-C: dns resolv drobný fix&lt;br /&gt;
* SDS-C: http_get a http_post důležitý fix&lt;br /&gt;
* SDS-C: nová funkce http_close&lt;br /&gt;
* SDS-C: chyba -7 pro MODBUS-TCP a pro MQTT&lt;br /&gt;
* vylepšený algoritmus S0, rozšířené možnosti nastavení detektoru S0 (nastavení přidáno ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 10.1.2021 ==&lt;br /&gt;
* web: ruční přepnutí CBY pro relé (tzn. &amp;quot;kdo ovládá relé&amp;quot;), na &amp;quot;SDS-C&amp;quot;, dané relé nevypne (off) ale ponechá jeho stávající stav (on, off) &lt;br /&gt;
&lt;br /&gt;
== 5.1.2021 ==&lt;br /&gt;
* SDS-C: oprava textcmp()&lt;br /&gt;
* bezpečnostní oprava&lt;br /&gt;
* dřívější odeslání NTP požadavku po výpadku síťového spojení &lt;br /&gt;
&lt;br /&gt;
== 23.10.2020 ==&lt;br /&gt;
* SDS-C: oprava http_get/post: správná vyplnění výsledů i pro situaci kdy server ukončí spojení přes TCP RST&lt;br /&gt;
* web: oprava tempX.htm&lt;br /&gt;
* oprava ovládání PDx (při změně z webu se nesáhne na ostatní bity nastavené např. ze SDS-C)&lt;br /&gt;
&lt;br /&gt;
== 20.9.2020 ==&lt;br /&gt;
* zvýšení odolnosti na výpadky komunikace (crc chyby) na OneWire sběrnici&lt;br /&gt;
&lt;br /&gt;
== 4.8.2020 ==&lt;br /&gt;
* drobné opravy a optimalizace&lt;br /&gt;
&lt;br /&gt;
== 18.7.2020 ==&lt;br /&gt;
* SDS-C: SMTP klient správně zvládne i servery které (chybně) nereagují potvrzením na předání těla emailu&lt;br /&gt;
* SDS-C: http klient upraven (zvýšena odolnost na výpadky spojení se serverem, upraveny timeouty)&lt;br /&gt;
&lt;br /&gt;
== 27.6.2020 (jen MINI) == &lt;br /&gt;
* oprava možného okrajového problému s nečitelnými AD vstupy&lt;br /&gt;
&lt;br /&gt;
== 26.6.2020 ==&lt;br /&gt;
* různé drobky/opravy dle hlášení uživatelů a testů&lt;br /&gt;
* plně otestovaný MODBUS klient a MQTT klient&lt;br /&gt;
* audit log&lt;br /&gt;
&lt;br /&gt;
== 20.6.2020 ==&lt;br /&gt;
* SDS-C verze 09: přidáno http_post()&lt;br /&gt;
* MODBUS-TCP klient&lt;br /&gt;
* doladění MQTT klienta&lt;br /&gt;
&lt;br /&gt;
== 14.6.2020 ==&lt;br /&gt;
* SDS-C verze 09&lt;br /&gt;
* MQTT klient&lt;br /&gt;
* podpora pro modul SDS-1W-T-RH (rovnice pro HIH-5031) &lt;br /&gt;
* různé opravy (podle ostatních SDS)&lt;br /&gt;
&lt;br /&gt;
== 14.11.2019 ==&lt;br /&gt;
* relé lze z webového rozhraní aktivovat i v režimu OneShot&lt;br /&gt;
* SDS-C: emailový klient odesílá i platný datum v hlavičce emailu (je-li v SDS k dispozici platný čas) &lt;br /&gt;
&lt;br /&gt;
== 17.2.2019 ==&lt;br /&gt;
* oprava v ovládání PDx GPIO ze SDS-C (je to teď zcela shodné s TTCPRO)&lt;br /&gt;
&lt;br /&gt;
== 12.1.2019 ==&lt;br /&gt;
* optimalizace webového serveru (množství přenášenyćh dat sníženo až o polovinu, bez změny funkce) - ocení se to zejména při přenosu po úzkých linkách (např. gprs, modemy)&lt;br /&gt;
&lt;br /&gt;
== 4.1.2019 ==&lt;br /&gt;
* překlopena beta do oficiálního vydání&lt;br /&gt;
* SDS-C: verze 08 (pole share[], nové položky v sys[], nové sds-c funkce)&lt;br /&gt;
* watchdog sds-c programu&lt;br /&gt;
* COM6 je k dispozici&lt;br /&gt;
&lt;br /&gt;
== 1.7.2018 ==&lt;br /&gt;
* SDS-C: přidán sys 183 poskytující datum vydání FW který je právě nahrán v SDS &lt;br /&gt;
* opraven možný výpadek vysílání na ETH (opraveno stejně jako pro TTCPRO)&lt;br /&gt;
* SNMP: sdsS0translatedUnitT0,1 je poskytováno jako hodnota od odečtu (ne od úplného začátku měření, jak to bylo předtím) &lt;br /&gt;
&lt;br /&gt;
== 8.3.2018 ==&lt;br /&gt;
* oprava echo.htm - zobrazuje se&lt;br /&gt;
* oprava echo.htm - správně wrapuje obsah, a nejsou tam nadbytečné 0x00&lt;br /&gt;
* vhodnější řešení rexmitu částí webových stránek a dynamických dat (ocení to zejména uživatelé s mobilním připojením pro SDS)&lt;br /&gt;
&lt;br /&gt;
== 2.3.2018 ==&lt;br /&gt;
* aktualizace a oprava ve výpočtu &amp;quot;aktuálního výkonu&amp;quot; pro okrajové situace (např. krajní hodnoty impulsní konstanty)&lt;br /&gt;
&lt;br /&gt;
== 18.1.2018 ==&lt;br /&gt;
&lt;br /&gt;
* měření AD vstupů funguje&lt;br /&gt;
&lt;br /&gt;
== 18.12.2017 ==&lt;br /&gt;
&lt;br /&gt;
* zvýšena stabilita spuštění po zapnutí&lt;br /&gt;
&lt;br /&gt;
== 18.12.2017 ==&lt;br /&gt;
&lt;br /&gt;
* výchozí firmware (MINI odpovídá obsahem TTCPRO 18.12.2017)&lt;br /&gt;
* měření AD vstupů je v tomto vydání vypnuto (použijte novější FW)&lt;br /&gt;
* COM6 je vypnut (bude zapnut v příštím vydání)&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_MICRO:_ST:_firmware_changelog&amp;diff=974</id>
		<title>SDS MICRO: ST: firmware changelog</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_MICRO:_ST:_firmware_changelog&amp;diff=974"/>
		<updated>2025-11-15T14:23:40Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SDS-MICRO ST / SDS-MICRO ST DP / SDS-IO6 ST ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
Tato stránka se věnuje změnám ve firmware a v HW pro výrobek '''SDS MICRO ST''' a '''SDS MICRO ST DP''' a '''SDS IO6 ST'''.&lt;br /&gt;
&lt;br /&gt;
Změny jsou seřazeny tak, že nejnovější verze (která je stáhnutelná z webu) je popsána jako první.&lt;br /&gt;
&lt;br /&gt;
Proč je vydáván nový firmware? Protože operativně řešíme požadavky uživatelů, a jsou doplňovány nové funkce.&lt;br /&gt;
&lt;br /&gt;
Firmware poskytujeme zcela zadarmo po celou dobu životnosti výrobku. Děláme to vše pro Vás.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 15.11.2025 ==&lt;br /&gt;
* přepracována interní DNS cache - pro funkci dns_resolv() - zprovozněno TTL&lt;br /&gt;
* SDS-C: přidány indexy 303 a 304 a 305&lt;br /&gt;
* SDS-C: přidán indexy 2198&lt;br /&gt;
&lt;br /&gt;
== 2.11.2023 ==&lt;br /&gt;
* oprava SNMP (způsob předávání chybových hodnot)&lt;br /&gt;
&lt;br /&gt;
== 6.2.2023 ==&lt;br /&gt;
* pouze SDS MICRO ST DP : nový výchozí firmware&lt;br /&gt;
&lt;br /&gt;
== 29.11.2022 ==&lt;br /&gt;
* SDS-C: přidán index 137&lt;br /&gt;
* dns_resolv hlásí chybu sítě (resp. odpojený ethernet) dříve&lt;br /&gt;
* oprava možného problému na sériové lince, kdy mohlo dojít k náhodnému malému zpoždění odeslání dat&lt;br /&gt;
&lt;br /&gt;
== 26.11.2022 ==&lt;br /&gt;
* SDS-C: oprava možného teoretického problému u funkce serialX_write při odesílání z pole ram[] (ostatní zdroje dat/pole problém neměly)&lt;br /&gt;
* SDS-C: přidány indexy 2811...2816 a 2861...2866 (statistiky COMx)&lt;br /&gt;
&lt;br /&gt;
== 4.8.2022 ==&lt;br /&gt;
* zlepšení funkce OneWire - další doplnění pro counterfeit čidla&lt;br /&gt;
* zlepšení funkce OneWire - odstranění náhodných výpadků pro čidla vlhkosti&lt;br /&gt;
* zlepšení funkce OneWire - širší prohledávání sběrnice (velká saturace neznámými čidly nevyčerpá počet kroků při hledání)&lt;br /&gt;
* opraveno hlášení o stavu (chybějící) konfigurace na úvodní webové stránce&lt;br /&gt;
* malá bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 1.7.2022 ==&lt;br /&gt;
* SDS umí číst teplotu i z counterfeit teplotních čidel (pozná je a přizpůsobí se jejich poškozené komunikaci)&lt;br /&gt;
* opravena chyba při výpisu teplot na webu (jinde to bylo OK), kdy v rozmezí -0.99 degC až 0.00 degC chyběl znak mínus&lt;br /&gt;
* funkční autorizovaný HTTP POST pro nahrání nového FW, SDSC, UserWeb, konfigurace a sdílených proměnných&lt;br /&gt;
* další drobné úpravy a opravy&lt;br /&gt;
&lt;br /&gt;
== 27.12.2021 ==&lt;br /&gt;
* HW: při poruše hlavního zdroje hodin (krystal) se použije záložní zdroj&lt;br /&gt;
* HW: využíváme RTC pro udržení času při přechodu přes reset (drží čas dokud zase nepřijde NTP)&lt;br /&gt;
* aktualizován bootloader (vyžaduje fyzické přeprogramování u výrobce) - umí znovu nahrát FW pokud se v SoC poškodí&lt;br /&gt;
&lt;br /&gt;
== 14.4.2021 ==&lt;br /&gt;
* oprava hodnot v sys 39 (0 vyp, 3 zap) &lt;br /&gt;
&lt;br /&gt;
== 13.4.2021 ==&lt;br /&gt;
* možnost ručního řízení (zap-vyp) aplikace automatiky LČ (zápis do sys 39) když je vypnutý NTP &lt;br /&gt;
&lt;br /&gt;
== 11.4.2021 ==&lt;br /&gt;
* možnost uživatelsky vypnout NTP klient a nastavovat čas přes SDS-C (sys 38 nebo sys 4), vhodné pro jiné zdroje času (LoRA, GSM, sběrnice, atd.). &lt;br /&gt;
&lt;br /&gt;
== 26.3.2021 ==&lt;br /&gt;
* SDS-C: oprava chování wait() v režimu sys[63]=128 (teď už čeká po správnou dobu, ne po kratší) &lt;br /&gt;
&lt;br /&gt;
== 12.3.2021 ==&lt;br /&gt;
* oprava COM1 a COM6 - chybně aktivní parita i když nebyla uživatelem nastavena; opraveno &lt;br /&gt;
&lt;br /&gt;
== 9.2.2021 ==&lt;br /&gt;
* SDS-C: oprava TID v MODBUS-TCP&lt;br /&gt;
* MBTC výpis rozšířen&lt;br /&gt;
* SDS-C: drobná úspora heap (více dostupného místa)&lt;br /&gt;
* SDS-C: dns resolv drobný fix&lt;br /&gt;
* SDS-C: http_get a http_post důležitý fix&lt;br /&gt;
* SDS-C: nová funkce http_close&lt;br /&gt;
* SDS-C: chyba -7 pro MODBUS-TCP a pro MQTT&lt;br /&gt;
* vylepšený algoritmus S0, rozšířené možnosti nastavení detektoru S0 (nastavení přidáno ve webovém rozhraní) &lt;br /&gt;
&lt;br /&gt;
== 10.1.2021 ==&lt;br /&gt;
* web: ruční přepnutí CBY pro relé (tzn. &amp;quot;kdo ovládá relé&amp;quot;), na &amp;quot;SDS-C&amp;quot;, dané relé nevypne (off) ale ponechá jeho stávající stav (on, off) &lt;br /&gt;
&lt;br /&gt;
== 5.1.2021 ==&lt;br /&gt;
* SDS-C: oprava textcmp()&lt;br /&gt;
* bezpečnostní oprava&lt;br /&gt;
* dřívější odeslání NTP požadavku po výpadku síťového spojení &lt;br /&gt;
&lt;br /&gt;
== 23.10.2020 ==&lt;br /&gt;
* SDS-C: oprava http_get/post: správná vyplnění výsledů i pro situaci kdy server ukončí spojení přes TCP RST&lt;br /&gt;
* web: oprava tempX.htm&lt;br /&gt;
* oprava ovládání PDx (při změně z webu se nesáhne na ostatní bity nastavené např. ze SDS-C) &lt;br /&gt;
&lt;br /&gt;
== 20.9.2020 ==&lt;br /&gt;
* zvýšení odolnosti na výpadky komunkace (crc chyby) na OneWire sběrnici &lt;br /&gt;
&lt;br /&gt;
== 4.8.2020 ==&lt;br /&gt;
* drobné opravy a optimalizace&lt;br /&gt;
* IO6-ST: oprava detekce eth &lt;br /&gt;
&lt;br /&gt;
== 18.7.2020 ==&lt;br /&gt;
* SDS-C: SMTP klient správně zvládne i servery které (chybně) nereagují potvrzením na předání těla emailu&lt;br /&gt;
* SDS-C: http klient upraven (zvýšena odolnost na výpadky spojení se serverem, upraveny timeouty) &lt;br /&gt;
&lt;br /&gt;
== 27.6.2020 (jen MICRO-ST) ==&lt;br /&gt;
* oprava možného okrajového problému s nečitelnými AD vstupy &lt;br /&gt;
&lt;br /&gt;
== 26.6.2020 ==&lt;br /&gt;
* různé drobky/opravy dle hlášení uživatelů a testů&lt;br /&gt;
* plně otestovaný MODBUS klient a MQTT klient&lt;br /&gt;
* audit log &lt;br /&gt;
&lt;br /&gt;
== 20.6.2020 ==&lt;br /&gt;
* SDS-C verze 09: přidáno http_post()&lt;br /&gt;
* MODBUS-TCP klient&lt;br /&gt;
* doladění MQTT klienta &lt;br /&gt;
&lt;br /&gt;
== 14.6.2020 ==&lt;br /&gt;
* SDS-C verze 09&lt;br /&gt;
* MQTT klient&lt;br /&gt;
* podpora pro modul SDS-1W-T-RH (rovnice pro HIH-5031)&lt;br /&gt;
* různé opravy (podle ostatních SDS) &lt;br /&gt;
&lt;br /&gt;
== 15.11.2019 ==&lt;br /&gt;
* oprava přehozených AD3 a AD4 &lt;br /&gt;
&lt;br /&gt;
== 14.11.2019 ==&lt;br /&gt;
* první vydání FW pro SDS MICRO ST&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_MICRO:_LM:_firmware_changelog&amp;diff=973</id>
		<title>SDS MICRO: LM: firmware changelog</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_MICRO:_LM:_firmware_changelog&amp;diff=973"/>
		<updated>2025-11-15T14:23:05Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SDS-MICRO LM / SDS-IO6 LM ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
Tato stránka se věnuje změnám ve firmware a v HW pro výrobek SDS MICRO LM (všechny jeho varianty) a SDS IO6 LM.&lt;br /&gt;
&lt;br /&gt;
Změny jsou seřazeny tak, že nejnovější verze (která je stáhnutelná z webu) je popsána jako první.&lt;br /&gt;
&lt;br /&gt;
Proč je vydáván nový firmware? Protože operativně řešíme požadavky uživatelů, a jsou doplňovány nové funkce.&lt;br /&gt;
&lt;br /&gt;
Firmware poskytujeme zcela zadarmo po celou dobu životnosti výrobku. Děláme to vše pro Vás.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 15.11.2025 ==&lt;br /&gt;
* přepracována interní DNS cache - pro funkci dns_resolv() - zprovozněno TTL&lt;br /&gt;
* SDS-C: přidány indexy 303 a 304 a 305&lt;br /&gt;
* SDS-C: přidán indexy 2198&lt;br /&gt;
&lt;br /&gt;
== 1.7.2022 ==&lt;br /&gt;
* opravena chyba při výpisu teplot na webu (jinde to bylo OK), kdy v rozmezí -0.99 degC až 0.00 degC chyběl znak mínus&lt;br /&gt;
* obsluha času: možnost zápisu do sys[4], sys[39]&lt;br /&gt;
* IO6: doplněny další možné vstupní typy do funkcí itoa/itoh (MICRO už to mělo)&lt;br /&gt;
* IO6: možnost zakázat NTP (MICRO už to mělo)&lt;br /&gt;
&lt;br /&gt;
== 28.6.2021 ==&lt;br /&gt;
* IO6: web: oprava oneshotreset&lt;br /&gt;
* IO6: web: přepnutí relé (CBY) na SDS-C ponechá stav relé (zap/vyp) (předtím to natvrdo dalo vyp, což nebylo správně)&lt;br /&gt;
&lt;br /&gt;
== 26.3.2021 ==&lt;br /&gt;
* SDS-C: oprava chování wait() v režimu sys[63]=128 (teď už čeká po správnou dobu, ne po kratší)&lt;br /&gt;
&lt;br /&gt;
== 9.2.2021 ==&lt;br /&gt;
* SDS-C: dns resolv drobný fix&lt;br /&gt;
* SDS-C: http_get a http_post drobný fix&lt;br /&gt;
* SDS-C: nová funkce http_close&lt;br /&gt;
* SDS-C: chyba -7 pro MODBUS-TCP a pro MQTT&lt;br /&gt;
&lt;br /&gt;
== 5.1.2021 ==&lt;br /&gt;
* SDS-C: oprava textcmp()&lt;br /&gt;
* bezpečnostní oprava&lt;br /&gt;
* dřívější odeslání NTP požadavku po výpadku síťového spojení &lt;br /&gt;
&lt;br /&gt;
== 23.10.2020 ==&lt;br /&gt;
* SDS-C: oprava http_get/post: správná vyplnění výsledů i pro situaci kdy server ukončí spojení přes TCP RST&lt;br /&gt;
&lt;br /&gt;
== 4.8.2020 ==&lt;br /&gt;
* SNMP fix - správná hodnota ve .5.13 až .5.16&lt;br /&gt;
* drobné opravy a optimalizace&lt;br /&gt;
&lt;br /&gt;
== 18.7.2020 ==&lt;br /&gt;
* SDS-C: SMTP klient správně zvládne i servery které (chybně) nereagují potvrzením na předání těla emailu&lt;br /&gt;
* SDS-C: http klient upraven (zvýšena odolnost na výpadky spojení se serverem, upraveny timeouty)&lt;br /&gt;
&lt;br /&gt;
== 27.6.2020 (jen MICRO) ==&lt;br /&gt;
* oprava nestartování předchozí verze FW na některých specifických typech HW varianty SDS-MICRO-x&lt;br /&gt;
&lt;br /&gt;
== 26.6.2020 ==&lt;br /&gt;
* SDS-C 09: http_post()&lt;br /&gt;
* MQTT klient&lt;br /&gt;
* různé drobky/opravy dle hlášení uživatelů a testů&lt;br /&gt;
&lt;br /&gt;
== 11.5.2020 ==&lt;br /&gt;
* oprava Content-Length pro CSS soubor (problém s Chrome)&lt;br /&gt;
* oprava chování při odpojeném SDS-1W-T-RH&lt;br /&gt;
&lt;br /&gt;
== 20.4.2020 ==&lt;br /&gt;
* podpora pro modul SDS-1W-T-RH (rovnice pro HIH-5031)&lt;br /&gt;
&lt;br /&gt;
== 15.4.2020 ==&lt;br /&gt;
* implementován SDS Audit Log&lt;br /&gt;
* zvýšená ochrana proti brute-force hledání vstupního hesla&lt;br /&gt;
&lt;br /&gt;
== 14.11.2019 ==&lt;br /&gt;
* drobný bugfix pro S0 (způsob zobrazování aktuálního výkonu)&lt;br /&gt;
* relé lze z webového rozhraní aktivovat i v režimu OneShot&lt;br /&gt;
* SDS-C: emailový klient odesílá i platný datum v hlavičce emailu (je-li v SDS k dispozici platný čas) &lt;br /&gt;
&lt;br /&gt;
== 17.1.2019 ==&lt;br /&gt;
* bugfix SDS-C watchdogu&lt;br /&gt;
&lt;br /&gt;
== 12.1.2019 ==&lt;br /&gt;
* optimalizace webového serveru (množství přenášenyćh dat sníženo až o polovinu, bez změny funkce) - ocení se to zejména při přenosu po úzkých linkách (např. gprs, modemy) &lt;br /&gt;
&lt;br /&gt;
== 4.1.2019 ==&lt;br /&gt;
* překlopena beta do oficiálního vydání&lt;br /&gt;
* SDS-C: verze 08 (pole share[], nové položky v sys[], nové sds-c funkce)&lt;br /&gt;
* watchdog sds-c programu&lt;br /&gt;
&lt;br /&gt;
== 1.7.2018 ==&lt;br /&gt;
* SDS-C: přidán sys 183 poskytující datum vydání FW který je právě nahrán v SDS&lt;br /&gt;
&lt;br /&gt;
== 30.3.2018 ==&lt;br /&gt;
* oprava funkce zápisu prázdného řetězce do názvu 1-Wire teploměru (&amp;quot;smazání názvu&amp;quot; uživatelem) &lt;br /&gt;
* M2M: hodnota okamžitého výkonu pro S0 vstupy je vždy číslo+jednotka, zatímco text 'čekám...' je už jen pouze na s0.htm&lt;br /&gt;
* SNMP: sdsS0translatedUnitT0,1 je poskytováno jako hodnota od odečtu (ne od úplného začátku měření, jak to bylo předtím)&lt;br /&gt;
* drobná oprava při změně nastavení S0, teď se to ihned provede (v okrajových případech bylo někdy potřeba pro načtení změn SDS restartovat, teď už ne).&lt;br /&gt;
&lt;br /&gt;
== 12.3.2018 ==&lt;br /&gt;
* oprava měření na S0 vstupech (některé vstupy se starším FW nemusely být, v určitých okrajových situacích, plně funkční)&lt;br /&gt;
&lt;br /&gt;
== 8.3.2018 ==&lt;br /&gt;
* oprava echo.htm - zobrazuje se&lt;br /&gt;
* oprava echo.htm - správně wrapuje obsah, a nejsou tam nadbytečné 0x00&lt;br /&gt;
* vhodnější řešení rexmitu částí webových stránek a dynamických dat (ocení to zejména uživatelé s mobilním připojením pro SDS)&lt;br /&gt;
&lt;br /&gt;
== 2.3.2018 ==&lt;br /&gt;
* aktulizace a oprava ve výpočtu &amp;quot;aktuálního výkonu&amp;quot; pro okrajové situace (např. krajní hodnoty impulsní konstanty)&lt;br /&gt;
&lt;br /&gt;
== 18.12.2017 ==&lt;br /&gt;
* možnost automického přepínání &amp;quot;letní/zimní&amp;quot; čas (CEST/CET time) byla při &amp;quot;změně času&amp;quot; ověřena a je funkční jak má být&lt;br /&gt;
* správný zápis pouze do T0 pro všechny S0 vstupy, které nemají aktivované tarifní rozdělení (bez ohledu na stav tarifního vstupu)&lt;br /&gt;
* zámek 1-W pozice se ukládá do pevné paměti (při stisku tlačítka na webovém rozhraní)&lt;br /&gt;
* vylepšení v oblasti VCP (telnet pro sériovou linku) - spolehlivější&lt;br /&gt;
* zpřesněny prvky ochrany S0 stránek heslem (SDS lépe volí kdy a jak blokovat přístup na jednotlivé eX a S0 stránky)&lt;br /&gt;
* UserWEB projekt má opravenu chybu, kdy nebylo možno použít delší Name Chain tabulku (tedy lze už vložit mnohem více souborů)&lt;br /&gt;
&lt;br /&gt;
== 23.10.2017 ==&lt;br /&gt;
* hlavní nová funkce: přidána volitelná funkce (checkbox ve webovém rozhraní) pro plně automatickou volbu Letního Času (SELČ - aplikovatelné napříč Evropou)&lt;br /&gt;
* další podstatná úprava: doplnění dalších testů na timeout při OSI7 funkcích (např. http_get) - tzn. test na více místech, který má zabránít zablokování funkce (1029) když selže spojení na server (vyhlásí novou chybu 1030 a odblokuje se).&lt;br /&gt;
* přidány SNMP položky (OID) pro text &amp;quot;ADC jednotka&amp;quot; (pro každý AD vstup).&lt;br /&gt;
* drobné bugfixy a zvýšení spolehlivosti, podle průběžných hlášení uživatelů (např. mírně zvětšeny RX a TX vyrovnávací paměti pro COM1 sériový port, atd.).&lt;br /&gt;
* SDS-C: přidán sys[4], sys[11], sys[38], sys[39]&lt;br /&gt;
* SDS-C: sys[4] = local-time&lt;br /&gt;
* SDS-C: sys[11] = vždy &amp;quot;správné&amp;quot; číslo dne v týdnu&lt;br /&gt;
* SDS-C: sys[38] = utc-time&lt;br /&gt;
* SDS-C: sys[39] = stav automatiky přepínání CEST/CET času&lt;br /&gt;
&lt;br /&gt;
== 10.8.2017 ==&lt;br /&gt;
* SDS-C: zvýšena verze na hodnotu 07 (funguje i pro výrobky s EEPROM tak pro výrobky s NVM-DF)&lt;br /&gt;
* SDS-C: přidány nové sys[] položky (indexy 1792 až 2047)&lt;br /&gt;
* SDS-C: optimalizovaná cache pro velké programy&lt;br /&gt;
* SDS-C: maximální počet proměnných zvýšen na 144&lt;br /&gt;
* SDS-C: maximální počet procesů (procedur) zvýšen na 96&lt;br /&gt;
* SDS-C: hloubka zásobníku (stacku) zvýšena na 24&lt;br /&gt;
* vydán nový odpovídající SDSC.exe&lt;br /&gt;
&lt;br /&gt;
== 3.8.2017 ==&lt;br /&gt;
* oprava chyby kdy se po každém spuštění systému mohla ztratit část S0 konfigurace (nastavení tarifního vstupu)&lt;br /&gt;
&lt;br /&gt;
== 18.4.2017 ==&lt;br /&gt;
* (nová funkčnost) použití UserWEB Projektu&lt;br /&gt;
* oprava v echo() pro zápis do sériové linky (uart)&lt;br /&gt;
* drobné ale důležité fixy v html stránkách (texty, vzhled)&lt;br /&gt;
* nové NTP dotazy lze aktivovat i z SDS-C programu (viz aktualizovaný seznam sys)&lt;br /&gt;
&lt;br /&gt;
== 24.11.2016 ==&lt;br /&gt;
* opraven chybně zpracovaný vstup při zadávání nastavení parametrů S0 vstupu (hodnota &amp;quot;minimální délka impulsu&amp;quot; byla špatně zpracována a uložena)&lt;br /&gt;
&lt;br /&gt;
== 28.3.2016 ==&lt;br /&gt;
* impulse counter lze z webu zadat do plných 32 bitů, původně jen 31 bitů&lt;br /&gt;
* další drobné opravy&lt;br /&gt;
&lt;br /&gt;
== 26.3.2016 ==&lt;br /&gt;
* oprava chybného zpracování RFC2217 příkazu pro změnu BaudRate (zpracoval se jen poslední byte místo celého dwordu, teď opraveno)&lt;br /&gt;
&lt;br /&gt;
== 23.2.2016 ==&lt;br /&gt;
* oprava nefunkčního zápisu pomocí SNMP (několik předchozích verzí, teď opraveno)&lt;br /&gt;
&lt;br /&gt;
== 5.2.2016 ==&lt;br /&gt;
* oprava funkce RSTD - rozšíření funkce RSTD: krátký zkrat (approx 1 sec) po zapnutí spustí BL (zařízení čeká na nový firmware), zatímco dlouhý zkrat (déle než 3 sec) spustí aplikaci a současně vymaže nastavení (set to Factory Defaults)&lt;br /&gt;
* možnost vyhledávat všechny zařízení SDS na subnetu pomocí rozšířené funkce (Find a SDS) v EXE aplikaci (např. když ztratíte IP adresu do webového rozhraní a potřebujete se na SDS připojit)&lt;br /&gt;
&lt;br /&gt;
== 15.11.2015 ==&lt;br /&gt;
* důležité opravy&lt;br /&gt;
&lt;br /&gt;
== 3.7.2015 ==&lt;br /&gt;
* vylepšený DHCP client&lt;br /&gt;
* řada oprav podle průběžného testování&lt;br /&gt;
&lt;br /&gt;
== 2.4.2015 ==&lt;br /&gt;
* veškeré opravy od posledního vydání (viz průběh BETA testů)&lt;br /&gt;
* významně zvýšena spolehlivost a stabilita při síťové zátěži (Eth. komunikace)&lt;br /&gt;
* SDS-C: přidáno sys[193]&lt;br /&gt;
* SDS-C: přidáno sys[37]&lt;br /&gt;
* SDS-C: přidáno sys[139]&lt;br /&gt;
* SDS-C: možnost zápisu do sys[4]&lt;br /&gt;
* SNMP TRAP předává plný OID (dosud dával jen OID useknutný za E.ID)&lt;br /&gt;
&lt;br /&gt;
== 9.9.2014 ==&lt;br /&gt;
* opravena chyba pro sys[64]==1 (vnitřním zaokrouhlením to skočilo na nulu)&lt;br /&gt;
&lt;br /&gt;
== 17.8.2014 ==&lt;br /&gt;
* přidána možnost použít get_var[index] pro čtení vnitřních proměnných v SDS-C přes web&lt;br /&gt;
* SNMP: umožňuje zápis do všech položek přes &amp;quot;Counter32&amp;quot; (nová záležitost) a původní &amp;quot;Integer&amp;quot; typ&lt;br /&gt;
* SNMP: přidána možnost zápisu do položek S0-impulse-counter (T0 a T1)&lt;br /&gt;
* RS485: při vysílání je budič aktivní max 1msec (nebo méně) od posledního znaku&lt;br /&gt;
&lt;br /&gt;
== 8.7.2014 ==&lt;br /&gt;
* opravy v oblasti obsluhy sériového rozhraní (RS485)&lt;br /&gt;
* do webové administrace přidána možnost vzájemného přehození pozic dvou 1-Wire záznamů&lt;br /&gt;
* další drobné opravy z průběžných beta testů&lt;br /&gt;
&lt;br /&gt;
== 8.3.2014 ==&lt;br /&gt;
* SDS-C: opraveno chyba omezující možný rozsah sys[78] (bylo omezeno na 0xFF, už není - teď správně vezme max velikost pole ram[] nebo text[])&lt;br /&gt;
&lt;br /&gt;
== 1.3.2014 ==&lt;br /&gt;
* SDS-C: nová funkce serial_write()&lt;br /&gt;
* SDS-C: nový timeout pro smtp_send() - zamezí specifickému možnému zaseknutí programu, když SMTP server přestane odpovídat uprostřed transkace po více než 50sec&lt;br /&gt;
* SDS-C: opravena funkce snmp_send_trap() - horní část seznamu trapů byla předtím chybně neodeslatená (teď už je vše OK)&lt;br /&gt;
* vylepšení odolnosti při výpadku a při obnovení připojení k Ethernetu&lt;br /&gt;
* různé drobné důležité opravy (viz beta testy)&lt;br /&gt;
&lt;br /&gt;
== 23.1.2014 ==&lt;br /&gt;
* překlopená beta-verze (po ukončené ověřovací sérii testů)&lt;br /&gt;
* SDS-C: úpravy (spolehlivost) v http_get(), dns_resolve()&lt;br /&gt;
* rozšířena 1-W funkcionality (další chipy)&lt;br /&gt;
* možnost &amp;quot;zrušit odečet&amp;quot; tlačítkem ve webovém rozhraní&lt;br /&gt;
* možnost nastavit minimální akceptovanou délku S0 impulsu pro každý vstup samostatně&lt;br /&gt;
* maximální velikost user.htm je zvětšena (teď lze vyplnit celou DF)&lt;br /&gt;
&lt;br /&gt;
== 30.11.2013 ==&lt;br /&gt;
* celá řada drobných oprav (nalezené v rámci testování od poslední verze)&lt;br /&gt;
* S0.htm: všechny hodnoty zobrazují údaje od posledního odpočtu (chybělo pro T0/T1 kWh)&lt;br /&gt;
* web: /get_dfi[x]&lt;br /&gt;
* SDS-C: čtení a zápis celé stránky z/do paměti DataFlash&lt;br /&gt;
&lt;br /&gt;
== 3.10.2013 ==&lt;br /&gt;
* celá řada drobných oprav&lt;br /&gt;
* login html stránka upravena (w3c valid)&lt;br /&gt;
* možnost nastavit MTD pro S0 měření&lt;br /&gt;
* nový SDSC.exe program&lt;br /&gt;
&lt;br /&gt;
== 16.3.2013 ==&lt;br /&gt;
* zápis výpadku a znovu-připojení Ethernetu do logu historie&lt;br /&gt;
* při odpojení a následném znovu-připojení Ethernetu dojde od teď záměrně ke smazání celé ARP tabulky, takže všechny MAC-IP páry jsou vyžádány znovu (pro případ že se např. vyměnil router atd.)&lt;br /&gt;
* SDS-C: get_txt[xxx] (vypíše pole text od indexu xxx až do znaku 0x00 na některém z následujících indexů v tomto poli)&lt;br /&gt;
* get_sys[xxx] vrací i text pro textové položky (vyzkoušejte všechny sys[] které jsou textové)&lt;br /&gt;
* SDS-C: přidáno sys[900] až sys[931] (text ROM CODE pro 1-W čidla)&lt;br /&gt;
* upraveno zpracování ARP tabulky (více bezpečné pro dlouhodobý provoz)&lt;br /&gt;
* možnost řízení tarifního signálu pro S0 prostřednictvím SDS-C programu&lt;br /&gt;
* funkce &amp;quot;odečet&amp;quot; pro S0 (viz nastavení S0 vstupů ve webové administraci)&lt;br /&gt;
* SDS-C: funkce smtp_send() akceptuje text[] nejen pro obsah zprávy, ale i pro adresu příjemce a subject&lt;br /&gt;
* SDS-C: funkce http_get() akceptuje text[] nejen pro obsah zprávy, ale i pro nastavení HTTP HOST parametru&lt;br /&gt;
&lt;br /&gt;
== 4.2.2013 ==&lt;br /&gt;
* při zobrazení echo.htm, když je konzole plná textu, nedojde k resetu zařízení&lt;br /&gt;
* opraveno časování pro 1-Wire sběrnici (vráceno na původní stav před úpravou v 20.12), uptime počítá také správně&lt;br /&gt;
* SDS-C: přidáno sys[45]&lt;br /&gt;
* SDS-C: přidáno sys[46]&lt;br /&gt;
* SDS-C: přidáno sys[98]&lt;br /&gt;
* SDS-C: echoinline() funguje správně&lt;br /&gt;
&lt;br /&gt;
== 20.12.2012 ==&lt;br /&gt;
Významné vydání, oprava řady drobných chyb průběžně hlášených od uživatelů, celá řada nových funkcí&lt;br /&gt;
* DHCP CLIENT&lt;br /&gt;
* SNMP write&lt;br /&gt;
* rychlejší boot loader&lt;br /&gt;
* rychlejší webová administrace&lt;br /&gt;
* přesnější udržování aktuálního času v zařízení (dvojnásobná kontrola přesnosti a korekce)&lt;br /&gt;
* přepracované úložiště v pevné paměti - SDS s eeprom ukládá všech 16 názvů pro teploměry&lt;br /&gt;
* možnost změny portu &amp;quot;UDP protokolu&amp;quot; (výchozí port 280)&lt;br /&gt;
* SDS-C: konzole zvětšena o zhruba 400 znaků&lt;br /&gt;
* délky textů pro (názvy) S0 jsou 32 bajtů, což je až 32 znaků (české znaky v UTF-8 berou 2 bajty), nicméně vše se v defaultu už vleze&lt;br /&gt;
* pro každý S0 vstup lze nastavit rozdílnou cenu pro T0 a T1 (stav tarifu)&lt;br /&gt;
* SDS-C: funkce send_udp()&lt;br /&gt;
* SDS-C: přidáno sys[61]&lt;br /&gt;
* SDS-C: přidáno sys[27]&lt;br /&gt;
* SDS-C: funkce echoinline()&lt;br /&gt;
* správné zpracování LOGIC S0 u zařízení SDS MICRO, které tento vstup nemají&lt;br /&gt;
* upraven CSV soubor (vypisuje detaily pro S0)&lt;br /&gt;
* upraven xml.xml a s0.xml (vše funguje jak má i při plném osazení, typicky pro SDS MACRO 8)&lt;br /&gt;
* SDS-C: sprintf dává 0x00 na konec textu (tohle chybělo)&lt;br /&gt;
* SDS-C: http_get() zapisuje 0x00 na &amp;quot;konec&amp;quot; text[], když se do text[] ukládá přijatá odpověď.&lt;br /&gt;
* SDS-C: oprava která má zajistit nevyvolání chyby 1029 pro http_get() funkci &lt;br /&gt;
* rozšířený MIB (položky pro S0 hodnoty)&lt;br /&gt;
* SDS-C: SNMP TRAP (odesílání TRAPů z SDS-C programu)&lt;br /&gt;
* a řada drobných obrav a vylepšení&lt;br /&gt;
&lt;br /&gt;
== 7.5.2012 ==&lt;br /&gt;
* opravena funkčnost PWM výstupu - lze správné nastavit střídu v rozmezí 0 až 100% viz návod na WiKi&lt;br /&gt;
&lt;br /&gt;
== 29.3.2012 ==&lt;br /&gt;
* firmware funguje správně i v historických zařízeních SDS MICRO LIGHT (1) používajících 24C16/24C256&lt;br /&gt;
&lt;br /&gt;
== 27.3.2012 ==&lt;br /&gt;
* spolehlivé načítání prvních osmi uložených pozic teploměrů z pevné paměti po resetu&lt;br /&gt;
* automaticky umístí nadbývající připojené teploměr na pozice 9 až 16&lt;br /&gt;
* zamykání pozic teploměrů funguje správně&lt;br /&gt;
* předělaná SDS-C funkce smtp_send() - má větší pracovní buffer, zvládne náročnější SMTP servery&lt;br /&gt;
&lt;br /&gt;
== 18.3.2012 ==&lt;br /&gt;
* finální podoba SNMP MIB (stáhněte si aktualizovaný MIB soubor)&lt;br /&gt;
&lt;br /&gt;
== 11.3.2012 ==&lt;br /&gt;
* malá změna v SNMP MIB (srovnání MIBů mezi MICRO/MACRO)&lt;br /&gt;
* další drobné opravy nahlášené po testování firmware z 8.3.&lt;br /&gt;
&lt;br /&gt;
== 8.3.2012 ==&lt;br /&gt;
* odstraněno zpoždění v převodníku Ethernet-Serial (Virtual COM port)&lt;br /&gt;
&lt;br /&gt;
== 4.3.2012 ==&lt;br /&gt;
Řada oprav a vylepšení, pocházející z BETA testování (viz forum)&lt;br /&gt;
* správný výpočet data od 29.2.2012&lt;br /&gt;
* možnost uzamknout pozice 1-Wire zařízení (teploměry)&lt;br /&gt;
* rozšířené SNMP&lt;br /&gt;
* SDS-C verze č. 06&lt;br /&gt;
* pole text[] a funkce atoi(), sprintf()&lt;br /&gt;
* uživatelská stránka může být i jako přímo indexová stránka webového rozhraní&lt;br /&gt;
* všechny fyzické vstupy a výstupy jsou počítány od jedničky&lt;br /&gt;
* další drobné úpravy a opravy, viz soupis u BETA testů&lt;br /&gt;
&lt;br /&gt;
== 17.1.2012 ==&lt;br /&gt;
* oprava indexů v &amp;quot;temp&amp;quot; tagech v xml.xml a temp.xml&lt;br /&gt;
&lt;br /&gt;
== 16.1.2012 ==&lt;br /&gt;
* opravy v přenosu hodnot teplot jednotlivými protokoly (v případě teploty menší než 0 stupňů Celsia byl špatně umístěn znak minus)&lt;br /&gt;
&lt;br /&gt;
== 15.1.2011 ==&lt;br /&gt;
* opravena chyba s user-dataflash (oprava má význam pouze pro výrobky osazené DF, nikoliv EE, tam chyba nebyla)&lt;br /&gt;
&lt;br /&gt;
== 21.12.2011 ==&lt;br /&gt;
* zapracovány všechny nové funkce, testované v rámci BETA testování nového firmware (probíhalo od 27.10.)&lt;br /&gt;
&lt;br /&gt;
== 27.10.2011 ==&lt;br /&gt;
* do webového rozhraní přidáno tlačítko: možnost nastavení střídy PWM &amp;quot;na zkoušku&amp;quot; (bez uložení do pevné paměti)&lt;br /&gt;
* web: funkce /get_sys a /get_ram může vrátit řadu proměnných za sebou&lt;br /&gt;
&lt;br /&gt;
== 2.10.2011 ==&lt;br /&gt;
* přidán sys[26]&lt;br /&gt;
* přidán sys[63]&lt;br /&gt;
* přidán sys[78]&lt;br /&gt;
* doplněn UDP protokol o čtyři nové funkce (čtení / zápis polí sys[] a ram[])&lt;br /&gt;
&lt;br /&gt;
== 31.7.2011 ==&lt;br /&gt;
* opraven problém s UDP protokolem - příkaz '''write''' (už funguje vždy ok)&lt;br /&gt;
* nový SDSC.exe program - doplňuje správnou HTML serverovou hlavičku pro uživatelskou stránku&lt;br /&gt;
&lt;br /&gt;
== 29.7.2011 ==&lt;br /&gt;
* možnost zápis z SDS-C programu do systémových proměnných sys[559] až sys[561]&lt;br /&gt;
* nová funkce pro UDP protokol - funkce '''write''' umožňuje hromadný zápis do sys[] systémových proměnných&lt;br /&gt;
&lt;br /&gt;
== 25.6.2011 ==&lt;br /&gt;
* možnost změnit číslo TCP portu webového serveru webového rozhraní výrobku (změna stejným způsobem jako je změna IP nebo MAC adresy...)&lt;br /&gt;
&lt;br /&gt;
== 16.6.2011 ==&lt;br /&gt;
* verze SDS-C č. 04&lt;br /&gt;
* SDS-C: plně funkční funkce ping()&lt;br /&gt;
* rozšíření maximální velikosti SDS-C programu ve všech verzích SDS MICRO (light, light2, DIN)&lt;br /&gt;
** DATAFLASH maximální velikost programu je 65472 bajtů&lt;br /&gt;
** 24C16 maximální velikost programu je 900 bajtů&lt;br /&gt;
** 24C256 maximální velikost programu je 31416 bajtů&lt;br /&gt;
&lt;br /&gt;
* web: nastavení uživatelské proměnné pomocí volání sdscep pracuje s doplňkovými parametry (např. vrací hodnotu)&lt;br /&gt;
* upravena obsluha eeprom paměti (jiný I2C driver) - tzn. větší spolehlivost a větší rychlost&lt;br /&gt;
* sys[25] po každém zavolání čte hodnotu z PHY HW a vrací skutečný stav v daný okamžik&lt;br /&gt;
* čtení ze sériové linky je teď dostupné pro program v SDS-C (viz sys[48] a sys[49])&lt;br /&gt;
* změna řízení PWM výstupu, lze teď plynule regulovat poměr log0 a log1 v celém rozsahu&lt;br /&gt;
* všechny stránky předělány na UTF-8, vstupy textů berou i České znaky atd.&lt;br /&gt;
* výpis MAC adresy pro SDS-C program (viz sys[31] až sys[36])&lt;br /&gt;
* SDS-C: http_get může uložit získaná data webové stranky do pole ram[]&lt;br /&gt;
* zcela změněn ARP algoritmus, měl by teď bez problémů pracovat i na větších podsítích než je /24&lt;br /&gt;
* web: informační stránka /arp.htm&lt;br /&gt;
* SDS-C: zvětšena velikost pole ram[] na 512 záznamů&lt;br /&gt;
* web: výpis hodnot sys[] a ram[] pomocí dynamicky generované webové stránky (např. /get_ram[123] )&lt;br /&gt;
* web: čtení výpisu sys[] a ram[] lze zakázat v nastavení (SDS-C parametr)&lt;br /&gt;
* SDS-C: možnost zápisu do S0 impulsních počítadel (nulování, úpravy hodnot, atd.)&lt;br /&gt;
* pokud je konkrétní relé ve webovém rozhraní nastaveno na něco jiného, než na &amp;quot;ovládáno z SDS-C&amp;quot;, tak jeho stav SDS-C program nezmění&lt;br /&gt;
&lt;br /&gt;
== 21.5.2011 ==&lt;br /&gt;
* opravy v českém a anglickém překladu webového rozhraní&lt;br /&gt;
&lt;br /&gt;
== 14.5.2011 ==&lt;br /&gt;
* vydána pouze nová EXE aplikace pro nahrávání SDS-C&lt;br /&gt;
* od této verze umožňuje použít složité kostrukce s IF, např.: if (test) { kus programu; } else { kus programu; };&lt;br /&gt;
&lt;br /&gt;
== 13.5.2011 ==&lt;br /&gt;
* od této verze jsou k dispozici dvě jazykové varianty - plně Česká varianta a plně Anglická varianta&lt;br /&gt;
* varianty se liší pouze texty ve webovém rozhraní, jejich funkčnost je ale zcela shodná (bez rozdílů)&lt;br /&gt;
&lt;br /&gt;
== 20.3.2011 ==&lt;br /&gt;
* funkční nahrávání uživatelské webové stránky&lt;br /&gt;
&lt;br /&gt;
== 3.3.2011 ==&lt;br /&gt;
* pouze nový simulační WinEXE program pro SDS-C&lt;br /&gt;
** funkční simulátor LCD (SDS MACRO)&lt;br /&gt;
** vylepšení v hlášení chyb při kontrole programu SDS-C&lt;br /&gt;
&lt;br /&gt;
== 27.2.2011 ==&lt;br /&gt;
* změněn výpis UpTime v Actual Status webové stránce na dny/hod/min/sec/msec&lt;br /&gt;
* doplněna generovaná webová stránka: echo.htm (obsahuje pouze výpis konzole SDS-C, vhodné pro embedding do jiného webu)&lt;br /&gt;
* nový XML soubor - usys.xml - výpis vzdálených proměnných SDS-C&lt;br /&gt;
* možnost volby nezasílání http dat pro volání sdscep (umožnujě tzv. tichou aktualizaci hodnoty sys)&lt;br /&gt;
* do SNMP doplněna hodnota teploty SoC (vyčtená z HW, bez převodu na °C)&lt;br /&gt;
* příprava pro nahrání uživatelské webové stránky (plná podpora bude v následující verzi fw)&lt;br /&gt;
* nová verze SDS-C, nové možnosti, nový simulátor&lt;br /&gt;
** SDS-C: možnost použít #define v programu&lt;br /&gt;
** SDS-C: možnost použít uživatelské proměnné jako indexy do pole (sys, ram)&lt;br /&gt;
** SDS-C: k dispozici je univerzální pole ram[]&lt;br /&gt;
** SDS-C: nová WinEXE aplikace, řada drobností...&lt;br /&gt;
&lt;br /&gt;
== 30.1.2011 ==&lt;br /&gt;
* úpravy specifické pro verzi LIGHT s EEPROM (restart zařízení)&lt;br /&gt;
&lt;br /&gt;
== 29.1.2011 ==&lt;br /&gt;
* v SNMP doplněn výpis celé hodnoty (x100) pro 1-W teploměry 2 až 16&lt;br /&gt;
&lt;br /&gt;
== 28.1.2011 ==&lt;br /&gt;
* dvě nové funkce v SDS-C, pro zápis do sériového portu &lt;br /&gt;
* zpřesněný interní čítač reálného času&lt;br /&gt;
&lt;br /&gt;
== 26.1.2011 ==&lt;br /&gt;
* změněna minimální akceptovaná délka S0 impulsu, bylo původně 16 msec jako minimum, od této verze je to 5 msec (z důvodů připojení speciálních nepřímých elektroměrů).&lt;br /&gt;
* doplňky v simulátoru SDS-C, zejména ohledně času, korekce optovstupů, atd.&lt;br /&gt;
&lt;br /&gt;
== 9.1.2011 ==&lt;br /&gt;
* nová položka v SNMP - pro každé teplotní čidlo je poskytována plná hodnota násobena 100 (např. 12.35°C je předáno jako 1235)&lt;br /&gt;
* pouze SDS MICRO LIGHT: v SDS-C doplněny čtyři sys[], umožňující přímé ovládání vývodů A1, B1, M4, M5 (CMOS 3V3 logika, pájecí plošky)&lt;br /&gt;
&lt;br /&gt;
== 7.12.2010 ==&lt;br /&gt;
* upraven způsob výpočtu a prezentace okamžitého výkonu (S0), zejména v případě přerušení dodávky S0 impulsů&lt;br /&gt;
&lt;br /&gt;
== 1.12.2010 ==&lt;br /&gt;
* firmware podporuje i jiné osazené dataflash (menší velikosti) paměti&lt;br /&gt;
&lt;br /&gt;
== 29.11.2010 ==&lt;br /&gt;
* oprava v chování SDS-C, kdy pokud byl program právě ve funkci wait(), tzn. čekal, a v tu chvíli byl nahrán nový program, tak nebylo čekání zrušeno, a nový program byl spuštěn až po dokončení čekání&lt;br /&gt;
* úpravy odkazů na www.merenienergie.cz, portal.merenienergie.cz&lt;br /&gt;
&lt;br /&gt;
== 20.10.2010 ==&lt;br /&gt;
* upraven UDP protokol - doplněno ROMCODE pro teplotní čidla&lt;br /&gt;
* upraveno zadávání uživatelských sys[] proměnných z webu (už lze zadávat i záporné čísla)&lt;br /&gt;
* opravena ztráta nastavení GMT offset po resetu zařízení&lt;br /&gt;
&lt;br /&gt;
== 8.10.2010 ==&lt;br /&gt;
* opraven SNMP který měl od verze 10.9. problémy&lt;br /&gt;
* tento a novější firmware je vhodný pro spolupráci se službou portal.merenienergie.cz&lt;br /&gt;
&lt;br /&gt;
== 6.10.2010 ==&lt;br /&gt;
* oprava výpisu přepočtené spotřeby (kW) - doplněno vždy na tři desetinná místa&lt;br /&gt;
* funkční nulování převodu peněz&lt;br /&gt;
* SMTP konfigurace se správně načte po zapnutí zařízení&lt;br /&gt;
&lt;br /&gt;
== 26.9.2010 ==&lt;br /&gt;
* SDS-C: stránka &amp;quot;control&amp;quot;, uživatelsky editovatelné proměnné&lt;br /&gt;
* SDS-C: do sys[] doplněna informace pro S0 (čas od posledního impulsu)&lt;br /&gt;
* drobné doplňky do XML, příprava pro SDSMON.exe&lt;br /&gt;
* UDP protokol, popis viz wiki&lt;br /&gt;
&lt;br /&gt;
== 17.9.2010 ==&lt;br /&gt;
* oprava v SDS-C: funkce http_get a smtp_send, od teď umožnují vkládat proměnné až na pozici do maximální délky zprávy (1024 znaků)&lt;br /&gt;
* výstup /temp.txt je doplněn na dvojici: romcode : teplota&lt;br /&gt;
* výstup /temp.xml je doplněn o tagy s romcode&lt;br /&gt;
&lt;br /&gt;
== 15.9.2010 ==&lt;br /&gt;
* doplněn výstup teplot ze všech čidel, do textové formy, /temp.txt&lt;br /&gt;
* odečet teplotních web-snippet tempX.htm akceptuje hex znaky (tj. 0-9, a-f)&lt;br /&gt;
&lt;br /&gt;
== 14.9.2010 ==&lt;br /&gt;
* opraven výpis teploty v csv.csv&lt;br /&gt;
* nový xml soubor: temp.xml - pouze s údaji o teplotě&lt;br /&gt;
&lt;br /&gt;
== 10.9.2010 ==&lt;br /&gt;
* opraveno zobrazení kWh na webových stránkách (špatný číselný text u vyšších hodnot kWh)&lt;br /&gt;
&lt;br /&gt;
== 8.9.2010 ==&lt;br /&gt;
* ve firmware byl zvýšen maximální počet obsluhovaných teplotních sensorů z 8 na 16&lt;br /&gt;
&lt;br /&gt;
== 14.8.2010 ==&lt;br /&gt;
* opraveno SDS-C - správnost předávání konstantních číselných parametrů funkcím&lt;br /&gt;
* doplněna nová funkce do SDS-C - funkce http_get&lt;br /&gt;
* nový Win32 program pro práci s SDS-C (doplněna funkčnost vzdálených labelů)&lt;br /&gt;
* zobrazení názvů tarifů na celkové stránce pro S0 (předtím bylo jen na detailních stránkách)&lt;br /&gt;
&lt;br /&gt;
== 9.8.2010 ==&lt;br /&gt;
* firmware funguje i pro HW rev2,3 (SDS MICRO light), předchozí verze 3.8. nenašla externí flash paměť&lt;br /&gt;
&lt;br /&gt;
== 3.8.2010 ==&lt;br /&gt;
* opravena chyba kdy nedošlo k přečtení konfigurace pro S0 vstupy z pevné paměti, už je to ok&lt;br /&gt;
* upraven výpočet okamžitého výkonu, aby při nepřipojeném měřiči ukazoval nulu&lt;br /&gt;
&lt;br /&gt;
== 2.8.2010 ==&lt;br /&gt;
* zcela přepracováno webové rozhraní pro měřiče energie&lt;br /&gt;
* rozšířené snmp/xml/csv pro měřiče energie&lt;br /&gt;
* možnost připojít více samostatnyćh měřičů energie najednou&lt;br /&gt;
* vstup pro tarifní rozlišení (denní/noční proud, výroba/dodávka, atd.)&lt;br /&gt;
* vylepšený Windows&amp;amp;reg; program pro nahrávání firmware&lt;br /&gt;
&lt;br /&gt;
== 26.7.2010 ==&lt;br /&gt;
&lt;br /&gt;
* nový firmware pro převodník Ethernet/Serial&lt;br /&gt;
* samostatná stránka ve webovém rozhraní pro zobrazení stavu převodníku Ethernet/Serial&lt;br /&gt;
&lt;br /&gt;
== 23.7.2010 ==&lt;br /&gt;
&lt;br /&gt;
* úprava chování pinu RSTD - pokud se zkratuje a zapne se zařízení, je kromě původní funkce (reset konfigurace) spuštěn i bootloader, tzn. bootloader lze odteď pouštět jak z webového rozhraní (původní stav), tak odteď i přes RSTD - toto má výhodu, pokud se nepovede nahrát celý nový firmware, tak lze znovu spustit bootloader a opakovat nahrávání znovu&lt;br /&gt;
* drobná oprava v SMTP klientu&lt;br /&gt;
* byl vydán nový Windows&amp;amp;reg; program pro nahrávání programů v SDS-C&lt;br /&gt;
&lt;br /&gt;
== 18.7.2010 ==&lt;br /&gt;
&lt;br /&gt;
* maximální počet znaků v přihlašovacích údajích pro SMTP je rozšířen na 32 znaků&lt;br /&gt;
* drobné opravy ve webovém rozhraní&lt;br /&gt;
&lt;br /&gt;
== 15.7.2010 ==&lt;br /&gt;
&lt;br /&gt;
* ošetřena funkčnost SMTP při použití přihlašovacích údajů pro SNMP o maximálním počtu znaků (navíc v budoucnu to bude prodlouženo)&lt;br /&gt;
&lt;br /&gt;
== 10.7.2010 ==&lt;br /&gt;
&lt;br /&gt;
* opravy drobností tak jak byly nahlášeny od uživatelů&lt;br /&gt;
* tři desetinné místa na ose grafu spotřeby energie&lt;br /&gt;
* oprava hodnoty dne u data v grafu spotřeby energie&lt;br /&gt;
* doplňky v http serveru, úprava hlavičky pro CSV&lt;br /&gt;
* přihlašovací stránka se už zobrazí všude a vždy (předtím někdy neprošlo např. nod32)&lt;br /&gt;
* příprava pro centrální sběrný program SDSMON.exe&lt;br /&gt;
&lt;br /&gt;
== 2.6.2010 ==&lt;br /&gt;
&lt;br /&gt;
* oficiální verze SDS-C k dispozici&lt;br /&gt;
* celá řada nových funkcí, především pro SDS-C&lt;br /&gt;
* SMTP - odesílání emailů (z programu SDS-C)&lt;br /&gt;
* výstup dat i ve formě CSV souboru (středníkový oddělovač pro Excel&amp;amp;reg;)&lt;br /&gt;
&lt;br /&gt;
== 17.5.2010 ==&lt;br /&gt;
&lt;br /&gt;
* opraven výpis LOGu pro IP adresy&lt;br /&gt;
* záznam nepovedených přístupů (když to někdo zkouší se špatným heslem)&lt;br /&gt;
* drobnosti v http serveru&lt;br /&gt;
* graf S0 má místo +1kWh jen +0.1kWh&lt;br /&gt;
* oprava detekce EEPROM (aktualizujte FW !)&lt;br /&gt;
&lt;br /&gt;
== 15.5.2010 ==&lt;br /&gt;
&lt;br /&gt;
* změna výchozího NTP serveru (default config)&lt;br /&gt;
* kratší odpočet při změně NTP serveru&lt;br /&gt;
* stránka S0 i z hlavního menu&lt;br /&gt;
&lt;br /&gt;
== 12.5.2010 ==&lt;br /&gt;
&lt;br /&gt;
* drobné úpravy&lt;br /&gt;
* informace o datové paměti (bude důležité pro SDS-C)&lt;br /&gt;
* volba NTP serveru&lt;br /&gt;
&lt;br /&gt;
== 4.5.2010 ==&lt;br /&gt;
&lt;br /&gt;
* řada doplňků pro S0 vstup (přepočty, kreslení grafu, xml)&lt;br /&gt;
&lt;br /&gt;
== 23.4.2010 ==&lt;br /&gt;
&lt;br /&gt;
* počítáni S0 impulsů (opto 3), speciální webové zobrazení a přepočty&lt;br /&gt;
* doplňky v SNMP, doplněný MIB&lt;br /&gt;
* nepřipojené teploměry hlásí teplotu 32767&lt;br /&gt;
* příprava stránky pro řízení relé pomocí teploměrů&lt;br /&gt;
&lt;br /&gt;
== 25.1.2010 ==&lt;br /&gt;
&lt;br /&gt;
* možnost pojmenovat si všechny analogové vstupy&lt;br /&gt;
* doplněno: název analogového vstupu lze přečíst přes SNMP&lt;br /&gt;
* doplněno: název relátka lze přečíst přes SNMP&lt;br /&gt;
&lt;br /&gt;
== 15.1.2010 ==&lt;br /&gt;
&lt;br /&gt;
* opraveno chybějící tlačítko u přihlašovací stránky (šlo pouze stiskem klávesy Enter)&lt;br /&gt;
* doplněno chybějící čtvrté nastavovací tlačítko u ADC konstant&lt;br /&gt;
&lt;br /&gt;
== 11.1.2010 ==&lt;br /&gt;
&lt;br /&gt;
* opraveno (doplňeno) chybějící záporné znaménko u výpisu teploty (web, SNMP)&lt;br /&gt;
&lt;br /&gt;
== 31.10.2009 ==&lt;br /&gt;
&lt;br /&gt;
* navýšení maximálního počtu současně přihlášených uživatelů do webového rozhraní&lt;br /&gt;
&lt;br /&gt;
== 30.10.2009 ==&lt;br /&gt;
&lt;br /&gt;
* zvýšení max počtu 1-Wire&amp;amp;reg; teploměrů na 8 kusů na jedné sběrnici&lt;br /&gt;
* doplněn výstup SNMP o údaje desetinných hodnot pro všechny teploměry&lt;br /&gt;
* doplněno uživatelské nastavení přepočítavacích hodnot pro A/D převod, použité pro zobrazení ve webovém rozhraní a pro xml výstup&lt;br /&gt;
* zobrazení sysLocation také v přehledové stránce (actual status)&lt;br /&gt;
* možnost pojmenovat si všechny teploměry (16 znaků pro každý)&lt;br /&gt;
* možnost pojmenovat si ovládané relé (16 znaků pro každé)&lt;br /&gt;
&lt;br /&gt;
== 29.10.2009 ==&lt;br /&gt;
&lt;br /&gt;
* drobnosti před vydáním 30.10.2009&lt;br /&gt;
&lt;br /&gt;
== 10.10.2009 ==&lt;br /&gt;
&lt;br /&gt;
* NTP klient - synchronizace času a data protokolem NTP&lt;br /&gt;
* nastavení NTP serveru a GMT prostřednictvím &amp;quot;Admin config&amp;quot; webové stránky&lt;br /&gt;
* zobrazení NTP času a data v &amp;quot;actual status&amp;quot; webové stránce&lt;br /&gt;
* zobrazení času a data v &amp;quot;Log&amp;quot; webové stránce u všech položek&lt;br /&gt;
&lt;br /&gt;
== 20.09.2009 ==&lt;br /&gt;
&lt;br /&gt;
* webová stránka &amp;quot;aktuální stav&amp;quot; - upraveno pro správné zobrazování v IE&lt;br /&gt;
* v nadpisu webové stránky (tag title) se zobrazuje název zařízení a navíc celý obsah textu ''sysLocation''&lt;br /&gt;
&lt;br /&gt;
== 07.09.2009 ==&lt;br /&gt;
&lt;br /&gt;
* 1-Wire&amp;amp;reg; měří na 1/16 stupně Celsia, upraveno časování (větší spolehlivost), lze připojit více čidel&lt;br /&gt;
* možnost změny MAC adresy (přímo z webového rozhraní)&lt;br /&gt;
* zobrazení informační (potvrzovací) stránky před změnou IP, MAC&lt;br /&gt;
&lt;br /&gt;
== výchozí firmware ==&lt;br /&gt;
&lt;br /&gt;
* výchozí firmware&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS-C:_sdsc_sysp&amp;diff=972</id>
		<title>SDS-C: sdsc sysp</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS-C:_sdsc_sysp&amp;diff=972"/>
		<updated>2025-11-15T14:22:50Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje programovací jazyk '''SDS-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Zařízení Druhé Produktové Řady používají jazyk FULL-C (jiná část této Wiki).&lt;br /&gt;
&lt;br /&gt;
== Definice systémových proměnných SDS-C : pole sys[] ==&lt;br /&gt;
&lt;br /&gt;
Tzv. &amp;quot;systémová proměnná&amp;quot; je prvek v programovacím jazyku SDS-C, který má textový název, a se kterým se dá pracovat - číst hodnotu z proměnné a zapisovat hodnotu do proměnné. Často je čtení a zápis svázáno s fyzickou akcí (např. zápis do konkrétní systémové proměnné změní stav relé).&lt;br /&gt;
&lt;br /&gt;
SDS-C obsahuje celou řadu vyhrazených, předem pevně definovaných systémových 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. Úplný seznam je právě na této stránce.&lt;br /&gt;
&lt;br /&gt;
Proměnné poskytované SDS-C a navázané na HW zařízení, jsou označeny jako '''sys[x]''', kde index '''x''' je číslo do 0 do 1023 (popřípadě až do 2048 ale to jen na určitých typech zařízení).&lt;br /&gt;
&lt;br /&gt;
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í).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Legenda k tabulce:''&lt;br /&gt;
&lt;br /&gt;
Proměnná typu '''i''' je 32-bit signed integer (nejvyšší bit je znaménko, a zbývajících 31 bitů je číselná hodnota).&lt;br /&gt;
&lt;br /&gt;
Proměnná typu '''s''' je soubor znaků (string) - tj. '''text''' (řetězec znaků) - a tyto proměnné '''lze použít jen pro čtení'''.&lt;br /&gt;
&lt;br /&gt;
Některé proměnné lze jen číst ('''R'''), do některých lze kromě čtení i zapisovat ('''RW'''). &lt;br /&gt;
&lt;br /&gt;
Údaj '''XX''' v seznamu proměnných udává verzi firmware, kdy byla daná proměnná zavedena.&lt;br /&gt;
'''Význam hodnot:'''&lt;br /&gt;
* '''01''' - první verze, výchozí firmware ze začátku roku 2010&lt;br /&gt;
* '''02''' - druhá verze, bylo vydáno na přelomu roku 2010 a 2011&lt;br /&gt;
* '''03''' - třetí verze, tj. pouze pro firmware od 03.2011 &lt;br /&gt;
* '''04''' - čtvrtá verze, tj. pouze pro firmware od 06.2011 a novější&lt;br /&gt;
* '''05''' - pátá verze, tj. pouze pro firmware od 11.2011 a novější&lt;br /&gt;
* '''06''' - šestá verze, tj. pouze pro firmware od 03.2012 a novější&lt;br /&gt;
* '''07''' - sedmá verze, tj. pouze pro firmware od 07.2017 a novější&lt;br /&gt;
* '''08''' - osmá verze, tj. pouze pro firmware od 12.2018 a novější&lt;br /&gt;
* '''09''' - devátá verze, tj. pouze pro firmware od 06.2020 a novější&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pokud máte starší verzi firmware, je možné, že některé později přidané položky nebudou k dispozici. Řešením je udržovat firmware ve vašem zařízení vždy aktuální.&lt;br /&gt;
&lt;br /&gt;
Jazyk SDS-C indexuje všechny pole od čísla 0 (nula) - všechna pole, tj. &amp;quot;sys[]&amp;quot;, &amp;quot;ram[]&amp;quot;, &amp;quot;text[]&amp;quot;, začínají se svým obsahem od indexu nula.&lt;br /&gt;
&lt;br /&gt;
'''Pozor''' však na číslování hardware vstupů a výstupů, ty jsou číslovány dle &amp;quot;elektrikářských&amp;quot; zvyklostí, to znamená že číslování začíná od čísla '''1''' ('''jednička''') - toto ale nemá hlubší vliv na SDS-C.&lt;br /&gt;
&lt;br /&gt;
Pokud narazíte na takové zařízení SDS, které má ještě velmi starou verzí webového rozhraní, kde byly ještě některé vstupy číslovány od nuly, aktualizujte si toto zařízení aby používalo nejnovější firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Důležité upozornění'''&lt;br /&gt;
&lt;br /&gt;
Protože SDS-C ''umí pracovat pouze a jen'' s '''32-bit signed''' integer čísly (tj. 1-bit znaménko a 31-bitů číslo, typ int32_t), tak dochází k (očekávané) konverzi '''32-bit unsigned''' čísel (tj. bez znaménka 32-bitů číslo, typ uint32_t) mezi vnitřními hodnotami v SDS a reprezentací v SDS-C (například když takové unsigned číslo je dotazováno například přes čtení &amp;quot;sys[]&amp;quot; hodnot).&lt;br /&gt;
&lt;br /&gt;
Jinýmy slovy - uvnitř SDS jsou drženy některé hodnoty jako 32-bit unsigned. Ale protože SDS-C pracuje pouze s 32-bit signed čísly, pak při čtení takových čísel zevnitř SDS jsou tyto čísla prezentovány v SDS-C jako 32-bit signed. Bitově se nezmění, jen se &amp;quot;mění&amp;quot; pohled na to, co který bit znamená, viz text dále.&lt;br /&gt;
&lt;br /&gt;
''Příklad:'' &lt;br /&gt;
Hodnota &amp;quot;sys[625]&amp;quot; reprezentuje &amp;quot;uplynulý čas od posledního zachyceného S0 impulsu na daném S0 vstupu&amp;quot;. Tato hodnota je udržována uvnitř SDS a program SDS-C k ní má přístup.&lt;br /&gt;
Tento čas je udán v milisekundách a začína na nule, a s každou milisekundou ze zvýší o jedničku. Protože SDS udržuje toto počítadlo (uvnitř své paměti) jako '''32-bit unsigned''', tak jakmile dojde k dopočítání do 31-bitů (tj. 2147483647) a překlopí se tedy 32. bit (tj. na 2147483648), tak SDS-C při čtení &amp;quot;sys[625]&amp;quot; vrátí zápornou hodnotu (tj. -2147483648). Toto je v pořádku - pokud si vypíšete jednotlivé bity, tak budou stále přesně odpovídat, ale tím že SDS-C interpetuje všechny čísla jako '''32-bit signed''', tak vzorovou hodnotu použije a zobrazí jako zápornou.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  skutečná binární hodnota         | 32-bit signed | 32-bit unsigned&lt;br /&gt;
  (32-bit)                         | SDS-C integer | (internal SDS)&lt;br /&gt;
 ----------------------------------+---------------+-----------------&lt;br /&gt;
  00000000000000000000000000000000 |             0 |               0&lt;br /&gt;
  00000000000000000000000000000001 |             1 |               1&lt;br /&gt;
  00000000000000001111111111111111 |         65535 |           65535&lt;br /&gt;
  01111111111111111111111111111111 |    2147483647 |      2147483647&lt;br /&gt;
  10000000000000000000000000000000 |   -2147483648 |      2147483648&lt;br /&gt;
  10000000000000000000000000000001 |   -2147483647 |      2147483649&lt;br /&gt;
  10000000000000001111111111111111 |   -2147418113 |      2147549183&lt;br /&gt;
  11111111111111111111111111111111 |            -1 |      4294967295&lt;br /&gt;
  11111111111111111111111111111110 |            -2 |      4294967294&lt;br /&gt;
  11111111111111111111111111111101 |            -3 |      4294967293&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, SDS vždy (ať ve svém firmware, tak v SDS-C kódu a proměnných) udržuje hodnoty ve stejném ''binárním'' obsahu. Jen interpretace a další práce s čísly je jiná. SDS samo vnitřně pracuje s '''32-bit unsigned''' hodnotami, a díky tomu na webu a všech M2M stránkách můžete vidět hodnoty v rozsahu od 0 do 4294967295. Zato SDS-C pracuje pouze se '''32-bit signed''' hodnotami, a proto stejné číslo je reprezentováno v rozsahu -2147483648 až 2147483647. Toto je vlastnost daná omezením implementace, zkrátka v SDS-C to nelze jinak udělat (pokud to je problém, což ale není, tak můžete přejít na zařízení s FULL-C které tyto omezení nemá).&lt;br /&gt;
&lt;br /&gt;
To lze snadno ve vašem SDS-C kódu ošetřit, a pokud pouze přenášíte hodnoty z SDS na server (přes HTTP-GET), tak se to dá snadno a ihned zpracovat na serveru &amp;quot;zpět&amp;quot; na '''32-bit unsigned''' hodnotu. Jednoduše na serveru přijmete '''signed''' číslo, a převedete ho například přetypování na '''unsigned''' číslo. Bity v paměti totiž jsou pro oba typy stejné.&lt;br /&gt;
&lt;br /&gt;
V tabulce jsou konkrétní &amp;quot;sys[]&amp;quot; položky, kterých se toto týká, označeny tímto symbolem: '''(!)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Použítí v SDS-C programu'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Příklad zápisu v programu: jaká je teplota na čidle 1 (celé stupně Celsia)? &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 teplota0_ve_stupnich_C = sys[310] / 100;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ne vždy je potřeba provádět 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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
if (sys[310] &amp;gt; sys[311]) { echo('Prvni cidlo je teplejsi nez druhe.'); };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Příklad zápisu v programu: jak zapnu relé RE1? (musíte vědět &amp;quot;co&amp;quot; &amp;quot;kam&amp;quot; zapsat):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
sys[231] = 255; // v tomto okamžiku dojde k ovládnutí relé č. 1 (- viz index 231 dole v seznamu)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Můžete (od 03 verze SDS-C) použít i ''#define'', příklad:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define RELE1 sys[231]&lt;br /&gt;
&lt;br /&gt;
#define TEPLOTA sys[310]&lt;br /&gt;
&lt;br /&gt;
// ...&lt;br /&gt;
 &lt;br /&gt;
RELE1 = 255;&lt;br /&gt;
 &lt;br /&gt;
if (TEPLOTA &amp;gt; 3200) goto x;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pole ram[] ==&lt;br /&gt;
&lt;br /&gt;
Pole '''ram[]''' je samostatné nezávislé pole, dostupné pro SDS-C program od verze č. 03 (a výše).&lt;br /&gt;
&lt;br /&gt;
Obsah pole ram[] je uložen samostatně v RAM paměti, a je při resetu zařízení ztracen.&lt;br /&gt;
&lt;br /&gt;
Obsah pole ram[] se nekryje s dalšími proměnnými programu a tak dále (je to zcela samostatné paměťové pole).&lt;br /&gt;
&lt;br /&gt;
Pole ram[] lze indexovat číslem nebo proměnnou. Příkladem:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
hodnota = ram[10];&lt;br /&gt;
&lt;br /&gt;
index = 23;&lt;br /&gt;
ram[index] = 15 * 2;&lt;br /&gt;
&lt;br /&gt;
index = sys[1023];&lt;br /&gt;
ram[index] = 30;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pole ram[] je indexováno od indexu nula (tj.: ram[0]). Celková velikost (maximální index) je dán verzí SDS-C a konkrétního firmware v zařízení. &lt;br /&gt;
&lt;br /&gt;
Verze SDS-C č. 03 má maximální velikost pole ram[] nastavenou na 128 položek. '''Novější verze už mají počet zvýšený ''' - verze č. 06 má velikost ram[] nastavenou na 512 položek (každá o velikosti int32_t).&lt;br /&gt;
&lt;br /&gt;
Pole ram[] můžete využít k čemukoliv co potřebujete. Také i pro některé SDS-C funkce, jako je ''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[]), nebo při přenosu stránek z/do paměti DF.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ukládání trvalých dat ==&lt;br /&gt;
&lt;br /&gt;
Všechny verze SDS-C mají od k dispozi prostor v oblasti sys[100] až sys[115]. Toto je výchozí oblast pro uchovávání trvanlivých dat (tyto údaje se neztratí při výpadku napájení). Přímým zápisem, do těchto sys[] položek, dojde k zápisu do pevné paměti. Čtení se provádí opět přímým přístupem do těchto sys[].&lt;br /&gt;
&lt;br /&gt;
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 (NVM = Non-Volatile Memory), osazeném na desce zařízení SDS, a to prostřednictvím čtyř SDS-C funkcí.&lt;br /&gt;
&lt;br /&gt;
Pozn. historické verze zařízení SDS-MICRO LIGHT, kde se používá paměť EEPROM (na místo novější DataFlash), poskytuje vždy pouze základní rozsah indexů: 100 až 115, a neposkytuje rozšířený rozsah pevné paměti (tak jako zařízení s pamětí DataFlash).&lt;br /&gt;
&lt;br /&gt;
Více informací, způsob použití a důležité varování je uvedeno na [[SDS-C: DataFlash|stránce ohledně DataFlash]].&lt;br /&gt;
&lt;br /&gt;
Další možnost:&amp;lt;br&amp;gt;&lt;br /&gt;
Zařízení SDS řady ST mají k dispozici, kromě podpory pro DataFlash, i možnost využít Zálohovanou paměť RAM (ta drží obsah i při vypnutém napájení SDS, pokud je v SDS vložena nabitá zálohovací baterie).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pole text[] ==&lt;br /&gt;
&lt;br /&gt;
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) či práci s komunikačními moduly (GSM, LTE, LoRA).&lt;br /&gt;
&lt;br /&gt;
Za tímto účelem je připraveno pole '''text[]'''. Detailní popis je [[SDS-C:_popis_jazyka#Pole_text.5B.5D|zde]].&lt;br /&gt;
&lt;br /&gt;
SDS-C je omezený programovací jazyk z hlediska &amp;quot;práce s textem&amp;quot;. Pokud potřebujete intenzivně s textem pracovat, použijte zařízení SDS které má FULL-C jazyk.&lt;br /&gt;
&lt;br /&gt;
I přes omezení SDS-C je možné připojit různé komunikační moduly (GSM, LTE, LoRA), které komunikují prostřednictvím textových příkazů (viz vzorové programy).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pole share[] ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Od verze SDS-C č. '''08''' je možné použít pole '''share[]''', určené primárně pro sdílení textové informace mezi SDS-C programem a webovým rozhraním (tedy jako [[SDS-C:_sharing|sdílené proměnné]]).&lt;br /&gt;
&lt;br /&gt;
Práce s polem share[] je prakticky zcela shodná jako práce s polem text[]. Prakticky tak získává programátor dvě nezávislé pole pro uchování textu. Nicméně, některé SDS-C funkce vyhrazeně fungují jen s polem text[], ale to je vždy uvedeno v jejich popisu. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vyhrazené funkce ==&lt;br /&gt;
&lt;br /&gt;
Seznam konkrétních zabudovaných '''funkcí''' naleznete na [[SDS-C: sdsc sysf|jiné stránce]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Jednotné proměnné (pole sys[]) pro všechny výrobky řady SDS ==&lt;br /&gt;
&lt;br /&gt;
'''STAV SYSTÉMU'''&lt;br /&gt;
&lt;br /&gt;
 sys[0]   01 i R   &amp;quot;pair code&amp;quot; firmware (nastaven výrobcem napevno: identifikátor vázanosti firmware na hardware)&lt;br /&gt;
                    - lze využít pro rozeznání typu zařízení SDS, na kterém je spuštěn SDS-C program&lt;br /&gt;
 &lt;br /&gt;
 sys[1]   01 i R   počet přihlášených uživatelů do webového rozhraní (v okamžiku čtení této proměnné)&lt;br /&gt;
 &lt;br /&gt;
 sys[2]   01 s R   text SNMP-sysLocation, nastaveno ve webové administraci&lt;br /&gt;
 &lt;br /&gt;
 sys[3]   01 i R   hodnota '''UpTime10''' (doba běhu zařízení)&lt;br /&gt;
                    - počítá se od nuly (0) od každého zapnutí zařízení&lt;br /&gt;
                    - pouze 31 bitové počítadlo&lt;br /&gt;
                      (SDS si pro sebe interně počítá UpTime10 jako 32bit, nicméně&lt;br /&gt;
                       nejvyšší bit je odmaskován před předáním hodnoty do SDS-C programu)&lt;br /&gt;
                    - platné hodnoty: 0 až 2147483647 (včetně)&lt;br /&gt;
                    - po překročení 2147483647 (zde odpovídá up-time 248 dnů) začíná hodnota opět na nule&lt;br /&gt;
                    - jeden krok (zvýšení o jedničku) této hodnoty UpTime10 odpovídá právě '''10 msec''' uplynulému času &lt;br /&gt;
 &lt;br /&gt;
 sys[4]   01 i R   hodnota '''LOCAL''' času (UNIX čas, v sekundách)&lt;br /&gt;
                    - jedná se o lokální (eventuálně posunutý) čas, synchronizovaný se NTP serverem&lt;br /&gt;
                    - je zde už předem započítán GMT offset sys[26] (ten lze nastavit ve webovém rozhraní)&lt;br /&gt;
                    - je zde aplikován automatický posun letního času (je-li to povoleno ve webovém rozhraní)&lt;br /&gt;
                    - poskytnuto je pouze 31 bitové číslo (bude platné až do 19. leden 2038 včetně, &lt;br /&gt;
                      pak hodnota roluje na nulu - nejvyšší bit je odmaskován před předáním do SDS-C programu)&lt;br /&gt;
                    - platné hodnoty: 0 až 2147483647 (včetně)&lt;br /&gt;
 &lt;br /&gt;
 sys[5]   01 i R   rozpad LOCAL času: den (1 až 31)&lt;br /&gt;
 sys[6]   01 i R   rozpad LOCAL času: měsíc (1 až 12)&lt;br /&gt;
 sys[7]   01 i R   rozpad LOCAL času: rok (2011 a dále)&lt;br /&gt;
 sys[8]   01 i R   rozpad LOCAL času: hodina (0 až 23)&lt;br /&gt;
 sys[9]   01 i R   rozpad LOCAL času: minuta (0 až 59)&lt;br /&gt;
 sys[10]  01 i R   rozpad LOCAL času: sekunda (0 až 59)&lt;br /&gt;
 sys[11]  01 i R   rozpad LOCAL času: číslo dne v týdnu - počet dní od Neděle (0 až 6)&lt;br /&gt;
&lt;br /&gt;
'''Upozornění''': hodnota LOCAL času je platná až po úspěšném získání informací z NTP serveru. Po zapnutí (restartu) zařízení je NTP čas (sys[38], sys[4]) nastaven na nulu. Čas je automaticky v SDS aktualizován co jednu sekundu pomocí vnitřních hodin v SDS, a dále je hodnota času pravidelně (v delším intervalu) upřesněna dotazem na NTP server.&lt;br /&gt;
&lt;br /&gt;
V případě, že není zapnuta automatika DST (letní čas) a GMT offset je nastaven na nulu, tak je hodnota LOCAL času identická s NTP časem (UTC). Jakmile se ale nastaví offset nebo aktivuje posun letního času, už jsou tyto hodnoty odlišné (NTP je UTC, a LOCAL je místní (posunutý) čas). Pro různé použití je potřeba různých časů (často je potřeba UTC pro časové známkování údajů, a zase někdy je vhodný LOCAL pro interakci s uživatelem a pro různé výpisy).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ethernet, Internet ==&lt;br /&gt;
&lt;br /&gt;
 sys[12]  01 i R   IP[0] adresa zařízení (nastaveno ve webové administraci)&lt;br /&gt;
 sys[13]  01 i R   IP[1] adresa zařízení&lt;br /&gt;
 sys[14]  01 i R   IP[2] adresa zařízení&lt;br /&gt;
 sys[15]  01 i R   IP[3] adresa zařízení&lt;br /&gt;
 &lt;br /&gt;
 sys[16]  01 i R   GW_IP[0] adresa brány (nastaveno ve webové administraci)&lt;br /&gt;
 sys[17]  01 i R   GW_IP[1] adresa brány&lt;br /&gt;
 sys[18]  01 i R   GW_IP[2] adresa brány&lt;br /&gt;
 sys[19]  01 i R   GW_IP[3] adresa brány&lt;br /&gt;
 &lt;br /&gt;
 sys[20]  01 i R   NETMASK[0] síťová maska (nastaveno ve webové administraci)&lt;br /&gt;
 sys[21]  01 i R   NETMASK[1] síťová maska&lt;br /&gt;
 sys[22]  01 i R   NETMASK[2] síťová maska&lt;br /&gt;
 sys[23]  01 i R   NETMASK[3] síťová maska&lt;br /&gt;
&lt;br /&gt;
 sys[24]  01 i R   stav rozhraní Ethernet (je spuštěno?)&lt;br /&gt;
                    == 0 : komunikace přes Ethernet není k dispozici (odpojený kabel, vypnutá protistrana nebo switch, atd.)&lt;br /&gt;
                    != 0 : Ethernetová komunikace je funkční (LINK OK)&lt;br /&gt;
 &lt;br /&gt;
 sys[25]  01 i R   rychlost připojení k síti Ethernet (hodnoty: 0, 10, 100)&lt;br /&gt;
                    == 0   : neznámá rychlost (není k dispozici Ethernet)&lt;br /&gt;
                    == 10  : 10 MBit per sec&lt;br /&gt;
                    == 100 : 100 MBit per sec&lt;br /&gt;
&lt;br /&gt;
 sys[26]  04 i RW  hodnota GMT offsetu pro NTP (nastaveno v administraci ve webovém rozhraní)&lt;br /&gt;
                    - platné hodnoty: -11 až 11 (včetně) (údaj v hodinách)&lt;br /&gt;
                    - zápis je možný, ale změněná hodnota (ze SDS-C) není uložena do pevné paměti &lt;br /&gt;
                      (po resetu zařízení se vráti na poslední uloženou hodnotu)&lt;br /&gt;
&lt;br /&gt;
 sys[27]  06 i R   platnost přidělené IP adresy zařízení SDS&lt;br /&gt;
                    == 0 : zařízení SDS nemá přidělenou platnou IP adresu (typický důvod: čeká se na DHCP)&lt;br /&gt;
                    != 0 : zařízení SDS má přidělenou platnou IP adresu a může komunikovat přes Ethernet&lt;br /&gt;
 &lt;br /&gt;
 sys[28]  06 i R   poslední okamžik kdy byla změněna IP adresa,&lt;br /&gt;
                   buď ručně z webového rozhraní (administrace) nebo DHCP serverem (je-li DHCP zapnuto)&lt;br /&gt;
                    - údaj odpovídá stavu UpTime10 (1 krok = 10 msec) v daný okamžik&lt;br /&gt;
 &lt;br /&gt;
 sys[29]  06 i R   DHCP: stav (lze použít pro kontrolu správné funkce DHCP klienta v SDS)&lt;br /&gt;
                    == 0 : v klidu (nic se neprovádí, nebo DHCP je vypnuté)&lt;br /&gt;
                    == 1 : odesláno DHCP DISCOVER&lt;br /&gt;
                    == 2 : obdrženo DHCP OFFER&lt;br /&gt;
                    == 3 : odesláno DHCP REQUEST&lt;br /&gt;
                    == 4 : obdrženo DHCP ACK&lt;br /&gt;
                    == 5 : IP adresa je přidělena (BOUND)&lt;br /&gt;
                    == 6,7,8,9,10,11 : zpracování DHCP RENEW&lt;br /&gt;
 &lt;br /&gt;
 sys[30]  06 i R   aktuální hodnota &amp;quot;DHCP Lease Time&amp;quot;&lt;br /&gt;
                    - hodnota je nastavena v okamžiku DHCP BOUND (při přidělení (nové) IP adresy)&lt;br /&gt;
                    - hodnota je každou 1 sec snížena o jednotku (když dojde na nulu, klient začne obnovovat IP adresu)&lt;br /&gt;
                    - údaj je uveden v jednotkách [sec]&lt;br /&gt;
&lt;br /&gt;
 sys[31]  04 i R   MAC[0] (celá MAC je nastavena ve webovém rozhraní)&lt;br /&gt;
 sys[32]  04 i R   MAC[1] &lt;br /&gt;
 sys[33]  04 i R   MAC[2] &lt;br /&gt;
 sys[34]  04 i R   MAC[3] &lt;br /&gt;
 sys[35]  04 i R   MAC[4] &lt;br /&gt;
 sys[36]  04 i R   MAC[5] (vždy je vyplněno dolních 8 bitů)&lt;br /&gt;
&lt;br /&gt;
 sys[37]  06 i R   NTP Client Status (synchronizace času)&lt;br /&gt;
                    == 0 : nesynchronizováno&lt;br /&gt;
                    == 1 : úspěšně přijal paket od NTP Serveru&lt;br /&gt;
               W   zápis hodnoty 10 (přesně a pouze: 10) do tohoto indexu vyvolá nucený NTP dotaz &lt;br /&gt;
                   (dotaz se odešle za 10sec od takovéhoto zápisu)&lt;br /&gt;
 &lt;br /&gt;
 sys[38]  07 i R   čistý UTC čas - v sekundách (UNIX Epoch čas)&lt;br /&gt;
                    - není zde aplikován offset, ani automatika letního času&lt;br /&gt;
                    - přímá hodnota získaná z NTP serveru (tj. jeho odpověď), &lt;br /&gt;
                      uvnitř SDS je sice udržována jako 32bit, &lt;br /&gt;
                      ale do SDS-C programu je hodnota předána jen jako 31bit číslo (nejvyšší 32.bit je odmaskován).&lt;br /&gt;
 &lt;br /&gt;
 sys[39]  07 i R   stav automatiky přepínání Letního Času&lt;br /&gt;
                    == 0 : automatika zakázána, lokální čas není ovlivněn&lt;br /&gt;
                    == 1 : automatika povolena, ale v současné době (podle NTP UTC času) je letní čas neaktivní (tzn. je &amp;quot;SEČ&amp;quot;).&lt;br /&gt;
                    == 2 : automatika povolena, a v současné době (podle NTP UTC času) je letní čas aktivní (tzn. je &amp;quot;SELČ&amp;quot;).&lt;br /&gt;
                           (tzn. do sys[4] je připočten nejen offset ze sys[26], ale teď také plus 1 hodina kvůli SELČ).&lt;br /&gt;
          09 i W   pouze pro případ vypnutého NTP: ruční ovládání automatiky (tzn. povolena nebo nepovolena) (SELČ pak automatika sama rozhodne, je-li povolena)&lt;br /&gt;
                    zápis 0 : vypnout automatiku (nebude pracovat = nebude aplikoval posun pro SELČ pro nastavený rozsah v roce), sys[39] pak vrátí 0 při čtení&lt;br /&gt;
                    zapis 3 : zapnout automatiku (automatika aplikuje posun pro SELČ podle toho jaký je aktuální čas a datum), sys[39] pak vrátí 1 nebo 2 dle stavu  &lt;br /&gt;
 &lt;br /&gt;
 sys[138] 09 i R   stav RTC (záloha času - pouze SDS se záložní baterií)&lt;br /&gt;
                   zatím stále 0, tzn. nepoužito, další obsah se chystá (nový FW)&lt;br /&gt;
 &lt;br /&gt;
 sys[139] 09 i R   vyhrazeno&lt;br /&gt;
&lt;br /&gt;
Princip funkce automatiky letního času je popsán jinde na této wiki. Funkce automatiky je samozřejmě volitelná (viz: ruční nastavení ve webovém rozhraní).&lt;br /&gt;
&lt;br /&gt;
 sys[40] až sys[44]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Provozní údaje ==&lt;br /&gt;
&lt;br /&gt;
 sys[45]  06 i R   relativní čas v milisekundách, počítaný od zapnutí zařízení (tj. UpTime1)&lt;br /&gt;
                    - po resetu zařízení začíná vždy počítat od nuly&lt;br /&gt;
                    - každou milisekundu se zvýší o 1 (narozdíl od UpTime10);&lt;br /&gt;
                      tzn. toto je velmi podobná hodnota jako UpTime, ale je v jiných jednotkách!&lt;br /&gt;
                    - pro sys[45] je k dispozici 31 bitů,&lt;br /&gt;
                      takže po 2147483648 msec dojde k vynulování sys[45] a počítá se opět od nuly nahoru&lt;br /&gt;
                      (pozn.: SDS si interně udržuje hodnotu jako 32bitů, ale do SDS-C programu se předává jen 31bitů).&lt;br /&gt;
&lt;br /&gt;
 sys[46]  06 i R   &amp;quot;surová&amp;quot; (raw) hodnota teploty SoC chipu (není to přímo teplota v degC, ale speciální digitální hodnota),&lt;br /&gt;
                   význam hodnot závisí na typu konkrétního zařízení SDS. &lt;br /&gt;
                   Je to dáno způsobem měření této teploty, a převod na stupně Celsia je jednoduchý, přes vzorec.&lt;br /&gt;
 &lt;br /&gt;
 SDS MICRO (LM), MACRO (LM), UPS, IO6 (LM): &lt;br /&gt;
  Vzorec pro přepočet na degC je [ teplota_SoC_v_degC = ((5*(59-30*((3/1024)*sys[46])))/2) ]&lt;br /&gt;
 &lt;br /&gt;
 SDS TTCPRO, MINI, MACRO-ST, MICRO-ST, IO6-ST: &lt;br /&gt;
  Vzorec pro přepočet na degC je [ teplota_SoC_v_degC = (((((sys[46]/4096)*3.3)-0.76)/0.0025)+25) ]&lt;br /&gt;
&lt;br /&gt;
Teplota SoC je pouze orientační, a je měřena s přesností +/- 5 degC.&lt;br /&gt;
&lt;br /&gt;
 sys[137] 09 i R   POUZE VARIANTY &amp;quot;ST&amp;quot; - počet provedených cyklů procesoru (provedených CPU instrukcí) od zapnutí/restartu &lt;br /&gt;
                   (při přetečení 2^31 počítá opět od nuly, pořád dokola)&lt;br /&gt;
&lt;br /&gt;
Hodnota v indexu 137 je nejjemnější možný &amp;quot;časovač&amp;quot;, dostupný pro program. Délka kroku jednotky odpovídá frekvenci jádra (ta je různá pro jednotlivá SDS, pro řadu ST typicky 120MHz, tedy 1 krok je 8.3nsec). &lt;br /&gt;
Tento index vyžaduje aktuální FW (11/2022 nebo novější).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rozhraní sériové komunikace ==&lt;br /&gt;
&lt;br /&gt;
SDS-C poskytuje přístup k sériovému rozhraní COM1 a COM6. Pouze rozhraní COM1 je také současně přístupno přes převodník Eth/UART (VCP). Program v SDS-C může přistupovat jak ke COM1, tak ke COM6.&lt;br /&gt;
&lt;br /&gt;
Pomocí SDS-C lze zapisovat do sériového rozhraní, a číst data ze sériového rozhraní. Data, přicházející z venku do zařízení SDS, jsou ukládána do příslušného bufferu (RX FIFO), takže lze pomocí SDS-C programu číst i pomaleji, než je rychlost příchozích dat. Buffery jsou malé (zhruba 1kB), proto je potřeba data zpracovávat rychle a včas, ať nedojde k jejich ztrátě.&lt;br /&gt;
&lt;br /&gt;
Poznámka: čtení z UART RX bufferů je k dispozci jen od verze SDS-C č. '''04''' (včetně) a výše. &lt;br /&gt;
Poznámka: UART buffery (pro obě sériové rozhraní) jsou neustále aktivní a příjem dat z UARTu probíhá po celou dobu zapnutí zařízení.&lt;br /&gt;
&lt;br /&gt;
Rozhraní COM1:&lt;br /&gt;
&lt;br /&gt;
 sys[48]  04 i R   informace, je-li přijímací (RX) buffer rozhraní UART-COM1 prázdný. Možné hodnoty:&lt;br /&gt;
                    == 0 : v RX bufferu je jeden popř. více znaků, lze je přečíst (buffer není prázdný)&lt;br /&gt;
                    == 1 : RX buffer je '''prázdný''' (nebyl přijat znak od posledního vyprázdnění bufferu)&lt;br /&gt;
 &lt;br /&gt;
 sys[49]  04 i R   čtení (vyjmutí) znaku z přijímacího (RX) bufferu rozhraní UART-COM1&lt;br /&gt;
                    - čtením tohoto sys[49] se vyjme právě jeden znak (je-li v bufferu nějaký k dispozici), &lt;br /&gt;
                      takže si dejte '''pozor''' protože po vyjmutí už tento znak v bufferu samozřejmě není ! &lt;br /&gt;
                      (Toto může způsobit nezkušenému programátorovi potíže). &lt;br /&gt;
                      Proto je vhodnější čtení ze sys[49] provést vždy jednou do vlastní proměnné, &lt;br /&gt;
                      a s tou pak dále dle libosti pracovat.&lt;br /&gt;
                   Možné hodnoty: &lt;br /&gt;
                    == 0 až 255 : hodnota právě vyjmutého znaku z RX bufferu (znak přijatý UARTem)&lt;br /&gt;
                    == -1       : v bufferu není jakýkoliv znak k dispozici (prázdný buffer)&lt;br /&gt;
&lt;br /&gt;
Poznámka: UART-COM1 buffer je '''vymazán vždy tehdy''', když se připojí TCP klient k převodníku Eth/UART - pozor!&lt;br /&gt;
&lt;br /&gt;
 sys[50]  02 i R   je připojen klient (Ethernet) k převodníku Eth/UART ?&lt;br /&gt;
                    == 0 : není připojen klient&lt;br /&gt;
                    != 0 : je připojen klient (přes TELNET port)&lt;br /&gt;
 sys[51]  02 i R   rychlost [bps] rozhraní UART - COM1 (viz převodník Eth/UART)&lt;br /&gt;
 sys[52]  02 i R   počet datových bitů rozhraní UART - COM1 (platné hodnoty - podle typu SDS: 5,6,7,8)&lt;br /&gt;
 sys[53]  02 i R   počet stop bitů rozhraní UART - COM1 (platné hodnoty - podle typu SDS: 1,2)&lt;br /&gt;
 sys[54]  02 i R   nastavení paritního bitu rozhraní UART - COM1 (platné hodnoty - podle typu SDS: 0,1,2,3,4,5)&lt;br /&gt;
&lt;br /&gt;
Poznámka: parametry sériového rozhraní UART COM1 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í).&lt;br /&gt;
&lt;br /&gt;
Rozhraní COM6:&lt;br /&gt;
&lt;br /&gt;
 sys[55]  04 i R   informace, je-li přijímací (RX) buffer rozhraní UART-COM6 prázdný. Možné hodnoty:&lt;br /&gt;
                    == 0 : v RX bufferu je jeden popř. více znaků, lze je přečíst (buffer není prázdný)&lt;br /&gt;
                    == 1 : RX buffer je '''prázdný''' (nebyl přijat znak od posledního vyprázdnění bufferu)&lt;br /&gt;
 &lt;br /&gt;
 sys[56]  04 i R   čtení (vyjmutí) znaku z přijímacího (RX) bufferu rozhraní UART-COM6&lt;br /&gt;
                    - čtením tohoto sys[56] se vyjme právě jeden znak (je-li v bufferu nějaký k dispozici)&lt;br /&gt;
                   Možné hodnoty: &lt;br /&gt;
                    == 0 až 255 : hodnota právě vyjmutého znaku z RX bufferu (znak přijatý UARTem)&lt;br /&gt;
                    == -1       : v bufferu není jakýkoliv znak k dispozici (prázdný buffer)&lt;br /&gt;
&lt;br /&gt;
 sys[57]  02 i R   rychlost [bps] rozhraní UART - COM6 &lt;br /&gt;
 sys[58]  02 i R   počet datových bitů rozhraní UART - COM6 (platné hodnoty - podle typu SDS: 5,6,7,8,9)&lt;br /&gt;
 sys[59]  02 i R   počet stop bitů rozhraní UART - COM6 (platné hodnoty - podle typu SDS: 1,2)&lt;br /&gt;
 sys[60]  02 i R   nastavení paritního bitu rozhraní UART - COM6 (platné hodnoty - podle typu SDS: 0,1,2,3,4,5)&lt;br /&gt;
&lt;br /&gt;
Rozhraní UART - COM6 je k dispozici jen na SDS-MINI, SDS-MICRO-ST a SDS-MACRO-ST, a je přístupné jen z SDS-C programu.&lt;br /&gt;
&lt;br /&gt;
Doplňující statistiky (počty rx/tx bajtů atd.) jsou k dispozici na indexu 2800+, viz dále na této stránce (dostupnost těchto údajů je závislá na instalovaném aktuálním FW ve vašem SDS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Generátor náhodných čísel ==&lt;br /&gt;
&lt;br /&gt;
 sys[61]  06 i R   generátor náhodných čísel&lt;br /&gt;
                    - při každém přečtení sys[61] je poskytnuto náhodné číslo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Výsledek převodu textu na číslo ==&lt;br /&gt;
&lt;br /&gt;
Pro převod textu (z určené pozice pole ''text'' či ''share'') na číslo se používá funkce SDS-C: ''atoi''. Aby bylo možné výsledek převodu získat, musíte si jej přečíst ze ''sys[62]''.&lt;br /&gt;
&lt;br /&gt;
 sys[62]  06 i RW  výsledek převodu provedeného funkcí '''atoi(text[index]);'''&lt;br /&gt;
&lt;br /&gt;
Pro více informací se podívejte přímo na návod k této funkci.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nastavení rychlosti provádění SDS-C programu ==&lt;br /&gt;
&lt;br /&gt;
SDS-C program může ovlivnit rychlost svého vykonávání. Buď se každá instrukce provede právě s minimálním krokem co 1 msec, nebo se dá tato (často žádoucí) vlastnost snadno vypnout. Pozor, hodnota 1 msec není vždy garantována, např. při zavolání funkce která pracuje s pomalou periférií dojde k čekání, dokud se požadovaná funkce nedokončí.&lt;br /&gt;
&lt;br /&gt;
 sys[63]  04 i RW  vypnutí rychlostního omezení běhu programu, nastavte na:&lt;br /&gt;
                    == 0   : (výchozí hodnota po spuštění programu) - jeden celý příkaz se provede '''co 1 msec'''&lt;br /&gt;
                    == 128 : program je prováděn s co největší rychlostí (bez zarovnávacího 1 msec kroku) &lt;br /&gt;
                             ( pozor ale na realizaci čekacích smyček, pak lze použít jen k tomu určené SDS-C funkce nebo sys[64] )&lt;br /&gt;
&lt;br /&gt;
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 programu je vykonán právě co 1 msec).&lt;br /&gt;
&lt;br /&gt;
Tohoto faktu (krok 1 msec) některé programy využívají k realizaci čekacích smyček, když se předpokládá jeden vykonaný příkaz za 1 msec. Není to však vhodné, protože SDS nedává garanci že se vždy bude jednat přesně o 1 msec (může docházet k náhodnému zdržení až o několik msec, v záležitosti na ostatní činnost systému). Pokud však vypnete toto rychlostní omezení, tak takové případné čekací smyčky přestanou plnit svou funkci (prakticky skončí mnohem dříve): proto ve svých programech používejte pouze k realizaci &amp;quot;čekání&amp;quot; pouze k tomu určené funkce, nebo případně sys[64] nebo některý z UpTime indexů či sys[137] atd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Časování ==&lt;br /&gt;
&lt;br /&gt;
Pro přesnější časování programu, popř. pro spuštění nějaké události po přesně daném intervalu, lze s výhodou využít následující proměnnou:&lt;br /&gt;
&lt;br /&gt;
 sys[64]  01 i RW  sekundový odpočítávač &lt;br /&gt;
                    - zapište libovolné kladné číslo, a systém každou vteřinu toto číslo sníží o 1, &lt;br /&gt;
                      až do nuly, kde v sys[64] zůstane nula (dokud tam zase něco nezapíšete)&lt;br /&gt;
                    - nejvyšší možná použitelná hodnota: (31-bitů) 2147483647 secs (včetně)&lt;br /&gt;
&lt;br /&gt;
Samozřejmě lze využít i jiné způsoby, ale tento je k tomu explicitně určen, vyhovuje-li hrubý krok 1 sekunda. Pro jemnější časování jsou pak vhodnější indexy s UpTime hodnotou, nebo sys[137] pro nejvíce jemné čekání - tyto indexy ale nemají funkci odpočítávání (jsou jen pro čtení), takže hlídání obsahu si už musíte řešit sami ve svém programu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OSI7 funkce ==&lt;br /&gt;
&lt;br /&gt;
OSI7 funkce jsou určeny pro komunikaci mezi SDS a vnějším světem připojeným přes Ethernet (např. se servery v Internetu).&lt;br /&gt;
&lt;br /&gt;
Všechny funkce OSI7 poskytují průběžný stav své činnosti:&lt;br /&gt;
 sys[65]  01 i R   status code - hlášení průběhu, úspěšnosti, nebo chyby OSI7 funkcí (DNS, HTTP-GET, email, ...)&lt;br /&gt;
                    - význam hodnot viz [[OSI7_status_code|popis zde]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
 sys[66]  01 i R   bajt IP[0] - vystup DNS resolveru, funkce ''dns_resolv(&amp;quot;dotazovanadomena.cz&amp;quot;);''&lt;br /&gt;
 sys[67]  01 i R   bajt IP[1] - vystup DNS resolveru, funkce ''dns_resolv(&amp;quot;dotazovanadomena.cz&amp;quot;);''&lt;br /&gt;
 sys[68]  01 i R   bajt IP[2] - vystup DNS resolveru, funkce ''dns_resolv(&amp;quot;dotazovanadomena.cz&amp;quot;);''&lt;br /&gt;
 sys[69]  01 i R   bajt IP[3] - vystup DNS resolveru, funkce ''dns_resolv(&amp;quot;dotazovanadomena.cz&amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
Pro funkci DNS resolveru je potřeba provést konfiguraci (přes webové rozhraní).&lt;br /&gt;
 sys[70]  01 i R   bajt DNS_R_IP[0] - adresa samotného DNS resolveru (DNS server)&lt;br /&gt;
 sys[71]  01 i R   bajt DNS_R_IP[1] - adresa samotného DNS resolveru&lt;br /&gt;
 sys[72]  01 i R   bajt DNS_R_IP[2] - adresa samotného DNS resolveru&lt;br /&gt;
 sys[73]  01 i R   bajt DNS_R_IP[3] - adresa samotného DNS resolveru&lt;br /&gt;
&lt;br /&gt;
 sys[74]  01 s R   text, reserved (v této verzi nepoužito)&lt;br /&gt;
&lt;br /&gt;
Rozšířená funkcionalita pro DNS resolver (pouze ve FW od 11/2025):&lt;br /&gt;
&lt;br /&gt;
 sys[303]  09 i R   DNS RESOLV - (read:) actual TTL live value (= 1..MAX, in seconds) for the very last resolved DNS name (or 0 = no resolv done or finished yet)&lt;br /&gt;
 sys[303]  09 i W   DNS RESOLV - write value 0xD65 (3429dec) to clear the DNS cache&lt;br /&gt;
 sys[304]  09 i R   DNS RESOLV - (read:) timestamp (UTC) of the latest DNS server response (packet) as requested by dns_resolv() function (if 0 then no response received, or cache has expired)&lt;br /&gt;
 sys[305]  09 i R   DNS RESOLV - (read:) get the last set hard TTL limit (0 = invalid (will use 1209600 as default), otherwise 1..MAX = time in seconds)&lt;br /&gt;
 sys[305]  09 i W   DNS RESOLV - set the hard TTL value limit (in seconds)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HTTP GET:&lt;br /&gt;
&lt;br /&gt;
 sys[75]  01 i R   návratový kód webového serveru pro HTTP GET (odpověď z webového serveru)&lt;br /&gt;
                    - nastaveno po dokončení práce funkce '''http_get()'''&lt;br /&gt;
                    - např. číslo '''200''' pro 'OK', '''404''' pro 'not found', a tak dále.&lt;br /&gt;
 &lt;br /&gt;
 sys[76]  03 i RW  číslo portu který chcete aby HTTP klient použil (výchozí hodnota po startu je '''80''')&lt;br /&gt;
                    - '''pozn.''' hodnota tohoto sys[76] se přebere v okamžiku zavolání '''http_get''',&lt;br /&gt;
                      pozdější zápisy mají vliv až zase v okamžiku dalšího zavolání '''http_get'''.&lt;br /&gt;
 &lt;br /&gt;
 sys[77]  04 i RW  ukládat data přijatá z HTTP serveru po obdržení odpovědi na HTTP GET požadavek&lt;br /&gt;
                   do pole ram[]. Tato funkce je výhodná pro okamžité řízení SDS-C programu. &lt;br /&gt;
                   Nastavte na:&lt;br /&gt;
 &lt;br /&gt;
                    == 0 : jakékoliv přijaté data jsou '''zahozena''', &lt;br /&gt;
                           neuloží se (nedojde ke změně obsahu ram[] nebo text[])&lt;br /&gt;
 &lt;br /&gt;
                    == 1 : prvních sys[78] bajtů odpovědi je vloženo do pole ram[] v rozsahu ram[1] až ram[sys[78]]&lt;br /&gt;
                           a do ram[0] je uložena délka odpovědi (tj. hodnota: -1, 0, 1, 2, ... až sys[78]).&lt;br /&gt;
                           (tzn. původní obsah této oblasti pole ram[] je přepsán)&lt;br /&gt;
                           (pokud bude obdržen znak 0x00 dříve, než se zapíše sys[78] bajtů do ram[], &lt;br /&gt;
                            bude zápis přerušen a přijatý 0x00 nebude uložen)&lt;br /&gt;
 &lt;br /&gt;
                    == 2 : prvních sys[78] bajtů odpovědi je vloženo do pole text[] v rozsahu text[0] až text[sys[78]]&lt;br /&gt;
                           a do ram[0] je uložena délka odpovědi (tj. hodnota: -1, 0, 1, 2, ... až sys[78]).&lt;br /&gt;
                           (tzn. původní obsah této oblasti pole text[] a položka ram[0] je přepsán)&lt;br /&gt;
                           (pokud bude obdržen znak 0x00 dříve, než se zapíše sys[78] bajtů do ram[], &lt;br /&gt;
                            bude zápis přerušen a přijatý 0x00 nebude uložen)&lt;br /&gt;
 &lt;br /&gt;
                   Hodnota do ram[0] je vždy zapsaná, ať je sys[77] jakékoliv. Počítejte s tím ve svém programu !&lt;br /&gt;
 &lt;br /&gt;
 sys[78]  04 i RW  počet bajtů, které CHCETE uložit do ram[] nebo text[] po přijetí HTTP GET odpovědi&lt;br /&gt;
                    - výchozí hodnota je '''32''' (tzn. uloží se 32 znaků + samostatně délka do ram[0])&lt;br /&gt;
                    - maximální hodnota je omezena velikostí pole ram[] nebo text[]&lt;br /&gt;
                    - pozor! pokud zapíšete '''0''', budou všechna data zahozena, &lt;br /&gt;
                      ale i v takovém případě dojde k přepisu ram[0] (viz výše)&lt;br /&gt;
&lt;br /&gt;
 sys[79] až sys[80]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
Pozor, v případě nenulového sys[77] HTTP klient čeká tak dlouho, dokud nedostane všech sys[78] bajtů odpovědi z protistrany. To je častou příčinou &amp;quot;problémů&amp;quot; kdy protistrana neodpoví dostatečně dlouhou odpovědí, a klient má stále otevřené spojení a stále čeká a čeká... až dojde na timeout. Což je pak potřeba důsledně a správně ošetřit ve vašem SDS-C programu.&lt;br /&gt;
&lt;br /&gt;
Pro funkci SMTP je potřeba provést konfiguraci (přes webové rozhraní):&lt;br /&gt;
 sys[81]  01 i R   bajt SMTP_S_IP[0] - adresa SMTP serveru (je použita pro funkci '''smtp_send()''')&lt;br /&gt;
 sys[82]  01 i R   bajt SMTP_S_IP[1] - adresa SMTP serveru&lt;br /&gt;
 sys[83]  01 i R   bajt SMTP_S_IP[2] - adresa SMTP serveru&lt;br /&gt;
 sys[84]  01 i R   bajt SMTP_S_IP[3] - adresa SMTP serveru&lt;br /&gt;
&lt;br /&gt;
 sys[85] až sys[88]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
Informace z ('''interní''') ICMP PING funkcionality &amp;quot;IP Watchdog&amp;quot; (konfigurace a ovládání přes webové rozhraní SDS) (nemá souvislost s SDS-C funkcí &amp;quot;ping()&amp;quot; ) :&lt;br /&gt;
&lt;br /&gt;
 sys[89]  06 i R   IP-Watchdog: stav&lt;br /&gt;
                    == 0 : není v provozu (neaktivováno ve webovém rozhraní)&lt;br /&gt;
                    != 0 : v provozu (uživatel aktivoval IP-Watchdog ve webovém rozhraní)&lt;br /&gt;
 &lt;br /&gt;
 sys[90]  06 i R   IP-Watchdog: poslední známé RTT&lt;br /&gt;
                    == 0 .. 65533 : hodnota RTT v msec&lt;br /&gt;
                    &amp;gt;= 65534      : hodnota není k dispozici (nebyl obdržen PING response)&lt;br /&gt;
 &lt;br /&gt;
 sys[91]  06 i R   IP-Watchdog: stav výstupu&lt;br /&gt;
                    == 0 : výstup není aktivován&lt;br /&gt;
                    != 0 : výstup je aktivován (nebyl obdržen PING response podle zadaných požadavků)&lt;br /&gt;
&lt;br /&gt;
Informace z (SDC-C) ICMP PING funkce - '''ping()''' :&lt;br /&gt;
&lt;br /&gt;
 sys[92]  04 i R   stav ICMP PING RESPONSE v okamžiku čtení tohoto sys[92] &lt;br /&gt;
                    == 0 : klid (není odeslán paket, nečekám na odpověď), &lt;br /&gt;
                           popř. byla zadána neplatná IP adresa do funkce '''ping()''' a proto se nic neodešle&lt;br /&gt;
                    == 1 : funkce '''ping()''' byla právě zavolána, &lt;br /&gt;
                           takže se teprve chystá provést svou činnost, zatím se neví výsledek odesílání&lt;br /&gt;
                    == 2 : čeká se na odpověď od ARP &lt;br /&gt;
                           (POZOR! Znamená to že místo ICMP PING REQUEST paketu byl odeslán ARP paket, &lt;br /&gt;
                           protože v ARP tabulce nebyl příslušný záznam)&lt;br /&gt;
                    == 4 : poslán ECHO REQUEST, čekám na ECHO REPLY &lt;br /&gt;
                          (požadovaný stav, funkce '''ping()''' funguje ok)&lt;br /&gt;
                    == 8 : právě obdržel ECHO REPLY &lt;br /&gt;
                          (byla přijata odpověď od vzdáleného zařízení)&lt;br /&gt;
 &lt;br /&gt;
 sys[93]  04 i R   PING SEQ number &lt;br /&gt;
                    - hodnota je nastavena na '''-1''' dokud není přijata odpověď ICMP PING RESPONSE &lt;br /&gt;
                      na ICMP PING REQUEST odeslaný funkcí '''ping()'''&lt;br /&gt;
 &lt;br /&gt;
 sys[94]  04 i R   Round Trip Time, v milisekundách&lt;br /&gt;
                    - dokud není přijata platná ICMP PING RESPONSE tak je zde hodnota '''0xFFFF'''&lt;br /&gt;
                    - čas je zvyšován po pěti milisekundách (údaj v sys[94] je přímo v msec, např. hodnota 55 znamená 55 msec)&lt;br /&gt;
&lt;br /&gt;
Pozn.: ICMP Quench (32bit) je sestaven z &amp;quot;identifier&amp;quot; (16bit) a z &amp;quot;sequence number&amp;quot;. Pomocí sys[93] můžete nastavit '''číslo sekvence''' na libovolnou hodnotu, přičemž hodnota &amp;quot;identifier&amp;quot; je napevno nastavena na &amp;quot;'''0x0280'''&amp;quot; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Funkce '''send_udp()''':&lt;br /&gt;
&lt;br /&gt;
 sys[95]  06 i R   výsledek posledního volání '''send_udp()'''&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : nic neprovedeno&lt;br /&gt;
                           Hodnota '''0''' je nastavena po startu SDS-C programu&lt;br /&gt;
                    == 1 : právě bylo zahájeno odesílání paketu (provádí se)&lt;br /&gt;
                           nastaveno okamžitě po jakémkoliv zavolání '''send_udp()'''.&lt;br /&gt;
                    == 2 : byl odeslán UDP paket, úspěšně&lt;br /&gt;
                           Hodnota '''2''' je nastavena až v okamžiku úspěšného skutečného odeslání UDP paketu&lt;br /&gt;
                    == 3 : nebyl odeslán UDP paket, protože byl místo toho odeslán ARP dotaz &lt;br /&gt;
                           Hodnota '''3''' je nastavena, pokud není známá MAC pro zadanou IP &lt;br /&gt;
                           a byl tedy místo požadovaného UDP paketu odeslán ARP dotaz&lt;br /&gt;
                    == 4 : zavolali jste funkci '''send_udp()''' dříve, &lt;br /&gt;
                           než byla dokočena činnost předchozího požadavku &lt;br /&gt;
                           (sledujte hodnotu sys[95] a správně ji vyhodnocujte, a nestane se vám to)&lt;br /&gt;
                    == 5 : byly zadány neplatné parametry (neplatná IP, nebo port, nebo index či délka dat)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Funkce '''snmp_send_trap()''':&lt;br /&gt;
&lt;br /&gt;
 sys[96]  06 i R   výsledek posledního volání '''snmp_send_trap()'''&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : odesílání neprobíhá&lt;br /&gt;
                    == 1 : probíhá odesílání, výsledek ještě není znám&lt;br /&gt;
                    == 2 : odeslání se povedlo &lt;br /&gt;
                    == 3 : odeslání se nepovedlo (neplatné parametry při zavolání funkce)&lt;br /&gt;
                    == 4 : odeslání se nepovedlo (není známý ARP záznam pro udanou host IP)&lt;br /&gt;
                    == 5 : odeslání se nepovedlo (právě pracuje (odesílá své data) některá jiná funkce, např. http_get)&lt;br /&gt;
&lt;br /&gt;
 sys[97]           RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zápis textu do pole, Porovnání textů ==&lt;br /&gt;
&lt;br /&gt;
Položka ''sys[98]'' je využita více SDS-C funkcemi, přičemž všechny tyto funkce pracují s polem ''text[]''.&lt;br /&gt;
&lt;br /&gt;
 sys[98]     i R   společné využití viz (1) a (2)&lt;br /&gt;
 &lt;br /&gt;
          06 i R   (1) číslo indexu do pole ''text[]'' kam byla zapsána terminační 0x00,&lt;br /&gt;
                       tj. ukazatel kde byl aktuální konec zápisu do pole ''text[]'', &lt;br /&gt;
                       což je hodnota užitečná pro navázání textu (zápis více textů přesně za sebou), popř. určení délky posledního zápisu:&lt;br /&gt;
                        - kam byla zapsána terminační 0x00 funkcí '''sprintf()'''&lt;br /&gt;
                        - kam byla zapsána terminační 0x00 funkcí '''itoh()''' &lt;br /&gt;
                        - kam byla zapsána terminační 0x00 funkcí '''itoa()''' &lt;br /&gt;
 &lt;br /&gt;
          08 i R   (2) výsledek porovnání textů&lt;br /&gt;
                        - hodnota výsledku zavolání funkce '''textcmp()'''&lt;br /&gt;
                            X &amp;lt; 0  : (texty jsou rozdílné): první nalezený nestejný znak má nižší vlastní hodnotu v poli ''text[]'' než v porovnávaném řetězci&lt;br /&gt;
                            X == 0 : oba texty jsou identické&lt;br /&gt;
                            X &amp;gt; 0  : (texty jsou rozdílné): první nalezený nestejný znak má nižší vlastní hodnotu v porovnávaném řetězci než v poli ''text[]''&lt;br /&gt;
&lt;br /&gt;
Význam &amp;quot;nižší vlastní hodnoty&amp;quot;: znak 'a' má nižší hodnotu než 'b', a to o 1; nebo např. '1' má nižší hodnotu než '4' a to o 3.&lt;br /&gt;
&lt;br /&gt;
Doporučeno je si to vše vyzkoušet (zavolat si každou uvedenout funkci a srovnat hodnotu v sys[98] s obsahem pole ''text[]'').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Uživatelské pozice v pevné paměti == &lt;br /&gt;
&lt;br /&gt;
 sys[99]  05 i RW  předávací proměnná pro čtení a zápis z/do paměti [[SDS-C: DataFlash|dataflash]]&lt;br /&gt;
&lt;br /&gt;
 sys[100] až sys[115]  &lt;br /&gt;
          01 i RW  data uložená do permanentní paměti = co se sem napíše zůstane i po vypnutí zařízení,&lt;br /&gt;
                   můžete si sem uložit co chcete (tj. 16x signed long délky 32bit),&lt;br /&gt;
                    - po speciálním systémovém resetu (RSTD) je vše nastaveno na 0xFFFFFFFF &lt;br /&gt;
                    - pozor! minimalizujte množství zápisů, životnost této paměti není neomezená !&lt;br /&gt;
                    - zápis do těchto sys[] přímo ihned fyzicky zapíše do pevné paměti &lt;br /&gt;
                    - čtení těchto sys[] způsobí přímé fyzické čtení pevné paměti &lt;br /&gt;
&lt;br /&gt;
Paměť EEPROM a paměť DATAFLASH (podle verze HW který máte) je permanentní (NVM), tzn. její obsah zůstane i po vypnutí zařízení nezměněn (na rozdíl od &amp;lt;u&amp;gt;ne&amp;lt;/u&amp;gt;zálohované paměti RAM, do které se přistupuje pomocí pole ''ram[]'').&lt;br /&gt;
&lt;br /&gt;
''' Reserved '''&lt;br /&gt;
&lt;br /&gt;
 sys[116] až sys[136]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proměnné nastavitelné uživatelem z webového rozhraní ==&lt;br /&gt;
&lt;br /&gt;
Pomocí &amp;quot;uživatelských proměnných&amp;quot; (někdy taky &amp;quot;sdílených proměnných&amp;quot;) lze snadno ovlivnit chod vašeho SDS-C programu, ale jen tak, jak si do něj sami naprogramujete - uživatelské proměnné neovlivňují samotný program, ale program je může číst a následně zpracovat.&lt;br /&gt;
&lt;br /&gt;
 sys[140] až sys[149] &lt;br /&gt;
          01 i RW  &amp;quot;uživatelské proměnné&amp;quot;, které můžete měnit &amp;quot;z webu&amp;quot; (správně formulovaným HTTP GET dotazem)&lt;br /&gt;
                   (vždy 32-bit signed integer)&lt;br /&gt;
&lt;br /&gt;
 sys[150] 01 i RW  blokování přístupu k možnosti změny obsahu &amp;quot;uživatelských proměnných&amp;quot; z webu&lt;br /&gt;
                   Nastavení:&lt;br /&gt;
                    == 0 : stránka &amp;quot;control&amp;quot; je přístupná bez hesla, &lt;br /&gt;
                    != 0 : pro přístup je nutno se přihlásit (uživatel je vyzván k příhlášení)&lt;br /&gt;
&lt;br /&gt;
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. Dvě doplňkové proměnné nejsou na výchozí webové stránce dostupné, ale jinak s nimi lze bez jiných omezení pracovat (SDS-C, M2M).&lt;br /&gt;
&lt;br /&gt;
Zápisem do ''sys[150]'' můžete nastavit bezpečnost přístupu k této webové stránce.&lt;br /&gt;
&lt;br /&gt;
Adresa webové stránky je (IP je zde pro příklad): http://192.168.1.250/control (více informací [[SDSC: sharing|zde]]).&lt;br /&gt;
&lt;br /&gt;
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í.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proměnné vstupů a výstupů pro všechny výrobky SDS ==&lt;br /&gt;
&lt;br /&gt;
'''POZOR'''&lt;br /&gt;
&lt;br /&gt;
'''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-LM má pouze dva reléové výstupy, kdežto SDS-MACRO-LM má čtyři.&lt;br /&gt;
&lt;br /&gt;
Vždy máme vyhrazeno 32 indexů pro vstupy a výstupy. Tyto indexy jsou tedy naplánovány pro (budoucí) maximální konfiguraci, ale většina SDS k nim nemá odpovídající HW (např. nemá všech 32 relé). Zápis a čtení do/z indexů, které nemají odpovídající fyzický protějšek, je zakázán (bude SDS ignorován, a hodnota nebude uložena pro pozdější čtení).&lt;br /&gt;
&lt;br /&gt;
'''Pokračování výpisu:'''&lt;br /&gt;
&lt;br /&gt;
 sys[151] až sys[182]  &lt;br /&gt;
          01 i R   stav binárního vstupu OPTO1 až OPTO32 (optočlen)&lt;br /&gt;
                    - hodnota odpovídá fyzickému stavu vstupů (zda-li je nebo není přítomen signál na LED optočlenu)&lt;br /&gt;
                    - pozor, hodnota '''0''' skutečně znamená přítomnost signálu&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : (nulová hodnota)             signál přítomen (napětí na LED = svítící LED v optočlenu)&lt;br /&gt;
                    != 0 : (libovolná nenulová hodnota) bez signálu (LED v optočlenu nesvítí)&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Důležité info:'''&lt;br /&gt;
&lt;br /&gt;
Pokud je (uvnitŘ SDS) na LED vstupního 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). &lt;br /&gt;
&lt;br /&gt;
Pozor - &amp;quot;logika&amp;quot; optických vstupů je tedy na první pohled &amp;quot;obrácená&amp;quot; (avšak dává to přesný smysl). Jen je to potřeba vědět při psaní SDS-C programu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stav SDS-C programu ==&lt;br /&gt;
&lt;br /&gt;
Informace o verzi firmware modulu SDS (vhodné např. pro kontrolu, že uživatel používá nejnovější firmware, tak jak má).&lt;br /&gt;
&lt;br /&gt;
 sys[183] 08 i RW  verze nainstalovaného firmware v SDS modulu&lt;br /&gt;
                   (hex: 0x00DDMMYY, nebo jen 0x00000000 u starších FW)&lt;br /&gt;
&lt;br /&gt;
Příklad: FW v SDS je (pro příklad) ze dne 24.12.2018, takže v ''sys[183]'' bude zakódováno jako 0x00180C12, tedy hodnoty 24dec 12dec 18dec zapsány jako 0x18 0x0C 0x12, což je 0x18C0C12 což je 1575954dec.&lt;br /&gt;
&lt;br /&gt;
Informace o způsobu, jakým byl aktuální běh SDS-C programu spuštěn:&lt;br /&gt;
&lt;br /&gt;
 sys[184] 08 i RW  způsob spuštění SDS-C programu&lt;br /&gt;
                   == 0 : bez informace&lt;br /&gt;
                   == 1 : standardní spuštění SDS-C programu po běžném startu zařízení SDS&lt;br /&gt;
                   == 2 : program SDS-C byl (znovu) spuštěn na základě restartu od watchdogu (byl timeout)&lt;br /&gt;
                   == 4 : program SDS-C byl čerstvě nahrán z EXE aplikace&lt;br /&gt;
&lt;br /&gt;
Stav SDS-C watchdogu:&lt;br /&gt;
&lt;br /&gt;
 sys[185] 08 i R   hodnota odpočítávání SDS-C watchdogu v msec&lt;br /&gt;
                   == -1 : wdg není aktivní&lt;br /&gt;
                   ==  0 : odpočet vypršel, dojde k resetu SDS-C programu&lt;br /&gt;
                   1..2147482000 : aktuální hodnota odpočtu (snižuje se o 1 každou milisekundu)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pulse-Width Modulation výstupy ==&lt;br /&gt;
&lt;br /&gt;
Některá SDS mají pouze jeden PWM výstup (PWM1), některá mají čtyři výstupy (rozdělené po dvou do dvou skupin: PWM1 a PWM2, pak PWM3 a PWM4).&lt;br /&gt;
&lt;br /&gt;
''Příklad pro PWM1:'' Konfigurace PWM1 výstupu nejprve vyžaduje zápis do sys[191], aby se nejprve nastavila provozní základní frekvence generátoru.&lt;br /&gt;
Následně lze PWM1 výstup řídit zápisem do sys[192], kdy se podle zapsané hodnoty nastaví střída PWM výstupu (poměr log0 a log1).&lt;br /&gt;
Alternativně lze zápis do sys[192] nahradit zápisem do sys[193], toto lze kombinovat.&lt;br /&gt;
Zápis do sys[191] je potřeba jen jednou (tedy jen tehdy, když je potřeba PWM1 výstup zapnout nebo vypnout, a kdy je potřeba změnit frekvenci generátoru). &lt;br /&gt;
Zápisy do sys[192] a nebo sys[193] se pak mohou dít samostatně (tj. není potřeba pokaždé opakovat zápis do sys[191]).&lt;br /&gt;
&lt;br /&gt;
Různé typy SDS mají jiný způsob obsluhy PWM generátoru - pozor !&lt;br /&gt;
&lt;br /&gt;
Pozor, pro tyto typy SDS:&lt;br /&gt;
&lt;br /&gt;
 SDS '''UPS''', SDS '''IO6 (LM)''', SDS '''IO6-ST''' a SDS '''TTCPRO''' &lt;br /&gt;
 &lt;br /&gt;
 Tyto výrobky nemají PWM výstup (zápis do příslušných sys[] zde nemá význam).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Podle typu SDS:&lt;br /&gt;
&lt;br /&gt;
 SDS '''MICRO (LM)''' a SDS '''MACRO (LM)''' - pouze jeden PWM výstup (PWM1)&lt;br /&gt;
 &lt;br /&gt;
 sys[191] 01 i RW  &amp;quot;Fm&amp;quot; = frekvence PWM1 výstupu [Hz]&lt;br /&gt;
                    - do SDS-C č. '''03''': specifický omezený rozsah (souvisí se starým firmware)(bylo v rozsahu: 2 až 10000000).&lt;br /&gt;
                    - pozn. od SDS-C č. '''04''': lze nastavit hodnotu od ''24'' (24Hz) do ''49999998'' (49.999998Mhz)&lt;br /&gt;
 &lt;br /&gt;
 sys[192] 01 i RW  poměr nastavení &amp;quot;pulse-width&amp;quot; PWM1 výstupu (výchozí způsob nastavování PWM generátoru)&lt;br /&gt;
                    - do SDS-C č. '''03''': specifický omezený rozsah (souvisí se starým firmware)&lt;br /&gt;
                    - od SDS-C č. '''04''': lze nastavit hodnotu od 0 do &amp;quot;Fm&amp;quot; (např. &amp;quot;Fm / 2&amp;quot; představuje PWM signál 1:1).&lt;br /&gt;
 &lt;br /&gt;
 sys[193] 06 i RW  ruční přímý zápis do registru PWM1 generátoru &lt;br /&gt;
                    - tzn. není předzpracováno jako sys[192], tzn. jedná se o alternativu k sys[192]&lt;br /&gt;
                    - tato hodnota není aktualizována vůči sys[192], ani není archivována&lt;br /&gt;
                    - rozsah: ''0'' až &amp;quot;Fm&amp;quot; (tj. ''0'' až sys[191]).&lt;br /&gt;
&lt;br /&gt;
Doporučení je vždy si ověřit vzájemné závislosti konfigurace PWM výstupu osciloskopem.&lt;br /&gt;
&lt;br /&gt;
Hodnoty Fm větší než 1MHz prakticky nemají smysl, snažte se navrhnout svůj systém tak, aby dokázal pracovat ideálně nejvýše ve stovkách kHz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Další typy SDS - všimněte si rozdílu ''významu'' jednotlivých indexů vůči vůči tabulce výše.&lt;br /&gt;
&lt;br /&gt;
 SDS '''MINI''', SDS '''MICRO-ST''' - pouze jeden PWM výstup (PWM1)&lt;br /&gt;
 SDS '''MACRO-ST''' - čtyři PWM výstupy (zde: první skupina PWM1 a PWM2, druhá skupina je popsána dále)&lt;br /&gt;
 &lt;br /&gt;
 sys[191] 07 i RW  &amp;quot;Fm&amp;quot; = (společná) frekvence pro '''PWM1 a PWM2''' výstupy [Hz]&lt;br /&gt;
                    - zápis hodnot: 1 až 1000000 (odpovídá 1Hz až 1MHz) aktivuje PWM výstupy (lze dále řídit podle sys[192] až sys[195])&lt;br /&gt;
                    - zápis hodnoty 0 vypne PWM1 a PWM2 výstupy (výstup trvale neaktivní) - pro opětovné zapnutí zapište nenulovou hodnotu&lt;br /&gt;
 &lt;br /&gt;
 sys[192] 07 i RW  duty-cycle '''PWM1''' výstupu v procentech (výchozí způsob nastavování PWM generátoru)&lt;br /&gt;
                    - povolené rozmezí 0 až 100 (0% až 100%)&lt;br /&gt;
                    - před zápisem do sys[192] musí být nastavena frekvence generátoru (nenulový zápis do sys[191])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[191] == 0 (nula), tak jsou všechny zápisy do sys[192] ignorovány (nejsou zapamatovány)&lt;br /&gt;
 &lt;br /&gt;
 sys[193] 07 i  W  duty-cycle '''PWM1''' výstupu v mikrosekundách (druhý možný způsob nastavování PWM generátoru)&lt;br /&gt;
                    - pouze pro zápis, pozor !&lt;br /&gt;
                    - povolené rozmezí 0 až X (kde X závisí na sys[191] a vypočte se jako: X = 1000000 / sys[191]; - pozor !)&lt;br /&gt;
                    - před zápisem do sys[193] musí být nastavena frekvence generátoru (nenulový zápis do sys[191])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[191] == 0 (nula), tak jsou všechny zápisy do sys[193] ignorovány (nejsou zapamatovány)&lt;br /&gt;
                    - POZOR čtení nedává hodnotu v mikrosekundách, ale přímo hodnotu z registru generátoru&lt;br /&gt;
 &lt;br /&gt;
 sys[194] 07 i RW  duty-cycle '''PWM2''' v procentech (výchozí způsob nastavování PWM generátoru)&lt;br /&gt;
                    - povolené rozmezí 0 až 100 (0% až 100%)&lt;br /&gt;
                    - před zápisem do sys[194] musí být nastavena frekvence generátoru (nenulový zápis do sys[191])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[191] == 0 (nula), tak jsou všechny zápisy do sys[194] ignorovány (nejsou zapamatovány)&lt;br /&gt;
 &lt;br /&gt;
 sys[195] 07 i  W  duty-cycle '''PWM2''' výstupu v mikrosekundách&lt;br /&gt;
                    - pouze pro zápis, pozor !&lt;br /&gt;
                    - povolené rozmezí 0 až X (kde X závisí na sys[191] a vypočte se jako: X = 1000000 / sys[191]; - pozor !)&lt;br /&gt;
                    - před zápisem do sys[195] musí být nastavena frekvence generátoru (nenulový zápis do sys[191])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[191] == 0 (nula), tak jsou všechny zápisy do sys[195] ignorovány (nejsou zapamatovány)&lt;br /&gt;
                    - POZOR čtení nedává hodnotu v mikrosekundách, ale přímo hodnotu z registru generátoru&lt;br /&gt;
&lt;br /&gt;
 SDS '''MACRO-ST''' - čtyři PWM výstupy (zde druhá skupina: PWM3 a PWM4)&lt;br /&gt;
 &lt;br /&gt;
 sys[186] 09 i RW  &amp;quot;Fm&amp;quot; = (společná) frekvence pro '''PWM3 a PWM4''' výstupy [Hz]&lt;br /&gt;
                    - zápis hodnot: 1 až 1000000 (odpovídá 1Hz až 1MHz) aktivuje PWM výstupy (lze dále řídit podle sys[187] až sys[190])&lt;br /&gt;
                    - zápis hodnoty 0 vypne PWM3 a PWM4 výstupy (výstup trvale neaktivní) - pro opětovné zapnutí zapište nenulovou hodnotu&lt;br /&gt;
 &lt;br /&gt;
 sys[187] 09 i RW  duty-cycle '''PWM3''' v procentech&lt;br /&gt;
                    - povolené rozmezí 0 až 100 (0% až 100%)&lt;br /&gt;
                    - před zápisem do sys[187] musí být nastavena frekvence generátoru (nenulový zápis do sys[186])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[186] == 0 (nula), tak jsou všechny zápisy do sys[187] ignorovány (nejsou zapamatovány)&lt;br /&gt;
&lt;br /&gt;
 sys[188] 09 i  W  duty-cycle '''PWM3''' výstupu v mikrosekundách&lt;br /&gt;
                    - pouze pro zápis, pozor !&lt;br /&gt;
                    - povolené rozmezí 0 až X (kde X závisí na sys[186] a vypočte se jako: X = 1000000 / sys[186]; - pozor !)&lt;br /&gt;
                    - před zápisem do sys[188] musí být nastavena frekvence generátoru (nenulový zápis do sys[186])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[186] == 0 (nula), tak jsou všechny zápisy do sys[188] ignorovány (nejsou zapamatovány)&lt;br /&gt;
                    - POZOR čtení nedává hodnotu v mikrosekundách, ale přímo hodnotu z registru generátoru&lt;br /&gt;
 &lt;br /&gt;
 sys[189] 09 i RW  duty-cycle '''PWM4''' v procentech&lt;br /&gt;
                    - povolené rozmezí 0 až 100 (0% až 100%)&lt;br /&gt;
                    - před zápisem do sys[189] musí být nastavena frekvence generátoru (nenulový zápis do sys[186])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[186] == 0 (nula), tak jsou všechny zápisy do sys[189] ignorovány (nejsou zapamatovány)&lt;br /&gt;
 &lt;br /&gt;
 sys[190] 09 i  W  duty-cycle '''PWM4''' výstupu v mikrosekundách&lt;br /&gt;
                    - pouze pro zápis, pozor !&lt;br /&gt;
                    - povolené rozmezí 0 až X (kde X závisí na sys[186] a vypočte se jako: X = 1000000 / sys[186]; - pozor !)&lt;br /&gt;
                    - před zápisem do sys[190] musí být nastavena frekvence generátoru (nenulový zápis do sys[186])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[186] == 0 (nula), tak jsou všechny zápisy do sys[190] ignorovány (nejsou zapamatovány)&lt;br /&gt;
                    - POZOR čtení nedává hodnotu v mikrosekundách, ale přímo hodnotu z registru generátoru&lt;br /&gt;
&lt;br /&gt;
Doporučení je vždy si ověřit vzájemné závislosti konfigurace PWM výstupů osciloskopem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ovládání výstupů - Relé ==&lt;br /&gt;
&lt;br /&gt;
Zápisem do následujících systémových proměnných přímo ovládáte fyzické relé (výstupy) zařízení SDS. Pozor, protože hodnoty zapsané z SDS-C programu se záměrně neukládají do pevné paměti (tzn. nejsou načteny po resetu zařízení SDS). Je to z důvodu bezpečnosti (aby se např. neseplo relé po dlouhém výpadku napájení). Váš program si s tím musí umět poradit - vždy po zapnutí SDS musí vyhodnotit aktuální situaci a až podle toho zapínat relé.&lt;br /&gt;
&lt;br /&gt;
 sys[196] až sys[228]   &lt;br /&gt;
          01 i RW  informace, kdo ovládá '''RE1''' až '''RE32'''&lt;br /&gt;
                    - lze nastavit i z webového rozhraní&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : ovládáno z webového rozhraní (ruční řízení - trvale zapnuto, trvale vypnuto)&lt;br /&gt;
                    == 2 : ovládáno z SDS-C programu (zápis do sys[], je ignorováno nastavení na webu)&lt;br /&gt;
                    == 4 : ovládáno z IP Watchdogu (interní IP watchdog, nastavuje se přes web)&lt;br /&gt;
&lt;br /&gt;
 sys[229] až sys[230]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
 sys[231] až sys[262]   &lt;br /&gt;
          01 i RW  stav výstupu RE1 až RE32 (= zápis do tohoto sys[] přímo ovládá relé)&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : relé není aktivní &lt;br /&gt;
                           (cívka relé bez proudu, MICRO-LM: mosfet není sepnut)&lt;br /&gt;
                    != 0 : relé je aktivní &lt;br /&gt;
                           (cívka relé pod proudem, MICRO-LM: mosfet je sepnut = výstup REx je spojen na GND)&lt;br /&gt;
&lt;br /&gt;
 sys[263] až sys[265]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
 sys[266] až sys[298]   &lt;br /&gt;
          01 s R   uživatelský textový název pro '''RE1''' až '''RE32''' &lt;br /&gt;
                    - nastaveno ve webovém rozhraní&lt;br /&gt;
&lt;br /&gt;
 sys[264] až sys[300]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ovládání PDx ==&lt;br /&gt;
&lt;br /&gt;
Jednotlivé moduly SDS mají k dispozici dodatečné vstupy a výstupy, označené jako PDx respektive TOPB. Přesný seznam viz návod ke konkrétním modulům.&lt;br /&gt;
&lt;br /&gt;
Stav vstupu (je-li PDx jako vstup) nebo výstupu (je-li PDx jako výstup):&lt;br /&gt;
&lt;br /&gt;
 sys[301] 01 i RW  SDS '''MICRO LM LIGHT''': stav i/o pinu D0 (0 = log0 ; nenulová hodnota v sys = log1 přítomna na pinu)&lt;br /&gt;
                   SDS '''MICRO LM DIN''' a SDS '''MACRO LM''': stav výstupu D0 - MOSFET spínač na GND. Při jakékoliv nenulové hodnotě v sys[301] je MOSFET sepnutý (=D0 na GND), jinak je D0 otevřený (HiZ)&lt;br /&gt;
                   SDS '''TTCPRO''': stav všech osmi pinů v portu PDx (nastavením/čtením sys[301] se přistupuje k jednotlivých osmi bitům v bajtu, kde: bit0=PD0 až bit7=PD7)&lt;br /&gt;
                   SDS '''MINI''': bit0 = stav i/o pinu TOPB, bit1 = stav padu PD1, ostatní bity (2..7) nepoužity&lt;br /&gt;
                   SDS '''UPS''': nepoužito&lt;br /&gt;
                   SDS '''IO6''': nepoužito&lt;br /&gt;
                   SDS '''MICRO-ST''': bit0 = stav PD0 MOSFET spínače (spíná na GND), bit1 = stav i/o pinu TOPB, ostatní bity (2..7) nepoužity&lt;br /&gt;
                   SDS '''IO6-ST''': nepoužito&lt;br /&gt;
                   SDS '''MACRO-ST''': bit0 = stav PD0, bit1 = stav PD1, bit2 = stav i/o pinu TOPB, bit3 = TL-1, bit4 = stav TL-2, ostatní bity (5..7) nepoužity&lt;br /&gt;
&lt;br /&gt;
Řízení směru pro jednotlivé PDx resp. TOPB:&lt;br /&gt;
&lt;br /&gt;
 sys[302] 06 i RW  SDS '''MICRO LM LIGHT''': směr i/o pinu D0 (zápisem bit0 do 1 se nastaví pin D0 jako výstup) (zápisem log1 se nastaví jako vstup)&lt;br /&gt;
                   SDS '''MICRO LM DIN''' a '''SDS MACRO LM''': pozor, D0 je vždy výstup (nastavení je napevno, nelze změnit)&lt;br /&gt;
                   SDS '''TTCPRO''': směr jednotlivých pinů v portu PDx (nastavením jednotlivých osmi bitů, bit0=PD0 až bit7=PD7, nastav log1 pro výstup)&lt;br /&gt;
                   SDS '''MINI''': bit0 = směr i/o pinu TOPB, bit1 = směr i/o padu PD1, ostatní bity (2..7) nepoužity&lt;br /&gt;
                   SDS '''UPS''': nepoužito&lt;br /&gt;
                   SDS '''IO6''': nepoužito&lt;br /&gt;
                   SDS '''MICRO-ST''': bit0 = vždy v log1 (PD0 jako výstup), bit1 = směr i/o pinu TOPB, ostatní bity (2..7) nepoužity&lt;br /&gt;
                   SDS '''MACRO-ST''': bit0 = vždy v log1 (výstup), bit1 = vždy v log1 (výstup), bit2 = směr i/o pinu TOPB, bit3 = vždy v log0 (vstup), bit4 = vždy v log0 (vstup), ostatní bity (5..7) nepoužity&lt;br /&gt;
&lt;br /&gt;
TOPB: vždy typicky CMOS 3V3 pin, s možností funkce jako vstup nebo výstup (dle sys[302]), a je přímo připojený na pin SoC, pozor tedy na jeho další HW připojení.&lt;br /&gt;
&lt;br /&gt;
TTCPRO: Mapování je vždy od nejnižšího (LSB - bit0) bitu (PD0 = bit0, PD1 = bit1, atd. PD7 = bit7). Pro TTCPRO jsou PDx jako CMOS 3V3 piny s volbou vstupu nebo výstupu pro každý jednotlivý pin.&lt;br /&gt;
&lt;br /&gt;
MICRO-ST: výstup PD0 je zapojen formou FET spínače (log0 = HiZ = rozepnuto) (log1 = ACT = sepnuto na GND).&lt;br /&gt;
&lt;br /&gt;
MACRO-ST: výstupy PD0 a PD1 jsou zapojeny formou FET spínače (log0 = HiZ = rozepnuto) (log1 = ACT = sepnuto na GND).&lt;br /&gt;
&lt;br /&gt;
Nezapomeňte vždy ve svém programu správně nastavit hodnoty do sys[302] (toto je častá chyba když se to zapomene).&lt;br /&gt;
&lt;br /&gt;
 sys[306] až sys[309]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
== Tlačítka na desce display pro SDS-MACRO-ST ==&lt;br /&gt;
&lt;br /&gt;
Čtení stavu tlačítek na desce display (SDS-MST-DISP-rev1) se provádí čtením sys[301] a vyhodnocením bitu 3 (=8dec, první tlačítko) a/nebo bitu 4 (=16dec, druhé tlačítko).&lt;br /&gt;
&lt;br /&gt;
Ošetření na případné zákmity při stisku a uvolnění tlačítek, je potřeba provést ve vašem SDS-C programu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vstupy - teploměry na externí sběrnici 1-Wire&amp;amp;reg; ==&lt;br /&gt;
&lt;br /&gt;
Čidla teploty (1-W chipy pro měření teploty připojené na sběrnici; tak také údaj o teplotě z připojených modulů SDS-1W-T-RH) jsou řízena (čtena) plně automaticky zařízením SDS. Program v SDS-C má přímo přístup k výsledným hodnotám teplot.&lt;br /&gt;
&lt;br /&gt;
 sys[310] až sys[341]   &lt;br /&gt;
          01 i R   hodnota údaje (teplota) z konkrétního čidla na 1-Wire&amp;amp;reg; sběrnici&lt;br /&gt;
&lt;br /&gt;
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 záměrně tam je číslo 16777216 (2^24)'''.&lt;br /&gt;
&lt;br /&gt;
Pozn.: pouze SDS-MACRO-LM a SDS-MACRO-ST mají 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-XX'''.&lt;br /&gt;
&lt;br /&gt;
 sys[342] až [345]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
 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)&lt;br /&gt;
 sys[347] 01 i R   počet všech detekovaných (připojených) čidel teploty na sběrnici '''B'''&lt;br /&gt;
 &lt;br /&gt;
 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)&lt;br /&gt;
 sys[349] 01 i R   počet všech detekovaných (připojených) čidel teploty na sběrnici '''A'''&lt;br /&gt;
&lt;br /&gt;
 sys[350] až sys[381]   &lt;br /&gt;
          01 i R   čidlo 1 až 32 - aktuální stav/chyba čidla v okamžiku čtení tohoto sys[]&lt;br /&gt;
                    == 0  : default, čidlo neexistuje, nic nevim (stav ihned po zapnutí, popř. trvale pro prázdnou pozici)&lt;br /&gt;
                    == 2  : vše ok, komunikuje, odpovidá, právě byl získán výsledek&lt;br /&gt;
                    == 4  : ví se jen že existuje (byl získán ROMCODE) (obvykle dočasný stav po spuštění zařízení)&lt;br /&gt;
                    == 8  : začal další převod, čidlo je OK, komunikuje (správný stav)&lt;br /&gt;
                    == 16 : nepovedlo se začít nový převod, CHYBA (obvykle fyzický problém se sběrnicí)&lt;br /&gt;
                    == 32 : bylo přijato neplatné CRC, chyba (obvykle fyzický problém se sběrnicí)&lt;br /&gt;
&lt;br /&gt;
 sys[382] až [389]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
 sys[391] až sys[422]  &lt;br /&gt;
          01 s R   uživatelský textový název pro čidlo 1 až 32 (nastaveno ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
''' Reserved ''' &lt;br /&gt;
&lt;br /&gt;
 sys[423] až sys[430]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vstupy: analogové vstupy pro měření napětí ==&lt;br /&gt;
&lt;br /&gt;
Všechny vstupy měří napětí vůči společné svorce (GND). Změřená hodnota je vždy k dispozici nejprve jako surová (raw) digitální hodnota, a poté ji SDS přepočítá dle uživatelského nastavení a také dá k dispozici.&lt;br /&gt;
&lt;br /&gt;
 sys[431] 01 i R   RAW hodnota A/D převodu ze vstupu AD1&lt;br /&gt;
 sys[432] 01 i R   RAW hodnota A/D převodu ze vstupu AD2&lt;br /&gt;
 sys[433] 01 i R   RAW hodnota A/D převodu ze vstupu AD3&lt;br /&gt;
 sys[434] 01 i R   RAW hodnota A/D převodu ze vstupu AD4&lt;br /&gt;
&lt;br /&gt;
RAW (surová) hodnota je digitální číslo, poskytnuté z interního A/D převodníku, s tím, že mu už SDS současně (pouze a jenom) odečetl uživatelem nastavený offset.&lt;br /&gt;
&lt;br /&gt;
Rozsah hodnoty RAW je: &lt;br /&gt;
* SDS-MICRO-LM, SDS-MACRO-LM, SDS-UPS-ONEDPS: 0..1023 (10bit rozlišení)&lt;br /&gt;
* SDS-MINI a všechny varianty SDS ST: 0..4095 (12bit rozlišení)&lt;br /&gt;
&lt;br /&gt;
Všechny převodní konstanty A/D, nastavené ve webovém rozhraní (viz admin stránka):&lt;br /&gt;
&lt;br /&gt;
 sys[435] 01 i R   Offset pro A/D 1  [jen pro informaci, dále už nepoužít - viz pozn.]&lt;br /&gt;
 sys[436] 01 i R   Div pro A/D 1&lt;br /&gt;
 sys[437] 01 s R   textový název A/D 1&lt;br /&gt;
 sys[438] 01 s R   jednotka A/D 1&lt;br /&gt;
&lt;br /&gt;
 sys[439] 01 i R   Offset pro A/D 2  [jen pro informaci, dále už nepoužít - viz pozn.]&lt;br /&gt;
 sys[440] 01 i R   Div pro A/D 2&lt;br /&gt;
 sys[441] 01 s R   textový název A/D 2&lt;br /&gt;
 sys[442] 01 s R   jednotka A/D 2&lt;br /&gt;
&lt;br /&gt;
 sys[443] 01 i R   Offset pro A/D 3  [jen pro informaci, dále už nepoužít - viz pozn.]&lt;br /&gt;
 sys[444] 01 i R   Div pro A/D 3&lt;br /&gt;
 sys[445] 01 s R   textový název A/D 3&lt;br /&gt;
 sys[446] 01 s R   jednotka A/D 3&lt;br /&gt;
&lt;br /&gt;
 sys[447] 01 i R   Offset pro A/D 4  [jen pro informaci, dále už nepoužít - viz pozn.]&lt;br /&gt;
 sys[448] 01 i R   Div pro A/D 4&lt;br /&gt;
 sys[449] 01 s R   textový název A/D 4&lt;br /&gt;
 sys[450] 01 s R   jednotka A/D 4&lt;br /&gt;
&lt;br /&gt;
'''Pozor!''' Hodnoty pro jednotlivé A/D vstupy (tj. Raw Hodnoty v sys[431 až 434]) '''už mají odečtený Offset''' (je to provedeno uvnitř firmware už při zpracovávání A/D převodu) ! &lt;br /&gt;
Proto Offset už ve svém SDS-C programu z Raw hodnot neodečítejte (bylo by to odečítáno podruhé). Pro přepočet z Raw na finální hodnotu vám zbývá (správně) použít jen &amp;quot;Div&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Poznámka: zařízení SDS-MINI (a další z řady SDS ST) už mohou mít text v položce &amp;quot;jednotka A/D x&amp;quot; delší než jeden znak (na rozdíl od původního SDS-MICRO-LM atd., kde to bylo omezeno na jeden jediný znak).&lt;br /&gt;
&lt;br /&gt;
''' Reserved '''&lt;br /&gt;
&lt;br /&gt;
 sys[451] až sys[458]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proměnné pro S0 impulsní vstup ==&lt;br /&gt;
&lt;br /&gt;
 sys[459] 01 i RW  stav tarifu &lt;br /&gt;
                    == 0 : T0 (vysoký tarif)&lt;br /&gt;
                    == 1 : T1 (nízký tarif)&lt;br /&gt;
&lt;br /&gt;
 sys[460] až sys[492]  &lt;br /&gt;
          06 i RW  konfigurace - uživatelem nastavený (webové rozhraní) poměr MTD, pro vstup S0 [1] až [32],&lt;br /&gt;
                                 je-li MTD pro tento vstup použit (pokud není použit (přímé měření), má zde být 1 )&lt;br /&gt;
                    - příklad: pro MTD s poměrem 300A:5A je zapsaná hodnota 60&lt;br /&gt;
                    - pozor, nezapočítávejte vliv MTD do hodnoty imp./1kWh&lt;br /&gt;
                    - pozor, některé elektroměry mají MTD už započítané do vlastní impulsní konstanty, &lt;br /&gt;
                             pak sem v takovém případě nastavte číslo 1&lt;br /&gt;
                    - platné hodnoty: 1 až 65280 (včetně)&lt;br /&gt;
 &lt;br /&gt;
 sys[493] až sys[525]  &lt;br /&gt;
          01 i RW  hodnoty impulsních akumulátorů (počítadel) pro vstup S0 [1] až [32] pro tarif T0&lt;br /&gt;
                    - (!) pozor SDS interně drží počítadla jako 32-bit unsigned hodnoty (0 až 4294967295)&lt;br /&gt;
                          ale SDS-C čte sys[] jako 32-bit signed hodnoty;&lt;br /&gt;
                          při čtení tedy dostanete stejné hodnoty 32 bitů, ale reprezentace čísla bude jiná (signed).&lt;br /&gt;
 &lt;br /&gt;
 sys[526] až sys[558]  &lt;br /&gt;
          01 i RW  hodnoty impulsních akumulátorů (počítadel) pro vstup S0 [1] až [32] pro tarif T1&lt;br /&gt;
                    - (!) pozor SDS interně drží počítadla jako 32-bit unsigned hodnoty (0 až 4294967295)&lt;br /&gt;
                          ale SDS-C čte sys[] jako 32-bit signed hodnoty;&lt;br /&gt;
                          při čtení tedy dostanete stejné hodnoty 32 bitů, ale reprezentace čísla bude jiná (signed).&lt;br /&gt;
 &lt;br /&gt;
 sys[559] až sys[591]  &lt;br /&gt;
          01 i RW  konfigurace - uživatelem nastavené přepočtové konstanty S0: počet imp./1kWh (z webového rozhraní)&lt;br /&gt;
                    - pozor, tato hodnota platí pro samotný elektroměr, není to hodnota ve které je započítán vliv MTD&lt;br /&gt;
                    - pozn. v případě, že měřícím prvkem není elektroměr ale jiný přístroj, bude zde odpovídající&lt;br /&gt;
                      jiná konfigurační hodnota (např. vodoměr: počet imp./m^3).&lt;br /&gt;
 &lt;br /&gt;
 sys[592] až sys[624]  &lt;br /&gt;
          01 i R   změřená časová vzdálenost mezi dvěmi nejposlednějšími zachycenými impulsy na S0 vstupu (aktuální impuls a předchozí impuls)&lt;br /&gt;
                    - měřeno v msec&lt;br /&gt;
                    - (!) pozor SDS interně drží počítadla jako 32-bit unsigned hodnoty (0 až 4294967295)&lt;br /&gt;
                          ale SDS-C čte sys[] jako 32-bit signed hodnoty;&lt;br /&gt;
                          při čtení tedy dostanete stejné hodnoty 32 bitů, ale reprezentace čísla bude jiná (signed - viz vysvětlení nahoře).&lt;br /&gt;
 &lt;br /&gt;
 sys[625] až sys[657]  &lt;br /&gt;
          01 i R   změřený čas od úplně posledního impulsu zachyceného na S0 vstupu, tzn. &amp;quot;doba bez impulsu&amp;quot; nebo také &amp;quot;doba od posledního impulsu&amp;quot;&lt;br /&gt;
                    - měřeno v msec&lt;br /&gt;
                    - (!) pozor SDS interně drží počítadla jako 32-bit unsigned hodnoty (0 až 4294967295)&lt;br /&gt;
                          ale SDS-C čte sys[] jako 32-bit signed hodnoty;&lt;br /&gt;
                          při čtení tedy dostanete stejné hodnoty 32 bitů, ale reprezentace čísla bude jiná (signed - viz vysvětlení nahoře).&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
poznámka: &amp;quot;Poměr MTD&amp;quot; zahrnuje všechny měřící transformátory (MTD), předřazené elektroměru (pouze pokud to už není započítáno v impulsní konstantě). Pokud je S0 vstup využit pro jiný typ měřiče (vodoměr a podobné), kde je připojení MTD nesmysl, tak se v konfiguraci musí do této položky nastavit hodnota 1. Samozřejmě jde s určitou výhodou použít i jinou konfiguraci, protože tato hodnota je použita jako &amp;quot;druhý dělitel&amp;quot; u výpočtu počtu S0 impulsů na velikost kroku energetické jednotky. Určení této hodnoty pro jiné měřiče sleduje stejné matematické postupy jako určení této hodnoty pro elektroměr s předřazeným MTD, jen jednotky budou samozřejmě jiné.&lt;br /&gt;
&lt;br /&gt;
 sys[658] až sys[670]  reserved for future use&lt;br /&gt;
&lt;br /&gt;
poznámka: další sys[] indexy pro S0 vstupy jsou uvedeny ještě dále v tomto celém seznamu (dole na stránce).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Speciální vstupy a výstupy ==&lt;br /&gt;
&lt;br /&gt;
Toto je funkce dostupná jen na omezeném rozsahu výrobků SDS.&lt;br /&gt;
&lt;br /&gt;
'''Pouze pro SDS MICRO (LM) LIGHT:'''&lt;br /&gt;
&lt;br /&gt;
 sys[671] 02 i W   zápis na pin M4 (pouze SDS MICRO LIGHT s EEPROM, všechny ostatní výrobky toto nemají)&lt;br /&gt;
 sys[672] 02 i W   zápis na pin M5 (pouze SDS MICRO LIGHT s EEPROM, všechny ostatní výrobky toto nemají)&lt;br /&gt;
 sys[673] 02 i W   zápis na pin B1 (SDS MICRO LIGHT, LIGHT2, SDS MICRO DIN)&lt;br /&gt;
 sys[674] 02 i W   zápis na pin A1 (SDS MICRO LIGHT, LIGHT2, SDS MICRO DIN)&lt;br /&gt;
&lt;br /&gt;
Tyto zmíněné čtyři ''sys[]'' jsou dostupné '''pouze''' na modulu SDS MICRO '''LIGHT''' popř. '''DIN''', a to jen s verzí firmware 9.1.2011 nebo novější.&lt;br /&gt;
&lt;br /&gt;
SDS MICRO LIGHT s pamětí EEPROM: k dispozici jsou všechny čtyři výstupy.&lt;br /&gt;
&lt;br /&gt;
SDS MICRO LIGHT s pamětí DATAFLASH: k dispozici jsou jen dva výstupy (A1, B1).&lt;br /&gt;
&lt;br /&gt;
SDS MICRO LIGHT 2 s pamětí DATAFLASH: k dispozici jsou jen dva výstupy (A1, B1).&lt;br /&gt;
&lt;br /&gt;
SDS MICRO DIN: k dispozici jsou jen dva výstupy (A1, B1).&lt;br /&gt;
&lt;br /&gt;
SDS MACRO LM, SDS MICRO ST, SDS MACRO ST, SDS UPS, SDS IO6, SDS IO6 ST, SDS TTCPRO, SDS MINI: tyto výstupy '''nejsou k dispozici'''.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
'''Pouze pro SDS MACRO ST:'''&lt;br /&gt;
&lt;br /&gt;
Alternativa k sys[301]. Hodnota odpovídá logické úrovni na daném vstupu TL1 (TL2). Při osazené desce MACRO-ST-LCD jsou na tyto vstupy připojeny tlačítka (pak při stisku TL1, TL2 je zde hodnota 0, v klidu 1).&lt;br /&gt;
&lt;br /&gt;
 sys[671] 02 i R   čtení stavu TL1&lt;br /&gt;
 sys[672] 02 i R   čtení stavu TL2&lt;br /&gt;
&lt;br /&gt;
'''Pájecí plošky CFG:'''&lt;br /&gt;
&lt;br /&gt;
Zkratovací CFG plošky jsou k dispozici jen pro SDS TTCPRO. Vhodné pro pevnou konfiguraci uživatelem.&lt;br /&gt;
&lt;br /&gt;
V současné době není k dispozici firmware, které přenáší hodnotu z pájecích plošek (CFG1, CFG2) do ''sys[]''.&lt;br /&gt;
Ploška CFG1 je vyhrazena pro vnitřní použítí samotného firmware SDS, a ploška CFG2 bude eventuálně uvolněna pro libovolné použití uživatelem (čtení z SDS-C).&lt;br /&gt;
Takový firmware se teprve chystá (SDS TTCPRO).&lt;br /&gt;
&lt;br /&gt;
 sys[675] 07 i R   stav plošky CFG1 (zkratována = je zde 0)&lt;br /&gt;
 sys[676] 07 i R   stav plošky CFG2 (zkratována = je zde 0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Speciální proměnné pro SDS-UPS ==&lt;br /&gt;
&lt;br /&gt;
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 .&lt;br /&gt;
&lt;br /&gt;
SDS-UPS má všechny sys[0] až sys[699] shodné s SDS-MICRO. Rozdíl je samozřejmě v počtu a osazení periférií.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
 sys[700] 02 i R   reserved&lt;br /&gt;
 sys[701] 02 i R   reserved&lt;br /&gt;
 sys[702] 02 i R   reserved&lt;br /&gt;
 sys[703] 02 i R   reserved&lt;br /&gt;
&lt;br /&gt;
'''Přepínač algoritmů:'''&lt;br /&gt;
&lt;br /&gt;
 sys[704] 02 i RW  řízení nabíjení - hodnoty které lze zapsat:&lt;br /&gt;
                    == 0   : nabíjení je ovládáno pomocí firmware (výchozí chování výrobku)&lt;br /&gt;
                    == 345 : pouze nabíjení (a ne jiné funkce) jsou řízeny programem SDS-C (= chování programujete vy)&lt;br /&gt;
                    == 824 : kompletní řízení (= volba funkce, nabíjení) je řízeno programem SDS-C&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 sys[705] až sys[731]  reserved&lt;br /&gt;
&lt;br /&gt;
Pro realizaci vlastního nabíjecího algoritmu potřebujete zpracovávat všechny vstupy a důsledně nastavovat všechy výstupy.&lt;br /&gt;
&lt;br /&gt;
Pokud váš program pouze sleduje činnost původního nabíjecího algoritmu, pak může samozřejmě všechny sys[] jen číst.&lt;br /&gt;
&lt;br /&gt;
'''Vstupy a konfigurace:'''&lt;br /&gt;
&lt;br /&gt;
 sys[732] 02 i R   surová hodnota z A/D převodu - hodnota 2.5V vstupu - odpovídá hodnotě proudu 0.0A&lt;br /&gt;
 sys[733] 02 i R   surová hodnota z A/D převodu - hodnota proudu do-z akumulátoru&lt;br /&gt;
 sys[734] 02 i R   surová hodnota z A/D převodu - hodnota proudu z primárního vstupu&lt;br /&gt;
 sys[735] 02 i R   surová hodnota z A/D převodu - hodnota napětí akumulátoru&lt;br /&gt;
 sys[736] 02 i R   surová hodnota z A/D převodu - hodnota napětí primárního vstupu&lt;br /&gt;
&lt;br /&gt;
Rozsah surových hodnot z A/D převodu je 0 až 4095. Lineárně to odpovídá příslušné měřené hodnotě. &lt;br /&gt;
Měření napětí má 0 na 0V a maximální hodnot (4095) na maximu rozsahu. &lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
 sys[737] až sys[739]  reserved&lt;br /&gt;
&lt;br /&gt;
Následuje konfigurace provedená uživatelem ve webovém rozhraní.&lt;br /&gt;
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á.&lt;br /&gt;
&lt;br /&gt;
 sys[740] 02 i R   primary voltage to say target is ok (pri_pvts)&lt;br /&gt;
 sys[741] 02 i R   primary zadany odpocet v msec (pri_pvat)&lt;br /&gt;
 sys[742] 02 i R   primary voltage to allow charging (at what voltage to allow chargin) (pri_fchg)&lt;br /&gt;
 sys[743] 02 i R   accu disconnect voltage level (at what voltage to disconnect accu) (aku_avdv)&lt;br /&gt;
 sys[744] 02 i R   accu target voltage when charging (when to switch to CV) (aku_avcd)&lt;br /&gt;
 sys[745] 02 i R   accu target current when charging (constant current when in CC) (aku_accc)&lt;br /&gt;
 sys[746] 02 i R   target charging voltage (final voltage on accu when fully charged)&lt;br /&gt;
 sys[747] 02 i R   flag: do not answer ping when primary gone (pri_ping)&lt;br /&gt;
 sys[748] 02 i R   flag: do not switch accu off (aku_dach)&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 sys[749] až sys[760]  reserved&lt;br /&gt;
&lt;br /&gt;
'''Výstupy:'''&lt;br /&gt;
&lt;br /&gt;
Tyto '''všechny''' výstupy musíte správně ovládat po celou dobu, co bude zařízení SDS UPS zapnuto !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 sys[761] 02 i RW  ovládání vypínání nabíječe&lt;br /&gt;
                    == 0 : nabíječ v provozu (zapnuto = nabíjí se, regulujte jiným sys[])&lt;br /&gt;
                    != 0 : nabíječ mimo provoz (vypnuto = nenabíjí se)&lt;br /&gt;
 &lt;br /&gt;
 sys[762] 02 i RW  ovládání posunu rozsahu regulace nabíječe &lt;br /&gt;
                    == 0 : bez zásahu do zpětné vazby (původní regulační rozsah)&lt;br /&gt;
                    != 0 : zásah do zpětné vazby (posun rozsahu)&lt;br /&gt;
                           (vhodné pro skokové zvýšení výstupního napětí nabíječe, &lt;br /&gt;
                            když už nereaguje v původním rozsahu)&lt;br /&gt;
 &lt;br /&gt;
 sys[763] 02 i RW  ovládání odpojovače baterie &lt;br /&gt;
                    == 0 : spínač vypnutý (baterie odpojena od zátěže)&lt;br /&gt;
                    != 0 : spínač sepnutý (baterie připojena)&lt;br /&gt;
 &lt;br /&gt;
 sys[764] 02 i RW  indikační LED - nabíjení akumulátoru&lt;br /&gt;
                    == 0 : LED svítí (informace: akumulátor je nabíjen)&lt;br /&gt;
                    != 0 : LED nesvítí (informace: akumulátor není nabíjen)&lt;br /&gt;
 &lt;br /&gt;
 sys[765] 02 i RW  indikační LED - výpadek primárního vstupu&lt;br /&gt;
                    == 0 : LED svítí (informace: napětí primárního vstupu pod dolním limitem)&lt;br /&gt;
                    != 0 : LED nesvítí (informace: primární vstup má napětí vyšší než je dolní limit)&lt;br /&gt;
&lt;br /&gt;
'''Řízení nabíjení:''' Je potřeba správně regulovat pomocí následujícího výstupu:&lt;br /&gt;
&lt;br /&gt;
 sys[766] 02 i RW  přímé řízení nabíjecího bloku (výstup vaší regulace sem - hodnota řídí nabíječ)&lt;br /&gt;
                    - minimální hodnota = 1&lt;br /&gt;
                    - maximální hodnota = 2497&lt;br /&gt;
&lt;br /&gt;
 sys[767] až sys[769]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
Následující údaje jsou určeny pro '''zobrazování na webovém rozhraní''':&lt;br /&gt;
&lt;br /&gt;
 sys[770] 02 i RW  provozní režim: vždy jedno z UPS_PROVOZ_xxx&lt;br /&gt;
 &lt;br /&gt;
 sys[771] 02 i RW  nabíjecí režim: vždy jedno z UPS_NABREZIM_xxx&lt;br /&gt;
 &lt;br /&gt;
 sys[772] 02 i RW  výsledek odhadu stavu baterie: vždy jedno z UPS_BATERIE_ODHAD_xxx&lt;br /&gt;
&lt;br /&gt;
Konstanty pro zápis (je to potřeba dodržet, protože se to přímo zobrazuje na webovém rozhraní):&lt;br /&gt;
&lt;br /&gt;
 UPS_PROVOZ_START            0&lt;br /&gt;
 UPS_PROVOZ_PRIOK            1&lt;br /&gt;
 UPS_PROVOZ_PRIOK_CHARGING   2&lt;br /&gt;
 UPS_PROVOZ_ONLY_BATT        4&lt;br /&gt;
 UPS_PROVOZ_NO_BATT          8&lt;br /&gt;
 &lt;br /&gt;
 UPS_NABREZIM_CC             0&lt;br /&gt;
 UPS_NABREZIM_CV             2&lt;br /&gt;
 UPS_NABREZIM_PAUZA          4&lt;br /&gt;
 UPS_NABREZIM_URCENI_REZIMU  8&lt;br /&gt;
 &lt;br /&gt;
 UPS_BATERIE_ODHAD_NEZNAM            0&lt;br /&gt;
 UPS_BATERIE_ODHAD_MOC_NIZKE_NAPETI  1&lt;br /&gt;
 UPS_BATERIE_ODHAD_OK_NABIJIM        2&lt;br /&gt;
 UPS_BATERIE_ODHAD_PLNE_NABITO       4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Výsledky z 1-Wire sensoru vlhkosti (T/RH) SDS-1W-T-RH ==&lt;br /&gt;
&lt;br /&gt;
Připojené moduly [[SDS_1W_T-RH]] jsou připojeny na 1-W sběrnici, a mají v sobě chip, který měří hodnotu ze sensoru vlhkosti (který je současně umístěn na modulu SDS-1W-T-RH) a současně měří i teplotu a napájecí napětí pro sensor vlhkosti. &lt;br /&gt;
SDS interně provádí výpočet relativní vlhkosti (RH) pomocí kompenzační rovnice, určené výrobcem sensoru vlhkosti.&lt;br /&gt;
&lt;br /&gt;
K dispozici jsou jak surové hodnoty (změřené v rámci modulu SDS-1W-T-RH), tak i hodnota kompenzované (skutečné) relativní vlhkosti v místě umístění modulu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Změřená teplota je uložena na standardních indexech:&lt;br /&gt;
&lt;br /&gt;
 sys[310] až sys[341]   &lt;br /&gt;
          01 i R   hodnota údaje (teplota) z konkrétního čidla na 1-Wire&amp;amp;reg; sběrnici, hodnota v násobku 0.01 degC&lt;br /&gt;
&lt;br /&gt;
Dále jsou k dispozici surové hodnoty, nutné pro výpočet hodnoty RH (Relative Humidity):&lt;br /&gt;
&lt;br /&gt;
 sys[800] až sys[831]   &lt;br /&gt;
          08 i R   hodnota údaje (napětí Vad = výstupu čidla RH) z konkrétního čidla na 1-Wire&amp;amp;reg; sběrnici, hodnota v násobku 0.01 V&lt;br /&gt;
&lt;br /&gt;
 sys[832] až sys[863]   &lt;br /&gt;
          08 i R   hodnota údaje (napětí Vdd = napájení čidla RH) z konkrétního čidla na 1-Wire&amp;amp;reg; sběrnici, hodnota v násobku 0.01 V&lt;br /&gt;
&lt;br /&gt;
SDS provádí přepočet na údaj RH v procentech (0 až 100):&lt;br /&gt;
&lt;br /&gt;
 sys[864] až sys[895]   &lt;br /&gt;
          08 i R   hodnota RH (0 až 100, v procentech RH) kompenzovaná podle rovnice pro čidlo HIH-503x (výpočet z Vad, kompenzace na Vdd a Temp).&lt;br /&gt;
&lt;br /&gt;
Rezerva (zatím nepoužito):&lt;br /&gt;
&lt;br /&gt;
 sys[896] až sys[899]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Doplňující informace pro 1-Wire zařízení ==&lt;br /&gt;
&lt;br /&gt;
1-Wire sběrnice u zařízení SDS umožňuje komunikaci s celou řadů 1-W chipů: [[OneWire|seznam je zde]]. Přístup k chipům na 1-W sběrnici se liší na dva typy: chipy (čidla) které si SDS interně zpracuje (např. měření teploty), a všechny ostatní chipy (které SDS jen umí vyhledat a oznámit, ale dále s nimi nekomunikuje).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1-Wire chipy interně zpracovávané SDS'''&lt;br /&gt;
&lt;br /&gt;
Tyto chipy jsou plně automaticky obsluhovány prostřednictvím firmware SDS - není potřebná opakovaná intervence uživatele, ten si pouze čte stále aktuální výsledky měření teplot z jednotlivých čidel.&lt;br /&gt;
&lt;br /&gt;
Poznámka: Pro změřené hodnoty z 1-W čidel teplot, jsou k dispozici tyto indexy: '''sys[310]''' až '''sys[430]''', a '''sys[900]''' až '''sys[931]'''.&lt;br /&gt;
&lt;br /&gt;
K dispozici je textové vyjádření (hex znaky) ROM CODE hodnoty načtené pro danou pozici zpracovávaného chipu na 1-W sběrnici.&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS mohou mít jednu [A] nebo dvě ( nezávislé, [A] a [B] ) 1-Wire sběrnice, a každá sběrnice má maximálně 16 připojených chipů.&lt;br /&gt;
Jednotlivé platné ROM CODE jsou v ''sys[]'' uloženy za sebou, viz výpis:&lt;br /&gt;
&lt;br /&gt;
 sys[900] 06 s RW  ROM CODE pro první chip na [A] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
 &lt;br /&gt;
 sys[901] 06 s R   ROM CODE pro druhý chip na [A] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
&lt;br /&gt;
A tak dále až&lt;br /&gt;
&lt;br /&gt;
 sys[915] 06 s R   ROM CODE pro šestnáctý chip na [A] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
&lt;br /&gt;
Následuje sběrnice [B], je-li přítomná v daném zařízení (dostupné pouze pro SDS-MACRO):&lt;br /&gt;
&lt;br /&gt;
 sys[916] 06 s R   ROM CODE pro první chip na [B] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
&lt;br /&gt;
A tak dále . . . až&lt;br /&gt;
&lt;br /&gt;
 sys[931] 06 s R   ROM CODE pro šestnáctý chip na [B] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
&lt;br /&gt;
'''Pozor''': pokud sběrnice [B] v zařízení není, tak sys[916] až sys[931] vrátí znak '-'.&lt;br /&gt;
&lt;br /&gt;
Tak jak jsou jednotlivé ROM CODE viditelné ve webové administraci, tak jsou tedy dostupné i přes sys[] položky.&lt;br /&gt;
&lt;br /&gt;
Poznámka: ROM CODE pro 1-W chipy jsou k dispozici pouze jako ucelené texty (string). Bajtový rozpad jednotlivých položek není k dispozici.&lt;br /&gt;
&lt;br /&gt;
 sys[931] až sys[939]  reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ostatní 1-Wire chipy'''&lt;br /&gt;
&lt;br /&gt;
Pro ostatní 1-W chipy, které SDS &amp;quot;nezná&amp;quot; (tzn. nekomunikuje s nimi, jen je umí na sběrnici vyhledat), jsou jejich ROM CODE odděleny do samostatných '''sys[]''' položek.&lt;br /&gt;
&lt;br /&gt;
Čtení ostatních 1-W chipů se spouští v rámci SDS-C programu, který musí zavolat příslušnou SDS-C funkci. &lt;br /&gt;
Na základě zavolání této funkce dojde k vynulování všech příslušných '''sys[]''' (od indexu 940 resp. 970) pro danou sběrnici, a provede se pokus o přečtení připojeného chipu.&lt;br /&gt;
Pokud se to povede, bude nalezený ROM CODE (spolu s časovou značkou okamžiku přečtení) vložen do příslušných '''sys[]''', &lt;br /&gt;
nebo bude nastaven chybový kód.&lt;br /&gt;
&lt;br /&gt;
Pozor, k SDS lze připojit více různých &amp;quot;ostatních&amp;quot; chipů, ale zdejší funkce najde jenom ten první z nich a ostatní už ignoruje. &lt;br /&gt;
Ostatní chipy lze samozřejmě připojit na kteroukoliv sběrnici, i když na ní jsou připojeny i chipy se kterými SDS komunikuje (např. teploměrné chipy).&lt;br /&gt;
&lt;br /&gt;
Jednotlivé chipy se rozlišují pomocí hodnoty ''ID family-code'' (jeden bajt). Pro chip DS1990A je ''0x01'', hodnoty pro jiné chipy viz datasheet výrobce pro konkrétní chip.&lt;br /&gt;
&lt;br /&gt;
Obecný stav sběrnic:&lt;br /&gt;
&lt;br /&gt;
 sys[940] 06 i R   Stav 1-W sběrnice '''[A]''' pro rescan ostatních 1-W chipů&lt;br /&gt;
 sys[941] 06 i R   Stav 1-W sběrnice '''[B]''' pro rescan ostatních 1-W chipů&lt;br /&gt;
 :&lt;br /&gt;
                    == 0  : ještě nebylo provedeno jediné/jakékoliv čtení ostatních chipů na 1-W sběrnici&lt;br /&gt;
 &lt;br /&gt;
                    == 1  : došlo k chybě: nebylo dokončeno předchozí čtení sběrnice&lt;br /&gt;
                            (nesmíte požadovat nové čtení, dokud se plně neprovedlo to poslední)&lt;br /&gt;
 &lt;br /&gt;
                    == 2  : probíhá čtení ROM CODE z připojeného ostatního chipu&lt;br /&gt;
                            (dokud se toto nedokončí, nelze provést opětovný požadavek na další rescan/čtení)&lt;br /&gt;
 &lt;br /&gt;
                    == 4  : nebyl nalezen jakýkoliv ostatní chip (s odpovídajícím Family Code byte)&lt;br /&gt;
 &lt;br /&gt;
                    == 8  : byl přečten ROM CODE z připojeného ostatního chipu&lt;br /&gt;
                            (už lze také požádat o další nové čtení 1-W sběrnice)&lt;br /&gt;
 &lt;br /&gt;
                    == 16 : došlo k chybě: nepovedlo se přečíst data po 1-W sběrnici &lt;br /&gt;
                            (zkuste provést rescan/čtení znovu)&lt;br /&gt;
&lt;br /&gt;
 sys[942] až sys[949]  reserved&lt;br /&gt;
&lt;br /&gt;
'''Pro sběrnici [A]:'''&lt;br /&gt;
&lt;br /&gt;
 sys[950] 06 i R   časová značka posledního okamžiku komunikace s chipem na [B] sběrnici 1-Wire&lt;br /&gt;
                   (nebo: 0 (nula) = pokud ještě nebyla komunikace provedena).&lt;br /&gt;
                    - v okamžiku každého nového pokusu o čtení je nastavena na 0 (nula),&lt;br /&gt;
                      a pak v okamžiku přečtení ROM CODE, je zde hodnota převzatá ze '''sys[3]'''&lt;br /&gt;
&lt;br /&gt;
 sys[951] 06 s R   celý text ROM CODE:&lt;br /&gt;
                    - ROM CODE pro chip na [A] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
 &lt;br /&gt;
 sys[952] až sys[959]: bajtový rozpad ROM CODE pro chip na [A] sběrnici 1-Wire&lt;br /&gt;
 :&lt;br /&gt;
 sys[952] 06 i R   romcode[0] (1-W: ID family-code byte)&lt;br /&gt;
 sys[953] 06 i R   romcode[1] (1-W: serial code)&lt;br /&gt;
 sys[954] 06 i R   romcode[2] (1-W: serial code)&lt;br /&gt;
 sys[955] 06 i R   romcode[3] (1-W: serial code)&lt;br /&gt;
 sys[956] 06 i R   romcode[4] (1-W: serial code)&lt;br /&gt;
 sys[957] 06 i R   romcode[5] (1-W: serial code)&lt;br /&gt;
 sys[958] 06 i R   romcode[6] (1-W: serial code)&lt;br /&gt;
 sys[959] 06 i R   romcode[7] (1-W: CRC byte)&lt;br /&gt;
&lt;br /&gt;
 sys[960] až sys[969]  reserved&lt;br /&gt;
&lt;br /&gt;
'''Pro sběrnici [B]:'''&lt;br /&gt;
&lt;br /&gt;
 sys[970] 06 i R   časová značka posledního okamžiku komunikace s chipem na [B] sběrnici 1-Wire&lt;br /&gt;
                   (nebo: 0 (nula) = pokud ještě nebyla komunikace provedena).&lt;br /&gt;
                    - v okamžiku každého nového pokusu o čtení je nastavena na 0 (nula),&lt;br /&gt;
                      a pak v okamžiku přečtení ROM CODE, je zde hodnota převzatá ze '''sys[3]'''&lt;br /&gt;
&lt;br /&gt;
 sys[971] 06 s R   celý text ROM CODE:&lt;br /&gt;
                    - ROM CODE pro chip na [B] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
 &lt;br /&gt;
 sys[972] až sys[979]: bajtový rozpad ROM CODE pro chip na [B] sběrnici 1-Wire&lt;br /&gt;
 :&lt;br /&gt;
 sys[972] 06 i R   romcode[0] (1-W: ID family-code byte)&lt;br /&gt;
 sys[973] 06 i R   romcode[1] (1-W: serial code)&lt;br /&gt;
 sys[974] 06 i R   romcode[2] (1-W: serial code)&lt;br /&gt;
 sys[975] 06 i R   romcode[3] (1-W: serial code)&lt;br /&gt;
 sys[976] 06 i R   romcode[4] (1-W: serial code)&lt;br /&gt;
 sys[977] 06 i R   romcode[5] (1-W: serial code)&lt;br /&gt;
 sys[978] 06 i R   romcode[6] (1-W: serial code)&lt;br /&gt;
 sys[979] 06 i R   romcode[7] (1-W: CRC byte)&lt;br /&gt;
&lt;br /&gt;
 sys[980] až sys[989]  reserved&lt;br /&gt;
&lt;br /&gt;
Všimněte si, že SDS v tuto chvíli umožňuje pouze rescan 1-W sběrnice, kdy hledá pouze '''jeden''' připojený &amp;quot;ostatní 1-W chip&amp;quot; (ten první na který narazí, ten ohlásí, a nehledá dále). &lt;br /&gt;
&lt;br /&gt;
'''Pozor''':&lt;br /&gt;
&lt;br /&gt;
Pokud je takových chipů připojeno na sběrnici více, popř. pokud jsou smíchány s &amp;quot;teploměrnými&amp;quot; chipy, &lt;br /&gt;
bude při tomto rescanu uveden pouze první nalezený ostatní chip (tj. ten, který má nejnižší ROM-CODE ze všech připojených ostatních chipů).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reserved ==&lt;br /&gt;
&lt;br /&gt;
 sys[990] až sys[1023]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Speciální položky jen pro SDS-MACRO-LM a SDS-MACRO-ST ==&lt;br /&gt;
&lt;br /&gt;
'''Přímý přístup do LCD Frame Buffer paměti:'''&lt;br /&gt;
&lt;br /&gt;
 sys[1024] až sys[1551]   LCD buffer (dostupné jen pro SDS MACRO LM a SDS MACRO ST !)&lt;br /&gt;
          01 i RW  každý index v rámci tohoto rozsahu sys[] lze zapisovat i číst&lt;br /&gt;
                   - jedná se o pole 528 bajtů (4 řádky x 132 sloupců)&lt;br /&gt;
                   - každý bajt pole obsluhuje přesně danou oblast (několika pixelů) LCD displaye&lt;br /&gt;
                   - platné hodnoty pro každý index : 0 až 255 včetně  - zapisujte a čtěte jen hodnoty 0 až 255 (včetně)&lt;br /&gt;
&lt;br /&gt;
Tyto položky jsou dosupné '''pouze a jenom''' na SDS-MACRO-LM kde je vyžadován firmware od 24.11.2016 nebo novější, a na SDS-MACRO-ST (všechny FW verze).&lt;br /&gt;
&lt;br /&gt;
Jakékoliv změny (zápis) se promítnou pouze do frame bufferu (tedy v paměti SDS) - ale aby se následně tento frame buffer (jeho změněný obsah) eventuálně vykreslil na LCD, je potřeba zavolat příslušnou SDS-C funkci !&lt;br /&gt;
&lt;br /&gt;
Čtení ze sys poskytuje přímý přístup do frame bufferu (jeho aktuální obsah, tedy opět ne nutně to co je právě vidět na LCD).&lt;br /&gt;
&lt;br /&gt;
Pokud nepoužíváte LCD (sandwich desku), můžete tuto oblast 528 bajtů využít pro jakékoliv své účely. V podstatě se pak jedná o rozšiřující RAM pamět pro váš SDS-C program.&lt;br /&gt;
&lt;br /&gt;
'''Pozor''' SDS-MACRO-ST&lt;br /&gt;
&lt;br /&gt;
SDS MACRO ST provádí automatické aktualizace (zápis) do LCD bufferu, pokud se o tento buffer nepřihlásí SDS-C program. Proto, pokud na MACRO-ST chcete využít LCD buffer pro jiné své účely, musíte to nejprve SDS říct. Znovu, toto platí jen pro MACRO-ST - ''není to potřeba pro MACRO-LM (které tam po zapnutí nahraje logo a pak už na buffer za běhu nesáhne)''. Pro MACRO-ST zavolejte kteroukoliv SDS-C funkci pro přístup na display (např. clear) a je to - tím se přepne vlastnictví LCD bufferu pro SDS-C program.&lt;br /&gt;
&lt;br /&gt;
== Vyhrazená oblast ==&lt;br /&gt;
&lt;br /&gt;
'''Zbytek:'''&lt;br /&gt;
&lt;br /&gt;
 sys[1552] až sys[1663]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bateriově Zálohovaná Paměť ==&lt;br /&gt;
&lt;br /&gt;
'''POUZE PRO: SDS-TTCPRO a SDS-MINI a SDS-MICRO-ST a SDS-MACRO-sT a SDS-IO6-ST !''' (tedy ty s baterií) - všechny jiné SDS První Řady tyto specifické indexy v sys[] nemají k dispozici!&lt;br /&gt;
&lt;br /&gt;
Pozor! Tato funkce vyžaduje FW od 18.8.2017 a nebo novější. &lt;br /&gt;
&lt;br /&gt;
 sys[1664] až sys[1791]   (pouze pro SDS TTCPRO a SDS MINI a SDS MICRO-ST a SDS MACRO-ST a SDS IO6-ST)&lt;br /&gt;
          07 i RW  sada 128 samostatných pozic v zálohované paměti RAM, pro ukládání libovolných hodnot&lt;br /&gt;
                    - každý index má k dispozici 32 bitů (tj. celý signed integer)&lt;br /&gt;
                    - čtení a zápis je rychlé (je to v RAM, takže se nemusí čekat jako při práci s DF)&lt;br /&gt;
                    - lze použít nezávisle (lze přístupovat ke kterékoliv položce &amp;quot;na přeskáčku&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Pozor! Oblast záložní paměti je k dispozici pouze na vybraných zařízeních SDS (ty, které mají osazenu baterii pro tyto účely). Údaje se nesmazají změnou programu (nahráním nového programu), ani se nesmazají resetem zařízení (kromě aktivace RSTD - pozor!), tzn. vydrží a zůstanou, a to dokonce i po celou dobu výpadku externího napájení (tak dlouho, dokud se nevybije záložní baterie).&lt;br /&gt;
&lt;br /&gt;
''(Pouze) pokud baterie v daném SDS není'': tak jsou údaje ztraceny po výpadku napájení (ale po dobu přítomnosti externího napájení jsou k dispozici). Při takové situaci není zaručen obsah těchto dat po zapnutí (měl by být nulový, ale bez záruky).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Další informace ze S0 vstupů ==&lt;br /&gt;
&lt;br /&gt;
Následující položky jsou k dispozici pro všechny SDS První Produktové Řady.&lt;br /&gt;
&lt;br /&gt;
Od verze SDS-C č. 07 jsou přidány tyto systémové proměnné:&lt;br /&gt;
&lt;br /&gt;
 sys[1792] až sys[1823]  &lt;br /&gt;
          07 i R   cena za jednotku v režimu T0&lt;br /&gt;
                    - původní hodnota je poskytnuta jako násobek 1000 (např. nastavená hodnota 3.40 je zde předána jako číslo 3400)&lt;br /&gt;
 &lt;br /&gt;
 sys[1824] až sys[1855]  &lt;br /&gt;
          07 i R   cena za jednotku v režimu T1&lt;br /&gt;
                    - původní hodnota je poskytnuta jako násobek 1000 (např. nastavená hodnota 3.40 je zde předána jako číslo 3400)&lt;br /&gt;
 &lt;br /&gt;
 sys[1856] až sys[1887]  &lt;br /&gt;
          07 s R   název jednotky se vztahem k času, podle nastavení (např. text &amp;quot;kWh&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[1888] až sys[1919]&lt;br /&gt;
          07 s R   název měny, podle nastavení (např. text &amp;quot;CZK&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[1920] až sys[1951]  &lt;br /&gt;
          07 s R   název jednotky bez vztahu k času, podle nastavení (např. text &amp;quot;kW&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[1952] až sys[1983]  &lt;br /&gt;
          07 s R   název činnosti, podle nastavení (např. text &amp;quot;spotřeba&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[1984] až sys[2015]  &lt;br /&gt;
          07 s R   název měřiče, podle nastavení (např. text &amp;quot;elektroměr č. 1&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[2016] až sys[2047]  &lt;br /&gt;
          07 i R   konfigurační detaily pro daný S0 vstup&lt;br /&gt;
                    - bit 0 nastaven = je to aktivní S0 vstup&lt;br /&gt;
                    - bit 1 nastaven = tento S0 vstup je rozdělen na dvoutarif T0/T1 (jinak je to jedno-tarif)&lt;br /&gt;
&lt;br /&gt;
Samozřejmě pro využití těchto systémových proměnných, potřebujete mít v SDS aktuální firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reserved ==&lt;br /&gt;
&lt;br /&gt;
 sys[2048] až sys[2197]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MQTT klient ==&lt;br /&gt;
&lt;br /&gt;
Vždy si zjistěte, jestli máte v SDS takové FW, které podporuje funkci MQTT klient:&lt;br /&gt;
&lt;br /&gt;
 sys[2199] 09 i R   podpora MQTT&lt;br /&gt;
                     0 = NE&lt;br /&gt;
                     1 = ANO, verze MQTT 3.1.1, SDS první část implementace&lt;br /&gt;
                     2..max = (reserved)&lt;br /&gt;
&lt;br /&gt;
Každé nové připojení k Brokeru:&lt;br /&gt;
&lt;br /&gt;
 sys[2200] 09 i R   stav průběhu mqtt_connect()&lt;br /&gt;
                     -7 = obdrželi jsme CONNACK, ale negativní = nepřipojeno ( výsledek viz sys[2201] )&lt;br /&gt;
                     -6 = timeout při čekání na připojení, nepřipojeno&lt;br /&gt;
                     -5 = nespravne parametry (hodnoty např. IP, port), nepřipojeno&lt;br /&gt;
                     -4 = nespravne parametry (počet parametrů), nepřipojeno&lt;br /&gt;
                     -3 = funkce zavolána dříve (nebo opakovaně) než bylo dokončeno předchozí volání funkce, takže toto volání je ignorováno&lt;br /&gt;
                     -2 = pokus o TCP připojení selhal&lt;br /&gt;
                     -1 = nepoužito&lt;br /&gt;
                      0 = klid, nic se neprovádí, ODPOJENO ! (lze se začít připojovat)&lt;br /&gt;
                      1 = bylo zahájeno připojování (otevírá se TCP spojení)&lt;br /&gt;
                      2 = TCP připojeno a odeslán CONNECT požadavek&lt;br /&gt;
                      4 = obdrželi jsme CONNACK, připojeno ( výsledek viz sys[2201] )&lt;br /&gt;
                      8 = probíhá odpojování, čekáme na výsledek (na odpojení)&lt;br /&gt;
&lt;br /&gt;
Po zavolání mqtt_connect(...) je nutné testovat sys[2200] na výslednou hodnotu. Funkci mqtt_connect(...) nelze volat, je-li sys[2200] na hodnotě 1, 2, 8 nebo 16 (nejprve je v takových případech potřeba provést odpojení pomocí mqtt_disconnect() funkce). Pro úplný test, je-li připojení z SDS do Brokeru úplné, je potřeba ověřit i hodnotu v sys[2201]. Teprve pokud oba tyto sys jsou na správné hodnotě, lze s Brokerem komunikovat.&lt;br /&gt;
&lt;br /&gt;
 sys[2201] 09 i R   výsledek mqtt_connect() = hodnota &amp;quot;CONNACK Connect Return&amp;quot;&lt;br /&gt;
                     -7 = nepoužito&lt;br /&gt;
                     -6 = timeout při čekání na CONNACK, nepřipojeno&lt;br /&gt;
                     -5 = nepoužito&lt;br /&gt;
                     -4 = nepoužito&lt;br /&gt;
                     -3 = nepoužito&lt;br /&gt;
                     -2 = probíhá připojování, čekáme na CONNACK (zatím nepřišel)&lt;br /&gt;
                     -1 = idle, nepřipojeno&lt;br /&gt;
                      0 = (výsledek:) MQTT 0x00: broker akceptoval připojení - LZE POKRAČOVAT (provádět Publish, Subscribe)&lt;br /&gt;
                      1 = MQTT 0x01: Connection Refused, unacceptable protocol version&lt;br /&gt;
                      2 = MQTT 0x02: Connection Refused, identifier rejected&lt;br /&gt;
                      3 = MQTT 0x03: Connection Refused, Server unavailable&lt;br /&gt;
                      4 = MQTT 0x04: Connection Refused, bad user name or password&lt;br /&gt;
                      5 = MQTT 0x05: Connection Refused, not authorized&lt;br /&gt;
&lt;br /&gt;
Hodnotu v sys[2201] lze číst a zpracovat pouze pokud je sys[2200] na hodnotě 16 (to znamená, pouze pokud SDS obdrží odpověď CONNACK od MQTT brokera).&lt;br /&gt;
&lt;br /&gt;
Před a po každém volání mqtt_publish() a nebo mqtt_subscribe() funkcí je potřeba sledovat obsah následují položky:&lt;br /&gt;
&lt;br /&gt;
 sys[2202] 09 i R   výsledek pro tyto funkce: mqtt_publish(), mqtt_subscribe(), mqtt_unsubscribe_index(), mqtt_unsubscribe_name()&lt;br /&gt;
                     -8 = SUBACK dorazil z Broker ale s indikovanou chybou (Failure Bit), můžete volat další funkci&lt;br /&gt;
                     -7 = vybraná položka (řádek) subscribe tabulky je prázdná, není co odhlašovat&lt;br /&gt;
                     -6 = timeout (možnosti: publish neprovedeno, nebo: SUBACK vůbec nedorazil, nebo: UNSUBACK vůbec nedorazil), můžete volat další funkci&lt;br /&gt;
                     -5 = nespravne parametry (hodnoty, např. index) např. jejich celková délka se nevleze do paketu&lt;br /&gt;
                     -4 = nespravne parametry (počet parametrů)&lt;br /&gt;
                     -3 = funkce zavolána dříve (nebo opakovaně) než bylo dokončeno předchozí volání funkce, takže toto volání je ignorováno&lt;br /&gt;
                     -2 = SDS není připojeno k brokeru (buď právě ještě probíhá připojování, nebo není vůbec připojeno)&lt;br /&gt;
                     -1 = bez aktivity&lt;br /&gt;
                      0 = nepoužito&lt;br /&gt;
                      1 = mqtt_publish() probíhá&lt;br /&gt;
                      2 = mqtt_publish() hotovo (OK - obdržen TCP ACK), můžete volat další funkci&lt;br /&gt;
                      4 = mqtt_subscribe() probíhá - čekám na SUBACK&lt;br /&gt;
                      8 = SUBACK dorazil z Broker, bez chyby (OK), můžete volat další funkci&lt;br /&gt;
                     16 = čekám na UNSUBACK (pouze pro unsubscribe funkce)&lt;br /&gt;
                     32 = UNSUBACK dorazil z Brokeru, můžete volat další funkce&lt;br /&gt;
&lt;br /&gt;
Informativní položka:&lt;br /&gt;
&lt;br /&gt;
 sys[2203] 09 i R   počet chyb v protokolu MQTT směrem z Brokeru&lt;br /&gt;
                    (objeví-li se chyba, dojde k okamžitému odpojení)&lt;br /&gt;
&lt;br /&gt;
Nastavení (položka 2198 je k dispzoici až od FW 11/2025):&lt;br /&gt;
&lt;br /&gt;
 sys[2198] 09 i R   mqtt_publish PUBLISH Fixed Header value ( 0b0011dqqr : d=DUP, qq=QOS, r=RETAIN ) &lt;br /&gt;
 sys[2198] 09 i W   write ( default: 0b00110001 )&lt;br /&gt;
&lt;br /&gt;
Zatím nepoužité pozice:&lt;br /&gt;
&lt;br /&gt;
 sys[2204] až sys[2208]   reserved&lt;br /&gt;
&lt;br /&gt;
Pro každou příchozí datovou zprávu z Brokeru, je tato zpráva uložena do následujících sys: (pozor, každá nová příchozí zpráva přepíše předchozí údaje)&lt;br /&gt;
&lt;br /&gt;
 sys[2210] 09 s R   poslední přijatý Topic Name z Brokeru (broker publish)&lt;br /&gt;
 sys[2250] 09 s R   poslední přijatý Value z Brokeru (broker publish)&lt;br /&gt;
 sys[2290] 09 i R   timestamp pro poslední přijatou zprávu (broker publish)&lt;br /&gt;
&lt;br /&gt;
SDS umí přijaté datové zprávy uchovat, v rámci následující tabulky. Toto je důležité zejména pokud různé zprávy přicházejí velice rychle za sebou, aby se pro SDS-C program neztratili.&lt;br /&gt;
&lt;br /&gt;
Nejvíce lze mít až 32 položek (řádků) v tabulce, nicméně některá SDS nemají ve své paměti dostatečné místo a počet je tedy omezen. Pozor na to při psaní programu !&lt;br /&gt;
&lt;br /&gt;
 sys[2209] 09 i R   počet řádků v tabulce pro dané SDS (různé SDS mají různě volnou paměť, proto je v nich i různý počet použitelných Subscribe položek)&lt;br /&gt;
&lt;br /&gt;
Jednotlivé položky v tabulce příchozích zpráv:&lt;br /&gt;
&lt;br /&gt;
 sys[2211] až sys[2241] &lt;br /&gt;
          09 s R   název položky (Topic Name) pro daný index #1 - #31&lt;br /&gt;
                   (max délka záznamu dle SDS)&lt;br /&gt;
 &lt;br /&gt;
 sys[2242] až sys[2249]   reserved&lt;br /&gt;
 &lt;br /&gt;
 sys[2251] až sys[2281] &lt;br /&gt;
          09 s R   poslední přijatá hodnota (Value) ze publish zprávy ze brokeru pro daný index #1 - #31&lt;br /&gt;
                   (max délka záznamu dle SDS)&lt;br /&gt;
 &lt;br /&gt;
 sys[2282] až sys[2289]   reserved&lt;br /&gt;
 &lt;br /&gt;
 sys[2291] až sys[2321] &lt;br /&gt;
          09 i R   timestamp (hodnota uptime) v okamžiku příchodu zprávy z Brokeru&lt;br /&gt;
                   (pro detekci změny - příchozí zprávy z Brokeru)&lt;br /&gt;
                   0 = zatím nic nepřišlo&lt;br /&gt;
                   1..MAX = hodnota uptime v okamžiku poslední změny&lt;br /&gt;
&lt;br /&gt;
Nastavení Topic názvů každé položky (tedy &amp;quot;zápis&amp;quot; do sys[2211] až sys[2241]) se provede funkcí mqtt_subscribe(), které zadáváte pozici v této tabulce a název Topicu. Pokud se Subscribe nepovede, zůstane pozice v tabulce prázdná. Po připojení k Brokeru je tabulka vždy zcela prázdná, a SDS-C program si ji vždy musí dle potřeby naplnit. Pokud Broker pošle aktualizaci obsahu (value) na některou z přihlášených Topic položek, které SDS v této tabulce má, tak SDS automaticky přepíše patřičný řádek tabulky (tj. obsah jednoho ze sys[2251] až sys[2281]) a patřičně aktualizuje časovou známku změny.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reserved ==&lt;br /&gt;
&lt;br /&gt;
 sys[2322] až sys[2398]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MODBUS-TCP klient ==&lt;br /&gt;
&lt;br /&gt;
Ověření FW v SDS:&lt;br /&gt;
&lt;br /&gt;
 sys[2399] 09 i R   podpora pro MODBUS TCP&lt;br /&gt;
                     0 = NE&lt;br /&gt;
                     1 = ANO (první verze implementace v SDS)&lt;br /&gt;
&lt;br /&gt;
Každé nové TCP spojení na server:&lt;br /&gt;
&lt;br /&gt;
 sys[2400] 09 i R   stav průběhu modbus_tcp_connect()&lt;br /&gt;
                     -6 = timeout při čekání na připojení, nepřipojeno&lt;br /&gt;
                     -5 = nespravne parametry (hodnoty např. IP, port), nepřipojeno&lt;br /&gt;
                     -4 = nespravne parametry (počet parametrů), nepřipojeno&lt;br /&gt;
                     -3 = funkce zavolána dříve (nebo opakovaně) než bylo dokončeno předchozí volání funkce, takže toto volání je ignorováno&lt;br /&gt;
                     -2 = pokus o TCP připojení selhal&lt;br /&gt;
                     -1 = nepoužito&lt;br /&gt;
                      0 = klid, nic se neprovádí, ODPOJENO ! (lze se začít připojovat)&lt;br /&gt;
                      1 = bylo zahájeno připojování (otevírá se TCP spojení)&lt;br /&gt;
                      2 = TCP připojeno, můžete komunikovat &lt;br /&gt;
&lt;br /&gt;
MODBUS funkce - každá má svůj nezávislý stavový údaj:&lt;br /&gt;
&lt;br /&gt;
 sys[2401] 09 i R   stav průběhu zpracování funkce 0x01 - modbus_tcp_read(uid, 0x01, ...);&lt;br /&gt;
 sys[2402] 09 i R   stav průběhu zpracování funkce 0x02 - modbus_tcp_read(uid, 0x02, ...);&lt;br /&gt;
 sys[2403] 09 i R   stav průběhu zpracování funkce 0x03 - modbus_tcp_read(uid, 0x03, ...);&lt;br /&gt;
 sys[2404] 09 i R   stav průběhu zpracování funkce 0x04 - modbus_tcp_read(uid, 0x04, ...);&lt;br /&gt;
 sys[2405] 09 i R   stav průběhu zpracování funkce 0x05 - modbus_tcp_writesingle(uid, 0x05, ...);&lt;br /&gt;
 sys[2406] 09 i R   stav průběhu zpracování funkce 0x06 - modbus_tcp_writesingle(uid, 0x06, ...);&lt;br /&gt;
 sys[2415] 09 i R   stav průběhu zpracování funkce 0x0F - modbus_tcp_writemultiple(uid, 0x0F, ...);&lt;br /&gt;
 sys[2416] 09 i R   stav průběhu zpracování funkce 0x10 - modbus_tcp_writemultiple(uid, 0x10, ...);&lt;br /&gt;
                     pro všechny tyto stavy platí následující hodnoty:&lt;br /&gt;
                      -6 = timeout (neprovedeno), můžete volat další funkci&lt;br /&gt;
                      -5 = nespravne parametry (hodnoty), můžete volat další funkci&lt;br /&gt;
                      -4 = nespravne parametry (počet parametrů), můžete volat další funkci&lt;br /&gt;
                      -3 = funkce zavolána dříve (nebo opakovaně) než bylo dokončeno předchozí volání funkce, takže toto volání je ignorováno&lt;br /&gt;
                      -2 = SDS není připojeno (buď právě ještě probíhá připojování, nebo není vůbec připojeno)&lt;br /&gt;
                      -1 = bez aktivity, lze volat funkci&lt;br /&gt;
                       0 = provedeno OK (obdržena platná odpověď bez chybového kódu), můžete volat další funkci&lt;br /&gt;
                       1 .. 15 = obdržena odpověď s chybou 0x01 až 0x0F, můžete volat další funkci&lt;br /&gt;
                     256 = pracuji, čekejte na aktualizovanou hodnotu&lt;br /&gt;
&lt;br /&gt;
 sys[2417] až sys[2462]   reserved&lt;br /&gt;
&lt;br /&gt;
 sys[2463] 09 i R  poslední hodnota Unit Identifier zapsaná do MBAP hlavičky při odeslání zprávy&lt;br /&gt;
 &lt;br /&gt;
 sys[2464] 09 i R  poslední hodnota Transaction Identifier zapsaná do MBAP hlavičky při odeslání zprávy&lt;br /&gt;
&lt;br /&gt;
Přijatá data (funkce _read) - obsah je aktualizován pro každou novou přijatou MODBUS zprávu. Výsledky (přijatá data) jsou vždy uloženy do následujících sys (bez ohledu na typ MODBUS funkce).&lt;br /&gt;
&lt;br /&gt;
 sys[2465] 09 i R  timestamp poslední přijaté zprávy&lt;br /&gt;
                   (vhodné pro detekci nové přijaté zprávy)&lt;br /&gt;
 &lt;br /&gt;
 sys[2466] 09 i R  počet přijatých položek, pro poslední přijatou zprávu&lt;br /&gt;
                   (počet celých položek)&lt;br /&gt;
 &lt;br /&gt;
 sys[2467] 09 i R  přijatá hodnota Unit Identifier z příchozí MBAP hlavičky&lt;br /&gt;
                   (hodnota adresy je převzata z příchozí zprávy)&lt;br /&gt;
 &lt;br /&gt;
 sys[2468] 09 i R  přijatá hodnota Transaction Identifier z příchozí MBAP hlavičky&lt;br /&gt;
                   (hodnota adresy je převzata z příchozí zprávy) &lt;br /&gt;
 &lt;br /&gt;
 sys[2469] 09 i R  adresa první položky coil/input/register (které odpovídá údaj v sys[2470])&lt;br /&gt;
                   (MODBUS způsob číslování položek - adresa 1..n)&lt;br /&gt;
 &lt;br /&gt;
 sys[2470] až sys[2719]&lt;br /&gt;
          09 i R   přijaté hodnoty pro poslední přijatou zprávu&lt;br /&gt;
                    MODBUS funkce 0x01 a 0x02: každý sys[] má hodnotu 0 až 255, jednotlivé bity určují coils/input&lt;br /&gt;
                    MODBUS funkce 0x03 a 0x04: každý sys[] má hodnotu -32768 až 32767, tedy hodnotu pro každý jeden registr&lt;br /&gt;
&lt;br /&gt;
Pro funkce 0x01 a 0x02 jsou přijatá data kódována v jednobitovém tvaru, vždy po osmi bitech na jeden sys[]. Takže prvních osm bitů naleznete v sys[2465], dalších osm bitů v sys[2466] a tak dále.&lt;br /&gt;
&lt;br /&gt;
Pro funkce 0x03 a 0x04 jsou přijaté hodnoty registrů (MODBUS: vždy int16_t) uloženy postupně zasebou (tak jak přišli ve zprávě) do jednotlivých sys[], takže první registr je v sys[2465], druhý ve sys[2466] atd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rezerva&lt;br /&gt;
&lt;br /&gt;
 sys[2715] až sys[2809]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Statistiky COMx ==&lt;br /&gt;
&lt;br /&gt;
COM1:&lt;br /&gt;
&lt;br /&gt;
 sys[2810] 09 i R   reserved&lt;br /&gt;
 &lt;br /&gt;
 sys[2811] 09 i R   počet odeslaných bajtů (TX) na port COM1&lt;br /&gt;
 &lt;br /&gt;
 sys[2812] 09 i R   počet neodeslaných bajtů (zahozených) pro port COM1 &lt;br /&gt;
                    (tzn. SDS chce odeslat více bajtů než zvládá nastavená rychlost COM portu)&lt;br /&gt;
 &lt;br /&gt;
 sys[2813] 09 i R   počet čekajících bajtů na odeslání (TX) ve frontě pro port COM1&lt;br /&gt;
 &lt;br /&gt;
 sys[2814] 09 i R   počet přijatých bajtů (RX) na portu COM1&lt;br /&gt;
 &lt;br /&gt;
 sys[2815] 09 i R   počet nepřijatých bajtů (ignorované) pro port COM1 &lt;br /&gt;
                    (tzn. pro případ kdy do SDS je posláno více bajtů než SDS zpracuje, a tak musí zahazovat)&lt;br /&gt;
 &lt;br /&gt;
 sys[2816] 09 i R   počet nevyzvednutých přijatých bajtů (RX) ve frontě pro port COM1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rezerva&lt;br /&gt;
&lt;br /&gt;
 sys[2817] až sys[2860]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
COM6:&lt;br /&gt;
&lt;br /&gt;
 sys[2861] 09 i R   počet odeslaných bajtů (TX) na port COM6&lt;br /&gt;
 &lt;br /&gt;
 sys[2862] 09 i R   počet neodeslaných bajtů (zahozených) pro port COM6&lt;br /&gt;
                    (tzn. SDS chce odeslat více bajtů než zvládá nastavená rychlost COM portu)&lt;br /&gt;
 &lt;br /&gt;
 sys[2863] 09 i R   počet čekajících bajtů na odeslání (TX) ve frontě pro port COM6&lt;br /&gt;
 &lt;br /&gt;
 sys[2864] 09 i R   počet přijatých bajtů (RX) na portu COM6&lt;br /&gt;
 &lt;br /&gt;
 sys[2865] 09 i R   počet nepřijatých bajtů (ignorované) pro port COM6&lt;br /&gt;
                    (tzn. pro případ kdy do SDS je posláno více bajtů než SDS zpracuje, a tak musí zahazovat)&lt;br /&gt;
 &lt;br /&gt;
 sys[2866] 09 i R   počet nevyzvednutých přijatých bajtů (RX) ve frontě pro port COM6&lt;br /&gt;
&lt;br /&gt;
Pro využití všech těchto statistik, je potřeba mít v SDS aktuální firmware (starší FW zde vrací nuly).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konec dokumentu ==&lt;br /&gt;
&lt;br /&gt;
'''Konec dokumentu.'''&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=971</id>
		<title>Firmware</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=971"/>
		<updated>2025-11-15T14:20:15Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Nový Firmware ==&lt;br /&gt;
&lt;br /&gt;
Aktualizujte si své SDS - nahrejte do něj nový firmware, který získáte na této stránce - '''naskrolujte dolů''' kde naleznete odkaz na BIN soubor pro vaše zařízení.&lt;br /&gt;
&lt;br /&gt;
Postup a řešení problémů: [[Manual_Firmware_Update|Návod pro aktualizaci Firmware v SDS]].&lt;br /&gt;
&lt;br /&gt;
Důležité první kroky, které je nutné provést s každým novým zakoupeným modulem: [[New_Device_First_Setup_Steps|První nutné kroky pro nově zakoupené zařízení SDS]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Odkazy ke stáhnutí ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
Pro aktualizaci firmware ve vašem zařízení (nebo pro zápis SDS-C respektive FULL-C programu), potřebujete jeden z následujících programů:&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;PC Software&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_sdsc_winexe.jpg]] '''Program SDSC.exe''' (programovací jazyk SDS-C, aktualizace firmware pro SDS '''první řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; stáhnout WinEXE pro SDS-C [https://sds.an-d.cz/firmware/SDSC_310123.exe zápis/simulace/upload SDS-C (SDS-C '''verze 09''') a UWEB, ze dne 31.1.2023]&amp;lt;br&amp;gt;SHA-256: daf1095f206404e33223f675f5d0bc09d4fc5dfd7d9f79f4f735af88f5ff1e6a&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program FULLC.exe''' (programovací jazyk FULL-C, aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; (FC verze '''0x12''' - '''aktuální'''): stáhnout WinEXE pro FULL-C [https://sds.an-d.cz/firmware/FULLC_220724.exe zápis/upload FULL-C a UWEB, ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro Firmware od 9.3.2023 včetně, pro všechny varianty SDS (64kB a 128kB a 512kB)&amp;lt;br&amp;gt;SHA-256: b4cb95d8ec8a6e844a3a4c9a2e9fc50ece60ccf44e8043f8c10f46b2294cae0b&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program SDSLOAD.exe''' (&amp;quot;jednokrokový&amp;quot; upload .FC souborů a aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; ('''aktuální''' verze, pro FW od 10.7.2017 včetně a dále) stáhnout WinEXE [https://sds.an-d.cz/firmware/SDSLOAD_220724.exe program SDSLOAD ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro všechny SDS varianty 64kB a 128kB a 512kB, (subvarianty DP a DS84)&amp;lt;br&amp;gt;SHA-256: ded5bf1aca2e04e22c33899a0976deccc8ff76eb88f53ecd9769788b7daa25a7&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_empty.jpg]] '''Program SDS LOG'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; Program '''[[SDS LOG: intro|SDS LOG]]''' - verze 0.1 ze dne 26.8.2011 - [https://sds.an-d.cz/firmware/SDS_LOG.exe stáhnout EXE program]&lt;br /&gt;
&amp;lt;li&amp;gt; Zdrojové kódy programu SDS LOG (Creative Commons Licence) [[SDS LOG: source code|ke stáhnutí zde]]&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS LOG: changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;První Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMICROE.jpg]]  [[Soubor:Thumbnail_SDSMICRO.jpg]] [[Soubor:Thumbnail_SDS_DIN.jpg]] '''D0000001''' MICRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: LM]] varianty '''LIGHT''', '''LIGHT 2''' a '''E (DIN)'''.&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny varianty a revize SDS MICRO LM.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_151125_CZ.bin SDS-MICRO-LM-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_151125_EN.bin SDS-MICRO-LM-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B0000057''' MICRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_151125_CZ.bin SDS-MICRO-ST-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_151125_EN.bin SDS-MICRO-ST-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B000D957''' MICRO ST DP&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST DP]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST DP.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_151125_CZ.bin SDS-MICRO-ST-DP-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_151125_EN.bin SDS-MICRO-ST-DP-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MINI_1.png]] [[Soubor:Thumbnail_SDS_MINI_2.png]] '''B0000020''' MINI ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MINI: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MINI ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MINI_151125_CZ.bin SDS-MINI-ST-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MINI_151125_EN.bin SDS-MINI-ST-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
[[SDS MINI: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMACRO.jpg]] '''C0000001''' MACRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: LM]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_151125_CZ.bin SDS-MACRO-LM-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_151125_EN.bin SDS-MACRO-LM-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MACRO_ST_rev1.png]] '''C0000057''' MACRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_151125_CZ.bin SDS-MACRO-ST-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_151125_EN.bin SDS-MACRO-ST-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSTTCPRO.jpg]] '''B0000001''' TTCPRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS TTCPRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_151125_CZ.bin SDS-TTCPRO-ST-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_151125_EN.bin SDS-TTCPRO-ST-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS TTCPRO ST má shodný Change Log se SDS MINI ST, a to zde: [[SDS MINI: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSIO6.jpg|160px]] '''D0000006''' IO6 LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: LM]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_151125_CZ.bin SDS-IO6-LM-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_151125_EN.bin SDS-IO6-LM-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 LM má shodný Change Log se SDS MICRO LM, a to zde: [[SDS MICRO: LM: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_empty.jpg]] '''D0000011''' IO6 ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_151125_CZ.bin SDS-IO6-ST-CZ ze dne 15.11.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_151125_EN.bin SDS-IO6-ST-EN released on 15-Nov-2025]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 ST má shodný Change Log se SDS MICRO ST, a to zde: [[SDS MICRO: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_FTP_rev1.png]] '''F0000001''' FTP LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS FTP: LM]], výchozí firmware.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Firmware: ''SDS FTP ze dne 7.9.2010'' už nahrán ve výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS FTP: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_ONEDPS.jpg]] '''E000AAA1''' UPS ONEDPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: ONEDPS]], finální jednodesková verze (aktuální) (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stáhnout firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_CZ.bin (Česká lokalizace) SDS-UPS-ONEDPS-LM ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;Download firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_EN.bin (English language version) SDS-UPS-ONEDPS-LM released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS UPS: LM: ONEDPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_TWODPS.jpg]] '''C00xxxxx''' UPS TWODPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: TWODPS]], HW rev3u - DVOUDESKOVÁ (UŽ NEPRODÁVANÁ) varianta.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je zaslán na požádání (pošlete email), aktuální verze je z 1.3.2011 (dále aktualizováno na specifické požádání, raději proto přejděte na nový HW).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Každá deska má svou kalibraci, proto každá deska má svůj vlastní FW, proto musíte uvést S/N svého výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;HISTORIE: [[SDS UPS: LM: TWODPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;Druhá Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSBIG.jpg]] [[Soubor:Thumbnail_SDSSMALL.jpg]] '''B1900001''' / '''B1900002''' / '''B1900004''' : BIG, BIG2, SMALL, STSW, MBGW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Společný firmware pro výrobky [[SDS BIG]], [[SDS SMALL]] a [[SDS STSW]] a [[SDS MBGW]]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je jednotný pro všechny varianty '''SDS Druhé Produktové Řady''', nutné je rozlišení dle varianty 64kB/128kB/512kB. Rozlišení podle dalších subvariant (DP, DS84) se neprovádí.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je společný pro BIG a BIG2, rozlišení je pouze dle varianty 64/128/512.&lt;br /&gt;
&amp;lt;li&amp;gt;Pozn. Modul SMALL a modul MBGW interně obsahuje modul STSW, nahrává se tam tedy stejný FW.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware vždy vyžaduje použití odpovídající, aktuální verze FULLC.EXE programu. &lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS BIG/SMALL/STSW: [[SDS BIG: firmware changelog|firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;64kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 64kB) [https://sds.an-d.cz/firmware/SDS_BIG_64K_251025_EN.bin firmware &amp;quot;64kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 25.10.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;128kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 128kB) [https://sds.an-d.cz/firmware/SDS_BIG_128K_251025_EN.bin firmware &amp;quot;128kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 25.10.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;512kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [[firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 12.4.2022|informace pokud máte SDS512 s FW &amp;lt;b&amp;gt;starším&amp;lt;/b&amp;gt; než 12.4.2022]]&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [https://sds.an-d.cz/firmware/SDS_BIG_512K_251025_EN.bin firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 25.10.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;Informace: SDS BIG/SMALL/STSW 512 se starším FW než 12.4.2022 vyžaduje přeprogramování u výrobce.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| POZOR&lt;br /&gt;
'''Aktualizujte''' své doplňkové sandwich desky, tzn. [[SDS BIG: DALI]], [[SDS BIG: LORA]] - na verzi FW 5.12.2016 '''nebo novější'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Aktualizaci lze provést jen fyzicky u výrobce, ten ji provede bezplatně (zašlete výrobci vaše SDS pro jeho aktualizaci). Se starým FW nebude tento HW plně fungovat.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Informace ===&lt;br /&gt;
&lt;br /&gt;
 VŽDY MĚJTE VE SVÉM ZAŘÍZENÍ NEJNOVĚJŠÍ FIRMWARE, A POUŽÍVEJTE TAKÉ NEJNOVĚJŠÍ SDS-C EXE / FULL-C EXE PROGRAM.&lt;br /&gt;
 V opačném případě vám budou chybět nové funkce, které neustále přidáváme, a také nebudete mít opravené nalezené chyby.&lt;br /&gt;
 V případě že chcete získat podporu, musíte mít instalovaný nejnovější firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Historický Software ===&lt;br /&gt;
&lt;br /&gt;
Za účelem aktualizace takových SDS, kde už dlouho nebyl aktualizován firmware, je potřeba použít odpovídající EXE program pro aktualizaci takovéhoto zařízení.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== První Produktová Řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro SDS-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_151119.exe ze dne '''15.11.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 08, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020118.exe ze dne '''2.1.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 07, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020317.exe ze dne '''2.3.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 8.8.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_060216.exe ze dne '''6.2.2016''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které nemají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 24.1.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_231111.exe ze dne '''23.11.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 04&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_170211.exe ze dne '''17.2.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''února 2011''')&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro ''SDS-C verze č. 03'' (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_140511.exe ze dne '''14.5.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''konce května 2011''')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Druhá Produktová řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro FULL-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_070323.exe ze dne '''7.3.2023''']&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_311222.exe ze dne '''31.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 11, (firmware od 9.1.2023 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_071222.exe ze dne '''7.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 10, (firmware od 18.11.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_161022.exe ze dne '''16.10.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0F, (firmware od 16.10.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_110722.exe ze dne '''11.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0E, (firmware od 11.7.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010722.exe ze dne '''1.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0D, (firmware od 6.8.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030422.exe ze dne '''3.4.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0C, (firmware od 23.3.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010322.exe ze dne '''1.3.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0B, (firmware od 6.8.2020 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030119.exe ze dne '''3.1.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0A, (firmware od 3.1.2019 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010718.exe ze dne '''1.7.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 09, (firmware od 27.6.2018 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_100717.exe ze dne '''10.7.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 08, (firmware od 10.7.2017 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_080617.exe ze dne '''8.6.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 06, (firmware starší než Červenec-2017, a pouze pro variantu SDS 64kB)&lt;br /&gt;
&lt;br /&gt;
* (historická verze) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_201022.exe ze dne 20.10.2022]&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_120417.exe ze dne 12.4.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB která používá ''starý'' firmware (2017 nebo starší)&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_100717.exe ze dne 10.7.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB a 128kB (nepodporuje variantu 512kB tak jako aktuální stáhnutelná verze aplikace)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta Testing ==&lt;br /&gt;
&lt;br /&gt;
Než vydáme novou verzi, je potřeba změny a novinky otestovat.&lt;br /&gt;
&lt;br /&gt;
Pokud jste ochotní se testu zúčastnit, pak se podívejte [https://forum.sds.an-d.cz/viewtopic.php?id=129 na tento odkaz]. Zde jsou uveřejněny vždy nejnovější beta verze firmware.&lt;br /&gt;
&lt;br /&gt;
Diskuse s vývojem k aktuálnímu Firmware je k dispozici na našem fóru.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS-C:_sdsc_sysp&amp;diff=970</id>
		<title>SDS-C: sdsc sysp</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS-C:_sdsc_sysp&amp;diff=970"/>
		<updated>2025-11-15T11:19:56Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje programovací jazyk '''SDS-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Zařízení Druhé Produktové Řady používají jazyk FULL-C (jiná část této Wiki).&lt;br /&gt;
&lt;br /&gt;
== Definice systémových proměnných SDS-C : pole sys[] ==&lt;br /&gt;
&lt;br /&gt;
Tzv. &amp;quot;systémová proměnná&amp;quot; je prvek v programovacím jazyku SDS-C, který má textový název, a se kterým se dá pracovat - číst hodnotu z proměnné a zapisovat hodnotu do proměnné. Často je čtení a zápis svázáno s fyzickou akcí (např. zápis do konkrétní systémové proměnné změní stav relé).&lt;br /&gt;
&lt;br /&gt;
SDS-C obsahuje celou řadu vyhrazených, předem pevně definovaných systémových 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. Úplný seznam je právě na této stránce.&lt;br /&gt;
&lt;br /&gt;
Proměnné poskytované SDS-C a navázané na HW zařízení, jsou označeny jako '''sys[x]''', kde index '''x''' je číslo do 0 do 1023 (popřípadě až do 2048 ale to jen na určitých typech zařízení).&lt;br /&gt;
&lt;br /&gt;
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í).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Legenda k tabulce:''&lt;br /&gt;
&lt;br /&gt;
Proměnná typu '''i''' je 32-bit signed integer (nejvyšší bit je znaménko, a zbývajících 31 bitů je číselná hodnota).&lt;br /&gt;
&lt;br /&gt;
Proměnná typu '''s''' je soubor znaků (string) - tj. '''text''' (řetězec znaků) - a tyto proměnné '''lze použít jen pro čtení'''.&lt;br /&gt;
&lt;br /&gt;
Některé proměnné lze jen číst ('''R'''), do některých lze kromě čtení i zapisovat ('''RW'''). &lt;br /&gt;
&lt;br /&gt;
Údaj '''XX''' v seznamu proměnných udává verzi firmware, kdy byla daná proměnná zavedena.&lt;br /&gt;
'''Význam hodnot:'''&lt;br /&gt;
* '''01''' - první verze, výchozí firmware ze začátku roku 2010&lt;br /&gt;
* '''02''' - druhá verze, bylo vydáno na přelomu roku 2010 a 2011&lt;br /&gt;
* '''03''' - třetí verze, tj. pouze pro firmware od 03.2011 &lt;br /&gt;
* '''04''' - čtvrtá verze, tj. pouze pro firmware od 06.2011 a novější&lt;br /&gt;
* '''05''' - pátá verze, tj. pouze pro firmware od 11.2011 a novější&lt;br /&gt;
* '''06''' - šestá verze, tj. pouze pro firmware od 03.2012 a novější&lt;br /&gt;
* '''07''' - sedmá verze, tj. pouze pro firmware od 07.2017 a novější&lt;br /&gt;
* '''08''' - osmá verze, tj. pouze pro firmware od 12.2018 a novější&lt;br /&gt;
* '''09''' - devátá verze, tj. pouze pro firmware od 06.2020 a novější&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pokud máte starší verzi firmware, je možné, že některé později přidané položky nebudou k dispozici. Řešením je udržovat firmware ve vašem zařízení vždy aktuální.&lt;br /&gt;
&lt;br /&gt;
Jazyk SDS-C indexuje všechny pole od čísla 0 (nula) - všechna pole, tj. &amp;quot;sys[]&amp;quot;, &amp;quot;ram[]&amp;quot;, &amp;quot;text[]&amp;quot;, začínají se svým obsahem od indexu nula.&lt;br /&gt;
&lt;br /&gt;
'''Pozor''' však na číslování hardware vstupů a výstupů, ty jsou číslovány dle &amp;quot;elektrikářských&amp;quot; zvyklostí, to znamená že číslování začíná od čísla '''1''' ('''jednička''') - toto ale nemá hlubší vliv na SDS-C.&lt;br /&gt;
&lt;br /&gt;
Pokud narazíte na takové zařízení SDS, které má ještě velmi starou verzí webového rozhraní, kde byly ještě některé vstupy číslovány od nuly, aktualizujte si toto zařízení aby používalo nejnovější firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Důležité upozornění'''&lt;br /&gt;
&lt;br /&gt;
Protože SDS-C ''umí pracovat pouze a jen'' s '''32-bit signed''' integer čísly (tj. 1-bit znaménko a 31-bitů číslo, typ int32_t), tak dochází k (očekávané) konverzi '''32-bit unsigned''' čísel (tj. bez znaménka 32-bitů číslo, typ uint32_t) mezi vnitřními hodnotami v SDS a reprezentací v SDS-C (například když takové unsigned číslo je dotazováno například přes čtení &amp;quot;sys[]&amp;quot; hodnot).&lt;br /&gt;
&lt;br /&gt;
Jinýmy slovy - uvnitř SDS jsou drženy některé hodnoty jako 32-bit unsigned. Ale protože SDS-C pracuje pouze s 32-bit signed čísly, pak při čtení takových čísel zevnitř SDS jsou tyto čísla prezentovány v SDS-C jako 32-bit signed. Bitově se nezmění, jen se &amp;quot;mění&amp;quot; pohled na to, co který bit znamená, viz text dále.&lt;br /&gt;
&lt;br /&gt;
''Příklad:'' &lt;br /&gt;
Hodnota &amp;quot;sys[625]&amp;quot; reprezentuje &amp;quot;uplynulý čas od posledního zachyceného S0 impulsu na daném S0 vstupu&amp;quot;. Tato hodnota je udržována uvnitř SDS a program SDS-C k ní má přístup.&lt;br /&gt;
Tento čas je udán v milisekundách a začína na nule, a s každou milisekundou ze zvýší o jedničku. Protože SDS udržuje toto počítadlo (uvnitř své paměti) jako '''32-bit unsigned''', tak jakmile dojde k dopočítání do 31-bitů (tj. 2147483647) a překlopí se tedy 32. bit (tj. na 2147483648), tak SDS-C při čtení &amp;quot;sys[625]&amp;quot; vrátí zápornou hodnotu (tj. -2147483648). Toto je v pořádku - pokud si vypíšete jednotlivé bity, tak budou stále přesně odpovídat, ale tím že SDS-C interpetuje všechny čísla jako '''32-bit signed''', tak vzorovou hodnotu použije a zobrazí jako zápornou.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  skutečná binární hodnota         | 32-bit signed | 32-bit unsigned&lt;br /&gt;
  (32-bit)                         | SDS-C integer | (internal SDS)&lt;br /&gt;
 ----------------------------------+---------------+-----------------&lt;br /&gt;
  00000000000000000000000000000000 |             0 |               0&lt;br /&gt;
  00000000000000000000000000000001 |             1 |               1&lt;br /&gt;
  00000000000000001111111111111111 |         65535 |           65535&lt;br /&gt;
  01111111111111111111111111111111 |    2147483647 |      2147483647&lt;br /&gt;
  10000000000000000000000000000000 |   -2147483648 |      2147483648&lt;br /&gt;
  10000000000000000000000000000001 |   -2147483647 |      2147483649&lt;br /&gt;
  10000000000000001111111111111111 |   -2147418113 |      2147549183&lt;br /&gt;
  11111111111111111111111111111111 |            -1 |      4294967295&lt;br /&gt;
  11111111111111111111111111111110 |            -2 |      4294967294&lt;br /&gt;
  11111111111111111111111111111101 |            -3 |      4294967293&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, SDS vždy (ať ve svém firmware, tak v SDS-C kódu a proměnných) udržuje hodnoty ve stejném ''binárním'' obsahu. Jen interpretace a další práce s čísly je jiná. SDS samo vnitřně pracuje s '''32-bit unsigned''' hodnotami, a díky tomu na webu a všech M2M stránkách můžete vidět hodnoty v rozsahu od 0 do 4294967295. Zato SDS-C pracuje pouze se '''32-bit signed''' hodnotami, a proto stejné číslo je reprezentováno v rozsahu -2147483648 až 2147483647. Toto je vlastnost daná omezením implementace, zkrátka v SDS-C to nelze jinak udělat (pokud to je problém, což ale není, tak můžete přejít na zařízení s FULL-C které tyto omezení nemá).&lt;br /&gt;
&lt;br /&gt;
To lze snadno ve vašem SDS-C kódu ošetřit, a pokud pouze přenášíte hodnoty z SDS na server (přes HTTP-GET), tak se to dá snadno a ihned zpracovat na serveru &amp;quot;zpět&amp;quot; na '''32-bit unsigned''' hodnotu. Jednoduše na serveru přijmete '''signed''' číslo, a převedete ho například přetypování na '''unsigned''' číslo. Bity v paměti totiž jsou pro oba typy stejné.&lt;br /&gt;
&lt;br /&gt;
V tabulce jsou konkrétní &amp;quot;sys[]&amp;quot; položky, kterých se toto týká, označeny tímto symbolem: '''(!)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Použítí v SDS-C programu'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Příklad zápisu v programu: jaká je teplota na čidle 1 (celé stupně Celsia)? &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 teplota0_ve_stupnich_C = sys[310] / 100;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ne vždy je potřeba provádět 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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
if (sys[310] &amp;gt; sys[311]) { echo('Prvni cidlo je teplejsi nez druhe.'); };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Příklad zápisu v programu: jak zapnu relé RE1? (musíte vědět &amp;quot;co&amp;quot; &amp;quot;kam&amp;quot; zapsat):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
sys[231] = 255; // v tomto okamžiku dojde k ovládnutí relé č. 1 (- viz index 231 dole v seznamu)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Můžete (od 03 verze SDS-C) použít i ''#define'', příklad:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define RELE1 sys[231]&lt;br /&gt;
&lt;br /&gt;
#define TEPLOTA sys[310]&lt;br /&gt;
&lt;br /&gt;
// ...&lt;br /&gt;
 &lt;br /&gt;
RELE1 = 255;&lt;br /&gt;
 &lt;br /&gt;
if (TEPLOTA &amp;gt; 3200) goto x;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pole ram[] ==&lt;br /&gt;
&lt;br /&gt;
Pole '''ram[]''' je samostatné nezávislé pole, dostupné pro SDS-C program od verze č. 03 (a výše).&lt;br /&gt;
&lt;br /&gt;
Obsah pole ram[] je uložen samostatně v RAM paměti, a je při resetu zařízení ztracen.&lt;br /&gt;
&lt;br /&gt;
Obsah pole ram[] se nekryje s dalšími proměnnými programu a tak dále (je to zcela samostatné paměťové pole).&lt;br /&gt;
&lt;br /&gt;
Pole ram[] lze indexovat číslem nebo proměnnou. Příkladem:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
hodnota = ram[10];&lt;br /&gt;
&lt;br /&gt;
index = 23;&lt;br /&gt;
ram[index] = 15 * 2;&lt;br /&gt;
&lt;br /&gt;
index = sys[1023];&lt;br /&gt;
ram[index] = 30;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pole ram[] je indexováno od indexu nula (tj.: ram[0]). Celková velikost (maximální index) je dán verzí SDS-C a konkrétního firmware v zařízení. &lt;br /&gt;
&lt;br /&gt;
Verze SDS-C č. 03 má maximální velikost pole ram[] nastavenou na 128 položek. '''Novější verze už mají počet zvýšený ''' - verze č. 06 má velikost ram[] nastavenou na 512 položek (každá o velikosti int32_t).&lt;br /&gt;
&lt;br /&gt;
Pole ram[] můžete využít k čemukoliv co potřebujete. Také i pro některé SDS-C funkce, jako je ''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[]), nebo při přenosu stránek z/do paměti DF.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ukládání trvalých dat ==&lt;br /&gt;
&lt;br /&gt;
Všechny verze SDS-C mají od k dispozi prostor v oblasti sys[100] až sys[115]. Toto je výchozí oblast pro uchovávání trvanlivých dat (tyto údaje se neztratí při výpadku napájení). Přímým zápisem, do těchto sys[] položek, dojde k zápisu do pevné paměti. Čtení se provádí opět přímým přístupem do těchto sys[].&lt;br /&gt;
&lt;br /&gt;
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 (NVM = Non-Volatile Memory), osazeném na desce zařízení SDS, a to prostřednictvím čtyř SDS-C funkcí.&lt;br /&gt;
&lt;br /&gt;
Pozn. historické verze zařízení SDS-MICRO LIGHT, kde se používá paměť EEPROM (na místo novější DataFlash), poskytuje vždy pouze základní rozsah indexů: 100 až 115, a neposkytuje rozšířený rozsah pevné paměti (tak jako zařízení s pamětí DataFlash).&lt;br /&gt;
&lt;br /&gt;
Více informací, způsob použití a důležité varování je uvedeno na [[SDS-C: DataFlash|stránce ohledně DataFlash]].&lt;br /&gt;
&lt;br /&gt;
Další možnost:&amp;lt;br&amp;gt;&lt;br /&gt;
Zařízení SDS řady ST mají k dispozici, kromě podpory pro DataFlash, i možnost využít Zálohovanou paměť RAM (ta drží obsah i při vypnutém napájení SDS, pokud je v SDS vložena nabitá zálohovací baterie).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pole text[] ==&lt;br /&gt;
&lt;br /&gt;
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) či práci s komunikačními moduly (GSM, LTE, LoRA).&lt;br /&gt;
&lt;br /&gt;
Za tímto účelem je připraveno pole '''text[]'''. Detailní popis je [[SDS-C:_popis_jazyka#Pole_text.5B.5D|zde]].&lt;br /&gt;
&lt;br /&gt;
SDS-C je omezený programovací jazyk z hlediska &amp;quot;práce s textem&amp;quot;. Pokud potřebujete intenzivně s textem pracovat, použijte zařízení SDS které má FULL-C jazyk.&lt;br /&gt;
&lt;br /&gt;
I přes omezení SDS-C je možné připojit různé komunikační moduly (GSM, LTE, LoRA), které komunikují prostřednictvím textových příkazů (viz vzorové programy).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pole share[] ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Od verze SDS-C č. '''08''' je možné použít pole '''share[]''', určené primárně pro sdílení textové informace mezi SDS-C programem a webovým rozhraním (tedy jako [[SDS-C:_sharing|sdílené proměnné]]).&lt;br /&gt;
&lt;br /&gt;
Práce s polem share[] je prakticky zcela shodná jako práce s polem text[]. Prakticky tak získává programátor dvě nezávislé pole pro uchování textu. Nicméně, některé SDS-C funkce vyhrazeně fungují jen s polem text[], ale to je vždy uvedeno v jejich popisu. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vyhrazené funkce ==&lt;br /&gt;
&lt;br /&gt;
Seznam konkrétních zabudovaných '''funkcí''' naleznete na [[SDS-C: sdsc sysf|jiné stránce]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Jednotné proměnné (pole sys[]) pro všechny výrobky řady SDS ==&lt;br /&gt;
&lt;br /&gt;
'''STAV SYSTÉMU'''&lt;br /&gt;
&lt;br /&gt;
 sys[0]   01 i R   &amp;quot;pair code&amp;quot; firmware (nastaven výrobcem napevno: identifikátor vázanosti firmware na hardware)&lt;br /&gt;
                    - lze využít pro rozeznání typu zařízení SDS, na kterém je spuštěn SDS-C program&lt;br /&gt;
 &lt;br /&gt;
 sys[1]   01 i R   počet přihlášených uživatelů do webového rozhraní (v okamžiku čtení této proměnné)&lt;br /&gt;
 &lt;br /&gt;
 sys[2]   01 s R   text SNMP-sysLocation, nastaveno ve webové administraci&lt;br /&gt;
 &lt;br /&gt;
 sys[3]   01 i R   hodnota '''UpTime10''' (doba běhu zařízení)&lt;br /&gt;
                    - počítá se od nuly (0) od každého zapnutí zařízení&lt;br /&gt;
                    - pouze 31 bitové počítadlo&lt;br /&gt;
                      (SDS si pro sebe interně počítá UpTime10 jako 32bit, nicméně&lt;br /&gt;
                       nejvyšší bit je odmaskován před předáním hodnoty do SDS-C programu)&lt;br /&gt;
                    - platné hodnoty: 0 až 2147483647 (včetně)&lt;br /&gt;
                    - po překročení 2147483647 (zde odpovídá up-time 248 dnů) začíná hodnota opět na nule&lt;br /&gt;
                    - jeden krok (zvýšení o jedničku) této hodnoty UpTime10 odpovídá právě '''10 msec''' uplynulému času &lt;br /&gt;
 &lt;br /&gt;
 sys[4]   01 i R   hodnota '''LOCAL''' času (UNIX čas, v sekundách)&lt;br /&gt;
                    - jedná se o lokální (eventuálně posunutý) čas, synchronizovaný se NTP serverem&lt;br /&gt;
                    - je zde už předem započítán GMT offset sys[26] (ten lze nastavit ve webovém rozhraní)&lt;br /&gt;
                    - je zde aplikován automatický posun letního času (je-li to povoleno ve webovém rozhraní)&lt;br /&gt;
                    - poskytnuto je pouze 31 bitové číslo (bude platné až do 19. leden 2038 včetně, &lt;br /&gt;
                      pak hodnota roluje na nulu - nejvyšší bit je odmaskován před předáním do SDS-C programu)&lt;br /&gt;
                    - platné hodnoty: 0 až 2147483647 (včetně)&lt;br /&gt;
 &lt;br /&gt;
 sys[5]   01 i R   rozpad LOCAL času: den (1 až 31)&lt;br /&gt;
 sys[6]   01 i R   rozpad LOCAL času: měsíc (1 až 12)&lt;br /&gt;
 sys[7]   01 i R   rozpad LOCAL času: rok (2011 a dále)&lt;br /&gt;
 sys[8]   01 i R   rozpad LOCAL času: hodina (0 až 23)&lt;br /&gt;
 sys[9]   01 i R   rozpad LOCAL času: minuta (0 až 59)&lt;br /&gt;
 sys[10]  01 i R   rozpad LOCAL času: sekunda (0 až 59)&lt;br /&gt;
 sys[11]  01 i R   rozpad LOCAL času: číslo dne v týdnu - počet dní od Neděle (0 až 6)&lt;br /&gt;
&lt;br /&gt;
'''Upozornění''': hodnota LOCAL času je platná až po úspěšném získání informací z NTP serveru. Po zapnutí (restartu) zařízení je NTP čas (sys[38], sys[4]) nastaven na nulu. Čas je automaticky v SDS aktualizován co jednu sekundu pomocí vnitřních hodin v SDS, a dále je hodnota času pravidelně (v delším intervalu) upřesněna dotazem na NTP server.&lt;br /&gt;
&lt;br /&gt;
V případě, že není zapnuta automatika DST (letní čas) a GMT offset je nastaven na nulu, tak je hodnota LOCAL času identická s NTP časem (UTC). Jakmile se ale nastaví offset nebo aktivuje posun letního času, už jsou tyto hodnoty odlišné (NTP je UTC, a LOCAL je místní (posunutý) čas). Pro různé použití je potřeba různých časů (často je potřeba UTC pro časové známkování údajů, a zase někdy je vhodný LOCAL pro interakci s uživatelem a pro různé výpisy).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ethernet, Internet ==&lt;br /&gt;
&lt;br /&gt;
 sys[12]  01 i R   IP[0] adresa zařízení (nastaveno ve webové administraci)&lt;br /&gt;
 sys[13]  01 i R   IP[1] adresa zařízení&lt;br /&gt;
 sys[14]  01 i R   IP[2] adresa zařízení&lt;br /&gt;
 sys[15]  01 i R   IP[3] adresa zařízení&lt;br /&gt;
 &lt;br /&gt;
 sys[16]  01 i R   GW_IP[0] adresa brány (nastaveno ve webové administraci)&lt;br /&gt;
 sys[17]  01 i R   GW_IP[1] adresa brány&lt;br /&gt;
 sys[18]  01 i R   GW_IP[2] adresa brány&lt;br /&gt;
 sys[19]  01 i R   GW_IP[3] adresa brány&lt;br /&gt;
 &lt;br /&gt;
 sys[20]  01 i R   NETMASK[0] síťová maska (nastaveno ve webové administraci)&lt;br /&gt;
 sys[21]  01 i R   NETMASK[1] síťová maska&lt;br /&gt;
 sys[22]  01 i R   NETMASK[2] síťová maska&lt;br /&gt;
 sys[23]  01 i R   NETMASK[3] síťová maska&lt;br /&gt;
&lt;br /&gt;
 sys[24]  01 i R   stav rozhraní Ethernet (je spuštěno?)&lt;br /&gt;
                    == 0 : komunikace přes Ethernet není k dispozici (odpojený kabel, vypnutá protistrana nebo switch, atd.)&lt;br /&gt;
                    != 0 : Ethernetová komunikace je funkční (LINK OK)&lt;br /&gt;
 &lt;br /&gt;
 sys[25]  01 i R   rychlost připojení k síti Ethernet (hodnoty: 0, 10, 100)&lt;br /&gt;
                    == 0   : neznámá rychlost (není k dispozici Ethernet)&lt;br /&gt;
                    == 10  : 10 MBit per sec&lt;br /&gt;
                    == 100 : 100 MBit per sec&lt;br /&gt;
&lt;br /&gt;
 sys[26]  04 i RW  hodnota GMT offsetu pro NTP (nastaveno v administraci ve webovém rozhraní)&lt;br /&gt;
                    - platné hodnoty: -11 až 11 (včetně) (údaj v hodinách)&lt;br /&gt;
                    - zápis je možný, ale změněná hodnota (ze SDS-C) není uložena do pevné paměti &lt;br /&gt;
                      (po resetu zařízení se vráti na poslední uloženou hodnotu)&lt;br /&gt;
&lt;br /&gt;
 sys[27]  06 i R   platnost přidělené IP adresy zařízení SDS&lt;br /&gt;
                    == 0 : zařízení SDS nemá přidělenou platnou IP adresu (typický důvod: čeká se na DHCP)&lt;br /&gt;
                    != 0 : zařízení SDS má přidělenou platnou IP adresu a může komunikovat přes Ethernet&lt;br /&gt;
 &lt;br /&gt;
 sys[28]  06 i R   poslední okamžik kdy byla změněna IP adresa,&lt;br /&gt;
                   buď ručně z webového rozhraní (administrace) nebo DHCP serverem (je-li DHCP zapnuto)&lt;br /&gt;
                    - údaj odpovídá stavu UpTime10 (1 krok = 10 msec) v daný okamžik&lt;br /&gt;
 &lt;br /&gt;
 sys[29]  06 i R   DHCP: stav (lze použít pro kontrolu správné funkce DHCP klienta v SDS)&lt;br /&gt;
                    == 0 : v klidu (nic se neprovádí, nebo DHCP je vypnuté)&lt;br /&gt;
                    == 1 : odesláno DHCP DISCOVER&lt;br /&gt;
                    == 2 : obdrženo DHCP OFFER&lt;br /&gt;
                    == 3 : odesláno DHCP REQUEST&lt;br /&gt;
                    == 4 : obdrženo DHCP ACK&lt;br /&gt;
                    == 5 : IP adresa je přidělena (BOUND)&lt;br /&gt;
                    == 6,7,8,9,10,11 : zpracování DHCP RENEW&lt;br /&gt;
 &lt;br /&gt;
 sys[30]  06 i R   aktuální hodnota &amp;quot;DHCP Lease Time&amp;quot;&lt;br /&gt;
                    - hodnota je nastavena v okamžiku DHCP BOUND (při přidělení (nové) IP adresy)&lt;br /&gt;
                    - hodnota je každou 1 sec snížena o jednotku (když dojde na nulu, klient začne obnovovat IP adresu)&lt;br /&gt;
                    - údaj je uveden v jednotkách [sec]&lt;br /&gt;
&lt;br /&gt;
 sys[31]  04 i R   MAC[0] (celá MAC je nastavena ve webovém rozhraní)&lt;br /&gt;
 sys[32]  04 i R   MAC[1] &lt;br /&gt;
 sys[33]  04 i R   MAC[2] &lt;br /&gt;
 sys[34]  04 i R   MAC[3] &lt;br /&gt;
 sys[35]  04 i R   MAC[4] &lt;br /&gt;
 sys[36]  04 i R   MAC[5] (vždy je vyplněno dolních 8 bitů)&lt;br /&gt;
&lt;br /&gt;
 sys[37]  06 i R   NTP Client Status (synchronizace času)&lt;br /&gt;
                    == 0 : nesynchronizováno&lt;br /&gt;
                    == 1 : úspěšně přijal paket od NTP Serveru&lt;br /&gt;
               W   zápis hodnoty 10 (přesně a pouze: 10) do tohoto indexu vyvolá nucený NTP dotaz &lt;br /&gt;
                   (dotaz se odešle za 10sec od takovéhoto zápisu)&lt;br /&gt;
 &lt;br /&gt;
 sys[38]  07 i R   čistý UTC čas - v sekundách (UNIX Epoch čas)&lt;br /&gt;
                    - není zde aplikován offset, ani automatika letního času&lt;br /&gt;
                    - přímá hodnota získaná z NTP serveru (tj. jeho odpověď), &lt;br /&gt;
                      uvnitř SDS je sice udržována jako 32bit, &lt;br /&gt;
                      ale do SDS-C programu je hodnota předána jen jako 31bit číslo (nejvyšší 32.bit je odmaskován).&lt;br /&gt;
 &lt;br /&gt;
 sys[39]  07 i R   stav automatiky přepínání Letního Času&lt;br /&gt;
                    == 0 : automatika zakázána, lokální čas není ovlivněn&lt;br /&gt;
                    == 1 : automatika povolena, ale v současné době (podle NTP UTC času) je letní čas neaktivní (tzn. je &amp;quot;SEČ&amp;quot;).&lt;br /&gt;
                    == 2 : automatika povolena, a v současné době (podle NTP UTC času) je letní čas aktivní (tzn. je &amp;quot;SELČ&amp;quot;).&lt;br /&gt;
                           (tzn. do sys[4] je připočten nejen offset ze sys[26], ale teď také plus 1 hodina kvůli SELČ).&lt;br /&gt;
          09 i W   pouze pro případ vypnutého NTP: ruční ovládání automatiky (tzn. povolena nebo nepovolena) (SELČ pak automatika sama rozhodne, je-li povolena)&lt;br /&gt;
                    zápis 0 : vypnout automatiku (nebude pracovat = nebude aplikoval posun pro SELČ pro nastavený rozsah v roce), sys[39] pak vrátí 0 při čtení&lt;br /&gt;
                    zapis 3 : zapnout automatiku (automatika aplikuje posun pro SELČ podle toho jaký je aktuální čas a datum), sys[39] pak vrátí 1 nebo 2 dle stavu  &lt;br /&gt;
 &lt;br /&gt;
 sys[138] 09 i R   stav RTC (záloha času - pouze SDS se záložní baterií)&lt;br /&gt;
                   zatím stále 0, tzn. nepoužito, další obsah se chystá (nový FW)&lt;br /&gt;
 &lt;br /&gt;
 sys[139] 09 i R   vyhrazeno&lt;br /&gt;
&lt;br /&gt;
Princip funkce automatiky letního času je popsán jinde na této wiki. Funkce automatiky je samozřejmě volitelná (viz: ruční nastavení ve webovém rozhraní).&lt;br /&gt;
&lt;br /&gt;
 sys[40] až sys[44]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Provozní údaje ==&lt;br /&gt;
&lt;br /&gt;
 sys[45]  06 i R   relativní čas v milisekundách, počítaný od zapnutí zařízení (tj. UpTime1)&lt;br /&gt;
                    - po resetu zařízení začíná vždy počítat od nuly&lt;br /&gt;
                    - každou milisekundu se zvýší o 1 (narozdíl od UpTime10);&lt;br /&gt;
                      tzn. toto je velmi podobná hodnota jako UpTime, ale je v jiných jednotkách!&lt;br /&gt;
                    - pro sys[45] je k dispozici 31 bitů,&lt;br /&gt;
                      takže po 2147483648 msec dojde k vynulování sys[45] a počítá se opět od nuly nahoru&lt;br /&gt;
                      (pozn.: SDS si interně udržuje hodnotu jako 32bitů, ale do SDS-C programu se předává jen 31bitů).&lt;br /&gt;
&lt;br /&gt;
 sys[46]  06 i R   &amp;quot;surová&amp;quot; (raw) hodnota teploty SoC chipu (není to přímo teplota v degC, ale speciální digitální hodnota),&lt;br /&gt;
                   význam hodnot závisí na typu konkrétního zařízení SDS. &lt;br /&gt;
                   Je to dáno způsobem měření této teploty, a převod na stupně Celsia je jednoduchý, přes vzorec.&lt;br /&gt;
 &lt;br /&gt;
 SDS MICRO (LM), MACRO (LM), UPS, IO6 (LM): &lt;br /&gt;
  Vzorec pro přepočet na degC je [ teplota_SoC_v_degC = ((5*(59-30*((3/1024)*sys[46])))/2) ]&lt;br /&gt;
 &lt;br /&gt;
 SDS TTCPRO, MINI, MACRO-ST, MICRO-ST, IO6-ST: &lt;br /&gt;
  Vzorec pro přepočet na degC je [ teplota_SoC_v_degC = (((((sys[46]/4096)*3.3)-0.76)/0.0025)+25) ]&lt;br /&gt;
&lt;br /&gt;
Teplota SoC je pouze orientační, a je měřena s přesností +/- 5 degC.&lt;br /&gt;
&lt;br /&gt;
 sys[137] 09 i R   POUZE VARIANTY &amp;quot;ST&amp;quot; - počet provedených cyklů procesoru (provedených CPU instrukcí) od zapnutí/restartu &lt;br /&gt;
                   (při přetečení 2^31 počítá opět od nuly, pořád dokola)&lt;br /&gt;
&lt;br /&gt;
Hodnota v indexu 137 je nejjemnější možný &amp;quot;časovač&amp;quot;, dostupný pro program. Délka kroku jednotky odpovídá frekvenci jádra (ta je různá pro jednotlivá SDS, pro řadu ST typicky 120MHz, tedy 1 krok je 8.3nsec). &lt;br /&gt;
Tento index vyžaduje aktuální FW (11/2022 nebo novější).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rozhraní sériové komunikace ==&lt;br /&gt;
&lt;br /&gt;
SDS-C poskytuje přístup k sériovému rozhraní COM1 a COM6. Pouze rozhraní COM1 je také současně přístupno přes převodník Eth/UART (VCP). Program v SDS-C může přistupovat jak ke COM1, tak ke COM6.&lt;br /&gt;
&lt;br /&gt;
Pomocí SDS-C lze zapisovat do sériového rozhraní, a číst data ze sériového rozhraní. Data, přicházející z venku do zařízení SDS, jsou ukládána do příslušného bufferu (RX FIFO), takže lze pomocí SDS-C programu číst i pomaleji, než je rychlost příchozích dat. Buffery jsou malé (zhruba 1kB), proto je potřeba data zpracovávat rychle a včas, ať nedojde k jejich ztrátě.&lt;br /&gt;
&lt;br /&gt;
Poznámka: čtení z UART RX bufferů je k dispozci jen od verze SDS-C č. '''04''' (včetně) a výše. &lt;br /&gt;
Poznámka: UART buffery (pro obě sériové rozhraní) jsou neustále aktivní a příjem dat z UARTu probíhá po celou dobu zapnutí zařízení.&lt;br /&gt;
&lt;br /&gt;
Rozhraní COM1:&lt;br /&gt;
&lt;br /&gt;
 sys[48]  04 i R   informace, je-li přijímací (RX) buffer rozhraní UART-COM1 prázdný. Možné hodnoty:&lt;br /&gt;
                    == 0 : v RX bufferu je jeden popř. více znaků, lze je přečíst (buffer není prázdný)&lt;br /&gt;
                    == 1 : RX buffer je '''prázdný''' (nebyl přijat znak od posledního vyprázdnění bufferu)&lt;br /&gt;
 &lt;br /&gt;
 sys[49]  04 i R   čtení (vyjmutí) znaku z přijímacího (RX) bufferu rozhraní UART-COM1&lt;br /&gt;
                    - čtením tohoto sys[49] se vyjme právě jeden znak (je-li v bufferu nějaký k dispozici), &lt;br /&gt;
                      takže si dejte '''pozor''' protože po vyjmutí už tento znak v bufferu samozřejmě není ! &lt;br /&gt;
                      (Toto může způsobit nezkušenému programátorovi potíže). &lt;br /&gt;
                      Proto je vhodnější čtení ze sys[49] provést vždy jednou do vlastní proměnné, &lt;br /&gt;
                      a s tou pak dále dle libosti pracovat.&lt;br /&gt;
                   Možné hodnoty: &lt;br /&gt;
                    == 0 až 255 : hodnota právě vyjmutého znaku z RX bufferu (znak přijatý UARTem)&lt;br /&gt;
                    == -1       : v bufferu není jakýkoliv znak k dispozici (prázdný buffer)&lt;br /&gt;
&lt;br /&gt;
Poznámka: UART-COM1 buffer je '''vymazán vždy tehdy''', když se připojí TCP klient k převodníku Eth/UART - pozor!&lt;br /&gt;
&lt;br /&gt;
 sys[50]  02 i R   je připojen klient (Ethernet) k převodníku Eth/UART ?&lt;br /&gt;
                    == 0 : není připojen klient&lt;br /&gt;
                    != 0 : je připojen klient (přes TELNET port)&lt;br /&gt;
 sys[51]  02 i R   rychlost [bps] rozhraní UART - COM1 (viz převodník Eth/UART)&lt;br /&gt;
 sys[52]  02 i R   počet datových bitů rozhraní UART - COM1 (platné hodnoty - podle typu SDS: 5,6,7,8)&lt;br /&gt;
 sys[53]  02 i R   počet stop bitů rozhraní UART - COM1 (platné hodnoty - podle typu SDS: 1,2)&lt;br /&gt;
 sys[54]  02 i R   nastavení paritního bitu rozhraní UART - COM1 (platné hodnoty - podle typu SDS: 0,1,2,3,4,5)&lt;br /&gt;
&lt;br /&gt;
Poznámka: parametry sériového rozhraní UART COM1 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í).&lt;br /&gt;
&lt;br /&gt;
Rozhraní COM6:&lt;br /&gt;
&lt;br /&gt;
 sys[55]  04 i R   informace, je-li přijímací (RX) buffer rozhraní UART-COM6 prázdný. Možné hodnoty:&lt;br /&gt;
                    == 0 : v RX bufferu je jeden popř. více znaků, lze je přečíst (buffer není prázdný)&lt;br /&gt;
                    == 1 : RX buffer je '''prázdný''' (nebyl přijat znak od posledního vyprázdnění bufferu)&lt;br /&gt;
 &lt;br /&gt;
 sys[56]  04 i R   čtení (vyjmutí) znaku z přijímacího (RX) bufferu rozhraní UART-COM6&lt;br /&gt;
                    - čtením tohoto sys[56] se vyjme právě jeden znak (je-li v bufferu nějaký k dispozici)&lt;br /&gt;
                   Možné hodnoty: &lt;br /&gt;
                    == 0 až 255 : hodnota právě vyjmutého znaku z RX bufferu (znak přijatý UARTem)&lt;br /&gt;
                    == -1       : v bufferu není jakýkoliv znak k dispozici (prázdný buffer)&lt;br /&gt;
&lt;br /&gt;
 sys[57]  02 i R   rychlost [bps] rozhraní UART - COM6 &lt;br /&gt;
 sys[58]  02 i R   počet datových bitů rozhraní UART - COM6 (platné hodnoty - podle typu SDS: 5,6,7,8,9)&lt;br /&gt;
 sys[59]  02 i R   počet stop bitů rozhraní UART - COM6 (platné hodnoty - podle typu SDS: 1,2)&lt;br /&gt;
 sys[60]  02 i R   nastavení paritního bitu rozhraní UART - COM6 (platné hodnoty - podle typu SDS: 0,1,2,3,4,5)&lt;br /&gt;
&lt;br /&gt;
Rozhraní UART - COM6 je k dispozici jen na SDS-MINI, SDS-MICRO-ST a SDS-MACRO-ST, a je přístupné jen z SDS-C programu.&lt;br /&gt;
&lt;br /&gt;
Doplňující statistiky (počty rx/tx bajtů atd.) jsou k dispozici na indexu 2800+, viz dále na této stránce (dostupnost těchto údajů je závislá na instalovaném aktuálním FW ve vašem SDS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Generátor náhodných čísel ==&lt;br /&gt;
&lt;br /&gt;
 sys[61]  06 i R   generátor náhodných čísel&lt;br /&gt;
                    - při každém přečtení sys[61] je poskytnuto náhodné číslo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Výsledek převodu textu na číslo ==&lt;br /&gt;
&lt;br /&gt;
Pro převod textu (z určené pozice pole ''text'' či ''share'') na číslo se používá funkce SDS-C: ''atoi''. Aby bylo možné výsledek převodu získat, musíte si jej přečíst ze ''sys[62]''.&lt;br /&gt;
&lt;br /&gt;
 sys[62]  06 i RW  výsledek převodu provedeného funkcí '''atoi(text[index]);'''&lt;br /&gt;
&lt;br /&gt;
Pro více informací se podívejte přímo na návod k této funkci.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nastavení rychlosti provádění SDS-C programu ==&lt;br /&gt;
&lt;br /&gt;
SDS-C program může ovlivnit rychlost svého vykonávání. Buď se každá instrukce provede právě s minimálním krokem co 1 msec, nebo se dá tato (často žádoucí) vlastnost snadno vypnout. Pozor, hodnota 1 msec není vždy garantována, např. při zavolání funkce která pracuje s pomalou periférií dojde k čekání, dokud se požadovaná funkce nedokončí.&lt;br /&gt;
&lt;br /&gt;
 sys[63]  04 i RW  vypnutí rychlostního omezení běhu programu, nastavte na:&lt;br /&gt;
                    == 0   : (výchozí hodnota po spuštění programu) - jeden celý příkaz se provede '''co 1 msec'''&lt;br /&gt;
                    == 128 : program je prováděn s co největší rychlostí (bez zarovnávacího 1 msec kroku) &lt;br /&gt;
                             ( pozor ale na realizaci čekacích smyček, pak lze použít jen k tomu určené SDS-C funkce nebo sys[64] )&lt;br /&gt;
&lt;br /&gt;
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 programu je vykonán právě co 1 msec).&lt;br /&gt;
&lt;br /&gt;
Tohoto faktu (krok 1 msec) některé programy využívají k realizaci čekacích smyček, když se předpokládá jeden vykonaný příkaz za 1 msec. Není to však vhodné, protože SDS nedává garanci že se vždy bude jednat přesně o 1 msec (může docházet k náhodnému zdržení až o několik msec, v záležitosti na ostatní činnost systému). Pokud však vypnete toto rychlostní omezení, tak takové případné čekací smyčky přestanou plnit svou funkci (prakticky skončí mnohem dříve): proto ve svých programech používejte pouze k realizaci &amp;quot;čekání&amp;quot; pouze k tomu určené funkce, nebo případně sys[64] nebo některý z UpTime indexů či sys[137] atd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Časování ==&lt;br /&gt;
&lt;br /&gt;
Pro přesnější časování programu, popř. pro spuštění nějaké události po přesně daném intervalu, lze s výhodou využít následující proměnnou:&lt;br /&gt;
&lt;br /&gt;
 sys[64]  01 i RW  sekundový odpočítávač &lt;br /&gt;
                    - zapište libovolné kladné číslo, a systém každou vteřinu toto číslo sníží o 1, &lt;br /&gt;
                      až do nuly, kde v sys[64] zůstane nula (dokud tam zase něco nezapíšete)&lt;br /&gt;
                    - nejvyšší možná použitelná hodnota: (31-bitů) 2147483647 secs (včetně)&lt;br /&gt;
&lt;br /&gt;
Samozřejmě lze využít i jiné způsoby, ale tento je k tomu explicitně určen, vyhovuje-li hrubý krok 1 sekunda. Pro jemnější časování jsou pak vhodnější indexy s UpTime hodnotou, nebo sys[137] pro nejvíce jemné čekání - tyto indexy ale nemají funkci odpočítávání (jsou jen pro čtení), takže hlídání obsahu si už musíte řešit sami ve svém programu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OSI7 funkce ==&lt;br /&gt;
&lt;br /&gt;
OSI7 funkce jsou určeny pro komunikaci mezi SDS a vnějším světem připojeným přes Ethernet (např. se servery v Internetu).&lt;br /&gt;
&lt;br /&gt;
Všechny funkce OSI7 poskytují průběžný stav své činnosti:&lt;br /&gt;
 sys[65]  01 i R   status code - hlášení průběhu, úspěšnosti, nebo chyby OSI7 funkcí (DNS, HTTP-GET, email, ...)&lt;br /&gt;
                    - význam hodnot viz [[OSI7_status_code|popis zde]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
 sys[66]  01 i R   bajt IP[0] - vystup DNS resolveru, funkce ''dns_resolv(&amp;quot;dotazovanadomena.cz&amp;quot;);''&lt;br /&gt;
 sys[67]  01 i R   bajt IP[1] - vystup DNS resolveru, funkce ''dns_resolv(&amp;quot;dotazovanadomena.cz&amp;quot;);''&lt;br /&gt;
 sys[68]  01 i R   bajt IP[2] - vystup DNS resolveru, funkce ''dns_resolv(&amp;quot;dotazovanadomena.cz&amp;quot;);''&lt;br /&gt;
 sys[69]  01 i R   bajt IP[3] - vystup DNS resolveru, funkce ''dns_resolv(&amp;quot;dotazovanadomena.cz&amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
Pro funkci DNS resolveru je potřeba provést konfiguraci (přes webové rozhraní).&lt;br /&gt;
 sys[70]  01 i R   bajt DNS_R_IP[0] - adresa samotného DNS resolveru (DNS server)&lt;br /&gt;
 sys[71]  01 i R   bajt DNS_R_IP[1] - adresa samotného DNS resolveru&lt;br /&gt;
 sys[72]  01 i R   bajt DNS_R_IP[2] - adresa samotného DNS resolveru&lt;br /&gt;
 sys[73]  01 i R   bajt DNS_R_IP[3] - adresa samotného DNS resolveru&lt;br /&gt;
&lt;br /&gt;
 sys[74]  01 s R   text, reserved (v této verzi nepoužito)&lt;br /&gt;
&lt;br /&gt;
Rozšířená funkcionalita pro DNS resolver (pouze ve FW od 11/2025):&lt;br /&gt;
&lt;br /&gt;
 sys[303]  09 i R   DNS RESOLV - (read:) actual TTL live value (= 1..MAX, in seconds) for the very last resolved DNS name (or 0 = no resolv done or finished yet)&lt;br /&gt;
 sys[303]  09 i W   DNS RESOLV - write value 0xD65 (3429dec) to clear the DNS cache&lt;br /&gt;
 sys[304]  09 i R   DNS RESOLV - (read:) timestamp (UTC) of the latest DNS server response (packet) as requested by dns_resolv() function (if 0 then no response received, or cache has expired)&lt;br /&gt;
 sys[305]  09 i R   DNS RESOLV - (read:) get the last set hard TTL limit (0 = invalid (will use 1209600 as default), otherwise 1..MAX = time in seconds)&lt;br /&gt;
 sys[305]  09 i W   DNS RESOLV - set the hard TTL value limit (in seconds)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HTTP GET:&lt;br /&gt;
&lt;br /&gt;
 sys[75]  01 i R   návratový kód webového serveru pro HTTP GET (odpověď z webového serveru)&lt;br /&gt;
                    - nastaveno po dokončení práce funkce '''http_get()'''&lt;br /&gt;
                    - např. číslo '''200''' pro 'OK', '''404''' pro 'not found', a tak dále.&lt;br /&gt;
 &lt;br /&gt;
 sys[76]  03 i RW  číslo portu který chcete aby HTTP klient použil (výchozí hodnota po startu je '''80''')&lt;br /&gt;
                    - '''pozn.''' hodnota tohoto sys[76] se přebere v okamžiku zavolání '''http_get''',&lt;br /&gt;
                      pozdější zápisy mají vliv až zase v okamžiku dalšího zavolání '''http_get'''.&lt;br /&gt;
 &lt;br /&gt;
 sys[77]  04 i RW  ukládat data přijatá z HTTP serveru po obdržení odpovědi na HTTP GET požadavek&lt;br /&gt;
                   do pole ram[]. Tato funkce je výhodná pro okamžité řízení SDS-C programu. &lt;br /&gt;
                   Nastavte na:&lt;br /&gt;
 &lt;br /&gt;
                    == 0 : jakékoliv přijaté data jsou '''zahozena''', &lt;br /&gt;
                           neuloží se (nedojde ke změně obsahu ram[] nebo text[])&lt;br /&gt;
 &lt;br /&gt;
                    == 1 : prvních sys[78] bajtů odpovědi je vloženo do pole ram[] v rozsahu ram[1] až ram[sys[78]]&lt;br /&gt;
                           a do ram[0] je uložena délka odpovědi (tj. hodnota: -1, 0, 1, 2, ... až sys[78]).&lt;br /&gt;
                           (tzn. původní obsah této oblasti pole ram[] je přepsán)&lt;br /&gt;
                           (pokud bude obdržen znak 0x00 dříve, než se zapíše sys[78] bajtů do ram[], &lt;br /&gt;
                            bude zápis přerušen a přijatý 0x00 nebude uložen)&lt;br /&gt;
 &lt;br /&gt;
                    == 2 : prvních sys[78] bajtů odpovědi je vloženo do pole text[] v rozsahu text[0] až text[sys[78]]&lt;br /&gt;
                           a do ram[0] je uložena délka odpovědi (tj. hodnota: -1, 0, 1, 2, ... až sys[78]).&lt;br /&gt;
                           (tzn. původní obsah této oblasti pole text[] a položka ram[0] je přepsán)&lt;br /&gt;
                           (pokud bude obdržen znak 0x00 dříve, než se zapíše sys[78] bajtů do ram[], &lt;br /&gt;
                            bude zápis přerušen a přijatý 0x00 nebude uložen)&lt;br /&gt;
 &lt;br /&gt;
                   Hodnota do ram[0] je vždy zapsaná, ať je sys[77] jakékoliv. Počítejte s tím ve svém programu !&lt;br /&gt;
 &lt;br /&gt;
 sys[78]  04 i RW  počet bajtů, které CHCETE uložit do ram[] nebo text[] po přijetí HTTP GET odpovědi&lt;br /&gt;
                    - výchozí hodnota je '''32''' (tzn. uloží se 32 znaků + samostatně délka do ram[0])&lt;br /&gt;
                    - maximální hodnota je omezena velikostí pole ram[] nebo text[]&lt;br /&gt;
                    - pozor! pokud zapíšete '''0''', budou všechna data zahozena, &lt;br /&gt;
                      ale i v takovém případě dojde k přepisu ram[0] (viz výše)&lt;br /&gt;
&lt;br /&gt;
 sys[79] až sys[80]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
Pozor, v případě nenulového sys[77] HTTP klient čeká tak dlouho, dokud nedostane všech sys[78] bajtů odpovědi z protistrany. To je častou příčinou &amp;quot;problémů&amp;quot; kdy protistrana neodpoví dostatečně dlouhou odpovědí, a klient má stále otevřené spojení a stále čeká a čeká... až dojde na timeout. Což je pak potřeba důsledně a správně ošetřit ve vašem SDS-C programu.&lt;br /&gt;
&lt;br /&gt;
Pro funkci SMTP je potřeba provést konfiguraci (přes webové rozhraní):&lt;br /&gt;
 sys[81]  01 i R   bajt SMTP_S_IP[0] - adresa SMTP serveru (je použita pro funkci '''smtp_send()''')&lt;br /&gt;
 sys[82]  01 i R   bajt SMTP_S_IP[1] - adresa SMTP serveru&lt;br /&gt;
 sys[83]  01 i R   bajt SMTP_S_IP[2] - adresa SMTP serveru&lt;br /&gt;
 sys[84]  01 i R   bajt SMTP_S_IP[3] - adresa SMTP serveru&lt;br /&gt;
&lt;br /&gt;
 sys[85] až sys[88]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
Informace z ('''interní''') ICMP PING funkcionality &amp;quot;IP Watchdog&amp;quot; (konfigurace a ovládání přes webové rozhraní SDS) (nemá souvislost s SDS-C funkcí &amp;quot;ping()&amp;quot; ) :&lt;br /&gt;
&lt;br /&gt;
 sys[89]  06 i R   IP-Watchdog: stav&lt;br /&gt;
                    == 0 : není v provozu (neaktivováno ve webovém rozhraní)&lt;br /&gt;
                    != 0 : v provozu (uživatel aktivoval IP-Watchdog ve webovém rozhraní)&lt;br /&gt;
 &lt;br /&gt;
 sys[90]  06 i R   IP-Watchdog: poslední známé RTT&lt;br /&gt;
                    == 0 .. 65533 : hodnota RTT v msec&lt;br /&gt;
                    &amp;gt;= 65534      : hodnota není k dispozici (nebyl obdržen PING response)&lt;br /&gt;
 &lt;br /&gt;
 sys[91]  06 i R   IP-Watchdog: stav výstupu&lt;br /&gt;
                    == 0 : výstup není aktivován&lt;br /&gt;
                    != 0 : výstup je aktivován (nebyl obdržen PING response podle zadaných požadavků)&lt;br /&gt;
&lt;br /&gt;
Informace z (SDC-C) ICMP PING funkce - '''ping()''' :&lt;br /&gt;
&lt;br /&gt;
 sys[92]  04 i R   stav ICMP PING RESPONSE v okamžiku čtení tohoto sys[92] &lt;br /&gt;
                    == 0 : klid (není odeslán paket, nečekám na odpověď), &lt;br /&gt;
                           popř. byla zadána neplatná IP adresa do funkce '''ping()''' a proto se nic neodešle&lt;br /&gt;
                    == 1 : funkce '''ping()''' byla právě zavolána, &lt;br /&gt;
                           takže se teprve chystá provést svou činnost, zatím se neví výsledek odesílání&lt;br /&gt;
                    == 2 : čeká se na odpověď od ARP &lt;br /&gt;
                           (POZOR! Znamená to že místo ICMP PING REQUEST paketu byl odeslán ARP paket, &lt;br /&gt;
                           protože v ARP tabulce nebyl příslušný záznam)&lt;br /&gt;
                    == 4 : poslán ECHO REQUEST, čekám na ECHO REPLY &lt;br /&gt;
                          (požadovaný stav, funkce '''ping()''' funguje ok)&lt;br /&gt;
                    == 8 : právě obdržel ECHO REPLY &lt;br /&gt;
                          (byla přijata odpověď od vzdáleného zařízení)&lt;br /&gt;
 &lt;br /&gt;
 sys[93]  04 i R   PING SEQ number &lt;br /&gt;
                    - hodnota je nastavena na '''-1''' dokud není přijata odpověď ICMP PING RESPONSE &lt;br /&gt;
                      na ICMP PING REQUEST odeslaný funkcí '''ping()'''&lt;br /&gt;
 &lt;br /&gt;
 sys[94]  04 i R   Round Trip Time, v milisekundách&lt;br /&gt;
                    - dokud není přijata platná ICMP PING RESPONSE tak je zde hodnota '''0xFFFF'''&lt;br /&gt;
                    - čas je zvyšován po pěti milisekundách (údaj v sys[94] je přímo v msec, např. hodnota 55 znamená 55 msec)&lt;br /&gt;
&lt;br /&gt;
Pozn.: ICMP Quench (32bit) je sestaven z &amp;quot;identifier&amp;quot; (16bit) a z &amp;quot;sequence number&amp;quot;. Pomocí sys[93] můžete nastavit '''číslo sekvence''' na libovolnou hodnotu, přičemž hodnota &amp;quot;identifier&amp;quot; je napevno nastavena na &amp;quot;'''0x0280'''&amp;quot; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Funkce '''send_udp()''':&lt;br /&gt;
&lt;br /&gt;
 sys[95]  06 i R   výsledek posledního volání '''send_udp()'''&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : nic neprovedeno&lt;br /&gt;
                           Hodnota '''0''' je nastavena po startu SDS-C programu&lt;br /&gt;
                    == 1 : právě bylo zahájeno odesílání paketu (provádí se)&lt;br /&gt;
                           nastaveno okamžitě po jakémkoliv zavolání '''send_udp()'''.&lt;br /&gt;
                    == 2 : byl odeslán UDP paket, úspěšně&lt;br /&gt;
                           Hodnota '''2''' je nastavena až v okamžiku úspěšného skutečného odeslání UDP paketu&lt;br /&gt;
                    == 3 : nebyl odeslán UDP paket, protože byl místo toho odeslán ARP dotaz &lt;br /&gt;
                           Hodnota '''3''' je nastavena, pokud není známá MAC pro zadanou IP &lt;br /&gt;
                           a byl tedy místo požadovaného UDP paketu odeslán ARP dotaz&lt;br /&gt;
                    == 4 : zavolali jste funkci '''send_udp()''' dříve, &lt;br /&gt;
                           než byla dokočena činnost předchozího požadavku &lt;br /&gt;
                           (sledujte hodnotu sys[95] a správně ji vyhodnocujte, a nestane se vám to)&lt;br /&gt;
                    == 5 : byly zadány neplatné parametry (neplatná IP, nebo port, nebo index či délka dat)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Funkce '''snmp_send_trap()''':&lt;br /&gt;
&lt;br /&gt;
 sys[96]  06 i R   výsledek posledního volání '''snmp_send_trap()'''&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : odesílání neprobíhá&lt;br /&gt;
                    == 1 : probíhá odesílání, výsledek ještě není znám&lt;br /&gt;
                    == 2 : odeslání se povedlo &lt;br /&gt;
                    == 3 : odeslání se nepovedlo (neplatné parametry při zavolání funkce)&lt;br /&gt;
                    == 4 : odeslání se nepovedlo (není známý ARP záznam pro udanou host IP)&lt;br /&gt;
                    == 5 : odeslání se nepovedlo (právě pracuje (odesílá své data) některá jiná funkce, např. http_get)&lt;br /&gt;
&lt;br /&gt;
 sys[97]           RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zápis textu do pole, Porovnání textů ==&lt;br /&gt;
&lt;br /&gt;
Položka ''sys[98]'' je využita více SDS-C funkcemi, přičemž všechny tyto funkce pracují s polem ''text[]''.&lt;br /&gt;
&lt;br /&gt;
 sys[98]     i R   společné využití viz (1) a (2)&lt;br /&gt;
 &lt;br /&gt;
          06 i R   (1) číslo indexu do pole ''text[]'' kam byla zapsána terminační 0x00,&lt;br /&gt;
                       tj. ukazatel kde byl aktuální konec zápisu do pole ''text[]'', &lt;br /&gt;
                       což je hodnota užitečná pro navázání textu (zápis více textů přesně za sebou), popř. určení délky posledního zápisu:&lt;br /&gt;
                        - kam byla zapsána terminační 0x00 funkcí '''sprintf()'''&lt;br /&gt;
                        - kam byla zapsána terminační 0x00 funkcí '''itoh()''' &lt;br /&gt;
                        - kam byla zapsána terminační 0x00 funkcí '''itoa()''' &lt;br /&gt;
 &lt;br /&gt;
          08 i R   (2) výsledek porovnání textů&lt;br /&gt;
                        - hodnota výsledku zavolání funkce '''textcmp()'''&lt;br /&gt;
                            X &amp;lt; 0  : (texty jsou rozdílné): první nalezený nestejný znak má nižší vlastní hodnotu v poli ''text[]'' než v porovnávaném řetězci&lt;br /&gt;
                            X == 0 : oba texty jsou identické&lt;br /&gt;
                            X &amp;gt; 0  : (texty jsou rozdílné): první nalezený nestejný znak má nižší vlastní hodnotu v porovnávaném řetězci než v poli ''text[]''&lt;br /&gt;
&lt;br /&gt;
Význam &amp;quot;nižší vlastní hodnoty&amp;quot;: znak 'a' má nižší hodnotu než 'b', a to o 1; nebo např. '1' má nižší hodnotu než '4' a to o 3.&lt;br /&gt;
&lt;br /&gt;
Doporučeno je si to vše vyzkoušet (zavolat si každou uvedenout funkci a srovnat hodnotu v sys[98] s obsahem pole ''text[]'').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Uživatelské pozice v pevné paměti == &lt;br /&gt;
&lt;br /&gt;
 sys[99]  05 i RW  předávací proměnná pro čtení a zápis z/do paměti [[SDS-C: DataFlash|dataflash]]&lt;br /&gt;
&lt;br /&gt;
 sys[100] až sys[115]  &lt;br /&gt;
          01 i RW  data uložená do permanentní paměti = co se sem napíše zůstane i po vypnutí zařízení,&lt;br /&gt;
                   můžete si sem uložit co chcete (tj. 16x signed long délky 32bit),&lt;br /&gt;
                    - po speciálním systémovém resetu (RSTD) je vše nastaveno na 0xFFFFFFFF &lt;br /&gt;
                    - pozor! minimalizujte množství zápisů, životnost této paměti není neomezená !&lt;br /&gt;
                    - zápis do těchto sys[] přímo ihned fyzicky zapíše do pevné paměti &lt;br /&gt;
                    - čtení těchto sys[] způsobí přímé fyzické čtení pevné paměti &lt;br /&gt;
&lt;br /&gt;
Paměť EEPROM a paměť DATAFLASH (podle verze HW který máte) je permanentní (NVM), tzn. její obsah zůstane i po vypnutí zařízení nezměněn (na rozdíl od &amp;lt;u&amp;gt;ne&amp;lt;/u&amp;gt;zálohované paměti RAM, do které se přistupuje pomocí pole ''ram[]'').&lt;br /&gt;
&lt;br /&gt;
''' Reserved '''&lt;br /&gt;
&lt;br /&gt;
 sys[116] až sys[136]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proměnné nastavitelné uživatelem z webového rozhraní ==&lt;br /&gt;
&lt;br /&gt;
Pomocí &amp;quot;uživatelských proměnných&amp;quot; (někdy taky &amp;quot;sdílených proměnných&amp;quot;) lze snadno ovlivnit chod vašeho SDS-C programu, ale jen tak, jak si do něj sami naprogramujete - uživatelské proměnné neovlivňují samotný program, ale program je může číst a následně zpracovat.&lt;br /&gt;
&lt;br /&gt;
 sys[140] až sys[149] &lt;br /&gt;
          01 i RW  &amp;quot;uživatelské proměnné&amp;quot;, které můžete měnit &amp;quot;z webu&amp;quot; (správně formulovaným HTTP GET dotazem)&lt;br /&gt;
                   (vždy 32-bit signed integer)&lt;br /&gt;
&lt;br /&gt;
 sys[150] 01 i RW  blokování přístupu k možnosti změny obsahu &amp;quot;uživatelských proměnných&amp;quot; z webu&lt;br /&gt;
                   Nastavení:&lt;br /&gt;
                    == 0 : stránka &amp;quot;control&amp;quot; je přístupná bez hesla, &lt;br /&gt;
                    != 0 : pro přístup je nutno se přihlásit (uživatel je vyzván k příhlášení)&lt;br /&gt;
&lt;br /&gt;
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. Dvě doplňkové proměnné nejsou na výchozí webové stránce dostupné, ale jinak s nimi lze bez jiných omezení pracovat (SDS-C, M2M).&lt;br /&gt;
&lt;br /&gt;
Zápisem do ''sys[150]'' můžete nastavit bezpečnost přístupu k této webové stránce.&lt;br /&gt;
&lt;br /&gt;
Adresa webové stránky je (IP je zde pro příklad): http://192.168.1.250/control (více informací [[SDSC: sharing|zde]]).&lt;br /&gt;
&lt;br /&gt;
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í.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proměnné vstupů a výstupů pro všechny výrobky SDS ==&lt;br /&gt;
&lt;br /&gt;
'''POZOR'''&lt;br /&gt;
&lt;br /&gt;
'''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-LM má pouze dva reléové výstupy, kdežto SDS-MACRO-LM má čtyři.&lt;br /&gt;
&lt;br /&gt;
Vždy máme vyhrazeno 32 indexů pro vstupy a výstupy. Tyto indexy jsou tedy naplánovány pro (budoucí) maximální konfiguraci, ale většina SDS k nim nemá odpovídající HW (např. nemá všech 32 relé). Zápis a čtení do/z indexů, které nemají odpovídající fyzický protějšek, je zakázán (bude SDS ignorován, a hodnota nebude uložena pro pozdější čtení).&lt;br /&gt;
&lt;br /&gt;
'''Pokračování výpisu:'''&lt;br /&gt;
&lt;br /&gt;
 sys[151] až sys[182]  &lt;br /&gt;
          01 i R   stav binárního vstupu OPTO1 až OPTO32 (optočlen)&lt;br /&gt;
                    - hodnota odpovídá fyzickému stavu vstupů (zda-li je nebo není přítomen signál na LED optočlenu)&lt;br /&gt;
                    - pozor, hodnota '''0''' skutečně znamená přítomnost signálu&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : (nulová hodnota)             signál přítomen (napětí na LED = svítící LED v optočlenu)&lt;br /&gt;
                    != 0 : (libovolná nenulová hodnota) bez signálu (LED v optočlenu nesvítí)&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Důležité info:'''&lt;br /&gt;
&lt;br /&gt;
Pokud je (uvnitŘ SDS) na LED vstupního 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). &lt;br /&gt;
&lt;br /&gt;
Pozor - &amp;quot;logika&amp;quot; optických vstupů je tedy na první pohled &amp;quot;obrácená&amp;quot; (avšak dává to přesný smysl). Jen je to potřeba vědět při psaní SDS-C programu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stav SDS-C programu ==&lt;br /&gt;
&lt;br /&gt;
Informace o verzi firmware modulu SDS (vhodné např. pro kontrolu, že uživatel používá nejnovější firmware, tak jak má).&lt;br /&gt;
&lt;br /&gt;
 sys[183] 08 i RW  verze nainstalovaného firmware v SDS modulu&lt;br /&gt;
                   (hex: 0x00DDMMYY, nebo jen 0x00000000 u starších FW)&lt;br /&gt;
&lt;br /&gt;
Příklad: FW v SDS je (pro příklad) ze dne 24.12.2018, takže v ''sys[183]'' bude zakódováno jako 0x00180C12, tedy hodnoty 24dec 12dec 18dec zapsány jako 0x18 0x0C 0x12, což je 0x18C0C12 což je 1575954dec.&lt;br /&gt;
&lt;br /&gt;
Informace o způsobu, jakým byl aktuální běh SDS-C programu spuštěn:&lt;br /&gt;
&lt;br /&gt;
 sys[184] 08 i RW  způsob spuštění SDS-C programu&lt;br /&gt;
                   == 0 : bez informace&lt;br /&gt;
                   == 1 : standardní spuštění SDS-C programu po běžném startu zařízení SDS&lt;br /&gt;
                   == 2 : program SDS-C byl (znovu) spuštěn na základě restartu od watchdogu (byl timeout)&lt;br /&gt;
                   == 4 : program SDS-C byl čerstvě nahrán z EXE aplikace&lt;br /&gt;
&lt;br /&gt;
Stav SDS-C watchdogu:&lt;br /&gt;
&lt;br /&gt;
 sys[185] 08 i R   hodnota odpočítávání SDS-C watchdogu v msec&lt;br /&gt;
                   == -1 : wdg není aktivní&lt;br /&gt;
                   ==  0 : odpočet vypršel, dojde k resetu SDS-C programu&lt;br /&gt;
                   1..2147482000 : aktuální hodnota odpočtu (snižuje se o 1 každou milisekundu)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pulse-Width Modulation výstupy ==&lt;br /&gt;
&lt;br /&gt;
Některá SDS mají pouze jeden PWM výstup (PWM1), některá mají čtyři výstupy (rozdělené po dvou do dvou skupin: PWM1 a PWM2, pak PWM3 a PWM4).&lt;br /&gt;
&lt;br /&gt;
''Příklad pro PWM1:'' Konfigurace PWM1 výstupu nejprve vyžaduje zápis do sys[191], aby se nejprve nastavila provozní základní frekvence generátoru.&lt;br /&gt;
Následně lze PWM1 výstup řídit zápisem do sys[192], kdy se podle zapsané hodnoty nastaví střída PWM výstupu (poměr log0 a log1).&lt;br /&gt;
Alternativně lze zápis do sys[192] nahradit zápisem do sys[193], toto lze kombinovat.&lt;br /&gt;
Zápis do sys[191] je potřeba jen jednou (tedy jen tehdy, když je potřeba PWM1 výstup zapnout nebo vypnout, a kdy je potřeba změnit frekvenci generátoru). &lt;br /&gt;
Zápisy do sys[192] a nebo sys[193] se pak mohou dít samostatně (tj. není potřeba pokaždé opakovat zápis do sys[191]).&lt;br /&gt;
&lt;br /&gt;
Různé typy SDS mají jiný způsob obsluhy PWM generátoru - pozor !&lt;br /&gt;
&lt;br /&gt;
Pozor, pro tyto typy SDS:&lt;br /&gt;
&lt;br /&gt;
 SDS '''UPS''', SDS '''IO6 (LM)''', SDS '''IO6-ST''' a SDS '''TTCPRO''' &lt;br /&gt;
 &lt;br /&gt;
 Tyto výrobky nemají PWM výstup (zápis do příslušných sys[] zde nemá význam).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Podle typu SDS:&lt;br /&gt;
&lt;br /&gt;
 SDS '''MICRO (LM)''' a SDS '''MACRO (LM)''' - pouze jeden PWM výstup (PWM1)&lt;br /&gt;
 &lt;br /&gt;
 sys[191] 01 i RW  &amp;quot;Fm&amp;quot; = frekvence PWM1 výstupu [Hz]&lt;br /&gt;
                    - do SDS-C č. '''03''': specifický omezený rozsah (souvisí se starým firmware)(bylo v rozsahu: 2 až 10000000).&lt;br /&gt;
                    - pozn. od SDS-C č. '''04''': lze nastavit hodnotu od ''24'' (24Hz) do ''49999998'' (49.999998Mhz)&lt;br /&gt;
 &lt;br /&gt;
 sys[192] 01 i RW  poměr nastavení &amp;quot;pulse-width&amp;quot; PWM1 výstupu (výchozí způsob nastavování PWM generátoru)&lt;br /&gt;
                    - do SDS-C č. '''03''': specifický omezený rozsah (souvisí se starým firmware)&lt;br /&gt;
                    - od SDS-C č. '''04''': lze nastavit hodnotu od 0 do &amp;quot;Fm&amp;quot; (např. &amp;quot;Fm / 2&amp;quot; představuje PWM signál 1:1).&lt;br /&gt;
 &lt;br /&gt;
 sys[193] 06 i RW  ruční přímý zápis do registru PWM1 generátoru &lt;br /&gt;
                    - tzn. není předzpracováno jako sys[192], tzn. jedná se o alternativu k sys[192]&lt;br /&gt;
                    - tato hodnota není aktualizována vůči sys[192], ani není archivována&lt;br /&gt;
                    - rozsah: ''0'' až &amp;quot;Fm&amp;quot; (tj. ''0'' až sys[191]).&lt;br /&gt;
&lt;br /&gt;
Doporučení je vždy si ověřit vzájemné závislosti konfigurace PWM výstupu osciloskopem.&lt;br /&gt;
&lt;br /&gt;
Hodnoty Fm větší než 1MHz prakticky nemají smysl, snažte se navrhnout svůj systém tak, aby dokázal pracovat ideálně nejvýše ve stovkách kHz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Další typy SDS - všimněte si rozdílu ''významu'' jednotlivých indexů vůči vůči tabulce výše.&lt;br /&gt;
&lt;br /&gt;
 SDS '''MINI''', SDS '''MICRO-ST''' - pouze jeden PWM výstup (PWM1)&lt;br /&gt;
 SDS '''MACRO-ST''' - čtyři PWM výstupy (zde: první skupina PWM1 a PWM2, druhá skupina je popsána dále)&lt;br /&gt;
 &lt;br /&gt;
 sys[191] 07 i RW  &amp;quot;Fm&amp;quot; = (společná) frekvence pro '''PWM1 a PWM2''' výstupy [Hz]&lt;br /&gt;
                    - zápis hodnot: 1 až 1000000 (odpovídá 1Hz až 1MHz) aktivuje PWM výstupy (lze dále řídit podle sys[192] až sys[195])&lt;br /&gt;
                    - zápis hodnoty 0 vypne PWM1 a PWM2 výstupy (výstup trvale neaktivní) - pro opětovné zapnutí zapište nenulovou hodnotu&lt;br /&gt;
 &lt;br /&gt;
 sys[192] 07 i RW  duty-cycle '''PWM1''' výstupu v procentech (výchozí způsob nastavování PWM generátoru)&lt;br /&gt;
                    - povolené rozmezí 0 až 100 (0% až 100%)&lt;br /&gt;
                    - před zápisem do sys[192] musí být nastavena frekvence generátoru (nenulový zápis do sys[191])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[191] == 0 (nula), tak jsou všechny zápisy do sys[192] ignorovány (nejsou zapamatovány)&lt;br /&gt;
 &lt;br /&gt;
 sys[193] 07 i  W  duty-cycle '''PWM1''' výstupu v mikrosekundách (druhý možný způsob nastavování PWM generátoru)&lt;br /&gt;
                    - pouze pro zápis, pozor !&lt;br /&gt;
                    - povolené rozmezí 0 až X (kde X závisí na sys[191] a vypočte se jako: X = 1000000 / sys[191]; - pozor !)&lt;br /&gt;
                    - před zápisem do sys[193] musí být nastavena frekvence generátoru (nenulový zápis do sys[191])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[191] == 0 (nula), tak jsou všechny zápisy do sys[193] ignorovány (nejsou zapamatovány)&lt;br /&gt;
                    - POZOR čtení nedává hodnotu v mikrosekundách, ale přímo hodnotu z registru generátoru&lt;br /&gt;
 &lt;br /&gt;
 sys[194] 07 i RW  duty-cycle '''PWM2''' v procentech (výchozí způsob nastavování PWM generátoru)&lt;br /&gt;
                    - povolené rozmezí 0 až 100 (0% až 100%)&lt;br /&gt;
                    - před zápisem do sys[194] musí být nastavena frekvence generátoru (nenulový zápis do sys[191])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[191] == 0 (nula), tak jsou všechny zápisy do sys[194] ignorovány (nejsou zapamatovány)&lt;br /&gt;
 &lt;br /&gt;
 sys[195] 07 i  W  duty-cycle '''PWM2''' výstupu v mikrosekundách&lt;br /&gt;
                    - pouze pro zápis, pozor !&lt;br /&gt;
                    - povolené rozmezí 0 až X (kde X závisí na sys[191] a vypočte se jako: X = 1000000 / sys[191]; - pozor !)&lt;br /&gt;
                    - před zápisem do sys[195] musí být nastavena frekvence generátoru (nenulový zápis do sys[191])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[191] == 0 (nula), tak jsou všechny zápisy do sys[195] ignorovány (nejsou zapamatovány)&lt;br /&gt;
                    - POZOR čtení nedává hodnotu v mikrosekundách, ale přímo hodnotu z registru generátoru&lt;br /&gt;
&lt;br /&gt;
 SDS '''MACRO-ST''' - čtyři PWM výstupy (zde druhá skupina: PWM3 a PWM4)&lt;br /&gt;
 &lt;br /&gt;
 sys[186] 09 i RW  &amp;quot;Fm&amp;quot; = (společná) frekvence pro '''PWM3 a PWM4''' výstupy [Hz]&lt;br /&gt;
                    - zápis hodnot: 1 až 1000000 (odpovídá 1Hz až 1MHz) aktivuje PWM výstupy (lze dále řídit podle sys[187] až sys[190])&lt;br /&gt;
                    - zápis hodnoty 0 vypne PWM3 a PWM4 výstupy (výstup trvale neaktivní) - pro opětovné zapnutí zapište nenulovou hodnotu&lt;br /&gt;
 &lt;br /&gt;
 sys[187] 09 i RW  duty-cycle '''PWM3''' v procentech&lt;br /&gt;
                    - povolené rozmezí 0 až 100 (0% až 100%)&lt;br /&gt;
                    - před zápisem do sys[187] musí být nastavena frekvence generátoru (nenulový zápis do sys[186])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[186] == 0 (nula), tak jsou všechny zápisy do sys[187] ignorovány (nejsou zapamatovány)&lt;br /&gt;
&lt;br /&gt;
 sys[188] 09 i  W  duty-cycle '''PWM3''' výstupu v mikrosekundách&lt;br /&gt;
                    - pouze pro zápis, pozor !&lt;br /&gt;
                    - povolené rozmezí 0 až X (kde X závisí na sys[186] a vypočte se jako: X = 1000000 / sys[186]; - pozor !)&lt;br /&gt;
                    - před zápisem do sys[188] musí být nastavena frekvence generátoru (nenulový zápis do sys[186])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[186] == 0 (nula), tak jsou všechny zápisy do sys[188] ignorovány (nejsou zapamatovány)&lt;br /&gt;
                    - POZOR čtení nedává hodnotu v mikrosekundách, ale přímo hodnotu z registru generátoru&lt;br /&gt;
 &lt;br /&gt;
 sys[189] 09 i RW  duty-cycle '''PWM4''' v procentech&lt;br /&gt;
                    - povolené rozmezí 0 až 100 (0% až 100%)&lt;br /&gt;
                    - před zápisem do sys[189] musí být nastavena frekvence generátoru (nenulový zápis do sys[186])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[186] == 0 (nula), tak jsou všechny zápisy do sys[189] ignorovány (nejsou zapamatovány)&lt;br /&gt;
 &lt;br /&gt;
 sys[190] 09 i  W  duty-cycle '''PWM4''' výstupu v mikrosekundách&lt;br /&gt;
                    - pouze pro zápis, pozor !&lt;br /&gt;
                    - povolené rozmezí 0 až X (kde X závisí na sys[186] a vypočte se jako: X = 1000000 / sys[186]; - pozor !)&lt;br /&gt;
                    - před zápisem do sys[190] musí být nastavena frekvence generátoru (nenulový zápis do sys[186])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[186] == 0 (nula), tak jsou všechny zápisy do sys[190] ignorovány (nejsou zapamatovány)&lt;br /&gt;
                    - POZOR čtení nedává hodnotu v mikrosekundách, ale přímo hodnotu z registru generátoru&lt;br /&gt;
&lt;br /&gt;
Doporučení je vždy si ověřit vzájemné závislosti konfigurace PWM výstupů osciloskopem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ovládání výstupů - Relé ==&lt;br /&gt;
&lt;br /&gt;
Zápisem do následujících systémových proměnných přímo ovládáte fyzické relé (výstupy) zařízení SDS. Pozor, protože hodnoty zapsané z SDS-C programu se záměrně neukládají do pevné paměti (tzn. nejsou načteny po resetu zařízení SDS). Je to z důvodu bezpečnosti (aby se např. neseplo relé po dlouhém výpadku napájení). Váš program si s tím musí umět poradit - vždy po zapnutí SDS musí vyhodnotit aktuální situaci a až podle toho zapínat relé.&lt;br /&gt;
&lt;br /&gt;
 sys[196] až sys[228]   &lt;br /&gt;
          01 i RW  informace, kdo ovládá '''RE1''' až '''RE32'''&lt;br /&gt;
                    - lze nastavit i z webového rozhraní&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : ovládáno z webového rozhraní (ruční řízení - trvale zapnuto, trvale vypnuto)&lt;br /&gt;
                    == 2 : ovládáno z SDS-C programu (zápis do sys[], je ignorováno nastavení na webu)&lt;br /&gt;
                    == 4 : ovládáno z IP Watchdogu (interní IP watchdog, nastavuje se přes web)&lt;br /&gt;
&lt;br /&gt;
 sys[229] až sys[230]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
 sys[231] až sys[262]   &lt;br /&gt;
          01 i RW  stav výstupu RE1 až RE32 (= zápis do tohoto sys[] přímo ovládá relé)&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : relé není aktivní &lt;br /&gt;
                           (cívka relé bez proudu, MICRO-LM: mosfet není sepnut)&lt;br /&gt;
                    != 0 : relé je aktivní &lt;br /&gt;
                           (cívka relé pod proudem, MICRO-LM: mosfet je sepnut = výstup REx je spojen na GND)&lt;br /&gt;
&lt;br /&gt;
 sys[263] až sys[265]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
 sys[266] až sys[298]   &lt;br /&gt;
          01 s R   uživatelský textový název pro '''RE1''' až '''RE32''' &lt;br /&gt;
                    - nastaveno ve webovém rozhraní&lt;br /&gt;
&lt;br /&gt;
 sys[264] až sys[300]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ovládání PDx ==&lt;br /&gt;
&lt;br /&gt;
Jednotlivé moduly SDS mají k dispozici dodatečné vstupy a výstupy, označené jako PDx respektive TOPB. Přesný seznam viz návod ke konkrétním modulům.&lt;br /&gt;
&lt;br /&gt;
Stav vstupu (je-li PDx jako vstup) nebo výstupu (je-li PDx jako výstup):&lt;br /&gt;
&lt;br /&gt;
 sys[301] 01 i RW  SDS '''MICRO LM LIGHT''': stav i/o pinu D0 (0 = log0 ; nenulová hodnota v sys = log1 přítomna na pinu)&lt;br /&gt;
                   SDS '''MICRO LM DIN''' a SDS '''MACRO LM''': stav výstupu D0 - MOSFET spínač na GND. Při jakékoliv nenulové hodnotě v sys[301] je MOSFET sepnutý (=D0 na GND), jinak je D0 otevřený (HiZ)&lt;br /&gt;
                   SDS '''TTCPRO''': stav všech osmi pinů v portu PDx (nastavením/čtením sys[301] se přistupuje k jednotlivých osmi bitům v bajtu, kde: bit0=PD0 až bit7=PD7)&lt;br /&gt;
                   SDS '''MINI''': bit0 = stav i/o pinu TOPB, bit1 = stav padu PD1, ostatní bity (2..7) nepoužity&lt;br /&gt;
                   SDS '''UPS''': nepoužito&lt;br /&gt;
                   SDS '''IO6''': nepoužito&lt;br /&gt;
                   SDS '''MICRO-ST''': bit0 = stav PD0 MOSFET spínače (spíná na GND), bit1 = stav i/o pinu TOPB, ostatní bity (2..7) nepoužity&lt;br /&gt;
                   SDS '''IO6-ST''': nepoužito&lt;br /&gt;
                   SDS '''MACRO-ST''': bit0 = stav PD0, bit1 = stav PD1, bit2 = stav i/o pinu TOPB, bit3 = TL-1, bit4 = stav TL-2, ostatní bity (5..7) nepoužity&lt;br /&gt;
&lt;br /&gt;
Řízení směru pro jednotlivé PDx resp. TOPB:&lt;br /&gt;
&lt;br /&gt;
 sys[302] 06 i RW  SDS '''MICRO LM LIGHT''': směr i/o pinu D0 (zápisem bit0 do 1 se nastaví pin D0 jako výstup) (zápisem log1 se nastaví jako vstup)&lt;br /&gt;
                   SDS '''MICRO LM DIN''' a '''SDS MACRO LM''': pozor, D0 je vždy výstup (nastavení je napevno, nelze změnit)&lt;br /&gt;
                   SDS '''TTCPRO''': směr jednotlivých pinů v portu PDx (nastavením jednotlivých osmi bitů, bit0=PD0 až bit7=PD7, nastav log1 pro výstup)&lt;br /&gt;
                   SDS '''MINI''': bit0 = směr i/o pinu TOPB, bit1 = směr i/o padu PD1, ostatní bity (2..7) nepoužity&lt;br /&gt;
                   SDS '''UPS''': nepoužito&lt;br /&gt;
                   SDS '''IO6''': nepoužito&lt;br /&gt;
                   SDS '''MICRO-ST''': bit0 = vždy v log1 (PD0 jako výstup), bit1 = směr i/o pinu TOPB, ostatní bity (2..7) nepoužity&lt;br /&gt;
                   SDS '''MACRO-ST''': bit0 = vždy v log1 (výstup), bit1 = vždy v log1 (výstup), bit2 = směr i/o pinu TOPB, bit3 = vždy v log0 (vstup), bit4 = vždy v log0 (vstup), ostatní bity (5..7) nepoužity&lt;br /&gt;
&lt;br /&gt;
TOPB: vždy typicky CMOS 3V3 pin, s možností funkce jako vstup nebo výstup (dle sys[302]), a je přímo připojený na pin SoC, pozor tedy na jeho další HW připojení.&lt;br /&gt;
&lt;br /&gt;
TTCPRO: Mapování je vždy od nejnižšího (LSB - bit0) bitu (PD0 = bit0, PD1 = bit1, atd. PD7 = bit7). Pro TTCPRO jsou PDx jako CMOS 3V3 piny s volbou vstupu nebo výstupu pro každý jednotlivý pin.&lt;br /&gt;
&lt;br /&gt;
MICRO-ST: výstup PD0 je zapojen formou FET spínače (log0 = HiZ = rozepnuto) (log1 = ACT = sepnuto na GND).&lt;br /&gt;
&lt;br /&gt;
MACRO-ST: výstupy PD0 a PD1 jsou zapojeny formou FET spínače (log0 = HiZ = rozepnuto) (log1 = ACT = sepnuto na GND).&lt;br /&gt;
&lt;br /&gt;
Nezapomeňte vždy ve svém programu správně nastavit hodnoty do sys[302] (toto je častá chyba když se to zapomene).&lt;br /&gt;
&lt;br /&gt;
 sys[306] až sys[309]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
== Tlačítka na desce display pro SDS-MACRO-ST ==&lt;br /&gt;
&lt;br /&gt;
Čtení stavu tlačítek na desce display (SDS-MST-DISP-rev1) se provádí čtením sys[301] a vyhodnocením bitu 3 (=8dec, první tlačítko) a/nebo bitu 4 (=16dec, druhé tlačítko).&lt;br /&gt;
&lt;br /&gt;
Ošetření na případné zákmity při stisku a uvolnění tlačítek, je potřeba provést ve vašem SDS-C programu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vstupy - teploměry na externí sběrnici 1-Wire&amp;amp;reg; ==&lt;br /&gt;
&lt;br /&gt;
Čidla teploty (1-W chipy pro měření teploty připojené na sběrnici; tak také údaj o teplotě z připojených modulů SDS-1W-T-RH) jsou řízena (čtena) plně automaticky zařízením SDS. Program v SDS-C má přímo přístup k výsledným hodnotám teplot.&lt;br /&gt;
&lt;br /&gt;
 sys[310] až sys[341]   &lt;br /&gt;
          01 i R   hodnota údaje (teplota) z konkrétního čidla na 1-Wire&amp;amp;reg; sběrnici&lt;br /&gt;
&lt;br /&gt;
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 záměrně tam je číslo 16777216 (2^24)'''.&lt;br /&gt;
&lt;br /&gt;
Pozn.: pouze SDS-MACRO-LM a SDS-MACRO-ST mají 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-XX'''.&lt;br /&gt;
&lt;br /&gt;
 sys[342] až [345]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
 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)&lt;br /&gt;
 sys[347] 01 i R   počet všech detekovaných (připojených) čidel teploty na sběrnici '''B'''&lt;br /&gt;
 &lt;br /&gt;
 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)&lt;br /&gt;
 sys[349] 01 i R   počet všech detekovaných (připojených) čidel teploty na sběrnici '''A'''&lt;br /&gt;
&lt;br /&gt;
 sys[350] až sys[381]   &lt;br /&gt;
          01 i R   čidlo 1 až 32 - aktuální stav/chyba čidla v okamžiku čtení tohoto sys[]&lt;br /&gt;
                    == 0  : default, čidlo neexistuje, nic nevim (stav ihned po zapnutí, popř. trvale pro prázdnou pozici)&lt;br /&gt;
                    == 2  : vše ok, komunikuje, odpovidá, právě byl získán výsledek&lt;br /&gt;
                    == 4  : ví se jen že existuje (byl získán ROMCODE) (obvykle dočasný stav po spuštění zařízení)&lt;br /&gt;
                    == 8  : začal další převod, čidlo je OK, komunikuje (správný stav)&lt;br /&gt;
                    == 16 : nepovedlo se začít nový převod, CHYBA (obvykle fyzický problém se sběrnicí)&lt;br /&gt;
                    == 32 : bylo přijato neplatné CRC, chyba (obvykle fyzický problém se sběrnicí)&lt;br /&gt;
&lt;br /&gt;
 sys[382] až [389]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
 sys[391] až sys[422]  &lt;br /&gt;
          01 s R   uživatelský textový název pro čidlo 1 až 32 (nastaveno ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
''' Reserved ''' &lt;br /&gt;
&lt;br /&gt;
 sys[423] až sys[430]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vstupy: analogové vstupy pro měření napětí ==&lt;br /&gt;
&lt;br /&gt;
Všechny vstupy měří napětí vůči společné svorce (GND). Změřená hodnota je vždy k dispozici nejprve jako surová (raw) digitální hodnota, a poté ji SDS přepočítá dle uživatelského nastavení a také dá k dispozici.&lt;br /&gt;
&lt;br /&gt;
 sys[431] 01 i R   RAW hodnota A/D převodu ze vstupu AD1&lt;br /&gt;
 sys[432] 01 i R   RAW hodnota A/D převodu ze vstupu AD2&lt;br /&gt;
 sys[433] 01 i R   RAW hodnota A/D převodu ze vstupu AD3&lt;br /&gt;
 sys[434] 01 i R   RAW hodnota A/D převodu ze vstupu AD4&lt;br /&gt;
&lt;br /&gt;
RAW (surová) hodnota je digitální číslo, poskytnuté z interního A/D převodníku, s tím, že mu už SDS současně (pouze a jenom) odečetl uživatelem nastavený offset.&lt;br /&gt;
&lt;br /&gt;
Rozsah hodnoty RAW je: &lt;br /&gt;
* SDS-MICRO-LM, SDS-MACRO-LM, SDS-UPS-ONEDPS: 0..1023 (10bit rozlišení)&lt;br /&gt;
* SDS-MINI a všechny varianty SDS ST: 0..4095 (12bit rozlišení)&lt;br /&gt;
&lt;br /&gt;
Všechny převodní konstanty A/D, nastavené ve webovém rozhraní (viz admin stránka):&lt;br /&gt;
&lt;br /&gt;
 sys[435] 01 i R   Offset pro A/D 1  [jen pro informaci, dále už nepoužít - viz pozn.]&lt;br /&gt;
 sys[436] 01 i R   Div pro A/D 1&lt;br /&gt;
 sys[437] 01 s R   textový název A/D 1&lt;br /&gt;
 sys[438] 01 s R   jednotka A/D 1&lt;br /&gt;
&lt;br /&gt;
 sys[439] 01 i R   Offset pro A/D 2  [jen pro informaci, dále už nepoužít - viz pozn.]&lt;br /&gt;
 sys[440] 01 i R   Div pro A/D 2&lt;br /&gt;
 sys[441] 01 s R   textový název A/D 2&lt;br /&gt;
 sys[442] 01 s R   jednotka A/D 2&lt;br /&gt;
&lt;br /&gt;
 sys[443] 01 i R   Offset pro A/D 3  [jen pro informaci, dále už nepoužít - viz pozn.]&lt;br /&gt;
 sys[444] 01 i R   Div pro A/D 3&lt;br /&gt;
 sys[445] 01 s R   textový název A/D 3&lt;br /&gt;
 sys[446] 01 s R   jednotka A/D 3&lt;br /&gt;
&lt;br /&gt;
 sys[447] 01 i R   Offset pro A/D 4  [jen pro informaci, dále už nepoužít - viz pozn.]&lt;br /&gt;
 sys[448] 01 i R   Div pro A/D 4&lt;br /&gt;
 sys[449] 01 s R   textový název A/D 4&lt;br /&gt;
 sys[450] 01 s R   jednotka A/D 4&lt;br /&gt;
&lt;br /&gt;
'''Pozor!''' Hodnoty pro jednotlivé A/D vstupy (tj. Raw Hodnoty v sys[431 až 434]) '''už mají odečtený Offset''' (je to provedeno uvnitř firmware už při zpracovávání A/D převodu) ! &lt;br /&gt;
Proto Offset už ve svém SDS-C programu z Raw hodnot neodečítejte (bylo by to odečítáno podruhé). Pro přepočet z Raw na finální hodnotu vám zbývá (správně) použít jen &amp;quot;Div&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Poznámka: zařízení SDS-MINI (a další z řady SDS ST) už mohou mít text v položce &amp;quot;jednotka A/D x&amp;quot; delší než jeden znak (na rozdíl od původního SDS-MICRO-LM atd., kde to bylo omezeno na jeden jediný znak).&lt;br /&gt;
&lt;br /&gt;
''' Reserved '''&lt;br /&gt;
&lt;br /&gt;
 sys[451] až sys[458]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proměnné pro S0 impulsní vstup ==&lt;br /&gt;
&lt;br /&gt;
 sys[459] 01 i RW  stav tarifu &lt;br /&gt;
                    == 0 : T0 (vysoký tarif)&lt;br /&gt;
                    == 1 : T1 (nízký tarif)&lt;br /&gt;
&lt;br /&gt;
 sys[460] až sys[492]  &lt;br /&gt;
          06 i RW  konfigurace - uživatelem nastavený (webové rozhraní) poměr MTD, pro vstup S0 [1] až [32],&lt;br /&gt;
                                 je-li MTD pro tento vstup použit (pokud není použit (přímé měření), má zde být 1 )&lt;br /&gt;
                    - příklad: pro MTD s poměrem 300A:5A je zapsaná hodnota 60&lt;br /&gt;
                    - pozor, nezapočítávejte vliv MTD do hodnoty imp./1kWh&lt;br /&gt;
                    - pozor, některé elektroměry mají MTD už započítané do vlastní impulsní konstanty, &lt;br /&gt;
                             pak sem v takovém případě nastavte číslo 1&lt;br /&gt;
                    - platné hodnoty: 1 až 65280 (včetně)&lt;br /&gt;
 &lt;br /&gt;
 sys[493] až sys[525]  &lt;br /&gt;
          01 i RW  hodnoty impulsních akumulátorů (počítadel) pro vstup S0 [1] až [32] pro tarif T0&lt;br /&gt;
                    - (!) pozor SDS interně drží počítadla jako 32-bit unsigned hodnoty (0 až 4294967295)&lt;br /&gt;
                          ale SDS-C čte sys[] jako 32-bit signed hodnoty;&lt;br /&gt;
                          při čtení tedy dostanete stejné hodnoty 32 bitů, ale reprezentace čísla bude jiná (signed).&lt;br /&gt;
 &lt;br /&gt;
 sys[526] až sys[558]  &lt;br /&gt;
          01 i RW  hodnoty impulsních akumulátorů (počítadel) pro vstup S0 [1] až [32] pro tarif T1&lt;br /&gt;
                    - (!) pozor SDS interně drží počítadla jako 32-bit unsigned hodnoty (0 až 4294967295)&lt;br /&gt;
                          ale SDS-C čte sys[] jako 32-bit signed hodnoty;&lt;br /&gt;
                          při čtení tedy dostanete stejné hodnoty 32 bitů, ale reprezentace čísla bude jiná (signed).&lt;br /&gt;
 &lt;br /&gt;
 sys[559] až sys[591]  &lt;br /&gt;
          01 i RW  konfigurace - uživatelem nastavené přepočtové konstanty S0: počet imp./1kWh (z webového rozhraní)&lt;br /&gt;
                    - pozor, tato hodnota platí pro samotný elektroměr, není to hodnota ve které je započítán vliv MTD&lt;br /&gt;
                    - pozn. v případě, že měřícím prvkem není elektroměr ale jiný přístroj, bude zde odpovídající&lt;br /&gt;
                      jiná konfigurační hodnota (např. vodoměr: počet imp./m^3).&lt;br /&gt;
 &lt;br /&gt;
 sys[592] až sys[624]  &lt;br /&gt;
          01 i R   změřená časová vzdálenost mezi dvěmi nejposlednějšími zachycenými impulsy na S0 vstupu (aktuální impuls a předchozí impuls)&lt;br /&gt;
                    - měřeno v msec&lt;br /&gt;
                    - (!) pozor SDS interně drží počítadla jako 32-bit unsigned hodnoty (0 až 4294967295)&lt;br /&gt;
                          ale SDS-C čte sys[] jako 32-bit signed hodnoty;&lt;br /&gt;
                          při čtení tedy dostanete stejné hodnoty 32 bitů, ale reprezentace čísla bude jiná (signed - viz vysvětlení nahoře).&lt;br /&gt;
 &lt;br /&gt;
 sys[625] až sys[657]  &lt;br /&gt;
          01 i R   změřený čas od úplně posledního impulsu zachyceného na S0 vstupu, tzn. &amp;quot;doba bez impulsu&amp;quot; nebo také &amp;quot;doba od posledního impulsu&amp;quot;&lt;br /&gt;
                    - měřeno v msec&lt;br /&gt;
                    - (!) pozor SDS interně drží počítadla jako 32-bit unsigned hodnoty (0 až 4294967295)&lt;br /&gt;
                          ale SDS-C čte sys[] jako 32-bit signed hodnoty;&lt;br /&gt;
                          při čtení tedy dostanete stejné hodnoty 32 bitů, ale reprezentace čísla bude jiná (signed - viz vysvětlení nahoře).&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
poznámka: &amp;quot;Poměr MTD&amp;quot; zahrnuje všechny měřící transformátory (MTD), předřazené elektroměru (pouze pokud to už není započítáno v impulsní konstantě). Pokud je S0 vstup využit pro jiný typ měřiče (vodoměr a podobné), kde je připojení MTD nesmysl, tak se v konfiguraci musí do této položky nastavit hodnota 1. Samozřejmě jde s určitou výhodou použít i jinou konfiguraci, protože tato hodnota je použita jako &amp;quot;druhý dělitel&amp;quot; u výpočtu počtu S0 impulsů na velikost kroku energetické jednotky. Určení této hodnoty pro jiné měřiče sleduje stejné matematické postupy jako určení této hodnoty pro elektroměr s předřazeným MTD, jen jednotky budou samozřejmě jiné.&lt;br /&gt;
&lt;br /&gt;
 sys[658] až sys[670]  reserved for future use&lt;br /&gt;
&lt;br /&gt;
poznámka: další sys[] indexy pro S0 vstupy jsou uvedeny ještě dále v tomto celém seznamu (dole na stránce).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Speciální vstupy a výstupy ==&lt;br /&gt;
&lt;br /&gt;
Toto je funkce dostupná jen na omezeném rozsahu výrobků SDS.&lt;br /&gt;
&lt;br /&gt;
'''Pouze pro SDS MICRO (LM) LIGHT:'''&lt;br /&gt;
&lt;br /&gt;
 sys[671] 02 i W   zápis na pin M4 (pouze SDS MICRO LIGHT s EEPROM, všechny ostatní výrobky toto nemají)&lt;br /&gt;
 sys[672] 02 i W   zápis na pin M5 (pouze SDS MICRO LIGHT s EEPROM, všechny ostatní výrobky toto nemají)&lt;br /&gt;
 sys[673] 02 i W   zápis na pin B1 (SDS MICRO LIGHT, LIGHT2, SDS MICRO DIN)&lt;br /&gt;
 sys[674] 02 i W   zápis na pin A1 (SDS MICRO LIGHT, LIGHT2, SDS MICRO DIN)&lt;br /&gt;
&lt;br /&gt;
Tyto zmíněné čtyři ''sys[]'' jsou dostupné '''pouze''' na modulu SDS MICRO '''LIGHT''' popř. '''DIN''', a to jen s verzí firmware 9.1.2011 nebo novější.&lt;br /&gt;
&lt;br /&gt;
SDS MICRO LIGHT s pamětí EEPROM: k dispozici jsou všechny čtyři výstupy.&lt;br /&gt;
&lt;br /&gt;
SDS MICRO LIGHT s pamětí DATAFLASH: k dispozici jsou jen dva výstupy (A1, B1).&lt;br /&gt;
&lt;br /&gt;
SDS MICRO LIGHT 2 s pamětí DATAFLASH: k dispozici jsou jen dva výstupy (A1, B1).&lt;br /&gt;
&lt;br /&gt;
SDS MICRO DIN: k dispozici jsou jen dva výstupy (A1, B1).&lt;br /&gt;
&lt;br /&gt;
SDS MACRO LM, SDS MICRO ST, SDS MACRO ST, SDS UPS, SDS IO6, SDS IO6 ST, SDS TTCPRO, SDS MINI: tyto výstupy '''nejsou k dispozici'''.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
'''Pouze pro SDS MACRO ST:'''&lt;br /&gt;
&lt;br /&gt;
Alternativa k sys[301]. Hodnota odpovídá logické úrovni na daném vstupu TL1 (TL2). Při osazené desce MACRO-ST-LCD jsou na tyto vstupy připojeny tlačítka (pak při stisku TL1, TL2 je zde hodnota 0, v klidu 1).&lt;br /&gt;
&lt;br /&gt;
 sys[671] 02 i R   čtení stavu TL1&lt;br /&gt;
 sys[672] 02 i R   čtení stavu TL2&lt;br /&gt;
&lt;br /&gt;
'''Pájecí plošky CFG:'''&lt;br /&gt;
&lt;br /&gt;
Zkratovací CFG plošky jsou k dispozici jen pro SDS TTCPRO. Vhodné pro pevnou konfiguraci uživatelem.&lt;br /&gt;
&lt;br /&gt;
V současné době není k dispozici firmware, které přenáší hodnotu z pájecích plošek (CFG1, CFG2) do ''sys[]''.&lt;br /&gt;
Ploška CFG1 je vyhrazena pro vnitřní použítí samotného firmware SDS, a ploška CFG2 bude eventuálně uvolněna pro libovolné použití uživatelem (čtení z SDS-C).&lt;br /&gt;
Takový firmware se teprve chystá (SDS TTCPRO).&lt;br /&gt;
&lt;br /&gt;
 sys[675] 07 i R   stav plošky CFG1 (zkratována = je zde 0)&lt;br /&gt;
 sys[676] 07 i R   stav plošky CFG2 (zkratována = je zde 0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Speciální proměnné pro SDS-UPS ==&lt;br /&gt;
&lt;br /&gt;
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 .&lt;br /&gt;
&lt;br /&gt;
SDS-UPS má všechny sys[0] až sys[699] shodné s SDS-MICRO. Rozdíl je samozřejmě v počtu a osazení periférií.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
 sys[700] 02 i R   reserved&lt;br /&gt;
 sys[701] 02 i R   reserved&lt;br /&gt;
 sys[702] 02 i R   reserved&lt;br /&gt;
 sys[703] 02 i R   reserved&lt;br /&gt;
&lt;br /&gt;
'''Přepínač algoritmů:'''&lt;br /&gt;
&lt;br /&gt;
 sys[704] 02 i RW  řízení nabíjení - hodnoty které lze zapsat:&lt;br /&gt;
                    == 0   : nabíjení je ovládáno pomocí firmware (výchozí chování výrobku)&lt;br /&gt;
                    == 345 : pouze nabíjení (a ne jiné funkce) jsou řízeny programem SDS-C (= chování programujete vy)&lt;br /&gt;
                    == 824 : kompletní řízení (= volba funkce, nabíjení) je řízeno programem SDS-C&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 sys[705] až sys[731]  reserved&lt;br /&gt;
&lt;br /&gt;
Pro realizaci vlastního nabíjecího algoritmu potřebujete zpracovávat všechny vstupy a důsledně nastavovat všechy výstupy.&lt;br /&gt;
&lt;br /&gt;
Pokud váš program pouze sleduje činnost původního nabíjecího algoritmu, pak může samozřejmě všechny sys[] jen číst.&lt;br /&gt;
&lt;br /&gt;
'''Vstupy a konfigurace:'''&lt;br /&gt;
&lt;br /&gt;
 sys[732] 02 i R   surová hodnota z A/D převodu - hodnota 2.5V vstupu - odpovídá hodnotě proudu 0.0A&lt;br /&gt;
 sys[733] 02 i R   surová hodnota z A/D převodu - hodnota proudu do-z akumulátoru&lt;br /&gt;
 sys[734] 02 i R   surová hodnota z A/D převodu - hodnota proudu z primárního vstupu&lt;br /&gt;
 sys[735] 02 i R   surová hodnota z A/D převodu - hodnota napětí akumulátoru&lt;br /&gt;
 sys[736] 02 i R   surová hodnota z A/D převodu - hodnota napětí primárního vstupu&lt;br /&gt;
&lt;br /&gt;
Rozsah surových hodnot z A/D převodu je 0 až 4095. Lineárně to odpovídá příslušné měřené hodnotě. &lt;br /&gt;
Měření napětí má 0 na 0V a maximální hodnot (4095) na maximu rozsahu. &lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
 sys[737] až sys[739]  reserved&lt;br /&gt;
&lt;br /&gt;
Následuje konfigurace provedená uživatelem ve webovém rozhraní.&lt;br /&gt;
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á.&lt;br /&gt;
&lt;br /&gt;
 sys[740] 02 i R   primary voltage to say target is ok (pri_pvts)&lt;br /&gt;
 sys[741] 02 i R   primary zadany odpocet v msec (pri_pvat)&lt;br /&gt;
 sys[742] 02 i R   primary voltage to allow charging (at what voltage to allow chargin) (pri_fchg)&lt;br /&gt;
 sys[743] 02 i R   accu disconnect voltage level (at what voltage to disconnect accu) (aku_avdv)&lt;br /&gt;
 sys[744] 02 i R   accu target voltage when charging (when to switch to CV) (aku_avcd)&lt;br /&gt;
 sys[745] 02 i R   accu target current when charging (constant current when in CC) (aku_accc)&lt;br /&gt;
 sys[746] 02 i R   target charging voltage (final voltage on accu when fully charged)&lt;br /&gt;
 sys[747] 02 i R   flag: do not answer ping when primary gone (pri_ping)&lt;br /&gt;
 sys[748] 02 i R   flag: do not switch accu off (aku_dach)&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 sys[749] až sys[760]  reserved&lt;br /&gt;
&lt;br /&gt;
'''Výstupy:'''&lt;br /&gt;
&lt;br /&gt;
Tyto '''všechny''' výstupy musíte správně ovládat po celou dobu, co bude zařízení SDS UPS zapnuto !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 sys[761] 02 i RW  ovládání vypínání nabíječe&lt;br /&gt;
                    == 0 : nabíječ v provozu (zapnuto = nabíjí se, regulujte jiným sys[])&lt;br /&gt;
                    != 0 : nabíječ mimo provoz (vypnuto = nenabíjí se)&lt;br /&gt;
 &lt;br /&gt;
 sys[762] 02 i RW  ovládání posunu rozsahu regulace nabíječe &lt;br /&gt;
                    == 0 : bez zásahu do zpětné vazby (původní regulační rozsah)&lt;br /&gt;
                    != 0 : zásah do zpětné vazby (posun rozsahu)&lt;br /&gt;
                           (vhodné pro skokové zvýšení výstupního napětí nabíječe, &lt;br /&gt;
                            když už nereaguje v původním rozsahu)&lt;br /&gt;
 &lt;br /&gt;
 sys[763] 02 i RW  ovládání odpojovače baterie &lt;br /&gt;
                    == 0 : spínač vypnutý (baterie odpojena od zátěže)&lt;br /&gt;
                    != 0 : spínač sepnutý (baterie připojena)&lt;br /&gt;
 &lt;br /&gt;
 sys[764] 02 i RW  indikační LED - nabíjení akumulátoru&lt;br /&gt;
                    == 0 : LED svítí (informace: akumulátor je nabíjen)&lt;br /&gt;
                    != 0 : LED nesvítí (informace: akumulátor není nabíjen)&lt;br /&gt;
 &lt;br /&gt;
 sys[765] 02 i RW  indikační LED - výpadek primárního vstupu&lt;br /&gt;
                    == 0 : LED svítí (informace: napětí primárního vstupu pod dolním limitem)&lt;br /&gt;
                    != 0 : LED nesvítí (informace: primární vstup má napětí vyšší než je dolní limit)&lt;br /&gt;
&lt;br /&gt;
'''Řízení nabíjení:''' Je potřeba správně regulovat pomocí následujícího výstupu:&lt;br /&gt;
&lt;br /&gt;
 sys[766] 02 i RW  přímé řízení nabíjecího bloku (výstup vaší regulace sem - hodnota řídí nabíječ)&lt;br /&gt;
                    - minimální hodnota = 1&lt;br /&gt;
                    - maximální hodnota = 2497&lt;br /&gt;
&lt;br /&gt;
 sys[767] až sys[769]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
Následující údaje jsou určeny pro '''zobrazování na webovém rozhraní''':&lt;br /&gt;
&lt;br /&gt;
 sys[770] 02 i RW  provozní režim: vždy jedno z UPS_PROVOZ_xxx&lt;br /&gt;
 &lt;br /&gt;
 sys[771] 02 i RW  nabíjecí režim: vždy jedno z UPS_NABREZIM_xxx&lt;br /&gt;
 &lt;br /&gt;
 sys[772] 02 i RW  výsledek odhadu stavu baterie: vždy jedno z UPS_BATERIE_ODHAD_xxx&lt;br /&gt;
&lt;br /&gt;
Konstanty pro zápis (je to potřeba dodržet, protože se to přímo zobrazuje na webovém rozhraní):&lt;br /&gt;
&lt;br /&gt;
 UPS_PROVOZ_START            0&lt;br /&gt;
 UPS_PROVOZ_PRIOK            1&lt;br /&gt;
 UPS_PROVOZ_PRIOK_CHARGING   2&lt;br /&gt;
 UPS_PROVOZ_ONLY_BATT        4&lt;br /&gt;
 UPS_PROVOZ_NO_BATT          8&lt;br /&gt;
 &lt;br /&gt;
 UPS_NABREZIM_CC             0&lt;br /&gt;
 UPS_NABREZIM_CV             2&lt;br /&gt;
 UPS_NABREZIM_PAUZA          4&lt;br /&gt;
 UPS_NABREZIM_URCENI_REZIMU  8&lt;br /&gt;
 &lt;br /&gt;
 UPS_BATERIE_ODHAD_NEZNAM            0&lt;br /&gt;
 UPS_BATERIE_ODHAD_MOC_NIZKE_NAPETI  1&lt;br /&gt;
 UPS_BATERIE_ODHAD_OK_NABIJIM        2&lt;br /&gt;
 UPS_BATERIE_ODHAD_PLNE_NABITO       4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Výsledky z 1-Wire sensoru vlhkosti (T/RH) SDS-1W-T-RH ==&lt;br /&gt;
&lt;br /&gt;
Připojené moduly [[SDS_1W_T-RH]] jsou připojeny na 1-W sběrnici, a mají v sobě chip, který měří hodnotu ze sensoru vlhkosti (který je současně umístěn na modulu SDS-1W-T-RH) a současně měří i teplotu a napájecí napětí pro sensor vlhkosti. &lt;br /&gt;
SDS interně provádí výpočet relativní vlhkosti (RH) pomocí kompenzační rovnice, určené výrobcem sensoru vlhkosti.&lt;br /&gt;
&lt;br /&gt;
K dispozici jsou jak surové hodnoty (změřené v rámci modulu SDS-1W-T-RH), tak i hodnota kompenzované (skutečné) relativní vlhkosti v místě umístění modulu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Změřená teplota je uložena na standardních indexech:&lt;br /&gt;
&lt;br /&gt;
 sys[310] až sys[341]   &lt;br /&gt;
          01 i R   hodnota údaje (teplota) z konkrétního čidla na 1-Wire&amp;amp;reg; sběrnici, hodnota v násobku 0.01 degC&lt;br /&gt;
&lt;br /&gt;
Dále jsou k dispozici surové hodnoty, nutné pro výpočet hodnoty RH (Relative Humidity):&lt;br /&gt;
&lt;br /&gt;
 sys[800] až sys[831]   &lt;br /&gt;
          08 i R   hodnota údaje (napětí Vad = výstupu čidla RH) z konkrétního čidla na 1-Wire&amp;amp;reg; sběrnici, hodnota v násobku 0.01 V&lt;br /&gt;
&lt;br /&gt;
 sys[832] až sys[863]   &lt;br /&gt;
          08 i R   hodnota údaje (napětí Vdd = napájení čidla RH) z konkrétního čidla na 1-Wire&amp;amp;reg; sběrnici, hodnota v násobku 0.01 V&lt;br /&gt;
&lt;br /&gt;
SDS provádí přepočet na údaj RH v procentech (0 až 100):&lt;br /&gt;
&lt;br /&gt;
 sys[864] až sys[895]   &lt;br /&gt;
          08 i R   hodnota RH (0 až 100, v procentech RH) kompenzovaná podle rovnice pro čidlo HIH-503x (výpočet z Vad, kompenzace na Vdd a Temp).&lt;br /&gt;
&lt;br /&gt;
Rezerva (zatím nepoužito):&lt;br /&gt;
&lt;br /&gt;
 sys[896] až sys[899]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Doplňující informace pro 1-Wire zařízení ==&lt;br /&gt;
&lt;br /&gt;
1-Wire sběrnice u zařízení SDS umožňuje komunikaci s celou řadů 1-W chipů: [[OneWire|seznam je zde]]. Přístup k chipům na 1-W sběrnici se liší na dva typy: chipy (čidla) které si SDS interně zpracuje (např. měření teploty), a všechny ostatní chipy (které SDS jen umí vyhledat a oznámit, ale dále s nimi nekomunikuje).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1-Wire chipy interně zpracovávané SDS'''&lt;br /&gt;
&lt;br /&gt;
Tyto chipy jsou plně automaticky obsluhovány prostřednictvím firmware SDS - není potřebná opakovaná intervence uživatele, ten si pouze čte stále aktuální výsledky měření teplot z jednotlivých čidel.&lt;br /&gt;
&lt;br /&gt;
Poznámka: Pro změřené hodnoty z 1-W čidel teplot, jsou k dispozici tyto indexy: '''sys[310]''' až '''sys[430]''', a '''sys[900]''' až '''sys[931]'''.&lt;br /&gt;
&lt;br /&gt;
K dispozici je textové vyjádření (hex znaky) ROM CODE hodnoty načtené pro danou pozici zpracovávaného chipu na 1-W sběrnici.&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS mohou mít jednu [A] nebo dvě ( nezávislé, [A] a [B] ) 1-Wire sběrnice, a každá sběrnice má maximálně 16 připojených chipů.&lt;br /&gt;
Jednotlivé platné ROM CODE jsou v ''sys[]'' uloženy za sebou, viz výpis:&lt;br /&gt;
&lt;br /&gt;
 sys[900] 06 s RW  ROM CODE pro první chip na [A] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
 &lt;br /&gt;
 sys[901] 06 s R   ROM CODE pro druhý chip na [A] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
&lt;br /&gt;
A tak dále až&lt;br /&gt;
&lt;br /&gt;
 sys[915] 06 s R   ROM CODE pro šestnáctý chip na [A] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
&lt;br /&gt;
Následuje sběrnice [B], je-li přítomná v daném zařízení (dostupné pouze pro SDS-MACRO):&lt;br /&gt;
&lt;br /&gt;
 sys[916] 06 s R   ROM CODE pro první chip na [B] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
&lt;br /&gt;
A tak dále . . . až&lt;br /&gt;
&lt;br /&gt;
 sys[931] 06 s R   ROM CODE pro šestnáctý chip na [B] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
&lt;br /&gt;
'''Pozor''': pokud sběrnice [B] v zařízení není, tak sys[916] až sys[931] vrátí znak '-'.&lt;br /&gt;
&lt;br /&gt;
Tak jak jsou jednotlivé ROM CODE viditelné ve webové administraci, tak jsou tedy dostupné i přes sys[] položky.&lt;br /&gt;
&lt;br /&gt;
Poznámka: ROM CODE pro 1-W chipy jsou k dispozici pouze jako ucelené texty (string). Bajtový rozpad jednotlivých položek není k dispozici.&lt;br /&gt;
&lt;br /&gt;
 sys[931] až sys[939]  reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ostatní 1-Wire chipy'''&lt;br /&gt;
&lt;br /&gt;
Pro ostatní 1-W chipy, které SDS &amp;quot;nezná&amp;quot; (tzn. nekomunikuje s nimi, jen je umí na sběrnici vyhledat), jsou jejich ROM CODE odděleny do samostatných '''sys[]''' položek.&lt;br /&gt;
&lt;br /&gt;
Čtení ostatních 1-W chipů se spouští v rámci SDS-C programu, který musí zavolat příslušnou SDS-C funkci. &lt;br /&gt;
Na základě zavolání této funkce dojde k vynulování všech příslušných '''sys[]''' (od indexu 940 resp. 970) pro danou sběrnici, a provede se pokus o přečtení připojeného chipu.&lt;br /&gt;
Pokud se to povede, bude nalezený ROM CODE (spolu s časovou značkou okamžiku přečtení) vložen do příslušných '''sys[]''', &lt;br /&gt;
nebo bude nastaven chybový kód.&lt;br /&gt;
&lt;br /&gt;
Pozor, k SDS lze připojit více různých &amp;quot;ostatních&amp;quot; chipů, ale zdejší funkce najde jenom ten první z nich a ostatní už ignoruje. &lt;br /&gt;
Ostatní chipy lze samozřejmě připojit na kteroukoliv sběrnici, i když na ní jsou připojeny i chipy se kterými SDS komunikuje (např. teploměrné chipy).&lt;br /&gt;
&lt;br /&gt;
Jednotlivé chipy se rozlišují pomocí hodnoty ''ID family-code'' (jeden bajt). Pro chip DS1990A je ''0x01'', hodnoty pro jiné chipy viz datasheet výrobce pro konkrétní chip.&lt;br /&gt;
&lt;br /&gt;
Obecný stav sběrnic:&lt;br /&gt;
&lt;br /&gt;
 sys[940] 06 i R   Stav 1-W sběrnice '''[A]''' pro rescan ostatních 1-W chipů&lt;br /&gt;
 sys[941] 06 i R   Stav 1-W sběrnice '''[B]''' pro rescan ostatních 1-W chipů&lt;br /&gt;
 :&lt;br /&gt;
                    == 0  : ještě nebylo provedeno jediné/jakékoliv čtení ostatních chipů na 1-W sběrnici&lt;br /&gt;
 &lt;br /&gt;
                    == 1  : došlo k chybě: nebylo dokončeno předchozí čtení sběrnice&lt;br /&gt;
                            (nesmíte požadovat nové čtení, dokud se plně neprovedlo to poslední)&lt;br /&gt;
 &lt;br /&gt;
                    == 2  : probíhá čtení ROM CODE z připojeného ostatního chipu&lt;br /&gt;
                            (dokud se toto nedokončí, nelze provést opětovný požadavek na další rescan/čtení)&lt;br /&gt;
 &lt;br /&gt;
                    == 4  : nebyl nalezen jakýkoliv ostatní chip (s odpovídajícím Family Code byte)&lt;br /&gt;
 &lt;br /&gt;
                    == 8  : byl přečten ROM CODE z připojeného ostatního chipu&lt;br /&gt;
                            (už lze také požádat o další nové čtení 1-W sběrnice)&lt;br /&gt;
 &lt;br /&gt;
                    == 16 : došlo k chybě: nepovedlo se přečíst data po 1-W sběrnici &lt;br /&gt;
                            (zkuste provést rescan/čtení znovu)&lt;br /&gt;
&lt;br /&gt;
 sys[942] až sys[949]  reserved&lt;br /&gt;
&lt;br /&gt;
'''Pro sběrnici [A]:'''&lt;br /&gt;
&lt;br /&gt;
 sys[950] 06 i R   časová značka posledního okamžiku komunikace s chipem na [B] sběrnici 1-Wire&lt;br /&gt;
                   (nebo: 0 (nula) = pokud ještě nebyla komunikace provedena).&lt;br /&gt;
                    - v okamžiku každého nového pokusu o čtení je nastavena na 0 (nula),&lt;br /&gt;
                      a pak v okamžiku přečtení ROM CODE, je zde hodnota převzatá ze '''sys[3]'''&lt;br /&gt;
&lt;br /&gt;
 sys[951] 06 s R   celý text ROM CODE:&lt;br /&gt;
                    - ROM CODE pro chip na [A] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
 &lt;br /&gt;
 sys[952] až sys[959]: bajtový rozpad ROM CODE pro chip na [A] sběrnici 1-Wire&lt;br /&gt;
 :&lt;br /&gt;
 sys[952] 06 i R   romcode[0] (1-W: ID family-code byte)&lt;br /&gt;
 sys[953] 06 i R   romcode[1] (1-W: serial code)&lt;br /&gt;
 sys[954] 06 i R   romcode[2] (1-W: serial code)&lt;br /&gt;
 sys[955] 06 i R   romcode[3] (1-W: serial code)&lt;br /&gt;
 sys[956] 06 i R   romcode[4] (1-W: serial code)&lt;br /&gt;
 sys[957] 06 i R   romcode[5] (1-W: serial code)&lt;br /&gt;
 sys[958] 06 i R   romcode[6] (1-W: serial code)&lt;br /&gt;
 sys[959] 06 i R   romcode[7] (1-W: CRC byte)&lt;br /&gt;
&lt;br /&gt;
 sys[960] až sys[969]  reserved&lt;br /&gt;
&lt;br /&gt;
'''Pro sběrnici [B]:'''&lt;br /&gt;
&lt;br /&gt;
 sys[970] 06 i R   časová značka posledního okamžiku komunikace s chipem na [B] sběrnici 1-Wire&lt;br /&gt;
                   (nebo: 0 (nula) = pokud ještě nebyla komunikace provedena).&lt;br /&gt;
                    - v okamžiku každého nového pokusu o čtení je nastavena na 0 (nula),&lt;br /&gt;
                      a pak v okamžiku přečtení ROM CODE, je zde hodnota převzatá ze '''sys[3]'''&lt;br /&gt;
&lt;br /&gt;
 sys[971] 06 s R   celý text ROM CODE:&lt;br /&gt;
                    - ROM CODE pro chip na [B] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
 &lt;br /&gt;
 sys[972] až sys[979]: bajtový rozpad ROM CODE pro chip na [B] sběrnici 1-Wire&lt;br /&gt;
 :&lt;br /&gt;
 sys[972] 06 i R   romcode[0] (1-W: ID family-code byte)&lt;br /&gt;
 sys[973] 06 i R   romcode[1] (1-W: serial code)&lt;br /&gt;
 sys[974] 06 i R   romcode[2] (1-W: serial code)&lt;br /&gt;
 sys[975] 06 i R   romcode[3] (1-W: serial code)&lt;br /&gt;
 sys[976] 06 i R   romcode[4] (1-W: serial code)&lt;br /&gt;
 sys[977] 06 i R   romcode[5] (1-W: serial code)&lt;br /&gt;
 sys[978] 06 i R   romcode[6] (1-W: serial code)&lt;br /&gt;
 sys[979] 06 i R   romcode[7] (1-W: CRC byte)&lt;br /&gt;
&lt;br /&gt;
 sys[980] až sys[989]  reserved&lt;br /&gt;
&lt;br /&gt;
Všimněte si, že SDS v tuto chvíli umožňuje pouze rescan 1-W sběrnice, kdy hledá pouze '''jeden''' připojený &amp;quot;ostatní 1-W chip&amp;quot; (ten první na který narazí, ten ohlásí, a nehledá dále). &lt;br /&gt;
&lt;br /&gt;
'''Pozor''':&lt;br /&gt;
&lt;br /&gt;
Pokud je takových chipů připojeno na sběrnici více, popř. pokud jsou smíchány s &amp;quot;teploměrnými&amp;quot; chipy, &lt;br /&gt;
bude při tomto rescanu uveden pouze první nalezený ostatní chip (tj. ten, který má nejnižší ROM-CODE ze všech připojených ostatních chipů).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reserved ==&lt;br /&gt;
&lt;br /&gt;
 sys[990] až sys[1023]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Speciální položky jen pro SDS-MACRO-LM a SDS-MACRO-ST ==&lt;br /&gt;
&lt;br /&gt;
'''Přímý přístup do LCD Frame Buffer paměti:'''&lt;br /&gt;
&lt;br /&gt;
 sys[1024] až sys[1551]   LCD buffer (dostupné jen pro SDS MACRO LM a SDS MACRO ST !)&lt;br /&gt;
          01 i RW  každý index v rámci tohoto rozsahu sys[] lze zapisovat i číst&lt;br /&gt;
                   - jedná se o pole 528 bajtů (4 řádky x 132 sloupců)&lt;br /&gt;
                   - každý bajt pole obsluhuje přesně danou oblast (několika pixelů) LCD displaye&lt;br /&gt;
                   - platné hodnoty pro každý index : 0 až 255 včetně  - zapisujte a čtěte jen hodnoty 0 až 255 (včetně)&lt;br /&gt;
&lt;br /&gt;
Tyto položky jsou dosupné '''pouze a jenom''' na SDS-MACRO-LM kde je vyžadován firmware od 24.11.2016 nebo novější, a na SDS-MACRO-ST (všechny FW verze).&lt;br /&gt;
&lt;br /&gt;
Jakékoliv změny (zápis) se promítnou pouze do frame bufferu (tedy v paměti SDS) - ale aby se následně tento frame buffer (jeho změněný obsah) eventuálně vykreslil na LCD, je potřeba zavolat příslušnou SDS-C funkci !&lt;br /&gt;
&lt;br /&gt;
Čtení ze sys poskytuje přímý přístup do frame bufferu (jeho aktuální obsah, tedy opět ne nutně to co je právě vidět na LCD).&lt;br /&gt;
&lt;br /&gt;
Pokud nepoužíváte LCD (sandwich desku), můžete tuto oblast 528 bajtů využít pro jakékoliv své účely. V podstatě se pak jedná o rozšiřující RAM pamět pro váš SDS-C program.&lt;br /&gt;
&lt;br /&gt;
'''Pozor''' SDS-MACRO-ST&lt;br /&gt;
&lt;br /&gt;
SDS MACRO ST provádí automatické aktualizace (zápis) do LCD bufferu, pokud se o tento buffer nepřihlásí SDS-C program. Proto, pokud na MACRO-ST chcete využít LCD buffer pro jiné své účely, musíte to nejprve SDS říct. Znovu, toto platí jen pro MACRO-ST - ''není to potřeba pro MACRO-LM (které tam po zapnutí nahraje logo a pak už na buffer za běhu nesáhne)''. Pro MACRO-ST zavolejte kteroukoliv SDS-C funkci pro přístup na display (např. clear) a je to - tím se přepne vlastnictví LCD bufferu pro SDS-C program.&lt;br /&gt;
&lt;br /&gt;
== Vyhrazená oblast ==&lt;br /&gt;
&lt;br /&gt;
'''Zbytek:'''&lt;br /&gt;
&lt;br /&gt;
 sys[1552] až sys[1663]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bateriově Zálohovaná Paměť ==&lt;br /&gt;
&lt;br /&gt;
'''POUZE PRO: SDS-TTCPRO a SDS-MINI a SDS-MICRO-ST a SDS-MACRO-sT a SDS-IO6-ST !''' (tedy ty s baterií) - všechny jiné SDS První Řady tyto specifické indexy v sys[] nemají k dispozici!&lt;br /&gt;
&lt;br /&gt;
Pozor! Tato funkce vyžaduje FW od 18.8.2017 a nebo novější. &lt;br /&gt;
&lt;br /&gt;
 sys[1664] až sys[1791]   (pouze pro SDS TTCPRO a SDS MINI a SDS MICRO-ST a SDS MACRO-ST a SDS IO6-ST)&lt;br /&gt;
          07 i RW  sada 128 samostatných pozic v zálohované paměti RAM, pro ukládání libovolných hodnot&lt;br /&gt;
                    - každý index má k dispozici 32 bitů (tj. celý signed integer)&lt;br /&gt;
                    - čtení a zápis je rychlé (je to v RAM, takže se nemusí čekat jako při práci s DF)&lt;br /&gt;
                    - lze použít nezávisle (lze přístupovat ke kterékoliv položce &amp;quot;na přeskáčku&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Pozor! Oblast záložní paměti je k dispozici pouze na vybraných zařízeních SDS (ty, které mají osazenu baterii pro tyto účely). Údaje se nesmazají změnou programu (nahráním nového programu), ani se nesmazají resetem zařízení (kromě aktivace RSTD - pozor!), tzn. vydrží a zůstanou, a to dokonce i po celou dobu výpadku externího napájení (tak dlouho, dokud se nevybije záložní baterie).&lt;br /&gt;
&lt;br /&gt;
''(Pouze) pokud baterie v daném SDS není'': tak jsou údaje ztraceny po výpadku napájení (ale po dobu přítomnosti externího napájení jsou k dispozici). Při takové situaci není zaručen obsah těchto dat po zapnutí (měl by být nulový, ale bez záruky).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Další informace ze S0 vstupů ==&lt;br /&gt;
&lt;br /&gt;
Následující položky jsou k dispozici pro všechny SDS První Produktové Řady.&lt;br /&gt;
&lt;br /&gt;
Od verze SDS-C č. 07 jsou přidány tyto systémové proměnné:&lt;br /&gt;
&lt;br /&gt;
 sys[1792] až sys[1823]  &lt;br /&gt;
          07 i R   cena za jednotku v režimu T0&lt;br /&gt;
                    - původní hodnota je poskytnuta jako násobek 1000 (např. nastavená hodnota 3.40 je zde předána jako číslo 3400)&lt;br /&gt;
 &lt;br /&gt;
 sys[1824] až sys[1855]  &lt;br /&gt;
          07 i R   cena za jednotku v režimu T1&lt;br /&gt;
                    - původní hodnota je poskytnuta jako násobek 1000 (např. nastavená hodnota 3.40 je zde předána jako číslo 3400)&lt;br /&gt;
 &lt;br /&gt;
 sys[1856] až sys[1887]  &lt;br /&gt;
          07 s R   název jednotky se vztahem k času, podle nastavení (např. text &amp;quot;kWh&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[1888] až sys[1919]&lt;br /&gt;
          07 s R   název měny, podle nastavení (např. text &amp;quot;CZK&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[1920] až sys[1951]  &lt;br /&gt;
          07 s R   název jednotky bez vztahu k času, podle nastavení (např. text &amp;quot;kW&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[1952] až sys[1983]  &lt;br /&gt;
          07 s R   název činnosti, podle nastavení (např. text &amp;quot;spotřeba&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[1984] až sys[2015]  &lt;br /&gt;
          07 s R   název měřiče, podle nastavení (např. text &amp;quot;elektroměr č. 1&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[2016] až sys[2047]  &lt;br /&gt;
          07 i R   konfigurační detaily pro daný S0 vstup&lt;br /&gt;
                    - bit 0 nastaven = je to aktivní S0 vstup&lt;br /&gt;
                    - bit 1 nastaven = tento S0 vstup je rozdělen na dvoutarif T0/T1 (jinak je to jedno-tarif)&lt;br /&gt;
&lt;br /&gt;
Samozřejmě pro využití těchto systémových proměnných, potřebujete mít v SDS aktuální firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reserved ==&lt;br /&gt;
&lt;br /&gt;
 sys[2048] až sys[2198]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MQTT klient ==&lt;br /&gt;
&lt;br /&gt;
Vždy si zjistěte, jestli máte v SDS takové FW, které podporuje funkci MQTT klient:&lt;br /&gt;
&lt;br /&gt;
 sys[2199] 09 i R   podpora MQTT&lt;br /&gt;
                     0 = NE&lt;br /&gt;
                     1 = ANO, verze MQTT 3.1.1, SDS první část implementace&lt;br /&gt;
                     2..max = (reserved)&lt;br /&gt;
&lt;br /&gt;
Každé nové připojení k Brokeru:&lt;br /&gt;
&lt;br /&gt;
 sys[2200] 09 i R   stav průběhu mqtt_connect()&lt;br /&gt;
                     -7 = obdrželi jsme CONNACK, ale negativní = nepřipojeno ( výsledek viz sys[2201] )&lt;br /&gt;
                     -6 = timeout při čekání na připojení, nepřipojeno&lt;br /&gt;
                     -5 = nespravne parametry (hodnoty např. IP, port), nepřipojeno&lt;br /&gt;
                     -4 = nespravne parametry (počet parametrů), nepřipojeno&lt;br /&gt;
                     -3 = funkce zavolána dříve (nebo opakovaně) než bylo dokončeno předchozí volání funkce, takže toto volání je ignorováno&lt;br /&gt;
                     -2 = pokus o TCP připojení selhal&lt;br /&gt;
                     -1 = nepoužito&lt;br /&gt;
                      0 = klid, nic se neprovádí, ODPOJENO ! (lze se začít připojovat)&lt;br /&gt;
                      1 = bylo zahájeno připojování (otevírá se TCP spojení)&lt;br /&gt;
                      2 = TCP připojeno a odeslán CONNECT požadavek&lt;br /&gt;
                      4 = obdrželi jsme CONNACK, připojeno ( výsledek viz sys[2201] )&lt;br /&gt;
                      8 = probíhá odpojování, čekáme na výsledek (na odpojení)&lt;br /&gt;
&lt;br /&gt;
Po zavolání mqtt_connect(...) je nutné testovat sys[2200] na výslednou hodnotu. Funkci mqtt_connect(...) nelze volat, je-li sys[2200] na hodnotě 1, 2, 8 nebo 16 (nejprve je v takových případech potřeba provést odpojení pomocí mqtt_disconnect() funkce). Pro úplný test, je-li připojení z SDS do Brokeru úplné, je potřeba ověřit i hodnotu v sys[2201]. Teprve pokud oba tyto sys jsou na správné hodnotě, lze s Brokerem komunikovat.&lt;br /&gt;
&lt;br /&gt;
 sys[2201] 09 i R   výsledek mqtt_connect() = hodnota &amp;quot;CONNACK Connect Return&amp;quot;&lt;br /&gt;
                     -7 = nepoužito&lt;br /&gt;
                     -6 = timeout při čekání na CONNACK, nepřipojeno&lt;br /&gt;
                     -5 = nepoužito&lt;br /&gt;
                     -4 = nepoužito&lt;br /&gt;
                     -3 = nepoužito&lt;br /&gt;
                     -2 = probíhá připojování, čekáme na CONNACK (zatím nepřišel)&lt;br /&gt;
                     -1 = idle, nepřipojeno&lt;br /&gt;
                      0 = (výsledek:) MQTT 0x00: broker akceptoval připojení - LZE POKRAČOVAT (provádět Publish, Subscribe)&lt;br /&gt;
                      1 = MQTT 0x01: Connection Refused, unacceptable protocol version&lt;br /&gt;
                      2 = MQTT 0x02: Connection Refused, identifier rejected&lt;br /&gt;
                      3 = MQTT 0x03: Connection Refused, Server unavailable&lt;br /&gt;
                      4 = MQTT 0x04: Connection Refused, bad user name or password&lt;br /&gt;
                      5 = MQTT 0x05: Connection Refused, not authorized&lt;br /&gt;
&lt;br /&gt;
Hodnotu v sys[2201] lze číst a zpracovat pouze pokud je sys[2200] na hodnotě 16 (to znamená, pouze pokud SDS obdrží odpověď CONNACK od MQTT brokera).&lt;br /&gt;
&lt;br /&gt;
Před a po každém volání mqtt_publish() a nebo mqtt_subscribe() funkcí je potřeba sledovat obsah následují položky:&lt;br /&gt;
&lt;br /&gt;
 sys[2202] 09 i R   výsledek pro tyto funkce: mqtt_publish(), mqtt_subscribe(), mqtt_unsubscribe_index(), mqtt_unsubscribe_name()&lt;br /&gt;
                     -8 = SUBACK dorazil z Broker ale s indikovanou chybou (Failure Bit), můžete volat další funkci&lt;br /&gt;
                     -7 = vybraná položka (řádek) subscribe tabulky je prázdná, není co odhlašovat&lt;br /&gt;
                     -6 = timeout (možnosti: publish neprovedeno, nebo: SUBACK vůbec nedorazil, nebo: UNSUBACK vůbec nedorazil), můžete volat další funkci&lt;br /&gt;
                     -5 = nespravne parametry (hodnoty, např. index) např. jejich celková délka se nevleze do paketu&lt;br /&gt;
                     -4 = nespravne parametry (počet parametrů)&lt;br /&gt;
                     -3 = funkce zavolána dříve (nebo opakovaně) než bylo dokončeno předchozí volání funkce, takže toto volání je ignorováno&lt;br /&gt;
                     -2 = SDS není připojeno k brokeru (buď právě ještě probíhá připojování, nebo není vůbec připojeno)&lt;br /&gt;
                     -1 = bez aktivity&lt;br /&gt;
                      0 = nepoužito&lt;br /&gt;
                      1 = mqtt_publish() probíhá&lt;br /&gt;
                      2 = mqtt_publish() hotovo (OK - obdržen TCP ACK), můžete volat další funkci&lt;br /&gt;
                      4 = mqtt_subscribe() probíhá - čekám na SUBACK&lt;br /&gt;
                      8 = SUBACK dorazil z Broker, bez chyby (OK), můžete volat další funkci&lt;br /&gt;
                     16 = čekám na UNSUBACK (pouze pro unsubscribe funkce)&lt;br /&gt;
                     32 = UNSUBACK dorazil z Brokeru, můžete volat další funkce&lt;br /&gt;
&lt;br /&gt;
Informativní položka:&lt;br /&gt;
&lt;br /&gt;
 sys[2203] 09 i R   počet chyb v protokolu MQTT směrem z Brokeru&lt;br /&gt;
                    (objeví-li se chyba, dojde k okamžitému odpojení)&lt;br /&gt;
&lt;br /&gt;
Nastavení (položka 2198 je k dispzoici až od FW 11/2025):&lt;br /&gt;
&lt;br /&gt;
 sys[2198] 09 i R   mqtt_publish PUBLISH Fixed Header value ( 0b0011dqqr : d=DUP, qq=QOS, r=RETAIN ) &lt;br /&gt;
 sys[2198] 09 i W   write ( default: 0b00110001 )&lt;br /&gt;
&lt;br /&gt;
Zatím nepoužité pozice:&lt;br /&gt;
&lt;br /&gt;
 sys[2204] až sys[2208]   reserved&lt;br /&gt;
&lt;br /&gt;
Pro každou příchozí datovou zprávu z Brokeru, je tato zpráva uložena do následujících sys: (pozor, každá nová příchozí zpráva přepíše předchozí údaje)&lt;br /&gt;
&lt;br /&gt;
 sys[2210] 09 s R   poslední přijatý Topic Name z Brokeru (broker publish)&lt;br /&gt;
 sys[2250] 09 s R   poslední přijatý Value z Brokeru (broker publish)&lt;br /&gt;
 sys[2290] 09 i R   timestamp pro poslední přijatou zprávu (broker publish)&lt;br /&gt;
&lt;br /&gt;
SDS umí přijaté datové zprávy uchovat, v rámci následující tabulky. Toto je důležité zejména pokud různé zprávy přicházejí velice rychle za sebou, aby se pro SDS-C program neztratili.&lt;br /&gt;
&lt;br /&gt;
Nejvíce lze mít až 32 položek (řádků) v tabulce, nicméně některá SDS nemají ve své paměti dostatečné místo a počet je tedy omezen. Pozor na to při psaní programu !&lt;br /&gt;
&lt;br /&gt;
 sys[2209] 09 i R   počet řádků v tabulce pro dané SDS (různé SDS mají různě volnou paměť, proto je v nich i různý počet použitelných Subscribe položek)&lt;br /&gt;
&lt;br /&gt;
Jednotlivé položky v tabulce příchozích zpráv:&lt;br /&gt;
&lt;br /&gt;
 sys[2211] až sys[2241] &lt;br /&gt;
          09 s R   název položky (Topic Name) pro daný index #1 - #31&lt;br /&gt;
                   (max délka záznamu dle SDS)&lt;br /&gt;
 &lt;br /&gt;
 sys[2242] až sys[2249]   reserved&lt;br /&gt;
 &lt;br /&gt;
 sys[2251] až sys[2281] &lt;br /&gt;
          09 s R   poslední přijatá hodnota (Value) ze publish zprávy ze brokeru pro daný index #1 - #31&lt;br /&gt;
                   (max délka záznamu dle SDS)&lt;br /&gt;
 &lt;br /&gt;
 sys[2282] až sys[2289]   reserved&lt;br /&gt;
 &lt;br /&gt;
 sys[2291] až sys[2321] &lt;br /&gt;
          09 i R   timestamp (hodnota uptime) v okamžiku příchodu zprávy z Brokeru&lt;br /&gt;
                   (pro detekci změny - příchozí zprávy z Brokeru)&lt;br /&gt;
                   0 = zatím nic nepřišlo&lt;br /&gt;
                   1..MAX = hodnota uptime v okamžiku poslední změny&lt;br /&gt;
&lt;br /&gt;
Nastavení Topic názvů každé položky (tedy &amp;quot;zápis&amp;quot; do sys[2211] až sys[2241]) se provede funkcí mqtt_subscribe(), které zadáváte pozici v této tabulce a název Topicu. Pokud se Subscribe nepovede, zůstane pozice v tabulce prázdná. Po připojení k Brokeru je tabulka vždy zcela prázdná, a SDS-C program si ji vždy musí dle potřeby naplnit. Pokud Broker pošle aktualizaci obsahu (value) na některou z přihlášených Topic položek, které SDS v této tabulce má, tak SDS automaticky přepíše patřičný řádek tabulky (tj. obsah jednoho ze sys[2251] až sys[2281]) a patřičně aktualizuje časovou známku změny.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reserved ==&lt;br /&gt;
&lt;br /&gt;
 sys[2322] až sys[2398]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MODBUS-TCP klient ==&lt;br /&gt;
&lt;br /&gt;
Ověření FW v SDS:&lt;br /&gt;
&lt;br /&gt;
 sys[2399] 09 i R   podpora pro MODBUS TCP&lt;br /&gt;
                     0 = NE&lt;br /&gt;
                     1 = ANO (první verze implementace v SDS)&lt;br /&gt;
&lt;br /&gt;
Každé nové TCP spojení na server:&lt;br /&gt;
&lt;br /&gt;
 sys[2400] 09 i R   stav průběhu modbus_tcp_connect()&lt;br /&gt;
                     -6 = timeout při čekání na připojení, nepřipojeno&lt;br /&gt;
                     -5 = nespravne parametry (hodnoty např. IP, port), nepřipojeno&lt;br /&gt;
                     -4 = nespravne parametry (počet parametrů), nepřipojeno&lt;br /&gt;
                     -3 = funkce zavolána dříve (nebo opakovaně) než bylo dokončeno předchozí volání funkce, takže toto volání je ignorováno&lt;br /&gt;
                     -2 = pokus o TCP připojení selhal&lt;br /&gt;
                     -1 = nepoužito&lt;br /&gt;
                      0 = klid, nic se neprovádí, ODPOJENO ! (lze se začít připojovat)&lt;br /&gt;
                      1 = bylo zahájeno připojování (otevírá se TCP spojení)&lt;br /&gt;
                      2 = TCP připojeno, můžete komunikovat &lt;br /&gt;
&lt;br /&gt;
MODBUS funkce - každá má svůj nezávislý stavový údaj:&lt;br /&gt;
&lt;br /&gt;
 sys[2401] 09 i R   stav průběhu zpracování funkce 0x01 - modbus_tcp_read(uid, 0x01, ...);&lt;br /&gt;
 sys[2402] 09 i R   stav průběhu zpracování funkce 0x02 - modbus_tcp_read(uid, 0x02, ...);&lt;br /&gt;
 sys[2403] 09 i R   stav průběhu zpracování funkce 0x03 - modbus_tcp_read(uid, 0x03, ...);&lt;br /&gt;
 sys[2404] 09 i R   stav průběhu zpracování funkce 0x04 - modbus_tcp_read(uid, 0x04, ...);&lt;br /&gt;
 sys[2405] 09 i R   stav průběhu zpracování funkce 0x05 - modbus_tcp_writesingle(uid, 0x05, ...);&lt;br /&gt;
 sys[2406] 09 i R   stav průběhu zpracování funkce 0x06 - modbus_tcp_writesingle(uid, 0x06, ...);&lt;br /&gt;
 sys[2415] 09 i R   stav průběhu zpracování funkce 0x0F - modbus_tcp_writemultiple(uid, 0x0F, ...);&lt;br /&gt;
 sys[2416] 09 i R   stav průběhu zpracování funkce 0x10 - modbus_tcp_writemultiple(uid, 0x10, ...);&lt;br /&gt;
                     pro všechny tyto stavy platí následující hodnoty:&lt;br /&gt;
                      -6 = timeout (neprovedeno), můžete volat další funkci&lt;br /&gt;
                      -5 = nespravne parametry (hodnoty), můžete volat další funkci&lt;br /&gt;
                      -4 = nespravne parametry (počet parametrů), můžete volat další funkci&lt;br /&gt;
                      -3 = funkce zavolána dříve (nebo opakovaně) než bylo dokončeno předchozí volání funkce, takže toto volání je ignorováno&lt;br /&gt;
                      -2 = SDS není připojeno (buď právě ještě probíhá připojování, nebo není vůbec připojeno)&lt;br /&gt;
                      -1 = bez aktivity, lze volat funkci&lt;br /&gt;
                       0 = provedeno OK (obdržena platná odpověď bez chybového kódu), můžete volat další funkci&lt;br /&gt;
                       1 .. 15 = obdržena odpověď s chybou 0x01 až 0x0F, můžete volat další funkci&lt;br /&gt;
                     256 = pracuji, čekejte na aktualizovanou hodnotu&lt;br /&gt;
&lt;br /&gt;
 sys[2417] až sys[2462]   reserved&lt;br /&gt;
&lt;br /&gt;
 sys[2463] 09 i R  poslední hodnota Unit Identifier zapsaná do MBAP hlavičky při odeslání zprávy&lt;br /&gt;
 &lt;br /&gt;
 sys[2464] 09 i R  poslední hodnota Transaction Identifier zapsaná do MBAP hlavičky při odeslání zprávy&lt;br /&gt;
&lt;br /&gt;
Přijatá data (funkce _read) - obsah je aktualizován pro každou novou přijatou MODBUS zprávu. Výsledky (přijatá data) jsou vždy uloženy do následujících sys (bez ohledu na typ MODBUS funkce).&lt;br /&gt;
&lt;br /&gt;
 sys[2465] 09 i R  timestamp poslední přijaté zprávy&lt;br /&gt;
                   (vhodné pro detekci nové přijaté zprávy)&lt;br /&gt;
 &lt;br /&gt;
 sys[2466] 09 i R  počet přijatých položek, pro poslední přijatou zprávu&lt;br /&gt;
                   (počet celých položek)&lt;br /&gt;
 &lt;br /&gt;
 sys[2467] 09 i R  přijatá hodnota Unit Identifier z příchozí MBAP hlavičky&lt;br /&gt;
                   (hodnota adresy je převzata z příchozí zprávy)&lt;br /&gt;
 &lt;br /&gt;
 sys[2468] 09 i R  přijatá hodnota Transaction Identifier z příchozí MBAP hlavičky&lt;br /&gt;
                   (hodnota adresy je převzata z příchozí zprávy) &lt;br /&gt;
 &lt;br /&gt;
 sys[2469] 09 i R  adresa první položky coil/input/register (které odpovídá údaj v sys[2470])&lt;br /&gt;
                   (MODBUS způsob číslování položek - adresa 1..n)&lt;br /&gt;
 &lt;br /&gt;
 sys[2470] až sys[2719]&lt;br /&gt;
          09 i R   přijaté hodnoty pro poslední přijatou zprávu&lt;br /&gt;
                    MODBUS funkce 0x01 a 0x02: každý sys[] má hodnotu 0 až 255, jednotlivé bity určují coils/input&lt;br /&gt;
                    MODBUS funkce 0x03 a 0x04: každý sys[] má hodnotu -32768 až 32767, tedy hodnotu pro každý jeden registr&lt;br /&gt;
&lt;br /&gt;
Pro funkce 0x01 a 0x02 jsou přijatá data kódována v jednobitovém tvaru, vždy po osmi bitech na jeden sys[]. Takže prvních osm bitů naleznete v sys[2465], dalších osm bitů v sys[2466] a tak dále.&lt;br /&gt;
&lt;br /&gt;
Pro funkce 0x03 a 0x04 jsou přijaté hodnoty registrů (MODBUS: vždy int16_t) uloženy postupně zasebou (tak jak přišli ve zprávě) do jednotlivých sys[], takže první registr je v sys[2465], druhý ve sys[2466] atd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rezerva&lt;br /&gt;
&lt;br /&gt;
 sys[2715] až sys[2809]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Statistiky COMx ==&lt;br /&gt;
&lt;br /&gt;
COM1:&lt;br /&gt;
&lt;br /&gt;
 sys[2810] 09 i R   reserved&lt;br /&gt;
 &lt;br /&gt;
 sys[2811] 09 i R   počet odeslaných bajtů (TX) na port COM1&lt;br /&gt;
 &lt;br /&gt;
 sys[2812] 09 i R   počet neodeslaných bajtů (zahozených) pro port COM1 &lt;br /&gt;
                    (tzn. SDS chce odeslat více bajtů než zvládá nastavená rychlost COM portu)&lt;br /&gt;
 &lt;br /&gt;
 sys[2813] 09 i R   počet čekajících bajtů na odeslání (TX) ve frontě pro port COM1&lt;br /&gt;
 &lt;br /&gt;
 sys[2814] 09 i R   počet přijatých bajtů (RX) na portu COM1&lt;br /&gt;
 &lt;br /&gt;
 sys[2815] 09 i R   počet nepřijatých bajtů (ignorované) pro port COM1 &lt;br /&gt;
                    (tzn. pro případ kdy do SDS je posláno více bajtů než SDS zpracuje, a tak musí zahazovat)&lt;br /&gt;
 &lt;br /&gt;
 sys[2816] 09 i R   počet nevyzvednutých přijatých bajtů (RX) ve frontě pro port COM1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rezerva&lt;br /&gt;
&lt;br /&gt;
 sys[2817] až sys[2860]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
COM6:&lt;br /&gt;
&lt;br /&gt;
 sys[2861] 09 i R   počet odeslaných bajtů (TX) na port COM6&lt;br /&gt;
 &lt;br /&gt;
 sys[2862] 09 i R   počet neodeslaných bajtů (zahozených) pro port COM6&lt;br /&gt;
                    (tzn. SDS chce odeslat více bajtů než zvládá nastavená rychlost COM portu)&lt;br /&gt;
 &lt;br /&gt;
 sys[2863] 09 i R   počet čekajících bajtů na odeslání (TX) ve frontě pro port COM6&lt;br /&gt;
 &lt;br /&gt;
 sys[2864] 09 i R   počet přijatých bajtů (RX) na portu COM6&lt;br /&gt;
 &lt;br /&gt;
 sys[2865] 09 i R   počet nepřijatých bajtů (ignorované) pro port COM6&lt;br /&gt;
                    (tzn. pro případ kdy do SDS je posláno více bajtů než SDS zpracuje, a tak musí zahazovat)&lt;br /&gt;
 &lt;br /&gt;
 sys[2866] 09 i R   počet nevyzvednutých přijatých bajtů (RX) ve frontě pro port COM6&lt;br /&gt;
&lt;br /&gt;
Pro využití všech těchto statistik, je potřeba mít v SDS aktuální firmware (starší FW zde vrací nuly).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konec dokumentu ==&lt;br /&gt;
&lt;br /&gt;
'''Konec dokumentu.'''&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS-C:_sdsc_sysp&amp;diff=969</id>
		<title>SDS-C: sdsc sysp</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS-C:_sdsc_sysp&amp;diff=969"/>
		<updated>2025-11-15T11:11:23Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje programovací jazyk '''SDS-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Zařízení Druhé Produktové Řady používají jazyk FULL-C (jiná část této Wiki).&lt;br /&gt;
&lt;br /&gt;
== Definice systémových proměnných SDS-C : pole sys[] ==&lt;br /&gt;
&lt;br /&gt;
Tzv. &amp;quot;systémová proměnná&amp;quot; je prvek v programovacím jazyku SDS-C, který má textový název, a se kterým se dá pracovat - číst hodnotu z proměnné a zapisovat hodnotu do proměnné. Často je čtení a zápis svázáno s fyzickou akcí (např. zápis do konkrétní systémové proměnné změní stav relé).&lt;br /&gt;
&lt;br /&gt;
SDS-C obsahuje celou řadu vyhrazených, předem pevně definovaných systémových 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. Úplný seznam je právě na této stránce.&lt;br /&gt;
&lt;br /&gt;
Proměnné poskytované SDS-C a navázané na HW zařízení, jsou označeny jako '''sys[x]''', kde index '''x''' je číslo do 0 do 1023 (popřípadě až do 2048 ale to jen na určitých typech zařízení).&lt;br /&gt;
&lt;br /&gt;
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í).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Legenda k tabulce:''&lt;br /&gt;
&lt;br /&gt;
Proměnná typu '''i''' je 32-bit signed integer (nejvyšší bit je znaménko, a zbývajících 31 bitů je číselná hodnota).&lt;br /&gt;
&lt;br /&gt;
Proměnná typu '''s''' je soubor znaků (string) - tj. '''text''' (řetězec znaků) - a tyto proměnné '''lze použít jen pro čtení'''.&lt;br /&gt;
&lt;br /&gt;
Některé proměnné lze jen číst ('''R'''), do některých lze kromě čtení i zapisovat ('''RW'''). &lt;br /&gt;
&lt;br /&gt;
Údaj '''XX''' v seznamu proměnných udává verzi firmware, kdy byla daná proměnná zavedena.&lt;br /&gt;
'''Význam hodnot:'''&lt;br /&gt;
* '''01''' - první verze, výchozí firmware ze začátku roku 2010&lt;br /&gt;
* '''02''' - druhá verze, bylo vydáno na přelomu roku 2010 a 2011&lt;br /&gt;
* '''03''' - třetí verze, tj. pouze pro firmware od 03.2011 &lt;br /&gt;
* '''04''' - čtvrtá verze, tj. pouze pro firmware od 06.2011 a novější&lt;br /&gt;
* '''05''' - pátá verze, tj. pouze pro firmware od 11.2011 a novější&lt;br /&gt;
* '''06''' - šestá verze, tj. pouze pro firmware od 03.2012 a novější&lt;br /&gt;
* '''07''' - sedmá verze, tj. pouze pro firmware od 07.2017 a novější&lt;br /&gt;
* '''08''' - osmá verze, tj. pouze pro firmware od 12.2018 a novější&lt;br /&gt;
* '''09''' - devátá verze, tj. pouze pro firmware od 06.2020 a novější&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pokud máte starší verzi firmware, je možné, že některé později přidané položky nebudou k dispozici. Řešením je udržovat firmware ve vašem zařízení vždy aktuální.&lt;br /&gt;
&lt;br /&gt;
Jazyk SDS-C indexuje všechny pole od čísla 0 (nula) - všechna pole, tj. &amp;quot;sys[]&amp;quot;, &amp;quot;ram[]&amp;quot;, &amp;quot;text[]&amp;quot;, začínají se svým obsahem od indexu nula.&lt;br /&gt;
&lt;br /&gt;
'''Pozor''' však na číslování hardware vstupů a výstupů, ty jsou číslovány dle &amp;quot;elektrikářských&amp;quot; zvyklostí, to znamená že číslování začíná od čísla '''1''' ('''jednička''') - toto ale nemá hlubší vliv na SDS-C.&lt;br /&gt;
&lt;br /&gt;
Pokud narazíte na takové zařízení SDS, které má ještě velmi starou verzí webového rozhraní, kde byly ještě některé vstupy číslovány od nuly, aktualizujte si toto zařízení aby používalo nejnovější firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Důležité upozornění'''&lt;br /&gt;
&lt;br /&gt;
Protože SDS-C ''umí pracovat pouze a jen'' s '''32-bit signed''' integer čísly (tj. 1-bit znaménko a 31-bitů číslo, typ int32_t), tak dochází k (očekávané) konverzi '''32-bit unsigned''' čísel (tj. bez znaménka 32-bitů číslo, typ uint32_t) mezi vnitřními hodnotami v SDS a reprezentací v SDS-C (například když takové unsigned číslo je dotazováno například přes čtení &amp;quot;sys[]&amp;quot; hodnot).&lt;br /&gt;
&lt;br /&gt;
Jinýmy slovy - uvnitř SDS jsou drženy některé hodnoty jako 32-bit unsigned. Ale protože SDS-C pracuje pouze s 32-bit signed čísly, pak při čtení takových čísel zevnitř SDS jsou tyto čísla prezentovány v SDS-C jako 32-bit signed. Bitově se nezmění, jen se &amp;quot;mění&amp;quot; pohled na to, co který bit znamená, viz text dále.&lt;br /&gt;
&lt;br /&gt;
''Příklad:'' &lt;br /&gt;
Hodnota &amp;quot;sys[625]&amp;quot; reprezentuje &amp;quot;uplynulý čas od posledního zachyceného S0 impulsu na daném S0 vstupu&amp;quot;. Tato hodnota je udržována uvnitř SDS a program SDS-C k ní má přístup.&lt;br /&gt;
Tento čas je udán v milisekundách a začína na nule, a s každou milisekundou ze zvýší o jedničku. Protože SDS udržuje toto počítadlo (uvnitř své paměti) jako '''32-bit unsigned''', tak jakmile dojde k dopočítání do 31-bitů (tj. 2147483647) a překlopí se tedy 32. bit (tj. na 2147483648), tak SDS-C při čtení &amp;quot;sys[625]&amp;quot; vrátí zápornou hodnotu (tj. -2147483648). Toto je v pořádku - pokud si vypíšete jednotlivé bity, tak budou stále přesně odpovídat, ale tím že SDS-C interpetuje všechny čísla jako '''32-bit signed''', tak vzorovou hodnotu použije a zobrazí jako zápornou.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  skutečná binární hodnota         | 32-bit signed | 32-bit unsigned&lt;br /&gt;
  (32-bit)                         | SDS-C integer | (internal SDS)&lt;br /&gt;
 ----------------------------------+---------------+-----------------&lt;br /&gt;
  00000000000000000000000000000000 |             0 |               0&lt;br /&gt;
  00000000000000000000000000000001 |             1 |               1&lt;br /&gt;
  00000000000000001111111111111111 |         65535 |           65535&lt;br /&gt;
  01111111111111111111111111111111 |    2147483647 |      2147483647&lt;br /&gt;
  10000000000000000000000000000000 |   -2147483648 |      2147483648&lt;br /&gt;
  10000000000000000000000000000001 |   -2147483647 |      2147483649&lt;br /&gt;
  10000000000000001111111111111111 |   -2147418113 |      2147549183&lt;br /&gt;
  11111111111111111111111111111111 |            -1 |      4294967295&lt;br /&gt;
  11111111111111111111111111111110 |            -2 |      4294967294&lt;br /&gt;
  11111111111111111111111111111101 |            -3 |      4294967293&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, SDS vždy (ať ve svém firmware, tak v SDS-C kódu a proměnných) udržuje hodnoty ve stejném ''binárním'' obsahu. Jen interpretace a další práce s čísly je jiná. SDS samo vnitřně pracuje s '''32-bit unsigned''' hodnotami, a díky tomu na webu a všech M2M stránkách můžete vidět hodnoty v rozsahu od 0 do 4294967295. Zato SDS-C pracuje pouze se '''32-bit signed''' hodnotami, a proto stejné číslo je reprezentováno v rozsahu -2147483648 až 2147483647. Toto je vlastnost daná omezením implementace, zkrátka v SDS-C to nelze jinak udělat (pokud to je problém, což ale není, tak můžete přejít na zařízení s FULL-C které tyto omezení nemá).&lt;br /&gt;
&lt;br /&gt;
To lze snadno ve vašem SDS-C kódu ošetřit, a pokud pouze přenášíte hodnoty z SDS na server (přes HTTP-GET), tak se to dá snadno a ihned zpracovat na serveru &amp;quot;zpět&amp;quot; na '''32-bit unsigned''' hodnotu. Jednoduše na serveru přijmete '''signed''' číslo, a převedete ho například přetypování na '''unsigned''' číslo. Bity v paměti totiž jsou pro oba typy stejné.&lt;br /&gt;
&lt;br /&gt;
V tabulce jsou konkrétní &amp;quot;sys[]&amp;quot; položky, kterých se toto týká, označeny tímto symbolem: '''(!)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Použítí v SDS-C programu'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Příklad zápisu v programu: jaká je teplota na čidle 1 (celé stupně Celsia)? &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 teplota0_ve_stupnich_C = sys[310] / 100;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ne vždy je potřeba provádět 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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
if (sys[310] &amp;gt; sys[311]) { echo('Prvni cidlo je teplejsi nez druhe.'); };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Příklad zápisu v programu: jak zapnu relé RE1? (musíte vědět &amp;quot;co&amp;quot; &amp;quot;kam&amp;quot; zapsat):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
sys[231] = 255; // v tomto okamžiku dojde k ovládnutí relé č. 1 (- viz index 231 dole v seznamu)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Můžete (od 03 verze SDS-C) použít i ''#define'', příklad:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define RELE1 sys[231]&lt;br /&gt;
&lt;br /&gt;
#define TEPLOTA sys[310]&lt;br /&gt;
&lt;br /&gt;
// ...&lt;br /&gt;
 &lt;br /&gt;
RELE1 = 255;&lt;br /&gt;
 &lt;br /&gt;
if (TEPLOTA &amp;gt; 3200) goto x;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pole ram[] ==&lt;br /&gt;
&lt;br /&gt;
Pole '''ram[]''' je samostatné nezávislé pole, dostupné pro SDS-C program od verze č. 03 (a výše).&lt;br /&gt;
&lt;br /&gt;
Obsah pole ram[] je uložen samostatně v RAM paměti, a je při resetu zařízení ztracen.&lt;br /&gt;
&lt;br /&gt;
Obsah pole ram[] se nekryje s dalšími proměnnými programu a tak dále (je to zcela samostatné paměťové pole).&lt;br /&gt;
&lt;br /&gt;
Pole ram[] lze indexovat číslem nebo proměnnou. Příkladem:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
hodnota = ram[10];&lt;br /&gt;
&lt;br /&gt;
index = 23;&lt;br /&gt;
ram[index] = 15 * 2;&lt;br /&gt;
&lt;br /&gt;
index = sys[1023];&lt;br /&gt;
ram[index] = 30;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pole ram[] je indexováno od indexu nula (tj.: ram[0]). Celková velikost (maximální index) je dán verzí SDS-C a konkrétního firmware v zařízení. &lt;br /&gt;
&lt;br /&gt;
Verze SDS-C č. 03 má maximální velikost pole ram[] nastavenou na 128 položek. '''Novější verze už mají počet zvýšený ''' - verze č. 06 má velikost ram[] nastavenou na 512 položek (každá o velikosti int32_t).&lt;br /&gt;
&lt;br /&gt;
Pole ram[] můžete využít k čemukoliv co potřebujete. Také i pro některé SDS-C funkce, jako je ''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[]), nebo při přenosu stránek z/do paměti DF.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ukládání trvalých dat ==&lt;br /&gt;
&lt;br /&gt;
Všechny verze SDS-C mají od k dispozi prostor v oblasti sys[100] až sys[115]. Toto je výchozí oblast pro uchovávání trvanlivých dat (tyto údaje se neztratí při výpadku napájení). Přímým zápisem, do těchto sys[] položek, dojde k zápisu do pevné paměti. Čtení se provádí opět přímým přístupem do těchto sys[].&lt;br /&gt;
&lt;br /&gt;
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 (NVM = Non-Volatile Memory), osazeném na desce zařízení SDS, a to prostřednictvím čtyř SDS-C funkcí.&lt;br /&gt;
&lt;br /&gt;
Pozn. historické verze zařízení SDS-MICRO LIGHT, kde se používá paměť EEPROM (na místo novější DataFlash), poskytuje vždy pouze základní rozsah indexů: 100 až 115, a neposkytuje rozšířený rozsah pevné paměti (tak jako zařízení s pamětí DataFlash).&lt;br /&gt;
&lt;br /&gt;
Více informací, způsob použití a důležité varování je uvedeno na [[SDS-C: DataFlash|stránce ohledně DataFlash]].&lt;br /&gt;
&lt;br /&gt;
Další možnost:&amp;lt;br&amp;gt;&lt;br /&gt;
Zařízení SDS řady ST mají k dispozici, kromě podpory pro DataFlash, i možnost využít Zálohovanou paměť RAM (ta drží obsah i při vypnutém napájení SDS, pokud je v SDS vložena nabitá zálohovací baterie).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pole text[] ==&lt;br /&gt;
&lt;br /&gt;
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) či práci s komunikačními moduly (GSM, LTE, LoRA).&lt;br /&gt;
&lt;br /&gt;
Za tímto účelem je připraveno pole '''text[]'''. Detailní popis je [[SDS-C:_popis_jazyka#Pole_text.5B.5D|zde]].&lt;br /&gt;
&lt;br /&gt;
SDS-C je omezený programovací jazyk z hlediska &amp;quot;práce s textem&amp;quot;. Pokud potřebujete intenzivně s textem pracovat, použijte zařízení SDS které má FULL-C jazyk.&lt;br /&gt;
&lt;br /&gt;
I přes omezení SDS-C je možné připojit různé komunikační moduly (GSM, LTE, LoRA), které komunikují prostřednictvím textových příkazů (viz vzorové programy).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pole share[] ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Od verze SDS-C č. '''08''' je možné použít pole '''share[]''', určené primárně pro sdílení textové informace mezi SDS-C programem a webovým rozhraním (tedy jako [[SDS-C:_sharing|sdílené proměnné]]).&lt;br /&gt;
&lt;br /&gt;
Práce s polem share[] je prakticky zcela shodná jako práce s polem text[]. Prakticky tak získává programátor dvě nezávislé pole pro uchování textu. Nicméně, některé SDS-C funkce vyhrazeně fungují jen s polem text[], ale to je vždy uvedeno v jejich popisu. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vyhrazené funkce ==&lt;br /&gt;
&lt;br /&gt;
Seznam konkrétních zabudovaných '''funkcí''' naleznete na [[SDS-C: sdsc sysf|jiné stránce]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Jednotné proměnné (pole sys[]) pro všechny výrobky řady SDS ==&lt;br /&gt;
&lt;br /&gt;
'''STAV SYSTÉMU'''&lt;br /&gt;
&lt;br /&gt;
 sys[0]   01 i R   &amp;quot;pair code&amp;quot; firmware (nastaven výrobcem napevno: identifikátor vázanosti firmware na hardware)&lt;br /&gt;
                    - lze využít pro rozeznání typu zařízení SDS, na kterém je spuštěn SDS-C program&lt;br /&gt;
 &lt;br /&gt;
 sys[1]   01 i R   počet přihlášených uživatelů do webového rozhraní (v okamžiku čtení této proměnné)&lt;br /&gt;
 &lt;br /&gt;
 sys[2]   01 s R   text SNMP-sysLocation, nastaveno ve webové administraci&lt;br /&gt;
 &lt;br /&gt;
 sys[3]   01 i R   hodnota '''UpTime10''' (doba běhu zařízení)&lt;br /&gt;
                    - počítá se od nuly (0) od každého zapnutí zařízení&lt;br /&gt;
                    - pouze 31 bitové počítadlo&lt;br /&gt;
                      (SDS si pro sebe interně počítá UpTime10 jako 32bit, nicméně&lt;br /&gt;
                       nejvyšší bit je odmaskován před předáním hodnoty do SDS-C programu)&lt;br /&gt;
                    - platné hodnoty: 0 až 2147483647 (včetně)&lt;br /&gt;
                    - po překročení 2147483647 (zde odpovídá up-time 248 dnů) začíná hodnota opět na nule&lt;br /&gt;
                    - jeden krok (zvýšení o jedničku) této hodnoty UpTime10 odpovídá právě '''10 msec''' uplynulému času &lt;br /&gt;
 &lt;br /&gt;
 sys[4]   01 i R   hodnota '''LOCAL''' času (UNIX čas, v sekundách)&lt;br /&gt;
                    - jedná se o lokální (eventuálně posunutý) čas, synchronizovaný se NTP serverem&lt;br /&gt;
                    - je zde už předem započítán GMT offset sys[26] (ten lze nastavit ve webovém rozhraní)&lt;br /&gt;
                    - je zde aplikován automatický posun letního času (je-li to povoleno ve webovém rozhraní)&lt;br /&gt;
                    - poskytnuto je pouze 31 bitové číslo (bude platné až do 19. leden 2038 včetně, &lt;br /&gt;
                      pak hodnota roluje na nulu - nejvyšší bit je odmaskován před předáním do SDS-C programu)&lt;br /&gt;
                    - platné hodnoty: 0 až 2147483647 (včetně)&lt;br /&gt;
 &lt;br /&gt;
 sys[5]   01 i R   rozpad LOCAL času: den (1 až 31)&lt;br /&gt;
 sys[6]   01 i R   rozpad LOCAL času: měsíc (1 až 12)&lt;br /&gt;
 sys[7]   01 i R   rozpad LOCAL času: rok (2011 a dále)&lt;br /&gt;
 sys[8]   01 i R   rozpad LOCAL času: hodina (0 až 23)&lt;br /&gt;
 sys[9]   01 i R   rozpad LOCAL času: minuta (0 až 59)&lt;br /&gt;
 sys[10]  01 i R   rozpad LOCAL času: sekunda (0 až 59)&lt;br /&gt;
 sys[11]  01 i R   rozpad LOCAL času: číslo dne v týdnu - počet dní od Neděle (0 až 6)&lt;br /&gt;
&lt;br /&gt;
'''Upozornění''': hodnota LOCAL času je platná až po úspěšném získání informací z NTP serveru. Po zapnutí (restartu) zařízení je NTP čas (sys[38], sys[4]) nastaven na nulu. Čas je automaticky v SDS aktualizován co jednu sekundu pomocí vnitřních hodin v SDS, a dále je hodnota času pravidelně (v delším intervalu) upřesněna dotazem na NTP server.&lt;br /&gt;
&lt;br /&gt;
V případě, že není zapnuta automatika DST (letní čas) a GMT offset je nastaven na nulu, tak je hodnota LOCAL času identická s NTP časem (UTC). Jakmile se ale nastaví offset nebo aktivuje posun letního času, už jsou tyto hodnoty odlišné (NTP je UTC, a LOCAL je místní (posunutý) čas). Pro různé použití je potřeba různých časů (často je potřeba UTC pro časové známkování údajů, a zase někdy je vhodný LOCAL pro interakci s uživatelem a pro různé výpisy).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ethernet, Internet ==&lt;br /&gt;
&lt;br /&gt;
 sys[12]  01 i R   IP[0] adresa zařízení (nastaveno ve webové administraci)&lt;br /&gt;
 sys[13]  01 i R   IP[1] adresa zařízení&lt;br /&gt;
 sys[14]  01 i R   IP[2] adresa zařízení&lt;br /&gt;
 sys[15]  01 i R   IP[3] adresa zařízení&lt;br /&gt;
 &lt;br /&gt;
 sys[16]  01 i R   GW_IP[0] adresa brány (nastaveno ve webové administraci)&lt;br /&gt;
 sys[17]  01 i R   GW_IP[1] adresa brány&lt;br /&gt;
 sys[18]  01 i R   GW_IP[2] adresa brány&lt;br /&gt;
 sys[19]  01 i R   GW_IP[3] adresa brány&lt;br /&gt;
 &lt;br /&gt;
 sys[20]  01 i R   NETMASK[0] síťová maska (nastaveno ve webové administraci)&lt;br /&gt;
 sys[21]  01 i R   NETMASK[1] síťová maska&lt;br /&gt;
 sys[22]  01 i R   NETMASK[2] síťová maska&lt;br /&gt;
 sys[23]  01 i R   NETMASK[3] síťová maska&lt;br /&gt;
&lt;br /&gt;
 sys[24]  01 i R   stav rozhraní Ethernet (je spuštěno?)&lt;br /&gt;
                    == 0 : komunikace přes Ethernet není k dispozici (odpojený kabel, vypnutá protistrana nebo switch, atd.)&lt;br /&gt;
                    != 0 : Ethernetová komunikace je funkční (LINK OK)&lt;br /&gt;
 &lt;br /&gt;
 sys[25]  01 i R   rychlost připojení k síti Ethernet (hodnoty: 0, 10, 100)&lt;br /&gt;
                    == 0   : neznámá rychlost (není k dispozici Ethernet)&lt;br /&gt;
                    == 10  : 10 MBit per sec&lt;br /&gt;
                    == 100 : 100 MBit per sec&lt;br /&gt;
&lt;br /&gt;
 sys[26]  04 i RW  hodnota GMT offsetu pro NTP (nastaveno v administraci ve webovém rozhraní)&lt;br /&gt;
                    - platné hodnoty: -11 až 11 (včetně) (údaj v hodinách)&lt;br /&gt;
                    - zápis je možný, ale změněná hodnota (ze SDS-C) není uložena do pevné paměti &lt;br /&gt;
                      (po resetu zařízení se vráti na poslední uloženou hodnotu)&lt;br /&gt;
&lt;br /&gt;
 sys[27]  06 i R   platnost přidělené IP adresy zařízení SDS&lt;br /&gt;
                    == 0 : zařízení SDS nemá přidělenou platnou IP adresu (typický důvod: čeká se na DHCP)&lt;br /&gt;
                    != 0 : zařízení SDS má přidělenou platnou IP adresu a může komunikovat přes Ethernet&lt;br /&gt;
 &lt;br /&gt;
 sys[28]  06 i R   poslední okamžik kdy byla změněna IP adresa,&lt;br /&gt;
                   buď ručně z webového rozhraní (administrace) nebo DHCP serverem (je-li DHCP zapnuto)&lt;br /&gt;
                    - údaj odpovídá stavu UpTime10 (1 krok = 10 msec) v daný okamžik&lt;br /&gt;
 &lt;br /&gt;
 sys[29]  06 i R   DHCP: stav (lze použít pro kontrolu správné funkce DHCP klienta v SDS)&lt;br /&gt;
                    == 0 : v klidu (nic se neprovádí, nebo DHCP je vypnuté)&lt;br /&gt;
                    == 1 : odesláno DHCP DISCOVER&lt;br /&gt;
                    == 2 : obdrženo DHCP OFFER&lt;br /&gt;
                    == 3 : odesláno DHCP REQUEST&lt;br /&gt;
                    == 4 : obdrženo DHCP ACK&lt;br /&gt;
                    == 5 : IP adresa je přidělena (BOUND)&lt;br /&gt;
                    == 6,7,8,9,10,11 : zpracování DHCP RENEW&lt;br /&gt;
 &lt;br /&gt;
 sys[30]  06 i R   aktuální hodnota &amp;quot;DHCP Lease Time&amp;quot;&lt;br /&gt;
                    - hodnota je nastavena v okamžiku DHCP BOUND (při přidělení (nové) IP adresy)&lt;br /&gt;
                    - hodnota je každou 1 sec snížena o jednotku (když dojde na nulu, klient začne obnovovat IP adresu)&lt;br /&gt;
                    - údaj je uveden v jednotkách [sec]&lt;br /&gt;
&lt;br /&gt;
 sys[31]  04 i R   MAC[0] (celá MAC je nastavena ve webovém rozhraní)&lt;br /&gt;
 sys[32]  04 i R   MAC[1] &lt;br /&gt;
 sys[33]  04 i R   MAC[2] &lt;br /&gt;
 sys[34]  04 i R   MAC[3] &lt;br /&gt;
 sys[35]  04 i R   MAC[4] &lt;br /&gt;
 sys[36]  04 i R   MAC[5] (vždy je vyplněno dolních 8 bitů)&lt;br /&gt;
&lt;br /&gt;
 sys[37]  06 i R   NTP Client Status (synchronizace času)&lt;br /&gt;
                    == 0 : nesynchronizováno&lt;br /&gt;
                    == 1 : úspěšně přijal paket od NTP Serveru&lt;br /&gt;
               W   zápis hodnoty 10 (přesně a pouze: 10) do tohoto indexu vyvolá nucený NTP dotaz &lt;br /&gt;
                   (dotaz se odešle za 10sec od takovéhoto zápisu)&lt;br /&gt;
 &lt;br /&gt;
 sys[38]  07 i R   čistý UTC čas - v sekundách (UNIX Epoch čas)&lt;br /&gt;
                    - není zde aplikován offset, ani automatika letního času&lt;br /&gt;
                    - přímá hodnota získaná z NTP serveru (tj. jeho odpověď), &lt;br /&gt;
                      uvnitř SDS je sice udržována jako 32bit, &lt;br /&gt;
                      ale do SDS-C programu je hodnota předána jen jako 31bit číslo (nejvyšší 32.bit je odmaskován).&lt;br /&gt;
 &lt;br /&gt;
 sys[39]  07 i R   stav automatiky přepínání Letního Času&lt;br /&gt;
                    == 0 : automatika zakázána, lokální čas není ovlivněn&lt;br /&gt;
                    == 1 : automatika povolena, ale v současné době (podle NTP UTC času) je letní čas neaktivní (tzn. je &amp;quot;SEČ&amp;quot;).&lt;br /&gt;
                    == 2 : automatika povolena, a v současné době (podle NTP UTC času) je letní čas aktivní (tzn. je &amp;quot;SELČ&amp;quot;).&lt;br /&gt;
                           (tzn. do sys[4] je připočten nejen offset ze sys[26], ale teď také plus 1 hodina kvůli SELČ).&lt;br /&gt;
          09 i W   pouze pro případ vypnutého NTP: ruční ovládání automatiky (tzn. povolena nebo nepovolena) (SELČ pak automatika sama rozhodne, je-li povolena)&lt;br /&gt;
                    zápis 0 : vypnout automatiku (nebude pracovat = nebude aplikoval posun pro SELČ pro nastavený rozsah v roce), sys[39] pak vrátí 0 při čtení&lt;br /&gt;
                    zapis 3 : zapnout automatiku (automatika aplikuje posun pro SELČ podle toho jaký je aktuální čas a datum), sys[39] pak vrátí 1 nebo 2 dle stavu  &lt;br /&gt;
 &lt;br /&gt;
 sys[138] 09 i R   stav RTC (záloha času - pouze SDS se záložní baterií)&lt;br /&gt;
                   zatím stále 0, tzn. nepoužito, další obsah se chystá (nový FW)&lt;br /&gt;
 &lt;br /&gt;
 sys[139] 09 i R   vyhrazeno&lt;br /&gt;
&lt;br /&gt;
Princip funkce automatiky letního času je popsán jinde na této wiki. Funkce automatiky je samozřejmě volitelná (viz: ruční nastavení ve webovém rozhraní).&lt;br /&gt;
&lt;br /&gt;
 sys[40] až sys[44]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Provozní údaje ==&lt;br /&gt;
&lt;br /&gt;
 sys[45]  06 i R   relativní čas v milisekundách, počítaný od zapnutí zařízení (tj. UpTime1)&lt;br /&gt;
                    - po resetu zařízení začíná vždy počítat od nuly&lt;br /&gt;
                    - každou milisekundu se zvýší o 1 (narozdíl od UpTime10);&lt;br /&gt;
                      tzn. toto je velmi podobná hodnota jako UpTime, ale je v jiných jednotkách!&lt;br /&gt;
                    - pro sys[45] je k dispozici 31 bitů,&lt;br /&gt;
                      takže po 2147483648 msec dojde k vynulování sys[45] a počítá se opět od nuly nahoru&lt;br /&gt;
                      (pozn.: SDS si interně udržuje hodnotu jako 32bitů, ale do SDS-C programu se předává jen 31bitů).&lt;br /&gt;
&lt;br /&gt;
 sys[46]  06 i R   &amp;quot;surová&amp;quot; (raw) hodnota teploty SoC chipu (není to přímo teplota v degC, ale speciální digitální hodnota),&lt;br /&gt;
                   význam hodnot závisí na typu konkrétního zařízení SDS. &lt;br /&gt;
                   Je to dáno způsobem měření této teploty, a převod na stupně Celsia je jednoduchý, přes vzorec.&lt;br /&gt;
 &lt;br /&gt;
 SDS MICRO (LM), MACRO (LM), UPS, IO6 (LM): &lt;br /&gt;
  Vzorec pro přepočet na degC je [ teplota_SoC_v_degC = ((5*(59-30*((3/1024)*sys[46])))/2) ]&lt;br /&gt;
 &lt;br /&gt;
 SDS TTCPRO, MINI, MACRO-ST, MICRO-ST, IO6-ST: &lt;br /&gt;
  Vzorec pro přepočet na degC je [ teplota_SoC_v_degC = (((((sys[46]/4096)*3.3)-0.76)/0.0025)+25) ]&lt;br /&gt;
&lt;br /&gt;
Teplota SoC je pouze orientační, a je měřena s přesností +/- 5 degC.&lt;br /&gt;
&lt;br /&gt;
 sys[137] 09 i R   POUZE VARIANTY &amp;quot;ST&amp;quot; - počet provedených cyklů procesoru (provedených CPU instrukcí) od zapnutí/restartu &lt;br /&gt;
                   (při přetečení 2^31 počítá opět od nuly, pořád dokola)&lt;br /&gt;
&lt;br /&gt;
Hodnota v indexu 137 je nejjemnější možný &amp;quot;časovač&amp;quot;, dostupný pro program. Délka kroku jednotky odpovídá frekvenci jádra (ta je různá pro jednotlivá SDS, pro řadu ST typicky 120MHz, tedy 1 krok je 8.3nsec). &lt;br /&gt;
Tento index vyžaduje aktuální FW (11/2022 nebo novější).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rozhraní sériové komunikace ==&lt;br /&gt;
&lt;br /&gt;
SDS-C poskytuje přístup k sériovému rozhraní COM1 a COM6. Pouze rozhraní COM1 je také současně přístupno přes převodník Eth/UART (VCP). Program v SDS-C může přistupovat jak ke COM1, tak ke COM6.&lt;br /&gt;
&lt;br /&gt;
Pomocí SDS-C lze zapisovat do sériového rozhraní, a číst data ze sériového rozhraní. Data, přicházející z venku do zařízení SDS, jsou ukládána do příslušného bufferu (RX FIFO), takže lze pomocí SDS-C programu číst i pomaleji, než je rychlost příchozích dat. Buffery jsou malé (zhruba 1kB), proto je potřeba data zpracovávat rychle a včas, ať nedojde k jejich ztrátě.&lt;br /&gt;
&lt;br /&gt;
Poznámka: čtení z UART RX bufferů je k dispozci jen od verze SDS-C č. '''04''' (včetně) a výše. &lt;br /&gt;
Poznámka: UART buffery (pro obě sériové rozhraní) jsou neustále aktivní a příjem dat z UARTu probíhá po celou dobu zapnutí zařízení.&lt;br /&gt;
&lt;br /&gt;
Rozhraní COM1:&lt;br /&gt;
&lt;br /&gt;
 sys[48]  04 i R   informace, je-li přijímací (RX) buffer rozhraní UART-COM1 prázdný. Možné hodnoty:&lt;br /&gt;
                    == 0 : v RX bufferu je jeden popř. více znaků, lze je přečíst (buffer není prázdný)&lt;br /&gt;
                    == 1 : RX buffer je '''prázdný''' (nebyl přijat znak od posledního vyprázdnění bufferu)&lt;br /&gt;
 &lt;br /&gt;
 sys[49]  04 i R   čtení (vyjmutí) znaku z přijímacího (RX) bufferu rozhraní UART-COM1&lt;br /&gt;
                    - čtením tohoto sys[49] se vyjme právě jeden znak (je-li v bufferu nějaký k dispozici), &lt;br /&gt;
                      takže si dejte '''pozor''' protože po vyjmutí už tento znak v bufferu samozřejmě není ! &lt;br /&gt;
                      (Toto může způsobit nezkušenému programátorovi potíže). &lt;br /&gt;
                      Proto je vhodnější čtení ze sys[49] provést vždy jednou do vlastní proměnné, &lt;br /&gt;
                      a s tou pak dále dle libosti pracovat.&lt;br /&gt;
                   Možné hodnoty: &lt;br /&gt;
                    == 0 až 255 : hodnota právě vyjmutého znaku z RX bufferu (znak přijatý UARTem)&lt;br /&gt;
                    == -1       : v bufferu není jakýkoliv znak k dispozici (prázdný buffer)&lt;br /&gt;
&lt;br /&gt;
Poznámka: UART-COM1 buffer je '''vymazán vždy tehdy''', když se připojí TCP klient k převodníku Eth/UART - pozor!&lt;br /&gt;
&lt;br /&gt;
 sys[50]  02 i R   je připojen klient (Ethernet) k převodníku Eth/UART ?&lt;br /&gt;
                    == 0 : není připojen klient&lt;br /&gt;
                    != 0 : je připojen klient (přes TELNET port)&lt;br /&gt;
 sys[51]  02 i R   rychlost [bps] rozhraní UART - COM1 (viz převodník Eth/UART)&lt;br /&gt;
 sys[52]  02 i R   počet datových bitů rozhraní UART - COM1 (platné hodnoty - podle typu SDS: 5,6,7,8)&lt;br /&gt;
 sys[53]  02 i R   počet stop bitů rozhraní UART - COM1 (platné hodnoty - podle typu SDS: 1,2)&lt;br /&gt;
 sys[54]  02 i R   nastavení paritního bitu rozhraní UART - COM1 (platné hodnoty - podle typu SDS: 0,1,2,3,4,5)&lt;br /&gt;
&lt;br /&gt;
Poznámka: parametry sériového rozhraní UART COM1 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í).&lt;br /&gt;
&lt;br /&gt;
Rozhraní COM6:&lt;br /&gt;
&lt;br /&gt;
 sys[55]  04 i R   informace, je-li přijímací (RX) buffer rozhraní UART-COM6 prázdný. Možné hodnoty:&lt;br /&gt;
                    == 0 : v RX bufferu je jeden popř. více znaků, lze je přečíst (buffer není prázdný)&lt;br /&gt;
                    == 1 : RX buffer je '''prázdný''' (nebyl přijat znak od posledního vyprázdnění bufferu)&lt;br /&gt;
 &lt;br /&gt;
 sys[56]  04 i R   čtení (vyjmutí) znaku z přijímacího (RX) bufferu rozhraní UART-COM6&lt;br /&gt;
                    - čtením tohoto sys[56] se vyjme právě jeden znak (je-li v bufferu nějaký k dispozici)&lt;br /&gt;
                   Možné hodnoty: &lt;br /&gt;
                    == 0 až 255 : hodnota právě vyjmutého znaku z RX bufferu (znak přijatý UARTem)&lt;br /&gt;
                    == -1       : v bufferu není jakýkoliv znak k dispozici (prázdný buffer)&lt;br /&gt;
&lt;br /&gt;
 sys[57]  02 i R   rychlost [bps] rozhraní UART - COM6 &lt;br /&gt;
 sys[58]  02 i R   počet datových bitů rozhraní UART - COM6 (platné hodnoty - podle typu SDS: 5,6,7,8,9)&lt;br /&gt;
 sys[59]  02 i R   počet stop bitů rozhraní UART - COM6 (platné hodnoty - podle typu SDS: 1,2)&lt;br /&gt;
 sys[60]  02 i R   nastavení paritního bitu rozhraní UART - COM6 (platné hodnoty - podle typu SDS: 0,1,2,3,4,5)&lt;br /&gt;
&lt;br /&gt;
Rozhraní UART - COM6 je k dispozici jen na SDS-MINI, SDS-MICRO-ST a SDS-MACRO-ST, a je přístupné jen z SDS-C programu.&lt;br /&gt;
&lt;br /&gt;
Doplňující statistiky (počty rx/tx bajtů atd.) jsou k dispozici na indexu 2800+, viz dále na této stránce (dostupnost těchto údajů je závislá na instalovaném aktuálním FW ve vašem SDS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Generátor náhodných čísel ==&lt;br /&gt;
&lt;br /&gt;
 sys[61]  06 i R   generátor náhodných čísel&lt;br /&gt;
                    - při každém přečtení sys[61] je poskytnuto náhodné číslo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Výsledek převodu textu na číslo ==&lt;br /&gt;
&lt;br /&gt;
Pro převod textu (z určené pozice pole ''text'' či ''share'') na číslo se používá funkce SDS-C: ''atoi''. Aby bylo možné výsledek převodu získat, musíte si jej přečíst ze ''sys[62]''.&lt;br /&gt;
&lt;br /&gt;
 sys[62]  06 i RW  výsledek převodu provedeného funkcí '''atoi(text[index]);'''&lt;br /&gt;
&lt;br /&gt;
Pro více informací se podívejte přímo na návod k této funkci.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nastavení rychlosti provádění SDS-C programu ==&lt;br /&gt;
&lt;br /&gt;
SDS-C program může ovlivnit rychlost svého vykonávání. Buď se každá instrukce provede právě s minimálním krokem co 1 msec, nebo se dá tato (často žádoucí) vlastnost snadno vypnout. Pozor, hodnota 1 msec není vždy garantována, např. při zavolání funkce která pracuje s pomalou periférií dojde k čekání, dokud se požadovaná funkce nedokončí.&lt;br /&gt;
&lt;br /&gt;
 sys[63]  04 i RW  vypnutí rychlostního omezení běhu programu, nastavte na:&lt;br /&gt;
                    == 0   : (výchozí hodnota po spuštění programu) - jeden celý příkaz se provede '''co 1 msec'''&lt;br /&gt;
                    == 128 : program je prováděn s co největší rychlostí (bez zarovnávacího 1 msec kroku) &lt;br /&gt;
                             ( pozor ale na realizaci čekacích smyček, pak lze použít jen k tomu určené SDS-C funkce nebo sys[64] )&lt;br /&gt;
&lt;br /&gt;
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 programu je vykonán právě co 1 msec).&lt;br /&gt;
&lt;br /&gt;
Tohoto faktu (krok 1 msec) některé programy využívají k realizaci čekacích smyček, když se předpokládá jeden vykonaný příkaz za 1 msec. Není to však vhodné, protože SDS nedává garanci že se vždy bude jednat přesně o 1 msec (může docházet k náhodnému zdržení až o několik msec, v záležitosti na ostatní činnost systému). Pokud však vypnete toto rychlostní omezení, tak takové případné čekací smyčky přestanou plnit svou funkci (prakticky skončí mnohem dříve): proto ve svých programech používejte pouze k realizaci &amp;quot;čekání&amp;quot; pouze k tomu určené funkce, nebo případně sys[64] nebo některý z UpTime indexů či sys[137] atd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Časování ==&lt;br /&gt;
&lt;br /&gt;
Pro přesnější časování programu, popř. pro spuštění nějaké události po přesně daném intervalu, lze s výhodou využít následující proměnnou:&lt;br /&gt;
&lt;br /&gt;
 sys[64]  01 i RW  sekundový odpočítávač &lt;br /&gt;
                    - zapište libovolné kladné číslo, a systém každou vteřinu toto číslo sníží o 1, &lt;br /&gt;
                      až do nuly, kde v sys[64] zůstane nula (dokud tam zase něco nezapíšete)&lt;br /&gt;
                    - nejvyšší možná použitelná hodnota: (31-bitů) 2147483647 secs (včetně)&lt;br /&gt;
&lt;br /&gt;
Samozřejmě lze využít i jiné způsoby, ale tento je k tomu explicitně určen, vyhovuje-li hrubý krok 1 sekunda. Pro jemnější časování jsou pak vhodnější indexy s UpTime hodnotou, nebo sys[137] pro nejvíce jemné čekání - tyto indexy ale nemají funkci odpočítávání (jsou jen pro čtení), takže hlídání obsahu si už musíte řešit sami ve svém programu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OSI7 funkce ==&lt;br /&gt;
&lt;br /&gt;
OSI7 funkce jsou určeny pro komunikaci mezi SDS a vnějším světem připojeným přes Ethernet (např. se servery v Internetu).&lt;br /&gt;
&lt;br /&gt;
Všechny funkce OSI7 poskytují průběžný stav své činnosti:&lt;br /&gt;
 sys[65]  01 i R   status code - hlášení průběhu, úspěšnosti, nebo chyby OSI7 funkcí (DNS, HTTP-GET, email, ...)&lt;br /&gt;
                    - význam hodnot viz [[OSI7_status_code|popis zde]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
 sys[66]  01 i R   bajt IP[0] - vystup DNS resolveru, funkce ''dns_resolv(&amp;quot;dotazovanadomena.cz&amp;quot;);''&lt;br /&gt;
 sys[67]  01 i R   bajt IP[1] - vystup DNS resolveru, funkce ''dns_resolv(&amp;quot;dotazovanadomena.cz&amp;quot;);''&lt;br /&gt;
 sys[68]  01 i R   bajt IP[2] - vystup DNS resolveru, funkce ''dns_resolv(&amp;quot;dotazovanadomena.cz&amp;quot;);''&lt;br /&gt;
 sys[69]  01 i R   bajt IP[3] - vystup DNS resolveru, funkce ''dns_resolv(&amp;quot;dotazovanadomena.cz&amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
Pro funkci DNS resolveru je potřeba provést konfiguraci (přes webové rozhraní).&lt;br /&gt;
 sys[70]  01 i R   bajt DNS_R_IP[0] - adresa samotného DNS resolveru (DNS server)&lt;br /&gt;
 sys[71]  01 i R   bajt DNS_R_IP[1] - adresa samotného DNS resolveru&lt;br /&gt;
 sys[72]  01 i R   bajt DNS_R_IP[2] - adresa samotného DNS resolveru&lt;br /&gt;
 sys[73]  01 i R   bajt DNS_R_IP[3] - adresa samotného DNS resolveru&lt;br /&gt;
&lt;br /&gt;
 sys[74]  01 s R   text, reserved (v této verzi nepoužito)&lt;br /&gt;
&lt;br /&gt;
Rozšířená funkcionalita pro DNS resolver (pouze ve FW od 11/2025):&lt;br /&gt;
&lt;br /&gt;
 sys[303]  09 i R   DNS RESOLV - (read:) actual TTL live value (= 1..MAX, in seconds) for the very last resolved DNS name (or 0 = no resolv done or finished yet)&lt;br /&gt;
 sys[303]  09 i W   DNS RESOLV - write value 0xD65 (3429dec) to clear the DNS cache&lt;br /&gt;
 sys[304]  09 i R   DNS RESOLV - (read:) timestamp (UTC) of the latest DNS server response (packet) as requested by dns_resolv() function (if 0 then no response received, or cache has expired)&lt;br /&gt;
 sys[305]  09 i R   DNS RESOLV - (read:) get the last set hard TTL limit (0 = invalid (will use 1209600 as default), otherwise 1..MAX = time in seconds)&lt;br /&gt;
 sys[305]  09 i W   DNS RESOLV - set the hard TTL value limit (in seconds)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HTTP GET:&lt;br /&gt;
&lt;br /&gt;
 sys[75]  01 i R   návratový kód webového serveru pro HTTP GET (odpověď z webového serveru)&lt;br /&gt;
                    - nastaveno po dokončení práce funkce '''http_get()'''&lt;br /&gt;
                    - např. číslo '''200''' pro 'OK', '''404''' pro 'not found', a tak dále.&lt;br /&gt;
 &lt;br /&gt;
 sys[76]  03 i RW  číslo portu který chcete aby HTTP klient použil (výchozí hodnota po startu je '''80''')&lt;br /&gt;
                    - '''pozn.''' hodnota tohoto sys[76] se přebere v okamžiku zavolání '''http_get''',&lt;br /&gt;
                      pozdější zápisy mají vliv až zase v okamžiku dalšího zavolání '''http_get'''.&lt;br /&gt;
 &lt;br /&gt;
 sys[77]  04 i RW  ukládat data přijatá z HTTP serveru po obdržení odpovědi na HTTP GET požadavek&lt;br /&gt;
                   do pole ram[]. Tato funkce je výhodná pro okamžité řízení SDS-C programu. &lt;br /&gt;
                   Nastavte na:&lt;br /&gt;
 &lt;br /&gt;
                    == 0 : jakékoliv přijaté data jsou '''zahozena''', &lt;br /&gt;
                           neuloží se (nedojde ke změně obsahu ram[] nebo text[])&lt;br /&gt;
 &lt;br /&gt;
                    == 1 : prvních sys[78] bajtů odpovědi je vloženo do pole ram[] v rozsahu ram[1] až ram[sys[78]]&lt;br /&gt;
                           a do ram[0] je uložena délka odpovědi (tj. hodnota: -1, 0, 1, 2, ... až sys[78]).&lt;br /&gt;
                           (tzn. původní obsah této oblasti pole ram[] je přepsán)&lt;br /&gt;
                           (pokud bude obdržen znak 0x00 dříve, než se zapíše sys[78] bajtů do ram[], &lt;br /&gt;
                            bude zápis přerušen a přijatý 0x00 nebude uložen)&lt;br /&gt;
 &lt;br /&gt;
                    == 2 : prvních sys[78] bajtů odpovědi je vloženo do pole text[] v rozsahu text[0] až text[sys[78]]&lt;br /&gt;
                           a do ram[0] je uložena délka odpovědi (tj. hodnota: -1, 0, 1, 2, ... až sys[78]).&lt;br /&gt;
                           (tzn. původní obsah této oblasti pole text[] a položka ram[0] je přepsán)&lt;br /&gt;
                           (pokud bude obdržen znak 0x00 dříve, než se zapíše sys[78] bajtů do ram[], &lt;br /&gt;
                            bude zápis přerušen a přijatý 0x00 nebude uložen)&lt;br /&gt;
 &lt;br /&gt;
                   Hodnota do ram[0] je vždy zapsaná, ať je sys[77] jakékoliv. Počítejte s tím ve svém programu !&lt;br /&gt;
 &lt;br /&gt;
 sys[78]  04 i RW  počet bajtů, které CHCETE uložit do ram[] nebo text[] po přijetí HTTP GET odpovědi&lt;br /&gt;
                    - výchozí hodnota je '''32''' (tzn. uloží se 32 znaků + samostatně délka do ram[0])&lt;br /&gt;
                    - maximální hodnota je omezena velikostí pole ram[] nebo text[]&lt;br /&gt;
                    - pozor! pokud zapíšete '''0''', budou všechna data zahozena, &lt;br /&gt;
                      ale i v takovém případě dojde k přepisu ram[0] (viz výše)&lt;br /&gt;
&lt;br /&gt;
 sys[79] až sys[80]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
Pozor, v případě nenulového sys[77] HTTP klient čeká tak dlouho, dokud nedostane všech sys[78] bajtů odpovědi z protistrany. To je častou příčinou &amp;quot;problémů&amp;quot; kdy protistrana neodpoví dostatečně dlouhou odpovědí, a klient má stále otevřené spojení a stále čeká a čeká... až dojde na timeout. Což je pak potřeba důsledně a správně ošetřit ve vašem SDS-C programu.&lt;br /&gt;
&lt;br /&gt;
Pro funkci SMTP je potřeba provést konfiguraci (přes webové rozhraní):&lt;br /&gt;
 sys[81]  01 i R   bajt SMTP_S_IP[0] - adresa SMTP serveru (je použita pro funkci '''smtp_send()''')&lt;br /&gt;
 sys[82]  01 i R   bajt SMTP_S_IP[1] - adresa SMTP serveru&lt;br /&gt;
 sys[83]  01 i R   bajt SMTP_S_IP[2] - adresa SMTP serveru&lt;br /&gt;
 sys[84]  01 i R   bajt SMTP_S_IP[3] - adresa SMTP serveru&lt;br /&gt;
&lt;br /&gt;
 sys[85] až sys[88]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
Informace z ('''interní''') ICMP PING funkcionality &amp;quot;IP Watchdog&amp;quot; (konfigurace a ovládání přes webové rozhraní SDS) (nemá souvislost s SDS-C funkcí &amp;quot;ping()&amp;quot; ) :&lt;br /&gt;
&lt;br /&gt;
 sys[89]  06 i R   IP-Watchdog: stav&lt;br /&gt;
                    == 0 : není v provozu (neaktivováno ve webovém rozhraní)&lt;br /&gt;
                    != 0 : v provozu (uživatel aktivoval IP-Watchdog ve webovém rozhraní)&lt;br /&gt;
 &lt;br /&gt;
 sys[90]  06 i R   IP-Watchdog: poslední známé RTT&lt;br /&gt;
                    == 0 .. 65533 : hodnota RTT v msec&lt;br /&gt;
                    &amp;gt;= 65534      : hodnota není k dispozici (nebyl obdržen PING response)&lt;br /&gt;
 &lt;br /&gt;
 sys[91]  06 i R   IP-Watchdog: stav výstupu&lt;br /&gt;
                    == 0 : výstup není aktivován&lt;br /&gt;
                    != 0 : výstup je aktivován (nebyl obdržen PING response podle zadaných požadavků)&lt;br /&gt;
&lt;br /&gt;
Informace z (SDC-C) ICMP PING funkce - '''ping()''' :&lt;br /&gt;
&lt;br /&gt;
 sys[92]  04 i R   stav ICMP PING RESPONSE v okamžiku čtení tohoto sys[92] &lt;br /&gt;
                    == 0 : klid (není odeslán paket, nečekám na odpověď), &lt;br /&gt;
                           popř. byla zadána neplatná IP adresa do funkce '''ping()''' a proto se nic neodešle&lt;br /&gt;
                    == 1 : funkce '''ping()''' byla právě zavolána, &lt;br /&gt;
                           takže se teprve chystá provést svou činnost, zatím se neví výsledek odesílání&lt;br /&gt;
                    == 2 : čeká se na odpověď od ARP &lt;br /&gt;
                           (POZOR! Znamená to že místo ICMP PING REQUEST paketu byl odeslán ARP paket, &lt;br /&gt;
                           protože v ARP tabulce nebyl příslušný záznam)&lt;br /&gt;
                    == 4 : poslán ECHO REQUEST, čekám na ECHO REPLY &lt;br /&gt;
                          (požadovaný stav, funkce '''ping()''' funguje ok)&lt;br /&gt;
                    == 8 : právě obdržel ECHO REPLY &lt;br /&gt;
                          (byla přijata odpověď od vzdáleného zařízení)&lt;br /&gt;
 &lt;br /&gt;
 sys[93]  04 i R   PING SEQ number &lt;br /&gt;
                    - hodnota je nastavena na '''-1''' dokud není přijata odpověď ICMP PING RESPONSE &lt;br /&gt;
                      na ICMP PING REQUEST odeslaný funkcí '''ping()'''&lt;br /&gt;
 &lt;br /&gt;
 sys[94]  04 i R   Round Trip Time, v milisekundách&lt;br /&gt;
                    - dokud není přijata platná ICMP PING RESPONSE tak je zde hodnota '''0xFFFF'''&lt;br /&gt;
                    - čas je zvyšován po pěti milisekundách (údaj v sys[94] je přímo v msec, např. hodnota 55 znamená 55 msec)&lt;br /&gt;
&lt;br /&gt;
Pozn.: ICMP Quench (32bit) je sestaven z &amp;quot;identifier&amp;quot; (16bit) a z &amp;quot;sequence number&amp;quot;. Pomocí sys[93] můžete nastavit '''číslo sekvence''' na libovolnou hodnotu, přičemž hodnota &amp;quot;identifier&amp;quot; je napevno nastavena na &amp;quot;'''0x0280'''&amp;quot; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Funkce '''send_udp()''':&lt;br /&gt;
&lt;br /&gt;
 sys[95]  06 i R   výsledek posledního volání '''send_udp()'''&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : nic neprovedeno&lt;br /&gt;
                           Hodnota '''0''' je nastavena po startu SDS-C programu&lt;br /&gt;
                    == 1 : právě bylo zahájeno odesílání paketu (provádí se)&lt;br /&gt;
                           nastaveno okamžitě po jakémkoliv zavolání '''send_udp()'''.&lt;br /&gt;
                    == 2 : byl odeslán UDP paket, úspěšně&lt;br /&gt;
                           Hodnota '''2''' je nastavena až v okamžiku úspěšného skutečného odeslání UDP paketu&lt;br /&gt;
                    == 3 : nebyl odeslán UDP paket, protože byl místo toho odeslán ARP dotaz &lt;br /&gt;
                           Hodnota '''3''' je nastavena, pokud není známá MAC pro zadanou IP &lt;br /&gt;
                           a byl tedy místo požadovaného UDP paketu odeslán ARP dotaz&lt;br /&gt;
                    == 4 : zavolali jste funkci '''send_udp()''' dříve, &lt;br /&gt;
                           než byla dokočena činnost předchozího požadavku &lt;br /&gt;
                           (sledujte hodnotu sys[95] a správně ji vyhodnocujte, a nestane se vám to)&lt;br /&gt;
                    == 5 : byly zadány neplatné parametry (neplatná IP, nebo port, nebo index či délka dat)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Funkce '''snmp_send_trap()''':&lt;br /&gt;
&lt;br /&gt;
 sys[96]  06 i R   výsledek posledního volání '''snmp_send_trap()'''&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : odesílání neprobíhá&lt;br /&gt;
                    == 1 : probíhá odesílání, výsledek ještě není znám&lt;br /&gt;
                    == 2 : odeslání se povedlo &lt;br /&gt;
                    == 3 : odeslání se nepovedlo (neplatné parametry při zavolání funkce)&lt;br /&gt;
                    == 4 : odeslání se nepovedlo (není známý ARP záznam pro udanou host IP)&lt;br /&gt;
                    == 5 : odeslání se nepovedlo (právě pracuje (odesílá své data) některá jiná funkce, např. http_get)&lt;br /&gt;
&lt;br /&gt;
 sys[97]           RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zápis textu do pole, Porovnání textů ==&lt;br /&gt;
&lt;br /&gt;
Položka ''sys[98]'' je využita více SDS-C funkcemi, přičemž všechny tyto funkce pracují s polem ''text[]''.&lt;br /&gt;
&lt;br /&gt;
 sys[98]     i R   společné využití viz (1) a (2)&lt;br /&gt;
 &lt;br /&gt;
          06 i R   (1) číslo indexu do pole ''text[]'' kam byla zapsána terminační 0x00,&lt;br /&gt;
                       tj. ukazatel kde byl aktuální konec zápisu do pole ''text[]'', &lt;br /&gt;
                       což je hodnota užitečná pro navázání textu (zápis více textů přesně za sebou), popř. určení délky posledního zápisu:&lt;br /&gt;
                        - kam byla zapsána terminační 0x00 funkcí '''sprintf()'''&lt;br /&gt;
                        - kam byla zapsána terminační 0x00 funkcí '''itoh()''' &lt;br /&gt;
                        - kam byla zapsána terminační 0x00 funkcí '''itoa()''' &lt;br /&gt;
 &lt;br /&gt;
          08 i R   (2) výsledek porovnání textů&lt;br /&gt;
                        - hodnota výsledku zavolání funkce '''textcmp()'''&lt;br /&gt;
                            X &amp;lt; 0  : (texty jsou rozdílné): první nalezený nestejný znak má nižší vlastní hodnotu v poli ''text[]'' než v porovnávaném řetězci&lt;br /&gt;
                            X == 0 : oba texty jsou identické&lt;br /&gt;
                            X &amp;gt; 0  : (texty jsou rozdílné): první nalezený nestejný znak má nižší vlastní hodnotu v porovnávaném řetězci než v poli ''text[]''&lt;br /&gt;
&lt;br /&gt;
Význam &amp;quot;nižší vlastní hodnoty&amp;quot;: znak 'a' má nižší hodnotu než 'b', a to o 1; nebo např. '1' má nižší hodnotu než '4' a to o 3.&lt;br /&gt;
&lt;br /&gt;
Doporučeno je si to vše vyzkoušet (zavolat si každou uvedenout funkci a srovnat hodnotu v sys[98] s obsahem pole ''text[]'').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Uživatelské pozice v pevné paměti == &lt;br /&gt;
&lt;br /&gt;
 sys[99]  05 i RW  předávací proměnná pro čtení a zápis z/do paměti [[SDS-C: DataFlash|dataflash]]&lt;br /&gt;
&lt;br /&gt;
 sys[100] až sys[115]  &lt;br /&gt;
          01 i RW  data uložená do permanentní paměti = co se sem napíše zůstane i po vypnutí zařízení,&lt;br /&gt;
                   můžete si sem uložit co chcete (tj. 16x signed long délky 32bit),&lt;br /&gt;
                    - po speciálním systémovém resetu (RSTD) je vše nastaveno na 0xFFFFFFFF &lt;br /&gt;
                    - pozor! minimalizujte množství zápisů, životnost této paměti není neomezená !&lt;br /&gt;
                    - zápis do těchto sys[] přímo ihned fyzicky zapíše do pevné paměti &lt;br /&gt;
                    - čtení těchto sys[] způsobí přímé fyzické čtení pevné paměti &lt;br /&gt;
&lt;br /&gt;
Paměť EEPROM a paměť DATAFLASH (podle verze HW který máte) je permanentní (NVM), tzn. její obsah zůstane i po vypnutí zařízení nezměněn (na rozdíl od &amp;lt;u&amp;gt;ne&amp;lt;/u&amp;gt;zálohované paměti RAM, do které se přistupuje pomocí pole ''ram[]'').&lt;br /&gt;
&lt;br /&gt;
''' Reserved '''&lt;br /&gt;
&lt;br /&gt;
 sys[116] až sys[136]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proměnné nastavitelné uživatelem z webového rozhraní ==&lt;br /&gt;
&lt;br /&gt;
Pomocí &amp;quot;uživatelských proměnných&amp;quot; (někdy taky &amp;quot;sdílených proměnných&amp;quot;) lze snadno ovlivnit chod vašeho SDS-C programu, ale jen tak, jak si do něj sami naprogramujete - uživatelské proměnné neovlivňují samotný program, ale program je může číst a následně zpracovat.&lt;br /&gt;
&lt;br /&gt;
 sys[140] až sys[149] &lt;br /&gt;
          01 i RW  &amp;quot;uživatelské proměnné&amp;quot;, které můžete měnit &amp;quot;z webu&amp;quot; (správně formulovaným HTTP GET dotazem)&lt;br /&gt;
                   (vždy 32-bit signed integer)&lt;br /&gt;
&lt;br /&gt;
 sys[150] 01 i RW  blokování přístupu k možnosti změny obsahu &amp;quot;uživatelských proměnných&amp;quot; z webu&lt;br /&gt;
                   Nastavení:&lt;br /&gt;
                    == 0 : stránka &amp;quot;control&amp;quot; je přístupná bez hesla, &lt;br /&gt;
                    != 0 : pro přístup je nutno se přihlásit (uživatel je vyzván k příhlášení)&lt;br /&gt;
&lt;br /&gt;
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. Dvě doplňkové proměnné nejsou na výchozí webové stránce dostupné, ale jinak s nimi lze bez jiných omezení pracovat (SDS-C, M2M).&lt;br /&gt;
&lt;br /&gt;
Zápisem do ''sys[150]'' můžete nastavit bezpečnost přístupu k této webové stránce.&lt;br /&gt;
&lt;br /&gt;
Adresa webové stránky je (IP je zde pro příklad): http://192.168.1.250/control (více informací [[SDSC: sharing|zde]]).&lt;br /&gt;
&lt;br /&gt;
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í.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proměnné vstupů a výstupů pro všechny výrobky SDS ==&lt;br /&gt;
&lt;br /&gt;
'''POZOR'''&lt;br /&gt;
&lt;br /&gt;
'''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-LM má pouze dva reléové výstupy, kdežto SDS-MACRO-LM má čtyři.&lt;br /&gt;
&lt;br /&gt;
Vždy máme vyhrazeno 32 indexů pro vstupy a výstupy. Tyto indexy jsou tedy naplánovány pro (budoucí) maximální konfiguraci, ale většina SDS k nim nemá odpovídající HW (např. nemá všech 32 relé). Zápis a čtení do/z indexů, které nemají odpovídající fyzický protějšek, je zakázán (bude SDS ignorován, a hodnota nebude uložena pro pozdější čtení).&lt;br /&gt;
&lt;br /&gt;
'''Pokračování výpisu:'''&lt;br /&gt;
&lt;br /&gt;
 sys[151] až sys[182]  &lt;br /&gt;
          01 i R   stav binárního vstupu OPTO1 až OPTO32 (optočlen)&lt;br /&gt;
                    - hodnota odpovídá fyzickému stavu vstupů (zda-li je nebo není přítomen signál na LED optočlenu)&lt;br /&gt;
                    - pozor, hodnota '''0''' skutečně znamená přítomnost signálu&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : (nulová hodnota)             signál přítomen (napětí na LED = svítící LED v optočlenu)&lt;br /&gt;
                    != 0 : (libovolná nenulová hodnota) bez signálu (LED v optočlenu nesvítí)&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Důležité info:'''&lt;br /&gt;
&lt;br /&gt;
Pokud je (uvnitŘ SDS) na LED vstupního 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). &lt;br /&gt;
&lt;br /&gt;
Pozor - &amp;quot;logika&amp;quot; optických vstupů je tedy na první pohled &amp;quot;obrácená&amp;quot; (avšak dává to přesný smysl). Jen je to potřeba vědět při psaní SDS-C programu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stav SDS-C programu ==&lt;br /&gt;
&lt;br /&gt;
Informace o verzi firmware modulu SDS (vhodné např. pro kontrolu, že uživatel používá nejnovější firmware, tak jak má).&lt;br /&gt;
&lt;br /&gt;
 sys[183] 08 i RW  verze nainstalovaného firmware v SDS modulu&lt;br /&gt;
                   (hex: 0x00DDMMYY, nebo jen 0x00000000 u starších FW)&lt;br /&gt;
&lt;br /&gt;
Příklad: FW v SDS je (pro příklad) ze dne 24.12.2018, takže v ''sys[183]'' bude zakódováno jako 0x00180C12, tedy hodnoty 24dec 12dec 18dec zapsány jako 0x18 0x0C 0x12, což je 0x18C0C12 což je 1575954dec.&lt;br /&gt;
&lt;br /&gt;
Informace o způsobu, jakým byl aktuální běh SDS-C programu spuštěn:&lt;br /&gt;
&lt;br /&gt;
 sys[184] 08 i RW  způsob spuštění SDS-C programu&lt;br /&gt;
                   == 0 : bez informace&lt;br /&gt;
                   == 1 : standardní spuštění SDS-C programu po běžném startu zařízení SDS&lt;br /&gt;
                   == 2 : program SDS-C byl (znovu) spuštěn na základě restartu od watchdogu (byl timeout)&lt;br /&gt;
                   == 4 : program SDS-C byl čerstvě nahrán z EXE aplikace&lt;br /&gt;
&lt;br /&gt;
Stav SDS-C watchdogu:&lt;br /&gt;
&lt;br /&gt;
 sys[185] 08 i R   hodnota odpočítávání SDS-C watchdogu v msec&lt;br /&gt;
                   == -1 : wdg není aktivní&lt;br /&gt;
                   ==  0 : odpočet vypršel, dojde k resetu SDS-C programu&lt;br /&gt;
                   1..2147482000 : aktuální hodnota odpočtu (snižuje se o 1 každou milisekundu)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pulse-Width Modulation výstupy ==&lt;br /&gt;
&lt;br /&gt;
Některá SDS mají pouze jeden PWM výstup (PWM1), některá mají čtyři výstupy (rozdělené po dvou do dvou skupin: PWM1 a PWM2, pak PWM3 a PWM4).&lt;br /&gt;
&lt;br /&gt;
''Příklad pro PWM1:'' Konfigurace PWM1 výstupu nejprve vyžaduje zápis do sys[191], aby se nejprve nastavila provozní základní frekvence generátoru.&lt;br /&gt;
Následně lze PWM1 výstup řídit zápisem do sys[192], kdy se podle zapsané hodnoty nastaví střída PWM výstupu (poměr log0 a log1).&lt;br /&gt;
Alternativně lze zápis do sys[192] nahradit zápisem do sys[193], toto lze kombinovat.&lt;br /&gt;
Zápis do sys[191] je potřeba jen jednou (tedy jen tehdy, když je potřeba PWM1 výstup zapnout nebo vypnout, a kdy je potřeba změnit frekvenci generátoru). &lt;br /&gt;
Zápisy do sys[192] a nebo sys[193] se pak mohou dít samostatně (tj. není potřeba pokaždé opakovat zápis do sys[191]).&lt;br /&gt;
&lt;br /&gt;
Různé typy SDS mají jiný způsob obsluhy PWM generátoru - pozor !&lt;br /&gt;
&lt;br /&gt;
Pozor, pro tyto typy SDS:&lt;br /&gt;
&lt;br /&gt;
 SDS '''UPS''', SDS '''IO6 (LM)''', SDS '''IO6-ST''' a SDS '''TTCPRO''' &lt;br /&gt;
 &lt;br /&gt;
 Tyto výrobky nemají PWM výstup (zápis do příslušných sys[] zde nemá význam).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Podle typu SDS:&lt;br /&gt;
&lt;br /&gt;
 SDS '''MICRO (LM)''' a SDS '''MACRO (LM)''' - pouze jeden PWM výstup (PWM1)&lt;br /&gt;
 &lt;br /&gt;
 sys[191] 01 i RW  &amp;quot;Fm&amp;quot; = frekvence PWM1 výstupu [Hz]&lt;br /&gt;
                    - do SDS-C č. '''03''': specifický omezený rozsah (souvisí se starým firmware)(bylo v rozsahu: 2 až 10000000).&lt;br /&gt;
                    - pozn. od SDS-C č. '''04''': lze nastavit hodnotu od ''24'' (24Hz) do ''49999998'' (49.999998Mhz)&lt;br /&gt;
 &lt;br /&gt;
 sys[192] 01 i RW  poměr nastavení &amp;quot;pulse-width&amp;quot; PWM1 výstupu (výchozí způsob nastavování PWM generátoru)&lt;br /&gt;
                    - do SDS-C č. '''03''': specifický omezený rozsah (souvisí se starým firmware)&lt;br /&gt;
                    - od SDS-C č. '''04''': lze nastavit hodnotu od 0 do &amp;quot;Fm&amp;quot; (např. &amp;quot;Fm / 2&amp;quot; představuje PWM signál 1:1).&lt;br /&gt;
 &lt;br /&gt;
 sys[193] 06 i RW  ruční přímý zápis do registru PWM1 generátoru &lt;br /&gt;
                    - tzn. není předzpracováno jako sys[192], tzn. jedná se o alternativu k sys[192]&lt;br /&gt;
                    - tato hodnota není aktualizována vůči sys[192], ani není archivována&lt;br /&gt;
                    - rozsah: ''0'' až &amp;quot;Fm&amp;quot; (tj. ''0'' až sys[191]).&lt;br /&gt;
&lt;br /&gt;
Doporučení je vždy si ověřit vzájemné závislosti konfigurace PWM výstupu osciloskopem.&lt;br /&gt;
&lt;br /&gt;
Hodnoty Fm větší než 1MHz prakticky nemají smysl, snažte se navrhnout svůj systém tak, aby dokázal pracovat ideálně nejvýše ve stovkách kHz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Další typy SDS - všimněte si rozdílu ''významu'' jednotlivých indexů vůči vůči tabulce výše.&lt;br /&gt;
&lt;br /&gt;
 SDS '''MINI''', SDS '''MICRO-ST''' - pouze jeden PWM výstup (PWM1)&lt;br /&gt;
 SDS '''MACRO-ST''' - čtyři PWM výstupy (zde: první skupina PWM1 a PWM2, druhá skupina je popsána dále)&lt;br /&gt;
 &lt;br /&gt;
 sys[191] 07 i RW  &amp;quot;Fm&amp;quot; = (společná) frekvence pro '''PWM1 a PWM2''' výstupy [Hz]&lt;br /&gt;
                    - zápis hodnot: 1 až 1000000 (odpovídá 1Hz až 1MHz) aktivuje PWM výstupy (lze dále řídit podle sys[192] až sys[195])&lt;br /&gt;
                    - zápis hodnoty 0 vypne PWM1 a PWM2 výstupy (výstup trvale neaktivní) - pro opětovné zapnutí zapište nenulovou hodnotu&lt;br /&gt;
 &lt;br /&gt;
 sys[192] 07 i RW  duty-cycle '''PWM1''' výstupu v procentech (výchozí způsob nastavování PWM generátoru)&lt;br /&gt;
                    - povolené rozmezí 0 až 100 (0% až 100%)&lt;br /&gt;
                    - před zápisem do sys[192] musí být nastavena frekvence generátoru (nenulový zápis do sys[191])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[191] == 0 (nula), tak jsou všechny zápisy do sys[192] ignorovány (nejsou zapamatovány)&lt;br /&gt;
 &lt;br /&gt;
 sys[193] 07 i  W  duty-cycle '''PWM1''' výstupu v mikrosekundách (druhý možný způsob nastavování PWM generátoru)&lt;br /&gt;
                    - pouze pro zápis, pozor !&lt;br /&gt;
                    - povolené rozmezí 0 až X (kde X závisí na sys[191] a vypočte se jako: X = 1000000 / sys[191]; - pozor !)&lt;br /&gt;
                    - před zápisem do sys[193] musí být nastavena frekvence generátoru (nenulový zápis do sys[191])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[191] == 0 (nula), tak jsou všechny zápisy do sys[193] ignorovány (nejsou zapamatovány)&lt;br /&gt;
                    - POZOR čtení nedává hodnotu v mikrosekundách, ale přímo hodnotu z registru generátoru&lt;br /&gt;
 &lt;br /&gt;
 sys[194] 07 i RW  duty-cycle '''PWM2''' v procentech (výchozí způsob nastavování PWM generátoru)&lt;br /&gt;
                    - povolené rozmezí 0 až 100 (0% až 100%)&lt;br /&gt;
                    - před zápisem do sys[194] musí být nastavena frekvence generátoru (nenulový zápis do sys[191])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[191] == 0 (nula), tak jsou všechny zápisy do sys[194] ignorovány (nejsou zapamatovány)&lt;br /&gt;
 &lt;br /&gt;
 sys[195] 07 i  W  duty-cycle '''PWM2''' výstupu v mikrosekundách&lt;br /&gt;
                    - pouze pro zápis, pozor !&lt;br /&gt;
                    - povolené rozmezí 0 až X (kde X závisí na sys[191] a vypočte se jako: X = 1000000 / sys[191]; - pozor !)&lt;br /&gt;
                    - před zápisem do sys[195] musí být nastavena frekvence generátoru (nenulový zápis do sys[191])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[191] == 0 (nula), tak jsou všechny zápisy do sys[195] ignorovány (nejsou zapamatovány)&lt;br /&gt;
                    - POZOR čtení nedává hodnotu v mikrosekundách, ale přímo hodnotu z registru generátoru&lt;br /&gt;
&lt;br /&gt;
 SDS '''MACRO-ST''' - čtyři PWM výstupy (zde druhá skupina: PWM3 a PWM4)&lt;br /&gt;
 &lt;br /&gt;
 sys[186] 09 i RW  &amp;quot;Fm&amp;quot; = (společná) frekvence pro '''PWM3 a PWM4''' výstupy [Hz]&lt;br /&gt;
                    - zápis hodnot: 1 až 1000000 (odpovídá 1Hz až 1MHz) aktivuje PWM výstupy (lze dále řídit podle sys[187] až sys[190])&lt;br /&gt;
                    - zápis hodnoty 0 vypne PWM3 a PWM4 výstupy (výstup trvale neaktivní) - pro opětovné zapnutí zapište nenulovou hodnotu&lt;br /&gt;
 &lt;br /&gt;
 sys[187] 09 i RW  duty-cycle '''PWM3''' v procentech&lt;br /&gt;
                    - povolené rozmezí 0 až 100 (0% až 100%)&lt;br /&gt;
                    - před zápisem do sys[187] musí být nastavena frekvence generátoru (nenulový zápis do sys[186])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[186] == 0 (nula), tak jsou všechny zápisy do sys[187] ignorovány (nejsou zapamatovány)&lt;br /&gt;
&lt;br /&gt;
 sys[188] 09 i  W  duty-cycle '''PWM3''' výstupu v mikrosekundách&lt;br /&gt;
                    - pouze pro zápis, pozor !&lt;br /&gt;
                    - povolené rozmezí 0 až X (kde X závisí na sys[186] a vypočte se jako: X = 1000000 / sys[186]; - pozor !)&lt;br /&gt;
                    - před zápisem do sys[188] musí být nastavena frekvence generátoru (nenulový zápis do sys[186])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[186] == 0 (nula), tak jsou všechny zápisy do sys[188] ignorovány (nejsou zapamatovány)&lt;br /&gt;
                    - POZOR čtení nedává hodnotu v mikrosekundách, ale přímo hodnotu z registru generátoru&lt;br /&gt;
 &lt;br /&gt;
 sys[189] 09 i RW  duty-cycle '''PWM4''' v procentech&lt;br /&gt;
                    - povolené rozmezí 0 až 100 (0% až 100%)&lt;br /&gt;
                    - před zápisem do sys[189] musí být nastavena frekvence generátoru (nenulový zápis do sys[186])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[186] == 0 (nula), tak jsou všechny zápisy do sys[189] ignorovány (nejsou zapamatovány)&lt;br /&gt;
 &lt;br /&gt;
 sys[190] 09 i  W  duty-cycle '''PWM4''' výstupu v mikrosekundách&lt;br /&gt;
                    - pouze pro zápis, pozor !&lt;br /&gt;
                    - povolené rozmezí 0 až X (kde X závisí na sys[186] a vypočte se jako: X = 1000000 / sys[186]; - pozor !)&lt;br /&gt;
                    - před zápisem do sys[190] musí být nastavena frekvence generátoru (nenulový zápis do sys[186])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[186] == 0 (nula), tak jsou všechny zápisy do sys[190] ignorovány (nejsou zapamatovány)&lt;br /&gt;
                    - POZOR čtení nedává hodnotu v mikrosekundách, ale přímo hodnotu z registru generátoru&lt;br /&gt;
&lt;br /&gt;
Doporučení je vždy si ověřit vzájemné závislosti konfigurace PWM výstupů osciloskopem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ovládání výstupů - Relé ==&lt;br /&gt;
&lt;br /&gt;
Zápisem do následujících systémových proměnných přímo ovládáte fyzické relé (výstupy) zařízení SDS. Pozor, protože hodnoty zapsané z SDS-C programu se záměrně neukládají do pevné paměti (tzn. nejsou načteny po resetu zařízení SDS). Je to z důvodu bezpečnosti (aby se např. neseplo relé po dlouhém výpadku napájení). Váš program si s tím musí umět poradit - vždy po zapnutí SDS musí vyhodnotit aktuální situaci a až podle toho zapínat relé.&lt;br /&gt;
&lt;br /&gt;
 sys[196] až sys[228]   &lt;br /&gt;
          01 i RW  informace, kdo ovládá '''RE1''' až '''RE32'''&lt;br /&gt;
                    - lze nastavit i z webového rozhraní&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : ovládáno z webového rozhraní (ruční řízení - trvale zapnuto, trvale vypnuto)&lt;br /&gt;
                    == 2 : ovládáno z SDS-C programu (zápis do sys[], je ignorováno nastavení na webu)&lt;br /&gt;
                    == 4 : ovládáno z IP Watchdogu (interní IP watchdog, nastavuje se přes web)&lt;br /&gt;
&lt;br /&gt;
 sys[229] až sys[230]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
 sys[231] až sys[262]   &lt;br /&gt;
          01 i RW  stav výstupu RE1 až RE32 (= zápis do tohoto sys[] přímo ovládá relé)&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : relé není aktivní &lt;br /&gt;
                           (cívka relé bez proudu, MICRO-LM: mosfet není sepnut)&lt;br /&gt;
                    != 0 : relé je aktivní &lt;br /&gt;
                           (cívka relé pod proudem, MICRO-LM: mosfet je sepnut = výstup REx je spojen na GND)&lt;br /&gt;
&lt;br /&gt;
 sys[263] až sys[265]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
 sys[266] až sys[298]   &lt;br /&gt;
          01 s R   uživatelský textový název pro '''RE1''' až '''RE32''' &lt;br /&gt;
                    - nastaveno ve webovém rozhraní&lt;br /&gt;
&lt;br /&gt;
 sys[264] až sys[300]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ovládání PDx ==&lt;br /&gt;
&lt;br /&gt;
Jednotlivé moduly SDS mají k dispozici dodatečné vstupy a výstupy, označené jako PDx respektive TOPB. Přesný seznam viz návod ke konkrétním modulům.&lt;br /&gt;
&lt;br /&gt;
Stav vstupu (je-li PDx jako vstup) nebo výstupu (je-li PDx jako výstup):&lt;br /&gt;
&lt;br /&gt;
 sys[301] 01 i RW  SDS '''MICRO LM LIGHT''': stav i/o pinu D0 (0 = log0 ; nenulová hodnota v sys = log1 přítomna na pinu)&lt;br /&gt;
                   SDS '''MICRO LM DIN''' a SDS '''MACRO LM''': stav výstupu D0 - MOSFET spínač na GND. Při jakékoliv nenulové hodnotě v sys[301] je MOSFET sepnutý (=D0 na GND), jinak je D0 otevřený (HiZ)&lt;br /&gt;
                   SDS '''TTCPRO''': stav všech osmi pinů v portu PDx (nastavením/čtením sys[301] se přistupuje k jednotlivých osmi bitům v bajtu, kde: bit0=PD0 až bit7=PD7)&lt;br /&gt;
                   SDS '''MINI''': bit0 = stav i/o pinu TOPB, bit1 = stav padu PD1, ostatní bity (2..7) nepoužity&lt;br /&gt;
                   SDS '''UPS''': nepoužito&lt;br /&gt;
                   SDS '''IO6''': nepoužito&lt;br /&gt;
                   SDS '''MICRO-ST''': bit0 = stav PD0 MOSFET spínače (spíná na GND), bit1 = stav i/o pinu TOPB, ostatní bity (2..7) nepoužity&lt;br /&gt;
                   SDS '''IO6-ST''': nepoužito&lt;br /&gt;
                   SDS '''MACRO-ST''': bit0 = stav PD0, bit1 = stav PD1, bit2 = stav i/o pinu TOPB, bit3 = TL-1, bit4 = stav TL-2, ostatní bity (5..7) nepoužity&lt;br /&gt;
&lt;br /&gt;
Řízení směru pro jednotlivé PDx resp. TOPB:&lt;br /&gt;
&lt;br /&gt;
 sys[302] 06 i RW  SDS '''MICRO LM LIGHT''': směr i/o pinu D0 (zápisem bit0 do 1 se nastaví pin D0 jako výstup) (zápisem log1 se nastaví jako vstup)&lt;br /&gt;
                   SDS '''MICRO LM DIN''' a '''SDS MACRO LM''': pozor, D0 je vždy výstup (nastavení je napevno, nelze změnit)&lt;br /&gt;
                   SDS '''TTCPRO''': směr jednotlivých pinů v portu PDx (nastavením jednotlivých osmi bitů, bit0=PD0 až bit7=PD7, nastav log1 pro výstup)&lt;br /&gt;
                   SDS '''MINI''': bit0 = směr i/o pinu TOPB, bit1 = směr i/o padu PD1, ostatní bity (2..7) nepoužity&lt;br /&gt;
                   SDS '''UPS''': nepoužito&lt;br /&gt;
                   SDS '''IO6''': nepoužito&lt;br /&gt;
                   SDS '''MICRO-ST''': bit0 = vždy v log1 (PD0 jako výstup), bit1 = směr i/o pinu TOPB, ostatní bity (2..7) nepoužity&lt;br /&gt;
                   SDS '''MACRO-ST''': bit0 = vždy v log1 (výstup), bit1 = vždy v log1 (výstup), bit2 = směr i/o pinu TOPB, bit3 = vždy v log0 (vstup), bit4 = vždy v log0 (vstup), ostatní bity (5..7) nepoužity&lt;br /&gt;
&lt;br /&gt;
TOPB: vždy typicky CMOS 3V3 pin, s možností funkce jako vstup nebo výstup (dle sys[302]), a je přímo připojený na pin SoC, pozor tedy na jeho další HW připojení.&lt;br /&gt;
&lt;br /&gt;
TTCPRO: Mapování je vždy od nejnižšího (LSB - bit0) bitu (PD0 = bit0, PD1 = bit1, atd. PD7 = bit7). Pro TTCPRO jsou PDx jako CMOS 3V3 piny s volbou vstupu nebo výstupu pro každý jednotlivý pin.&lt;br /&gt;
&lt;br /&gt;
MICRO-ST: výstup PD0 je zapojen formou FET spínače (log0 = HiZ = rozepnuto) (log1 = ACT = sepnuto na GND).&lt;br /&gt;
&lt;br /&gt;
MACRO-ST: výstupy PD0 a PD1 jsou zapojeny formou FET spínače (log0 = HiZ = rozepnuto) (log1 = ACT = sepnuto na GND).&lt;br /&gt;
&lt;br /&gt;
Nezapomeňte vždy ve svém programu správně nastavit hodnoty do sys[302] (toto je častá chyba když se to zapomene).&lt;br /&gt;
&lt;br /&gt;
 sys[306] až sys[309]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
== Tlačítka na desce display pro SDS-MACRO-ST ==&lt;br /&gt;
&lt;br /&gt;
Čtení stavu tlačítek na desce display (SDS-MST-DISP-rev1) se provádí čtením sys[301] a vyhodnocením bitu 3 (=8dec, první tlačítko) a/nebo bitu 4 (=16dec, druhé tlačítko).&lt;br /&gt;
&lt;br /&gt;
Ošetření na případné zákmity při stisku a uvolnění tlačítek, je potřeba provést ve vašem SDS-C programu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vstupy - teploměry na externí sběrnici 1-Wire&amp;amp;reg; ==&lt;br /&gt;
&lt;br /&gt;
Čidla teploty (1-W chipy pro měření teploty připojené na sběrnici; tak také údaj o teplotě z připojených modulů SDS-1W-T-RH) jsou řízena (čtena) plně automaticky zařízením SDS. Program v SDS-C má přímo přístup k výsledným hodnotám teplot.&lt;br /&gt;
&lt;br /&gt;
 sys[310] až sys[341]   &lt;br /&gt;
          01 i R   hodnota údaje (teplota) z konkrétního čidla na 1-Wire&amp;amp;reg; sběrnici&lt;br /&gt;
&lt;br /&gt;
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 záměrně tam je číslo 16777216 (2^24)'''.&lt;br /&gt;
&lt;br /&gt;
Pozn.: pouze SDS-MACRO-LM a SDS-MACRO-ST mají 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-XX'''.&lt;br /&gt;
&lt;br /&gt;
 sys[342] až [345]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
 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)&lt;br /&gt;
 sys[347] 01 i R   počet všech detekovaných (připojených) čidel teploty na sběrnici '''B'''&lt;br /&gt;
 &lt;br /&gt;
 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)&lt;br /&gt;
 sys[349] 01 i R   počet všech detekovaných (připojených) čidel teploty na sběrnici '''A'''&lt;br /&gt;
&lt;br /&gt;
 sys[350] až sys[381]   &lt;br /&gt;
          01 i R   čidlo 1 až 32 - aktuální stav/chyba čidla v okamžiku čtení tohoto sys[]&lt;br /&gt;
                    == 0  : default, čidlo neexistuje, nic nevim (stav ihned po zapnutí, popř. trvale pro prázdnou pozici)&lt;br /&gt;
                    == 2  : vše ok, komunikuje, odpovidá, právě byl získán výsledek&lt;br /&gt;
                    == 4  : ví se jen že existuje (byl získán ROMCODE) (obvykle dočasný stav po spuštění zařízení)&lt;br /&gt;
                    == 8  : začal další převod, čidlo je OK, komunikuje (správný stav)&lt;br /&gt;
                    == 16 : nepovedlo se začít nový převod, CHYBA (obvykle fyzický problém se sběrnicí)&lt;br /&gt;
                    == 32 : bylo přijato neplatné CRC, chyba (obvykle fyzický problém se sběrnicí)&lt;br /&gt;
&lt;br /&gt;
 sys[382] až [389]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
 sys[391] až sys[422]  &lt;br /&gt;
          01 s R   uživatelský textový název pro čidlo 1 až 32 (nastaveno ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
''' Reserved ''' &lt;br /&gt;
&lt;br /&gt;
 sys[423] až sys[430]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vstupy: analogové vstupy pro měření napětí ==&lt;br /&gt;
&lt;br /&gt;
Všechny vstupy měří napětí vůči společné svorce (GND). Změřená hodnota je vždy k dispozici nejprve jako surová (raw) digitální hodnota, a poté ji SDS přepočítá dle uživatelského nastavení a také dá k dispozici.&lt;br /&gt;
&lt;br /&gt;
 sys[431] 01 i R   RAW hodnota A/D převodu ze vstupu AD1&lt;br /&gt;
 sys[432] 01 i R   RAW hodnota A/D převodu ze vstupu AD2&lt;br /&gt;
 sys[433] 01 i R   RAW hodnota A/D převodu ze vstupu AD3&lt;br /&gt;
 sys[434] 01 i R   RAW hodnota A/D převodu ze vstupu AD4&lt;br /&gt;
&lt;br /&gt;
RAW (surová) hodnota je digitální číslo, poskytnuté z interního A/D převodníku, s tím, že mu už SDS současně (pouze a jenom) odečetl uživatelem nastavený offset.&lt;br /&gt;
&lt;br /&gt;
Rozsah hodnoty RAW je: &lt;br /&gt;
* SDS-MICRO-LM, SDS-MACRO-LM, SDS-UPS-ONEDPS: 0..1023 (10bit rozlišení)&lt;br /&gt;
* SDS-MINI a všechny varianty SDS ST: 0..4095 (12bit rozlišení)&lt;br /&gt;
&lt;br /&gt;
Všechny převodní konstanty A/D, nastavené ve webovém rozhraní (viz admin stránka):&lt;br /&gt;
&lt;br /&gt;
 sys[435] 01 i R   Offset pro A/D 1  [jen pro informaci, dále už nepoužít - viz pozn.]&lt;br /&gt;
 sys[436] 01 i R   Div pro A/D 1&lt;br /&gt;
 sys[437] 01 s R   textový název A/D 1&lt;br /&gt;
 sys[438] 01 s R   jednotka A/D 1&lt;br /&gt;
&lt;br /&gt;
 sys[439] 01 i R   Offset pro A/D 2  [jen pro informaci, dále už nepoužít - viz pozn.]&lt;br /&gt;
 sys[440] 01 i R   Div pro A/D 2&lt;br /&gt;
 sys[441] 01 s R   textový název A/D 2&lt;br /&gt;
 sys[442] 01 s R   jednotka A/D 2&lt;br /&gt;
&lt;br /&gt;
 sys[443] 01 i R   Offset pro A/D 3  [jen pro informaci, dále už nepoužít - viz pozn.]&lt;br /&gt;
 sys[444] 01 i R   Div pro A/D 3&lt;br /&gt;
 sys[445] 01 s R   textový název A/D 3&lt;br /&gt;
 sys[446] 01 s R   jednotka A/D 3&lt;br /&gt;
&lt;br /&gt;
 sys[447] 01 i R   Offset pro A/D 4  [jen pro informaci, dále už nepoužít - viz pozn.]&lt;br /&gt;
 sys[448] 01 i R   Div pro A/D 4&lt;br /&gt;
 sys[449] 01 s R   textový název A/D 4&lt;br /&gt;
 sys[450] 01 s R   jednotka A/D 4&lt;br /&gt;
&lt;br /&gt;
'''Pozor!''' Hodnoty pro jednotlivé A/D vstupy (tj. Raw Hodnoty v sys[431 až 434]) '''už mají odečtený Offset''' (je to provedeno uvnitř firmware už při zpracovávání A/D převodu) ! &lt;br /&gt;
Proto Offset už ve svém SDS-C programu z Raw hodnot neodečítejte (bylo by to odečítáno podruhé). Pro přepočet z Raw na finální hodnotu vám zbývá (správně) použít jen &amp;quot;Div&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Poznámka: zařízení SDS-MINI (a další z řady SDS ST) už mohou mít text v položce &amp;quot;jednotka A/D x&amp;quot; delší než jeden znak (na rozdíl od původního SDS-MICRO-LM atd., kde to bylo omezeno na jeden jediný znak).&lt;br /&gt;
&lt;br /&gt;
''' Reserved '''&lt;br /&gt;
&lt;br /&gt;
 sys[451] až sys[458]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proměnné pro S0 impulsní vstup ==&lt;br /&gt;
&lt;br /&gt;
 sys[459] 01 i RW  stav tarifu &lt;br /&gt;
                    == 0 : T0 (vysoký tarif)&lt;br /&gt;
                    == 1 : T1 (nízký tarif)&lt;br /&gt;
&lt;br /&gt;
 sys[460] až sys[492]  &lt;br /&gt;
          06 i RW  konfigurace - uživatelem nastavený (webové rozhraní) poměr MTD, pro vstup S0 [1] až [32],&lt;br /&gt;
                                 je-li MTD pro tento vstup použit (pokud není použit (přímé měření), má zde být 1 )&lt;br /&gt;
                    - příklad: pro MTD s poměrem 300A:5A je zapsaná hodnota 60&lt;br /&gt;
                    - pozor, nezapočítávejte vliv MTD do hodnoty imp./1kWh&lt;br /&gt;
                    - pozor, některé elektroměry mají MTD už započítané do vlastní impulsní konstanty, &lt;br /&gt;
                             pak sem v takovém případě nastavte číslo 1&lt;br /&gt;
                    - platné hodnoty: 1 až 65280 (včetně)&lt;br /&gt;
 &lt;br /&gt;
 sys[493] až sys[525]  &lt;br /&gt;
          01 i RW  hodnoty impulsních akumulátorů (počítadel) pro vstup S0 [1] až [32] pro tarif T0&lt;br /&gt;
                    - (!) pozor SDS interně drží počítadla jako 32-bit unsigned hodnoty (0 až 4294967295)&lt;br /&gt;
                          ale SDS-C čte sys[] jako 32-bit signed hodnoty;&lt;br /&gt;
                          při čtení tedy dostanete stejné hodnoty 32 bitů, ale reprezentace čísla bude jiná (signed).&lt;br /&gt;
 &lt;br /&gt;
 sys[526] až sys[558]  &lt;br /&gt;
          01 i RW  hodnoty impulsních akumulátorů (počítadel) pro vstup S0 [1] až [32] pro tarif T1&lt;br /&gt;
                    - (!) pozor SDS interně drží počítadla jako 32-bit unsigned hodnoty (0 až 4294967295)&lt;br /&gt;
                          ale SDS-C čte sys[] jako 32-bit signed hodnoty;&lt;br /&gt;
                          při čtení tedy dostanete stejné hodnoty 32 bitů, ale reprezentace čísla bude jiná (signed).&lt;br /&gt;
 &lt;br /&gt;
 sys[559] až sys[591]  &lt;br /&gt;
          01 i RW  konfigurace - uživatelem nastavené přepočtové konstanty S0: počet imp./1kWh (z webového rozhraní)&lt;br /&gt;
                    - pozor, tato hodnota platí pro samotný elektroměr, není to hodnota ve které je započítán vliv MTD&lt;br /&gt;
                    - pozn. v případě, že měřícím prvkem není elektroměr ale jiný přístroj, bude zde odpovídající&lt;br /&gt;
                      jiná konfigurační hodnota (např. vodoměr: počet imp./m^3).&lt;br /&gt;
 &lt;br /&gt;
 sys[592] až sys[624]  &lt;br /&gt;
          01 i R   změřená časová vzdálenost mezi dvěmi nejposlednějšími zachycenými impulsy na S0 vstupu (aktuální impuls a předchozí impuls)&lt;br /&gt;
                    - měřeno v msec&lt;br /&gt;
                    - (!) pozor SDS interně drží počítadla jako 32-bit unsigned hodnoty (0 až 4294967295)&lt;br /&gt;
                          ale SDS-C čte sys[] jako 32-bit signed hodnoty;&lt;br /&gt;
                          při čtení tedy dostanete stejné hodnoty 32 bitů, ale reprezentace čísla bude jiná (signed - viz vysvětlení nahoře).&lt;br /&gt;
 &lt;br /&gt;
 sys[625] až sys[657]  &lt;br /&gt;
          01 i R   změřený čas od úplně posledního impulsu zachyceného na S0 vstupu, tzn. &amp;quot;doba bez impulsu&amp;quot; nebo také &amp;quot;doba od posledního impulsu&amp;quot;&lt;br /&gt;
                    - měřeno v msec&lt;br /&gt;
                    - (!) pozor SDS interně drží počítadla jako 32-bit unsigned hodnoty (0 až 4294967295)&lt;br /&gt;
                          ale SDS-C čte sys[] jako 32-bit signed hodnoty;&lt;br /&gt;
                          při čtení tedy dostanete stejné hodnoty 32 bitů, ale reprezentace čísla bude jiná (signed - viz vysvětlení nahoře).&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
poznámka: &amp;quot;Poměr MTD&amp;quot; zahrnuje všechny měřící transformátory (MTD), předřazené elektroměru (pouze pokud to už není započítáno v impulsní konstantě). Pokud je S0 vstup využit pro jiný typ měřiče (vodoměr a podobné), kde je připojení MTD nesmysl, tak se v konfiguraci musí do této položky nastavit hodnota 1. Samozřejmě jde s určitou výhodou použít i jinou konfiguraci, protože tato hodnota je použita jako &amp;quot;druhý dělitel&amp;quot; u výpočtu počtu S0 impulsů na velikost kroku energetické jednotky. Určení této hodnoty pro jiné měřiče sleduje stejné matematické postupy jako určení této hodnoty pro elektroměr s předřazeným MTD, jen jednotky budou samozřejmě jiné.&lt;br /&gt;
&lt;br /&gt;
 sys[658] až sys[670]  reserved for future use&lt;br /&gt;
&lt;br /&gt;
poznámka: další sys[] indexy pro S0 vstupy jsou uvedeny ještě dále v tomto celém seznamu (dole na stránce).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Speciální vstupy a výstupy ==&lt;br /&gt;
&lt;br /&gt;
Toto je funkce dostupná jen na omezeném rozsahu výrobků SDS.&lt;br /&gt;
&lt;br /&gt;
'''Pouze pro SDS MICRO (LM) LIGHT:'''&lt;br /&gt;
&lt;br /&gt;
 sys[671] 02 i W   zápis na pin M4 (pouze SDS MICRO LIGHT s EEPROM, všechny ostatní výrobky toto nemají)&lt;br /&gt;
 sys[672] 02 i W   zápis na pin M5 (pouze SDS MICRO LIGHT s EEPROM, všechny ostatní výrobky toto nemají)&lt;br /&gt;
 sys[673] 02 i W   zápis na pin B1 (SDS MICRO LIGHT, LIGHT2, SDS MICRO DIN)&lt;br /&gt;
 sys[674] 02 i W   zápis na pin A1 (SDS MICRO LIGHT, LIGHT2, SDS MICRO DIN)&lt;br /&gt;
&lt;br /&gt;
Tyto zmíněné čtyři ''sys[]'' jsou dostupné '''pouze''' na modulu SDS MICRO '''LIGHT''' popř. '''DIN''', a to jen s verzí firmware 9.1.2011 nebo novější.&lt;br /&gt;
&lt;br /&gt;
SDS MICRO LIGHT s pamětí EEPROM: k dispozici jsou všechny čtyři výstupy.&lt;br /&gt;
&lt;br /&gt;
SDS MICRO LIGHT s pamětí DATAFLASH: k dispozici jsou jen dva výstupy (A1, B1).&lt;br /&gt;
&lt;br /&gt;
SDS MICRO LIGHT 2 s pamětí DATAFLASH: k dispozici jsou jen dva výstupy (A1, B1).&lt;br /&gt;
&lt;br /&gt;
SDS MICRO DIN: k dispozici jsou jen dva výstupy (A1, B1).&lt;br /&gt;
&lt;br /&gt;
SDS MACRO LM, SDS MICRO ST, SDS MACRO ST, SDS UPS, SDS IO6, SDS IO6 ST, SDS TTCPRO, SDS MINI: tyto výstupy '''nejsou k dispozici'''.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
'''Pouze pro SDS MACRO ST:'''&lt;br /&gt;
&lt;br /&gt;
Alternativa k sys[301]. Hodnota odpovídá logické úrovni na daném vstupu TL1 (TL2). Při osazené desce MACRO-ST-LCD jsou na tyto vstupy připojeny tlačítka (pak při stisku TL1, TL2 je zde hodnota 0, v klidu 1).&lt;br /&gt;
&lt;br /&gt;
 sys[671] 02 i R   čtení stavu TL1&lt;br /&gt;
 sys[672] 02 i R   čtení stavu TL2&lt;br /&gt;
&lt;br /&gt;
'''Pájecí plošky CFG:'''&lt;br /&gt;
&lt;br /&gt;
Zkratovací CFG plošky jsou k dispozici jen pro SDS TTCPRO. Vhodné pro pevnou konfiguraci uživatelem.&lt;br /&gt;
&lt;br /&gt;
V současné době není k dispozici firmware, které přenáší hodnotu z pájecích plošek (CFG1, CFG2) do ''sys[]''.&lt;br /&gt;
Ploška CFG1 je vyhrazena pro vnitřní použítí samotného firmware SDS, a ploška CFG2 bude eventuálně uvolněna pro libovolné použití uživatelem (čtení z SDS-C).&lt;br /&gt;
Takový firmware se teprve chystá (SDS TTCPRO).&lt;br /&gt;
&lt;br /&gt;
 sys[675] 07 i R   stav plošky CFG1 (zkratována = je zde 0)&lt;br /&gt;
 sys[676] 07 i R   stav plošky CFG2 (zkratována = je zde 0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Speciální proměnné pro SDS-UPS ==&lt;br /&gt;
&lt;br /&gt;
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 .&lt;br /&gt;
&lt;br /&gt;
SDS-UPS má všechny sys[0] až sys[699] shodné s SDS-MICRO. Rozdíl je samozřejmě v počtu a osazení periférií.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
 sys[700] 02 i R   reserved&lt;br /&gt;
 sys[701] 02 i R   reserved&lt;br /&gt;
 sys[702] 02 i R   reserved&lt;br /&gt;
 sys[703] 02 i R   reserved&lt;br /&gt;
&lt;br /&gt;
'''Přepínač algoritmů:'''&lt;br /&gt;
&lt;br /&gt;
 sys[704] 02 i RW  řízení nabíjení - hodnoty které lze zapsat:&lt;br /&gt;
                    == 0   : nabíjení je ovládáno pomocí firmware (výchozí chování výrobku)&lt;br /&gt;
                    == 345 : pouze nabíjení (a ne jiné funkce) jsou řízeny programem SDS-C (= chování programujete vy)&lt;br /&gt;
                    == 824 : kompletní řízení (= volba funkce, nabíjení) je řízeno programem SDS-C&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 sys[705] až sys[731]  reserved&lt;br /&gt;
&lt;br /&gt;
Pro realizaci vlastního nabíjecího algoritmu potřebujete zpracovávat všechny vstupy a důsledně nastavovat všechy výstupy.&lt;br /&gt;
&lt;br /&gt;
Pokud váš program pouze sleduje činnost původního nabíjecího algoritmu, pak může samozřejmě všechny sys[] jen číst.&lt;br /&gt;
&lt;br /&gt;
'''Vstupy a konfigurace:'''&lt;br /&gt;
&lt;br /&gt;
 sys[732] 02 i R   surová hodnota z A/D převodu - hodnota 2.5V vstupu - odpovídá hodnotě proudu 0.0A&lt;br /&gt;
 sys[733] 02 i R   surová hodnota z A/D převodu - hodnota proudu do-z akumulátoru&lt;br /&gt;
 sys[734] 02 i R   surová hodnota z A/D převodu - hodnota proudu z primárního vstupu&lt;br /&gt;
 sys[735] 02 i R   surová hodnota z A/D převodu - hodnota napětí akumulátoru&lt;br /&gt;
 sys[736] 02 i R   surová hodnota z A/D převodu - hodnota napětí primárního vstupu&lt;br /&gt;
&lt;br /&gt;
Rozsah surových hodnot z A/D převodu je 0 až 4095. Lineárně to odpovídá příslušné měřené hodnotě. &lt;br /&gt;
Měření napětí má 0 na 0V a maximální hodnot (4095) na maximu rozsahu. &lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
 sys[737] až sys[739]  reserved&lt;br /&gt;
&lt;br /&gt;
Následuje konfigurace provedená uživatelem ve webovém rozhraní.&lt;br /&gt;
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á.&lt;br /&gt;
&lt;br /&gt;
 sys[740] 02 i R   primary voltage to say target is ok (pri_pvts)&lt;br /&gt;
 sys[741] 02 i R   primary zadany odpocet v msec (pri_pvat)&lt;br /&gt;
 sys[742] 02 i R   primary voltage to allow charging (at what voltage to allow chargin) (pri_fchg)&lt;br /&gt;
 sys[743] 02 i R   accu disconnect voltage level (at what voltage to disconnect accu) (aku_avdv)&lt;br /&gt;
 sys[744] 02 i R   accu target voltage when charging (when to switch to CV) (aku_avcd)&lt;br /&gt;
 sys[745] 02 i R   accu target current when charging (constant current when in CC) (aku_accc)&lt;br /&gt;
 sys[746] 02 i R   target charging voltage (final voltage on accu when fully charged)&lt;br /&gt;
 sys[747] 02 i R   flag: do not answer ping when primary gone (pri_ping)&lt;br /&gt;
 sys[748] 02 i R   flag: do not switch accu off (aku_dach)&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 sys[749] až sys[760]  reserved&lt;br /&gt;
&lt;br /&gt;
'''Výstupy:'''&lt;br /&gt;
&lt;br /&gt;
Tyto '''všechny''' výstupy musíte správně ovládat po celou dobu, co bude zařízení SDS UPS zapnuto !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 sys[761] 02 i RW  ovládání vypínání nabíječe&lt;br /&gt;
                    == 0 : nabíječ v provozu (zapnuto = nabíjí se, regulujte jiným sys[])&lt;br /&gt;
                    != 0 : nabíječ mimo provoz (vypnuto = nenabíjí se)&lt;br /&gt;
 &lt;br /&gt;
 sys[762] 02 i RW  ovládání posunu rozsahu regulace nabíječe &lt;br /&gt;
                    == 0 : bez zásahu do zpětné vazby (původní regulační rozsah)&lt;br /&gt;
                    != 0 : zásah do zpětné vazby (posun rozsahu)&lt;br /&gt;
                           (vhodné pro skokové zvýšení výstupního napětí nabíječe, &lt;br /&gt;
                            když už nereaguje v původním rozsahu)&lt;br /&gt;
 &lt;br /&gt;
 sys[763] 02 i RW  ovládání odpojovače baterie &lt;br /&gt;
                    == 0 : spínač vypnutý (baterie odpojena od zátěže)&lt;br /&gt;
                    != 0 : spínač sepnutý (baterie připojena)&lt;br /&gt;
 &lt;br /&gt;
 sys[764] 02 i RW  indikační LED - nabíjení akumulátoru&lt;br /&gt;
                    == 0 : LED svítí (informace: akumulátor je nabíjen)&lt;br /&gt;
                    != 0 : LED nesvítí (informace: akumulátor není nabíjen)&lt;br /&gt;
 &lt;br /&gt;
 sys[765] 02 i RW  indikační LED - výpadek primárního vstupu&lt;br /&gt;
                    == 0 : LED svítí (informace: napětí primárního vstupu pod dolním limitem)&lt;br /&gt;
                    != 0 : LED nesvítí (informace: primární vstup má napětí vyšší než je dolní limit)&lt;br /&gt;
&lt;br /&gt;
'''Řízení nabíjení:''' Je potřeba správně regulovat pomocí následujícího výstupu:&lt;br /&gt;
&lt;br /&gt;
 sys[766] 02 i RW  přímé řízení nabíjecího bloku (výstup vaší regulace sem - hodnota řídí nabíječ)&lt;br /&gt;
                    - minimální hodnota = 1&lt;br /&gt;
                    - maximální hodnota = 2497&lt;br /&gt;
&lt;br /&gt;
 sys[767] až sys[769]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
Následující údaje jsou určeny pro '''zobrazování na webovém rozhraní''':&lt;br /&gt;
&lt;br /&gt;
 sys[770] 02 i RW  provozní režim: vždy jedno z UPS_PROVOZ_xxx&lt;br /&gt;
 &lt;br /&gt;
 sys[771] 02 i RW  nabíjecí režim: vždy jedno z UPS_NABREZIM_xxx&lt;br /&gt;
 &lt;br /&gt;
 sys[772] 02 i RW  výsledek odhadu stavu baterie: vždy jedno z UPS_BATERIE_ODHAD_xxx&lt;br /&gt;
&lt;br /&gt;
Konstanty pro zápis (je to potřeba dodržet, protože se to přímo zobrazuje na webovém rozhraní):&lt;br /&gt;
&lt;br /&gt;
 UPS_PROVOZ_START            0&lt;br /&gt;
 UPS_PROVOZ_PRIOK            1&lt;br /&gt;
 UPS_PROVOZ_PRIOK_CHARGING   2&lt;br /&gt;
 UPS_PROVOZ_ONLY_BATT        4&lt;br /&gt;
 UPS_PROVOZ_NO_BATT          8&lt;br /&gt;
 &lt;br /&gt;
 UPS_NABREZIM_CC             0&lt;br /&gt;
 UPS_NABREZIM_CV             2&lt;br /&gt;
 UPS_NABREZIM_PAUZA          4&lt;br /&gt;
 UPS_NABREZIM_URCENI_REZIMU  8&lt;br /&gt;
 &lt;br /&gt;
 UPS_BATERIE_ODHAD_NEZNAM            0&lt;br /&gt;
 UPS_BATERIE_ODHAD_MOC_NIZKE_NAPETI  1&lt;br /&gt;
 UPS_BATERIE_ODHAD_OK_NABIJIM        2&lt;br /&gt;
 UPS_BATERIE_ODHAD_PLNE_NABITO       4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Výsledky z 1-Wire sensoru vlhkosti (T/RH) SDS-1W-T-RH ==&lt;br /&gt;
&lt;br /&gt;
Připojené moduly [[SDS_1W_T-RH]] jsou připojeny na 1-W sběrnici, a mají v sobě chip, který měří hodnotu ze sensoru vlhkosti (který je současně umístěn na modulu SDS-1W-T-RH) a současně měří i teplotu a napájecí napětí pro sensor vlhkosti. &lt;br /&gt;
SDS interně provádí výpočet relativní vlhkosti (RH) pomocí kompenzační rovnice, určené výrobcem sensoru vlhkosti.&lt;br /&gt;
&lt;br /&gt;
K dispozici jsou jak surové hodnoty (změřené v rámci modulu SDS-1W-T-RH), tak i hodnota kompenzované (skutečné) relativní vlhkosti v místě umístění modulu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Změřená teplota je uložena na standardních indexech:&lt;br /&gt;
&lt;br /&gt;
 sys[310] až sys[341]   &lt;br /&gt;
          01 i R   hodnota údaje (teplota) z konkrétního čidla na 1-Wire&amp;amp;reg; sběrnici, hodnota v násobku 0.01 degC&lt;br /&gt;
&lt;br /&gt;
Dále jsou k dispozici surové hodnoty, nutné pro výpočet hodnoty RH (Relative Humidity):&lt;br /&gt;
&lt;br /&gt;
 sys[800] až sys[831]   &lt;br /&gt;
          08 i R   hodnota údaje (napětí Vad = výstupu čidla RH) z konkrétního čidla na 1-Wire&amp;amp;reg; sběrnici, hodnota v násobku 0.01 V&lt;br /&gt;
&lt;br /&gt;
 sys[832] až sys[863]   &lt;br /&gt;
          08 i R   hodnota údaje (napětí Vdd = napájení čidla RH) z konkrétního čidla na 1-Wire&amp;amp;reg; sběrnici, hodnota v násobku 0.01 V&lt;br /&gt;
&lt;br /&gt;
SDS provádí přepočet na údaj RH v procentech (0 až 100):&lt;br /&gt;
&lt;br /&gt;
 sys[864] až sys[895]   &lt;br /&gt;
          08 i R   hodnota RH (0 až 100, v procentech RH) kompenzovaná podle rovnice pro čidlo HIH-503x (výpočet z Vad, kompenzace na Vdd a Temp).&lt;br /&gt;
&lt;br /&gt;
Rezerva (zatím nepoužito):&lt;br /&gt;
&lt;br /&gt;
 sys[896] až sys[899]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Doplňující informace pro 1-Wire zařízení ==&lt;br /&gt;
&lt;br /&gt;
1-Wire sběrnice u zařízení SDS umožňuje komunikaci s celou řadů 1-W chipů: [[OneWire|seznam je zde]]. Přístup k chipům na 1-W sběrnici se liší na dva typy: chipy (čidla) které si SDS interně zpracuje (např. měření teploty), a všechny ostatní chipy (které SDS jen umí vyhledat a oznámit, ale dále s nimi nekomunikuje).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1-Wire chipy interně zpracovávané SDS'''&lt;br /&gt;
&lt;br /&gt;
Tyto chipy jsou plně automaticky obsluhovány prostřednictvím firmware SDS - není potřebná opakovaná intervence uživatele, ten si pouze čte stále aktuální výsledky měření teplot z jednotlivých čidel.&lt;br /&gt;
&lt;br /&gt;
Poznámka: Pro změřené hodnoty z 1-W čidel teplot, jsou k dispozici tyto indexy: '''sys[310]''' až '''sys[430]''', a '''sys[900]''' až '''sys[931]'''.&lt;br /&gt;
&lt;br /&gt;
K dispozici je textové vyjádření (hex znaky) ROM CODE hodnoty načtené pro danou pozici zpracovávaného chipu na 1-W sběrnici.&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS mohou mít jednu [A] nebo dvě ( nezávislé, [A] a [B] ) 1-Wire sběrnice, a každá sběrnice má maximálně 16 připojených chipů.&lt;br /&gt;
Jednotlivé platné ROM CODE jsou v ''sys[]'' uloženy za sebou, viz výpis:&lt;br /&gt;
&lt;br /&gt;
 sys[900] 06 s RW  ROM CODE pro první chip na [A] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
 &lt;br /&gt;
 sys[901] 06 s R   ROM CODE pro druhý chip na [A] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
&lt;br /&gt;
A tak dále až&lt;br /&gt;
&lt;br /&gt;
 sys[915] 06 s R   ROM CODE pro šestnáctý chip na [A] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
&lt;br /&gt;
Následuje sběrnice [B], je-li přítomná v daném zařízení (dostupné pouze pro SDS-MACRO):&lt;br /&gt;
&lt;br /&gt;
 sys[916] 06 s R   ROM CODE pro první chip na [B] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
&lt;br /&gt;
A tak dále . . . až&lt;br /&gt;
&lt;br /&gt;
 sys[931] 06 s R   ROM CODE pro šestnáctý chip na [B] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
&lt;br /&gt;
'''Pozor''': pokud sběrnice [B] v zařízení není, tak sys[916] až sys[931] vrátí znak '-'.&lt;br /&gt;
&lt;br /&gt;
Tak jak jsou jednotlivé ROM CODE viditelné ve webové administraci, tak jsou tedy dostupné i přes sys[] položky.&lt;br /&gt;
&lt;br /&gt;
Poznámka: ROM CODE pro 1-W chipy jsou k dispozici pouze jako ucelené texty (string). Bajtový rozpad jednotlivých položek není k dispozici.&lt;br /&gt;
&lt;br /&gt;
 sys[931] až sys[939]  reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ostatní 1-Wire chipy'''&lt;br /&gt;
&lt;br /&gt;
Pro ostatní 1-W chipy, které SDS &amp;quot;nezná&amp;quot; (tzn. nekomunikuje s nimi, jen je umí na sběrnici vyhledat), jsou jejich ROM CODE odděleny do samostatných '''sys[]''' položek.&lt;br /&gt;
&lt;br /&gt;
Čtení ostatních 1-W chipů se spouští v rámci SDS-C programu, který musí zavolat příslušnou SDS-C funkci. &lt;br /&gt;
Na základě zavolání této funkce dojde k vynulování všech příslušných '''sys[]''' (od indexu 940 resp. 970) pro danou sběrnici, a provede se pokus o přečtení připojeného chipu.&lt;br /&gt;
Pokud se to povede, bude nalezený ROM CODE (spolu s časovou značkou okamžiku přečtení) vložen do příslušných '''sys[]''', &lt;br /&gt;
nebo bude nastaven chybový kód.&lt;br /&gt;
&lt;br /&gt;
Pozor, k SDS lze připojit více různých &amp;quot;ostatních&amp;quot; chipů, ale zdejší funkce najde jenom ten první z nich a ostatní už ignoruje. &lt;br /&gt;
Ostatní chipy lze samozřejmě připojit na kteroukoliv sběrnici, i když na ní jsou připojeny i chipy se kterými SDS komunikuje (např. teploměrné chipy).&lt;br /&gt;
&lt;br /&gt;
Jednotlivé chipy se rozlišují pomocí hodnoty ''ID family-code'' (jeden bajt). Pro chip DS1990A je ''0x01'', hodnoty pro jiné chipy viz datasheet výrobce pro konkrétní chip.&lt;br /&gt;
&lt;br /&gt;
Obecný stav sběrnic:&lt;br /&gt;
&lt;br /&gt;
 sys[940] 06 i R   Stav 1-W sběrnice '''[A]''' pro rescan ostatních 1-W chipů&lt;br /&gt;
 sys[941] 06 i R   Stav 1-W sběrnice '''[B]''' pro rescan ostatních 1-W chipů&lt;br /&gt;
 :&lt;br /&gt;
                    == 0  : ještě nebylo provedeno jediné/jakékoliv čtení ostatních chipů na 1-W sběrnici&lt;br /&gt;
 &lt;br /&gt;
                    == 1  : došlo k chybě: nebylo dokončeno předchozí čtení sběrnice&lt;br /&gt;
                            (nesmíte požadovat nové čtení, dokud se plně neprovedlo to poslední)&lt;br /&gt;
 &lt;br /&gt;
                    == 2  : probíhá čtení ROM CODE z připojeného ostatního chipu&lt;br /&gt;
                            (dokud se toto nedokončí, nelze provést opětovný požadavek na další rescan/čtení)&lt;br /&gt;
 &lt;br /&gt;
                    == 4  : nebyl nalezen jakýkoliv ostatní chip (s odpovídajícím Family Code byte)&lt;br /&gt;
 &lt;br /&gt;
                    == 8  : byl přečten ROM CODE z připojeného ostatního chipu&lt;br /&gt;
                            (už lze také požádat o další nové čtení 1-W sběrnice)&lt;br /&gt;
 &lt;br /&gt;
                    == 16 : došlo k chybě: nepovedlo se přečíst data po 1-W sběrnici &lt;br /&gt;
                            (zkuste provést rescan/čtení znovu)&lt;br /&gt;
&lt;br /&gt;
 sys[942] až sys[949]  reserved&lt;br /&gt;
&lt;br /&gt;
'''Pro sběrnici [A]:'''&lt;br /&gt;
&lt;br /&gt;
 sys[950] 06 i R   časová značka posledního okamžiku komunikace s chipem na [B] sběrnici 1-Wire&lt;br /&gt;
                   (nebo: 0 (nula) = pokud ještě nebyla komunikace provedena).&lt;br /&gt;
                    - v okamžiku každého nového pokusu o čtení je nastavena na 0 (nula),&lt;br /&gt;
                      a pak v okamžiku přečtení ROM CODE, je zde hodnota převzatá ze '''sys[3]'''&lt;br /&gt;
&lt;br /&gt;
 sys[951] 06 s R   celý text ROM CODE:&lt;br /&gt;
                    - ROM CODE pro chip na [A] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
 &lt;br /&gt;
 sys[952] až sys[959]: bajtový rozpad ROM CODE pro chip na [A] sběrnici 1-Wire&lt;br /&gt;
 :&lt;br /&gt;
 sys[952] 06 i R   romcode[0] (1-W: ID family-code byte)&lt;br /&gt;
 sys[953] 06 i R   romcode[1] (1-W: serial code)&lt;br /&gt;
 sys[954] 06 i R   romcode[2] (1-W: serial code)&lt;br /&gt;
 sys[955] 06 i R   romcode[3] (1-W: serial code)&lt;br /&gt;
 sys[956] 06 i R   romcode[4] (1-W: serial code)&lt;br /&gt;
 sys[957] 06 i R   romcode[5] (1-W: serial code)&lt;br /&gt;
 sys[958] 06 i R   romcode[6] (1-W: serial code)&lt;br /&gt;
 sys[959] 06 i R   romcode[7] (1-W: CRC byte)&lt;br /&gt;
&lt;br /&gt;
 sys[960] až sys[969]  reserved&lt;br /&gt;
&lt;br /&gt;
'''Pro sběrnici [B]:'''&lt;br /&gt;
&lt;br /&gt;
 sys[970] 06 i R   časová značka posledního okamžiku komunikace s chipem na [B] sběrnici 1-Wire&lt;br /&gt;
                   (nebo: 0 (nula) = pokud ještě nebyla komunikace provedena).&lt;br /&gt;
                    - v okamžiku každého nového pokusu o čtení je nastavena na 0 (nula),&lt;br /&gt;
                      a pak v okamžiku přečtení ROM CODE, je zde hodnota převzatá ze '''sys[3]'''&lt;br /&gt;
&lt;br /&gt;
 sys[971] 06 s R   celý text ROM CODE:&lt;br /&gt;
                    - ROM CODE pro chip na [B] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
 &lt;br /&gt;
 sys[972] až sys[979]: bajtový rozpad ROM CODE pro chip na [B] sběrnici 1-Wire&lt;br /&gt;
 :&lt;br /&gt;
 sys[972] 06 i R   romcode[0] (1-W: ID family-code byte)&lt;br /&gt;
 sys[973] 06 i R   romcode[1] (1-W: serial code)&lt;br /&gt;
 sys[974] 06 i R   romcode[2] (1-W: serial code)&lt;br /&gt;
 sys[975] 06 i R   romcode[3] (1-W: serial code)&lt;br /&gt;
 sys[976] 06 i R   romcode[4] (1-W: serial code)&lt;br /&gt;
 sys[977] 06 i R   romcode[5] (1-W: serial code)&lt;br /&gt;
 sys[978] 06 i R   romcode[6] (1-W: serial code)&lt;br /&gt;
 sys[979] 06 i R   romcode[7] (1-W: CRC byte)&lt;br /&gt;
&lt;br /&gt;
 sys[980] až sys[989]  reserved&lt;br /&gt;
&lt;br /&gt;
Všimněte si, že SDS v tuto chvíli umožňuje pouze rescan 1-W sběrnice, kdy hledá pouze '''jeden''' připojený &amp;quot;ostatní 1-W chip&amp;quot; (ten první na který narazí, ten ohlásí, a nehledá dále). &lt;br /&gt;
&lt;br /&gt;
'''Pozor''':&lt;br /&gt;
&lt;br /&gt;
Pokud je takových chipů připojeno na sběrnici více, popř. pokud jsou smíchány s &amp;quot;teploměrnými&amp;quot; chipy, &lt;br /&gt;
bude při tomto rescanu uveden pouze první nalezený ostatní chip (tj. ten, který má nejnižší ROM-CODE ze všech připojených ostatních chipů).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reserved ==&lt;br /&gt;
&lt;br /&gt;
 sys[990] až sys[1023]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Speciální položky jen pro SDS-MACRO-LM a SDS-MACRO-ST ==&lt;br /&gt;
&lt;br /&gt;
'''Přímý přístup do LCD Frame Buffer paměti:'''&lt;br /&gt;
&lt;br /&gt;
 sys[1024] až sys[1551]   LCD buffer (dostupné jen pro SDS MACRO LM a SDS MACRO ST !)&lt;br /&gt;
          01 i RW  každý index v rámci tohoto rozsahu sys[] lze zapisovat i číst&lt;br /&gt;
                   - jedná se o pole 528 bajtů (4 řádky x 132 sloupců)&lt;br /&gt;
                   - každý bajt pole obsluhuje přesně danou oblast (několika pixelů) LCD displaye&lt;br /&gt;
                   - platné hodnoty pro každý index : 0 až 255 včetně  - zapisujte a čtěte jen hodnoty 0 až 255 (včetně)&lt;br /&gt;
&lt;br /&gt;
Tyto položky jsou dosupné '''pouze a jenom''' na SDS-MACRO-LM kde je vyžadován firmware od 24.11.2016 nebo novější, a na SDS-MACRO-ST (všechny FW verze).&lt;br /&gt;
&lt;br /&gt;
Jakékoliv změny (zápis) se promítnou pouze do frame bufferu (tedy v paměti SDS) - ale aby se následně tento frame buffer (jeho změněný obsah) eventuálně vykreslil na LCD, je potřeba zavolat příslušnou SDS-C funkci !&lt;br /&gt;
&lt;br /&gt;
Čtení ze sys poskytuje přímý přístup do frame bufferu (jeho aktuální obsah, tedy opět ne nutně to co je právě vidět na LCD).&lt;br /&gt;
&lt;br /&gt;
Pokud nepoužíváte LCD (sandwich desku), můžete tuto oblast 528 bajtů využít pro jakékoliv své účely. V podstatě se pak jedná o rozšiřující RAM pamět pro váš SDS-C program.&lt;br /&gt;
&lt;br /&gt;
'''Pozor''' SDS-MACRO-ST&lt;br /&gt;
&lt;br /&gt;
SDS MACRO ST provádí automatické aktualizace (zápis) do LCD bufferu, pokud se o tento buffer nepřihlásí SDS-C program. Proto, pokud na MACRO-ST chcete využít LCD buffer pro jiné své účely, musíte to nejprve SDS říct. Znovu, toto platí jen pro MACRO-ST - ''není to potřeba pro MACRO-LM (které tam po zapnutí nahraje logo a pak už na buffer za běhu nesáhne)''. Pro MACRO-ST zavolejte kteroukoliv SDS-C funkci pro přístup na display (např. clear) a je to - tím se přepne vlastnictví LCD bufferu pro SDS-C program.&lt;br /&gt;
&lt;br /&gt;
== Vyhrazená oblast ==&lt;br /&gt;
&lt;br /&gt;
'''Zbytek:'''&lt;br /&gt;
&lt;br /&gt;
 sys[1552] až sys[1663]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bateriově Zálohovaná Paměť ==&lt;br /&gt;
&lt;br /&gt;
'''POUZE PRO: SDS-TTCPRO a SDS-MINI a SDS-MICRO-ST a SDS-MACRO-sT a SDS-IO6-ST !''' (tedy ty s baterií) - všechny jiné SDS První Řady tyto specifické indexy v sys[] nemají k dispozici!&lt;br /&gt;
&lt;br /&gt;
Pozor! Tato funkce vyžaduje FW od 18.8.2017 a nebo novější. &lt;br /&gt;
&lt;br /&gt;
 sys[1664] až sys[1791]   (pouze pro SDS TTCPRO a SDS MINI a SDS MICRO-ST a SDS MACRO-ST a SDS IO6-ST)&lt;br /&gt;
          07 i RW  sada 128 samostatných pozic v zálohované paměti RAM, pro ukládání libovolných hodnot&lt;br /&gt;
                    - každý index má k dispozici 32 bitů (tj. celý signed integer)&lt;br /&gt;
                    - čtení a zápis je rychlé (je to v RAM, takže se nemusí čekat jako při práci s DF)&lt;br /&gt;
                    - lze použít nezávisle (lze přístupovat ke kterékoliv položce &amp;quot;na přeskáčku&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Pozor! Oblast záložní paměti je k dispozici pouze na vybraných zařízeních SDS (ty, které mají osazenu baterii pro tyto účely). Údaje se nesmazají změnou programu (nahráním nového programu), ani se nesmazají resetem zařízení (kromě aktivace RSTD - pozor!), tzn. vydrží a zůstanou, a to dokonce i po celou dobu výpadku externího napájení (tak dlouho, dokud se nevybije záložní baterie).&lt;br /&gt;
&lt;br /&gt;
''(Pouze) pokud baterie v daném SDS není'': tak jsou údaje ztraceny po výpadku napájení (ale po dobu přítomnosti externího napájení jsou k dispozici). Při takové situaci není zaručen obsah těchto dat po zapnutí (měl by být nulový, ale bez záruky).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Další informace ze S0 vstupů ==&lt;br /&gt;
&lt;br /&gt;
Následující položky jsou k dispozici pro všechny SDS První Produktové Řady.&lt;br /&gt;
&lt;br /&gt;
Od verze SDS-C č. 07 jsou přidány tyto systémové proměnné:&lt;br /&gt;
&lt;br /&gt;
 sys[1792] až sys[1823]  &lt;br /&gt;
          07 i R   cena za jednotku v režimu T0&lt;br /&gt;
                    - původní hodnota je poskytnuta jako násobek 1000 (např. nastavená hodnota 3.40 je zde předána jako číslo 3400)&lt;br /&gt;
 &lt;br /&gt;
 sys[1824] až sys[1855]  &lt;br /&gt;
          07 i R   cena za jednotku v režimu T1&lt;br /&gt;
                    - původní hodnota je poskytnuta jako násobek 1000 (např. nastavená hodnota 3.40 je zde předána jako číslo 3400)&lt;br /&gt;
 &lt;br /&gt;
 sys[1856] až sys[1887]  &lt;br /&gt;
          07 s R   název jednotky se vztahem k času, podle nastavení (např. text &amp;quot;kWh&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[1888] až sys[1919]&lt;br /&gt;
          07 s R   název měny, podle nastavení (např. text &amp;quot;CZK&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[1920] až sys[1951]  &lt;br /&gt;
          07 s R   název jednotky bez vztahu k času, podle nastavení (např. text &amp;quot;kW&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[1952] až sys[1983]  &lt;br /&gt;
          07 s R   název činnosti, podle nastavení (např. text &amp;quot;spotřeba&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[1984] až sys[2015]  &lt;br /&gt;
          07 s R   název měřiče, podle nastavení (např. text &amp;quot;elektroměr č. 1&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[2016] až sys[2047]  &lt;br /&gt;
          07 i R   konfigurační detaily pro daný S0 vstup&lt;br /&gt;
                    - bit 0 nastaven = je to aktivní S0 vstup&lt;br /&gt;
                    - bit 1 nastaven = tento S0 vstup je rozdělen na dvoutarif T0/T1 (jinak je to jedno-tarif)&lt;br /&gt;
&lt;br /&gt;
Samozřejmě pro využití těchto systémových proměnných, potřebujete mít v SDS aktuální firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reserved ==&lt;br /&gt;
&lt;br /&gt;
 sys[2048] až sys[2198]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MQTT klient ==&lt;br /&gt;
&lt;br /&gt;
Vždy si zjistěte, jestli máte v SDS takové FW, které podporuje funkci MQTT klient:&lt;br /&gt;
&lt;br /&gt;
 sys[2199] 09 i R   podpora MQTT&lt;br /&gt;
                     0 = NE&lt;br /&gt;
                     1 = ANO, verze MQTT 3.1.1, SDS první část implementace&lt;br /&gt;
                     2..max = (reserved)&lt;br /&gt;
&lt;br /&gt;
Každé nové připojení k Brokeru:&lt;br /&gt;
&lt;br /&gt;
 sys[2200] 09 i R   stav průběhu mqtt_connect()&lt;br /&gt;
                     -7 = obdrželi jsme CONNACK, ale negativní = nepřipojeno ( výsledek viz sys[2201] )&lt;br /&gt;
                     -6 = timeout při čekání na připojení, nepřipojeno&lt;br /&gt;
                     -5 = nespravne parametry (hodnoty např. IP, port), nepřipojeno&lt;br /&gt;
                     -4 = nespravne parametry (počet parametrů), nepřipojeno&lt;br /&gt;
                     -3 = funkce zavolána dříve (nebo opakovaně) než bylo dokončeno předchozí volání funkce, takže toto volání je ignorováno&lt;br /&gt;
                     -2 = pokus o TCP připojení selhal&lt;br /&gt;
                     -1 = nepoužito&lt;br /&gt;
                      0 = klid, nic se neprovádí, ODPOJENO ! (lze se začít připojovat)&lt;br /&gt;
                      1 = bylo zahájeno připojování (otevírá se TCP spojení)&lt;br /&gt;
                      2 = TCP připojeno a odeslán CONNECT požadavek&lt;br /&gt;
                      4 = obdrželi jsme CONNACK, připojeno ( výsledek viz sys[2201] )&lt;br /&gt;
                      8 = probíhá odpojování, čekáme na výsledek (na odpojení)&lt;br /&gt;
&lt;br /&gt;
Po zavolání mqtt_connect(...) je nutné testovat sys[2200] na výslednou hodnotu. Funkci mqtt_connect(...) nelze volat, je-li sys[2200] na hodnotě 1, 2, 8 nebo 16 (nejprve je v takových případech potřeba provést odpojení pomocí mqtt_disconnect() funkce). Pro úplný test, je-li připojení z SDS do Brokeru úplné, je potřeba ověřit i hodnotu v sys[2201]. Teprve pokud oba tyto sys jsou na správné hodnotě, lze s Brokerem komunikovat.&lt;br /&gt;
&lt;br /&gt;
 sys[2201] 09 i R   výsledek mqtt_connect() = hodnota &amp;quot;CONNACK Connect Return&amp;quot;&lt;br /&gt;
                     -7 = nepoužito&lt;br /&gt;
                     -6 = timeout při čekání na CONNACK, nepřipojeno&lt;br /&gt;
                     -5 = nepoužito&lt;br /&gt;
                     -4 = nepoužito&lt;br /&gt;
                     -3 = nepoužito&lt;br /&gt;
                     -2 = probíhá připojování, čekáme na CONNACK (zatím nepřišel)&lt;br /&gt;
                     -1 = idle, nepřipojeno&lt;br /&gt;
                      0 = (výsledek:) MQTT 0x00: broker akceptoval připojení - LZE POKRAČOVAT (provádět Publish, Subscribe)&lt;br /&gt;
                      1 = MQTT 0x01: Connection Refused, unacceptable protocol version&lt;br /&gt;
                      2 = MQTT 0x02: Connection Refused, identifier rejected&lt;br /&gt;
                      3 = MQTT 0x03: Connection Refused, Server unavailable&lt;br /&gt;
                      4 = MQTT 0x04: Connection Refused, bad user name or password&lt;br /&gt;
                      5 = MQTT 0x05: Connection Refused, not authorized&lt;br /&gt;
&lt;br /&gt;
Hodnotu v sys[2201] lze číst a zpracovat pouze pokud je sys[2200] na hodnotě 16 (to znamená, pouze pokud SDS obdrží odpověď CONNACK od MQTT brokera).&lt;br /&gt;
&lt;br /&gt;
Před a po každém volání mqtt_publish() a nebo mqtt_subscribe() funkcí je potřeba sledovat obsah následují položky:&lt;br /&gt;
&lt;br /&gt;
 sys[2202] 09 i R   výsledek pro tyto funkce: mqtt_publish(), mqtt_subscribe(), mqtt_unsubscribe_index(), mqtt_unsubscribe_name()&lt;br /&gt;
                     -8 = SUBACK dorazil z Broker ale s indikovanou chybou (Failure Bit), můžete volat další funkci&lt;br /&gt;
                     -7 = vybraná položka (řádek) subscribe tabulky je prázdná, není co odhlašovat&lt;br /&gt;
                     -6 = timeout (možnosti: publish neprovedeno, nebo: SUBACK vůbec nedorazil, nebo: UNSUBACK vůbec nedorazil), můžete volat další funkci&lt;br /&gt;
                     -5 = nespravne parametry (hodnoty, např. index) např. jejich celková délka se nevleze do paketu&lt;br /&gt;
                     -4 = nespravne parametry (počet parametrů)&lt;br /&gt;
                     -3 = funkce zavolána dříve (nebo opakovaně) než bylo dokončeno předchozí volání funkce, takže toto volání je ignorováno&lt;br /&gt;
                     -2 = SDS není připojeno k brokeru (buď právě ještě probíhá připojování, nebo není vůbec připojeno)&lt;br /&gt;
                     -1 = bez aktivity&lt;br /&gt;
                      0 = nepoužito&lt;br /&gt;
                      1 = mqtt_publish() probíhá&lt;br /&gt;
                      2 = mqtt_publish() hotovo (OK - obdržen TCP ACK), můžete volat další funkci&lt;br /&gt;
                      4 = mqtt_subscribe() probíhá - čekám na SUBACK&lt;br /&gt;
                      8 = SUBACK dorazil z Broker, bez chyby (OK), můžete volat další funkci&lt;br /&gt;
                     16 = čekám na UNSUBACK (pouze pro unsubscribe funkce)&lt;br /&gt;
                     32 = UNSUBACK dorazil z Brokeru, můžete volat další funkce&lt;br /&gt;
&lt;br /&gt;
Informativní položka:&lt;br /&gt;
&lt;br /&gt;
 sys[2203] 09 i R   počet chyb v protokolu MQTT směrem z Brokeru&lt;br /&gt;
                    (objeví-li se chyba, dojde k okamžitému odpojení)&lt;br /&gt;
&lt;br /&gt;
Zatím nepoužité pozice:&lt;br /&gt;
&lt;br /&gt;
 sys[2204] až sys[2208]   reserved&lt;br /&gt;
&lt;br /&gt;
Pro každou příchozí datovou zprávu z Brokeru, je tato zpráva uložena do následujících sys: (pozor, každá nová příchozí zpráva přepíše předchozí údaje)&lt;br /&gt;
&lt;br /&gt;
 sys[2210] 09 s R   poslední přijatý Topic Name z Brokeru (broker publish)&lt;br /&gt;
 sys[2250] 09 s R   poslední přijatý Value z Brokeru (broker publish)&lt;br /&gt;
 sys[2290] 09 i R   timestamp pro poslední přijatou zprávu (broker publish)&lt;br /&gt;
&lt;br /&gt;
SDS umí přijaté datové zprávy uchovat, v rámci následující tabulky. Toto je důležité zejména pokud různé zprávy přicházejí velice rychle za sebou, aby se pro SDS-C program neztratili.&lt;br /&gt;
&lt;br /&gt;
Nejvíce lze mít až 32 položek (řádků) v tabulce, nicméně některá SDS nemají ve své paměti dostatečné místo a počet je tedy omezen. Pozor na to při psaní programu !&lt;br /&gt;
&lt;br /&gt;
 sys[2209] 09 i R   počet řádků v tabulce pro dané SDS (různé SDS mají různě volnou paměť, proto je v nich i různý počet použitelných Subscribe položek)&lt;br /&gt;
&lt;br /&gt;
Jednotlivé položky v tabulce příchozích zpráv:&lt;br /&gt;
&lt;br /&gt;
 sys[2211] až sys[2241] &lt;br /&gt;
          09 s R   název položky (Topic Name) pro daný index #1 - #31&lt;br /&gt;
                   (max délka záznamu dle SDS)&lt;br /&gt;
 &lt;br /&gt;
 sys[2242] až sys[2249]   reserved&lt;br /&gt;
 &lt;br /&gt;
 sys[2251] až sys[2281] &lt;br /&gt;
          09 s R   poslední přijatá hodnota (Value) ze publish zprávy ze brokeru pro daný index #1 - #31&lt;br /&gt;
                   (max délka záznamu dle SDS)&lt;br /&gt;
 &lt;br /&gt;
 sys[2282] až sys[2289]   reserved&lt;br /&gt;
 &lt;br /&gt;
 sys[2291] až sys[2321] &lt;br /&gt;
          09 i R   timestamp (hodnota uptime) v okamžiku příchodu zprávy z Brokeru&lt;br /&gt;
                   (pro detekci změny - příchozí zprávy z Brokeru)&lt;br /&gt;
                   0 = zatím nic nepřišlo&lt;br /&gt;
                   1..MAX = hodnota uptime v okamžiku poslední změny&lt;br /&gt;
&lt;br /&gt;
Nastavení Topic názvů každé položky (tedy &amp;quot;zápis&amp;quot; do sys[2211] až sys[2241]) se provede funkcí mqtt_subscribe(), které zadáváte pozici v této tabulce a název Topicu. Pokud se Subscribe nepovede, zůstane pozice v tabulce prázdná. Po připojení k Brokeru je tabulka vždy zcela prázdná, a SDS-C program si ji vždy musí dle potřeby naplnit. Pokud Broker pošle aktualizaci obsahu (value) na některou z přihlášených Topic položek, které SDS v této tabulce má, tak SDS automaticky přepíše patřičný řádek tabulky (tj. obsah jednoho ze sys[2251] až sys[2281]) a patřičně aktualizuje časovou známku změny.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reserved ==&lt;br /&gt;
&lt;br /&gt;
 sys[2322] až sys[2398]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MODBUS-TCP klient ==&lt;br /&gt;
&lt;br /&gt;
Ověření FW v SDS:&lt;br /&gt;
&lt;br /&gt;
 sys[2399] 09 i R   podpora pro MODBUS TCP&lt;br /&gt;
                     0 = NE&lt;br /&gt;
                     1 = ANO (první verze implementace v SDS)&lt;br /&gt;
&lt;br /&gt;
Každé nové TCP spojení na server:&lt;br /&gt;
&lt;br /&gt;
 sys[2400] 09 i R   stav průběhu modbus_tcp_connect()&lt;br /&gt;
                     -6 = timeout při čekání na připojení, nepřipojeno&lt;br /&gt;
                     -5 = nespravne parametry (hodnoty např. IP, port), nepřipojeno&lt;br /&gt;
                     -4 = nespravne parametry (počet parametrů), nepřipojeno&lt;br /&gt;
                     -3 = funkce zavolána dříve (nebo opakovaně) než bylo dokončeno předchozí volání funkce, takže toto volání je ignorováno&lt;br /&gt;
                     -2 = pokus o TCP připojení selhal&lt;br /&gt;
                     -1 = nepoužito&lt;br /&gt;
                      0 = klid, nic se neprovádí, ODPOJENO ! (lze se začít připojovat)&lt;br /&gt;
                      1 = bylo zahájeno připojování (otevírá se TCP spojení)&lt;br /&gt;
                      2 = TCP připojeno, můžete komunikovat &lt;br /&gt;
&lt;br /&gt;
MODBUS funkce - každá má svůj nezávislý stavový údaj:&lt;br /&gt;
&lt;br /&gt;
 sys[2401] 09 i R   stav průběhu zpracování funkce 0x01 - modbus_tcp_read(uid, 0x01, ...);&lt;br /&gt;
 sys[2402] 09 i R   stav průběhu zpracování funkce 0x02 - modbus_tcp_read(uid, 0x02, ...);&lt;br /&gt;
 sys[2403] 09 i R   stav průběhu zpracování funkce 0x03 - modbus_tcp_read(uid, 0x03, ...);&lt;br /&gt;
 sys[2404] 09 i R   stav průběhu zpracování funkce 0x04 - modbus_tcp_read(uid, 0x04, ...);&lt;br /&gt;
 sys[2405] 09 i R   stav průběhu zpracování funkce 0x05 - modbus_tcp_writesingle(uid, 0x05, ...);&lt;br /&gt;
 sys[2406] 09 i R   stav průběhu zpracování funkce 0x06 - modbus_tcp_writesingle(uid, 0x06, ...);&lt;br /&gt;
 sys[2415] 09 i R   stav průběhu zpracování funkce 0x0F - modbus_tcp_writemultiple(uid, 0x0F, ...);&lt;br /&gt;
 sys[2416] 09 i R   stav průběhu zpracování funkce 0x10 - modbus_tcp_writemultiple(uid, 0x10, ...);&lt;br /&gt;
                     pro všechny tyto stavy platí následující hodnoty:&lt;br /&gt;
                      -6 = timeout (neprovedeno), můžete volat další funkci&lt;br /&gt;
                      -5 = nespravne parametry (hodnoty), můžete volat další funkci&lt;br /&gt;
                      -4 = nespravne parametry (počet parametrů), můžete volat další funkci&lt;br /&gt;
                      -3 = funkce zavolána dříve (nebo opakovaně) než bylo dokončeno předchozí volání funkce, takže toto volání je ignorováno&lt;br /&gt;
                      -2 = SDS není připojeno (buď právě ještě probíhá připojování, nebo není vůbec připojeno)&lt;br /&gt;
                      -1 = bez aktivity, lze volat funkci&lt;br /&gt;
                       0 = provedeno OK (obdržena platná odpověď bez chybového kódu), můžete volat další funkci&lt;br /&gt;
                       1 .. 15 = obdržena odpověď s chybou 0x01 až 0x0F, můžete volat další funkci&lt;br /&gt;
                     256 = pracuji, čekejte na aktualizovanou hodnotu&lt;br /&gt;
&lt;br /&gt;
 sys[2417] až sys[2462]   reserved&lt;br /&gt;
&lt;br /&gt;
 sys[2463] 09 i R  poslední hodnota Unit Identifier zapsaná do MBAP hlavičky při odeslání zprávy&lt;br /&gt;
 &lt;br /&gt;
 sys[2464] 09 i R  poslední hodnota Transaction Identifier zapsaná do MBAP hlavičky při odeslání zprávy&lt;br /&gt;
&lt;br /&gt;
Přijatá data (funkce _read) - obsah je aktualizován pro každou novou přijatou MODBUS zprávu. Výsledky (přijatá data) jsou vždy uloženy do následujících sys (bez ohledu na typ MODBUS funkce).&lt;br /&gt;
&lt;br /&gt;
 sys[2465] 09 i R  timestamp poslední přijaté zprávy&lt;br /&gt;
                   (vhodné pro detekci nové přijaté zprávy)&lt;br /&gt;
 &lt;br /&gt;
 sys[2466] 09 i R  počet přijatých položek, pro poslední přijatou zprávu&lt;br /&gt;
                   (počet celých položek)&lt;br /&gt;
 &lt;br /&gt;
 sys[2467] 09 i R  přijatá hodnota Unit Identifier z příchozí MBAP hlavičky&lt;br /&gt;
                   (hodnota adresy je převzata z příchozí zprávy)&lt;br /&gt;
 &lt;br /&gt;
 sys[2468] 09 i R  přijatá hodnota Transaction Identifier z příchozí MBAP hlavičky&lt;br /&gt;
                   (hodnota adresy je převzata z příchozí zprávy) &lt;br /&gt;
 &lt;br /&gt;
 sys[2469] 09 i R  adresa první položky coil/input/register (které odpovídá údaj v sys[2470])&lt;br /&gt;
                   (MODBUS způsob číslování položek - adresa 1..n)&lt;br /&gt;
 &lt;br /&gt;
 sys[2470] až sys[2719]&lt;br /&gt;
          09 i R   přijaté hodnoty pro poslední přijatou zprávu&lt;br /&gt;
                    MODBUS funkce 0x01 a 0x02: každý sys[] má hodnotu 0 až 255, jednotlivé bity určují coils/input&lt;br /&gt;
                    MODBUS funkce 0x03 a 0x04: každý sys[] má hodnotu -32768 až 32767, tedy hodnotu pro každý jeden registr&lt;br /&gt;
&lt;br /&gt;
Pro funkce 0x01 a 0x02 jsou přijatá data kódována v jednobitovém tvaru, vždy po osmi bitech na jeden sys[]. Takže prvních osm bitů naleznete v sys[2465], dalších osm bitů v sys[2466] a tak dále.&lt;br /&gt;
&lt;br /&gt;
Pro funkce 0x03 a 0x04 jsou přijaté hodnoty registrů (MODBUS: vždy int16_t) uloženy postupně zasebou (tak jak přišli ve zprávě) do jednotlivých sys[], takže první registr je v sys[2465], druhý ve sys[2466] atd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rezerva&lt;br /&gt;
&lt;br /&gt;
 sys[2715] až sys[2809]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Statistiky COMx ==&lt;br /&gt;
&lt;br /&gt;
COM1:&lt;br /&gt;
&lt;br /&gt;
 sys[2810] 09 i R   reserved&lt;br /&gt;
 &lt;br /&gt;
 sys[2811] 09 i R   počet odeslaných bajtů (TX) na port COM1&lt;br /&gt;
 &lt;br /&gt;
 sys[2812] 09 i R   počet neodeslaných bajtů (zahozených) pro port COM1 &lt;br /&gt;
                    (tzn. SDS chce odeslat více bajtů než zvládá nastavená rychlost COM portu)&lt;br /&gt;
 &lt;br /&gt;
 sys[2813] 09 i R   počet čekajících bajtů na odeslání (TX) ve frontě pro port COM1&lt;br /&gt;
 &lt;br /&gt;
 sys[2814] 09 i R   počet přijatých bajtů (RX) na portu COM1&lt;br /&gt;
 &lt;br /&gt;
 sys[2815] 09 i R   počet nepřijatých bajtů (ignorované) pro port COM1 &lt;br /&gt;
                    (tzn. pro případ kdy do SDS je posláno více bajtů než SDS zpracuje, a tak musí zahazovat)&lt;br /&gt;
 &lt;br /&gt;
 sys[2816] 09 i R   počet nevyzvednutých přijatých bajtů (RX) ve frontě pro port COM1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rezerva&lt;br /&gt;
&lt;br /&gt;
 sys[2817] až sys[2860]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
COM6:&lt;br /&gt;
&lt;br /&gt;
 sys[2861] 09 i R   počet odeslaných bajtů (TX) na port COM6&lt;br /&gt;
 &lt;br /&gt;
 sys[2862] 09 i R   počet neodeslaných bajtů (zahozených) pro port COM6&lt;br /&gt;
                    (tzn. SDS chce odeslat více bajtů než zvládá nastavená rychlost COM portu)&lt;br /&gt;
 &lt;br /&gt;
 sys[2863] 09 i R   počet čekajících bajtů na odeslání (TX) ve frontě pro port COM6&lt;br /&gt;
 &lt;br /&gt;
 sys[2864] 09 i R   počet přijatých bajtů (RX) na portu COM6&lt;br /&gt;
 &lt;br /&gt;
 sys[2865] 09 i R   počet nepřijatých bajtů (ignorované) pro port COM6&lt;br /&gt;
                    (tzn. pro případ kdy do SDS je posláno více bajtů než SDS zpracuje, a tak musí zahazovat)&lt;br /&gt;
 &lt;br /&gt;
 sys[2866] 09 i R   počet nevyzvednutých přijatých bajtů (RX) ve frontě pro port COM6&lt;br /&gt;
&lt;br /&gt;
Pro využití všech těchto statistik, je potřeba mít v SDS aktuální firmware (starší FW zde vrací nuly).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konec dokumentu ==&lt;br /&gt;
&lt;br /&gt;
'''Konec dokumentu.'''&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS-C:_sdsc_sysp&amp;diff=968</id>
		<title>SDS-C: sdsc sysp</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS-C:_sdsc_sysp&amp;diff=968"/>
		<updated>2025-11-15T11:06:13Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje programovací jazyk '''SDS-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Zařízení Druhé Produktové Řady používají jazyk FULL-C (jiná část této Wiki).&lt;br /&gt;
&lt;br /&gt;
== Definice systémových proměnných SDS-C : pole sys[] ==&lt;br /&gt;
&lt;br /&gt;
Tzv. &amp;quot;systémová proměnná&amp;quot; je prvek v programovacím jazyku SDS-C, který má textový název, a se kterým se dá pracovat - číst hodnotu z proměnné a zapisovat hodnotu do proměnné. Často je čtení a zápis svázáno s fyzickou akcí (např. zápis do konkrétní systémové proměnné změní stav relé).&lt;br /&gt;
&lt;br /&gt;
SDS-C obsahuje celou řadu vyhrazených, předem pevně definovaných systémových 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. Úplný seznam je právě na této stránce.&lt;br /&gt;
&lt;br /&gt;
Proměnné poskytované SDS-C a navázané na HW zařízení, jsou označeny jako '''sys[x]''', kde index '''x''' je číslo do 0 do 1023 (popřípadě až do 2048 ale to jen na určitých typech zařízení).&lt;br /&gt;
&lt;br /&gt;
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í).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
''Legenda k tabulce:''&lt;br /&gt;
&lt;br /&gt;
Proměnná typu '''i''' je 32-bit signed integer (nejvyšší bit je znaménko, a zbývajících 31 bitů je číselná hodnota).&lt;br /&gt;
&lt;br /&gt;
Proměnná typu '''s''' je soubor znaků (string) - tj. '''text''' (řetězec znaků) - a tyto proměnné '''lze použít jen pro čtení'''.&lt;br /&gt;
&lt;br /&gt;
Některé proměnné lze jen číst ('''R'''), do některých lze kromě čtení i zapisovat ('''RW'''). &lt;br /&gt;
&lt;br /&gt;
Údaj '''XX''' v seznamu proměnných udává verzi firmware, kdy byla daná proměnná zavedena.&lt;br /&gt;
'''Význam hodnot:'''&lt;br /&gt;
* '''01''' - první verze, výchozí firmware ze začátku roku 2010&lt;br /&gt;
* '''02''' - druhá verze, bylo vydáno na přelomu roku 2010 a 2011&lt;br /&gt;
* '''03''' - třetí verze, tj. pouze pro firmware od 03.2011 &lt;br /&gt;
* '''04''' - čtvrtá verze, tj. pouze pro firmware od 06.2011 a novější&lt;br /&gt;
* '''05''' - pátá verze, tj. pouze pro firmware od 11.2011 a novější&lt;br /&gt;
* '''06''' - šestá verze, tj. pouze pro firmware od 03.2012 a novější&lt;br /&gt;
* '''07''' - sedmá verze, tj. pouze pro firmware od 07.2017 a novější&lt;br /&gt;
* '''08''' - osmá verze, tj. pouze pro firmware od 12.2018 a novější&lt;br /&gt;
* '''09''' - devátá verze, tj. pouze pro firmware od 06.2020 a novější&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Pokud máte starší verzi firmware, je možné, že některé později přidané položky nebudou k dispozici. Řešením je udržovat firmware ve vašem zařízení vždy aktuální.&lt;br /&gt;
&lt;br /&gt;
Jazyk SDS-C indexuje všechny pole od čísla 0 (nula) - všechna pole, tj. &amp;quot;sys[]&amp;quot;, &amp;quot;ram[]&amp;quot;, &amp;quot;text[]&amp;quot;, začínají se svým obsahem od indexu nula.&lt;br /&gt;
&lt;br /&gt;
'''Pozor''' však na číslování hardware vstupů a výstupů, ty jsou číslovány dle &amp;quot;elektrikářských&amp;quot; zvyklostí, to znamená že číslování začíná od čísla '''1''' ('''jednička''') - toto ale nemá hlubší vliv na SDS-C.&lt;br /&gt;
&lt;br /&gt;
Pokud narazíte na takové zařízení SDS, které má ještě velmi starou verzí webového rozhraní, kde byly ještě některé vstupy číslovány od nuly, aktualizujte si toto zařízení aby používalo nejnovější firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Důležité upozornění'''&lt;br /&gt;
&lt;br /&gt;
Protože SDS-C ''umí pracovat pouze a jen'' s '''32-bit signed''' integer čísly (tj. 1-bit znaménko a 31-bitů číslo, typ int32_t), tak dochází k (očekávané) konverzi '''32-bit unsigned''' čísel (tj. bez znaménka 32-bitů číslo, typ uint32_t) mezi vnitřními hodnotami v SDS a reprezentací v SDS-C (například když takové unsigned číslo je dotazováno například přes čtení &amp;quot;sys[]&amp;quot; hodnot).&lt;br /&gt;
&lt;br /&gt;
Jinýmy slovy - uvnitř SDS jsou drženy některé hodnoty jako 32-bit unsigned. Ale protože SDS-C pracuje pouze s 32-bit signed čísly, pak při čtení takových čísel zevnitř SDS jsou tyto čísla prezentovány v SDS-C jako 32-bit signed. Bitově se nezmění, jen se &amp;quot;mění&amp;quot; pohled na to, co který bit znamená, viz text dále.&lt;br /&gt;
&lt;br /&gt;
''Příklad:'' &lt;br /&gt;
Hodnota &amp;quot;sys[625]&amp;quot; reprezentuje &amp;quot;uplynulý čas od posledního zachyceného S0 impulsu na daném S0 vstupu&amp;quot;. Tato hodnota je udržována uvnitř SDS a program SDS-C k ní má přístup.&lt;br /&gt;
Tento čas je udán v milisekundách a začína na nule, a s každou milisekundou ze zvýší o jedničku. Protože SDS udržuje toto počítadlo (uvnitř své paměti) jako '''32-bit unsigned''', tak jakmile dojde k dopočítání do 31-bitů (tj. 2147483647) a překlopí se tedy 32. bit (tj. na 2147483648), tak SDS-C při čtení &amp;quot;sys[625]&amp;quot; vrátí zápornou hodnotu (tj. -2147483648). Toto je v pořádku - pokud si vypíšete jednotlivé bity, tak budou stále přesně odpovídat, ale tím že SDS-C interpetuje všechny čísla jako '''32-bit signed''', tak vzorovou hodnotu použije a zobrazí jako zápornou.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  skutečná binární hodnota         | 32-bit signed | 32-bit unsigned&lt;br /&gt;
  (32-bit)                         | SDS-C integer | (internal SDS)&lt;br /&gt;
 ----------------------------------+---------------+-----------------&lt;br /&gt;
  00000000000000000000000000000000 |             0 |               0&lt;br /&gt;
  00000000000000000000000000000001 |             1 |               1&lt;br /&gt;
  00000000000000001111111111111111 |         65535 |           65535&lt;br /&gt;
  01111111111111111111111111111111 |    2147483647 |      2147483647&lt;br /&gt;
  10000000000000000000000000000000 |   -2147483648 |      2147483648&lt;br /&gt;
  10000000000000000000000000000001 |   -2147483647 |      2147483649&lt;br /&gt;
  10000000000000001111111111111111 |   -2147418113 |      2147549183&lt;br /&gt;
  11111111111111111111111111111111 |            -1 |      4294967295&lt;br /&gt;
  11111111111111111111111111111110 |            -2 |      4294967294&lt;br /&gt;
  11111111111111111111111111111101 |            -3 |      4294967293&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, SDS vždy (ať ve svém firmware, tak v SDS-C kódu a proměnných) udržuje hodnoty ve stejném ''binárním'' obsahu. Jen interpretace a další práce s čísly je jiná. SDS samo vnitřně pracuje s '''32-bit unsigned''' hodnotami, a díky tomu na webu a všech M2M stránkách můžete vidět hodnoty v rozsahu od 0 do 4294967295. Zato SDS-C pracuje pouze se '''32-bit signed''' hodnotami, a proto stejné číslo je reprezentováno v rozsahu -2147483648 až 2147483647. Toto je vlastnost daná omezením implementace, zkrátka v SDS-C to nelze jinak udělat (pokud to je problém, což ale není, tak můžete přejít na zařízení s FULL-C které tyto omezení nemá).&lt;br /&gt;
&lt;br /&gt;
To lze snadno ve vašem SDS-C kódu ošetřit, a pokud pouze přenášíte hodnoty z SDS na server (přes HTTP-GET), tak se to dá snadno a ihned zpracovat na serveru &amp;quot;zpět&amp;quot; na '''32-bit unsigned''' hodnotu. Jednoduše na serveru přijmete '''signed''' číslo, a převedete ho například přetypování na '''unsigned''' číslo. Bity v paměti totiž jsou pro oba typy stejné.&lt;br /&gt;
&lt;br /&gt;
V tabulce jsou konkrétní &amp;quot;sys[]&amp;quot; položky, kterých se toto týká, označeny tímto symbolem: '''(!)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Použítí v SDS-C programu'''&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Příklad zápisu v programu: jaká je teplota na čidle 1 (celé stupně Celsia)? &lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
 teplota0_ve_stupnich_C = sys[310] / 100;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ne vždy je potřeba provádět 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:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
if (sys[310] &amp;gt; sys[311]) { echo('Prvni cidlo je teplejsi nez druhe.'); };&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Příklad zápisu v programu: jak zapnu relé RE1? (musíte vědět &amp;quot;co&amp;quot; &amp;quot;kam&amp;quot; zapsat):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
sys[231] = 255; // v tomto okamžiku dojde k ovládnutí relé č. 1 (- viz index 231 dole v seznamu)&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Můžete (od 03 verze SDS-C) použít i ''#define'', příklad:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
#define RELE1 sys[231]&lt;br /&gt;
&lt;br /&gt;
#define TEPLOTA sys[310]&lt;br /&gt;
&lt;br /&gt;
// ...&lt;br /&gt;
 &lt;br /&gt;
RELE1 = 255;&lt;br /&gt;
 &lt;br /&gt;
if (TEPLOTA &amp;gt; 3200) goto x;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pole ram[] ==&lt;br /&gt;
&lt;br /&gt;
Pole '''ram[]''' je samostatné nezávislé pole, dostupné pro SDS-C program od verze č. 03 (a výše).&lt;br /&gt;
&lt;br /&gt;
Obsah pole ram[] je uložen samostatně v RAM paměti, a je při resetu zařízení ztracen.&lt;br /&gt;
&lt;br /&gt;
Obsah pole ram[] se nekryje s dalšími proměnnými programu a tak dále (je to zcela samostatné paměťové pole).&lt;br /&gt;
&lt;br /&gt;
Pole ram[] lze indexovat číslem nebo proměnnou. Příkladem:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
hodnota = ram[10];&lt;br /&gt;
&lt;br /&gt;
index = 23;&lt;br /&gt;
ram[index] = 15 * 2;&lt;br /&gt;
&lt;br /&gt;
index = sys[1023];&lt;br /&gt;
ram[index] = 30;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pole ram[] je indexováno od indexu nula (tj.: ram[0]). Celková velikost (maximální index) je dán verzí SDS-C a konkrétního firmware v zařízení. &lt;br /&gt;
&lt;br /&gt;
Verze SDS-C č. 03 má maximální velikost pole ram[] nastavenou na 128 položek. '''Novější verze už mají počet zvýšený ''' - verze č. 06 má velikost ram[] nastavenou na 512 položek (každá o velikosti int32_t).&lt;br /&gt;
&lt;br /&gt;
Pole ram[] můžete využít k čemukoliv co potřebujete. Také i pro některé SDS-C funkce, jako je ''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[]), nebo při přenosu stránek z/do paměti DF.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ukládání trvalých dat ==&lt;br /&gt;
&lt;br /&gt;
Všechny verze SDS-C mají od k dispozi prostor v oblasti sys[100] až sys[115]. Toto je výchozí oblast pro uchovávání trvanlivých dat (tyto údaje se neztratí při výpadku napájení). Přímým zápisem, do těchto sys[] položek, dojde k zápisu do pevné paměti. Čtení se provádí opět přímým přístupem do těchto sys[].&lt;br /&gt;
&lt;br /&gt;
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 (NVM = Non-Volatile Memory), osazeném na desce zařízení SDS, a to prostřednictvím čtyř SDS-C funkcí.&lt;br /&gt;
&lt;br /&gt;
Pozn. historické verze zařízení SDS-MICRO LIGHT, kde se používá paměť EEPROM (na místo novější DataFlash), poskytuje vždy pouze základní rozsah indexů: 100 až 115, a neposkytuje rozšířený rozsah pevné paměti (tak jako zařízení s pamětí DataFlash).&lt;br /&gt;
&lt;br /&gt;
Více informací, způsob použití a důležité varování je uvedeno na [[SDS-C: DataFlash|stránce ohledně DataFlash]].&lt;br /&gt;
&lt;br /&gt;
Další možnost:&amp;lt;br&amp;gt;&lt;br /&gt;
Zařízení SDS řady ST mají k dispozici, kromě podpory pro DataFlash, i možnost využít Zálohovanou paměť RAM (ta drží obsah i při vypnutém napájení SDS, pokud je v SDS vložena nabitá zálohovací baterie).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pole text[] ==&lt;br /&gt;
&lt;br /&gt;
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) či práci s komunikačními moduly (GSM, LTE, LoRA).&lt;br /&gt;
&lt;br /&gt;
Za tímto účelem je připraveno pole '''text[]'''. Detailní popis je [[SDS-C:_popis_jazyka#Pole_text.5B.5D|zde]].&lt;br /&gt;
&lt;br /&gt;
SDS-C je omezený programovací jazyk z hlediska &amp;quot;práce s textem&amp;quot;. Pokud potřebujete intenzivně s textem pracovat, použijte zařízení SDS které má FULL-C jazyk.&lt;br /&gt;
&lt;br /&gt;
I přes omezení SDS-C je možné připojit různé komunikační moduly (GSM, LTE, LoRA), které komunikují prostřednictvím textových příkazů (viz vzorové programy).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pole share[] ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Od verze SDS-C č. '''08''' je možné použít pole '''share[]''', určené primárně pro sdílení textové informace mezi SDS-C programem a webovým rozhraním (tedy jako [[SDS-C:_sharing|sdílené proměnné]]).&lt;br /&gt;
&lt;br /&gt;
Práce s polem share[] je prakticky zcela shodná jako práce s polem text[]. Prakticky tak získává programátor dvě nezávislé pole pro uchování textu. Nicméně, některé SDS-C funkce vyhrazeně fungují jen s polem text[], ale to je vždy uvedeno v jejich popisu. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vyhrazené funkce ==&lt;br /&gt;
&lt;br /&gt;
Seznam konkrétních zabudovaných '''funkcí''' naleznete na [[SDS-C: sdsc sysf|jiné stránce]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Jednotné proměnné (pole sys[]) pro všechny výrobky řady SDS ==&lt;br /&gt;
&lt;br /&gt;
'''STAV SYSTÉMU'''&lt;br /&gt;
&lt;br /&gt;
 sys[0]   01 i R   &amp;quot;pair code&amp;quot; firmware (nastaven výrobcem napevno: identifikátor vázanosti firmware na hardware)&lt;br /&gt;
                    - lze využít pro rozeznání typu zařízení SDS, na kterém je spuštěn SDS-C program&lt;br /&gt;
 &lt;br /&gt;
 sys[1]   01 i R   počet přihlášených uživatelů do webového rozhraní (v okamžiku čtení této proměnné)&lt;br /&gt;
 &lt;br /&gt;
 sys[2]   01 s R   text SNMP-sysLocation, nastaveno ve webové administraci&lt;br /&gt;
 &lt;br /&gt;
 sys[3]   01 i R   hodnota '''UpTime10''' (doba běhu zařízení)&lt;br /&gt;
                    - počítá se od nuly (0) od každého zapnutí zařízení&lt;br /&gt;
                    - pouze 31 bitové počítadlo&lt;br /&gt;
                      (SDS si pro sebe interně počítá UpTime10 jako 32bit, nicméně&lt;br /&gt;
                       nejvyšší bit je odmaskován před předáním hodnoty do SDS-C programu)&lt;br /&gt;
                    - platné hodnoty: 0 až 2147483647 (včetně)&lt;br /&gt;
                    - po překročení 2147483647 (zde odpovídá up-time 248 dnů) začíná hodnota opět na nule&lt;br /&gt;
                    - jeden krok (zvýšení o jedničku) této hodnoty UpTime10 odpovídá právě '''10 msec''' uplynulému času &lt;br /&gt;
 &lt;br /&gt;
 sys[4]   01 i R   hodnota '''LOCAL''' času (UNIX čas, v sekundách)&lt;br /&gt;
                    - jedná se o lokální (eventuálně posunutý) čas, synchronizovaný se NTP serverem&lt;br /&gt;
                    - je zde už předem započítán GMT offset sys[26] (ten lze nastavit ve webovém rozhraní)&lt;br /&gt;
                    - je zde aplikován automatický posun letního času (je-li to povoleno ve webovém rozhraní)&lt;br /&gt;
                    - poskytnuto je pouze 31 bitové číslo (bude platné až do 19. leden 2038 včetně, &lt;br /&gt;
                      pak hodnota roluje na nulu - nejvyšší bit je odmaskován před předáním do SDS-C programu)&lt;br /&gt;
                    - platné hodnoty: 0 až 2147483647 (včetně)&lt;br /&gt;
 &lt;br /&gt;
 sys[5]   01 i R   rozpad LOCAL času: den (1 až 31)&lt;br /&gt;
 sys[6]   01 i R   rozpad LOCAL času: měsíc (1 až 12)&lt;br /&gt;
 sys[7]   01 i R   rozpad LOCAL času: rok (2011 a dále)&lt;br /&gt;
 sys[8]   01 i R   rozpad LOCAL času: hodina (0 až 23)&lt;br /&gt;
 sys[9]   01 i R   rozpad LOCAL času: minuta (0 až 59)&lt;br /&gt;
 sys[10]  01 i R   rozpad LOCAL času: sekunda (0 až 59)&lt;br /&gt;
 sys[11]  01 i R   rozpad LOCAL času: číslo dne v týdnu - počet dní od Neděle (0 až 6)&lt;br /&gt;
&lt;br /&gt;
'''Upozornění''': hodnota LOCAL času je platná až po úspěšném získání informací z NTP serveru. Po zapnutí (restartu) zařízení je NTP čas (sys[38], sys[4]) nastaven na nulu. Čas je automaticky v SDS aktualizován co jednu sekundu pomocí vnitřních hodin v SDS, a dále je hodnota času pravidelně (v delším intervalu) upřesněna dotazem na NTP server.&lt;br /&gt;
&lt;br /&gt;
V případě, že není zapnuta automatika DST (letní čas) a GMT offset je nastaven na nulu, tak je hodnota LOCAL času identická s NTP časem (UTC). Jakmile se ale nastaví offset nebo aktivuje posun letního času, už jsou tyto hodnoty odlišné (NTP je UTC, a LOCAL je místní (posunutý) čas). Pro různé použití je potřeba různých časů (často je potřeba UTC pro časové známkování údajů, a zase někdy je vhodný LOCAL pro interakci s uživatelem a pro různé výpisy).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ethernet, Internet ==&lt;br /&gt;
&lt;br /&gt;
 sys[12]  01 i R   IP[0] adresa zařízení (nastaveno ve webové administraci)&lt;br /&gt;
 sys[13]  01 i R   IP[1] adresa zařízení&lt;br /&gt;
 sys[14]  01 i R   IP[2] adresa zařízení&lt;br /&gt;
 sys[15]  01 i R   IP[3] adresa zařízení&lt;br /&gt;
 &lt;br /&gt;
 sys[16]  01 i R   GW_IP[0] adresa brány (nastaveno ve webové administraci)&lt;br /&gt;
 sys[17]  01 i R   GW_IP[1] adresa brány&lt;br /&gt;
 sys[18]  01 i R   GW_IP[2] adresa brány&lt;br /&gt;
 sys[19]  01 i R   GW_IP[3] adresa brány&lt;br /&gt;
 &lt;br /&gt;
 sys[20]  01 i R   NETMASK[0] síťová maska (nastaveno ve webové administraci)&lt;br /&gt;
 sys[21]  01 i R   NETMASK[1] síťová maska&lt;br /&gt;
 sys[22]  01 i R   NETMASK[2] síťová maska&lt;br /&gt;
 sys[23]  01 i R   NETMASK[3] síťová maska&lt;br /&gt;
&lt;br /&gt;
 sys[24]  01 i R   stav rozhraní Ethernet (je spuštěno?)&lt;br /&gt;
                    == 0 : komunikace přes Ethernet není k dispozici (odpojený kabel, vypnutá protistrana nebo switch, atd.)&lt;br /&gt;
                    != 0 : Ethernetová komunikace je funkční (LINK OK)&lt;br /&gt;
 &lt;br /&gt;
 sys[25]  01 i R   rychlost připojení k síti Ethernet (hodnoty: 0, 10, 100)&lt;br /&gt;
                    == 0   : neznámá rychlost (není k dispozici Ethernet)&lt;br /&gt;
                    == 10  : 10 MBit per sec&lt;br /&gt;
                    == 100 : 100 MBit per sec&lt;br /&gt;
&lt;br /&gt;
 sys[26]  04 i RW  hodnota GMT offsetu pro NTP (nastaveno v administraci ve webovém rozhraní)&lt;br /&gt;
                    - platné hodnoty: -11 až 11 (včetně) (údaj v hodinách)&lt;br /&gt;
                    - zápis je možný, ale změněná hodnota (ze SDS-C) není uložena do pevné paměti &lt;br /&gt;
                      (po resetu zařízení se vráti na poslední uloženou hodnotu)&lt;br /&gt;
&lt;br /&gt;
 sys[27]  06 i R   platnost přidělené IP adresy zařízení SDS&lt;br /&gt;
                    == 0 : zařízení SDS nemá přidělenou platnou IP adresu (typický důvod: čeká se na DHCP)&lt;br /&gt;
                    != 0 : zařízení SDS má přidělenou platnou IP adresu a může komunikovat přes Ethernet&lt;br /&gt;
 &lt;br /&gt;
 sys[28]  06 i R   poslední okamžik kdy byla změněna IP adresa,&lt;br /&gt;
                   buď ručně z webového rozhraní (administrace) nebo DHCP serverem (je-li DHCP zapnuto)&lt;br /&gt;
                    - údaj odpovídá stavu UpTime10 (1 krok = 10 msec) v daný okamžik&lt;br /&gt;
 &lt;br /&gt;
 sys[29]  06 i R   DHCP: stav (lze použít pro kontrolu správné funkce DHCP klienta v SDS)&lt;br /&gt;
                    == 0 : v klidu (nic se neprovádí, nebo DHCP je vypnuté)&lt;br /&gt;
                    == 1 : odesláno DHCP DISCOVER&lt;br /&gt;
                    == 2 : obdrženo DHCP OFFER&lt;br /&gt;
                    == 3 : odesláno DHCP REQUEST&lt;br /&gt;
                    == 4 : obdrženo DHCP ACK&lt;br /&gt;
                    == 5 : IP adresa je přidělena (BOUND)&lt;br /&gt;
                    == 6,7,8,9,10,11 : zpracování DHCP RENEW&lt;br /&gt;
 &lt;br /&gt;
 sys[30]  06 i R   aktuální hodnota &amp;quot;DHCP Lease Time&amp;quot;&lt;br /&gt;
                    - hodnota je nastavena v okamžiku DHCP BOUND (při přidělení (nové) IP adresy)&lt;br /&gt;
                    - hodnota je každou 1 sec snížena o jednotku (když dojde na nulu, klient začne obnovovat IP adresu)&lt;br /&gt;
                    - údaj je uveden v jednotkách [sec]&lt;br /&gt;
&lt;br /&gt;
 sys[31]  04 i R   MAC[0] (celá MAC je nastavena ve webovém rozhraní)&lt;br /&gt;
 sys[32]  04 i R   MAC[1] &lt;br /&gt;
 sys[33]  04 i R   MAC[2] &lt;br /&gt;
 sys[34]  04 i R   MAC[3] &lt;br /&gt;
 sys[35]  04 i R   MAC[4] &lt;br /&gt;
 sys[36]  04 i R   MAC[5] (vždy je vyplněno dolních 8 bitů)&lt;br /&gt;
&lt;br /&gt;
 sys[37]  06 i R   NTP Client Status (synchronizace času)&lt;br /&gt;
                    == 0 : nesynchronizováno&lt;br /&gt;
                    == 1 : úspěšně přijal paket od NTP Serveru&lt;br /&gt;
               W   zápis hodnoty 10 (přesně a pouze: 10) do tohoto indexu vyvolá nucený NTP dotaz &lt;br /&gt;
                   (dotaz se odešle za 10sec od takovéhoto zápisu)&lt;br /&gt;
 &lt;br /&gt;
 sys[38]  07 i R   čistý UTC čas - v sekundách (UNIX Epoch čas)&lt;br /&gt;
                    - není zde aplikován offset, ani automatika letního času&lt;br /&gt;
                    - přímá hodnota získaná z NTP serveru (tj. jeho odpověď), &lt;br /&gt;
                      uvnitř SDS je sice udržována jako 32bit, &lt;br /&gt;
                      ale do SDS-C programu je hodnota předána jen jako 31bit číslo (nejvyšší 32.bit je odmaskován).&lt;br /&gt;
 &lt;br /&gt;
 sys[39]  07 i R   stav automatiky přepínání Letního Času&lt;br /&gt;
                    == 0 : automatika zakázána, lokální čas není ovlivněn&lt;br /&gt;
                    == 1 : automatika povolena, ale v současné době (podle NTP UTC času) je letní čas neaktivní (tzn. je &amp;quot;SEČ&amp;quot;).&lt;br /&gt;
                    == 2 : automatika povolena, a v současné době (podle NTP UTC času) je letní čas aktivní (tzn. je &amp;quot;SELČ&amp;quot;).&lt;br /&gt;
                           (tzn. do sys[4] je připočten nejen offset ze sys[26], ale teď také plus 1 hodina kvůli SELČ).&lt;br /&gt;
          09 i W   pouze pro případ vypnutého NTP: ruční ovládání automatiky (tzn. povolena nebo nepovolena) (SELČ pak automatika sama rozhodne, je-li povolena)&lt;br /&gt;
                    zápis 0 : vypnout automatiku (nebude pracovat = nebude aplikoval posun pro SELČ pro nastavený rozsah v roce), sys[39] pak vrátí 0 při čtení&lt;br /&gt;
                    zapis 3 : zapnout automatiku (automatika aplikuje posun pro SELČ podle toho jaký je aktuální čas a datum), sys[39] pak vrátí 1 nebo 2 dle stavu  &lt;br /&gt;
 &lt;br /&gt;
 sys[138] 09 i R   stav RTC (záloha času - pouze SDS se záložní baterií)&lt;br /&gt;
                   zatím stále 0, tzn. nepoužito, další obsah se chystá (nový FW)&lt;br /&gt;
 &lt;br /&gt;
 sys[139] 09 i R   vyhrazeno&lt;br /&gt;
&lt;br /&gt;
Princip funkce automatiky letního času je popsán jinde na této wiki. Funkce automatiky je samozřejmě volitelná (viz: ruční nastavení ve webovém rozhraní).&lt;br /&gt;
&lt;br /&gt;
 sys[40] až sys[44]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Provozní údaje ==&lt;br /&gt;
&lt;br /&gt;
 sys[45]  06 i R   relativní čas v milisekundách, počítaný od zapnutí zařízení (tj. UpTime1)&lt;br /&gt;
                    - po resetu zařízení začíná vždy počítat od nuly&lt;br /&gt;
                    - každou milisekundu se zvýší o 1 (narozdíl od UpTime10);&lt;br /&gt;
                      tzn. toto je velmi podobná hodnota jako UpTime, ale je v jiných jednotkách!&lt;br /&gt;
                    - pro sys[45] je k dispozici 31 bitů,&lt;br /&gt;
                      takže po 2147483648 msec dojde k vynulování sys[45] a počítá se opět od nuly nahoru&lt;br /&gt;
                      (pozn.: SDS si interně udržuje hodnotu jako 32bitů, ale do SDS-C programu se předává jen 31bitů).&lt;br /&gt;
&lt;br /&gt;
 sys[46]  06 i R   &amp;quot;surová&amp;quot; (raw) hodnota teploty SoC chipu (není to přímo teplota v degC, ale speciální digitální hodnota),&lt;br /&gt;
                   význam hodnot závisí na typu konkrétního zařízení SDS. &lt;br /&gt;
                   Je to dáno způsobem měření této teploty, a převod na stupně Celsia je jednoduchý, přes vzorec.&lt;br /&gt;
 &lt;br /&gt;
 SDS MICRO (LM), MACRO (LM), UPS, IO6 (LM): &lt;br /&gt;
  Vzorec pro přepočet na degC je [ teplota_SoC_v_degC = ((5*(59-30*((3/1024)*sys[46])))/2) ]&lt;br /&gt;
 &lt;br /&gt;
 SDS TTCPRO, MINI, MACRO-ST, MICRO-ST, IO6-ST: &lt;br /&gt;
  Vzorec pro přepočet na degC je [ teplota_SoC_v_degC = (((((sys[46]/4096)*3.3)-0.76)/0.0025)+25) ]&lt;br /&gt;
&lt;br /&gt;
Teplota SoC je pouze orientační, a je měřena s přesností +/- 5 degC.&lt;br /&gt;
&lt;br /&gt;
 sys[137] 09 i R   POUZE VARIANTY &amp;quot;ST&amp;quot; - počet provedených cyklů procesoru (provedených CPU instrukcí) od zapnutí/restartu &lt;br /&gt;
                   (při přetečení 2^31 počítá opět od nuly, pořád dokola)&lt;br /&gt;
&lt;br /&gt;
Hodnota v indexu 137 je nejjemnější možný &amp;quot;časovač&amp;quot;, dostupný pro program. Délka kroku jednotky odpovídá frekvenci jádra (ta je různá pro jednotlivá SDS, pro řadu ST typicky 120MHz, tedy 1 krok je 8.3nsec). &lt;br /&gt;
Tento index vyžaduje aktuální FW (11/2022 nebo novější).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Rozhraní sériové komunikace ==&lt;br /&gt;
&lt;br /&gt;
SDS-C poskytuje přístup k sériovému rozhraní COM1 a COM6. Pouze rozhraní COM1 je také současně přístupno přes převodník Eth/UART (VCP). Program v SDS-C může přistupovat jak ke COM1, tak ke COM6.&lt;br /&gt;
&lt;br /&gt;
Pomocí SDS-C lze zapisovat do sériového rozhraní, a číst data ze sériového rozhraní. Data, přicházející z venku do zařízení SDS, jsou ukládána do příslušného bufferu (RX FIFO), takže lze pomocí SDS-C programu číst i pomaleji, než je rychlost příchozích dat. Buffery jsou malé (zhruba 1kB), proto je potřeba data zpracovávat rychle a včas, ať nedojde k jejich ztrátě.&lt;br /&gt;
&lt;br /&gt;
Poznámka: čtení z UART RX bufferů je k dispozci jen od verze SDS-C č. '''04''' (včetně) a výše. &lt;br /&gt;
Poznámka: UART buffery (pro obě sériové rozhraní) jsou neustále aktivní a příjem dat z UARTu probíhá po celou dobu zapnutí zařízení.&lt;br /&gt;
&lt;br /&gt;
Rozhraní COM1:&lt;br /&gt;
&lt;br /&gt;
 sys[48]  04 i R   informace, je-li přijímací (RX) buffer rozhraní UART-COM1 prázdný. Možné hodnoty:&lt;br /&gt;
                    == 0 : v RX bufferu je jeden popř. více znaků, lze je přečíst (buffer není prázdný)&lt;br /&gt;
                    == 1 : RX buffer je '''prázdný''' (nebyl přijat znak od posledního vyprázdnění bufferu)&lt;br /&gt;
 &lt;br /&gt;
 sys[49]  04 i R   čtení (vyjmutí) znaku z přijímacího (RX) bufferu rozhraní UART-COM1&lt;br /&gt;
                    - čtením tohoto sys[49] se vyjme právě jeden znak (je-li v bufferu nějaký k dispozici), &lt;br /&gt;
                      takže si dejte '''pozor''' protože po vyjmutí už tento znak v bufferu samozřejmě není ! &lt;br /&gt;
                      (Toto může způsobit nezkušenému programátorovi potíže). &lt;br /&gt;
                      Proto je vhodnější čtení ze sys[49] provést vždy jednou do vlastní proměnné, &lt;br /&gt;
                      a s tou pak dále dle libosti pracovat.&lt;br /&gt;
                   Možné hodnoty: &lt;br /&gt;
                    == 0 až 255 : hodnota právě vyjmutého znaku z RX bufferu (znak přijatý UARTem)&lt;br /&gt;
                    == -1       : v bufferu není jakýkoliv znak k dispozici (prázdný buffer)&lt;br /&gt;
&lt;br /&gt;
Poznámka: UART-COM1 buffer je '''vymazán vždy tehdy''', když se připojí TCP klient k převodníku Eth/UART - pozor!&lt;br /&gt;
&lt;br /&gt;
 sys[50]  02 i R   je připojen klient (Ethernet) k převodníku Eth/UART ?&lt;br /&gt;
                    == 0 : není připojen klient&lt;br /&gt;
                    != 0 : je připojen klient (přes TELNET port)&lt;br /&gt;
 sys[51]  02 i R   rychlost [bps] rozhraní UART - COM1 (viz převodník Eth/UART)&lt;br /&gt;
 sys[52]  02 i R   počet datových bitů rozhraní UART - COM1 (platné hodnoty - podle typu SDS: 5,6,7,8)&lt;br /&gt;
 sys[53]  02 i R   počet stop bitů rozhraní UART - COM1 (platné hodnoty - podle typu SDS: 1,2)&lt;br /&gt;
 sys[54]  02 i R   nastavení paritního bitu rozhraní UART - COM1 (platné hodnoty - podle typu SDS: 0,1,2,3,4,5)&lt;br /&gt;
&lt;br /&gt;
Poznámka: parametry sériového rozhraní UART COM1 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í).&lt;br /&gt;
&lt;br /&gt;
Rozhraní COM6:&lt;br /&gt;
&lt;br /&gt;
 sys[55]  04 i R   informace, je-li přijímací (RX) buffer rozhraní UART-COM6 prázdný. Možné hodnoty:&lt;br /&gt;
                    == 0 : v RX bufferu je jeden popř. více znaků, lze je přečíst (buffer není prázdný)&lt;br /&gt;
                    == 1 : RX buffer je '''prázdný''' (nebyl přijat znak od posledního vyprázdnění bufferu)&lt;br /&gt;
 &lt;br /&gt;
 sys[56]  04 i R   čtení (vyjmutí) znaku z přijímacího (RX) bufferu rozhraní UART-COM6&lt;br /&gt;
                    - čtením tohoto sys[56] se vyjme právě jeden znak (je-li v bufferu nějaký k dispozici)&lt;br /&gt;
                   Možné hodnoty: &lt;br /&gt;
                    == 0 až 255 : hodnota právě vyjmutého znaku z RX bufferu (znak přijatý UARTem)&lt;br /&gt;
                    == -1       : v bufferu není jakýkoliv znak k dispozici (prázdný buffer)&lt;br /&gt;
&lt;br /&gt;
 sys[57]  02 i R   rychlost [bps] rozhraní UART - COM6 &lt;br /&gt;
 sys[58]  02 i R   počet datových bitů rozhraní UART - COM6 (platné hodnoty - podle typu SDS: 5,6,7,8,9)&lt;br /&gt;
 sys[59]  02 i R   počet stop bitů rozhraní UART - COM6 (platné hodnoty - podle typu SDS: 1,2)&lt;br /&gt;
 sys[60]  02 i R   nastavení paritního bitu rozhraní UART - COM6 (platné hodnoty - podle typu SDS: 0,1,2,3,4,5)&lt;br /&gt;
&lt;br /&gt;
Rozhraní UART - COM6 je k dispozici jen na SDS-MINI, SDS-MICRO-ST a SDS-MACRO-ST, a je přístupné jen z SDS-C programu.&lt;br /&gt;
&lt;br /&gt;
Doplňující statistiky (počty rx/tx bajtů atd.) jsou k dispozici na indexu 2800+, viz dále na této stránce (dostupnost těchto údajů je závislá na instalovaném aktuálním FW ve vašem SDS).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Generátor náhodných čísel ==&lt;br /&gt;
&lt;br /&gt;
 sys[61]  06 i R   generátor náhodných čísel&lt;br /&gt;
                    - při každém přečtení sys[61] je poskytnuto náhodné číslo&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Výsledek převodu textu na číslo ==&lt;br /&gt;
&lt;br /&gt;
Pro převod textu (z určené pozice pole ''text'' či ''share'') na číslo se používá funkce SDS-C: ''atoi''. Aby bylo možné výsledek převodu získat, musíte si jej přečíst ze ''sys[62]''.&lt;br /&gt;
&lt;br /&gt;
 sys[62]  06 i RW  výsledek převodu provedeného funkcí '''atoi(text[index]);'''&lt;br /&gt;
&lt;br /&gt;
Pro více informací se podívejte přímo na návod k této funkci.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Nastavení rychlosti provádění SDS-C programu ==&lt;br /&gt;
&lt;br /&gt;
SDS-C program může ovlivnit rychlost svého vykonávání. Buď se každá instrukce provede právě s minimálním krokem co 1 msec, nebo se dá tato (často žádoucí) vlastnost snadno vypnout. Pozor, hodnota 1 msec není vždy garantována, např. při zavolání funkce která pracuje s pomalou periférií dojde k čekání, dokud se požadovaná funkce nedokončí.&lt;br /&gt;
&lt;br /&gt;
 sys[63]  04 i RW  vypnutí rychlostního omezení běhu programu, nastavte na:&lt;br /&gt;
                    == 0   : (výchozí hodnota po spuštění programu) - jeden celý příkaz se provede '''co 1 msec'''&lt;br /&gt;
                    == 128 : program je prováděn s co největší rychlostí (bez zarovnávacího 1 msec kroku) &lt;br /&gt;
                             ( pozor ale na realizaci čekacích smyček, pak lze použít jen k tomu určené SDS-C funkce nebo sys[64] )&lt;br /&gt;
&lt;br /&gt;
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 programu je vykonán právě co 1 msec).&lt;br /&gt;
&lt;br /&gt;
Tohoto faktu (krok 1 msec) některé programy využívají k realizaci čekacích smyček, když se předpokládá jeden vykonaný příkaz za 1 msec. Není to však vhodné, protože SDS nedává garanci že se vždy bude jednat přesně o 1 msec (může docházet k náhodnému zdržení až o několik msec, v záležitosti na ostatní činnost systému). Pokud však vypnete toto rychlostní omezení, tak takové případné čekací smyčky přestanou plnit svou funkci (prakticky skončí mnohem dříve): proto ve svých programech používejte pouze k realizaci &amp;quot;čekání&amp;quot; pouze k tomu určené funkce, nebo případně sys[64] nebo některý z UpTime indexů či sys[137] atd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Časování ==&lt;br /&gt;
&lt;br /&gt;
Pro přesnější časování programu, popř. pro spuštění nějaké události po přesně daném intervalu, lze s výhodou využít následující proměnnou:&lt;br /&gt;
&lt;br /&gt;
 sys[64]  01 i RW  sekundový odpočítávač &lt;br /&gt;
                    - zapište libovolné kladné číslo, a systém každou vteřinu toto číslo sníží o 1, &lt;br /&gt;
                      až do nuly, kde v sys[64] zůstane nula (dokud tam zase něco nezapíšete)&lt;br /&gt;
                    - nejvyšší možná použitelná hodnota: (31-bitů) 2147483647 secs (včetně)&lt;br /&gt;
&lt;br /&gt;
Samozřejmě lze využít i jiné způsoby, ale tento je k tomu explicitně určen, vyhovuje-li hrubý krok 1 sekunda. Pro jemnější časování jsou pak vhodnější indexy s UpTime hodnotou, nebo sys[137] pro nejvíce jemné čekání - tyto indexy ale nemají funkci odpočítávání (jsou jen pro čtení), takže hlídání obsahu si už musíte řešit sami ve svém programu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== OSI7 funkce ==&lt;br /&gt;
&lt;br /&gt;
OSI7 funkce jsou určeny pro komunikaci mezi SDS a vnějším světem připojeným přes Ethernet (např. se servery v Internetu).&lt;br /&gt;
&lt;br /&gt;
Všechny funkce OSI7 poskytují průběžný stav své činnosti:&lt;br /&gt;
 sys[65]  01 i R   status code - hlášení průběhu, úspěšnosti, nebo chyby OSI7 funkcí (DNS, HTTP-GET, email, ...)&lt;br /&gt;
                    - význam hodnot viz [[OSI7_status_code|popis zde]]&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
 sys[66]  01 i R   bajt IP[0] - vystup DNS resolveru, funkce ''dns_resolv(&amp;quot;dotazovanadomena.cz&amp;quot;);''&lt;br /&gt;
 sys[67]  01 i R   bajt IP[1] - vystup DNS resolveru, funkce ''dns_resolv(&amp;quot;dotazovanadomena.cz&amp;quot;);''&lt;br /&gt;
 sys[68]  01 i R   bajt IP[2] - vystup DNS resolveru, funkce ''dns_resolv(&amp;quot;dotazovanadomena.cz&amp;quot;);''&lt;br /&gt;
 sys[69]  01 i R   bajt IP[3] - vystup DNS resolveru, funkce ''dns_resolv(&amp;quot;dotazovanadomena.cz&amp;quot;);''&lt;br /&gt;
&lt;br /&gt;
Pro funkci DNS resolveru je potřeba provést konfiguraci (přes webové rozhraní).&lt;br /&gt;
 sys[70]  01 i R   bajt DNS_R_IP[0] - adresa samotného DNS resolveru (DNS server)&lt;br /&gt;
 sys[71]  01 i R   bajt DNS_R_IP[1] - adresa samotného DNS resolveru&lt;br /&gt;
 sys[72]  01 i R   bajt DNS_R_IP[2] - adresa samotného DNS resolveru&lt;br /&gt;
 sys[73]  01 i R   bajt DNS_R_IP[3] - adresa samotného DNS resolveru&lt;br /&gt;
&lt;br /&gt;
 sys[74]  01 s R   text, reserved (v této verzi nepoužito)&lt;br /&gt;
&lt;br /&gt;
Rozšířená funkcionalita pro DNS resolver (pouze ve FW od 11/2025):&lt;br /&gt;
&lt;br /&gt;
 sys[303]  09 i R   DNS RESOLV - (read:) actual TTL live value (= 1..MAX, in seconds) for the very last resolved DNS name (or 0 = no resolv done or finished yet)&lt;br /&gt;
 sys[303]  09 i W   DNS RESOLV - write anything to clear the DNS cache&lt;br /&gt;
 sys[304]  09 i R   DNS RESOLV - (read:) timestamp (UTC) of the latest DNS server response (packet) as requested by dns_resolv() function (if 0 then no response received, or cache has expired)&lt;br /&gt;
 sys[305]  09 i R   DNS RESOLV - (read:) get the last set hard TTL limit (0 = invalid (will use 1209600 as default), otherwise 1..MAX = time in seconds)&lt;br /&gt;
 sys[305]  09 i W   DNS RESOLV - set the hard TTL value limit (in seconds)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
HTTP GET:&lt;br /&gt;
&lt;br /&gt;
 sys[75]  01 i R   návratový kód webového serveru pro HTTP GET (odpověď z webového serveru)&lt;br /&gt;
                    - nastaveno po dokončení práce funkce '''http_get()'''&lt;br /&gt;
                    - např. číslo '''200''' pro 'OK', '''404''' pro 'not found', a tak dále.&lt;br /&gt;
 &lt;br /&gt;
 sys[76]  03 i RW  číslo portu který chcete aby HTTP klient použil (výchozí hodnota po startu je '''80''')&lt;br /&gt;
                    - '''pozn.''' hodnota tohoto sys[76] se přebere v okamžiku zavolání '''http_get''',&lt;br /&gt;
                      pozdější zápisy mají vliv až zase v okamžiku dalšího zavolání '''http_get'''.&lt;br /&gt;
 &lt;br /&gt;
 sys[77]  04 i RW  ukládat data přijatá z HTTP serveru po obdržení odpovědi na HTTP GET požadavek&lt;br /&gt;
                   do pole ram[]. Tato funkce je výhodná pro okamžité řízení SDS-C programu. &lt;br /&gt;
                   Nastavte na:&lt;br /&gt;
 &lt;br /&gt;
                    == 0 : jakékoliv přijaté data jsou '''zahozena''', &lt;br /&gt;
                           neuloží se (nedojde ke změně obsahu ram[] nebo text[])&lt;br /&gt;
 &lt;br /&gt;
                    == 1 : prvních sys[78] bajtů odpovědi je vloženo do pole ram[] v rozsahu ram[1] až ram[sys[78]]&lt;br /&gt;
                           a do ram[0] je uložena délka odpovědi (tj. hodnota: -1, 0, 1, 2, ... až sys[78]).&lt;br /&gt;
                           (tzn. původní obsah této oblasti pole ram[] je přepsán)&lt;br /&gt;
                           (pokud bude obdržen znak 0x00 dříve, než se zapíše sys[78] bajtů do ram[], &lt;br /&gt;
                            bude zápis přerušen a přijatý 0x00 nebude uložen)&lt;br /&gt;
 &lt;br /&gt;
                    == 2 : prvních sys[78] bajtů odpovědi je vloženo do pole text[] v rozsahu text[0] až text[sys[78]]&lt;br /&gt;
                           a do ram[0] je uložena délka odpovědi (tj. hodnota: -1, 0, 1, 2, ... až sys[78]).&lt;br /&gt;
                           (tzn. původní obsah této oblasti pole text[] a položka ram[0] je přepsán)&lt;br /&gt;
                           (pokud bude obdržen znak 0x00 dříve, než se zapíše sys[78] bajtů do ram[], &lt;br /&gt;
                            bude zápis přerušen a přijatý 0x00 nebude uložen)&lt;br /&gt;
 &lt;br /&gt;
                   Hodnota do ram[0] je vždy zapsaná, ať je sys[77] jakékoliv. Počítejte s tím ve svém programu !&lt;br /&gt;
 &lt;br /&gt;
 sys[78]  04 i RW  počet bajtů, které CHCETE uložit do ram[] nebo text[] po přijetí HTTP GET odpovědi&lt;br /&gt;
                    - výchozí hodnota je '''32''' (tzn. uloží se 32 znaků + samostatně délka do ram[0])&lt;br /&gt;
                    - maximální hodnota je omezena velikostí pole ram[] nebo text[]&lt;br /&gt;
                    - pozor! pokud zapíšete '''0''', budou všechna data zahozena, &lt;br /&gt;
                      ale i v takovém případě dojde k přepisu ram[0] (viz výše)&lt;br /&gt;
&lt;br /&gt;
 sys[79] až sys[80]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
Pozor, v případě nenulového sys[77] HTTP klient čeká tak dlouho, dokud nedostane všech sys[78] bajtů odpovědi z protistrany. To je častou příčinou &amp;quot;problémů&amp;quot; kdy protistrana neodpoví dostatečně dlouhou odpovědí, a klient má stále otevřené spojení a stále čeká a čeká... až dojde na timeout. Což je pak potřeba důsledně a správně ošetřit ve vašem SDS-C programu.&lt;br /&gt;
&lt;br /&gt;
Pro funkci SMTP je potřeba provést konfiguraci (přes webové rozhraní):&lt;br /&gt;
 sys[81]  01 i R   bajt SMTP_S_IP[0] - adresa SMTP serveru (je použita pro funkci '''smtp_send()''')&lt;br /&gt;
 sys[82]  01 i R   bajt SMTP_S_IP[1] - adresa SMTP serveru&lt;br /&gt;
 sys[83]  01 i R   bajt SMTP_S_IP[2] - adresa SMTP serveru&lt;br /&gt;
 sys[84]  01 i R   bajt SMTP_S_IP[3] - adresa SMTP serveru&lt;br /&gt;
&lt;br /&gt;
 sys[85] až sys[88]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
Informace z ('''interní''') ICMP PING funkcionality &amp;quot;IP Watchdog&amp;quot; (konfigurace a ovládání přes webové rozhraní SDS) (nemá souvislost s SDS-C funkcí &amp;quot;ping()&amp;quot; ) :&lt;br /&gt;
&lt;br /&gt;
 sys[89]  06 i R   IP-Watchdog: stav&lt;br /&gt;
                    == 0 : není v provozu (neaktivováno ve webovém rozhraní)&lt;br /&gt;
                    != 0 : v provozu (uživatel aktivoval IP-Watchdog ve webovém rozhraní)&lt;br /&gt;
 &lt;br /&gt;
 sys[90]  06 i R   IP-Watchdog: poslední známé RTT&lt;br /&gt;
                    == 0 .. 65533 : hodnota RTT v msec&lt;br /&gt;
                    &amp;gt;= 65534      : hodnota není k dispozici (nebyl obdržen PING response)&lt;br /&gt;
 &lt;br /&gt;
 sys[91]  06 i R   IP-Watchdog: stav výstupu&lt;br /&gt;
                    == 0 : výstup není aktivován&lt;br /&gt;
                    != 0 : výstup je aktivován (nebyl obdržen PING response podle zadaných požadavků)&lt;br /&gt;
&lt;br /&gt;
Informace z (SDC-C) ICMP PING funkce - '''ping()''' :&lt;br /&gt;
&lt;br /&gt;
 sys[92]  04 i R   stav ICMP PING RESPONSE v okamžiku čtení tohoto sys[92] &lt;br /&gt;
                    == 0 : klid (není odeslán paket, nečekám na odpověď), &lt;br /&gt;
                           popř. byla zadána neplatná IP adresa do funkce '''ping()''' a proto se nic neodešle&lt;br /&gt;
                    == 1 : funkce '''ping()''' byla právě zavolána, &lt;br /&gt;
                           takže se teprve chystá provést svou činnost, zatím se neví výsledek odesílání&lt;br /&gt;
                    == 2 : čeká se na odpověď od ARP &lt;br /&gt;
                           (POZOR! Znamená to že místo ICMP PING REQUEST paketu byl odeslán ARP paket, &lt;br /&gt;
                           protože v ARP tabulce nebyl příslušný záznam)&lt;br /&gt;
                    == 4 : poslán ECHO REQUEST, čekám na ECHO REPLY &lt;br /&gt;
                          (požadovaný stav, funkce '''ping()''' funguje ok)&lt;br /&gt;
                    == 8 : právě obdržel ECHO REPLY &lt;br /&gt;
                          (byla přijata odpověď od vzdáleného zařízení)&lt;br /&gt;
 &lt;br /&gt;
 sys[93]  04 i R   PING SEQ number &lt;br /&gt;
                    - hodnota je nastavena na '''-1''' dokud není přijata odpověď ICMP PING RESPONSE &lt;br /&gt;
                      na ICMP PING REQUEST odeslaný funkcí '''ping()'''&lt;br /&gt;
 &lt;br /&gt;
 sys[94]  04 i R   Round Trip Time, v milisekundách&lt;br /&gt;
                    - dokud není přijata platná ICMP PING RESPONSE tak je zde hodnota '''0xFFFF'''&lt;br /&gt;
                    - čas je zvyšován po pěti milisekundách (údaj v sys[94] je přímo v msec, např. hodnota 55 znamená 55 msec)&lt;br /&gt;
&lt;br /&gt;
Pozn.: ICMP Quench (32bit) je sestaven z &amp;quot;identifier&amp;quot; (16bit) a z &amp;quot;sequence number&amp;quot;. Pomocí sys[93] můžete nastavit '''číslo sekvence''' na libovolnou hodnotu, přičemž hodnota &amp;quot;identifier&amp;quot; je napevno nastavena na &amp;quot;'''0x0280'''&amp;quot; .&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Funkce '''send_udp()''':&lt;br /&gt;
&lt;br /&gt;
 sys[95]  06 i R   výsledek posledního volání '''send_udp()'''&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : nic neprovedeno&lt;br /&gt;
                           Hodnota '''0''' je nastavena po startu SDS-C programu&lt;br /&gt;
                    == 1 : právě bylo zahájeno odesílání paketu (provádí se)&lt;br /&gt;
                           nastaveno okamžitě po jakémkoliv zavolání '''send_udp()'''.&lt;br /&gt;
                    == 2 : byl odeslán UDP paket, úspěšně&lt;br /&gt;
                           Hodnota '''2''' je nastavena až v okamžiku úspěšného skutečného odeslání UDP paketu&lt;br /&gt;
                    == 3 : nebyl odeslán UDP paket, protože byl místo toho odeslán ARP dotaz &lt;br /&gt;
                           Hodnota '''3''' je nastavena, pokud není známá MAC pro zadanou IP &lt;br /&gt;
                           a byl tedy místo požadovaného UDP paketu odeslán ARP dotaz&lt;br /&gt;
                    == 4 : zavolali jste funkci '''send_udp()''' dříve, &lt;br /&gt;
                           než byla dokočena činnost předchozího požadavku &lt;br /&gt;
                           (sledujte hodnotu sys[95] a správně ji vyhodnocujte, a nestane se vám to)&lt;br /&gt;
                    == 5 : byly zadány neplatné parametry (neplatná IP, nebo port, nebo index či délka dat)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Funkce '''snmp_send_trap()''':&lt;br /&gt;
&lt;br /&gt;
 sys[96]  06 i R   výsledek posledního volání '''snmp_send_trap()'''&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : odesílání neprobíhá&lt;br /&gt;
                    == 1 : probíhá odesílání, výsledek ještě není znám&lt;br /&gt;
                    == 2 : odeslání se povedlo &lt;br /&gt;
                    == 3 : odeslání se nepovedlo (neplatné parametry při zavolání funkce)&lt;br /&gt;
                    == 4 : odeslání se nepovedlo (není známý ARP záznam pro udanou host IP)&lt;br /&gt;
                    == 5 : odeslání se nepovedlo (právě pracuje (odesílá své data) některá jiná funkce, např. http_get)&lt;br /&gt;
&lt;br /&gt;
 sys[97]           RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Zápis textu do pole, Porovnání textů ==&lt;br /&gt;
&lt;br /&gt;
Položka ''sys[98]'' je využita více SDS-C funkcemi, přičemž všechny tyto funkce pracují s polem ''text[]''.&lt;br /&gt;
&lt;br /&gt;
 sys[98]     i R   společné využití viz (1) a (2)&lt;br /&gt;
 &lt;br /&gt;
          06 i R   (1) číslo indexu do pole ''text[]'' kam byla zapsána terminační 0x00,&lt;br /&gt;
                       tj. ukazatel kde byl aktuální konec zápisu do pole ''text[]'', &lt;br /&gt;
                       což je hodnota užitečná pro navázání textu (zápis více textů přesně za sebou), popř. určení délky posledního zápisu:&lt;br /&gt;
                        - kam byla zapsána terminační 0x00 funkcí '''sprintf()'''&lt;br /&gt;
                        - kam byla zapsána terminační 0x00 funkcí '''itoh()''' &lt;br /&gt;
                        - kam byla zapsána terminační 0x00 funkcí '''itoa()''' &lt;br /&gt;
 &lt;br /&gt;
          08 i R   (2) výsledek porovnání textů&lt;br /&gt;
                        - hodnota výsledku zavolání funkce '''textcmp()'''&lt;br /&gt;
                            X &amp;lt; 0  : (texty jsou rozdílné): první nalezený nestejný znak má nižší vlastní hodnotu v poli ''text[]'' než v porovnávaném řetězci&lt;br /&gt;
                            X == 0 : oba texty jsou identické&lt;br /&gt;
                            X &amp;gt; 0  : (texty jsou rozdílné): první nalezený nestejný znak má nižší vlastní hodnotu v porovnávaném řetězci než v poli ''text[]''&lt;br /&gt;
&lt;br /&gt;
Význam &amp;quot;nižší vlastní hodnoty&amp;quot;: znak 'a' má nižší hodnotu než 'b', a to o 1; nebo např. '1' má nižší hodnotu než '4' a to o 3.&lt;br /&gt;
&lt;br /&gt;
Doporučeno je si to vše vyzkoušet (zavolat si každou uvedenout funkci a srovnat hodnotu v sys[98] s obsahem pole ''text[]'').&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Uživatelské pozice v pevné paměti == &lt;br /&gt;
&lt;br /&gt;
 sys[99]  05 i RW  předávací proměnná pro čtení a zápis z/do paměti [[SDS-C: DataFlash|dataflash]]&lt;br /&gt;
&lt;br /&gt;
 sys[100] až sys[115]  &lt;br /&gt;
          01 i RW  data uložená do permanentní paměti = co se sem napíše zůstane i po vypnutí zařízení,&lt;br /&gt;
                   můžete si sem uložit co chcete (tj. 16x signed long délky 32bit),&lt;br /&gt;
                    - po speciálním systémovém resetu (RSTD) je vše nastaveno na 0xFFFFFFFF &lt;br /&gt;
                    - pozor! minimalizujte množství zápisů, životnost této paměti není neomezená !&lt;br /&gt;
                    - zápis do těchto sys[] přímo ihned fyzicky zapíše do pevné paměti &lt;br /&gt;
                    - čtení těchto sys[] způsobí přímé fyzické čtení pevné paměti &lt;br /&gt;
&lt;br /&gt;
Paměť EEPROM a paměť DATAFLASH (podle verze HW který máte) je permanentní (NVM), tzn. její obsah zůstane i po vypnutí zařízení nezměněn (na rozdíl od &amp;lt;u&amp;gt;ne&amp;lt;/u&amp;gt;zálohované paměti RAM, do které se přistupuje pomocí pole ''ram[]'').&lt;br /&gt;
&lt;br /&gt;
''' Reserved '''&lt;br /&gt;
&lt;br /&gt;
 sys[116] až sys[136]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proměnné nastavitelné uživatelem z webového rozhraní ==&lt;br /&gt;
&lt;br /&gt;
Pomocí &amp;quot;uživatelských proměnných&amp;quot; (někdy taky &amp;quot;sdílených proměnných&amp;quot;) lze snadno ovlivnit chod vašeho SDS-C programu, ale jen tak, jak si do něj sami naprogramujete - uživatelské proměnné neovlivňují samotný program, ale program je může číst a následně zpracovat.&lt;br /&gt;
&lt;br /&gt;
 sys[140] až sys[149] &lt;br /&gt;
          01 i RW  &amp;quot;uživatelské proměnné&amp;quot;, které můžete měnit &amp;quot;z webu&amp;quot; (správně formulovaným HTTP GET dotazem)&lt;br /&gt;
                   (vždy 32-bit signed integer)&lt;br /&gt;
&lt;br /&gt;
 sys[150] 01 i RW  blokování přístupu k možnosti změny obsahu &amp;quot;uživatelských proměnných&amp;quot; z webu&lt;br /&gt;
                   Nastavení:&lt;br /&gt;
                    == 0 : stránka &amp;quot;control&amp;quot; je přístupná bez hesla, &lt;br /&gt;
                    != 0 : pro přístup je nutno se přihlásit (uživatel je vyzván k příhlášení)&lt;br /&gt;
&lt;br /&gt;
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. Dvě doplňkové proměnné nejsou na výchozí webové stránce dostupné, ale jinak s nimi lze bez jiných omezení pracovat (SDS-C, M2M).&lt;br /&gt;
&lt;br /&gt;
Zápisem do ''sys[150]'' můžete nastavit bezpečnost přístupu k této webové stránce.&lt;br /&gt;
&lt;br /&gt;
Adresa webové stránky je (IP je zde pro příklad): http://192.168.1.250/control (více informací [[SDSC: sharing|zde]]).&lt;br /&gt;
&lt;br /&gt;
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í.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proměnné vstupů a výstupů pro všechny výrobky SDS ==&lt;br /&gt;
&lt;br /&gt;
'''POZOR'''&lt;br /&gt;
&lt;br /&gt;
'''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-LM má pouze dva reléové výstupy, kdežto SDS-MACRO-LM má čtyři.&lt;br /&gt;
&lt;br /&gt;
Vždy máme vyhrazeno 32 indexů pro vstupy a výstupy. Tyto indexy jsou tedy naplánovány pro (budoucí) maximální konfiguraci, ale většina SDS k nim nemá odpovídající HW (např. nemá všech 32 relé). Zápis a čtení do/z indexů, které nemají odpovídající fyzický protějšek, je zakázán (bude SDS ignorován, a hodnota nebude uložena pro pozdější čtení).&lt;br /&gt;
&lt;br /&gt;
'''Pokračování výpisu:'''&lt;br /&gt;
&lt;br /&gt;
 sys[151] až sys[182]  &lt;br /&gt;
          01 i R   stav binárního vstupu OPTO1 až OPTO32 (optočlen)&lt;br /&gt;
                    - hodnota odpovídá fyzickému stavu vstupů (zda-li je nebo není přítomen signál na LED optočlenu)&lt;br /&gt;
                    - pozor, hodnota '''0''' skutečně znamená přítomnost signálu&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : (nulová hodnota)             signál přítomen (napětí na LED = svítící LED v optočlenu)&lt;br /&gt;
                    != 0 : (libovolná nenulová hodnota) bez signálu (LED v optočlenu nesvítí)&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
'''Důležité info:'''&lt;br /&gt;
&lt;br /&gt;
Pokud je (uvnitŘ SDS) na LED vstupního 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). &lt;br /&gt;
&lt;br /&gt;
Pozor - &amp;quot;logika&amp;quot; optických vstupů je tedy na první pohled &amp;quot;obrácená&amp;quot; (avšak dává to přesný smysl). Jen je to potřeba vědět při psaní SDS-C programu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stav SDS-C programu ==&lt;br /&gt;
&lt;br /&gt;
Informace o verzi firmware modulu SDS (vhodné např. pro kontrolu, že uživatel používá nejnovější firmware, tak jak má).&lt;br /&gt;
&lt;br /&gt;
 sys[183] 08 i RW  verze nainstalovaného firmware v SDS modulu&lt;br /&gt;
                   (hex: 0x00DDMMYY, nebo jen 0x00000000 u starších FW)&lt;br /&gt;
&lt;br /&gt;
Příklad: FW v SDS je (pro příklad) ze dne 24.12.2018, takže v ''sys[183]'' bude zakódováno jako 0x00180C12, tedy hodnoty 24dec 12dec 18dec zapsány jako 0x18 0x0C 0x12, což je 0x18C0C12 což je 1575954dec.&lt;br /&gt;
&lt;br /&gt;
Informace o způsobu, jakým byl aktuální běh SDS-C programu spuštěn:&lt;br /&gt;
&lt;br /&gt;
 sys[184] 08 i RW  způsob spuštění SDS-C programu&lt;br /&gt;
                   == 0 : bez informace&lt;br /&gt;
                   == 1 : standardní spuštění SDS-C programu po běžném startu zařízení SDS&lt;br /&gt;
                   == 2 : program SDS-C byl (znovu) spuštěn na základě restartu od watchdogu (byl timeout)&lt;br /&gt;
                   == 4 : program SDS-C byl čerstvě nahrán z EXE aplikace&lt;br /&gt;
&lt;br /&gt;
Stav SDS-C watchdogu:&lt;br /&gt;
&lt;br /&gt;
 sys[185] 08 i R   hodnota odpočítávání SDS-C watchdogu v msec&lt;br /&gt;
                   == -1 : wdg není aktivní&lt;br /&gt;
                   ==  0 : odpočet vypršel, dojde k resetu SDS-C programu&lt;br /&gt;
                   1..2147482000 : aktuální hodnota odpočtu (snižuje se o 1 každou milisekundu)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Pulse-Width Modulation výstupy ==&lt;br /&gt;
&lt;br /&gt;
Některá SDS mají pouze jeden PWM výstup (PWM1), některá mají čtyři výstupy (rozdělené po dvou do dvou skupin: PWM1 a PWM2, pak PWM3 a PWM4).&lt;br /&gt;
&lt;br /&gt;
''Příklad pro PWM1:'' Konfigurace PWM1 výstupu nejprve vyžaduje zápis do sys[191], aby se nejprve nastavila provozní základní frekvence generátoru.&lt;br /&gt;
Následně lze PWM1 výstup řídit zápisem do sys[192], kdy se podle zapsané hodnoty nastaví střída PWM výstupu (poměr log0 a log1).&lt;br /&gt;
Alternativně lze zápis do sys[192] nahradit zápisem do sys[193], toto lze kombinovat.&lt;br /&gt;
Zápis do sys[191] je potřeba jen jednou (tedy jen tehdy, když je potřeba PWM1 výstup zapnout nebo vypnout, a kdy je potřeba změnit frekvenci generátoru). &lt;br /&gt;
Zápisy do sys[192] a nebo sys[193] se pak mohou dít samostatně (tj. není potřeba pokaždé opakovat zápis do sys[191]).&lt;br /&gt;
&lt;br /&gt;
Různé typy SDS mají jiný způsob obsluhy PWM generátoru - pozor !&lt;br /&gt;
&lt;br /&gt;
Pozor, pro tyto typy SDS:&lt;br /&gt;
&lt;br /&gt;
 SDS '''UPS''', SDS '''IO6 (LM)''', SDS '''IO6-ST''' a SDS '''TTCPRO''' &lt;br /&gt;
 &lt;br /&gt;
 Tyto výrobky nemají PWM výstup (zápis do příslušných sys[] zde nemá význam).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Podle typu SDS:&lt;br /&gt;
&lt;br /&gt;
 SDS '''MICRO (LM)''' a SDS '''MACRO (LM)''' - pouze jeden PWM výstup (PWM1)&lt;br /&gt;
 &lt;br /&gt;
 sys[191] 01 i RW  &amp;quot;Fm&amp;quot; = frekvence PWM1 výstupu [Hz]&lt;br /&gt;
                    - do SDS-C č. '''03''': specifický omezený rozsah (souvisí se starým firmware)(bylo v rozsahu: 2 až 10000000).&lt;br /&gt;
                    - pozn. od SDS-C č. '''04''': lze nastavit hodnotu od ''24'' (24Hz) do ''49999998'' (49.999998Mhz)&lt;br /&gt;
 &lt;br /&gt;
 sys[192] 01 i RW  poměr nastavení &amp;quot;pulse-width&amp;quot; PWM1 výstupu (výchozí způsob nastavování PWM generátoru)&lt;br /&gt;
                    - do SDS-C č. '''03''': specifický omezený rozsah (souvisí se starým firmware)&lt;br /&gt;
                    - od SDS-C č. '''04''': lze nastavit hodnotu od 0 do &amp;quot;Fm&amp;quot; (např. &amp;quot;Fm / 2&amp;quot; představuje PWM signál 1:1).&lt;br /&gt;
 &lt;br /&gt;
 sys[193] 06 i RW  ruční přímý zápis do registru PWM1 generátoru &lt;br /&gt;
                    - tzn. není předzpracováno jako sys[192], tzn. jedná se o alternativu k sys[192]&lt;br /&gt;
                    - tato hodnota není aktualizována vůči sys[192], ani není archivována&lt;br /&gt;
                    - rozsah: ''0'' až &amp;quot;Fm&amp;quot; (tj. ''0'' až sys[191]).&lt;br /&gt;
&lt;br /&gt;
Doporučení je vždy si ověřit vzájemné závislosti konfigurace PWM výstupu osciloskopem.&lt;br /&gt;
&lt;br /&gt;
Hodnoty Fm větší než 1MHz prakticky nemají smysl, snažte se navrhnout svůj systém tak, aby dokázal pracovat ideálně nejvýše ve stovkách kHz.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Další typy SDS - všimněte si rozdílu ''významu'' jednotlivých indexů vůči vůči tabulce výše.&lt;br /&gt;
&lt;br /&gt;
 SDS '''MINI''', SDS '''MICRO-ST''' - pouze jeden PWM výstup (PWM1)&lt;br /&gt;
 SDS '''MACRO-ST''' - čtyři PWM výstupy (zde: první skupina PWM1 a PWM2, druhá skupina je popsána dále)&lt;br /&gt;
 &lt;br /&gt;
 sys[191] 07 i RW  &amp;quot;Fm&amp;quot; = (společná) frekvence pro '''PWM1 a PWM2''' výstupy [Hz]&lt;br /&gt;
                    - zápis hodnot: 1 až 1000000 (odpovídá 1Hz až 1MHz) aktivuje PWM výstupy (lze dále řídit podle sys[192] až sys[195])&lt;br /&gt;
                    - zápis hodnoty 0 vypne PWM1 a PWM2 výstupy (výstup trvale neaktivní) - pro opětovné zapnutí zapište nenulovou hodnotu&lt;br /&gt;
 &lt;br /&gt;
 sys[192] 07 i RW  duty-cycle '''PWM1''' výstupu v procentech (výchozí způsob nastavování PWM generátoru)&lt;br /&gt;
                    - povolené rozmezí 0 až 100 (0% až 100%)&lt;br /&gt;
                    - před zápisem do sys[192] musí být nastavena frekvence generátoru (nenulový zápis do sys[191])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[191] == 0 (nula), tak jsou všechny zápisy do sys[192] ignorovány (nejsou zapamatovány)&lt;br /&gt;
 &lt;br /&gt;
 sys[193] 07 i  W  duty-cycle '''PWM1''' výstupu v mikrosekundách (druhý možný způsob nastavování PWM generátoru)&lt;br /&gt;
                    - pouze pro zápis, pozor !&lt;br /&gt;
                    - povolené rozmezí 0 až X (kde X závisí na sys[191] a vypočte se jako: X = 1000000 / sys[191]; - pozor !)&lt;br /&gt;
                    - před zápisem do sys[193] musí být nastavena frekvence generátoru (nenulový zápis do sys[191])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[191] == 0 (nula), tak jsou všechny zápisy do sys[193] ignorovány (nejsou zapamatovány)&lt;br /&gt;
                    - POZOR čtení nedává hodnotu v mikrosekundách, ale přímo hodnotu z registru generátoru&lt;br /&gt;
 &lt;br /&gt;
 sys[194] 07 i RW  duty-cycle '''PWM2''' v procentech (výchozí způsob nastavování PWM generátoru)&lt;br /&gt;
                    - povolené rozmezí 0 až 100 (0% až 100%)&lt;br /&gt;
                    - před zápisem do sys[194] musí být nastavena frekvence generátoru (nenulový zápis do sys[191])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[191] == 0 (nula), tak jsou všechny zápisy do sys[194] ignorovány (nejsou zapamatovány)&lt;br /&gt;
 &lt;br /&gt;
 sys[195] 07 i  W  duty-cycle '''PWM2''' výstupu v mikrosekundách&lt;br /&gt;
                    - pouze pro zápis, pozor !&lt;br /&gt;
                    - povolené rozmezí 0 až X (kde X závisí na sys[191] a vypočte se jako: X = 1000000 / sys[191]; - pozor !)&lt;br /&gt;
                    - před zápisem do sys[195] musí být nastavena frekvence generátoru (nenulový zápis do sys[191])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[191] == 0 (nula), tak jsou všechny zápisy do sys[195] ignorovány (nejsou zapamatovány)&lt;br /&gt;
                    - POZOR čtení nedává hodnotu v mikrosekundách, ale přímo hodnotu z registru generátoru&lt;br /&gt;
&lt;br /&gt;
 SDS '''MACRO-ST''' - čtyři PWM výstupy (zde druhá skupina: PWM3 a PWM4)&lt;br /&gt;
 &lt;br /&gt;
 sys[186] 09 i RW  &amp;quot;Fm&amp;quot; = (společná) frekvence pro '''PWM3 a PWM4''' výstupy [Hz]&lt;br /&gt;
                    - zápis hodnot: 1 až 1000000 (odpovídá 1Hz až 1MHz) aktivuje PWM výstupy (lze dále řídit podle sys[187] až sys[190])&lt;br /&gt;
                    - zápis hodnoty 0 vypne PWM3 a PWM4 výstupy (výstup trvale neaktivní) - pro opětovné zapnutí zapište nenulovou hodnotu&lt;br /&gt;
 &lt;br /&gt;
 sys[187] 09 i RW  duty-cycle '''PWM3''' v procentech&lt;br /&gt;
                    - povolené rozmezí 0 až 100 (0% až 100%)&lt;br /&gt;
                    - před zápisem do sys[187] musí být nastavena frekvence generátoru (nenulový zápis do sys[186])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[186] == 0 (nula), tak jsou všechny zápisy do sys[187] ignorovány (nejsou zapamatovány)&lt;br /&gt;
&lt;br /&gt;
 sys[188] 09 i  W  duty-cycle '''PWM3''' výstupu v mikrosekundách&lt;br /&gt;
                    - pouze pro zápis, pozor !&lt;br /&gt;
                    - povolené rozmezí 0 až X (kde X závisí na sys[186] a vypočte se jako: X = 1000000 / sys[186]; - pozor !)&lt;br /&gt;
                    - před zápisem do sys[188] musí být nastavena frekvence generátoru (nenulový zápis do sys[186])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[186] == 0 (nula), tak jsou všechny zápisy do sys[188] ignorovány (nejsou zapamatovány)&lt;br /&gt;
                    - POZOR čtení nedává hodnotu v mikrosekundách, ale přímo hodnotu z registru generátoru&lt;br /&gt;
 &lt;br /&gt;
 sys[189] 09 i RW  duty-cycle '''PWM4''' v procentech&lt;br /&gt;
                    - povolené rozmezí 0 až 100 (0% až 100%)&lt;br /&gt;
                    - před zápisem do sys[189] musí být nastavena frekvence generátoru (nenulový zápis do sys[186])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[186] == 0 (nula), tak jsou všechny zápisy do sys[189] ignorovány (nejsou zapamatovány)&lt;br /&gt;
 &lt;br /&gt;
 sys[190] 09 i  W  duty-cycle '''PWM4''' výstupu v mikrosekundách&lt;br /&gt;
                    - pouze pro zápis, pozor !&lt;br /&gt;
                    - povolené rozmezí 0 až X (kde X závisí na sys[186] a vypočte se jako: X = 1000000 / sys[186]; - pozor !)&lt;br /&gt;
                    - před zápisem do sys[190] musí být nastavena frekvence generátoru (nenulový zápis do sys[186])&lt;br /&gt;
                    - pokud je aktuální hodnota sys[186] == 0 (nula), tak jsou všechny zápisy do sys[190] ignorovány (nejsou zapamatovány)&lt;br /&gt;
                    - POZOR čtení nedává hodnotu v mikrosekundách, ale přímo hodnotu z registru generátoru&lt;br /&gt;
&lt;br /&gt;
Doporučení je vždy si ověřit vzájemné závislosti konfigurace PWM výstupů osciloskopem.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ovládání výstupů - Relé ==&lt;br /&gt;
&lt;br /&gt;
Zápisem do následujících systémových proměnných přímo ovládáte fyzické relé (výstupy) zařízení SDS. Pozor, protože hodnoty zapsané z SDS-C programu se záměrně neukládají do pevné paměti (tzn. nejsou načteny po resetu zařízení SDS). Je to z důvodu bezpečnosti (aby se např. neseplo relé po dlouhém výpadku napájení). Váš program si s tím musí umět poradit - vždy po zapnutí SDS musí vyhodnotit aktuální situaci a až podle toho zapínat relé.&lt;br /&gt;
&lt;br /&gt;
 sys[196] až sys[228]   &lt;br /&gt;
          01 i RW  informace, kdo ovládá '''RE1''' až '''RE32'''&lt;br /&gt;
                    - lze nastavit i z webového rozhraní&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : ovládáno z webového rozhraní (ruční řízení - trvale zapnuto, trvale vypnuto)&lt;br /&gt;
                    == 2 : ovládáno z SDS-C programu (zápis do sys[], je ignorováno nastavení na webu)&lt;br /&gt;
                    == 4 : ovládáno z IP Watchdogu (interní IP watchdog, nastavuje se přes web)&lt;br /&gt;
&lt;br /&gt;
 sys[229] až sys[230]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
 sys[231] až sys[262]   &lt;br /&gt;
          01 i RW  stav výstupu RE1 až RE32 (= zápis do tohoto sys[] přímo ovládá relé)&lt;br /&gt;
                   Hodnoty:&lt;br /&gt;
                    == 0 : relé není aktivní &lt;br /&gt;
                           (cívka relé bez proudu, MICRO-LM: mosfet není sepnut)&lt;br /&gt;
                    != 0 : relé je aktivní &lt;br /&gt;
                           (cívka relé pod proudem, MICRO-LM: mosfet je sepnut = výstup REx je spojen na GND)&lt;br /&gt;
&lt;br /&gt;
 sys[263] až sys[265]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
 sys[266] až sys[298]   &lt;br /&gt;
          01 s R   uživatelský textový název pro '''RE1''' až '''RE32''' &lt;br /&gt;
                    - nastaveno ve webovém rozhraní&lt;br /&gt;
&lt;br /&gt;
 sys[264] až sys[300]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Ovládání PDx ==&lt;br /&gt;
&lt;br /&gt;
Jednotlivé moduly SDS mají k dispozici dodatečné vstupy a výstupy, označené jako PDx respektive TOPB. Přesný seznam viz návod ke konkrétním modulům.&lt;br /&gt;
&lt;br /&gt;
Stav vstupu (je-li PDx jako vstup) nebo výstupu (je-li PDx jako výstup):&lt;br /&gt;
&lt;br /&gt;
 sys[301] 01 i RW  SDS '''MICRO LM LIGHT''': stav i/o pinu D0 (0 = log0 ; nenulová hodnota v sys = log1 přítomna na pinu)&lt;br /&gt;
                   SDS '''MICRO LM DIN''' a SDS '''MACRO LM''': stav výstupu D0 - MOSFET spínač na GND. Při jakékoliv nenulové hodnotě v sys[301] je MOSFET sepnutý (=D0 na GND), jinak je D0 otevřený (HiZ)&lt;br /&gt;
                   SDS '''TTCPRO''': stav všech osmi pinů v portu PDx (nastavením/čtením sys[301] se přistupuje k jednotlivých osmi bitům v bajtu, kde: bit0=PD0 až bit7=PD7)&lt;br /&gt;
                   SDS '''MINI''': bit0 = stav i/o pinu TOPB, bit1 = stav padu PD1, ostatní bity (2..7) nepoužity&lt;br /&gt;
                   SDS '''UPS''': nepoužito&lt;br /&gt;
                   SDS '''IO6''': nepoužito&lt;br /&gt;
                   SDS '''MICRO-ST''': bit0 = stav PD0 MOSFET spínače (spíná na GND), bit1 = stav i/o pinu TOPB, ostatní bity (2..7) nepoužity&lt;br /&gt;
                   SDS '''IO6-ST''': nepoužito&lt;br /&gt;
                   SDS '''MACRO-ST''': bit0 = stav PD0, bit1 = stav PD1, bit2 = stav i/o pinu TOPB, bit3 = TL-1, bit4 = stav TL-2, ostatní bity (5..7) nepoužity&lt;br /&gt;
&lt;br /&gt;
Řízení směru pro jednotlivé PDx resp. TOPB:&lt;br /&gt;
&lt;br /&gt;
 sys[302] 06 i RW  SDS '''MICRO LM LIGHT''': směr i/o pinu D0 (zápisem bit0 do 1 se nastaví pin D0 jako výstup) (zápisem log1 se nastaví jako vstup)&lt;br /&gt;
                   SDS '''MICRO LM DIN''' a '''SDS MACRO LM''': pozor, D0 je vždy výstup (nastavení je napevno, nelze změnit)&lt;br /&gt;
                   SDS '''TTCPRO''': směr jednotlivých pinů v portu PDx (nastavením jednotlivých osmi bitů, bit0=PD0 až bit7=PD7, nastav log1 pro výstup)&lt;br /&gt;
                   SDS '''MINI''': bit0 = směr i/o pinu TOPB, bit1 = směr i/o padu PD1, ostatní bity (2..7) nepoužity&lt;br /&gt;
                   SDS '''UPS''': nepoužito&lt;br /&gt;
                   SDS '''IO6''': nepoužito&lt;br /&gt;
                   SDS '''MICRO-ST''': bit0 = vždy v log1 (PD0 jako výstup), bit1 = směr i/o pinu TOPB, ostatní bity (2..7) nepoužity&lt;br /&gt;
                   SDS '''MACRO-ST''': bit0 = vždy v log1 (výstup), bit1 = vždy v log1 (výstup), bit2 = směr i/o pinu TOPB, bit3 = vždy v log0 (vstup), bit4 = vždy v log0 (vstup), ostatní bity (5..7) nepoužity&lt;br /&gt;
&lt;br /&gt;
TOPB: vždy typicky CMOS 3V3 pin, s možností funkce jako vstup nebo výstup (dle sys[302]), a je přímo připojený na pin SoC, pozor tedy na jeho další HW připojení.&lt;br /&gt;
&lt;br /&gt;
TTCPRO: Mapování je vždy od nejnižšího (LSB - bit0) bitu (PD0 = bit0, PD1 = bit1, atd. PD7 = bit7). Pro TTCPRO jsou PDx jako CMOS 3V3 piny s volbou vstupu nebo výstupu pro každý jednotlivý pin.&lt;br /&gt;
&lt;br /&gt;
MICRO-ST: výstup PD0 je zapojen formou FET spínače (log0 = HiZ = rozepnuto) (log1 = ACT = sepnuto na GND).&lt;br /&gt;
&lt;br /&gt;
MACRO-ST: výstupy PD0 a PD1 jsou zapojeny formou FET spínače (log0 = HiZ = rozepnuto) (log1 = ACT = sepnuto na GND).&lt;br /&gt;
&lt;br /&gt;
Nezapomeňte vždy ve svém programu správně nastavit hodnoty do sys[302] (toto je častá chyba když se to zapomene).&lt;br /&gt;
&lt;br /&gt;
 sys[306] až sys[309]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
== Tlačítka na desce display pro SDS-MACRO-ST ==&lt;br /&gt;
&lt;br /&gt;
Čtení stavu tlačítek na desce display (SDS-MST-DISP-rev1) se provádí čtením sys[301] a vyhodnocením bitu 3 (=8dec, první tlačítko) a/nebo bitu 4 (=16dec, druhé tlačítko).&lt;br /&gt;
&lt;br /&gt;
Ošetření na případné zákmity při stisku a uvolnění tlačítek, je potřeba provést ve vašem SDS-C programu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vstupy - teploměry na externí sběrnici 1-Wire&amp;amp;reg; ==&lt;br /&gt;
&lt;br /&gt;
Čidla teploty (1-W chipy pro měření teploty připojené na sběrnici; tak také údaj o teplotě z připojených modulů SDS-1W-T-RH) jsou řízena (čtena) plně automaticky zařízením SDS. Program v SDS-C má přímo přístup k výsledným hodnotám teplot.&lt;br /&gt;
&lt;br /&gt;
 sys[310] až sys[341]   &lt;br /&gt;
          01 i R   hodnota údaje (teplota) z konkrétního čidla na 1-Wire&amp;amp;reg; sběrnici&lt;br /&gt;
&lt;br /&gt;
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 záměrně tam je číslo 16777216 (2^24)'''.&lt;br /&gt;
&lt;br /&gt;
Pozn.: pouze SDS-MACRO-LM a SDS-MACRO-ST mají 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-XX'''.&lt;br /&gt;
&lt;br /&gt;
 sys[342] až [345]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
 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)&lt;br /&gt;
 sys[347] 01 i R   počet všech detekovaných (připojených) čidel teploty na sběrnici '''B'''&lt;br /&gt;
 &lt;br /&gt;
 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)&lt;br /&gt;
 sys[349] 01 i R   počet všech detekovaných (připojených) čidel teploty na sběrnici '''A'''&lt;br /&gt;
&lt;br /&gt;
 sys[350] až sys[381]   &lt;br /&gt;
          01 i R   čidlo 1 až 32 - aktuální stav/chyba čidla v okamžiku čtení tohoto sys[]&lt;br /&gt;
                    == 0  : default, čidlo neexistuje, nic nevim (stav ihned po zapnutí, popř. trvale pro prázdnou pozici)&lt;br /&gt;
                    == 2  : vše ok, komunikuje, odpovidá, právě byl získán výsledek&lt;br /&gt;
                    == 4  : ví se jen že existuje (byl získán ROMCODE) (obvykle dočasný stav po spuštění zařízení)&lt;br /&gt;
                    == 8  : začal další převod, čidlo je OK, komunikuje (správný stav)&lt;br /&gt;
                    == 16 : nepovedlo se začít nový převod, CHYBA (obvykle fyzický problém se sběrnicí)&lt;br /&gt;
                    == 32 : bylo přijato neplatné CRC, chyba (obvykle fyzický problém se sběrnicí)&lt;br /&gt;
&lt;br /&gt;
 sys[382] až [389]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
 sys[391] až sys[422]  &lt;br /&gt;
          01 s R   uživatelský textový název pro čidlo 1 až 32 (nastaveno ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
''' Reserved ''' &lt;br /&gt;
&lt;br /&gt;
 sys[423] až sys[430]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vstupy: analogové vstupy pro měření napětí ==&lt;br /&gt;
&lt;br /&gt;
Všechny vstupy měří napětí vůči společné svorce (GND). Změřená hodnota je vždy k dispozici nejprve jako surová (raw) digitální hodnota, a poté ji SDS přepočítá dle uživatelského nastavení a také dá k dispozici.&lt;br /&gt;
&lt;br /&gt;
 sys[431] 01 i R   RAW hodnota A/D převodu ze vstupu AD1&lt;br /&gt;
 sys[432] 01 i R   RAW hodnota A/D převodu ze vstupu AD2&lt;br /&gt;
 sys[433] 01 i R   RAW hodnota A/D převodu ze vstupu AD3&lt;br /&gt;
 sys[434] 01 i R   RAW hodnota A/D převodu ze vstupu AD4&lt;br /&gt;
&lt;br /&gt;
RAW (surová) hodnota je digitální číslo, poskytnuté z interního A/D převodníku, s tím, že mu už SDS současně (pouze a jenom) odečetl uživatelem nastavený offset.&lt;br /&gt;
&lt;br /&gt;
Rozsah hodnoty RAW je: &lt;br /&gt;
* SDS-MICRO-LM, SDS-MACRO-LM, SDS-UPS-ONEDPS: 0..1023 (10bit rozlišení)&lt;br /&gt;
* SDS-MINI a všechny varianty SDS ST: 0..4095 (12bit rozlišení)&lt;br /&gt;
&lt;br /&gt;
Všechny převodní konstanty A/D, nastavené ve webovém rozhraní (viz admin stránka):&lt;br /&gt;
&lt;br /&gt;
 sys[435] 01 i R   Offset pro A/D 1  [jen pro informaci, dále už nepoužít - viz pozn.]&lt;br /&gt;
 sys[436] 01 i R   Div pro A/D 1&lt;br /&gt;
 sys[437] 01 s R   textový název A/D 1&lt;br /&gt;
 sys[438] 01 s R   jednotka A/D 1&lt;br /&gt;
&lt;br /&gt;
 sys[439] 01 i R   Offset pro A/D 2  [jen pro informaci, dále už nepoužít - viz pozn.]&lt;br /&gt;
 sys[440] 01 i R   Div pro A/D 2&lt;br /&gt;
 sys[441] 01 s R   textový název A/D 2&lt;br /&gt;
 sys[442] 01 s R   jednotka A/D 2&lt;br /&gt;
&lt;br /&gt;
 sys[443] 01 i R   Offset pro A/D 3  [jen pro informaci, dále už nepoužít - viz pozn.]&lt;br /&gt;
 sys[444] 01 i R   Div pro A/D 3&lt;br /&gt;
 sys[445] 01 s R   textový název A/D 3&lt;br /&gt;
 sys[446] 01 s R   jednotka A/D 3&lt;br /&gt;
&lt;br /&gt;
 sys[447] 01 i R   Offset pro A/D 4  [jen pro informaci, dále už nepoužít - viz pozn.]&lt;br /&gt;
 sys[448] 01 i R   Div pro A/D 4&lt;br /&gt;
 sys[449] 01 s R   textový název A/D 4&lt;br /&gt;
 sys[450] 01 s R   jednotka A/D 4&lt;br /&gt;
&lt;br /&gt;
'''Pozor!''' Hodnoty pro jednotlivé A/D vstupy (tj. Raw Hodnoty v sys[431 až 434]) '''už mají odečtený Offset''' (je to provedeno uvnitř firmware už při zpracovávání A/D převodu) ! &lt;br /&gt;
Proto Offset už ve svém SDS-C programu z Raw hodnot neodečítejte (bylo by to odečítáno podruhé). Pro přepočet z Raw na finální hodnotu vám zbývá (správně) použít jen &amp;quot;Div&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Poznámka: zařízení SDS-MINI (a další z řady SDS ST) už mohou mít text v položce &amp;quot;jednotka A/D x&amp;quot; delší než jeden znak (na rozdíl od původního SDS-MICRO-LM atd., kde to bylo omezeno na jeden jediný znak).&lt;br /&gt;
&lt;br /&gt;
''' Reserved '''&lt;br /&gt;
&lt;br /&gt;
 sys[451] až sys[458]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Proměnné pro S0 impulsní vstup ==&lt;br /&gt;
&lt;br /&gt;
 sys[459] 01 i RW  stav tarifu &lt;br /&gt;
                    == 0 : T0 (vysoký tarif)&lt;br /&gt;
                    == 1 : T1 (nízký tarif)&lt;br /&gt;
&lt;br /&gt;
 sys[460] až sys[492]  &lt;br /&gt;
          06 i RW  konfigurace - uživatelem nastavený (webové rozhraní) poměr MTD, pro vstup S0 [1] až [32],&lt;br /&gt;
                                 je-li MTD pro tento vstup použit (pokud není použit (přímé měření), má zde být 1 )&lt;br /&gt;
                    - příklad: pro MTD s poměrem 300A:5A je zapsaná hodnota 60&lt;br /&gt;
                    - pozor, nezapočítávejte vliv MTD do hodnoty imp./1kWh&lt;br /&gt;
                    - pozor, některé elektroměry mají MTD už započítané do vlastní impulsní konstanty, &lt;br /&gt;
                             pak sem v takovém případě nastavte číslo 1&lt;br /&gt;
                    - platné hodnoty: 1 až 65280 (včetně)&lt;br /&gt;
 &lt;br /&gt;
 sys[493] až sys[525]  &lt;br /&gt;
          01 i RW  hodnoty impulsních akumulátorů (počítadel) pro vstup S0 [1] až [32] pro tarif T0&lt;br /&gt;
                    - (!) pozor SDS interně drží počítadla jako 32-bit unsigned hodnoty (0 až 4294967295)&lt;br /&gt;
                          ale SDS-C čte sys[] jako 32-bit signed hodnoty;&lt;br /&gt;
                          při čtení tedy dostanete stejné hodnoty 32 bitů, ale reprezentace čísla bude jiná (signed).&lt;br /&gt;
 &lt;br /&gt;
 sys[526] až sys[558]  &lt;br /&gt;
          01 i RW  hodnoty impulsních akumulátorů (počítadel) pro vstup S0 [1] až [32] pro tarif T1&lt;br /&gt;
                    - (!) pozor SDS interně drží počítadla jako 32-bit unsigned hodnoty (0 až 4294967295)&lt;br /&gt;
                          ale SDS-C čte sys[] jako 32-bit signed hodnoty;&lt;br /&gt;
                          při čtení tedy dostanete stejné hodnoty 32 bitů, ale reprezentace čísla bude jiná (signed).&lt;br /&gt;
 &lt;br /&gt;
 sys[559] až sys[591]  &lt;br /&gt;
          01 i RW  konfigurace - uživatelem nastavené přepočtové konstanty S0: počet imp./1kWh (z webového rozhraní)&lt;br /&gt;
                    - pozor, tato hodnota platí pro samotný elektroměr, není to hodnota ve které je započítán vliv MTD&lt;br /&gt;
                    - pozn. v případě, že měřícím prvkem není elektroměr ale jiný přístroj, bude zde odpovídající&lt;br /&gt;
                      jiná konfigurační hodnota (např. vodoměr: počet imp./m^3).&lt;br /&gt;
 &lt;br /&gt;
 sys[592] až sys[624]  &lt;br /&gt;
          01 i R   změřená časová vzdálenost mezi dvěmi nejposlednějšími zachycenými impulsy na S0 vstupu (aktuální impuls a předchozí impuls)&lt;br /&gt;
                    - měřeno v msec&lt;br /&gt;
                    - (!) pozor SDS interně drží počítadla jako 32-bit unsigned hodnoty (0 až 4294967295)&lt;br /&gt;
                          ale SDS-C čte sys[] jako 32-bit signed hodnoty;&lt;br /&gt;
                          při čtení tedy dostanete stejné hodnoty 32 bitů, ale reprezentace čísla bude jiná (signed - viz vysvětlení nahoře).&lt;br /&gt;
 &lt;br /&gt;
 sys[625] až sys[657]  &lt;br /&gt;
          01 i R   změřený čas od úplně posledního impulsu zachyceného na S0 vstupu, tzn. &amp;quot;doba bez impulsu&amp;quot; nebo také &amp;quot;doba od posledního impulsu&amp;quot;&lt;br /&gt;
                    - měřeno v msec&lt;br /&gt;
                    - (!) pozor SDS interně drží počítadla jako 32-bit unsigned hodnoty (0 až 4294967295)&lt;br /&gt;
                          ale SDS-C čte sys[] jako 32-bit signed hodnoty;&lt;br /&gt;
                          při čtení tedy dostanete stejné hodnoty 32 bitů, ale reprezentace čísla bude jiná (signed - viz vysvětlení nahoře).&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
poznámka: &amp;quot;Poměr MTD&amp;quot; zahrnuje všechny měřící transformátory (MTD), předřazené elektroměru (pouze pokud to už není započítáno v impulsní konstantě). Pokud je S0 vstup využit pro jiný typ měřiče (vodoměr a podobné), kde je připojení MTD nesmysl, tak se v konfiguraci musí do této položky nastavit hodnota 1. Samozřejmě jde s určitou výhodou použít i jinou konfiguraci, protože tato hodnota je použita jako &amp;quot;druhý dělitel&amp;quot; u výpočtu počtu S0 impulsů na velikost kroku energetické jednotky. Určení této hodnoty pro jiné měřiče sleduje stejné matematické postupy jako určení této hodnoty pro elektroměr s předřazeným MTD, jen jednotky budou samozřejmě jiné.&lt;br /&gt;
&lt;br /&gt;
 sys[658] až sys[670]  reserved for future use&lt;br /&gt;
&lt;br /&gt;
poznámka: další sys[] indexy pro S0 vstupy jsou uvedeny ještě dále v tomto celém seznamu (dole na stránce).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Speciální vstupy a výstupy ==&lt;br /&gt;
&lt;br /&gt;
Toto je funkce dostupná jen na omezeném rozsahu výrobků SDS.&lt;br /&gt;
&lt;br /&gt;
'''Pouze pro SDS MICRO (LM) LIGHT:'''&lt;br /&gt;
&lt;br /&gt;
 sys[671] 02 i W   zápis na pin M4 (pouze SDS MICRO LIGHT s EEPROM, všechny ostatní výrobky toto nemají)&lt;br /&gt;
 sys[672] 02 i W   zápis na pin M5 (pouze SDS MICRO LIGHT s EEPROM, všechny ostatní výrobky toto nemají)&lt;br /&gt;
 sys[673] 02 i W   zápis na pin B1 (SDS MICRO LIGHT, LIGHT2, SDS MICRO DIN)&lt;br /&gt;
 sys[674] 02 i W   zápis na pin A1 (SDS MICRO LIGHT, LIGHT2, SDS MICRO DIN)&lt;br /&gt;
&lt;br /&gt;
Tyto zmíněné čtyři ''sys[]'' jsou dostupné '''pouze''' na modulu SDS MICRO '''LIGHT''' popř. '''DIN''', a to jen s verzí firmware 9.1.2011 nebo novější.&lt;br /&gt;
&lt;br /&gt;
SDS MICRO LIGHT s pamětí EEPROM: k dispozici jsou všechny čtyři výstupy.&lt;br /&gt;
&lt;br /&gt;
SDS MICRO LIGHT s pamětí DATAFLASH: k dispozici jsou jen dva výstupy (A1, B1).&lt;br /&gt;
&lt;br /&gt;
SDS MICRO LIGHT 2 s pamětí DATAFLASH: k dispozici jsou jen dva výstupy (A1, B1).&lt;br /&gt;
&lt;br /&gt;
SDS MICRO DIN: k dispozici jsou jen dva výstupy (A1, B1).&lt;br /&gt;
&lt;br /&gt;
SDS MACRO LM, SDS MICRO ST, SDS MACRO ST, SDS UPS, SDS IO6, SDS IO6 ST, SDS TTCPRO, SDS MINI: tyto výstupy '''nejsou k dispozici'''.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
'''Pouze pro SDS MACRO ST:'''&lt;br /&gt;
&lt;br /&gt;
Alternativa k sys[301]. Hodnota odpovídá logické úrovni na daném vstupu TL1 (TL2). Při osazené desce MACRO-ST-LCD jsou na tyto vstupy připojeny tlačítka (pak při stisku TL1, TL2 je zde hodnota 0, v klidu 1).&lt;br /&gt;
&lt;br /&gt;
 sys[671] 02 i R   čtení stavu TL1&lt;br /&gt;
 sys[672] 02 i R   čtení stavu TL2&lt;br /&gt;
&lt;br /&gt;
'''Pájecí plošky CFG:'''&lt;br /&gt;
&lt;br /&gt;
Zkratovací CFG plošky jsou k dispozici jen pro SDS TTCPRO. Vhodné pro pevnou konfiguraci uživatelem.&lt;br /&gt;
&lt;br /&gt;
V současné době není k dispozici firmware, které přenáší hodnotu z pájecích plošek (CFG1, CFG2) do ''sys[]''.&lt;br /&gt;
Ploška CFG1 je vyhrazena pro vnitřní použítí samotného firmware SDS, a ploška CFG2 bude eventuálně uvolněna pro libovolné použití uživatelem (čtení z SDS-C).&lt;br /&gt;
Takový firmware se teprve chystá (SDS TTCPRO).&lt;br /&gt;
&lt;br /&gt;
 sys[675] 07 i R   stav plošky CFG1 (zkratována = je zde 0)&lt;br /&gt;
 sys[676] 07 i R   stav plošky CFG2 (zkratována = je zde 0)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Speciální proměnné pro SDS-UPS ==&lt;br /&gt;
&lt;br /&gt;
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 .&lt;br /&gt;
&lt;br /&gt;
SDS-UPS má všechny sys[0] až sys[699] shodné s SDS-MICRO. Rozdíl je samozřejmě v počtu a osazení periférií.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
 sys[700] 02 i R   reserved&lt;br /&gt;
 sys[701] 02 i R   reserved&lt;br /&gt;
 sys[702] 02 i R   reserved&lt;br /&gt;
 sys[703] 02 i R   reserved&lt;br /&gt;
&lt;br /&gt;
'''Přepínač algoritmů:'''&lt;br /&gt;
&lt;br /&gt;
 sys[704] 02 i RW  řízení nabíjení - hodnoty které lze zapsat:&lt;br /&gt;
                    == 0   : nabíjení je ovládáno pomocí firmware (výchozí chování výrobku)&lt;br /&gt;
                    == 345 : pouze nabíjení (a ne jiné funkce) jsou řízeny programem SDS-C (= chování programujete vy)&lt;br /&gt;
                    == 824 : kompletní řízení (= volba funkce, nabíjení) je řízeno programem SDS-C&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 sys[705] až sys[731]  reserved&lt;br /&gt;
&lt;br /&gt;
Pro realizaci vlastního nabíjecího algoritmu potřebujete zpracovávat všechny vstupy a důsledně nastavovat všechy výstupy.&lt;br /&gt;
&lt;br /&gt;
Pokud váš program pouze sleduje činnost původního nabíjecího algoritmu, pak může samozřejmě všechny sys[] jen číst.&lt;br /&gt;
&lt;br /&gt;
'''Vstupy a konfigurace:'''&lt;br /&gt;
&lt;br /&gt;
 sys[732] 02 i R   surová hodnota z A/D převodu - hodnota 2.5V vstupu - odpovídá hodnotě proudu 0.0A&lt;br /&gt;
 sys[733] 02 i R   surová hodnota z A/D převodu - hodnota proudu do-z akumulátoru&lt;br /&gt;
 sys[734] 02 i R   surová hodnota z A/D převodu - hodnota proudu z primárního vstupu&lt;br /&gt;
 sys[735] 02 i R   surová hodnota z A/D převodu - hodnota napětí akumulátoru&lt;br /&gt;
 sys[736] 02 i R   surová hodnota z A/D převodu - hodnota napětí primárního vstupu&lt;br /&gt;
&lt;br /&gt;
Rozsah surových hodnot z A/D převodu je 0 až 4095. Lineárně to odpovídá příslušné měřené hodnotě. &lt;br /&gt;
Měření napětí má 0 na 0V a maximální hodnot (4095) na maximu rozsahu. &lt;br /&gt;
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.).&lt;br /&gt;
&lt;br /&gt;
 sys[737] až sys[739]  reserved&lt;br /&gt;
&lt;br /&gt;
Následuje konfigurace provedená uživatelem ve webovém rozhraní.&lt;br /&gt;
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á.&lt;br /&gt;
&lt;br /&gt;
 sys[740] 02 i R   primary voltage to say target is ok (pri_pvts)&lt;br /&gt;
 sys[741] 02 i R   primary zadany odpocet v msec (pri_pvat)&lt;br /&gt;
 sys[742] 02 i R   primary voltage to allow charging (at what voltage to allow chargin) (pri_fchg)&lt;br /&gt;
 sys[743] 02 i R   accu disconnect voltage level (at what voltage to disconnect accu) (aku_avdv)&lt;br /&gt;
 sys[744] 02 i R   accu target voltage when charging (when to switch to CV) (aku_avcd)&lt;br /&gt;
 sys[745] 02 i R   accu target current when charging (constant current when in CC) (aku_accc)&lt;br /&gt;
 sys[746] 02 i R   target charging voltage (final voltage on accu when fully charged)&lt;br /&gt;
 sys[747] 02 i R   flag: do not answer ping when primary gone (pri_ping)&lt;br /&gt;
 sys[748] 02 i R   flag: do not switch accu off (aku_dach)&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
 sys[749] až sys[760]  reserved&lt;br /&gt;
&lt;br /&gt;
'''Výstupy:'''&lt;br /&gt;
&lt;br /&gt;
Tyto '''všechny''' výstupy musíte správně ovládat po celou dobu, co bude zařízení SDS UPS zapnuto !&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 sys[761] 02 i RW  ovládání vypínání nabíječe&lt;br /&gt;
                    == 0 : nabíječ v provozu (zapnuto = nabíjí se, regulujte jiným sys[])&lt;br /&gt;
                    != 0 : nabíječ mimo provoz (vypnuto = nenabíjí se)&lt;br /&gt;
 &lt;br /&gt;
 sys[762] 02 i RW  ovládání posunu rozsahu regulace nabíječe &lt;br /&gt;
                    == 0 : bez zásahu do zpětné vazby (původní regulační rozsah)&lt;br /&gt;
                    != 0 : zásah do zpětné vazby (posun rozsahu)&lt;br /&gt;
                           (vhodné pro skokové zvýšení výstupního napětí nabíječe, &lt;br /&gt;
                            když už nereaguje v původním rozsahu)&lt;br /&gt;
 &lt;br /&gt;
 sys[763] 02 i RW  ovládání odpojovače baterie &lt;br /&gt;
                    == 0 : spínač vypnutý (baterie odpojena od zátěže)&lt;br /&gt;
                    != 0 : spínač sepnutý (baterie připojena)&lt;br /&gt;
 &lt;br /&gt;
 sys[764] 02 i RW  indikační LED - nabíjení akumulátoru&lt;br /&gt;
                    == 0 : LED svítí (informace: akumulátor je nabíjen)&lt;br /&gt;
                    != 0 : LED nesvítí (informace: akumulátor není nabíjen)&lt;br /&gt;
 &lt;br /&gt;
 sys[765] 02 i RW  indikační LED - výpadek primárního vstupu&lt;br /&gt;
                    == 0 : LED svítí (informace: napětí primárního vstupu pod dolním limitem)&lt;br /&gt;
                    != 0 : LED nesvítí (informace: primární vstup má napětí vyšší než je dolní limit)&lt;br /&gt;
&lt;br /&gt;
'''Řízení nabíjení:''' Je potřeba správně regulovat pomocí následujícího výstupu:&lt;br /&gt;
&lt;br /&gt;
 sys[766] 02 i RW  přímé řízení nabíjecího bloku (výstup vaší regulace sem - hodnota řídí nabíječ)&lt;br /&gt;
                    - minimální hodnota = 1&lt;br /&gt;
                    - maximální hodnota = 2497&lt;br /&gt;
&lt;br /&gt;
 sys[767] až sys[769]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
Následující údaje jsou určeny pro '''zobrazování na webovém rozhraní''':&lt;br /&gt;
&lt;br /&gt;
 sys[770] 02 i RW  provozní režim: vždy jedno z UPS_PROVOZ_xxx&lt;br /&gt;
 &lt;br /&gt;
 sys[771] 02 i RW  nabíjecí režim: vždy jedno z UPS_NABREZIM_xxx&lt;br /&gt;
 &lt;br /&gt;
 sys[772] 02 i RW  výsledek odhadu stavu baterie: vždy jedno z UPS_BATERIE_ODHAD_xxx&lt;br /&gt;
&lt;br /&gt;
Konstanty pro zápis (je to potřeba dodržet, protože se to přímo zobrazuje na webovém rozhraní):&lt;br /&gt;
&lt;br /&gt;
 UPS_PROVOZ_START            0&lt;br /&gt;
 UPS_PROVOZ_PRIOK            1&lt;br /&gt;
 UPS_PROVOZ_PRIOK_CHARGING   2&lt;br /&gt;
 UPS_PROVOZ_ONLY_BATT        4&lt;br /&gt;
 UPS_PROVOZ_NO_BATT          8&lt;br /&gt;
 &lt;br /&gt;
 UPS_NABREZIM_CC             0&lt;br /&gt;
 UPS_NABREZIM_CV             2&lt;br /&gt;
 UPS_NABREZIM_PAUZA          4&lt;br /&gt;
 UPS_NABREZIM_URCENI_REZIMU  8&lt;br /&gt;
 &lt;br /&gt;
 UPS_BATERIE_ODHAD_NEZNAM            0&lt;br /&gt;
 UPS_BATERIE_ODHAD_MOC_NIZKE_NAPETI  1&lt;br /&gt;
 UPS_BATERIE_ODHAD_OK_NABIJIM        2&lt;br /&gt;
 UPS_BATERIE_ODHAD_PLNE_NABITO       4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Výsledky z 1-Wire sensoru vlhkosti (T/RH) SDS-1W-T-RH ==&lt;br /&gt;
&lt;br /&gt;
Připojené moduly [[SDS_1W_T-RH]] jsou připojeny na 1-W sběrnici, a mají v sobě chip, který měří hodnotu ze sensoru vlhkosti (který je současně umístěn na modulu SDS-1W-T-RH) a současně měří i teplotu a napájecí napětí pro sensor vlhkosti. &lt;br /&gt;
SDS interně provádí výpočet relativní vlhkosti (RH) pomocí kompenzační rovnice, určené výrobcem sensoru vlhkosti.&lt;br /&gt;
&lt;br /&gt;
K dispozici jsou jak surové hodnoty (změřené v rámci modulu SDS-1W-T-RH), tak i hodnota kompenzované (skutečné) relativní vlhkosti v místě umístění modulu.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Změřená teplota je uložena na standardních indexech:&lt;br /&gt;
&lt;br /&gt;
 sys[310] až sys[341]   &lt;br /&gt;
          01 i R   hodnota údaje (teplota) z konkrétního čidla na 1-Wire&amp;amp;reg; sběrnici, hodnota v násobku 0.01 degC&lt;br /&gt;
&lt;br /&gt;
Dále jsou k dispozici surové hodnoty, nutné pro výpočet hodnoty RH (Relative Humidity):&lt;br /&gt;
&lt;br /&gt;
 sys[800] až sys[831]   &lt;br /&gt;
          08 i R   hodnota údaje (napětí Vad = výstupu čidla RH) z konkrétního čidla na 1-Wire&amp;amp;reg; sběrnici, hodnota v násobku 0.01 V&lt;br /&gt;
&lt;br /&gt;
 sys[832] až sys[863]   &lt;br /&gt;
          08 i R   hodnota údaje (napětí Vdd = napájení čidla RH) z konkrétního čidla na 1-Wire&amp;amp;reg; sběrnici, hodnota v násobku 0.01 V&lt;br /&gt;
&lt;br /&gt;
SDS provádí přepočet na údaj RH v procentech (0 až 100):&lt;br /&gt;
&lt;br /&gt;
 sys[864] až sys[895]   &lt;br /&gt;
          08 i R   hodnota RH (0 až 100, v procentech RH) kompenzovaná podle rovnice pro čidlo HIH-503x (výpočet z Vad, kompenzace na Vdd a Temp).&lt;br /&gt;
&lt;br /&gt;
Rezerva (zatím nepoužito):&lt;br /&gt;
&lt;br /&gt;
 sys[896] až sys[899]  RESERVED vyhrazeno&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Doplňující informace pro 1-Wire zařízení ==&lt;br /&gt;
&lt;br /&gt;
1-Wire sběrnice u zařízení SDS umožňuje komunikaci s celou řadů 1-W chipů: [[OneWire|seznam je zde]]. Přístup k chipům na 1-W sběrnici se liší na dva typy: chipy (čidla) které si SDS interně zpracuje (např. měření teploty), a všechny ostatní chipy (které SDS jen umí vyhledat a oznámit, ale dále s nimi nekomunikuje).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''1-Wire chipy interně zpracovávané SDS'''&lt;br /&gt;
&lt;br /&gt;
Tyto chipy jsou plně automaticky obsluhovány prostřednictvím firmware SDS - není potřebná opakovaná intervence uživatele, ten si pouze čte stále aktuální výsledky měření teplot z jednotlivých čidel.&lt;br /&gt;
&lt;br /&gt;
Poznámka: Pro změřené hodnoty z 1-W čidel teplot, jsou k dispozici tyto indexy: '''sys[310]''' až '''sys[430]''', a '''sys[900]''' až '''sys[931]'''.&lt;br /&gt;
&lt;br /&gt;
K dispozici je textové vyjádření (hex znaky) ROM CODE hodnoty načtené pro danou pozici zpracovávaného chipu na 1-W sběrnici.&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS mohou mít jednu [A] nebo dvě ( nezávislé, [A] a [B] ) 1-Wire sběrnice, a každá sběrnice má maximálně 16 připojených chipů.&lt;br /&gt;
Jednotlivé platné ROM CODE jsou v ''sys[]'' uloženy za sebou, viz výpis:&lt;br /&gt;
&lt;br /&gt;
 sys[900] 06 s RW  ROM CODE pro první chip na [A] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
 &lt;br /&gt;
 sys[901] 06 s R   ROM CODE pro druhý chip na [A] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
&lt;br /&gt;
A tak dále až&lt;br /&gt;
&lt;br /&gt;
 sys[915] 06 s R   ROM CODE pro šestnáctý chip na [A] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
&lt;br /&gt;
Následuje sběrnice [B], je-li přítomná v daném zařízení (dostupné pouze pro SDS-MACRO):&lt;br /&gt;
&lt;br /&gt;
 sys[916] 06 s R   ROM CODE pro první chip na [B] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
&lt;br /&gt;
A tak dále . . . až&lt;br /&gt;
&lt;br /&gt;
 sys[931] 06 s R   ROM CODE pro šestnáctý chip na [B] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
&lt;br /&gt;
'''Pozor''': pokud sběrnice [B] v zařízení není, tak sys[916] až sys[931] vrátí znak '-'.&lt;br /&gt;
&lt;br /&gt;
Tak jak jsou jednotlivé ROM CODE viditelné ve webové administraci, tak jsou tedy dostupné i přes sys[] položky.&lt;br /&gt;
&lt;br /&gt;
Poznámka: ROM CODE pro 1-W chipy jsou k dispozici pouze jako ucelené texty (string). Bajtový rozpad jednotlivých položek není k dispozici.&lt;br /&gt;
&lt;br /&gt;
 sys[931] až sys[939]  reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Ostatní 1-Wire chipy'''&lt;br /&gt;
&lt;br /&gt;
Pro ostatní 1-W chipy, které SDS &amp;quot;nezná&amp;quot; (tzn. nekomunikuje s nimi, jen je umí na sběrnici vyhledat), jsou jejich ROM CODE odděleny do samostatných '''sys[]''' položek.&lt;br /&gt;
&lt;br /&gt;
Čtení ostatních 1-W chipů se spouští v rámci SDS-C programu, který musí zavolat příslušnou SDS-C funkci. &lt;br /&gt;
Na základě zavolání této funkce dojde k vynulování všech příslušných '''sys[]''' (od indexu 940 resp. 970) pro danou sběrnici, a provede se pokus o přečtení připojeného chipu.&lt;br /&gt;
Pokud se to povede, bude nalezený ROM CODE (spolu s časovou značkou okamžiku přečtení) vložen do příslušných '''sys[]''', &lt;br /&gt;
nebo bude nastaven chybový kód.&lt;br /&gt;
&lt;br /&gt;
Pozor, k SDS lze připojit více různých &amp;quot;ostatních&amp;quot; chipů, ale zdejší funkce najde jenom ten první z nich a ostatní už ignoruje. &lt;br /&gt;
Ostatní chipy lze samozřejmě připojit na kteroukoliv sběrnici, i když na ní jsou připojeny i chipy se kterými SDS komunikuje (např. teploměrné chipy).&lt;br /&gt;
&lt;br /&gt;
Jednotlivé chipy se rozlišují pomocí hodnoty ''ID family-code'' (jeden bajt). Pro chip DS1990A je ''0x01'', hodnoty pro jiné chipy viz datasheet výrobce pro konkrétní chip.&lt;br /&gt;
&lt;br /&gt;
Obecný stav sběrnic:&lt;br /&gt;
&lt;br /&gt;
 sys[940] 06 i R   Stav 1-W sběrnice '''[A]''' pro rescan ostatních 1-W chipů&lt;br /&gt;
 sys[941] 06 i R   Stav 1-W sběrnice '''[B]''' pro rescan ostatních 1-W chipů&lt;br /&gt;
 :&lt;br /&gt;
                    == 0  : ještě nebylo provedeno jediné/jakékoliv čtení ostatních chipů na 1-W sběrnici&lt;br /&gt;
 &lt;br /&gt;
                    == 1  : došlo k chybě: nebylo dokončeno předchozí čtení sběrnice&lt;br /&gt;
                            (nesmíte požadovat nové čtení, dokud se plně neprovedlo to poslední)&lt;br /&gt;
 &lt;br /&gt;
                    == 2  : probíhá čtení ROM CODE z připojeného ostatního chipu&lt;br /&gt;
                            (dokud se toto nedokončí, nelze provést opětovný požadavek na další rescan/čtení)&lt;br /&gt;
 &lt;br /&gt;
                    == 4  : nebyl nalezen jakýkoliv ostatní chip (s odpovídajícím Family Code byte)&lt;br /&gt;
 &lt;br /&gt;
                    == 8  : byl přečten ROM CODE z připojeného ostatního chipu&lt;br /&gt;
                            (už lze také požádat o další nové čtení 1-W sběrnice)&lt;br /&gt;
 &lt;br /&gt;
                    == 16 : došlo k chybě: nepovedlo se přečíst data po 1-W sběrnici &lt;br /&gt;
                            (zkuste provést rescan/čtení znovu)&lt;br /&gt;
&lt;br /&gt;
 sys[942] až sys[949]  reserved&lt;br /&gt;
&lt;br /&gt;
'''Pro sběrnici [A]:'''&lt;br /&gt;
&lt;br /&gt;
 sys[950] 06 i R   časová značka posledního okamžiku komunikace s chipem na [B] sběrnici 1-Wire&lt;br /&gt;
                   (nebo: 0 (nula) = pokud ještě nebyla komunikace provedena).&lt;br /&gt;
                    - v okamžiku každého nového pokusu o čtení je nastavena na 0 (nula),&lt;br /&gt;
                      a pak v okamžiku přečtení ROM CODE, je zde hodnota převzatá ze '''sys[3]'''&lt;br /&gt;
&lt;br /&gt;
 sys[951] 06 s R   celý text ROM CODE:&lt;br /&gt;
                    - ROM CODE pro chip na [A] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
 &lt;br /&gt;
 sys[952] až sys[959]: bajtový rozpad ROM CODE pro chip na [A] sběrnici 1-Wire&lt;br /&gt;
 :&lt;br /&gt;
 sys[952] 06 i R   romcode[0] (1-W: ID family-code byte)&lt;br /&gt;
 sys[953] 06 i R   romcode[1] (1-W: serial code)&lt;br /&gt;
 sys[954] 06 i R   romcode[2] (1-W: serial code)&lt;br /&gt;
 sys[955] 06 i R   romcode[3] (1-W: serial code)&lt;br /&gt;
 sys[956] 06 i R   romcode[4] (1-W: serial code)&lt;br /&gt;
 sys[957] 06 i R   romcode[5] (1-W: serial code)&lt;br /&gt;
 sys[958] 06 i R   romcode[6] (1-W: serial code)&lt;br /&gt;
 sys[959] 06 i R   romcode[7] (1-W: CRC byte)&lt;br /&gt;
&lt;br /&gt;
 sys[960] až sys[969]  reserved&lt;br /&gt;
&lt;br /&gt;
'''Pro sběrnici [B]:'''&lt;br /&gt;
&lt;br /&gt;
 sys[970] 06 i R   časová značka posledního okamžiku komunikace s chipem na [B] sběrnici 1-Wire&lt;br /&gt;
                   (nebo: 0 (nula) = pokud ještě nebyla komunikace provedena).&lt;br /&gt;
                    - v okamžiku každého nového pokusu o čtení je nastavena na 0 (nula),&lt;br /&gt;
                      a pak v okamžiku přečtení ROM CODE, je zde hodnota převzatá ze '''sys[3]'''&lt;br /&gt;
&lt;br /&gt;
 sys[971] 06 s R   celý text ROM CODE:&lt;br /&gt;
                    - ROM CODE pro chip na [B] sběrnici 1-Wire&lt;br /&gt;
                    - formát textu &amp;quot;0011223344556677&amp;quot; (8x HEX kód, bez uvozovek)&lt;br /&gt;
 &lt;br /&gt;
 sys[972] až sys[979]: bajtový rozpad ROM CODE pro chip na [B] sběrnici 1-Wire&lt;br /&gt;
 :&lt;br /&gt;
 sys[972] 06 i R   romcode[0] (1-W: ID family-code byte)&lt;br /&gt;
 sys[973] 06 i R   romcode[1] (1-W: serial code)&lt;br /&gt;
 sys[974] 06 i R   romcode[2] (1-W: serial code)&lt;br /&gt;
 sys[975] 06 i R   romcode[3] (1-W: serial code)&lt;br /&gt;
 sys[976] 06 i R   romcode[4] (1-W: serial code)&lt;br /&gt;
 sys[977] 06 i R   romcode[5] (1-W: serial code)&lt;br /&gt;
 sys[978] 06 i R   romcode[6] (1-W: serial code)&lt;br /&gt;
 sys[979] 06 i R   romcode[7] (1-W: CRC byte)&lt;br /&gt;
&lt;br /&gt;
 sys[980] až sys[989]  reserved&lt;br /&gt;
&lt;br /&gt;
Všimněte si, že SDS v tuto chvíli umožňuje pouze rescan 1-W sběrnice, kdy hledá pouze '''jeden''' připojený &amp;quot;ostatní 1-W chip&amp;quot; (ten první na který narazí, ten ohlásí, a nehledá dále). &lt;br /&gt;
&lt;br /&gt;
'''Pozor''':&lt;br /&gt;
&lt;br /&gt;
Pokud je takových chipů připojeno na sběrnici více, popř. pokud jsou smíchány s &amp;quot;teploměrnými&amp;quot; chipy, &lt;br /&gt;
bude při tomto rescanu uveden pouze první nalezený ostatní chip (tj. ten, který má nejnižší ROM-CODE ze všech připojených ostatních chipů).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reserved ==&lt;br /&gt;
&lt;br /&gt;
 sys[990] až sys[1023]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Speciální položky jen pro SDS-MACRO-LM a SDS-MACRO-ST ==&lt;br /&gt;
&lt;br /&gt;
'''Přímý přístup do LCD Frame Buffer paměti:'''&lt;br /&gt;
&lt;br /&gt;
 sys[1024] až sys[1551]   LCD buffer (dostupné jen pro SDS MACRO LM a SDS MACRO ST !)&lt;br /&gt;
          01 i RW  každý index v rámci tohoto rozsahu sys[] lze zapisovat i číst&lt;br /&gt;
                   - jedná se o pole 528 bajtů (4 řádky x 132 sloupců)&lt;br /&gt;
                   - každý bajt pole obsluhuje přesně danou oblast (několika pixelů) LCD displaye&lt;br /&gt;
                   - platné hodnoty pro každý index : 0 až 255 včetně  - zapisujte a čtěte jen hodnoty 0 až 255 (včetně)&lt;br /&gt;
&lt;br /&gt;
Tyto položky jsou dosupné '''pouze a jenom''' na SDS-MACRO-LM kde je vyžadován firmware od 24.11.2016 nebo novější, a na SDS-MACRO-ST (všechny FW verze).&lt;br /&gt;
&lt;br /&gt;
Jakékoliv změny (zápis) se promítnou pouze do frame bufferu (tedy v paměti SDS) - ale aby se následně tento frame buffer (jeho změněný obsah) eventuálně vykreslil na LCD, je potřeba zavolat příslušnou SDS-C funkci !&lt;br /&gt;
&lt;br /&gt;
Čtení ze sys poskytuje přímý přístup do frame bufferu (jeho aktuální obsah, tedy opět ne nutně to co je právě vidět na LCD).&lt;br /&gt;
&lt;br /&gt;
Pokud nepoužíváte LCD (sandwich desku), můžete tuto oblast 528 bajtů využít pro jakékoliv své účely. V podstatě se pak jedná o rozšiřující RAM pamět pro váš SDS-C program.&lt;br /&gt;
&lt;br /&gt;
'''Pozor''' SDS-MACRO-ST&lt;br /&gt;
&lt;br /&gt;
SDS MACRO ST provádí automatické aktualizace (zápis) do LCD bufferu, pokud se o tento buffer nepřihlásí SDS-C program. Proto, pokud na MACRO-ST chcete využít LCD buffer pro jiné své účely, musíte to nejprve SDS říct. Znovu, toto platí jen pro MACRO-ST - ''není to potřeba pro MACRO-LM (které tam po zapnutí nahraje logo a pak už na buffer za běhu nesáhne)''. Pro MACRO-ST zavolejte kteroukoliv SDS-C funkci pro přístup na display (např. clear) a je to - tím se přepne vlastnictví LCD bufferu pro SDS-C program.&lt;br /&gt;
&lt;br /&gt;
== Vyhrazená oblast ==&lt;br /&gt;
&lt;br /&gt;
'''Zbytek:'''&lt;br /&gt;
&lt;br /&gt;
 sys[1552] až sys[1663]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bateriově Zálohovaná Paměť ==&lt;br /&gt;
&lt;br /&gt;
'''POUZE PRO: SDS-TTCPRO a SDS-MINI a SDS-MICRO-ST a SDS-MACRO-sT a SDS-IO6-ST !''' (tedy ty s baterií) - všechny jiné SDS První Řady tyto specifické indexy v sys[] nemají k dispozici!&lt;br /&gt;
&lt;br /&gt;
Pozor! Tato funkce vyžaduje FW od 18.8.2017 a nebo novější. &lt;br /&gt;
&lt;br /&gt;
 sys[1664] až sys[1791]   (pouze pro SDS TTCPRO a SDS MINI a SDS MICRO-ST a SDS MACRO-ST a SDS IO6-ST)&lt;br /&gt;
          07 i RW  sada 128 samostatných pozic v zálohované paměti RAM, pro ukládání libovolných hodnot&lt;br /&gt;
                    - každý index má k dispozici 32 bitů (tj. celý signed integer)&lt;br /&gt;
                    - čtení a zápis je rychlé (je to v RAM, takže se nemusí čekat jako při práci s DF)&lt;br /&gt;
                    - lze použít nezávisle (lze přístupovat ke kterékoliv položce &amp;quot;na přeskáčku&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Pozor! Oblast záložní paměti je k dispozici pouze na vybraných zařízeních SDS (ty, které mají osazenu baterii pro tyto účely). Údaje se nesmazají změnou programu (nahráním nového programu), ani se nesmazají resetem zařízení (kromě aktivace RSTD - pozor!), tzn. vydrží a zůstanou, a to dokonce i po celou dobu výpadku externího napájení (tak dlouho, dokud se nevybije záložní baterie).&lt;br /&gt;
&lt;br /&gt;
''(Pouze) pokud baterie v daném SDS není'': tak jsou údaje ztraceny po výpadku napájení (ale po dobu přítomnosti externího napájení jsou k dispozici). Při takové situaci není zaručen obsah těchto dat po zapnutí (měl by být nulový, ale bez záruky).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Další informace ze S0 vstupů ==&lt;br /&gt;
&lt;br /&gt;
Následující položky jsou k dispozici pro všechny SDS První Produktové Řady.&lt;br /&gt;
&lt;br /&gt;
Od verze SDS-C č. 07 jsou přidány tyto systémové proměnné:&lt;br /&gt;
&lt;br /&gt;
 sys[1792] až sys[1823]  &lt;br /&gt;
          07 i R   cena za jednotku v režimu T0&lt;br /&gt;
                    - původní hodnota je poskytnuta jako násobek 1000 (např. nastavená hodnota 3.40 je zde předána jako číslo 3400)&lt;br /&gt;
 &lt;br /&gt;
 sys[1824] až sys[1855]  &lt;br /&gt;
          07 i R   cena za jednotku v režimu T1&lt;br /&gt;
                    - původní hodnota je poskytnuta jako násobek 1000 (např. nastavená hodnota 3.40 je zde předána jako číslo 3400)&lt;br /&gt;
 &lt;br /&gt;
 sys[1856] až sys[1887]  &lt;br /&gt;
          07 s R   název jednotky se vztahem k času, podle nastavení (např. text &amp;quot;kWh&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[1888] až sys[1919]&lt;br /&gt;
          07 s R   název měny, podle nastavení (např. text &amp;quot;CZK&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[1920] až sys[1951]  &lt;br /&gt;
          07 s R   název jednotky bez vztahu k času, podle nastavení (např. text &amp;quot;kW&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[1952] až sys[1983]  &lt;br /&gt;
          07 s R   název činnosti, podle nastavení (např. text &amp;quot;spotřeba&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[1984] až sys[2015]  &lt;br /&gt;
          07 s R   název měřiče, podle nastavení (např. text &amp;quot;elektroměr č. 1&amp;quot;)&lt;br /&gt;
                    - text&lt;br /&gt;
 &lt;br /&gt;
 sys[2016] až sys[2047]  &lt;br /&gt;
          07 i R   konfigurační detaily pro daný S0 vstup&lt;br /&gt;
                    - bit 0 nastaven = je to aktivní S0 vstup&lt;br /&gt;
                    - bit 1 nastaven = tento S0 vstup je rozdělen na dvoutarif T0/T1 (jinak je to jedno-tarif)&lt;br /&gt;
&lt;br /&gt;
Samozřejmě pro využití těchto systémových proměnných, potřebujete mít v SDS aktuální firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reserved ==&lt;br /&gt;
&lt;br /&gt;
 sys[2048] až sys[2198]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MQTT klient ==&lt;br /&gt;
&lt;br /&gt;
Vždy si zjistěte, jestli máte v SDS takové FW, které podporuje funkci MQTT klient:&lt;br /&gt;
&lt;br /&gt;
 sys[2199] 09 i R   podpora MQTT&lt;br /&gt;
                     0 = NE&lt;br /&gt;
                     1 = ANO, verze MQTT 3.1.1, SDS první část implementace&lt;br /&gt;
                     2..max = (reserved)&lt;br /&gt;
&lt;br /&gt;
Každé nové připojení k Brokeru:&lt;br /&gt;
&lt;br /&gt;
 sys[2200] 09 i R   stav průběhu mqtt_connect()&lt;br /&gt;
                     -7 = obdrželi jsme CONNACK, ale negativní = nepřipojeno ( výsledek viz sys[2201] )&lt;br /&gt;
                     -6 = timeout při čekání na připojení, nepřipojeno&lt;br /&gt;
                     -5 = nespravne parametry (hodnoty např. IP, port), nepřipojeno&lt;br /&gt;
                     -4 = nespravne parametry (počet parametrů), nepřipojeno&lt;br /&gt;
                     -3 = funkce zavolána dříve (nebo opakovaně) než bylo dokončeno předchozí volání funkce, takže toto volání je ignorováno&lt;br /&gt;
                     -2 = pokus o TCP připojení selhal&lt;br /&gt;
                     -1 = nepoužito&lt;br /&gt;
                      0 = klid, nic se neprovádí, ODPOJENO ! (lze se začít připojovat)&lt;br /&gt;
                      1 = bylo zahájeno připojování (otevírá se TCP spojení)&lt;br /&gt;
                      2 = TCP připojeno a odeslán CONNECT požadavek&lt;br /&gt;
                      4 = obdrželi jsme CONNACK, připojeno ( výsledek viz sys[2201] )&lt;br /&gt;
                      8 = probíhá odpojování, čekáme na výsledek (na odpojení)&lt;br /&gt;
&lt;br /&gt;
Po zavolání mqtt_connect(...) je nutné testovat sys[2200] na výslednou hodnotu. Funkci mqtt_connect(...) nelze volat, je-li sys[2200] na hodnotě 1, 2, 8 nebo 16 (nejprve je v takových případech potřeba provést odpojení pomocí mqtt_disconnect() funkce). Pro úplný test, je-li připojení z SDS do Brokeru úplné, je potřeba ověřit i hodnotu v sys[2201]. Teprve pokud oba tyto sys jsou na správné hodnotě, lze s Brokerem komunikovat.&lt;br /&gt;
&lt;br /&gt;
 sys[2201] 09 i R   výsledek mqtt_connect() = hodnota &amp;quot;CONNACK Connect Return&amp;quot;&lt;br /&gt;
                     -7 = nepoužito&lt;br /&gt;
                     -6 = timeout při čekání na CONNACK, nepřipojeno&lt;br /&gt;
                     -5 = nepoužito&lt;br /&gt;
                     -4 = nepoužito&lt;br /&gt;
                     -3 = nepoužito&lt;br /&gt;
                     -2 = probíhá připojování, čekáme na CONNACK (zatím nepřišel)&lt;br /&gt;
                     -1 = idle, nepřipojeno&lt;br /&gt;
                      0 = (výsledek:) MQTT 0x00: broker akceptoval připojení - LZE POKRAČOVAT (provádět Publish, Subscribe)&lt;br /&gt;
                      1 = MQTT 0x01: Connection Refused, unacceptable protocol version&lt;br /&gt;
                      2 = MQTT 0x02: Connection Refused, identifier rejected&lt;br /&gt;
                      3 = MQTT 0x03: Connection Refused, Server unavailable&lt;br /&gt;
                      4 = MQTT 0x04: Connection Refused, bad user name or password&lt;br /&gt;
                      5 = MQTT 0x05: Connection Refused, not authorized&lt;br /&gt;
&lt;br /&gt;
Hodnotu v sys[2201] lze číst a zpracovat pouze pokud je sys[2200] na hodnotě 16 (to znamená, pouze pokud SDS obdrží odpověď CONNACK od MQTT brokera).&lt;br /&gt;
&lt;br /&gt;
Před a po každém volání mqtt_publish() a nebo mqtt_subscribe() funkcí je potřeba sledovat obsah následují položky:&lt;br /&gt;
&lt;br /&gt;
 sys[2202] 09 i R   výsledek pro tyto funkce: mqtt_publish(), mqtt_subscribe(), mqtt_unsubscribe_index(), mqtt_unsubscribe_name()&lt;br /&gt;
                     -8 = SUBACK dorazil z Broker ale s indikovanou chybou (Failure Bit), můžete volat další funkci&lt;br /&gt;
                     -7 = vybraná položka (řádek) subscribe tabulky je prázdná, není co odhlašovat&lt;br /&gt;
                     -6 = timeout (možnosti: publish neprovedeno, nebo: SUBACK vůbec nedorazil, nebo: UNSUBACK vůbec nedorazil), můžete volat další funkci&lt;br /&gt;
                     -5 = nespravne parametry (hodnoty, např. index) např. jejich celková délka se nevleze do paketu&lt;br /&gt;
                     -4 = nespravne parametry (počet parametrů)&lt;br /&gt;
                     -3 = funkce zavolána dříve (nebo opakovaně) než bylo dokončeno předchozí volání funkce, takže toto volání je ignorováno&lt;br /&gt;
                     -2 = SDS není připojeno k brokeru (buď právě ještě probíhá připojování, nebo není vůbec připojeno)&lt;br /&gt;
                     -1 = bez aktivity&lt;br /&gt;
                      0 = nepoužito&lt;br /&gt;
                      1 = mqtt_publish() probíhá&lt;br /&gt;
                      2 = mqtt_publish() hotovo (OK - obdržen TCP ACK), můžete volat další funkci&lt;br /&gt;
                      4 = mqtt_subscribe() probíhá - čekám na SUBACK&lt;br /&gt;
                      8 = SUBACK dorazil z Broker, bez chyby (OK), můžete volat další funkci&lt;br /&gt;
                     16 = čekám na UNSUBACK (pouze pro unsubscribe funkce)&lt;br /&gt;
                     32 = UNSUBACK dorazil z Brokeru, můžete volat další funkce&lt;br /&gt;
&lt;br /&gt;
Informativní položka:&lt;br /&gt;
&lt;br /&gt;
 sys[2203] 09 i R   počet chyb v protokolu MQTT směrem z Brokeru&lt;br /&gt;
                    (objeví-li se chyba, dojde k okamžitému odpojení)&lt;br /&gt;
&lt;br /&gt;
Zatím nepoužité pozice:&lt;br /&gt;
&lt;br /&gt;
 sys[2204] až sys[2208]   reserved&lt;br /&gt;
&lt;br /&gt;
Pro každou příchozí datovou zprávu z Brokeru, je tato zpráva uložena do následujících sys: (pozor, každá nová příchozí zpráva přepíše předchozí údaje)&lt;br /&gt;
&lt;br /&gt;
 sys[2210] 09 s R   poslední přijatý Topic Name z Brokeru (broker publish)&lt;br /&gt;
 sys[2250] 09 s R   poslední přijatý Value z Brokeru (broker publish)&lt;br /&gt;
 sys[2290] 09 i R   timestamp pro poslední přijatou zprávu (broker publish)&lt;br /&gt;
&lt;br /&gt;
SDS umí přijaté datové zprávy uchovat, v rámci následující tabulky. Toto je důležité zejména pokud různé zprávy přicházejí velice rychle za sebou, aby se pro SDS-C program neztratili.&lt;br /&gt;
&lt;br /&gt;
Nejvíce lze mít až 32 položek (řádků) v tabulce, nicméně některá SDS nemají ve své paměti dostatečné místo a počet je tedy omezen. Pozor na to při psaní programu !&lt;br /&gt;
&lt;br /&gt;
 sys[2209] 09 i R   počet řádků v tabulce pro dané SDS (různé SDS mají různě volnou paměť, proto je v nich i různý počet použitelných Subscribe položek)&lt;br /&gt;
&lt;br /&gt;
Jednotlivé položky v tabulce příchozích zpráv:&lt;br /&gt;
&lt;br /&gt;
 sys[2211] až sys[2241] &lt;br /&gt;
          09 s R   název položky (Topic Name) pro daný index #1 - #31&lt;br /&gt;
                   (max délka záznamu dle SDS)&lt;br /&gt;
 &lt;br /&gt;
 sys[2242] až sys[2249]   reserved&lt;br /&gt;
 &lt;br /&gt;
 sys[2251] až sys[2281] &lt;br /&gt;
          09 s R   poslední přijatá hodnota (Value) ze publish zprávy ze brokeru pro daný index #1 - #31&lt;br /&gt;
                   (max délka záznamu dle SDS)&lt;br /&gt;
 &lt;br /&gt;
 sys[2282] až sys[2289]   reserved&lt;br /&gt;
 &lt;br /&gt;
 sys[2291] až sys[2321] &lt;br /&gt;
          09 i R   timestamp (hodnota uptime) v okamžiku příchodu zprávy z Brokeru&lt;br /&gt;
                   (pro detekci změny - příchozí zprávy z Brokeru)&lt;br /&gt;
                   0 = zatím nic nepřišlo&lt;br /&gt;
                   1..MAX = hodnota uptime v okamžiku poslední změny&lt;br /&gt;
&lt;br /&gt;
Nastavení Topic názvů každé položky (tedy &amp;quot;zápis&amp;quot; do sys[2211] až sys[2241]) se provede funkcí mqtt_subscribe(), které zadáváte pozici v této tabulce a název Topicu. Pokud se Subscribe nepovede, zůstane pozice v tabulce prázdná. Po připojení k Brokeru je tabulka vždy zcela prázdná, a SDS-C program si ji vždy musí dle potřeby naplnit. Pokud Broker pošle aktualizaci obsahu (value) na některou z přihlášených Topic položek, které SDS v této tabulce má, tak SDS automaticky přepíše patřičný řádek tabulky (tj. obsah jednoho ze sys[2251] až sys[2281]) a patřičně aktualizuje časovou známku změny.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Reserved ==&lt;br /&gt;
&lt;br /&gt;
 sys[2322] až sys[2398]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== MODBUS-TCP klient ==&lt;br /&gt;
&lt;br /&gt;
Ověření FW v SDS:&lt;br /&gt;
&lt;br /&gt;
 sys[2399] 09 i R   podpora pro MODBUS TCP&lt;br /&gt;
                     0 = NE&lt;br /&gt;
                     1 = ANO (první verze implementace v SDS)&lt;br /&gt;
&lt;br /&gt;
Každé nové TCP spojení na server:&lt;br /&gt;
&lt;br /&gt;
 sys[2400] 09 i R   stav průběhu modbus_tcp_connect()&lt;br /&gt;
                     -6 = timeout při čekání na připojení, nepřipojeno&lt;br /&gt;
                     -5 = nespravne parametry (hodnoty např. IP, port), nepřipojeno&lt;br /&gt;
                     -4 = nespravne parametry (počet parametrů), nepřipojeno&lt;br /&gt;
                     -3 = funkce zavolána dříve (nebo opakovaně) než bylo dokončeno předchozí volání funkce, takže toto volání je ignorováno&lt;br /&gt;
                     -2 = pokus o TCP připojení selhal&lt;br /&gt;
                     -1 = nepoužito&lt;br /&gt;
                      0 = klid, nic se neprovádí, ODPOJENO ! (lze se začít připojovat)&lt;br /&gt;
                      1 = bylo zahájeno připojování (otevírá se TCP spojení)&lt;br /&gt;
                      2 = TCP připojeno, můžete komunikovat &lt;br /&gt;
&lt;br /&gt;
MODBUS funkce - každá má svůj nezávislý stavový údaj:&lt;br /&gt;
&lt;br /&gt;
 sys[2401] 09 i R   stav průběhu zpracování funkce 0x01 - modbus_tcp_read(uid, 0x01, ...);&lt;br /&gt;
 sys[2402] 09 i R   stav průběhu zpracování funkce 0x02 - modbus_tcp_read(uid, 0x02, ...);&lt;br /&gt;
 sys[2403] 09 i R   stav průběhu zpracování funkce 0x03 - modbus_tcp_read(uid, 0x03, ...);&lt;br /&gt;
 sys[2404] 09 i R   stav průběhu zpracování funkce 0x04 - modbus_tcp_read(uid, 0x04, ...);&lt;br /&gt;
 sys[2405] 09 i R   stav průběhu zpracování funkce 0x05 - modbus_tcp_writesingle(uid, 0x05, ...);&lt;br /&gt;
 sys[2406] 09 i R   stav průběhu zpracování funkce 0x06 - modbus_tcp_writesingle(uid, 0x06, ...);&lt;br /&gt;
 sys[2415] 09 i R   stav průběhu zpracování funkce 0x0F - modbus_tcp_writemultiple(uid, 0x0F, ...);&lt;br /&gt;
 sys[2416] 09 i R   stav průběhu zpracování funkce 0x10 - modbus_tcp_writemultiple(uid, 0x10, ...);&lt;br /&gt;
                     pro všechny tyto stavy platí následující hodnoty:&lt;br /&gt;
                      -6 = timeout (neprovedeno), můžete volat další funkci&lt;br /&gt;
                      -5 = nespravne parametry (hodnoty), můžete volat další funkci&lt;br /&gt;
                      -4 = nespravne parametry (počet parametrů), můžete volat další funkci&lt;br /&gt;
                      -3 = funkce zavolána dříve (nebo opakovaně) než bylo dokončeno předchozí volání funkce, takže toto volání je ignorováno&lt;br /&gt;
                      -2 = SDS není připojeno (buď právě ještě probíhá připojování, nebo není vůbec připojeno)&lt;br /&gt;
                      -1 = bez aktivity, lze volat funkci&lt;br /&gt;
                       0 = provedeno OK (obdržena platná odpověď bez chybového kódu), můžete volat další funkci&lt;br /&gt;
                       1 .. 15 = obdržena odpověď s chybou 0x01 až 0x0F, můžete volat další funkci&lt;br /&gt;
                     256 = pracuji, čekejte na aktualizovanou hodnotu&lt;br /&gt;
&lt;br /&gt;
 sys[2417] až sys[2462]   reserved&lt;br /&gt;
&lt;br /&gt;
 sys[2463] 09 i R  poslední hodnota Unit Identifier zapsaná do MBAP hlavičky při odeslání zprávy&lt;br /&gt;
 &lt;br /&gt;
 sys[2464] 09 i R  poslední hodnota Transaction Identifier zapsaná do MBAP hlavičky při odeslání zprávy&lt;br /&gt;
&lt;br /&gt;
Přijatá data (funkce _read) - obsah je aktualizován pro každou novou přijatou MODBUS zprávu. Výsledky (přijatá data) jsou vždy uloženy do následujících sys (bez ohledu na typ MODBUS funkce).&lt;br /&gt;
&lt;br /&gt;
 sys[2465] 09 i R  timestamp poslední přijaté zprávy&lt;br /&gt;
                   (vhodné pro detekci nové přijaté zprávy)&lt;br /&gt;
 &lt;br /&gt;
 sys[2466] 09 i R  počet přijatých položek, pro poslední přijatou zprávu&lt;br /&gt;
                   (počet celých položek)&lt;br /&gt;
 &lt;br /&gt;
 sys[2467] 09 i R  přijatá hodnota Unit Identifier z příchozí MBAP hlavičky&lt;br /&gt;
                   (hodnota adresy je převzata z příchozí zprávy)&lt;br /&gt;
 &lt;br /&gt;
 sys[2468] 09 i R  přijatá hodnota Transaction Identifier z příchozí MBAP hlavičky&lt;br /&gt;
                   (hodnota adresy je převzata z příchozí zprávy) &lt;br /&gt;
 &lt;br /&gt;
 sys[2469] 09 i R  adresa první položky coil/input/register (které odpovídá údaj v sys[2470])&lt;br /&gt;
                   (MODBUS způsob číslování položek - adresa 1..n)&lt;br /&gt;
 &lt;br /&gt;
 sys[2470] až sys[2719]&lt;br /&gt;
          09 i R   přijaté hodnoty pro poslední přijatou zprávu&lt;br /&gt;
                    MODBUS funkce 0x01 a 0x02: každý sys[] má hodnotu 0 až 255, jednotlivé bity určují coils/input&lt;br /&gt;
                    MODBUS funkce 0x03 a 0x04: každý sys[] má hodnotu -32768 až 32767, tedy hodnotu pro každý jeden registr&lt;br /&gt;
&lt;br /&gt;
Pro funkce 0x01 a 0x02 jsou přijatá data kódována v jednobitovém tvaru, vždy po osmi bitech na jeden sys[]. Takže prvních osm bitů naleznete v sys[2465], dalších osm bitů v sys[2466] a tak dále.&lt;br /&gt;
&lt;br /&gt;
Pro funkce 0x03 a 0x04 jsou přijaté hodnoty registrů (MODBUS: vždy int16_t) uloženy postupně zasebou (tak jak přišli ve zprávě) do jednotlivých sys[], takže první registr je v sys[2465], druhý ve sys[2466] atd.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rezerva&lt;br /&gt;
&lt;br /&gt;
 sys[2715] až sys[2809]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Statistiky COMx ==&lt;br /&gt;
&lt;br /&gt;
COM1:&lt;br /&gt;
&lt;br /&gt;
 sys[2810] 09 i R   reserved&lt;br /&gt;
 &lt;br /&gt;
 sys[2811] 09 i R   počet odeslaných bajtů (TX) na port COM1&lt;br /&gt;
 &lt;br /&gt;
 sys[2812] 09 i R   počet neodeslaných bajtů (zahozených) pro port COM1 &lt;br /&gt;
                    (tzn. SDS chce odeslat více bajtů než zvládá nastavená rychlost COM portu)&lt;br /&gt;
 &lt;br /&gt;
 sys[2813] 09 i R   počet čekajících bajtů na odeslání (TX) ve frontě pro port COM1&lt;br /&gt;
 &lt;br /&gt;
 sys[2814] 09 i R   počet přijatých bajtů (RX) na portu COM1&lt;br /&gt;
 &lt;br /&gt;
 sys[2815] 09 i R   počet nepřijatých bajtů (ignorované) pro port COM1 &lt;br /&gt;
                    (tzn. pro případ kdy do SDS je posláno více bajtů než SDS zpracuje, a tak musí zahazovat)&lt;br /&gt;
 &lt;br /&gt;
 sys[2816] 09 i R   počet nevyzvednutých přijatých bajtů (RX) ve frontě pro port COM1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Rezerva&lt;br /&gt;
&lt;br /&gt;
 sys[2817] až sys[2860]   reserved&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
COM6:&lt;br /&gt;
&lt;br /&gt;
 sys[2861] 09 i R   počet odeslaných bajtů (TX) na port COM6&lt;br /&gt;
 &lt;br /&gt;
 sys[2862] 09 i R   počet neodeslaných bajtů (zahozených) pro port COM6&lt;br /&gt;
                    (tzn. SDS chce odeslat více bajtů než zvládá nastavená rychlost COM portu)&lt;br /&gt;
 &lt;br /&gt;
 sys[2863] 09 i R   počet čekajících bajtů na odeslání (TX) ve frontě pro port COM6&lt;br /&gt;
 &lt;br /&gt;
 sys[2864] 09 i R   počet přijatých bajtů (RX) na portu COM6&lt;br /&gt;
 &lt;br /&gt;
 sys[2865] 09 i R   počet nepřijatých bajtů (ignorované) pro port COM6&lt;br /&gt;
                    (tzn. pro případ kdy do SDS je posláno více bajtů než SDS zpracuje, a tak musí zahazovat)&lt;br /&gt;
 &lt;br /&gt;
 sys[2866] 09 i R   počet nevyzvednutých přijatých bajtů (RX) ve frontě pro port COM6&lt;br /&gt;
&lt;br /&gt;
Pro využití všech těchto statistik, je potřeba mít v SDS aktuální firmware (starší FW zde vrací nuly).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Konec dokumentu ==&lt;br /&gt;
&lt;br /&gt;
'''Konec dokumentu.'''&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_BIG:_firmware_changelog&amp;diff=967</id>
		<title>SDS BIG: firmware changelog</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_BIG:_firmware_changelog&amp;diff=967"/>
		<updated>2025-10-25T13:13:23Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SDS-BIG(2) , SDS-SMALL(2), SDS-STSW a všechny OEM ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
Tato stránka se věnuje změnám ve firmware a v HW pro výrobek SDS-BIG a SDS-SMALL a SDS-STSW.&lt;br /&gt;
&lt;br /&gt;
Změny jsou seřazeny tak, že nejnovější verze (která je stáhnutelná z webu) je popsána jako první.&lt;br /&gt;
&lt;br /&gt;
Proč je vydáván nový firmware? Protože operativně řešíme požadavky uživatelů, a jsou doplňovány nové funkce.&lt;br /&gt;
&lt;br /&gt;
Firmware poskytujeme zcela zadarmo po celou dobu životnosti výrobku. Děláme to vše pro Vás.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 25.10.2025 ==&lt;br /&gt;
* doplněna položka do M2M stránky onewire.csv - uživatelský název každého 1W prvku&lt;br /&gt;
* FC: doplněna nová funkcionalita do funkce SDS_reset_program() - viz popis této funkce na wiki&lt;br /&gt;
&lt;br /&gt;
== 11.8.2025 ==&lt;br /&gt;
* přepracována interní DNS cache - pro funkci dns_resolv() - zprovozněno TTL&lt;br /&gt;
* FC: přidány indexy 70 a 71 a 72&lt;br /&gt;
&lt;br /&gt;
== 28.3.2025 ==&lt;br /&gt;
* oprava odpovědi pro S-UDP příkaz 0x04 (Read FC)&lt;br /&gt;
&lt;br /&gt;
== 15.3.2025 ==&lt;br /&gt;
* oprava odpovědi pro S-UDP příkaz 0x08 (Write FC)&lt;br /&gt;
&lt;br /&gt;
== 27.2.2025 ==&lt;br /&gt;
* upraven timeout pro čtení souboru z SD karty přes webový server (poskytování obsahu z SD karty na web)&lt;br /&gt;
* 512: oprava nefunkčního čtení ze sériové linky COM6&lt;br /&gt;
&lt;br /&gt;
== 8.2.2025 ==&lt;br /&gt;
* oprava některých payloadů v protokolu SUDP &lt;br /&gt;
&lt;br /&gt;
== 22.7.2024 ==&lt;br /&gt;
* FULLC.EXE - odstraněna chyba, která neumožnila nahrát do SDS soubor FCB větší než 64kB&lt;br /&gt;
* možnost volby klidového stavu pro každý S0 vstup (umožňuje počítat impulsy i pro NC spínače v měřiči energie)&lt;br /&gt;
* FC: SDS_reset_program() nezanechává nadbytečnou chybouvou hlášku v konzoli&lt;br /&gt;
* FC: mqtt_publish() použije vámi nastavené bitové pole do PUBLISH hlavičky (viz index 11198)&lt;br /&gt;
* SMTP odesílání by mělo být robustnější při odesílání více emailů za sebou&lt;br /&gt;
&lt;br /&gt;
== 24.2.2024 ==&lt;br /&gt;
* možnost smazat nahraný TLS klíč+certifikát (tlačítko s heslem, ve webovém rozhraní)&lt;br /&gt;
* RSTD nesmaže (nanastaví na tovární hodnoty) vaše nastavení pro všechny AD vstupy (to lze teď udělat ručně, nově přidaným tlačítkem ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 31.10.2023 ==&lt;br /&gt;
* SNMP - oprava způsobu předání chyby v odpovědi&lt;br /&gt;
* SNMP v1 - možnost nastavit dvě nezávislé komunity&lt;br /&gt;
* 512: plná implementace SNMP v3 (včetně AUTHPRIV)&lt;br /&gt;
* 64,128: omezená implementace SNMP v3 (pouze NOAUTHNOPRIV)&lt;br /&gt;
* FC: indexy 66, 67, 68, 4990..4999&lt;br /&gt;
&lt;br /&gt;
== 19.8.2023 ==&lt;br /&gt;
* oprava SDS UDP SEARCH (příchozí paket na portu 20484 byl firewallem od verze 6.6.23 zahozen, teď už opraveno)&lt;br /&gt;
* 512: HTTPS server (aktivace nahráním certifikátu, jinak zůstává HTTP)&lt;br /&gt;
&lt;br /&gt;
== 14.7.2023 ==&lt;br /&gt;
* HTTP POST: oprava sekundární chyby (objevila se ve FW 6.6.2023), kdy FW akceptoval jen rozdělený krok č. 2 (teď už opět umí jak rozdělený, tak i nerozdělený krok č. 2)&lt;br /&gt;
* FC: umožněn přímý zápisu do indexu 193 (přímo zapíše do registru PWM - určeno pro nejjemnější uživatelskou přímo konfiguraci generátoru PWM)&lt;br /&gt;
&lt;br /&gt;
== 6.6.2023 ==&lt;br /&gt;
* funkce http_header_set_user_row() má zvětšenou maximální délku parametru na 255 znaků&lt;br /&gt;
* 512: počet MQTT subscribe zvětšen z max. 8 na max. 20&lt;br /&gt;
* 512: další zvětšení FC konzole&lt;br /&gt;
* webový admin: úprava (oprava) použití timerů v javascriptu &lt;br /&gt;
* FC: DNS resolv umí pracovat s širším rozsahem UDP portů (někdy způsobilo nepřijetí odpovědi a musel se resolv opakovat)&lt;br /&gt;
* HTTP POST: poradí si i s ne-oddělenou komunikací (když klient pošle úvodní konverzační data najednou, neodděleně, tzn. nečeká na odpověď ze serveru)&lt;br /&gt;
 &lt;br /&gt;
== 9.3.2023 ==&lt;br /&gt;
* FC: verze 0x12 (+ odpovídající FULLC.EXE): přidány funkce http_header_set_user_row() a http_header_set_content_type()&lt;br /&gt;
* 64 a 128: odstraněno možné zpomalení běhu po zapnutí v určité okrajové situaci&lt;br /&gt;
&lt;br /&gt;
== 28.2.2023 ==&lt;br /&gt;
* POST: přidán příkaz /wrdf&lt;br /&gt;
* POST: oprava chyby, kdy mohlo dojít k neprovedení akce na základě příkazu /changeip&lt;br /&gt;
* malá bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 9.1.2023 ==&lt;br /&gt;
* FC verze 0x11 (+ odpovídající FULLC.EXE)&lt;br /&gt;
* firmware pro všechny HW varianty BIG, BIG2-DP a BIG2-DP-DS84&lt;br /&gt;
* web: doplněno zobrazení surových hodnot, čtených z 1-Wire zařízení &lt;br /&gt;
* FC: přidána funkce SDS_onewire_config() pro varianty -DS84&lt;br /&gt;
* FC: doplněna funkčnost FC WatchDog (pro situaci, pokud spadne program na chybu a je zastaven, tak FC Watchdog pokračuje a provede restart FC programu)&lt;br /&gt;
* FC: doplněna archivace poslední chyby FC programu, a zobrazení na webu (i v případě restartu FC Watchdogem)&lt;br /&gt;
* FC: funkce pro prohledání složky (file_opendir, file_readdir, file_closedir)&lt;br /&gt;
* oprava PWM3 a PWM4 na BIG2-64/128 - funkce, ukládání nastavení&lt;br /&gt;
* HW BIG2 DS84: RTC běží na baterii na všech HW variantách DS84 - udržuje běžící aktuální čas i při vypnutém napájení&lt;br /&gt;
* FC: přidána funkce SDS_onewire_search_bus()&lt;br /&gt;
* FC: přidány indexy 132..136 , indexy 2488..2499, 2986..2997&lt;br /&gt;
&lt;br /&gt;
== 1.12.2022 ==&lt;br /&gt;
* bezpečnostní aktualizace (dle nahlášené záležitosti a testu)&lt;br /&gt;
* trvalé zobrazení archivovaného HW faultu v Logu (pokud dojde k faultu, je hned před restartem zařízení archivován a trvale zobrazován ve výpisu, i po libovolném novém spuštění)&lt;br /&gt;
* odstraněno eventuální čekání (a následný WDG restart) při komunikaci s externími I2C zařízeními (specifické chipy na sandwich deskách uživatelů)&lt;br /&gt;
&lt;br /&gt;
== 30.11.2022 ==&lt;br /&gt;
* FC: zvýšena výkonnost (512: optimalizace pro až několika-násobné celkové zrychlení vykonávání programu) (64,128: byť jen menší zrychlení, ale přece + zvětšená konzole echo.htm) &lt;br /&gt;
* zrychleno webové rozhraní (zpomaleno zřejmě o dvě verze zpět, byť to bylo bez vlivu na funkci, je vhodnější když to nezdržuje při zobrazování v prohlížeči)&lt;br /&gt;
* FC: přidán index 137&lt;br /&gt;
* zlepšena interní obsluha sériových linek (COMx/RS485), odstraněno možné náhodné zpoždění (byť jen ve specifickém případě a jen o několik msec, ale i tak se toto vyřešilo)&lt;br /&gt;
&lt;br /&gt;
== 22.11.2022 ==&lt;br /&gt;
* FC (64/128/512): verze 0x10 &lt;br /&gt;
* dns_resolv správně hlásí chybu 516 a 517 při výpadku připojení v průběhu dotazu&lt;br /&gt;
&lt;br /&gt;
== 18.11.2022 ==&lt;br /&gt;
* FC (64/128): verze 0x10 &lt;br /&gt;
* FC: nová funkce SDS_set_RTC&lt;br /&gt;
* FC: nové funkce pro práci s float&lt;br /&gt;
* oprava pro mounting některých typů SD karet&lt;br /&gt;
&lt;br /&gt;
== 14.11.2022 ==&lt;br /&gt;
* FC: oprava výpočtů v 64-bit doméně&lt;br /&gt;
* FC: file_expand() - detailnější rozvrstvení návratových chybových hodnot&lt;br /&gt;
* web: rozšířeny zobrazované informace o probíhajícím připojování SD karty&lt;br /&gt;
* web server: vrací korektně 503 pro soubory na SD kartě, které jsou zablokovány FC programem&lt;br /&gt;
* FC: rozšířena a zásadně zlepšena implementace printf/sprintf/snprintf/sscanf - viz detaily v návodu na wiki&lt;br /&gt;
* FC: zlepšen výpis (informace na web) při určitých chybách v FC programu, plus další drobky kolem echo.htm&lt;br /&gt;
&lt;br /&gt;
== 16.10.2022 ==&lt;br /&gt;
* tento firmware (od této verze) podporuje i hardware SDS 64/128/512 ve variantě DP&lt;br /&gt;
* podpora pro 4 PWM výstupy (pro vhodný hardware - BIG2)&lt;br /&gt;
* odpověď na (webový) příkaz /sv? , má doplněný obsah http hlavičky, takže by ji mělo být snazší zpracovat&lt;br /&gt;
* FC: watchdog programu je (nově) pozastaven po dobu mountování SD karty (protože je pozastaven i program)&lt;br /&gt;
* FC: zápis do indexu 999 funguje jak má&lt;br /&gt;
* FC: verze 0x0F (nové funkce PWMx)&lt;br /&gt;
&lt;br /&gt;
== 5.10.2022 ==&lt;br /&gt;
* pouze vše řady 512 (ostatní bez tohoto problému) - důležitá oprava situace kdy někdy chybně došlo ke smazání nahraného FC programu při nahrání nového UWEB projektu do SDS&lt;br /&gt;
&lt;br /&gt;
== 30.9.2022 ==&lt;br /&gt;
* FC: oprava běhu programu v situaci kdy v kódu je vnořený (nested) switch() v rámci jiného switch() (původně chybné chování, teď opraveno)&lt;br /&gt;
&lt;br /&gt;
== 28.9.2022 ==&lt;br /&gt;
* FC: oprava výsledků maker (define), kdy chybně docházelo k pevnému přetypování na int32_t, což je teď opraveno (odstraněno)&lt;br /&gt;
&lt;br /&gt;
== 1.8.2022 ==&lt;br /&gt;
* správně zobrazovaná hláška (nápověda) na úvodní webové stránce ohledně stavu konfigurace&lt;br /&gt;
* FC: přidáno tlačítko (odkaz) pro restart FULLC programu (např. pokud skončil a chcete jej ručně spustit znovu)&lt;br /&gt;
* FC: do výpisu chyby při pádu programu je přidán UTC čas (pro identifikaci, kdy se chyba stala)&lt;br /&gt;
* FC: spolehlivostní úpravy při startu programu (načtení z DF), a při zápisu nového programu (práce s DF)&lt;br /&gt;
&lt;br /&gt;
== 11.7.2022 ==&lt;br /&gt;
* FC: verze 0x0E&lt;br /&gt;
* FC: přidána funkce mktime()&lt;br /&gt;
* FC: přidána funkce gmtime()&lt;br /&gt;
* FC: přidána funkce localtime()&lt;br /&gt;
* opraveno zachování konfigurace ipwdg (webové rozhraní) a obsluhy relé ipwdg&lt;br /&gt;
&lt;br /&gt;
== 1.7.2022 ==&lt;br /&gt;
* FC: verze 0x0D&lt;br /&gt;
* FC: upravena funkce SDS_TOPB_keyboard_status() pro lepší předané výsledky&lt;br /&gt;
* FC: přidána funkce SDS_TOPB_keyboard_updn()&lt;br /&gt;
* FC: přidána funkce SDS_rescan_onewire()&lt;br /&gt;
* FC: odstraněno náhodné hlášení o už probíhajícím nahrávání programu při nahrávání z EXE&lt;br /&gt;
* BIG 64/128 prodloužen čas pro sestavení Ethernetového spojení, což řeší problém s některými USB síťovými kartami atd.&lt;br /&gt;
* opraveno HTTP POST nastavení položek NTP&lt;br /&gt;
* opraveno HTTP POST který teď neuzavře spojení dříve než má, pokud mazání NVM pro nový FW (nebo nový UserWeb) trvá dlouho&lt;br /&gt;
&lt;br /&gt;
== 12.4.2022 ==&lt;br /&gt;
* doplněna informační stránka o vnitřním stavu OneWire Master (pro snazší identifikaci problémů při používání sběrnice)&lt;br /&gt;
* oprava v bootloaderu pro řadu 512 - vyžaduje přeprogramování u výrobce pro všechna SDS řady 512 s FW starším než 14.2.2022&lt;br /&gt;
&lt;br /&gt;
== 3.4.2022 ==&lt;br /&gt;
* FC verze 0x0C&lt;br /&gt;
* FC: přidána funkce SDS_I2C_rw&lt;br /&gt;
* OneWire stabilnější&lt;br /&gt;
&lt;br /&gt;
== 21.1.2022 ==&lt;br /&gt;
* prioritu mají vybrané konfigurační položky v NVM (jsou-li tam platné) před baterií zálohovanou pamětí&lt;br /&gt;
* aktivován HTTP POST protokol pro nahrávání a konfiguraci SDS (viz [[SDS:POST_upload]])&lt;br /&gt;
&lt;br /&gt;
== 18.1.2022 ==&lt;br /&gt;
* RSTD zapíše do NVM všechny konfigurační položky (i to co nenuluje), pro jistotu že v NVM bude vše skutečně zapsáno&lt;br /&gt;
* načítání konfigurace upraveno (větší spolehlivost)&lt;br /&gt;
&lt;br /&gt;
== 15.1.2022 ==&lt;br /&gt;
* přidána stránka cfgstatus.htm - pro možnost kontroly stavu uložené konfigurace v pevné paměti (např. co nemáte uloženo)&lt;br /&gt;
* přidán M2M výstup ip.xml&lt;br /&gt;
* FC: přidán algoritmus SHA-256 do funkce SDS_crypto()&lt;br /&gt;
* FC: každý program má unikátní identifikátor, podle kterého lze např. kontrolovat či zpětně poznat co máte v SDS nahráno&lt;br /&gt;
* identifikátor FC programu přidán na webové rozhraní a do M2M výstupů, a do exe aplikace&lt;br /&gt;
* zobrazeno unikátní identifikační čislo SDS hardware (napevno spojeno s modulem SDS, nezměnitelné), teď i ve M2M výstupech&lt;br /&gt;
* SNMP: nové položky .8.90 , .8.91 , .8.99&lt;br /&gt;
* FC: nové get(u32) položky 2 a 87&lt;br /&gt;
&lt;br /&gt;
== 31.12.2021 ==&lt;br /&gt;
* možnost vyřadit NTP z činnosti zadáním adresy 127.0.0.1 (vhodné pro uživatele kteří získávají čas odjinud, např. přes LoRA)&lt;br /&gt;
* web: informace na web (p=8) o stavu připojování SD karty (mounting...) a o stavu kdy je FC program pozastaven (PAUSED)&lt;br /&gt;
* web: opraven zámek zvětšené konzole (echo)&lt;br /&gt;
* důslednější kontrola platnosti konfigurace při startu&lt;br /&gt;
&lt;br /&gt;
== 27.12.2021 ==&lt;br /&gt;
* opravena chyba kdy na webu nešlo nastavit 100 procent PWM duty (jen 0 až 99, teď už jde i 100)&lt;br /&gt;
* FC: několikanásobně zvětšena konzole (echo.htm)&lt;br /&gt;
* HW: při poruše hlavního zdroje hodin (krystal) se použije záložní zdroj&lt;br /&gt;
* HW: využíváme RTC pro udržení času při přechodu přes reset (drží čas dokud zase nepřijde NTP)&lt;br /&gt;
* aktualizován bootloader (aktualizace bootloaderu jen prostřednictvím přeprogramování u výrobce) - umí znovu nahrát FW pokud se v SoC poškodí&lt;br /&gt;
* vydána varianta 512 - vlastní soubor s firmware&lt;br /&gt;
&lt;br /&gt;
== 25.12.2021 ==&lt;br /&gt;
* pouze interní vydání&lt;br /&gt;
&lt;br /&gt;
== 26.3.2021 ==&lt;br /&gt;
* FC: oprava nesprávného zacházení s unsigned typy (na některých místech interně přemapovány na signed)&lt;br /&gt;
* FC: chování varianty if pro speciální kombinaci signed/unsigned dle specifikace standardu C&lt;br /&gt;
&lt;br /&gt;
== 9.2.2021 ==&lt;br /&gt;
* FC: oprava TID v MODBUS-TCP&lt;br /&gt;
* MBTC výpis rozšířen&lt;br /&gt;
* FC: drobná úspora heap (více dostupného místa)&lt;br /&gt;
* FC: dns resolv drobný fix&lt;br /&gt;
* FC: http_get a http_post důležitý fix&lt;br /&gt;
* FC: nová funkce http_close&lt;br /&gt;
* FC: chyba -7 pro MODBUS-TCP a pro MQTT&lt;br /&gt;
* vylepšený algoritmus S0, rozšířené možnosti nastavení detektoru S0 (nastavení přidáno ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 22.12.2020 ==&lt;br /&gt;
* web: ruční přepnutí CBY pro relé (tzn. &amp;quot;kdo ovládá relé&amp;quot;), na &amp;quot;FULL-C&amp;quot;, dané relé nevypne (off) ale ponechá jeho stávající stav (on, off)&lt;br /&gt;
* security fix&lt;br /&gt;
&lt;br /&gt;
== 10.12.2020 ==&lt;br /&gt;
* dřívější odeslání NTP požadavku po výpadku síťového spojení&lt;br /&gt;
* integrovaná korekce chyby A/D měření pro HW osazený LMV324; uživatel může povolit tuto automatickou opravu chyby LMV324 ve webové administraci&lt;br /&gt;
* počítání délky aktivace tarifního vstupu (doba T0 a T1 v sekundách za den) viz nové sys, pozor pro funkci vyžaduje NTP&lt;br /&gt;
* automatický odečet S0 počítadel (vždy za dnešek a včerejšek), viz nové sys, pozor pro funkci vyžaduje NTP&lt;br /&gt;
&lt;br /&gt;
== 23.11.2020 ==&lt;br /&gt;
* FC + FULLC.exe: oprava chyby v případě více #if / #ifdef / #endif bloků zapsaných hned za sebou&lt;br /&gt;
* FC: makra a define lze provést i uvnitř funkce (dříve jen venku)&lt;br /&gt;
* FC: detekce nesprávné dereference ukazatele&lt;br /&gt;
&lt;br /&gt;
== 14.11.2020 ==&lt;br /&gt;
* webová administrace: stránka p=42: index ck03 se propíše i do nastavení (chybělo od 23.10.2020, web byl aktualizován, nastavení ale přebíralo ck00)&lt;br /&gt;
&lt;br /&gt;
== 4.11.2020 ==&lt;br /&gt;
* FC + FULLC.exe: odstraněn problém při načtení nahraného FULL-C programu v SDS, kdy dříve mohlo u jedné specifické velikosti nahraného programu, dojít k jeho nespuštění kvůli neodpovídajícímu crc&lt;br /&gt;
&lt;br /&gt;
== 3.11.2020 ==&lt;br /&gt;
* FC: zobrazení (v konzoli) čísla řádku (ve zdrojovém kódu) při chybě (což velmi zlepší ladění programů)&lt;br /&gt;
* FULLC.exe: odstraněno omezení na 255 znaků na řádek&lt;br /&gt;
* FULLC.exe: zrychlení nahrávání do SDS&lt;br /&gt;
&lt;br /&gt;
== 23.10.2020 ==&lt;br /&gt;
* webová administrace: stránka p=42: změna indexu ck00 na ck03 ať se dají uživatelským skriptem všechny prvky samostatně rozlišit&lt;br /&gt;
* FC: oprava http_get/post: správné vyplnění výsledků i pro situaci kdy server ukončí spojení přes TCP RST&lt;br /&gt;
&lt;br /&gt;
== 14.10.2020 ==&lt;br /&gt;
* oprava FULL-C funkce XTEA-CRYPT (bug o dvě verze dříve)&lt;br /&gt;
&lt;br /&gt;
== 13.10.2020 ==&lt;br /&gt;
* důležitá oprava chyby ve FULL-C (ternary operator, a další nahlášené nesrovnalosti)&lt;br /&gt;
&lt;br /&gt;
== 13.9.2020 ==&lt;br /&gt;
* oprava detekce SD karty (některé varianty SD karet nebyly detekovány, teď už ano)&lt;br /&gt;
&lt;br /&gt;
== 9.8.2020 ==&lt;br /&gt;
* FULL-C verze 0B (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* různé drobné opravy a zabezpečení&lt;br /&gt;
* zobrazení auditlogu (webové rozhraní SDS)&lt;br /&gt;
* FC: http_post&lt;br /&gt;
* FC: MQTT klient&lt;br /&gt;
* FC: MODBUS-TCP klient&lt;br /&gt;
&lt;br /&gt;
== 4.8.2020 ==&lt;br /&gt;
* úprava obsluhy relé&lt;br /&gt;
* podpora OneWire modulu SDS-1W-T-RH&lt;br /&gt;
&lt;br /&gt;
== 3.10.2019 ==&lt;br /&gt;
* SMTP klient posílá v hlavičce i položku &amp;quot;Date&amp;quot; (ale jen za předpokladu správného času v SDS)&lt;br /&gt;
* RSTD při zapnutí zařízení, ve kterém není záložní baterie (nebo je vybitá), zachová původně nastavenou MAC adresu (vše ostatní ale už jde do defaultu, což je správně)&lt;br /&gt;
* SUDP: rozšířen NOP příkaz &lt;br /&gt;
* SUDP: přidány další nové příkazy (master_cmd: 32, 33, 40, 42, 44, 48)&lt;br /&gt;
&lt;br /&gt;
== 23.9.2019 ==&lt;br /&gt;
* oprava GUI (S0 Inputs)&lt;br /&gt;
* SNMP nabízí možnost číst všechny sdílené proměnné (FULL-C: Sxx, Uxx, Fxx, Txx)&lt;br /&gt;
* opraven nefunkční RSTD na modulu STSW-rev3&lt;br /&gt;
&lt;br /&gt;
== 23.6.2019 ==&lt;br /&gt;
* oprava chyby objevené ve FW 28.5.2019, kdy na některých specifických SDS nefungovaly AD vstupy&lt;br /&gt;
&lt;br /&gt;
== 28.5.2019 ==&lt;br /&gt;
* oprava funkce SD karty (pro případy kdy se stala po čase nedostupná pro FC/web)&lt;br /&gt;
&lt;br /&gt;
== 5.5.2019 ==&lt;br /&gt;
* dořešeno hlídání stavu (načtení, atd.) SD karty i v případě provozu náročného FULL-C programu (tedy i pro hluboce vnořené smyčky)&lt;br /&gt;
* oprava původně chybné implementace S-UDP příkazu &amp;quot;1Waccess: sub-command 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== 24.2.2019 ==&lt;br /&gt;
* překlopení z BETA do oficiálního FW&lt;br /&gt;
* automatika zimní/letní čas&lt;br /&gt;
* přístup na SD kartu: FULL-C pracuje se soubory (vytvoření, smazání, čtení a zápis, atd.) &lt;br /&gt;
* přístup na SD kartu: web server zobrazuje soubory ze SD karty (vše ve složce \web\ a podsložkách této složky)&lt;br /&gt;
* oprava čtení napětí baterie pro variantu 128K&lt;br /&gt;
* shared.xml&lt;br /&gt;
* odstraněno omezení délky ve shared.txt&lt;br /&gt;
* zprovozněno getsv&lt;br /&gt;
* verze FULL-C je teď FC 0x0A (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* FULL-C: nová možnost způsobu čtení teploty SoC&lt;br /&gt;
* FULL-C: index 64, 65, 184, 185, 429, 430, atd.&lt;br /&gt;
* FULL-C: doplněné set/get funkce pro sdílené proměnné&lt;br /&gt;
* FULL-C: s/printf umí správné zpracovat požadavek na určení desetinných míst pro float&lt;br /&gt;
* FULL-C: funkce pro reset FC programu&lt;br /&gt;
* FULL-C: funkce pro watchdog FC programu&lt;br /&gt;
* SNMP nové OIDy (dle přidaných věcí - čas, sdcard)&lt;br /&gt;
&lt;br /&gt;
== 1.7.2018 ==&lt;br /&gt;
* SNMP: sdsS0translatedUnitT0,1 je poskytováno jako hodnota od odečtu (ne od úplného začátku měření, jak to bylo předtím) &lt;br /&gt;
* FULL-C: přidán index 183 poskytující datum vydání FW který je právě nahrán v SDS&lt;br /&gt;
&lt;br /&gt;
== 27.6.2018 ==&lt;br /&gt;
* verze FULL-C je teď FC 0x09 (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* FULL-C: přidána podpora pro int64_t a uint64_t&lt;br /&gt;
* FULL-C: přejmenováno set a get funkce (rozlišení 32 a 64 bit)&lt;br /&gt;
* FULL-C: snprintf přesně dle standardu (zrušena nevhodná změna z 20.12.2017)&lt;br /&gt;
* drobné opravy&lt;br /&gt;
* drobná oprava v odchozím TCP-SYN a v generátoru ISN&lt;br /&gt;
&lt;br /&gt;
== 8.3.2018 ==&lt;br /&gt;
* oprava echo.htm - správně wrapuje obsah, a nejsou tam nadbytečné 0x00&lt;br /&gt;
* vhodnější řešení rexmitu částí webových stránek a dynamických dat (ocení to zejména uživatelé s mobilním připojením pro SDS)&lt;br /&gt;
&lt;br /&gt;
== 2.3.2018 ==&lt;br /&gt;
* aktulizace a oprava ve výpočtu &amp;quot;aktuálního výkonu&amp;quot; pro okrajové situace (např. krajní hodnoty impulsní konstanty)&lt;br /&gt;
&lt;br /&gt;
== 11.2.2017 ==&lt;br /&gt;
* zprovozněny funkce set/get pro indexy 4000 až 4300 (alternativní přístup k číselným sdíleným proměnným)&lt;br /&gt;
&lt;br /&gt;
== 21.12.2017 ==&lt;br /&gt;
* zvýšena stabilita spuštění po zapnutí&lt;br /&gt;
&lt;br /&gt;
== 20.12.2017 ==&lt;br /&gt;
* dočasná změna ve FULL-C (bude zrušena): funkce snprintf() má interně posunutý limit délky zápisu o 1 (toto je záměrný rozdíl proti C99). Změna v SDS je provedena z důvodu neznalosti programátorů FC v tom, že do snprintf() limitu je potřeba započítat i jeden byte pro ukončující nulu. Ve výsledku tedy zápis &amp;quot;snprintf(buf, limit, ...);&amp;quot; je v FC interně vykonán jako &amp;quot;snprintf(buf, limit+1, ...);&amp;quot;.&lt;br /&gt;
* oprava ve FULL-C: výpočet platné délky bufferu funguje i pro ukazatele vytvořené offsetem ze základní alokované adresy (příklad takového bufferu je: buf=malloc(x)+offset;)&lt;br /&gt;
* stav všech relé je načten z paměti vždy po zapnutí modulu, a ty relé které jsou ručně ovládány (manual control) a které byly před vypnutím v zapnutém (ON) stavu, jsou po zapnutí modulu aktivovány (zatímco relé ovládané z IP-W a FC jsou vždy po zapnutí modulu uvedeny do OFF stavu)&lt;br /&gt;
&lt;br /&gt;
== 18.12.2017 ==&lt;br /&gt;
* UserWEB projekt má opravenu chybu, kdy nebylo možno použít delší Name Chain tabulku (tedy lze už vložit mnohem více souborů) &lt;br /&gt;
* nastavená MAC adresa je zachována i po průchodu RSTD (byla-li platná)&lt;br /&gt;
* opravena chyba způsobující nefunkční http_get(), teď už to opět funguje&lt;br /&gt;
* aktualizace obsluhy PWM (např. lépe přepočítává zobrazovaná &amp;quot;procenta&amp;quot;)&lt;br /&gt;
* oprava strcat() funkce (opraveno hlídání max velikosti bufferu ze &amp;quot;from&amp;quot; na &amp;quot;to&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== 18.9.2017 ==&lt;br /&gt;
* FULL-C: printf() správně tiskne float i pokud se formátovací parametr zadá jako %d (tedy ne jako %f)&lt;br /&gt;
* FULL-C: snprint() opraven (když je 'from' kratší než 'to' tak je 'to' doplněn 0x00 - je to zvláštnost, nemá se to používat, ale C99 to předepisuje, tak to dodržíme)&lt;br /&gt;
&lt;br /&gt;
== 9.9.2017 ==&lt;br /&gt;
* vnitřní bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 29.8.2017 ==&lt;br /&gt;
* oprava chování RSTD - pokud je zapojen před zapnutím, nepřejde do automatického resetu po 10sec, ale RSTD je použit a SDS pracuje dále; přitom funkce &amp;quot;zapoj RSTD za běhu&amp;quot; je zachována správně&lt;br /&gt;
* zásadní zlepšení odolnosti FULL-C proti chybám programátora - vnitřní hlídání rozsahů bufferu a stringů, zamezující zápisu za hranice pole (typicky chybné použití sprintf() funkce, ale toto hlídání je aplikováno obecně všude)&lt;br /&gt;
&lt;br /&gt;
== 8.8.2017 ==&lt;br /&gt;
* oprava: FC teď správně převádí URL kód &amp;quot;sv?xxxx=yyyy...&amp;quot;, na text (vypadlo 31.3. při rozšíření počtu znaků pro sdílené proměnné Txx) &lt;br /&gt;
&lt;br /&gt;
== 10.7.2017 ==&lt;br /&gt;
* vydán firmware pro variantu &amp;quot;128kB&amp;quot; (od teď vychází dva typy firmware, pro variantu &amp;quot;64kB&amp;quot; a variantu &amp;quot;128kB&amp;quot;, vyberete si tu svou dle HW který máte)&lt;br /&gt;
* velká optimalizace využití paměti pro uložení a běh FULL-C programu (komprese, a zmenšení vyžadovaného heapu pro běh programu) - významně zvětšuje možnou velikost FC programu&lt;br /&gt;
* pin RSTD lze teď také použít i bez vypnutí a zapnutí SDS, stačí jej na 10 vteřin za běhu zkratovat (pak se provede RSTD a SDS se rebootuje) - výhodné pro zařízení kde vypnutí nelze provést&lt;br /&gt;
* drobné užitečné opravy dle hlášení uživatelů&lt;br /&gt;
* verze FC zvýšena na 0x08, a přidána možnost uložit 128 proměnných do baterií zálohované pamětí (tzn. obsah přežije výpadek napájení a FC program po restartu o tyto údaje nepřijde)&lt;br /&gt;
&lt;br /&gt;
== 2.6.2017 ==&lt;br /&gt;
* návratová hodnota funkce DF_read_page() je nastavena správně i v případě, kdy tato funkce čte data z cache (opakované čtení stejné stránky DF)&lt;br /&gt;
&lt;br /&gt;
== 6.4.2017 ==&lt;br /&gt;
* přidána FULL-C funkce AES-128-CTR, viz SDS_crypto(0x20, ...);&lt;br /&gt;
&lt;br /&gt;
== 31.3.2017 ==&lt;br /&gt;
* oprava RS485-MASTER drive, je teď zcela přesný (tzn. vypnut v přesném časování za úplně posledním vyslaným bitem)&lt;br /&gt;
* oprava čtení konfigurace 1-W, pomocí sds_get_a()&lt;br /&gt;
* přidán index 139&lt;br /&gt;
* odstraněno omezení na 32 znaků pro sdílené proměnné (přenos textu) &amp;quot;Txx&amp;quot; (xx = 00 až 99)&lt;br /&gt;
* fix návratových hodnot FULL-C funkcí pro práci s DF (teď to vrací správně 1 nebo 0, podle wiki)&lt;br /&gt;
* upřesněn název: (z BIG na BIG-64) / (z STSW na STSW-64)&lt;br /&gt;
* vyžaduje aktuální SDSLOAD.exe (6.3.2017 nebo novější) a FULLC.exe (6.3.2017 nebo novější)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== starší záznamy ==&lt;br /&gt;
&lt;br /&gt;
Nejsou k dispozici.&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=966</id>
		<title>Firmware</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=966"/>
		<updated>2025-10-25T13:10:59Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Nový Firmware ==&lt;br /&gt;
&lt;br /&gt;
Aktualizujte si své SDS - nahrejte do něj nový firmware, který získáte na této stránce - '''naskrolujte dolů''' kde naleznete odkaz na BIN soubor pro vaše zařízení.&lt;br /&gt;
&lt;br /&gt;
Postup a řešení problémů: [[Manual_Firmware_Update|Návod pro aktualizaci Firmware v SDS]].&lt;br /&gt;
&lt;br /&gt;
Důležité první kroky, které je nutné provést s každým novým zakoupeným modulem: [[New_Device_First_Setup_Steps|První nutné kroky pro nově zakoupené zařízení SDS]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Odkazy ke stáhnutí ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;PC Software&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_sdsc_winexe.jpg]] '''Program SDSC.exe''' (programovací jazyk SDS-C, aktualizace firmware pro SDS '''první řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; stáhnout WinEXE pro SDS-C [https://sds.an-d.cz/firmware/SDSC_310123.exe zápis/simulace/upload SDS-C (SDS-C '''verze 09''') a UWEB, ze dne 31.1.2023]&amp;lt;br&amp;gt;SHA-256: daf1095f206404e33223f675f5d0bc09d4fc5dfd7d9f79f4f735af88f5ff1e6a&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program FULLC.exe''' (programovací jazyk FULL-C, aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; (FC verze '''0x12''' - '''aktuální'''): stáhnout WinEXE pro FULL-C [https://sds.an-d.cz/firmware/FULLC_220724.exe zápis/upload FULL-C a UWEB, ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro Firmware od 9.3.2023 včetně, pro všechny varianty SDS (64kB a 128kB a 512kB)&amp;lt;br&amp;gt;SHA-256: b4cb95d8ec8a6e844a3a4c9a2e9fc50ece60ccf44e8043f8c10f46b2294cae0b&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program SDSLOAD.exe''' (&amp;quot;jednokrokový&amp;quot; upload .FC souborů a aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; ('''aktuální''' verze, pro FW od 10.7.2017 včetně a dále) stáhnout WinEXE [https://sds.an-d.cz/firmware/SDSLOAD_220724.exe program SDSLOAD ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro všechny SDS varianty 64kB a 128kB a 512kB, (subvarianty DP a DS84)&amp;lt;br&amp;gt;SHA-256: ded5bf1aca2e04e22c33899a0976deccc8ff76eb88f53ecd9769788b7daa25a7&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_empty.jpg]] '''Program SDS LOG'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; Program '''[[SDS LOG: intro|SDS LOG]]''' - verze 0.1 ze dne 26.8.2011 - [https://sds.an-d.cz/firmware/SDS_LOG.exe stáhnout EXE program]&lt;br /&gt;
&amp;lt;li&amp;gt; Zdrojové kódy programu SDS LOG (Creative Commons Licence) [[SDS LOG: source code|ke stáhnutí zde]]&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS LOG: changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;První Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMICROE.jpg]]  [[Soubor:Thumbnail_SDSMICRO.jpg]] [[Soubor:Thumbnail_SDS_DIN.jpg]] '''D0000001''' MICRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: LM]] varianty '''LIGHT''', '''LIGHT 2''' a '''E (DIN)'''.&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny varianty a revize SDS MICRO LM.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_010722_CZ.bin SDS-MICRO-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_010722_EN.bin SDS-MICRO-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B0000057''' MICRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_021123_CZ.bin SDS-MICRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_021123_EN.bin SDS-MICRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B000D957''' MICRO ST DP&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST DP]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST DP.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_021123_CZ.bin SDS-MICRO-ST-DP-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_021123_EN.bin SDS-MICRO-ST-DP-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MINI_1.png]] [[Soubor:Thumbnail_SDS_MINI_2.png]] '''B0000020''' MINI ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MINI: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MINI ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MINI_021123_CZ.bin SDS-MINI-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MINI_021123_EN.bin SDS-MINI-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
[[SDS MINI: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMACRO.jpg]] '''C0000001''' MACRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: LM]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_010722_CZ.bin SDS-MACRO-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_010722_EN.bin SDS-MACRO-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MACRO_ST_rev1.png]] '''C0000057''' MACRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_021123_CZ.bin SDS-MACRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_021123_EN.bin SDS-MACRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSTTCPRO.jpg]] '''B0000001''' TTCPRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS TTCPRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_021123_CZ.bin SDS-TTCPRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_021123_EN.bin SDS-TTCPRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS TTCPRO ST má shodný Change Log se SDS MINI ST, a to zde: [[SDS MINI: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSIO6.jpg|160px]] '''D0000006''' IO6 LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: LM]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_010722_CZ.bin SDS-IO6-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_010722_EN.bin SDS-IO6-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 LM má shodný Change Log se SDS MICRO LM, a to zde: [[SDS MICRO: LM: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_empty.jpg]] '''D0000011''' IO6 ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_021123_CZ.bin SDS-IO6-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_021123_EN.bin SDS-IO6-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 ST má shodný Change Log se SDS MICRO ST, a to zde: [[SDS MICRO: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_FTP_rev1.png]] '''F0000001''' FTP LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS FTP: LM]], výchozí firmware.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Firmware: ''SDS FTP ze dne 7.9.2010'' už nahrán ve výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS FTP: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_ONEDPS.jpg]] '''E000AAA1''' UPS ONEDPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: ONEDPS]], finální jednodesková verze (aktuální) (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stáhnout firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_CZ.bin (Česká lokalizace) SDS-UPS-ONEDPS-LM ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;Download firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_EN.bin (English language version) SDS-UPS-ONEDPS-LM released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS UPS: LM: ONEDPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_TWODPS.jpg]] '''C00xxxxx''' UPS TWODPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: TWODPS]], HW rev3u - DVOUDESKOVÁ (UŽ NEPRODÁVANÁ) varianta.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je zaslán na požádání (pošlete email), aktuální verze je z 1.3.2011 (dále aktualizováno na specifické požádání, raději proto přejděte na nový HW).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Každá deska má svou kalibraci, proto každá deska má svůj vlastní FW, proto musíte uvést S/N svého výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;HISTORIE: [[SDS UPS: LM: TWODPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;Druhá Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSBIG.jpg]] [[Soubor:Thumbnail_SDSSMALL.jpg]] '''B1900001''' / '''B1900002''' / '''B1900004''' : BIG, BIG2, SMALL, STSW, MBGW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Společný firmware pro výrobky [[SDS BIG]], [[SDS SMALL]] a [[SDS STSW]] a [[SDS MBGW]]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je jednotný pro všechny varianty '''SDS Druhé Produktové Řady''', nutné je rozlišení dle varianty 64kB/128kB/512kB. Rozlišení podle dalších subvariant (DP, DS84) se neprovádí.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je společný pro BIG a BIG2, rozlišení je pouze dle varianty 64/128/512.&lt;br /&gt;
&amp;lt;li&amp;gt;Pozn. Modul SMALL a modul MBGW interně obsahuje modul STSW, nahrává se tam tedy stejný FW.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware vždy vyžaduje použití odpovídající, aktuální verze FULLC.EXE programu. &lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS BIG/SMALL/STSW: [[SDS BIG: firmware changelog|firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;64kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 64kB) [https://sds.an-d.cz/firmware/SDS_BIG_64K_251025_EN.bin firmware &amp;quot;64kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 25.10.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;128kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 128kB) [https://sds.an-d.cz/firmware/SDS_BIG_128K_251025_EN.bin firmware &amp;quot;128kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 25.10.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;512kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [[firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 12.4.2022|informace pokud máte SDS512 s FW &amp;lt;b&amp;gt;starším&amp;lt;/b&amp;gt; než 12.4.2022]]&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [https://sds.an-d.cz/firmware/SDS_BIG_512K_251025_EN.bin firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 25.10.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;Informace: SDS BIG/SMALL/STSW 512 se starším FW než 12.4.2022 vyžaduje přeprogramování u výrobce.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| POZOR&lt;br /&gt;
'''Aktualizujte''' své doplňkové sandwich desky, tzn. [[SDS BIG: DALI]], [[SDS BIG: LORA]] - na verzi FW 5.12.2016 '''nebo novější'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Aktualizaci lze provést jen fyzicky u výrobce, ten ji provede bezplatně (zašlete výrobci vaše SDS pro jeho aktualizaci). Se starým FW nebude tento HW plně fungovat.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Informace ===&lt;br /&gt;
&lt;br /&gt;
 VŽDY MĚJTE VE SVÉM ZAŘÍZENÍ NEJNOVĚJŠÍ FIRMWARE, A POUŽÍVEJTE TAKÉ NEJNOVĚJŠÍ SDS-C EXE / FULL-C EXE PROGRAM.&lt;br /&gt;
 V opačném případě vám budou chybět nové funkce, které neustále přidáváme, a také nebudete mít opravené nalezené chyby.&lt;br /&gt;
 V případě že chcete získat podporu, musíte mít instalovaný nejnovější firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Historický Software ===&lt;br /&gt;
&lt;br /&gt;
Za účelem aktualizace takových SDS, kde už dlouho nebyl aktualizován firmware, je potřeba použít odpovídající EXE program pro aktualizaci takovéhoto zařízení.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== První Produktová Řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro SDS-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_151119.exe ze dne '''15.11.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 08, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020118.exe ze dne '''2.1.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 07, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020317.exe ze dne '''2.3.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 8.8.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_060216.exe ze dne '''6.2.2016''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které nemají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 24.1.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_231111.exe ze dne '''23.11.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 04&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_170211.exe ze dne '''17.2.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''února 2011''')&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro ''SDS-C verze č. 03'' (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_140511.exe ze dne '''14.5.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''konce května 2011''')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Druhá Produktová řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro FULL-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_070323.exe ze dne '''7.3.2023''']&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_311222.exe ze dne '''31.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 11, (firmware od 9.1.2023 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_071222.exe ze dne '''7.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 10, (firmware od 18.11.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_161022.exe ze dne '''16.10.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0F, (firmware od 16.10.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_110722.exe ze dne '''11.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0E, (firmware od 11.7.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010722.exe ze dne '''1.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0D, (firmware od 6.8.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030422.exe ze dne '''3.4.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0C, (firmware od 23.3.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010322.exe ze dne '''1.3.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0B, (firmware od 6.8.2020 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030119.exe ze dne '''3.1.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0A, (firmware od 3.1.2019 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010718.exe ze dne '''1.7.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 09, (firmware od 27.6.2018 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_100717.exe ze dne '''10.7.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 08, (firmware od 10.7.2017 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_080617.exe ze dne '''8.6.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 06, (firmware starší než Červenec-2017, a pouze pro variantu SDS 64kB)&lt;br /&gt;
&lt;br /&gt;
* (historická verze) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_201022.exe ze dne 20.10.2022]&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_120417.exe ze dne 12.4.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB která používá ''starý'' firmware (2017 nebo starší)&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_100717.exe ze dne 10.7.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB a 128kB (nepodporuje variantu 512kB tak jako aktuální stáhnutelná verze aplikace)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta Testing ==&lt;br /&gt;
&lt;br /&gt;
Než vydáme novou verzi, je potřeba změny a novinky otestovat.&lt;br /&gt;
&lt;br /&gt;
Pokud jste ochotní se testu zúčastnit, pak se podívejte [https://forum.sds.an-d.cz/viewtopic.php?id=129 na tento odkaz]. Zde jsou uveřejněny vždy nejnovější beta verze firmware.&lt;br /&gt;
&lt;br /&gt;
Diskuse s vývojem k aktuálnímu Firmware je k dispozici na našem fóru.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_general_functions&amp;diff=965</id>
		<title>FULL-C: general functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_general_functions&amp;diff=965"/>
		<updated>2025-10-25T08:59:04Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje programovací jazyk '''FULL-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Některá zařízení používají SDS-C, pro který máme návody jinde na této WiKi.&lt;br /&gt;
&lt;br /&gt;
== Nezařazené funkce FULL-C ==&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Zde je seznam různých funkcí, které FULL-C poskytuje a které nejsou blíže popsány na specifické tématické stránce:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void SDS_reset_program(unsigned int key);&lt;br /&gt;
         void SDS_set_wdg(unsigned int newTimeOut);&lt;br /&gt;
         void SDS_kick_wdg(unsigned int key);&lt;br /&gt;
&lt;br /&gt;
         void SDS_heap_stats(unsigned int *currentAllocatedBytes, &lt;br /&gt;
unsigned int *totalFreeBytes, unsigned int *biggestFreeBlockAvailable);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Účel ==&lt;br /&gt;
&lt;br /&gt;
Vždy se má předpokládat, že v programu, který chcete spustit a provozovat, je nějaká (skrytá) chyba. I když je program napsán &amp;quot;dokonalým&amp;quot; způsobem, nikdy nemůžete mít jistotu, že tomu tak skutečně je. Toto je základní princip tzv. SAFETY vývoje, kdy automaticky VŽDY očekáváme že v programu může být chyba (respektive víme, že nejsme dokonalí, a dokonalosti se můžeme vždy jen přiblížit, ale z principu ji nelze dosáhnout). Dále je potřeba očekávat i vnější vlivy, kdy dojde k ovlivnění nebo dokonce snad i změně programu, neočekávaným a nechtěným vnějším vlivem. Ať je to uživatelům zásah, měřená fyzikální veličina mimo očekávaný rozsah, útok hackera a nebo snad kosmická částice která změní bit v paměti - úplný seznam nelze nikdy vytvořit. &lt;br /&gt;
&lt;br /&gt;
Toto vše však má řadu řešení, které byly dlouho zkoumány a připravovány. Jako vhodný základ je vývoj programů podle safety normy 61508, tedy minimálně si z ní vzít ty kritické požadavky.&lt;br /&gt;
&lt;br /&gt;
SDS nabízí funkci speciálního hlídače vašeho FC programu - tedy FC WATCHDOG. Tato funkce se musí aktivovat ve vašem FC programu, a následně se musí FC program periodicky hlásit, že stále správně funguje. Pokud se nepřihlásí v nastaveném čase, dojde ze strany SDS k zastavení a novému spuštění programu. Toto vše může váš FC program sledovat přes vybrané systémové indexy, a také konfigurovat přes určené FC funkce. &lt;br /&gt;
&lt;br /&gt;
Samozřejmě FC-Watchdog je jen jedním z mnoha prvků, které je potřeba využít, aby váš systém byl celkově odolný a vydržel chybu-vzdorně pracovat.&lt;br /&gt;
&lt;br /&gt;
Další prvky jsou:&lt;br /&gt;
* úvodní analýza programu a způsob psaní kódu programu&lt;br /&gt;
* detailně sepsané požadavky na všech úrovních, a jejich provázání na kód a test&lt;br /&gt;
* sledování využití paměti&lt;br /&gt;
* úvodní diagnostika&lt;br /&gt;
* průběžná diagnostika&lt;br /&gt;
* telemetrie (logování, informace předávané uživateli, historie, záchyt chybových stavů tak aby šla chyba plně identifikovat)&lt;br /&gt;
* statická a dynamická analýza kódu programu&lt;br /&gt;
* SiL a HiL testování&lt;br /&gt;
* Unit Testy&lt;br /&gt;
* schopnost programu pracovat v režimu snížené kapacity systému (např. při poškozené části systému)&lt;br /&gt;
* odolnost programu a jeho vnitřních prvků a funkcí (především proti integer a buffer overflow)&lt;br /&gt;
* zabezpečená komunikační rozhraní (safety a security)&lt;br /&gt;
* zabezpečená datová úložiště (safety a security)&lt;br /&gt;
&lt;br /&gt;
Většina těchto prvků je &amp;quot;na vás&amp;quot;, tedy SDS poskytuje prostor a možnosti k jejich realizaci.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SDS_reset_program(): okamžité nové spuštění FC programu ===&lt;br /&gt;
&lt;br /&gt;
Zavoláním této funkce, se správně vyplněným parametrem ''key'', dojde k okamžitému znovu-spuštění aktuálního FULL-C programu. Tedy prakticky totéž, jako by došlo k resetu zařízení (ale to se nestane, SDS pokračuje v práci a nic se s ním při zavolání této funkce nestane; dojde pouze a jenom k ukončení a okamžitému novému spuštění nahraného FC programu).&lt;br /&gt;
&lt;br /&gt;
Podmínkou je předání hodnoty ''key'' jako čísla 1.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 // &lt;br /&gt;
 SDS_reset_program(1);  // reset programu se provede jen a pouze, pokud je parametr == 1&lt;br /&gt;
 &lt;br /&gt;
 // nebo takto:&lt;br /&gt;
 &lt;br /&gt;
 unsigned int k;&lt;br /&gt;
 k = 1234;&lt;br /&gt;
 SDS_reset_program(k); // protoze &amp;quot;k&amp;quot; neni 1, program bude pokracovat (nestane se restart programu)&lt;br /&gt;
 &lt;br /&gt;
 k = 1;&lt;br /&gt;
 SDS_reset_program(k); // a ted uz se program spusti odznova, protoze klic je 1 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SDS_reset_program(): restartování celého SDS modulu ===&lt;br /&gt;
&lt;br /&gt;
Druhá použitelná funkcionalita funkce SDS_reset_program() je provedení soft-resetu hlavního procesoru v SDS modulu. Soft-reset je programově vyvolaný RESET, kdy dojde k ukončení činnosti programu a celému novému startu (tedy prakticky to samé, jako by došlo k odpojení napájení modulu SDS, a znovu připojení napájení).&lt;br /&gt;
&lt;br /&gt;
Aby nedošlo k vyvolání této funkce omylem, je potřeba zadat správný dynamický parametr. Tento parametr je potřeba připravit v daný okamźik, a je platný jen 320 milisekund. To znamená, že od momentu kdy je nová hodnota parametru určena (spočtena) po zavolání funkce SDS_reset_program(), musí uplynout méně než 320 msec. Pokud to bude více, program bude pokračovat a k žádnému resetu nedojde. Toto si musíte ve svém programu ohlídat !&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 unsigned int dynamic_reset_value;&lt;br /&gt;
&lt;br /&gt;
 // calculate&lt;br /&gt;
 dynamic_reset_value = SDS_get_u(3); // ziskame aktualni cas &lt;br /&gt;
 dynamic_reset_value = 0xF0000000 | (dynamic_reset_value &amp;gt;&amp;gt; 5);  // specialni doplnujici vypocet&lt;br /&gt;
&lt;br /&gt;
 // go&lt;br /&gt;
 SDS_reset_program(dynamic_reset_value);  // reset SDS se provede jen tehdy, pokud hodnota odpovida&lt;br /&gt;
 &lt;br /&gt;
 // ted se bud provedl reset SDS, a proto se sem program uz nedostane (a vse zacne od zacatku),&lt;br /&gt;
 // nebo se neprovedl (protoze byla neplatna hodnota v dynamic_reset_value)&lt;br /&gt;
&lt;br /&gt;
 printf(&amp;quot;chyba, neprovedl se reset, zkusim to znovu ?\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SDS_set_wdg(): spuštění dohledu správněhu běhu FC programu ===&lt;br /&gt;
&lt;br /&gt;
Funkce nastaví a okamžitě spustí Watchdog pro FULL-C program - cílem je hlídat &amp;quot;nezaseknutí&amp;quot; vašeho FULL-C programu.&lt;br /&gt;
&lt;br /&gt;
Stanovíte si, jak často se váš FULL-C program musí &amp;quot;hlásit&amp;quot; že je v pořádku (nezaseknutý), a pokud se váš program do té doby neohlásí (např. zůstane &amp;quot;zaseknutý&amp;quot; v nějaké smyčce), tak SDS okamžitě provede jeho ukončení a následně spustí FC program znovu.&lt;br /&gt;
&lt;br /&gt;
Tato funkce tedy spustí odpočet, a pokud se tento dopočítá (z vámi nastavenou hodnotu) na nulu, dojde k popsanému restartu FC programu.&lt;br /&gt;
&lt;br /&gt;
Parametr '''newTimeOut''' nastavuje cílovou hodnotu odpočtu, a je uveden v sekundách. Příklad: SDS_set_wdg(10) spustí hlídání FC programu a pokud do 10 sekund není zavolána funkce SDS_kick_wdg, tak dojde k znovu-spuštění FC programu.&lt;br /&gt;
&lt;br /&gt;
Jakmile je jednou hlídač spuštěn, nelze jej deaktivovat - to se stane pouze při fyzickém restartu zařízení SDS, při nahrání nového FC programu, nebo při jeho novém spuštění. Při každém spuštění FC programu (nezávisle na důvodu, jestli to bylo nahráním nového programu, nebo jeho restartem), tak je hlídač vypnut - a FC program jej musí nastavit a spustit zavoláním funkce SDS_set_wdg().&lt;br /&gt;
&lt;br /&gt;
FC program si může zjistit, že jeho aktuální spuštění bylo vyvoláno právě z tohoto důvodu (zaseknutí) a podle toho se &amp;quot;zařídit&amp;quot; (např. poslat zprávu, přejít do nouzového režimu, atd. podle toho jak si to sami vymyslíte pro svou aplikaci).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SDS_kick_wdg(): průběžná aktualizace dohledu běhu FC programu ===&lt;br /&gt;
&lt;br /&gt;
Funkce se volá opakovaně a musí se vždy stihnout zavolat (od svého posledního zavolání) v rámci nastaveného intervalu (viz funkce SDS_set_wdg).&lt;br /&gt;
&lt;br /&gt;
Zavolání SDS_kick_wdg dojde k nastavení odpočtu hlídače běhu FC programu, a odpočet tedy začne znovu klesat (může klesat až do nuly, kdy dojde k restartu programu - není-li odpočet včas znovu nastaven nahoru).&lt;br /&gt;
&lt;br /&gt;
Pokud tedy včas nezavoláte tuto funkci, dojde k restartování FC programu. Toto je záměr, kdy se vám např. program zasekne, tak s tím je potřeba něco udělat - a tento hlídač se o to postará.&lt;br /&gt;
&lt;br /&gt;
Je na vás, správně rozmístit volání SDS_kick_wdg do vašeho FC programu - není to jednoduché, a může se stát, že přehlédnete místo, kam to ještě bylo potřeba vložit. Důsledné testování vašeho FC programu je tedy na místě !&lt;br /&gt;
&lt;br /&gt;
Parametr ''key'' při volání SDS_kick_wdg() musí mít přesně stejnou číselnou hodnotu, jakou jste předali v parametru '''newTimeOut''' při prvním volání funkce SDS_set_wdg(). Pokud zavoláte funkci SDS_kick_wdg() s jinou hodnotou, je to jako by jste tuto funkci nezavolali - a hlídací odpočet dále pokračuje k nule.&lt;br /&gt;
&lt;br /&gt;
=== Příklad obsluhy FC-watchdogu ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
  // start programu&lt;br /&gt;
  SDS_set_wdg(16);   // nastav watchdog na 16 sekund&lt;br /&gt;
 &lt;br /&gt;
  // . . .&lt;br /&gt;
 &lt;br /&gt;
  for (;;)&lt;br /&gt;
  {&lt;br /&gt;
&lt;br /&gt;
    // . . .&lt;br /&gt;
&lt;br /&gt;
    if (vse_je_ok)&lt;br /&gt;
    {&lt;br /&gt;
      SDS_kick_wdg(16); // znovunastavení hlídače, od teď máme zase až 16 sekund . . .&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    // . . .&lt;br /&gt;
&lt;br /&gt;
  }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== SDS_heap_stats(): zjištění stavu dynamické paměti ===&lt;br /&gt;
&lt;br /&gt;
Celý FULL-C program, včetně všech proměnných, je umístěn v jednom 64kB nebo 128kB nebo 512kB bloku paměti RAM (viz stránka s popisem detailu využití paměti RAM v SDS). Všechna paměť, kterou program z těchto celkových kB RAM nevyužije, je k dispozici programu pomocí funkce '''malloc()'''.&lt;br /&gt;
&lt;br /&gt;
Některé další funkce (zejména funkce pro práci se sítí, jako je například '''snmp_send_trap()''' ), vyžadují chvilkově část této volné paměti pro svou činnost. Pokud tato paměť není k dispozici (buď je do zařízení nahrán tak velký program, že ji vyčerpá už při svém úvodním spuštění) (nebo program použil malloc() natolik, že volný heap vyčerpal), tak se tyto FULL-C funkce nepovede provést (bude vrácen příslušný chybový kód = nedostatek paměti).&lt;br /&gt;
&lt;br /&gt;
Pro aktuální zjištění situace (tj. kolik je volné paměti a jaký největší blok paměti (v kuse) lze alokovat), je zde k dispozici funkce '''SDS_heap_stats()'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== SDS_heap_stats(): příklad ===&lt;br /&gt;
&lt;br /&gt;
Příklad vypíše stav paměti heap, potom alokuje 2kB paměti, a potom znovu vypíše stav, potom alokovanou paměť uvolní a naposledy vypíše stav. Sledujte text který tento program napíše do konzole.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 unsigned int currentAllocatedBytes, totalFreeBytes, biggestFreeBlockAvailable;&lt;br /&gt;
 void * ptr;&lt;br /&gt;
&lt;br /&gt;
 printf(&amp;quot;START\n&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 SDS_heap_stats(&amp;amp;currentAllocatedBytes, &amp;amp;totalFreeBytes, &amp;amp;biggestFreeBlockAvailable);&lt;br /&gt;
 printf(&amp;quot;currentAllocatedBytes: %uB, totalFreeBytes: %uB, biggestFreeBlockAvailable:%uB \n\n&amp;quot;,&lt;br /&gt;
        currentAllocatedBytes, totalFreeBytes, biggestFreeBlockAvailable);&lt;br /&gt;
&lt;br /&gt;
 printf(&amp;quot;ALLOC 2048 BYTES\n&amp;quot;);&lt;br /&gt;
 ptr = malloc(2048);&lt;br /&gt;
&lt;br /&gt;
 SDS_heap_stats(&amp;amp;currentAllocatedBytes, &amp;amp;totalFreeBytes, &amp;amp;biggestFreeBlockAvailable);&lt;br /&gt;
 printf(&amp;quot;currentAllocatedBytes: %uB, totalFreeBytes: %uB, biggestFreeBlockAvailable:%uB \n\n&amp;quot;,&lt;br /&gt;
        currentAllocatedBytes, totalFreeBytes, biggestFreeBlockAvailable);&lt;br /&gt;
&lt;br /&gt;
 printf(&amp;quot;FREE PTR\n&amp;quot;);&lt;br /&gt;
 free(ptr); ptr = 0;&lt;br /&gt;
&lt;br /&gt;
 SDS_heap_stats(&amp;amp;currentAllocatedBytes, &amp;amp;totalFreeBytes, &amp;amp;biggestFreeBlockAvailable);&lt;br /&gt;
 printf(&amp;quot;currentAllocatedBytes: %uB, totalFreeBytes: %uB, biggestFreeBlockAvailable:%uB \n\n&amp;quot;,&lt;br /&gt;
        currentAllocatedBytes, totalFreeBytes, biggestFreeBlockAvailable);&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Důležité systémové indexy ==&lt;br /&gt;
&lt;br /&gt;
* '''40''': SoC power-up or reset reason (64/128 = read only LSB: 8 bits) (512 = read all 32 bits)&lt;br /&gt;
Využijte pro analýzu jakým způsobem bylo SDS zapnuto - jestli se jedná o normální zapnutí (Power On Reset) nebo o (re)start firmware z důvodu nečekané chyby (např. watchdog)&lt;br /&gt;
&lt;br /&gt;
* '''86''': FC: actual state (running, uploading, failed etc.) of the FULL-C program (0, 1, 2, 4, 8, 16, 32, 64)&lt;br /&gt;
Využijte pro vzdálené sledování stavu programu (je-li spuštěn a běží, nebo je-li pozastaven či vůbec neběží).&lt;br /&gt;
&lt;br /&gt;
* '''87''': FC: unique identifier of the actually uploaded FULL-C program&lt;br /&gt;
Každý FC program má svůj odpovídající unikátní 32bit identifikátor, pomocí kterého lze jednotlivé programy od sebe rozpoznat. Tento identifikátor je hashem celého programového kódu, a tím je zaručena jeho vysoká unikátnost (která nebude dokonalá, ale pro tento primární účel, vhodná a použitelná je).&lt;br /&gt;
&lt;br /&gt;
* '''132''': FC: UTC time value, of the last FC-WDG restart of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
Informace - časová známka UTC, kdy došlo k poslednímu restartu tohoto FC programu, z důvodu aktivace FC-Watchdogu. Pokud k restartu nedošlo, je zde nula. Pokud UTC čas nebyl v době restartu k dispozici, je zde neplatný údaj. Tento údaj je vždy vynulován, pokud dojde k nahrání jiného programu do SDS.&lt;br /&gt;
&lt;br /&gt;
* '''133''': FC: UpTime value, of the last FC-WDG restart of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
Informace - hodnota UpTime, kdy došlo k poslednímu restartu tohoto FC programu, z důvodu aktivace FC-Watchdogu. Pokud k restartu nedošlo, je zde nula. Tento údaj je vždy vynulován, pokud dojde k nahrání jiného programu do SDS.&lt;br /&gt;
&lt;br /&gt;
* '''134''': FC: archived text of the last FC error&lt;br /&gt;
Došlo-li k chybě, která způsobila pád nebo restart vašeho FC programu, je tato chyba archivována a je k dispozici zde - můžete ji tak sami zobrazit ve svém programu, nebo poslat dále v rámci logování. Tento údaj je nulován (prázdný text) jakmile je nahrán nový program do SDS.&lt;br /&gt;
&lt;br /&gt;
* '''135''': FC: number of FC-WDF restarts of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
Každý FC-Watchdog restart, pro aktuální nahraný FC program, způsobí zvýšení tohoto počítadla. Jakmile je nahrán nový FC program do SDS, je počítadlo vynulováno.&lt;br /&gt;
&lt;br /&gt;
* '''136''': FC: total count of all FC program starts, since the SDS boot&lt;br /&gt;
Počítadlo úplně všech spuštění (libovolných) FC programů, od zapnutí SDS (respektive tedy: od posledního bootu SDS). Počítadlo se nuluje jen restartem SDS.&lt;br /&gt;
&lt;br /&gt;
* '''137''': read an actual SDS CPU cycle counter (number of executed instructions since power-up/reboot), continuously wraps around, (1 step = approx. 2 nsec)&lt;br /&gt;
Vysokorychlostní automatický čítač, svázaný s vykonáváním CPU instrukcí v hlavním SoC chipu. Vhodné pro sledování rychlosti programu, pro logování atd.&lt;br /&gt;
&lt;br /&gt;
* '''183''': SDS FW date stamp (or just 0x00000000 for a very old firmware)&lt;br /&gt;
Důležitý údaj, určuje datum nainstalované verze firmware v SDS. Díky tomuto údaji máte informaci o možnostech, které dané SDS s daným firmware poskytuje, a které ne (pokud je tam nainstalován starý firmware). Váš program může tento údaj zkontrolovat, a pokud zjistí že je v SDS nainstalován starý firmware (se kterým váš FC program není kompatibilní, nebo mu tam chybí nějaká funkce která je až v novější verzi firmware), může se tomu přizpůsobit, a nebo informovat uživatele a vynutit si aktualizace firmware v SDS.&lt;br /&gt;
&lt;br /&gt;
* '''184''': FC: information about how this actual running program was started (0 = none) (1 = normal) (2 = fc-wdg or manual restart) (4 = freshly loaded)&lt;br /&gt;
Informace, jakým způsobem byl aktuální běžící FC program spuštěn. &lt;br /&gt;
&lt;br /&gt;
* '''185''': FC: actual FULL-C WatchDog (decreasing) timeout counter value, v msec&lt;br /&gt;
Zde lze kontrolovat aktuální stav odpočtu čítače FC-Watchdogu. Pokud se počítadlo dostane na nulu, tedy nedojde-li včas k refreshi počítadla vhodným zavoláním funkce, je FC-Watchdog aktivován a dojde k restartu FC programu.&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=New_Device_First_Setup_Steps&amp;diff=964</id>
		<title>New Device First Setup Steps</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=New_Device_First_Setup_Steps&amp;diff=964"/>
		<updated>2025-08-11T10:44:58Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Nově zakoupené zařízení SDS ==&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. VŽDY AKTUALIZUJTE NA NOVÝ FIRMWARE - který získáte na stránce [[Firmware]].&lt;br /&gt;
&lt;br /&gt;
2. NÁSLEDNĚ PROVEĎTE FACTORY RESET (aktivace RSTD) - a to i v případě, že jste firmware neaktualizovali (tzn. že už v zařízení byl nejnovější FW)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pouze takto připravené zařízení lze dále provozovat.'''&lt;br /&gt;
&lt;br /&gt;
Pokud Vám zařízení SDS nefunguje atd. tak to je z 99% tím, že jste neprovedli výše uvedené dva důležité kroky.&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS, které jste čerstvě zakoupili, může mít starší firmware (který si pak musíte sami aktualizovat), a může mít nesprávnou konfiguraci (např. po výrobních testech).&amp;lt;br&amp;gt; Proto je vždy nutné provést jak krok č. 1, tak především krok č. 2 !!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Důsledky neprovedení výše uvedených kroků ==&lt;br /&gt;
&lt;br /&gt;
Pokud dostanete do rukou jakékoliv nové nebo použité zařízení SDS, musíte provést vždy oba výše uvedené kroky (ověřit verzi FW a provést RSTD).&lt;br /&gt;
&lt;br /&gt;
Zejména to, pokud neprovedete RSTD, může mít v důsledku symptom zpomaleného zařízení, kdy se celková odezva a rychlost zařízení SDS násobně sníží (to co má být okamžitě hotové trvá i několik sekund), včetně i zpomaleného vykonávání FULLC programu. Toto je čistě a pouze a přesně důsledek neprovedeného factory resetu konfigurace (aktivace RSTD dle návodu). Proto to vždy automaticky proveďte, bez ohledu na to, v jakém stavu si myslíte, že vaše zařízení SDS je - je potřeba mít úplnou jistotu, a jen toto ji dodá.&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=New_Device_First_Setup_Steps&amp;diff=963</id>
		<title>New Device First Setup Steps</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=New_Device_First_Setup_Steps&amp;diff=963"/>
		<updated>2025-08-11T10:44:48Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Nově zakoupené zařízení SDS ==&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. VŽDY AKTUALIZUJTE NA NOVÝ FIRMWARE - který získáte na stránce [[Firmware]].&lt;br /&gt;
&lt;br /&gt;
2. NÁSLEDNĚ PROVEĎTE FACTORY RESET (aktivace RSTD) - a to i v případě, že jste firmware neaktualizovali (tzn. že už v zařízení byl nejnovější FW)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pouze takto připravené zařízení lze dále provozovat.'''&lt;br /&gt;
&lt;br /&gt;
Pokud Vám zařízení SDS nefunguje atd. tak to je z 99% tím, že jste neprovedli výše uvedené dva důležité kroky.&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS, které jste čerstvě zakoupili, může mít starší firmware (který si pak musíte sami aktualizovat), a může mít nesprávnou konfiguraci (např. po výrobních testech).&amp;lt;br&amp;gt; Proto je vždy nutné provést jak krok č. 1, tak především krok č. 2 !!!&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Důsledky neprovedení výše uvedených kroků ==&lt;br /&gt;
&lt;br /&gt;
Pokud dostanete do rukou jakékoliv nové nebo použité zařízení SDS, musíte provést vždy oba výše uvedené kroky (ověřit verzi FW a provést RSTD).&lt;br /&gt;
&lt;br /&gt;
Zejména to, pokud neprovedete RSTD, může mít v důsledku symptom zpomaleného zařízení, kdy se celková odezva a rychlost zařízení SDS násobně sníží (to co má být okamžitě hotové trvá i několik sekund), včetně i zpomaleného vykonávání FULLC programu. Toto je čistě a pouze a přesně důsledek neprovedeného factory resetu konfigurace (aktivace RSTD dle návodu). Proto to vždy automaticky proveďte, bez ohledu na to, v jakém stavu si myslíte, že váše zařízení SDS je - je potřeba mít úplnou jistotu, a jen toto ji dodá.&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_BIG:_firmware_changelog&amp;diff=962</id>
		<title>SDS BIG: firmware changelog</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_BIG:_firmware_changelog&amp;diff=962"/>
		<updated>2025-08-11T10:38:49Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SDS-BIG(2) , SDS-SMALL(2), SDS-STSW a všechny OEM ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
Tato stránka se věnuje změnám ve firmware a v HW pro výrobek SDS-BIG a SDS-SMALL a SDS-STSW.&lt;br /&gt;
&lt;br /&gt;
Změny jsou seřazeny tak, že nejnovější verze (která je stáhnutelná z webu) je popsána jako první.&lt;br /&gt;
&lt;br /&gt;
Proč je vydáván nový firmware? Protože operativně řešíme požadavky uživatelů, a jsou doplňovány nové funkce.&lt;br /&gt;
&lt;br /&gt;
Firmware poskytujeme zcela zadarmo po celou dobu životnosti výrobku. Děláme to vše pro Vás.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 11.8.2025 ==&lt;br /&gt;
* přepracována interní DNS cache - pro funkci dns_resolv() - zprovozněno TTL&lt;br /&gt;
* FC: přidány indexy 70 a 71 a 72&lt;br /&gt;
&lt;br /&gt;
== 28.3.2025 ==&lt;br /&gt;
* oprava odpovědi pro S-UDP příkaz 0x04 (Read FC)&lt;br /&gt;
&lt;br /&gt;
== 15.3.2025 ==&lt;br /&gt;
* oprava odpovědi pro S-UDP příkaz 0x08 (Write FC)&lt;br /&gt;
&lt;br /&gt;
== 27.2.2025 ==&lt;br /&gt;
* upraven timeout pro čtení souboru z SD karty přes webový server (poskytování obsahu z SD karty na web)&lt;br /&gt;
* 512: oprava nefunkčního čtení ze sériové linky COM6&lt;br /&gt;
&lt;br /&gt;
== 8.2.2025 ==&lt;br /&gt;
* oprava některých payloadů v protokolu SUDP &lt;br /&gt;
&lt;br /&gt;
== 22.7.2024 ==&lt;br /&gt;
* FULLC.EXE - odstraněna chyba, která neumožnila nahrát do SDS soubor FCB větší než 64kB&lt;br /&gt;
* možnost volby klidového stavu pro každý S0 vstup (umožňuje počítat impulsy i pro NC spínače v měřiči energie)&lt;br /&gt;
* FC: SDS_reset_program() nezanechává nadbytečnou chybouvou hlášku v konzoli&lt;br /&gt;
* FC: mqtt_publish() použije vámi nastavené bitové pole do PUBLISH hlavičky (viz index 11198)&lt;br /&gt;
* SMTP odesílání by mělo být robustnější při odesílání více emailů za sebou&lt;br /&gt;
&lt;br /&gt;
== 24.2.2024 ==&lt;br /&gt;
* možnost smazat nahraný TLS klíč+certifikát (tlačítko s heslem, ve webovém rozhraní)&lt;br /&gt;
* RSTD nesmaže (nanastaví na tovární hodnoty) vaše nastavení pro všechny AD vstupy (to lze teď udělat ručně, nově přidaným tlačítkem ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 31.10.2023 ==&lt;br /&gt;
* SNMP - oprava způsobu předání chyby v odpovědi&lt;br /&gt;
* SNMP v1 - možnost nastavit dvě nezávislé komunity&lt;br /&gt;
* 512: plná implementace SNMP v3 (včetně AUTHPRIV)&lt;br /&gt;
* 64,128: omezená implementace SNMP v3 (pouze NOAUTHNOPRIV)&lt;br /&gt;
* FC: indexy 66, 67, 68, 4990..4999&lt;br /&gt;
&lt;br /&gt;
== 19.8.2023 ==&lt;br /&gt;
* oprava SDS UDP SEARCH (příchozí paket na portu 20484 byl firewallem od verze 6.6.23 zahozen, teď už opraveno)&lt;br /&gt;
* 512: HTTPS server (aktivace nahráním certifikátu, jinak zůstává HTTP)&lt;br /&gt;
&lt;br /&gt;
== 14.7.2023 ==&lt;br /&gt;
* HTTP POST: oprava sekundární chyby (objevila se ve FW 6.6.2023), kdy FW akceptoval jen rozdělený krok č. 2 (teď už opět umí jak rozdělený, tak i nerozdělený krok č. 2)&lt;br /&gt;
* FC: umožněn přímý zápisu do indexu 193 (přímo zapíše do registru PWM - určeno pro nejjemnější uživatelskou přímo konfiguraci generátoru PWM)&lt;br /&gt;
&lt;br /&gt;
== 6.6.2023 ==&lt;br /&gt;
* funkce http_header_set_user_row() má zvětšenou maximální délku parametru na 255 znaků&lt;br /&gt;
* 512: počet MQTT subscribe zvětšen z max. 8 na max. 20&lt;br /&gt;
* 512: další zvětšení FC konzole&lt;br /&gt;
* webový admin: úprava (oprava) použití timerů v javascriptu &lt;br /&gt;
* FC: DNS resolv umí pracovat s širším rozsahem UDP portů (někdy způsobilo nepřijetí odpovědi a musel se resolv opakovat)&lt;br /&gt;
* HTTP POST: poradí si i s ne-oddělenou komunikací (když klient pošle úvodní konverzační data najednou, neodděleně, tzn. nečeká na odpověď ze serveru)&lt;br /&gt;
 &lt;br /&gt;
== 9.3.2023 ==&lt;br /&gt;
* FC: verze 0x12 (+ odpovídající FULLC.EXE): přidány funkce http_header_set_user_row() a http_header_set_content_type()&lt;br /&gt;
* 64 a 128: odstraněno možné zpomalení běhu po zapnutí v určité okrajové situaci&lt;br /&gt;
&lt;br /&gt;
== 28.2.2023 ==&lt;br /&gt;
* POST: přidán příkaz /wrdf&lt;br /&gt;
* POST: oprava chyby, kdy mohlo dojít k neprovedení akce na základě příkazu /changeip&lt;br /&gt;
* malá bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 9.1.2023 ==&lt;br /&gt;
* FC verze 0x11 (+ odpovídající FULLC.EXE)&lt;br /&gt;
* firmware pro všechny HW varianty BIG, BIG2-DP a BIG2-DP-DS84&lt;br /&gt;
* web: doplněno zobrazení surových hodnot, čtených z 1-Wire zařízení &lt;br /&gt;
* FC: přidána funkce SDS_onewire_config() pro varianty -DS84&lt;br /&gt;
* FC: doplněna funkčnost FC WatchDog (pro situaci, pokud spadne program na chybu a je zastaven, tak FC Watchdog pokračuje a provede restart FC programu)&lt;br /&gt;
* FC: doplněna archivace poslední chyby FC programu, a zobrazení na webu (i v případě restartu FC Watchdogem)&lt;br /&gt;
* FC: funkce pro prohledání složky (file_opendir, file_readdir, file_closedir)&lt;br /&gt;
* oprava PWM3 a PWM4 na BIG2-64/128 - funkce, ukládání nastavení&lt;br /&gt;
* HW BIG2 DS84: RTC běží na baterii na všech HW variantách DS84 - udržuje běžící aktuální čas i při vypnutém napájení&lt;br /&gt;
* FC: přidána funkce SDS_onewire_search_bus()&lt;br /&gt;
* FC: přidány indexy 132..136 , indexy 2488..2499, 2986..2997&lt;br /&gt;
&lt;br /&gt;
== 1.12.2022 ==&lt;br /&gt;
* bezpečnostní aktualizace (dle nahlášené záležitosti a testu)&lt;br /&gt;
* trvalé zobrazení archivovaného HW faultu v Logu (pokud dojde k faultu, je hned před restartem zařízení archivován a trvale zobrazován ve výpisu, i po libovolném novém spuštění)&lt;br /&gt;
* odstraněno eventuální čekání (a následný WDG restart) při komunikaci s externími I2C zařízeními (specifické chipy na sandwich deskách uživatelů)&lt;br /&gt;
&lt;br /&gt;
== 30.11.2022 ==&lt;br /&gt;
* FC: zvýšena výkonnost (512: optimalizace pro až několika-násobné celkové zrychlení vykonávání programu) (64,128: byť jen menší zrychlení, ale přece + zvětšená konzole echo.htm) &lt;br /&gt;
* zrychleno webové rozhraní (zpomaleno zřejmě o dvě verze zpět, byť to bylo bez vlivu na funkci, je vhodnější když to nezdržuje při zobrazování v prohlížeči)&lt;br /&gt;
* FC: přidán index 137&lt;br /&gt;
* zlepšena interní obsluha sériových linek (COMx/RS485), odstraněno možné náhodné zpoždění (byť jen ve specifickém případě a jen o několik msec, ale i tak se toto vyřešilo)&lt;br /&gt;
&lt;br /&gt;
== 22.11.2022 ==&lt;br /&gt;
* FC (64/128/512): verze 0x10 &lt;br /&gt;
* dns_resolv správně hlásí chybu 516 a 517 při výpadku připojení v průběhu dotazu&lt;br /&gt;
&lt;br /&gt;
== 18.11.2022 ==&lt;br /&gt;
* FC (64/128): verze 0x10 &lt;br /&gt;
* FC: nová funkce SDS_set_RTC&lt;br /&gt;
* FC: nové funkce pro práci s float&lt;br /&gt;
* oprava pro mounting některých typů SD karet&lt;br /&gt;
&lt;br /&gt;
== 14.11.2022 ==&lt;br /&gt;
* FC: oprava výpočtů v 64-bit doméně&lt;br /&gt;
* FC: file_expand() - detailnější rozvrstvení návratových chybových hodnot&lt;br /&gt;
* web: rozšířeny zobrazované informace o probíhajícím připojování SD karty&lt;br /&gt;
* web server: vrací korektně 503 pro soubory na SD kartě, které jsou zablokovány FC programem&lt;br /&gt;
* FC: rozšířena a zásadně zlepšena implementace printf/sprintf/snprintf/sscanf - viz detaily v návodu na wiki&lt;br /&gt;
* FC: zlepšen výpis (informace na web) při určitých chybách v FC programu, plus další drobky kolem echo.htm&lt;br /&gt;
&lt;br /&gt;
== 16.10.2022 ==&lt;br /&gt;
* tento firmware (od této verze) podporuje i hardware SDS 64/128/512 ve variantě DP&lt;br /&gt;
* podpora pro 4 PWM výstupy (pro vhodný hardware - BIG2)&lt;br /&gt;
* odpověď na (webový) příkaz /sv? , má doplněný obsah http hlavičky, takže by ji mělo být snazší zpracovat&lt;br /&gt;
* FC: watchdog programu je (nově) pozastaven po dobu mountování SD karty (protože je pozastaven i program)&lt;br /&gt;
* FC: zápis do indexu 999 funguje jak má&lt;br /&gt;
* FC: verze 0x0F (nové funkce PWMx)&lt;br /&gt;
&lt;br /&gt;
== 5.10.2022 ==&lt;br /&gt;
* pouze vše řady 512 (ostatní bez tohoto problému) - důležitá oprava situace kdy někdy chybně došlo ke smazání nahraného FC programu při nahrání nového UWEB projektu do SDS&lt;br /&gt;
&lt;br /&gt;
== 30.9.2022 ==&lt;br /&gt;
* FC: oprava běhu programu v situaci kdy v kódu je vnořený (nested) switch() v rámci jiného switch() (původně chybné chování, teď opraveno)&lt;br /&gt;
&lt;br /&gt;
== 28.9.2022 ==&lt;br /&gt;
* FC: oprava výsledků maker (define), kdy chybně docházelo k pevnému přetypování na int32_t, což je teď opraveno (odstraněno)&lt;br /&gt;
&lt;br /&gt;
== 1.8.2022 ==&lt;br /&gt;
* správně zobrazovaná hláška (nápověda) na úvodní webové stránce ohledně stavu konfigurace&lt;br /&gt;
* FC: přidáno tlačítko (odkaz) pro restart FULLC programu (např. pokud skončil a chcete jej ručně spustit znovu)&lt;br /&gt;
* FC: do výpisu chyby při pádu programu je přidán UTC čas (pro identifikaci, kdy se chyba stala)&lt;br /&gt;
* FC: spolehlivostní úpravy při startu programu (načtení z DF), a při zápisu nového programu (práce s DF)&lt;br /&gt;
&lt;br /&gt;
== 11.7.2022 ==&lt;br /&gt;
* FC: verze 0x0E&lt;br /&gt;
* FC: přidána funkce mktime()&lt;br /&gt;
* FC: přidána funkce gmtime()&lt;br /&gt;
* FC: přidána funkce localtime()&lt;br /&gt;
* opraveno zachování konfigurace ipwdg (webové rozhraní) a obsluhy relé ipwdg&lt;br /&gt;
&lt;br /&gt;
== 1.7.2022 ==&lt;br /&gt;
* FC: verze 0x0D&lt;br /&gt;
* FC: upravena funkce SDS_TOPB_keyboard_status() pro lepší předané výsledky&lt;br /&gt;
* FC: přidána funkce SDS_TOPB_keyboard_updn()&lt;br /&gt;
* FC: přidána funkce SDS_rescan_onewire()&lt;br /&gt;
* FC: odstraněno náhodné hlášení o už probíhajícím nahrávání programu při nahrávání z EXE&lt;br /&gt;
* BIG 64/128 prodloužen čas pro sestavení Ethernetového spojení, což řeší problém s některými USB síťovými kartami atd.&lt;br /&gt;
* opraveno HTTP POST nastavení položek NTP&lt;br /&gt;
* opraveno HTTP POST který teď neuzavře spojení dříve než má, pokud mazání NVM pro nový FW (nebo nový UserWeb) trvá dlouho&lt;br /&gt;
&lt;br /&gt;
== 12.4.2022 ==&lt;br /&gt;
* doplněna informační stránka o vnitřním stavu OneWire Master (pro snazší identifikaci problémů při používání sběrnice)&lt;br /&gt;
* oprava v bootloaderu pro řadu 512 - vyžaduje přeprogramování u výrobce pro všechna SDS řady 512 s FW starším než 14.2.2022&lt;br /&gt;
&lt;br /&gt;
== 3.4.2022 ==&lt;br /&gt;
* FC verze 0x0C&lt;br /&gt;
* FC: přidána funkce SDS_I2C_rw&lt;br /&gt;
* OneWire stabilnější&lt;br /&gt;
&lt;br /&gt;
== 21.1.2022 ==&lt;br /&gt;
* prioritu mají vybrané konfigurační položky v NVM (jsou-li tam platné) před baterií zálohovanou pamětí&lt;br /&gt;
* aktivován HTTP POST protokol pro nahrávání a konfiguraci SDS (viz [[SDS:POST_upload]])&lt;br /&gt;
&lt;br /&gt;
== 18.1.2022 ==&lt;br /&gt;
* RSTD zapíše do NVM všechny konfigurační položky (i to co nenuluje), pro jistotu že v NVM bude vše skutečně zapsáno&lt;br /&gt;
* načítání konfigurace upraveno (větší spolehlivost)&lt;br /&gt;
&lt;br /&gt;
== 15.1.2022 ==&lt;br /&gt;
* přidána stránka cfgstatus.htm - pro možnost kontroly stavu uložené konfigurace v pevné paměti (např. co nemáte uloženo)&lt;br /&gt;
* přidán M2M výstup ip.xml&lt;br /&gt;
* FC: přidán algoritmus SHA-256 do funkce SDS_crypto()&lt;br /&gt;
* FC: každý program má unikátní identifikátor, podle kterého lze např. kontrolovat či zpětně poznat co máte v SDS nahráno&lt;br /&gt;
* identifikátor FC programu přidán na webové rozhraní a do M2M výstupů, a do exe aplikace&lt;br /&gt;
* zobrazeno unikátní identifikační čislo SDS hardware (napevno spojeno s modulem SDS, nezměnitelné), teď i ve M2M výstupech&lt;br /&gt;
* SNMP: nové položky .8.90 , .8.91 , .8.99&lt;br /&gt;
* FC: nové get(u32) položky 2 a 87&lt;br /&gt;
&lt;br /&gt;
== 31.12.2021 ==&lt;br /&gt;
* možnost vyřadit NTP z činnosti zadáním adresy 127.0.0.1 (vhodné pro uživatele kteří získávají čas odjinud, např. přes LoRA)&lt;br /&gt;
* web: informace na web (p=8) o stavu připojování SD karty (mounting...) a o stavu kdy je FC program pozastaven (PAUSED)&lt;br /&gt;
* web: opraven zámek zvětšené konzole (echo)&lt;br /&gt;
* důslednější kontrola platnosti konfigurace při startu&lt;br /&gt;
&lt;br /&gt;
== 27.12.2021 ==&lt;br /&gt;
* opravena chyba kdy na webu nešlo nastavit 100 procent PWM duty (jen 0 až 99, teď už jde i 100)&lt;br /&gt;
* FC: několikanásobně zvětšena konzole (echo.htm)&lt;br /&gt;
* HW: při poruše hlavního zdroje hodin (krystal) se použije záložní zdroj&lt;br /&gt;
* HW: využíváme RTC pro udržení času při přechodu přes reset (drží čas dokud zase nepřijde NTP)&lt;br /&gt;
* aktualizován bootloader (aktualizace bootloaderu jen prostřednictvím přeprogramování u výrobce) - umí znovu nahrát FW pokud se v SoC poškodí&lt;br /&gt;
* vydána varianta 512 - vlastní soubor s firmware&lt;br /&gt;
&lt;br /&gt;
== 25.12.2021 ==&lt;br /&gt;
* pouze interní vydání&lt;br /&gt;
&lt;br /&gt;
== 26.3.2021 ==&lt;br /&gt;
* FC: oprava nesprávného zacházení s unsigned typy (na některých místech interně přemapovány na signed)&lt;br /&gt;
* FC: chování varianty if pro speciální kombinaci signed/unsigned dle specifikace standardu C&lt;br /&gt;
&lt;br /&gt;
== 9.2.2021 ==&lt;br /&gt;
* FC: oprava TID v MODBUS-TCP&lt;br /&gt;
* MBTC výpis rozšířen&lt;br /&gt;
* FC: drobná úspora heap (více dostupného místa)&lt;br /&gt;
* FC: dns resolv drobný fix&lt;br /&gt;
* FC: http_get a http_post důležitý fix&lt;br /&gt;
* FC: nová funkce http_close&lt;br /&gt;
* FC: chyba -7 pro MODBUS-TCP a pro MQTT&lt;br /&gt;
* vylepšený algoritmus S0, rozšířené možnosti nastavení detektoru S0 (nastavení přidáno ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 22.12.2020 ==&lt;br /&gt;
* web: ruční přepnutí CBY pro relé (tzn. &amp;quot;kdo ovládá relé&amp;quot;), na &amp;quot;FULL-C&amp;quot;, dané relé nevypne (off) ale ponechá jeho stávající stav (on, off)&lt;br /&gt;
* security fix&lt;br /&gt;
&lt;br /&gt;
== 10.12.2020 ==&lt;br /&gt;
* dřívější odeslání NTP požadavku po výpadku síťového spojení&lt;br /&gt;
* integrovaná korekce chyby A/D měření pro HW osazený LMV324; uživatel může povolit tuto automatickou opravu chyby LMV324 ve webové administraci&lt;br /&gt;
* počítání délky aktivace tarifního vstupu (doba T0 a T1 v sekundách za den) viz nové sys, pozor pro funkci vyžaduje NTP&lt;br /&gt;
* automatický odečet S0 počítadel (vždy za dnešek a včerejšek), viz nové sys, pozor pro funkci vyžaduje NTP&lt;br /&gt;
&lt;br /&gt;
== 23.11.2020 ==&lt;br /&gt;
* FC + FULLC.exe: oprava chyby v případě více #if / #ifdef / #endif bloků zapsaných hned za sebou&lt;br /&gt;
* FC: makra a define lze provést i uvnitř funkce (dříve jen venku)&lt;br /&gt;
* FC: detekce nesprávné dereference ukazatele&lt;br /&gt;
&lt;br /&gt;
== 14.11.2020 ==&lt;br /&gt;
* webová administrace: stránka p=42: index ck03 se propíše i do nastavení (chybělo od 23.10.2020, web byl aktualizován, nastavení ale přebíralo ck00)&lt;br /&gt;
&lt;br /&gt;
== 4.11.2020 ==&lt;br /&gt;
* FC + FULLC.exe: odstraněn problém při načtení nahraného FULL-C programu v SDS, kdy dříve mohlo u jedné specifické velikosti nahraného programu, dojít k jeho nespuštění kvůli neodpovídajícímu crc&lt;br /&gt;
&lt;br /&gt;
== 3.11.2020 ==&lt;br /&gt;
* FC: zobrazení (v konzoli) čísla řádku (ve zdrojovém kódu) při chybě (což velmi zlepší ladění programů)&lt;br /&gt;
* FULLC.exe: odstraněno omezení na 255 znaků na řádek&lt;br /&gt;
* FULLC.exe: zrychlení nahrávání do SDS&lt;br /&gt;
&lt;br /&gt;
== 23.10.2020 ==&lt;br /&gt;
* webová administrace: stránka p=42: změna indexu ck00 na ck03 ať se dají uživatelským skriptem všechny prvky samostatně rozlišit&lt;br /&gt;
* FC: oprava http_get/post: správné vyplnění výsledků i pro situaci kdy server ukončí spojení přes TCP RST&lt;br /&gt;
&lt;br /&gt;
== 14.10.2020 ==&lt;br /&gt;
* oprava FULL-C funkce XTEA-CRYPT (bug o dvě verze dříve)&lt;br /&gt;
&lt;br /&gt;
== 13.10.2020 ==&lt;br /&gt;
* důležitá oprava chyby ve FULL-C (ternary operator, a další nahlášené nesrovnalosti)&lt;br /&gt;
&lt;br /&gt;
== 13.9.2020 ==&lt;br /&gt;
* oprava detekce SD karty (některé varianty SD karet nebyly detekovány, teď už ano)&lt;br /&gt;
&lt;br /&gt;
== 9.8.2020 ==&lt;br /&gt;
* FULL-C verze 0B (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* různé drobné opravy a zabezpečení&lt;br /&gt;
* zobrazení auditlogu (webové rozhraní SDS)&lt;br /&gt;
* FC: http_post&lt;br /&gt;
* FC: MQTT klient&lt;br /&gt;
* FC: MODBUS-TCP klient&lt;br /&gt;
&lt;br /&gt;
== 4.8.2020 ==&lt;br /&gt;
* úprava obsluhy relé&lt;br /&gt;
* podpora OneWire modulu SDS-1W-T-RH&lt;br /&gt;
&lt;br /&gt;
== 3.10.2019 ==&lt;br /&gt;
* SMTP klient posílá v hlavičce i položku &amp;quot;Date&amp;quot; (ale jen za předpokladu správného času v SDS)&lt;br /&gt;
* RSTD při zapnutí zařízení, ve kterém není záložní baterie (nebo je vybitá), zachová původně nastavenou MAC adresu (vše ostatní ale už jde do defaultu, což je správně)&lt;br /&gt;
* SUDP: rozšířen NOP příkaz &lt;br /&gt;
* SUDP: přidány další nové příkazy (master_cmd: 32, 33, 40, 42, 44, 48)&lt;br /&gt;
&lt;br /&gt;
== 23.9.2019 ==&lt;br /&gt;
* oprava GUI (S0 Inputs)&lt;br /&gt;
* SNMP nabízí možnost číst všechny sdílené proměnné (FULL-C: Sxx, Uxx, Fxx, Txx)&lt;br /&gt;
* opraven nefunkční RSTD na modulu STSW-rev3&lt;br /&gt;
&lt;br /&gt;
== 23.6.2019 ==&lt;br /&gt;
* oprava chyby objevené ve FW 28.5.2019, kdy na některých specifických SDS nefungovaly AD vstupy&lt;br /&gt;
&lt;br /&gt;
== 28.5.2019 ==&lt;br /&gt;
* oprava funkce SD karty (pro případy kdy se stala po čase nedostupná pro FC/web)&lt;br /&gt;
&lt;br /&gt;
== 5.5.2019 ==&lt;br /&gt;
* dořešeno hlídání stavu (načtení, atd.) SD karty i v případě provozu náročného FULL-C programu (tedy i pro hluboce vnořené smyčky)&lt;br /&gt;
* oprava původně chybné implementace S-UDP příkazu &amp;quot;1Waccess: sub-command 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== 24.2.2019 ==&lt;br /&gt;
* překlopení z BETA do oficiálního FW&lt;br /&gt;
* automatika zimní/letní čas&lt;br /&gt;
* přístup na SD kartu: FULL-C pracuje se soubory (vytvoření, smazání, čtení a zápis, atd.) &lt;br /&gt;
* přístup na SD kartu: web server zobrazuje soubory ze SD karty (vše ve složce \web\ a podsložkách této složky)&lt;br /&gt;
* oprava čtení napětí baterie pro variantu 128K&lt;br /&gt;
* shared.xml&lt;br /&gt;
* odstraněno omezení délky ve shared.txt&lt;br /&gt;
* zprovozněno getsv&lt;br /&gt;
* verze FULL-C je teď FC 0x0A (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* FULL-C: nová možnost způsobu čtení teploty SoC&lt;br /&gt;
* FULL-C: index 64, 65, 184, 185, 429, 430, atd.&lt;br /&gt;
* FULL-C: doplněné set/get funkce pro sdílené proměnné&lt;br /&gt;
* FULL-C: s/printf umí správné zpracovat požadavek na určení desetinných míst pro float&lt;br /&gt;
* FULL-C: funkce pro reset FC programu&lt;br /&gt;
* FULL-C: funkce pro watchdog FC programu&lt;br /&gt;
* SNMP nové OIDy (dle přidaných věcí - čas, sdcard)&lt;br /&gt;
&lt;br /&gt;
== 1.7.2018 ==&lt;br /&gt;
* SNMP: sdsS0translatedUnitT0,1 je poskytováno jako hodnota od odečtu (ne od úplného začátku měření, jak to bylo předtím) &lt;br /&gt;
* FULL-C: přidán index 183 poskytující datum vydání FW který je právě nahrán v SDS&lt;br /&gt;
&lt;br /&gt;
== 27.6.2018 ==&lt;br /&gt;
* verze FULL-C je teď FC 0x09 (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* FULL-C: přidána podpora pro int64_t a uint64_t&lt;br /&gt;
* FULL-C: přejmenováno set a get funkce (rozlišení 32 a 64 bit)&lt;br /&gt;
* FULL-C: snprintf přesně dle standardu (zrušena nevhodná změna z 20.12.2017)&lt;br /&gt;
* drobné opravy&lt;br /&gt;
* drobná oprava v odchozím TCP-SYN a v generátoru ISN&lt;br /&gt;
&lt;br /&gt;
== 8.3.2018 ==&lt;br /&gt;
* oprava echo.htm - správně wrapuje obsah, a nejsou tam nadbytečné 0x00&lt;br /&gt;
* vhodnější řešení rexmitu částí webových stránek a dynamických dat (ocení to zejména uživatelé s mobilním připojením pro SDS)&lt;br /&gt;
&lt;br /&gt;
== 2.3.2018 ==&lt;br /&gt;
* aktulizace a oprava ve výpočtu &amp;quot;aktuálního výkonu&amp;quot; pro okrajové situace (např. krajní hodnoty impulsní konstanty)&lt;br /&gt;
&lt;br /&gt;
== 11.2.2017 ==&lt;br /&gt;
* zprovozněny funkce set/get pro indexy 4000 až 4300 (alternativní přístup k číselným sdíleným proměnným)&lt;br /&gt;
&lt;br /&gt;
== 21.12.2017 ==&lt;br /&gt;
* zvýšena stabilita spuštění po zapnutí&lt;br /&gt;
&lt;br /&gt;
== 20.12.2017 ==&lt;br /&gt;
* dočasná změna ve FULL-C (bude zrušena): funkce snprintf() má interně posunutý limit délky zápisu o 1 (toto je záměrný rozdíl proti C99). Změna v SDS je provedena z důvodu neznalosti programátorů FC v tom, že do snprintf() limitu je potřeba započítat i jeden byte pro ukončující nulu. Ve výsledku tedy zápis &amp;quot;snprintf(buf, limit, ...);&amp;quot; je v FC interně vykonán jako &amp;quot;snprintf(buf, limit+1, ...);&amp;quot;.&lt;br /&gt;
* oprava ve FULL-C: výpočet platné délky bufferu funguje i pro ukazatele vytvořené offsetem ze základní alokované adresy (příklad takového bufferu je: buf=malloc(x)+offset;)&lt;br /&gt;
* stav všech relé je načten z paměti vždy po zapnutí modulu, a ty relé které jsou ručně ovládány (manual control) a které byly před vypnutím v zapnutém (ON) stavu, jsou po zapnutí modulu aktivovány (zatímco relé ovládané z IP-W a FC jsou vždy po zapnutí modulu uvedeny do OFF stavu)&lt;br /&gt;
&lt;br /&gt;
== 18.12.2017 ==&lt;br /&gt;
* UserWEB projekt má opravenu chybu, kdy nebylo možno použít delší Name Chain tabulku (tedy lze už vložit mnohem více souborů) &lt;br /&gt;
* nastavená MAC adresa je zachována i po průchodu RSTD (byla-li platná)&lt;br /&gt;
* opravena chyba způsobující nefunkční http_get(), teď už to opět funguje&lt;br /&gt;
* aktualizace obsluhy PWM (např. lépe přepočítává zobrazovaná &amp;quot;procenta&amp;quot;)&lt;br /&gt;
* oprava strcat() funkce (opraveno hlídání max velikosti bufferu ze &amp;quot;from&amp;quot; na &amp;quot;to&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== 18.9.2017 ==&lt;br /&gt;
* FULL-C: printf() správně tiskne float i pokud se formátovací parametr zadá jako %d (tedy ne jako %f)&lt;br /&gt;
* FULL-C: snprint() opraven (když je 'from' kratší než 'to' tak je 'to' doplněn 0x00 - je to zvláštnost, nemá se to používat, ale C99 to předepisuje, tak to dodržíme)&lt;br /&gt;
&lt;br /&gt;
== 9.9.2017 ==&lt;br /&gt;
* vnitřní bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 29.8.2017 ==&lt;br /&gt;
* oprava chování RSTD - pokud je zapojen před zapnutím, nepřejde do automatického resetu po 10sec, ale RSTD je použit a SDS pracuje dále; přitom funkce &amp;quot;zapoj RSTD za běhu&amp;quot; je zachována správně&lt;br /&gt;
* zásadní zlepšení odolnosti FULL-C proti chybám programátora - vnitřní hlídání rozsahů bufferu a stringů, zamezující zápisu za hranice pole (typicky chybné použití sprintf() funkce, ale toto hlídání je aplikováno obecně všude)&lt;br /&gt;
&lt;br /&gt;
== 8.8.2017 ==&lt;br /&gt;
* oprava: FC teď správně převádí URL kód &amp;quot;sv?xxxx=yyyy...&amp;quot;, na text (vypadlo 31.3. při rozšíření počtu znaků pro sdílené proměnné Txx) &lt;br /&gt;
&lt;br /&gt;
== 10.7.2017 ==&lt;br /&gt;
* vydán firmware pro variantu &amp;quot;128kB&amp;quot; (od teď vychází dva typy firmware, pro variantu &amp;quot;64kB&amp;quot; a variantu &amp;quot;128kB&amp;quot;, vyberete si tu svou dle HW který máte)&lt;br /&gt;
* velká optimalizace využití paměti pro uložení a běh FULL-C programu (komprese, a zmenšení vyžadovaného heapu pro běh programu) - významně zvětšuje možnou velikost FC programu&lt;br /&gt;
* pin RSTD lze teď také použít i bez vypnutí a zapnutí SDS, stačí jej na 10 vteřin za běhu zkratovat (pak se provede RSTD a SDS se rebootuje) - výhodné pro zařízení kde vypnutí nelze provést&lt;br /&gt;
* drobné užitečné opravy dle hlášení uživatelů&lt;br /&gt;
* verze FC zvýšena na 0x08, a přidána možnost uložit 128 proměnných do baterií zálohované pamětí (tzn. obsah přežije výpadek napájení a FC program po restartu o tyto údaje nepřijde)&lt;br /&gt;
&lt;br /&gt;
== 2.6.2017 ==&lt;br /&gt;
* návratová hodnota funkce DF_read_page() je nastavena správně i v případě, kdy tato funkce čte data z cache (opakované čtení stejné stránky DF)&lt;br /&gt;
&lt;br /&gt;
== 6.4.2017 ==&lt;br /&gt;
* přidána FULL-C funkce AES-128-CTR, viz SDS_crypto(0x20, ...);&lt;br /&gt;
&lt;br /&gt;
== 31.3.2017 ==&lt;br /&gt;
* oprava RS485-MASTER drive, je teď zcela přesný (tzn. vypnut v přesném časování za úplně posledním vyslaným bitem)&lt;br /&gt;
* oprava čtení konfigurace 1-W, pomocí sds_get_a()&lt;br /&gt;
* přidán index 139&lt;br /&gt;
* odstraněno omezení na 32 znaků pro sdílené proměnné (přenos textu) &amp;quot;Txx&amp;quot; (xx = 00 až 99)&lt;br /&gt;
* fix návratových hodnot FULL-C funkcí pro práci s DF (teď to vrací správně 1 nebo 0, podle wiki)&lt;br /&gt;
* upřesněn název: (z BIG na BIG-64) / (z STSW na STSW-64)&lt;br /&gt;
* vyžaduje aktuální SDSLOAD.exe (6.3.2017 nebo novější) a FULLC.exe (6.3.2017 nebo novější)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== starší záznamy ==&lt;br /&gt;
&lt;br /&gt;
Nejsou k dispozici.&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=961</id>
		<title>Firmware</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=961"/>
		<updated>2025-08-11T10:37:16Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Nový Firmware ==&lt;br /&gt;
&lt;br /&gt;
Aktualizujte si své SDS - nahrejte do něj nový firmware, který získáte na této stránce - '''naskrolujte dolů''' kde naleznete odkaz na BIN soubor pro vaše zařízení.&lt;br /&gt;
&lt;br /&gt;
Postup a řešení problémů: [[Manual_Firmware_Update|Návod pro aktualizaci Firmware v SDS]].&lt;br /&gt;
&lt;br /&gt;
Důležité první kroky, které je nutné provést s každým novým zakoupeným modulem: [[New_Device_First_Setup_Steps|První nutné kroky pro nově zakoupené zařízení SDS]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Odkazy ke stáhnutí ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;PC Software&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_sdsc_winexe.jpg]] '''Program SDSC.exe''' (programovací jazyk SDS-C, aktualizace firmware pro SDS '''první řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; stáhnout WinEXE pro SDS-C [https://sds.an-d.cz/firmware/SDSC_310123.exe zápis/simulace/upload SDS-C (SDS-C '''verze 09''') a UWEB, ze dne 31.1.2023]&amp;lt;br&amp;gt;SHA-256: daf1095f206404e33223f675f5d0bc09d4fc5dfd7d9f79f4f735af88f5ff1e6a&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program FULLC.exe''' (programovací jazyk FULL-C, aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; (FC verze '''0x12''' - '''aktuální'''): stáhnout WinEXE pro FULL-C [https://sds.an-d.cz/firmware/FULLC_220724.exe zápis/upload FULL-C a UWEB, ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro Firmware od 9.3.2023 včetně, pro všechny varianty SDS (64kB a 128kB a 512kB)&amp;lt;br&amp;gt;SHA-256: b4cb95d8ec8a6e844a3a4c9a2e9fc50ece60ccf44e8043f8c10f46b2294cae0b&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program SDSLOAD.exe''' (&amp;quot;jednokrokový&amp;quot; upload .FC souborů a aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; ('''aktuální''' verze, pro FW od 10.7.2017 včetně a dále) stáhnout WinEXE [https://sds.an-d.cz/firmware/SDSLOAD_220724.exe program SDSLOAD ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro všechny SDS varianty 64kB a 128kB a 512kB, (subvarianty DP a DS84)&amp;lt;br&amp;gt;SHA-256: ded5bf1aca2e04e22c33899a0976deccc8ff76eb88f53ecd9769788b7daa25a7&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_empty.jpg]] '''Program SDS LOG'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; Program '''[[SDS LOG: intro|SDS LOG]]''' - verze 0.1 ze dne 26.8.2011 - [https://sds.an-d.cz/firmware/SDS_LOG.exe stáhnout EXE program]&lt;br /&gt;
&amp;lt;li&amp;gt; Zdrojové kódy programu SDS LOG (Creative Commons Licence) [[SDS LOG: source code|ke stáhnutí zde]]&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS LOG: changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;První Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMICROE.jpg]]  [[Soubor:Thumbnail_SDSMICRO.jpg]] [[Soubor:Thumbnail_SDS_DIN.jpg]] '''D0000001''' MICRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: LM]] varianty '''LIGHT''', '''LIGHT 2''' a '''E (DIN)'''.&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny varianty a revize SDS MICRO LM.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_010722_CZ.bin SDS-MICRO-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_010722_EN.bin SDS-MICRO-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B0000057''' MICRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_021123_CZ.bin SDS-MICRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_021123_EN.bin SDS-MICRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B000D957''' MICRO ST DP&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST DP]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST DP.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_021123_CZ.bin SDS-MICRO-ST-DP-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_021123_EN.bin SDS-MICRO-ST-DP-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MINI_1.png]] [[Soubor:Thumbnail_SDS_MINI_2.png]] '''B0000020''' MINI ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MINI: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MINI ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MINI_021123_CZ.bin SDS-MINI-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MINI_021123_EN.bin SDS-MINI-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
[[SDS MINI: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMACRO.jpg]] '''C0000001''' MACRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: LM]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_010722_CZ.bin SDS-MACRO-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_010722_EN.bin SDS-MACRO-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MACRO_ST_rev1.png]] '''C0000057''' MACRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_021123_CZ.bin SDS-MACRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_021123_EN.bin SDS-MACRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSTTCPRO.jpg]] '''B0000001''' TTCPRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS TTCPRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_021123_CZ.bin SDS-TTCPRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_021123_EN.bin SDS-TTCPRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS TTCPRO ST má shodný Change Log se SDS MINI ST, a to zde: [[SDS MINI: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSIO6.jpg|160px]] '''D0000006''' IO6 LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: LM]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_010722_CZ.bin SDS-IO6-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_010722_EN.bin SDS-IO6-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 LM má shodný Change Log se SDS MICRO LM, a to zde: [[SDS MICRO: LM: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_empty.jpg]] '''D0000011''' IO6 ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_021123_CZ.bin SDS-IO6-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_021123_EN.bin SDS-IO6-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 ST má shodný Change Log se SDS MICRO ST, a to zde: [[SDS MICRO: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_FTP_rev1.png]] '''F0000001''' FTP LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS FTP: LM]], výchozí firmware.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Firmware: ''SDS FTP ze dne 7.9.2010'' už nahrán ve výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS FTP: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_ONEDPS.jpg]] '''E000AAA1''' UPS ONEDPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: ONEDPS]], finální jednodesková verze (aktuální) (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stáhnout firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_CZ.bin (Česká lokalizace) SDS-UPS-ONEDPS-LM ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;Download firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_EN.bin (English language version) SDS-UPS-ONEDPS-LM released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS UPS: LM: ONEDPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_TWODPS.jpg]] '''C00xxxxx''' UPS TWODPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: TWODPS]], HW rev3u - DVOUDESKOVÁ (UŽ NEPRODÁVANÁ) varianta.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je zaslán na požádání (pošlete email), aktuální verze je z 1.3.2011 (dále aktualizováno na specifické požádání, raději proto přejděte na nový HW).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Každá deska má svou kalibraci, proto každá deska má svůj vlastní FW, proto musíte uvést S/N svého výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;HISTORIE: [[SDS UPS: LM: TWODPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;Druhá Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSBIG.jpg]] [[Soubor:Thumbnail_SDSSMALL.jpg]] '''B1900001''' / '''B1900002''' / '''B1900004''' : BIG, BIG2, SMALL, STSW, MBGW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Společný firmware pro výrobky [[SDS BIG]], [[SDS SMALL]] a [[SDS STSW]] a [[SDS MBGW]]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je jednotný pro všechny varianty '''SDS Druhé Produktové Řady''', nutné je rozlišení dle varianty 64kB/128kB/512kB. Rozlišení podle dalších subvariant (DP, DS84) se neprovádí.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je společný pro BIG a BIG2, rozlišení je pouze dle varianty 64/128/512.&lt;br /&gt;
&amp;lt;li&amp;gt;Pozn. Modul SMALL a modul MBGW interně obsahuje modul STSW, nahrává se tam tedy stejný FW.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware vždy vyžaduje použití odpovídající, aktuální verze FULLC.EXE programu. &lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS BIG/SMALL/STSW: [[SDS BIG: firmware changelog|firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;64kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 64kB) [https://sds.an-d.cz/firmware/SDS_BIG_64K_110825_EN.bin firmware &amp;quot;64kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 11.8.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;128kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 128kB) [https://sds.an-d.cz/firmware/SDS_BIG_128K_110825_EN.bin firmware &amp;quot;128kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 11.8.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;512kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [[firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 12.4.2022|informace pokud máte SDS512 s FW &amp;lt;b&amp;gt;starším&amp;lt;/b&amp;gt; než 12.4.2022]]&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [https://sds.an-d.cz/firmware/SDS_BIG_512K_110825_EN.bin firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 11.8.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;Informace: SDS BIG/SMALL/STSW 512 se starším FW než 12.4.2022 vyžaduje přeprogramování u výrobce.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| POZOR&lt;br /&gt;
'''Aktualizujte''' své doplňkové sandwich desky, tzn. [[SDS BIG: DALI]], [[SDS BIG: LORA]] - na verzi FW 5.12.2016 '''nebo novější'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Aktualizaci lze provést jen fyzicky u výrobce, ten ji provede bezplatně (zašlete výrobci vaše SDS pro jeho aktualizaci). Se starým FW nebude tento HW plně fungovat.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Informace ===&lt;br /&gt;
&lt;br /&gt;
 VŽDY MĚJTE VE SVÉM ZAŘÍZENÍ NEJNOVĚJŠÍ FIRMWARE, A POUŽÍVEJTE TAKÉ NEJNOVĚJŠÍ SDS-C EXE / FULL-C EXE PROGRAM.&lt;br /&gt;
 V opačném případě vám budou chybět nové funkce, které neustále přidáváme, a také nebudete mít opravené nalezené chyby.&lt;br /&gt;
 V případě že chcete získat podporu, musíte mít instalovaný nejnovější firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Historický Software ===&lt;br /&gt;
&lt;br /&gt;
Za účelem aktualizace takových SDS, kde už dlouho nebyl aktualizován firmware, je potřeba použít odpovídající EXE program pro aktualizaci takovéhoto zařízení.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== První Produktová Řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro SDS-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_151119.exe ze dne '''15.11.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 08, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020118.exe ze dne '''2.1.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 07, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020317.exe ze dne '''2.3.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 8.8.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_060216.exe ze dne '''6.2.2016''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které nemají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 24.1.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_231111.exe ze dne '''23.11.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 04&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_170211.exe ze dne '''17.2.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''února 2011''')&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro ''SDS-C verze č. 03'' (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_140511.exe ze dne '''14.5.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''konce května 2011''')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Druhá Produktová řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro FULL-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_070323.exe ze dne '''7.3.2023''']&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_311222.exe ze dne '''31.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 11, (firmware od 9.1.2023 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_071222.exe ze dne '''7.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 10, (firmware od 18.11.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_161022.exe ze dne '''16.10.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0F, (firmware od 16.10.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_110722.exe ze dne '''11.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0E, (firmware od 11.7.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010722.exe ze dne '''1.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0D, (firmware od 6.8.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030422.exe ze dne '''3.4.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0C, (firmware od 23.3.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010322.exe ze dne '''1.3.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0B, (firmware od 6.8.2020 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030119.exe ze dne '''3.1.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0A, (firmware od 3.1.2019 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010718.exe ze dne '''1.7.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 09, (firmware od 27.6.2018 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_100717.exe ze dne '''10.7.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 08, (firmware od 10.7.2017 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_080617.exe ze dne '''8.6.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 06, (firmware starší než Červenec-2017, a pouze pro variantu SDS 64kB)&lt;br /&gt;
&lt;br /&gt;
* (historická verze) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_201022.exe ze dne 20.10.2022]&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_120417.exe ze dne 12.4.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB která používá ''starý'' firmware (2017 nebo starší)&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_100717.exe ze dne 10.7.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB a 128kB (nepodporuje variantu 512kB tak jako aktuální stáhnutelná verze aplikace)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta Testing ==&lt;br /&gt;
&lt;br /&gt;
Než vydáme novou verzi, je potřeba změny a novinky otestovat.&lt;br /&gt;
&lt;br /&gt;
Pokud jste ochotní se testu zúčastnit, pak se podívejte [https://forum.sds.an-d.cz/viewtopic.php?id=129 na tento odkaz]. Zde jsou uveřejněny vždy nejnovější beta verze firmware.&lt;br /&gt;
&lt;br /&gt;
Diskuse s vývojem k aktuálnímu Firmware je k dispozici na našem fóru.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=New_Device_First_Setup_Steps&amp;diff=960</id>
		<title>New Device First Setup Steps</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=New_Device_First_Setup_Steps&amp;diff=960"/>
		<updated>2025-08-11T08:00:05Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Nově zakoupené zařízení SDS ==&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
1. VŽDY AKTUALIZUJTE NA NOVÝ FIRMWARE - který získáte na stránce [[Firmware]].&lt;br /&gt;
&lt;br /&gt;
2. NÁSLEDNĚ PROVEĎTE FACTORY RESET (aktivace RSTD) - a to i v případě, že jste firmware neaktualizovali (tzn. že už v zařízení byl nejnovější FW)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Pouze takto připravené zařízení lze dále provozovat.'''&lt;br /&gt;
&lt;br /&gt;
Pokud Vám zařízení SDS nefunguje atd. tak to je z 99% tím, že jste neprovedli výše uvedené dva důležité kroky.&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS, které jste čerstvě zakoupili, může mít starší firmware (který si pak musíte sami aktualizovat), a může mít nesprávnou konfiguraci (např. po výrobních testech). Proto je vždy nutné provést jak krok č. 1, tak především krok č. 2 !!!&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=New_Device_First_Setup_Steps&amp;diff=959</id>
		<title>New Device First Setup Steps</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=New_Device_First_Setup_Steps&amp;diff=959"/>
		<updated>2025-08-11T07:58:44Z</updated>

		<summary type="html">&lt;p&gt;Adamn: Založena nová stránka s textem „== Nově zakoupené zařízení SDS ==   1. VŽDY AKTUALIZUJTE NA NOVÝ FIRMWARE - který získáte na stránce Firmware.  2. NÁSLEDNĚ PROVEĎTE FACT…“&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Nově zakoupené zařízení SDS ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
1. VŽDY AKTUALIZUJTE NA NOVÝ FIRMWARE - který získáte na stránce [[Firmware]].&lt;br /&gt;
&lt;br /&gt;
2. NÁSLEDNĚ PROVEĎTE FACTORY RESET (aktivace RSTD) - a to i v případě, že jste firmware neaktualizovali (tzn. že už v zařízení byl nejnovější FW)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pouze takto připravené zařízení lze dále provozovat.&lt;br /&gt;
&lt;br /&gt;
Pokud Vám zařízení SDS nefunguje atd. tak to je z 99% tím, že jste neprovedli výše uvedené dva důležité kroky.&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=958</id>
		<title>Firmware</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=958"/>
		<updated>2025-08-11T07:56:15Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Nový Firmware ==&lt;br /&gt;
&lt;br /&gt;
Aktualizujte si své SDS - nahrejte do něj nový firmware, který získáte na této stránce - '''naskrolujte dolů''' kde naleznete odkaz na BIN soubor pro vaše zařízení.&lt;br /&gt;
&lt;br /&gt;
Postup a řešení problémů: [[Manual_Firmware_Update|Návod pro aktualizaci Firmware v SDS]].&lt;br /&gt;
&lt;br /&gt;
Důležité první kroky, které je nutné provést s každým novým zakoupeným modulem: [[New_Device_First_Setup_Steps|První nutné kroky pro nově zakoupené zařízení SDS]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Odkazy ke stáhnutí ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;PC Software&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_sdsc_winexe.jpg]] '''Program SDSC.exe''' (programovací jazyk SDS-C, aktualizace firmware pro SDS '''první řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; stáhnout WinEXE pro SDS-C [https://sds.an-d.cz/firmware/SDSC_310123.exe zápis/simulace/upload SDS-C (SDS-C '''verze 09''') a UWEB, ze dne 31.1.2023]&amp;lt;br&amp;gt;SHA-256: daf1095f206404e33223f675f5d0bc09d4fc5dfd7d9f79f4f735af88f5ff1e6a&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program FULLC.exe''' (programovací jazyk FULL-C, aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; (FC verze '''0x12''' - '''aktuální'''): stáhnout WinEXE pro FULL-C [https://sds.an-d.cz/firmware/FULLC_220724.exe zápis/upload FULL-C a UWEB, ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro Firmware od 9.3.2023 včetně, pro všechny varianty SDS (64kB a 128kB a 512kB)&amp;lt;br&amp;gt;SHA-256: b4cb95d8ec8a6e844a3a4c9a2e9fc50ece60ccf44e8043f8c10f46b2294cae0b&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program SDSLOAD.exe''' (&amp;quot;jednokrokový&amp;quot; upload .FC souborů a aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; ('''aktuální''' verze, pro FW od 10.7.2017 včetně a dále) stáhnout WinEXE [https://sds.an-d.cz/firmware/SDSLOAD_220724.exe program SDSLOAD ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro všechny SDS varianty 64kB a 128kB a 512kB, (subvarianty DP a DS84)&amp;lt;br&amp;gt;SHA-256: ded5bf1aca2e04e22c33899a0976deccc8ff76eb88f53ecd9769788b7daa25a7&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_empty.jpg]] '''Program SDS LOG'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; Program '''[[SDS LOG: intro|SDS LOG]]''' - verze 0.1 ze dne 26.8.2011 - [https://sds.an-d.cz/firmware/SDS_LOG.exe stáhnout EXE program]&lt;br /&gt;
&amp;lt;li&amp;gt; Zdrojové kódy programu SDS LOG (Creative Commons Licence) [[SDS LOG: source code|ke stáhnutí zde]]&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS LOG: changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;První Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMICROE.jpg]]  [[Soubor:Thumbnail_SDSMICRO.jpg]] [[Soubor:Thumbnail_SDS_DIN.jpg]] '''D0000001''' MICRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: LM]] varianty '''LIGHT''', '''LIGHT 2''' a '''E (DIN)'''.&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny varianty a revize SDS MICRO LM.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_010722_CZ.bin SDS-MICRO-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_010722_EN.bin SDS-MICRO-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B0000057''' MICRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_021123_CZ.bin SDS-MICRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_021123_EN.bin SDS-MICRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B000D957''' MICRO ST DP&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST DP]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST DP.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_021123_CZ.bin SDS-MICRO-ST-DP-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_021123_EN.bin SDS-MICRO-ST-DP-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MINI_1.png]] [[Soubor:Thumbnail_SDS_MINI_2.png]] '''B0000020''' MINI ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MINI: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MINI ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MINI_021123_CZ.bin SDS-MINI-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MINI_021123_EN.bin SDS-MINI-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
[[SDS MINI: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMACRO.jpg]] '''C0000001''' MACRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: LM]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_010722_CZ.bin SDS-MACRO-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_010722_EN.bin SDS-MACRO-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MACRO_ST_rev1.png]] '''C0000057''' MACRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_021123_CZ.bin SDS-MACRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_021123_EN.bin SDS-MACRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSTTCPRO.jpg]] '''B0000001''' TTCPRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS TTCPRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_021123_CZ.bin SDS-TTCPRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_021123_EN.bin SDS-TTCPRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS TTCPRO ST má shodný Change Log se SDS MINI ST, a to zde: [[SDS MINI: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSIO6.jpg|160px]] '''D0000006''' IO6 LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: LM]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_010722_CZ.bin SDS-IO6-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_010722_EN.bin SDS-IO6-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 LM má shodný Change Log se SDS MICRO LM, a to zde: [[SDS MICRO: LM: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_empty.jpg]] '''D0000011''' IO6 ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_021123_CZ.bin SDS-IO6-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_021123_EN.bin SDS-IO6-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 ST má shodný Change Log se SDS MICRO ST, a to zde: [[SDS MICRO: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_FTP_rev1.png]] '''F0000001''' FTP LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS FTP: LM]], výchozí firmware.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Firmware: ''SDS FTP ze dne 7.9.2010'' už nahrán ve výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS FTP: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_ONEDPS.jpg]] '''E000AAA1''' UPS ONEDPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: ONEDPS]], finální jednodesková verze (aktuální) (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stáhnout firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_CZ.bin (Česká lokalizace) SDS-UPS-ONEDPS-LM ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;Download firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_EN.bin (English language version) SDS-UPS-ONEDPS-LM released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS UPS: LM: ONEDPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_TWODPS.jpg]] '''C00xxxxx''' UPS TWODPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: TWODPS]], HW rev3u - DVOUDESKOVÁ (UŽ NEPRODÁVANÁ) varianta.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je zaslán na požádání (pošlete email), aktuální verze je z 1.3.2011 (dále aktualizováno na specifické požádání, raději proto přejděte na nový HW).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Každá deska má svou kalibraci, proto každá deska má svůj vlastní FW, proto musíte uvést S/N svého výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;HISTORIE: [[SDS UPS: LM: TWODPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;Druhá Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSBIG.jpg]] [[Soubor:Thumbnail_SDSSMALL.jpg]] '''B1900001''' / '''B1900002''' / '''B1900004''' : BIG, BIG2, SMALL, STSW, MBGW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Společný firmware pro výrobky [[SDS BIG]], [[SDS SMALL]] a [[SDS STSW]] a [[SDS MBGW]]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je jednotný pro všechny varianty '''SDS Druhé Produktové Řady''', nutné je rozlišení dle varianty 64kB/128kB/512kB. Rozlišení podle dalších subvariant (DP, DS84) se neprovádí.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je společný pro BIG a BIG2, rozlišení je pouze dle varianty 64/128/512.&lt;br /&gt;
&amp;lt;li&amp;gt;Pozn. Modul SMALL a modul MBGW interně obsahuje modul STSW, nahrává se tam tedy stejný FW.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware vždy vyžaduje použití odpovídající, aktuální verze FULLC.EXE programu. &lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS BIG/SMALL/STSW: [[SDS BIG: firmware changelog|firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;64kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 64kB) [https://sds.an-d.cz/firmware/SDS_BIG_64K_280325_EN.bin firmware &amp;quot;64kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 28.3.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;128kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 128kB) [https://sds.an-d.cz/firmware/SDS_BIG_128K_280325_EN.bin firmware &amp;quot;128kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 28.3.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;512kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [[firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 12.4.2022|informace pokud máte SDS512 s FW &amp;lt;b&amp;gt;starším&amp;lt;/b&amp;gt; než 12.4.2022]]&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [https://sds.an-d.cz/firmware/SDS_BIG_512K_280325_EN.bin firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 28.3.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;Informace: SDS BIG/SMALL/STSW 512 se starším FW než 12.4.2022 vyžaduje přeprogramování u výrobce.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| POZOR&lt;br /&gt;
'''Aktualizujte''' své doplňkové sandwich desky, tzn. [[SDS BIG: DALI]], [[SDS BIG: LORA]] - na verzi FW 5.12.2016 '''nebo novější'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Aktualizaci lze provést jen fyzicky u výrobce, ten ji provede bezplatně (zašlete výrobci vaše SDS pro jeho aktualizaci). Se starým FW nebude tento HW plně fungovat.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Informace ===&lt;br /&gt;
&lt;br /&gt;
 VŽDY MĚJTE VE SVÉM ZAŘÍZENÍ NEJNOVĚJŠÍ FIRMWARE, A POUŽÍVEJTE TAKÉ NEJNOVĚJŠÍ SDS-C EXE / FULL-C EXE PROGRAM.&lt;br /&gt;
 V opačném případě vám budou chybět nové funkce, které neustále přidáváme, a také nebudete mít opravené nalezené chyby.&lt;br /&gt;
 V případě že chcete získat podporu, musíte mít instalovaný nejnovější firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Historický Software ===&lt;br /&gt;
&lt;br /&gt;
Za účelem aktualizace takových SDS, kde už dlouho nebyl aktualizován firmware, je potřeba použít odpovídající EXE program pro aktualizaci takovéhoto zařízení.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== První Produktová Řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro SDS-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_151119.exe ze dne '''15.11.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 08, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020118.exe ze dne '''2.1.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 07, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020317.exe ze dne '''2.3.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 8.8.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_060216.exe ze dne '''6.2.2016''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které nemají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 24.1.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_231111.exe ze dne '''23.11.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 04&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_170211.exe ze dne '''17.2.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''února 2011''')&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro ''SDS-C verze č. 03'' (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_140511.exe ze dne '''14.5.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''konce května 2011''')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Druhá Produktová řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro FULL-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_070323.exe ze dne '''7.3.2023''']&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_311222.exe ze dne '''31.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 11, (firmware od 9.1.2023 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_071222.exe ze dne '''7.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 10, (firmware od 18.11.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_161022.exe ze dne '''16.10.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0F, (firmware od 16.10.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_110722.exe ze dne '''11.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0E, (firmware od 11.7.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010722.exe ze dne '''1.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0D, (firmware od 6.8.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030422.exe ze dne '''3.4.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0C, (firmware od 23.3.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010322.exe ze dne '''1.3.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0B, (firmware od 6.8.2020 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030119.exe ze dne '''3.1.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0A, (firmware od 3.1.2019 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010718.exe ze dne '''1.7.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 09, (firmware od 27.6.2018 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_100717.exe ze dne '''10.7.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 08, (firmware od 10.7.2017 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_080617.exe ze dne '''8.6.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 06, (firmware starší než Červenec-2017, a pouze pro variantu SDS 64kB)&lt;br /&gt;
&lt;br /&gt;
* (historická verze) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_201022.exe ze dne 20.10.2022]&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_120417.exe ze dne 12.4.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB která používá ''starý'' firmware (2017 nebo starší)&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_100717.exe ze dne 10.7.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB a 128kB (nepodporuje variantu 512kB tak jako aktuální stáhnutelná verze aplikace)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta Testing ==&lt;br /&gt;
&lt;br /&gt;
Než vydáme novou verzi, je potřeba změny a novinky otestovat.&lt;br /&gt;
&lt;br /&gt;
Pokud jste ochotní se testu zúčastnit, pak se podívejte [https://forum.sds.an-d.cz/viewtopic.php?id=129 na tento odkaz]. Zde jsou uveřejněny vždy nejnovější beta verze firmware.&lt;br /&gt;
&lt;br /&gt;
Diskuse s vývojem k aktuálnímu Firmware je k dispozici na našem fóru.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C_dns_resolv_functions&amp;diff=957</id>
		<title>FULL-C dns resolv functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C_dns_resolv_functions&amp;diff=957"/>
		<updated>2025-08-10T16:32:01Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje programovací jazyk '''FULL-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Některá zařízení používají SDS-C, pro který máme návody jinde na této WiKi.&lt;br /&gt;
&lt;br /&gt;
== Síťové funkce: dotaz na přidělenou IP adresu pro DNS jméno ==&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS umožňuje odeslat dotaz na DNS server, za účelem zjištění IP adresy přidělené k DNS názvu, který je obsahem právě takového dotazu.&lt;br /&gt;
&lt;br /&gt;
Za tímto účelem jsou k dispozici tyto dvě funkce:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void dns_resolv(char *domainNameInput);&lt;br /&gt;
 unsigned int dns_resolv_status(unsigned int *IP0value, unsigned int *IP1value, unsigned int *IP2value, unsigned int *IP3value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Princip ==&lt;br /&gt;
&lt;br /&gt;
SDS odesílá dotaz na DNS server, který je nastaven uživatelem SDS ve webové administraci zařízení (popř. je adresa DNS serveru získána z DHCP serveru, opět záleží na konfiguraci).&lt;br /&gt;
&lt;br /&gt;
Po odeslání dotazu se čeká na odpověď, přičemž FULL-C program pravidelně kontroluje stav voláním '''dns_resolv_status()''' funkce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''POZOR : Maximální délka názvu DNS domény je interně omezena na 96 znaků !'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Příklad ==&lt;br /&gt;
&lt;br /&gt;
V tomto příkladu odesílá SDS dotaz (textový název domény) na DNS server a zobrazuje případnou získanou odpověď (IP adresu).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 char DNSname[96];&lt;br /&gt;
 unsigned int status;&lt;br /&gt;
 unsigned int IP0, IP1, IP2, IP3;&lt;br /&gt;
&lt;br /&gt;
 sprintf((char *)DNSname, &amp;quot;www.google.com&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 printf(&amp;quot;RESOLVING %s \n&amp;quot;, DNSname);&lt;br /&gt;
&lt;br /&gt;
 // start - select the new DNSname for all the subsequent status function calls&lt;br /&gt;
 dns_resolv(DNSname);&lt;br /&gt;
&lt;br /&gt;
 // get the first status value&lt;br /&gt;
 status = dns_resolv_status(&amp;amp;IP0, &amp;amp;IP1, &amp;amp;IP2, &amp;amp;IP3);&lt;br /&gt;
 // only if truly working, keep waiting&lt;br /&gt;
 while (512 == status)&lt;br /&gt;
 {&lt;br /&gt;
   // keep getting a new status, until it is different than 512&lt;br /&gt;
   status = dns_resolv_status(&amp;amp;IP0, &amp;amp;IP1, &amp;amp;IP2, &amp;amp;IP3);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 // check the final status value&lt;br /&gt;
 if (513 == status)&lt;br /&gt;
 {&lt;br /&gt;
   printf(&amp;quot;GOT RESULT: IP = %u.%u.%u.%u\n&amp;quot;, IP0, IP1, IP2, IP3);&lt;br /&gt;
   // only in this case, we can use the IPx address&lt;br /&gt;
   // ... OK&lt;br /&gt;
&lt;br /&gt;
   // we can print the additional internal DNS cache status, for this particular domain&lt;br /&gt;
   // note. the value is valid only if the status is 512, otherwise not&lt;br /&gt;
   unsigned int ttl;&lt;br /&gt;
   ttl = SDS_get_u(70); // index [70] = actual TTL value for the selected DNS cache item &lt;br /&gt;
   printf(&amp;quot;REMAINING DNS-CACHE TTL-VALUE IS %u SECONDS FOR DOMAIN %s\n&amp;quot;, ttl, DNSname);&lt;br /&gt;
 } else&lt;br /&gt;
 {&lt;br /&gt;
   printf(&amp;quot;DNS RESOLV FAILED (error %u) \n&amp;quot;, status);&lt;br /&gt;
   // in this case, the IPx adress is not valid, and you need to repeat the dns_resolv() call again&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interní DNS cache ==&lt;br /&gt;
&lt;br /&gt;
Po úspěšném provedení získání DNS překladu, kdy SDS odešle dotaz na určený DNS server, a získá z něj odpověď, &lt;br /&gt;
je výsledek k dispozici (dá se získat pomocí dns_resolv_status funkce).&lt;br /&gt;
&lt;br /&gt;
Funkce dns_resolv_status() vrací vždy výsledek toho úplně posledního dotazu, který byl vyvolán zavoláním funkce dns_resolv().&lt;br /&gt;
&lt;br /&gt;
Platná odpověď z DNS serveru je uložena do interní tabulky (DNS cache) v SDS, přičemž z odpovědi je převzata i položka TTL pro danou položku.&lt;br /&gt;
&lt;br /&gt;
Pokud je (v interní cache) existující položka, se svou zbývající hodnotou TTL větší než 0, bude ihned k dispozici odpověď z interní cache.&lt;br /&gt;
&lt;br /&gt;
Pokud záznam v interní cache není (nebo už vypršel), bude automaticky odeslána žádost o nový překlad na DNS server.&lt;br /&gt;
&lt;br /&gt;
Toto si řídí SDS interně.&lt;br /&gt;
&lt;br /&gt;
Každou 1 sekundu dojde ke snížení zbývajících hodnot TTL u všech záznamů v interní cache.&lt;br /&gt;
&lt;br /&gt;
Systémová proměnná na indexu [72] umožňuje limitovat počáteční hodnotu TTL, která přijde v odpovědi z DNS serveru. Nastavte si to při startu svého FULLC programu dle své potřeby. Poznámka: v případě, že přijde odpověď s položkou s TTL=0, pak je v SDS zapsána tato položka do interní DNS cache s výchozí dobou platnosti dva týdny (TTL nastaveno na 1209600 sekund).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Váš program tedy vždy, když potřebuje IP adresu pro jakoukoliv doménu, tak vždy musí nejprve zavolat dns_resolv(). Tím se jednak vybere aktuální doména, pro kterou chcete získat platnou aktuální IP adresu (a lze ji tedy přečíst pomocí dns_resolv_status() funkce), a také se zkontroluje platnost položky v interní cache pro danou doménu a eventuálního odeslání nového dotazu (pokud záznam v cache není, nebo už je neplatný).&lt;br /&gt;
&lt;br /&gt;
Nový dotaz není odeslán automaticky (tedy SDS neodešle nový dotazy na server), pokud položka v interní DNS cache je stále platná. Toto máte pod kontrolou vy, a to tak, že voláte funkci dns_resolv(), která se teprve v ten moment (kdy ji ze svého programu zavoláte) rozhodne, jestli tedy bude nový dotaz posílat, nebo ne (čistě dle stavu obsahu interní DNS cache). Pokud v cache není záznam pro danou doménu, nebo je - ale už vypršel (TTL na nule), tak dojde k odeslání dotazu, a váš program pak musí čekat na odpověď (viz příklad výše, periodickým voláním dns_resolv_status(), kdy se průběžně zařídí dle vrácené hodnoty od této funkce).&lt;br /&gt;
&lt;br /&gt;
Hodnota na indexu [71] ukazuje, kdy dorazila platná a očekávaná odpověď (paket) z DNS serveru. Pokud nedorazila, je hodnota na 0. Pokud odpověď dorazila (pro daný dotaz, položený posledním voláním funkce dns_resolv), tak je do indexu [71] zapsána časová známka (UTC čas) momentu, kdy byla odpověď přijata (kdy byl paket ze serveru akceptován). Pomocí sledování indexu [71] můžete nezávisle kontrolovat činnost DNS resolveru v zařízení SDS. Např. při výpadku síťové komunikace (např. odpojení kabelu, porucha sítě atd.), kdy současně časem dojde k vypršení položek v interní cache (to lze sledovat pomocí indexu [70]), pak pokud nový dotaz nebude zodpovězen (protože nebude možná komunikace s DNS serverem), tak se hodnota v [71] ukáže jako nulová. Samozřejmě vždy jsou ve všech zde zmíněných indexech k dispozici hodnoty pouze pro ten doménový název, který jste jako poslední použili při zavolání funkce dns_resolv(), a ostatní jsou uchovány v interní cache (pokud už byly dříve přeloženy).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Upozornění ==&lt;br /&gt;
&lt;br /&gt;
Starší FW mělo bug, kdy při vypršení TTL v interní cache nedošlo ke smazání položky v interni cache. Toto je samozřejmě problém, který je vyřešen v novém firmware, všechny verze od 08/2025.&lt;br /&gt;
&lt;br /&gt;
DNS cache je (záměrně) vymazána při:&lt;br /&gt;
* nahrání nového FULLC programu&lt;br /&gt;
* restartu zařízení SDS&lt;br /&gt;
&lt;br /&gt;
DNS cache není vymazána při výpadku Ethernetového připojení.&lt;br /&gt;
&lt;br /&gt;
DNS cache lze ručně vymazat zapsáním hodnoty 0xE4A5ECAC do systémové proměnné na indexu [70]. Zápis této speciální hodnoty kompletně smaže interní DNS cache. Tato specifická funkcionalita vyžaduje aktuální firmware (bylo to přidáno až 08/2025).&lt;br /&gt;
&lt;br /&gt;
To, že je DNS cache vymazána, znamená pouze jedinou záležitost - a to, že při novém dotazu přes dns_resolv() dojde k nové komunikaci s DNS serverem, a SDS (resp. váš FULLC program) bude čekat na jeho novou, čerstvou odpověď. Ta jak přijde (a pokud bude platná), tak se uloží do interní DNS cache, a to po dobu hodnoty TTL (tuto dobu určuje DNS server ! a omezuje ji hodnota v indexu [72]). Další volání dns_resolv(), pak (dokud TTL pro danou doménu v interní cache nevyprší) jsou pak vyřízeny okamžitě, protože SDS nečeká na odpověď ze serveru, a váš FULLC program dostane odpověď ihned z interní cache (dokud té nevyprší TTL).&lt;br /&gt;
&lt;br /&gt;
GOOD PRACTICE: před každým opakovaným použitím IP adresy, která byla získána z DNS resolveru, je vhodné zavolat dns_resolv() pro danou doménu znovu. Pokud je výsledná adresa (výsledek překladu domény na IP adresu) stejná, je to také okamžitě potvrzeno. Pokud však mezitím došlo ke změně (DNS záznamu), tak se jedině takto dokáže tato změna projevit ! Pokud tedy periodicky voláte např. funkci http_get(), tak vždy před každým tímto voláním, musíte provést i celé kolečko s dns_resolv() pro danou doménu, se kterou takto chcete komunikovat. Pokud to neuděláte, časem se dostanete do obtížného problému, kdy daný cílový server už může být dávno na jiné IP adrese, ale váš program bude stále chodit na starou, neplatnou, a přestane fungovat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stavové hodnoty ==&lt;br /&gt;
&lt;br /&gt;
Program musí použít volání funkce '''dns_resolv_status''' pro zjištění okamžitého stavu. Dokud nezískáte finální stavovou hodnotu, musíte tuto funkci volat opakovaně (nezapomeňte na vlastní bezpečnostní timeout).&lt;br /&gt;
&lt;br /&gt;
  dns_resolv_status()       význam&lt;br /&gt;
 -------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
  0                       |  klid, můžete odeslat DNS dotaz, funkce dns_resolv_status() současně nevrací platnou IP adresu (musíte nejprve spustit DNS překlad)&lt;br /&gt;
  512                     |  pracuje, dotaz odeslán (překlad nenalezen v interní cache), čekejte (funkce současně nevrací platnou IP adresu, ta bude až po dokončení překladu)&lt;br /&gt;
  513                     |  hotovo OK, do *resolvedIPaddressOutput byla zapsána IP adresa (4 bajty), a záznam v interní cache je platný a živý (zbývající TTL větší než 0)&lt;br /&gt;
  514                     |  odpověď nebyla získána (chyba) a současně nemáme záznam v interní DNS cache, takže funkce nevrací platnou IP adresu (musíte znovu začít s dotazem)&lt;br /&gt;
  515                     |  funkce byla zavolána s neplatnými parametry - nic nebylo provedeno, funkce nevrací platnou IP adresu&lt;br /&gt;
  516                     |  dotaz selhal, protože došlo k odpojení Ethernetu&lt;br /&gt;
  517                     |  dotaz selhal, protože došlo ke ztrátě vlastní přidělené IP adresy zařízení SDS (typicky když vyprší IP z DHCP a není ještě obnovena)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pokud funkce dns_resolv_status() vrátila hodnotu 513, je možné číst systémovou proměnnou z indexu [70] (uint32_t), která ukáže hodnotu TTL v momentu, kdy tuto hodnotu právě čtete. Lze takto sledovat, jak se postupně TTL snižuje (o 1 každou sekundu). Hodnota TTL odpovídá dané položce v interní cache, která byla určena právě posledním voláním funkce dns_resolv().&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_set_and_get&amp;diff=956</id>
		<title>FULL-C: set and get</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_set_and_get&amp;diff=956"/>
		<updated>2025-08-10T16:22:06Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje programovací jazyk '''FULL-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Některá zařízení používají SDS-C, pro který máme návody jinde na této WiKi.&lt;br /&gt;
&lt;br /&gt;
== Jak je FULL-C program připojen k hardware ==&lt;br /&gt;
&lt;br /&gt;
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é).&lt;br /&gt;
&lt;br /&gt;
Za tímto účelem je k dispozici sada C funkcí, které může program volat a které buď navrátí aktuální stav (&amp;quot;get&amp;quot; funkce), nebo stav změní (&amp;quot;set&amp;quot; funkce).&lt;br /&gt;
&lt;br /&gt;
Zde je seznam těchto funkcí:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void SDS_set_i32(unsigned int index, signed int value);&lt;br /&gt;
   signed int SDS_get_i32(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_i64(unsigned int index, int64_t value);&lt;br /&gt;
   signed int SDS_get_i64(unsigned int index);&lt;br /&gt;
  &lt;br /&gt;
         void SDS_set_u32(unsigned int index, unsigned int value);&lt;br /&gt;
 unsigned int SDS_get_u32(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_u64(unsigned int index, uint64_t value);&lt;br /&gt;
 unsigned int SDS_get_u64(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_f32(unsigned int index, float value);&lt;br /&gt;
        float SDS_get_f32(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_a(unsigned int index, void *ptr, unsigned int len);&lt;br /&gt;
         void SDS_get_a(unsigned int index, void *ptr, unsigned int maxlen);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Historicky zde původně byly i tyto funkce:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void SDS_set_i(unsigned int index, signed int value);&lt;br /&gt;
   signed int SDS_get_i(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_u(unsigned int index, unsigned int value);&lt;br /&gt;
 unsigned int SDS_get_u(unsigned int index);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ty &amp;quot;nezmizely&amp;quot; jen byly '''přejmenovány''' (i na i32, u na u32). &lt;br /&gt;
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ý.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Detailní Příklady ===&lt;br /&gt;
&lt;br /&gt;
Přečtěte si nejprve celou tuto stránku, ať pochopíte princip. Následně se podívejte na [[FULL-C:_set_and_get:_detailed|jednotlivé příklady zde]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Princip ==&lt;br /&gt;
&lt;br /&gt;
Základem je použití přístupu k informacím prostřednictvím tzv. '''index'''u.&lt;br /&gt;
&lt;br /&gt;
Pod každou položkou (číselným '''index'''em) je schována odpovídající činnost nebo hodnota (např. '''index = 3''' vrátí přes &amp;quot;get&amp;quot; funkci aktuální hodnotu &amp;quot;UpTime&amp;quot;, viz tabulka).&lt;br /&gt;
&lt;br /&gt;
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 funkci):&lt;br /&gt;
&lt;br /&gt;
  typ položky              | rozsah         | typ proměnné    | postfix set\get funkce&lt;br /&gt;
 --------------------------+----------------+-----------------+-------------------------&lt;br /&gt;
   signed 32-bit integer   |  -2^31..+2^31  |  int            |  _i32&lt;br /&gt;
   signed 64-bit integer   |  -2^63..+2^63  |  int64_t        |  _i32&lt;br /&gt;
   unsigned 32-bit integer |      0..+2^32  |  unsigned int   |  _u64&lt;br /&gt;
   unsigned 64-bit integer |      0..+2^64  |  uint64_t       |  _u64&lt;br /&gt;
   IP address              |  uchar[4]      |  unsigned int   |  _u32&lt;br /&gt;
   float                   |  IEEE-754      |  float          |  _f32&lt;br /&gt;
   string (text)           |  len\maxlen    |  void* \ char*  |  _a&lt;br /&gt;
   binary array            |  len\maxlen    |  void* \ char*  |  _a&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, bude při psaní programu potřeba správně vybrat postfix u dané funkce.&lt;br /&gt;
&lt;br /&gt;
Příklad: chceme zapsat desetinné číslo &amp;quot;numf&amp;quot;, v tom případě se jedná o typ &amp;quot;float numf;&amp;quot; a musíme použít ''SDS_set_f(index, numf);''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Funkce _u32 \ _i32 \ _f32 ==&lt;br /&gt;
&lt;br /&gt;
Základní funkce určené pro získání číselné hodnoty &amp;quot;z&amp;quot; SDS, popř. zápisu číselné hodnoty &amp;quot;do&amp;quot; SDS. Vždy se jedná o kombinaci ''index''u (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).&lt;br /&gt;
&lt;br /&gt;
Č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é).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
První příklad: ''čtení'' 32bitové hodnoty bez znaménka&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
unsigned int NTPtime;&lt;br /&gt;
NTPtime = SDS_get_u32(4);&lt;br /&gt;
printf(&amp;quot;Aktuální Epoch Time je %u (secs).\n&amp;quot;, NTPtime);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Druhý příklad: ''čtení'' 32bitové hodnoty se znaménkem&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int NTPoffset;&lt;br /&gt;
NTPoffset = SDS_get_i32(26);&lt;br /&gt;
printf(&amp;quot;Offset pro NTP čas je: %d hod.\n&amp;quot;, NTPoffset);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Třetí příklad: ''čtení'' float hodnoty&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
float AD_Rinput__in_user_units;&lt;br /&gt;
AD_Rinput__in_user_units = SDS_get_f32(311);&lt;br /&gt;
printf(&amp;quot;Resistance Measure Input value is: %0.3f \n&amp;quot;, AD_Rinput__in_user_units);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Čtvrtý příklad: ''zápis'' 32bitové hodnoty bez znaménka&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// zapni RELE 1 (zápisem nenulové hodnoty na index [231], viz tabulka)&lt;br /&gt;
SDS_set_u32(231, 0xFF); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Funkce _u64 \ _i64 ==&lt;br /&gt;
&lt;br /&gt;
Princip je identický jako pro _u32 a _i32 funkce. &lt;br /&gt;
&lt;br /&gt;
Vždy se podívejte do tabulky, jaké informace můžete v 64bitové formě dostat; většina jich je pouze ve 32bit formě.&lt;br /&gt;
To ale nevadí, protože přeci například není problém do proměnné typu uint64_t zapsat 32bitové číslo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Funkce _a ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
První příklad: čtení textového parametru&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// definujeme si pole o velikosti 32 bajtů; tzn. sem se vleze až 31 znaků plus jeden ukončovací 0x00&lt;br /&gt;
char sysLoc[32];&lt;br /&gt;
&lt;br /&gt;
// SDS uloží text z indexu [2] do pole &amp;quot;sysLoc&amp;quot;, o maximální velikosti 32 bajtů&lt;br /&gt;
SDS_get_a(2, (void *)sysLoc, 32);&lt;br /&gt;
&lt;br /&gt;
// a můžeme se podívat na výsledek (výpis do konzole)&lt;br /&gt;
printf(&amp;quot;Nastavená system location: %s \n&amp;quot;, sysLoc);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Druhý příklad: čtení pole údajů - '''pouze''' položky z indexu označeného (a) v tabulce indexů&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// definujeme si pole o 8 položkách, které obsahuje prvky typu &amp;quot;unsigned int&amp;quot; (každý tento prvek má velikost: 4 bajty)&lt;br /&gt;
unsigned int OPTOvalues[8];&lt;br /&gt;
 &lt;br /&gt;
// SDS zapíše 8 pozic od indexu [151] do pole OPTOvalues&lt;br /&gt;
// maximální velikost zápisu = 8*4 , tzn. 8 položek v poli OPTOvalues, každá o 4 bajtech&lt;br /&gt;
SDS_get_a(151, (void *)OPTOvalues, 8 * 4);&lt;br /&gt;
&lt;br /&gt;
// a muzeme pristupovat na jednotlive polozky (jejich obsah je platny vuci okamziku zavolani GET funkce)&lt;br /&gt;
if (0 == OPTOvalues[0]) ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Pro tyto přístupy je potřeba uvést, že blokové čtení funguje jen vždy od prvního indexu pro daný blok indexů.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na zcela stejném přístupu funguje '''SDS_set_a()''' funkce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úplné detaily a všechny příklady ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'''Detailní přehled, doplněný o příklady ve FULL-C, naleznete zde: [[FULL-C: set and get: detailed]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tabulka ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Je li také uveden klíč &amp;quot;(a)&amp;quot;, 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.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 -----------+---------+------+--------------------------------------------------------------------------------------------------------&lt;br /&gt;
   index    | i\u\f\a |  dir |  comment&lt;br /&gt;
 -----------+---------+------+--------------------------------------------------------------------------------------------------------&lt;br /&gt;
   0        | u32     |  GET |  firmware PAIRCODE (SDS device master-type identification)&lt;br /&gt;
   0        |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   1        | u32     |  GET |  count of actually logged-in users (logged-in to SDS web admin)&lt;br /&gt;
   1        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   2        | u32     |  GET |  unique ID for SDS (serial number assigned during manufacturing)&lt;br /&gt;
   2        | a       |  GET |  sysLocation (user configured text)&lt;br /&gt;
   2        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   3        | u32     |  GET |  uptime (increased by 1 each every 10msec) (example: 100 = 1 sec)&lt;br /&gt;
   3        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   4        | u32     |  GET |  LOCAL time (NTP UTC Epoch, with GMT-offset and DST-offset applied), value in seconds&lt;br /&gt;
   4        |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   5        | u32     |  GET |  LOCAL time decomposition = value of DAY (1 through 31)&lt;br /&gt;
   5        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   6        | u32     |  GET |  LOCAL time decomposition = value of MONTH (1 through 12)&lt;br /&gt;
   6        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   7        | u32     |  GET |  LOCAL time decomposition = value of YEAR (full value)&lt;br /&gt;
   7        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   8        | u32     |  GET |  LOCAL time decomposition = value of HOUR (0 through 23)&lt;br /&gt;
   8        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   9        | u32     |  GET |  LOCAL time decomposition = value of MINUTE (0 through 59)&lt;br /&gt;
   9        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   10       | u32     |  GET |  LOCAL time decomposition = value of SECOND (0 through 59)&lt;br /&gt;
   10       |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   11       | u32     |  GET |  LOCAL time decomposition = day-of-week number = number of days since Sunday (0 to 6)&lt;br /&gt;
   11       |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   12       | u32     |  GET |  SDS device IP address (web admin IP)&lt;br /&gt;
   12       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   13..15   |         |  GET |  n/a (reserved)&lt;br /&gt;
   13..15   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   16       | u32     |  GET |  network gateway IP address&lt;br /&gt;
   16       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   17..19   |         |  GET |  n/a (reserved)&lt;br /&gt;
   17..19   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   20       | u32     |  GET |  network IP MASK&lt;br /&gt;
   20       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   21       | a       |  GET |  SNMPv3 - EngineID (FC: prepare buffer for 32 chars + trailing zero)&lt;br /&gt;
   21       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   22       | u32     |  GET |  SNMPv3 - Engine Boots &lt;br /&gt;
   22       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   23       | u32     |  GET |  SNMPv3 - Engine Time &lt;br /&gt;
   23       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   24       | u32     |  GET |  Ethernet Link Status&lt;br /&gt;
   24       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   25       | u32     |  GET |  Ethernet Link Speed (0, 10 or 100)&lt;br /&gt;
   25       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   26       | i32     |  GET |  read NTP GMT offset (-11 .. 11) = offset, in hour(s), between UTC and LOCAL time&lt;br /&gt;
   26       | i32     |  SET |  set NTP GMT offset (warning: this is not stored to permanent memory - use web admin to store it permanently)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   27       | u32     |  GET |  validity of the assigned IP address (0 = SDS does not have any IP address assigned, at the moment)&lt;br /&gt;
   27       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   28       | u32     |  GET |  timestamp of last change (assignment) of IP address &lt;br /&gt;
   28       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   29       | u32     |  GET |  state of DHCP client (0 = disabled, OR: enabled = status value of 1 .. 11)&lt;br /&gt;
   29       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   30       | u32     |  GET |  DHCP lease time (secs) value&lt;br /&gt;
   30       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   31       | u32     |  GET |  MAC[0] (always use only the lowest 8 bits, for each item)&lt;br /&gt;
   31       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   32       | u32     |  GET |  MAC[1]&lt;br /&gt;
   32       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   33       | u32     |  GET |  MAC[2]&lt;br /&gt;
   33       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   34       | u32     |  GET |  MAC[3]&lt;br /&gt;
   34       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   35       | u32     |  GET |  MAC[4]&lt;br /&gt;
   35       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   36       | u32     |  GET |  MAC[5]&lt;br /&gt;
   36       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   37..39   |         |  GET |  n/a (reserved)&lt;br /&gt;
   37..39   |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   40       | u32     |  GET |  SoC power-up or reset reason (64/128 = read only LSB: 8 bits) (512 = read all 32 bits)&lt;br /&gt;
   40       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   41       | a       |  GET |  OEM branding (login web page) [32 chars]&lt;br /&gt;
   41       | a       |  SET |  set custom OEM branding (login web page) [32 chars]&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   42       | a       |  GET |  OEM branding (welcome web page) [128 chars]&lt;br /&gt;
   42       | a       |  SET |  set custom OEM branding (welcome web page) [128 chars]&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   43       | u32     |  GET |  NTP-server IP address&lt;br /&gt;
   43       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   44       | u32     |  GET |  NTP-client status (0 = NOT synchronized)&lt;br /&gt;
   44       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   45       | u32     |  GET |  UpTime value - units: msec (uptime is constantly counted since then latest SDS FW boot)&lt;br /&gt;
   45       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   46       | u32     |  GET |  temperature of SoC - the RAW value (you have to manually recalculate this raw value to get degC)&lt;br /&gt;
   46       | i32     |  GET |  temperature of SoC - already recalculated to degC (SDS does have, and uses, all the required calibration info)&lt;br /&gt;
   46       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   48..60   |         |  GET |  n/a (reserved)&lt;br /&gt;
   48..60   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   61       | u32     |  GET |  read this to get a 32-bit Random Number (HW RNG)&lt;br /&gt;
   61       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   62..63   |         |  GET |  n/a (reserved)&lt;br /&gt;
   62..63   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   64       | u32     |  GET |  read this to get a value of an automatic SECOND DOWN-COUNTER #0 (it does decrease its internal value by 1 for each 1 second, down to 0 where it stays, until restarted by writing)&lt;br /&gt;
   64       | u32     |  SET |  write this to set/start/restart an automatic SECOND DOWN-COUNTER #0&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   65       | u32     |  GET |  get state of the DST automatic (0 = not used) (1 = DST used and DST shift is applied) (2 = DST used but NO shift applied)&lt;br /&gt;
   65       | u32     |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   66       | u32     |  GET |  DNS-server IP address&lt;br /&gt;
   66       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   67       | u32     |  GET |  info about SDS device IP address origin (0=none, 1=manual, 2=dhcp)&lt;br /&gt;
   67       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   68       | u32     |  GET |  info about DNS server IP address origin (0=none, 1=manual, 2=dhcp)&lt;br /&gt;
   68       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   69       |         |  GET |  n/a (reserved) &lt;br /&gt;
   69       |         |  SET |  n/a (reserved) &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   70       | u32     |  GET |  DNS RESOLV - actual TTL live value (= 1..MAX, in seconds) for the very last resolved DNS name (or 0 = no resolv done or finished yet)&lt;br /&gt;
   70       | u32     |  SET |  write 0xE4A5ECAC to manually clear the WHOLE internal DNS cache (will force fresh DNS requests once dns_resolv() is again called by your program)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   71       | u32     |  GET |  DNS RESOLV - timestamp (UTC) of the latest DNS server response (packet) as requested by dns_resolv() function (if 0 then no response received, or cache has expired)&lt;br /&gt;
   71       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   72       | u32     |  GET |  DNS RESOLV - get the last set hard TTL limit (0 = invalid (will use 1209600 as default), otherwise 1..MAX = time in seconds)&lt;br /&gt;
   72       | u32     |  SET |  DNS RESOLV - set the hard TTL value limit (in seconds)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   73..77   |         |  GET |  n/a (reserved) &lt;br /&gt;
   73..77   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   78       | u32     |  GET |  SDS HW availability detail (information): 0 = single PWM output / 4 = four PWM outputs&lt;br /&gt;
   78       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   79       | u32     |  GET |  SDS HW sub-type (information): 1 = variant &amp;quot;DP&amp;quot; (newer HW version) / 0 = basic BIG (no DP)&lt;br /&gt;
   79       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   80       | u32     |  GET |  SDS HW sub-type (information): 1 = variant &amp;quot;DS84&amp;quot; / 0 = no DS84&lt;br /&gt;
   80       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   81..84   |         |  GET |  n/a (reserved) &lt;br /&gt;
   81..84   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   85       | u32     |  GET |  SDS module type (BIG, BIG2 or STSW) discrimination:  0 = STSW or SMALL / 1 = BIG / 2 = BIG2&lt;br /&gt;
   85       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   86       | u32     |  GET |  FC: actual state (running, uploading, failed etc.) of the FULL-C program (0, 1, 2, 4, 8, 16, 32, 64)&lt;br /&gt;
   86       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   87       | u32     |  GET |  FC: unique identifier of the actually uploaded FULL-C program&lt;br /&gt;
   87       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   88       |         |  GET |  n/a (reserved) &lt;br /&gt;
   88       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   89       | u32     |  GET |  SDS IP-WatchDog: state (0 = OFF)&lt;br /&gt;
   89       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   90       | u32     |  GET |  SDS IP-WatchDog: last known RTT (msecs)&lt;br /&gt;
   90       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   91       | u32     |  GET |  SDS IP-WatchDog: logical output status&lt;br /&gt;
   91       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   92..131  |         |  GET |  n/a (reserved)&lt;br /&gt;
   92..131  |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   132      | u32     |  GET |  FC: UTC time value, of the last FC-WDG restart of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
   132      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   133      | u32     |  GET |  FC: UpTime value, of the last FC-WDG restart of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
   133      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   134      | a       |  GET |  FC: archived text of the last FC error&lt;br /&gt;
   134      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   135      | u32     |  GET |  FC: number of FC-WDF restarts of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
   135      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   136      | u32     |  GET |  FC: total count of all FC program starts, since the SDS boot&lt;br /&gt;
   136      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   137      | u32     |  GET |  read an actual SDS CPU cycle counter (number of executed instructions since power-up/reboot), continuously wraps around, (1 step = approx. 2 nsec)&lt;br /&gt;
   137      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   138      | u32     |  GET |  get SDS internal RTC power-on status (0 = invalid data after powerup in RTC) (1 = RTC data OK and were used on powerup) &lt;br /&gt;
   138      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   139      | u32     |  GET |  NTP true actual raw epoch-time (secs since Linux Epoch) = clean UTC with *no* GMT nor DST offset applied&lt;br /&gt;
   139      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   140      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:401)&lt;br /&gt;
   140      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:401)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   141      | a       |  GET |  FC: custom TRAP variable - read (TRAP:402)&lt;br /&gt;
   141      | a       |  SET |  FC: custom TRAP variable - write to change (TRAP:402) (note. max 32 characters)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   142      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:403)&lt;br /&gt;
   142      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:403)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   143      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:404)&lt;br /&gt;
   143      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:404)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   144      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:405)&lt;br /&gt;
   144      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:405)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   145      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:406)&lt;br /&gt;
   145      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:406)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   146      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:407)&lt;br /&gt;
   146      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:407)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   147      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:408)&lt;br /&gt;
   147      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:408)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   148      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:409)&lt;br /&gt;
   148      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:409)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   149      |         |  GET |  n/a (reserved)&lt;br /&gt;
   149      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   150      |         |  GET |  FC: shared-variables access control - read state of the access control&lt;br /&gt;
   150      |         |  SET |  FC: shared-variables access control - use this to force a user-login in order to access the shared variables (0 = access without login is enabled)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   151..182 | u32 (a) |  GET |  OPTO1..OPTO32 status (warning: 0 = input ACTIVE = with signal) (non-zero = input not active = no signal)&lt;br /&gt;
   151..182 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   183      | u32     |  GET |  SDS FW date stamp (or just 0x00000000 for a very old firmware) - use this to verify the features or to ask user to update the firmware to a required newer version&lt;br /&gt;
   183      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   184      | u32     |  GET |  FC: information about how this actual running program was started (0 = none) (1 = normal) (2 = fc-wdg or manual restart) (4 = freshly loaded)&lt;br /&gt;
   184      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   185      | u32     |  GET |  FC: actual FULL-C WatchDog (decreasing) timeout counter value, v msec&lt;br /&gt;
   185      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   186      | u32     |  GET |  (common) frequency for PWM3 and PWM4 generator (1Hz .. 5MHz)&lt;br /&gt;
   186      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   187      | u32     |  GET |  PWM3 duty-cycle percent (0..100 [%])&lt;br /&gt;
   187      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   188      | u32     |  GET |  PWM3 HW: direct &amp;quot;pulse&amp;quot; register value&lt;br /&gt;
   188      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   189      | u32     |  GET |  PWM4 duty-cycle percent (0..100 [%])&lt;br /&gt;
   189      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   190      | u32     |  GET |  PWM4 HW: direct &amp;quot;pulse&amp;quot; register value&lt;br /&gt;
   190      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   191      | u32     |  GET |  (common) frequency for PWM1 and PWM2 generator (1Hz .. 5MHz)&lt;br /&gt;
   191      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   192      | u32     |  GET |  PWM1 duty-cycle percent (0..100 [%])&lt;br /&gt;
   192      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   193      | u32     |  GET |  PWM1 HW: read direct &amp;quot;pulse&amp;quot; (compare) register value&lt;br /&gt;
   193      | u32     |  SET |  PWM1 HW: write to direct &amp;quot;pulse&amp;quot; (compare) register value &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   194      | u32     |  GET |  reserved&lt;br /&gt;
   194      |         |  SET |  N/A&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   195      | u32     |  GET |  reserved&lt;br /&gt;
   195      |         |  SET |  N/A&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   196..228 | u32 (a) |  GET |  RELAY1..RELAY32 - &amp;quot;who&amp;quot; controls this output&lt;br /&gt;
   196..228 | u32     |  SET |  RELAY1..RELAY32 - (0 = manual = user via web) (2 = FULL-C) (4 = SDS IPwdg)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   229..230 |         |  GET |  n/a (reserved)&lt;br /&gt;
   229..230 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   231..262 | u32 (a) |  GET |  RELAY1..RELAY32 - output status (0 = off)&lt;br /&gt;
   231..262 | u32     |  SET |  RELAY1..RELAY32 - output status control (0 = off) (!0 = coil activated)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   263..265 |         |  GET |  n/a (reserved)&lt;br /&gt;
   263..265 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   266..297 | a       |  GET |  RELAY1..RELAY32 - identification/name (text, see webadmin)&lt;br /&gt;
   266..297 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   298..300 |         |  GET |  n/a (reserved)&lt;br /&gt;
   298..300 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   301      | u32     |  GET |  status (log0/log1) of GPIO-TOPBOARD pin&lt;br /&gt;
   301      | u32     |  SET |  control the GPIO-TOPBOARD pin value (if direction is set to output)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   302      | u32     |  GET |  direction (in/out) of GPIO-TOPBOARD pin&lt;br /&gt;
   302      | u32     |  SET |  control the GPIO-TOPBOARD pin direction (input or output)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   303..310 |         |  GET |  n/a (reserved)&lt;br /&gt;
   303..310 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   311..342 | f32 (a) |  GET |  AD: recalculated value (float) of A/D input&lt;br /&gt;
   311..342 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   343..374 | a       |  GET |  AD: input identification / name (text)&lt;br /&gt;
   343..374 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   375..406 | a       |  GET |  AD: input unit name (text)&lt;br /&gt;
   375..406 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   407..427 |         |  GET |  n/a (reserved)&lt;br /&gt;
   407..427 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   428      | u32     |  GET |  AD: user-selected type of the OpAmp chip (HW SDS) (0 = AD) (9 = LMV) &lt;br /&gt;
   428      |         |  SET |  n/a (read-only) (configuration to be done via web admin) - note. this must match the HW&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   429      | u32     |  GET |  AD: raw value of Vbatt (raw ADC value). To convert use: Vbatt = (raw * 3.3)/2048 (result in Volts)&lt;br /&gt;
   429      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   430      | u32     |  GET |  AD: value of VrefInt in miliVolts (typical value: 3300)&lt;br /&gt;
   430      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   431..438 | u32 (a) |  GET |  AD: raw value of A/D input in 12bits (0..4095) - for all SDS variants (64, 128 and 512)&lt;br /&gt;
   431..438 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   439..446 | u32 (a) |  GET |  AD: raw value of A/D input in 16bits (0..65535) - available only for the 512 SDS variant&lt;br /&gt;
   439..446 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   447..462 |         |  GET |  n/a (reserved)&lt;br /&gt;
   447..462 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   463..469 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [0]&lt;br /&gt;
   463..469 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   470..476 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [1]&lt;br /&gt;
   470..476 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   477..483 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [2]&lt;br /&gt;
   477..483 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   484..490 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [3]&lt;br /&gt;
   484..490 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   491..497 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [4]&lt;br /&gt;
   491..497 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   498..504 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [5]&lt;br /&gt;
   498..504 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   505..511 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [6]&lt;br /&gt;
   505..511 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   512..518 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [7]&lt;br /&gt;
   512..518 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   519..991 |         |  GET |  n/a (reserved)&lt;br /&gt;
   519..991 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   992      | u32     |  GET |  UTC timestamp (localtime) of the moment, when local clock gets to 23:59:59 (= last second of this day)&lt;br /&gt;
   992      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   993      | u32     |  GET |  UTC timestamp (localtime) marking a start of yesterday (as a moment since when we capture a new record) (or 0 = if there is no record for yesterday)&lt;br /&gt;
   993      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   994      | u32     |  GET |  UTC timestamp (localtime) marking a start of today (or a moment of SDS power on), since when a today's record is captured&lt;br /&gt;
   994      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   995      | u32     |  GET |  count of seconds, during yesterday, capturing the total length of T0 tariff activity (captures the timespan since [993] to [994])&lt;br /&gt;
   995      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   996      | u32     |  GET |  count of seconds, during yesterday, capturing the total length of T1 tariff activity (captures the timespan since [993] to [994])&lt;br /&gt;
   996      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   997      | u32     |  GET |  count of seconds since the moment of [994] (start of today) until NOW; counting the duration of T0 tariff being active&lt;br /&gt;
   997      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   998      | u32     |  GET |  count of seconds since the moment of [994] (start of today) until NOW; counting the duration of T1 tariff being active&lt;br /&gt;
   998      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   999      | u32     |  GET |  immediate state of the global Tariff Input (0 = T0 is active right now) (!0 = T1 is active right now)&lt;br /&gt;
   999      | u32     |  SET |  &amp;quot;manual&amp;quot; control of the global Tariff Input (write/control enabled only if the feature is set in web admin - control set to FULL-C)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1000..1031| u32 (a) |  GET |  [S0-input] actual live value of the impulse counter, for T0 tariff&lt;br /&gt;
  1000..1031| u32     |  SET |  [S0-input] modify the impulse counter, for T0 tariff&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1032..1063| u32 (a) |  GET |  [S0-input] actual live value of the impulse counter, for T1 tariff&lt;br /&gt;
  1032..1063| u32     |  SET |  [S0-input] modify the impulse counter, for T0 tariff&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1064..1095| u32 (a) |  GET |  [S0-input] time distance (in msec) between impulses&lt;br /&gt;
  1064..1095|         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1096..1127| u32 (a) |  GET |  [S0-input] time (in msec) since the last captured impulse&lt;br /&gt;
  1096..1127|         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1128..1159| u32     |  GET |  [S0-input] T0 counter value difference for the yesterday (for timespan since [993] to [994])&lt;br /&gt;
  1128..1159|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1160..1191| u32     |  GET |  [S0-input] T1 counter value difference for the yesterday (for timespan since [993] to [994])&lt;br /&gt;
  1160..1191|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1192..1223| u32     |  GET |  [S0-input] T0 counter value difference for the today - timespan since [994] (since start of today) to now&lt;br /&gt;
  1192..1223|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1224..1255| u32     |  GET |  [S0-input] T1 counter value difference for the today - timespan since [994] (since start of today) to now&lt;br /&gt;
  1224..1255|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1256..1499|         |  GET |  n/a (reserved)&lt;br /&gt;
  1256..1499|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1500..1531| a       |  GET |  [S0-input] master configuration struct for this input&lt;br /&gt;
  1500..1531| a       |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1532..1999|         |  GET |  n/a (reserved)&lt;br /&gt;
  1532..1999|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2000..2063| u32 (a) |  GET |  [1-W BUS (A)] device status&lt;br /&gt;
  2000..2063|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2100..2163| a       |  GET |  [1-W BUS (A)] master configuration struct for this OneWire device&lt;br /&gt;
  2100..2163|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2200..2263| i32 (a) |  GET |  [1-W BUS (A)] obtained value from device (basic value)&lt;br /&gt;
  2200..2263|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2300..2363| i32 (a) |  GET |  [1-W BUS (A)] obtained value from device (additional value)&lt;br /&gt;
  2300..2363|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2364..2487|         |  GET |  n/a (reserved)&lt;br /&gt;
  2364..2487|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2488..2495| a       |  GET |  (8-Byte) ROM code for a FamilyID OneWire device found with SDS_onewire_search_bus() for bus (A)&lt;br /&gt;
  2488..2495|         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2496      | u32     |  GET |  number of FamilyID OneWire devices found (via last SEARCH scan (SDS_onewire_search_bus)) on bus (A)&lt;br /&gt;
  2496      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2497      | i32     |  GET |  principal result of a last SEARCH scan (SDS_onewire_search_bus) of the OneWire bus (A)&lt;br /&gt;
  2497      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2498      | i32     |  GET |  principal result of a last MASTER rescan of the OneWire bus (A)&lt;br /&gt;
  2498      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2499      | u32     |  GET |  number of OneWire devices found (via MASTER rescan) on bus (A)&lt;br /&gt;
  2499      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2500..2563| u32 (a) |  GET |  [1-W BUS (B)] device status&lt;br /&gt;
  2500..2563|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2600..2663| a       |  GET |  [1-W BUS (B)] master configuration struct for this OneWire device&lt;br /&gt;
  2600..2663|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2700..2763| i32 (a) |  GET |  [1-W BUS (B)] obtained value from device (basic value)&lt;br /&gt;
  2700..2763|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2800..2863| i32 (a) |  GET |  [1-W BUS (B)] obtained value from device (additional value)&lt;br /&gt;
  2800..2863|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2864..2986|         |  GET |  n/a (reserved)&lt;br /&gt;
  2864..2986|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2986..2993| a       |  GET |  (8-Byte) ROM code for a FamilyID OneWire device found with SDS_onewire_search_bus() for bus (B)&lt;br /&gt;
  2986..2993|         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2994      | u32     |  GET |  number of FamilyID OneWire devices found (via last SEARCH scan (SDS_onewire_search_bus)) on bus (B)&lt;br /&gt;
  2994      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2995      | i32     |  GET |  principal result of a last SEARCH scan (SDS_onewire_search_bus) of the OneWire bus (B)&lt;br /&gt;
  2995      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2996      | i32     |  GET |  principal result of a last MASTER rescan of the OneWire bus (B)&lt;br /&gt;
  2996      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2997      | u32     |  GET |  number of OneWire devices found (via MASTER rescan) on bus (B)&lt;br /&gt;
  2997      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2998      | u32     |  GET |  general 1-W Master Chip status: 1 = detecting; 2 or 4 = failure; 8 = working; 16 = disabled by user&lt;br /&gt;
  2998      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2999      | u32     |  GET |  general 1-W Master Chip status: detection-retry countdown (*10msec)&lt;br /&gt;
  2999      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3000      |         |  GET |  n/a (reserved)&lt;br /&gt;
  3000      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3001      | a       |  GET |  custom 24-byte string (readable via SNMP .8.80)&lt;br /&gt;
  3001      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3002      | a       |  GET |  custom 24-byte string (readable via SNMP .8.81)&lt;br /&gt;
  3002      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3003      | a       |  GET |  custom 16-byte string (readable via SNMP .8.82)&lt;br /&gt;
  3003      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3004      | a       |  GET |  custom 16-byte string (readable via SNMP .8.83)&lt;br /&gt;
  3004      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3005      | a       |  GET |  custom 16-byte string (readable via SNMP .8.84)&lt;br /&gt;
  3005      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3006..3799|         |  GET |  n/a (reserved)&lt;br /&gt;
  3006..3799|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3800      | u32     |  GET |  PVD Active - (nonzero:) main power failure detected&lt;br /&gt;
  3800      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3801      | u32     |  GET |  PVD Was Active - this flag is only cleared by reading this index 3801&lt;br /&gt;
  3801      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3802..3849|         |  GET |  n/a (reserved)&lt;br /&gt;
  3802..3849|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3850      | u32     |  GET |  SD Card - fully mounted and useable&lt;br /&gt;
  3850      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3851      | i32     |  GET |  latest file i/o error code&lt;br /&gt;
  3851      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3852      | u32     |  GET |  SD Card - Block Size in bytes (typically 512)&lt;br /&gt;
  3852      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3853      | u32     |  GET |  SD Card - CardType&lt;br /&gt;
  3853      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3854      | u32     |  GET |  SD Card - CID - ProductSN&lt;br /&gt;
  3854      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3855      | u32     |  GET |  statistic counter: SDcard: all init attempts (= successful + failed)&lt;br /&gt;
  3855      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3856      | u32     |  GET |  statistic counter: SDcard: failed init attempts&lt;br /&gt;
  3856      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3857      | u32     |  GET |  SD Card - Total Sector Count in KiB (size of the card)&lt;br /&gt;
  3857      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3858      | u32     |  GET |  statistic counter: SDcard: sector reads&lt;br /&gt;
  3858      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3859      | u32     |  GET |  statistic counter: SDcard: sector writes&lt;br /&gt;
  3859      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3860      | u32     |  GET |  statistic counter: SDcard: sector r/w failures&lt;br /&gt;
  3860      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3861      | u32     |  GET |  statistic counter: number of opened files&lt;br /&gt;
  3861      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3862..3999|         |  GET |  n/a (reserved)&lt;br /&gt;
  3862..3999|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4000..4099| i32     |  GET |  Shared Variables: S00 through S99 - read&lt;br /&gt;
  4000..4099| i32     |  SET |  Shared Variables: S00 through S99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4100..4199| u32     |  GET |  Shared Variables: U00 through U99 - read&lt;br /&gt;
  4100..4199| u32     |  SET |  Shared Variables: U00 through U99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4200..4299| f32     |  GET |  Shared Variables: F00 through F99 - read&lt;br /&gt;
  4200..4299| f32     |  SET |  Shared Variables: F00 through F99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4300..4399| a       |  GET |  Shared Variables: T00 through T99 - read&lt;br /&gt;
  4300..4399| a       |  SET |  Shared Variables: T00 through T99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4400..4989|         |  GET |  n/a (reserved)&lt;br /&gt;
  4400..4989|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4990..4999| u32     |  GET |  read this to get a value of an automatic SECOND DOWN-COUNTER #1..#10 (it does decrease its internal value by 1 for each 1 second, down to 0 where it stays, until restarted by writing)&lt;br /&gt;
  4990..4999| u32     |  SET |  write this to set/start/restart an automatic SECOND DOWN-COUNTER #1..#10&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  5000..5127| u/i/f 32|  GET |  BackUp-RAM (FC version 0x08+) - write&lt;br /&gt;
  5000..5127| u/i/f 32|  SET |  BackUp-RAM (FC version 0x08+) - read&lt;br /&gt;
 -----------+-+-------+------+--&lt;br /&gt;
  5128..11197 |       |  GET |  n/a (reserved)&lt;br /&gt;
  5128..11197 |       |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+-+-------+------+--&lt;br /&gt;
  11198     | u32     |  GET |  mqtt_publish PUBLISH Fixed Header value ( 0b0011dqqr : d=DUP, qq=QOS, r=RETAIN ) &lt;br /&gt;
  11198     | u32     |  SET |  write ( default: 0b00110001 )&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  11199     | u/i 32  |  GET |  FW support for MQTT-c (0 == NOT present)&lt;br /&gt;
  11199     |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12200     | i32     |  GET |  work progress (and result) of mqtt_connect()&lt;br /&gt;
  12200     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12201     | i32     |  GET |  &amp;quot;CONNACK Connect Return&amp;quot; - result of mqtt_connect()&lt;br /&gt;
  12201     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12202     | i32     |  GET |  result of: mqtt_publish(), mqtt_subscribe(), mqtt_unsubscribe_index(), mqtt_unsubscribe_name()&lt;br /&gt;
  12202     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12203     | i32     |  GET |  MQTT protocol error counter (informative)&lt;br /&gt;
  12203     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12204..12208 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12204..12208 |      |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12209     | i32     |  GET |  Subscribe Table - total number of available rows&lt;br /&gt;
  12209     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12210     | a       |  GET |  latest received Topic Name (sent from broker)&lt;br /&gt;
  12210     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12211..12241 | a    |  GET |  Subscribe Table: Topic Name for each table row&lt;br /&gt;
  12211..12241 |      |  SET |  n/a&lt;br /&gt;
 --------------+------+------+--&lt;br /&gt;
  12242..12249 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12242..12249 |      |  SET |  n/a&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12250     | a       |  GET |  latest received Value (sent from broker)&lt;br /&gt;
  12250     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12251..12281 | a    |  GET |  Subscribe Table: actual Value for each table row&lt;br /&gt;
  12251..12281 |      |  SET |  n/a&lt;br /&gt;
 --------------+------+------+--&lt;br /&gt;
  12282..12289 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12282..12289 |      |  SET |  n/a&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12290     | u32     |  GET |  timestamp for the latest received data (Topic) from broker&lt;br /&gt;
  12290     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+--+---+--+--&lt;br /&gt;
  12291..12321 | u32 (a) |  GET |  Subscribe Table: timestamp for the last Value update, for each table row&lt;br /&gt;
  12291..12321 |         |  SET |  n/a&lt;br /&gt;
 --------------+------+--+---+--+--&lt;br /&gt;
  12322..12398 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12322..12398 |      |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12399     | u/i 32  |  GET |  FW support for MODBUS-TCP-c (0 == NOT present)&lt;br /&gt;
  12399     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12400     | i32     |  GET |  work progress (and result) of modbus_tcp_connect()&lt;br /&gt;
  12400     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12401     | i32     |  GET |  progress/result for function 0x01 - modbus_tcp_read(uid, 0x01, ...);&lt;br /&gt;
  12401     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12402     | i32     |  GET |  progress/result for function 0x02 - modbus_tcp_read(uid, 0x02, ...);&lt;br /&gt;
  12402     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12403     | i32     |  GET |  progress/result for function 0x03 - modbus_tcp_read(uid, 0x03, ...);&lt;br /&gt;
  12403     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12404     | i32     |  GET |  progress/result for function 0x04 - modbus_tcp_read(uid, 0x04, ...);&lt;br /&gt;
  12404     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12405     | i32     |  GET |  progress/result for function 0x05 - modbus_tcp_writesingle(uid, 0x05, ...);&lt;br /&gt;
  12405     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12406     | i32     |  GET |  progress/result for function 0x06 - modbus_tcp_writesingle(uid, 0x06, ...);&lt;br /&gt;
  12406     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12407..12414 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12407..12414 |      |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12415     | i32     |  GET |  progress/result for function 0x0F - modbus_tcp_writemultiple(uid, 0x0F, ...);&lt;br /&gt;
  12415     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12416     | i32     |  GET |  progress/result for function 0x10 - modbus_tcp_writemultiple(uid, 0x10, ...);&lt;br /&gt;
  12416     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12417..12462 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12417..12462 |      |  SET |  n/a (reserved) &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12463     | u/i 32  |  GET |  latest Unit Identifier value written to MBAP header (msg TX to server)&lt;br /&gt;
  12463     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12464     | u/i 32  |  GET |  latest Transaction Identifier value written to MBAP header (msg TX to server)&lt;br /&gt;
  12464     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12465     | u/i 32  |  GET |  timestamp of the latest received message&lt;br /&gt;
  12465     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12466     | u/i 32  |  GET |  a count of received items inside the latest received message&lt;br /&gt;
  12466     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12467     | u/i 32  |  GET |  latest received Unit Identifier value (inside incoming MBAP header)&lt;br /&gt;
  12467     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12468     | u/i 32  |  GET |  latest received Transaction Identifier value (inside incoming MBAP header)&lt;br /&gt;
  12468     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12469     | u/i 32  |  GET |  an address of the first coil/input/register item (maps to a value in 12470)&lt;br /&gt;
  12469     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+--+---+--+--&lt;br /&gt;
  12470..12719 | i32 (a) |  GET |  received values (latest received message contents)&lt;br /&gt;
  12470..12719 |         |  SET |  n/a &lt;br /&gt;
 --------------+---------+------+--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Poznámky''' &lt;br /&gt;
&lt;br /&gt;
Položky obsahující: &amp;quot;konfigurační struktura&amp;quot; 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ý &amp;quot;struct&amp;quot; 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í [[FULL-C:_set_and_get:_detailed|příklady]], které přesně popisují postup pro každý typ takové struktury - a vysvětlují tuto poznámku svým kódem.&lt;br /&gt;
&lt;br /&gt;
Indexy označené jako '''(a)''' lze ''blokově číst'' (pozor, označené specificky jako &amp;quot;a v závorce&amp;quot;). Vždy ale lze ''blokové čtení'' (tj. čtení více indexů najednou, za sebou, v rámci povoleného rozsahu) provést pouze od prvního indexu v bloku (ne od dalších v bloku).&lt;br /&gt;
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ává dalším parametrem při volání SDS_get_a() funkce.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Sdílené proměnné je potřeba nejprve definovat, aby je šlo použít, a aby k nim šlo přistupovat přes set/get funkce - viz specifická stránka na této wiki.&lt;br /&gt;
&lt;br /&gt;
Detaily (významy hodnot) pro položky ''MQTT klient'' a ''MODBUS-TCP klient'' jsou rozepsány na příslušných odpovídajících stránkách na této wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Vysvětlení položek'''&lt;br /&gt;
&lt;br /&gt;
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í.&lt;br /&gt;
To naleznete na dalších stránkách v rámci této wiki, nebo se nás rovnou zeptejte (přes forum).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Vstupy pro měření napětí'''&lt;br /&gt;
&lt;br /&gt;
Detaily k A/D vstupům jsou uvedeny [[SDS_2PR:_ADC_vstupy_a_kalibrace|zde]]. Pro psaní programu je důležité mapování '''index'''u na jednotlivé vstupy, viz [[SDS_2PR:_ADC_vstupy_a_kalibrace|tabulka]].&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C_dns_resolv_functions&amp;diff=955</id>
		<title>FULL-C dns resolv functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C_dns_resolv_functions&amp;diff=955"/>
		<updated>2025-08-10T09:55:51Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje programovací jazyk '''FULL-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Některá zařízení používají SDS-C, pro který máme návody jinde na této WiKi.&lt;br /&gt;
&lt;br /&gt;
== Síťové funkce: dotaz na přidělenou IP adresu pro DNS jméno ==&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS umožňuje odeslat dotaz na DNS server, za účelem zjištění IP adresy přidělené k DNS názvu, který je obsahem právě takového dotazu.&lt;br /&gt;
&lt;br /&gt;
Za tímto účelem jsou k dispozici tyto dvě funkce:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void dns_resolv(char *domainNameInput);&lt;br /&gt;
 unsigned int dns_resolv_status(unsigned int *IP0value, unsigned int *IP1value, unsigned int *IP2value, unsigned int *IP3value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Princip ==&lt;br /&gt;
&lt;br /&gt;
SDS odesílá dotaz na DNS server, který je nastaven uživatelem SDS ve webové administraci zařízení (popř. je adresa DNS serveru získána z DHCP serveru, opět záleží na konfiguraci).&lt;br /&gt;
&lt;br /&gt;
Po odeslání dotazu se čeká na odpověď, přičemž FULL-C program pravidelně kontroluje stav voláním '''dns_resolv_status()''' funkce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''POZOR : Maximální délka názvu DNS domény je interně omezena na 96 znaků !'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Příklad ==&lt;br /&gt;
&lt;br /&gt;
V tomto příkladu odesílá SDS dotaz (textový název domény) na DNS server a zobrazuje případnou získanou odpověď (IP adresu).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 char DNSname[96];&lt;br /&gt;
 unsigned int status;&lt;br /&gt;
 unsigned int IP0, IP1, IP2, IP3;&lt;br /&gt;
&lt;br /&gt;
 sprintf((char *)DNSname, &amp;quot;www.google.com&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 printf(&amp;quot;RESOLVING %s \n&amp;quot;, DNSname);&lt;br /&gt;
&lt;br /&gt;
 // start - select the new DNSname for all the subsequent status function calls&lt;br /&gt;
 dns_resolv(DNSname);&lt;br /&gt;
&lt;br /&gt;
 // get the first status value&lt;br /&gt;
 status = dns_resolv_status(&amp;amp;IP0, &amp;amp;IP1, &amp;amp;IP2, &amp;amp;IP3);&lt;br /&gt;
 // only if truly working, keep waiting&lt;br /&gt;
 while (512 == status)&lt;br /&gt;
 {&lt;br /&gt;
   // keep getting a new status, until it is different than 512&lt;br /&gt;
   status = dns_resolv_status(&amp;amp;IP0, &amp;amp;IP1, &amp;amp;IP2, &amp;amp;IP3);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 // check the final status value&lt;br /&gt;
 if (513 == status)&lt;br /&gt;
 {&lt;br /&gt;
   printf(&amp;quot;GOT RESULT: IP = %u.%u.%u.%u\n&amp;quot;, IP0, IP1, IP2, IP3);&lt;br /&gt;
   // only in this case, we can use the IPx address&lt;br /&gt;
   // ... OK&lt;br /&gt;
&lt;br /&gt;
   // we can print the additional internal DNS cache status, for this particular domain&lt;br /&gt;
   // note. the value is valid only if the status is 512, otherwise not&lt;br /&gt;
   unsigned int ttl;&lt;br /&gt;
   ttl = SDS_get_u(70); // index [70] = actual TTL value for the selected DNS cache item &lt;br /&gt;
   printf(&amp;quot;REMAINING DNS-CACHE TTL-VALUE IS %u SECONDS FOR DOMAIN %s\n&amp;quot;, ttl, DNSname);&lt;br /&gt;
 } else&lt;br /&gt;
 {&lt;br /&gt;
   printf(&amp;quot;DNS RESOLV FAILED (error %u) \n&amp;quot;, status);&lt;br /&gt;
   // in this case, the IPx adress is not valid, and you need to repeat the dns_resolv() call again&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interní DNS cache ==&lt;br /&gt;
&lt;br /&gt;
Po úspěšném provedení získání DNS překladu, kdy SDS odešle dotaz na určený DNS server, a získá z něj odpověď, &lt;br /&gt;
je výsledek k dispozici (dá se získat pomocí dns_resolv_status funkce).&lt;br /&gt;
&lt;br /&gt;
Funkce dns_resolv_status() vrací vždy výsledek toho úplně posledního dotazu, který byl vyvolán zavoláním funkce dns_resolv().&lt;br /&gt;
&lt;br /&gt;
Platná odpověď z DNS serveru je uložena do interní tabulky (DNS cache) v SDS. &lt;br /&gt;
&lt;br /&gt;
Pokud je zbývající hodnota TTL větší než 0, bude ihned k dispozici odpověď z interní cache.&lt;br /&gt;
&lt;br /&gt;
Pokud záznam v interní cache není (nebo už vypršel), bude automaticky odeslána žádost o nový překlad na DNS server.&lt;br /&gt;
&lt;br /&gt;
Toto si řídí SDS interně.&lt;br /&gt;
&lt;br /&gt;
Váš program tedy vždy, když potřebuje IP adresu pro jakoukoliv doménu, tak vždy musí nejprve zavolat dns_resolv(). Tím se jednak vybere aktuální doména, pro kterou chcete získat platnou aktuální IP adresu (a lze ji tedy přečíst pomocí dns_resolv_status() funkce), a také se spustí mechanismus kontroly interní cache a eventuálního odeslání nového dotazu.&lt;br /&gt;
&lt;br /&gt;
Nový dotaz není odeslán automaticky, tedy SDS samo neodesílá nové dotazy, když položka v interní DNS cache vyprší. Toto máte plně pod kontrolou vy, a to tak, že voláte funkci dns_resolv(), která se teprve v ten moment (kdy ji ze svého programu zavoláte) rozhodne, jestli bude nový dotaz posílat, nebo ne (čistě dle stavu obsahu interní DNS cache). Pokud v cache není záznam pro danou doménu, nebo je ale už vypršel (TTL na nule), tak dojde k odeslání dotazu, a váš program pak musí čekat na odpověď (viz příklad výše, periodickým voláním dns_resolv_status(), kdy se průběžně zařídí dle vrácené hodnoty od této funkce).&lt;br /&gt;
&lt;br /&gt;
Hodnota na indexu [71] ukazuje, kdy dorazila platná a očekávaná odpověď (paket) z DNS serveru. Pokud nedorazila, je hodnota na 0. Pokud odpověď dorazila (pro daný dotaz, položený posledním voláním funkce dns_resolv), tak je do indexu [71] zapsána časová známka (UTC čas) momentu, kdy byla odpověď přijata (paket ze serveru akceptován). Pomocí sledování indexu [71] můžete nezávisle kontrolovat činnost DNS resolveru v zařízení SDS. Např. při výpadku síťové komunikace (např. odpojení kabelu, porucha sítě atd.), dojde k vypršení položek v interní cache (to lze sledovat pomocí indexu [70]) a pokud nový dotaz nebude zodpovězen (nebude komunikace s DNS serverem), tak se hodnota v [71] ukáže jako nulová. Samozřejmě vždy jsou v těchto indexech k dispozici hodnoty pouze pro ten doménový název, který jste jako poslední použili při zavolání funkce dns_resolv().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Upozornění ==&lt;br /&gt;
&lt;br /&gt;
Starší FW mělo bug, kdy při vypršení TTL v interní cache nedošlo ke smazání položky v interni cache. Toto je samozřejmě problém, který je vyřešen v novém firmware, všechny verze od 08/2025.&lt;br /&gt;
&lt;br /&gt;
DNS cache je (záměrně) vymazána při:&lt;br /&gt;
* nahrání nového FULLC programu&lt;br /&gt;
* restartu zařízení SDS&lt;br /&gt;
&lt;br /&gt;
DNS cache není vymazána při výpadku Ethernetového připojení.&lt;br /&gt;
&lt;br /&gt;
DNS cache lze ručně vymazat zapsáním hodnoty 0xE4A5ECAC do systémové proměnné na indexu [70]. Zápis této speciální hodnoty kompletně smaže interní DNS cache. Tato specifická funkcionalita vyžaduje aktuální firmware (bylo to přidáno až 08/2025).&lt;br /&gt;
&lt;br /&gt;
To, že je DNS cache vymazána, znamená pouze jedinou záležitost - a to, že při novém dotazu přes dns_resolv() dojde ke komunikace s DNS serverem, a bude se čekat na jeho novou, čerstvou odpověď. Ta jak přijde (a bude platná), tak je uložena do cache, po dobu hodnoty TTL (tuto dobu určuje DNS server!). Další volání dns_resolv(), dokud TTL pro danou doménu v interní cache nevyprší, jsou pak vyřízeny okamžitě, protože se nečeká na odpověď ze serveru, ale FULLC program dostane odpověď ihned z interní cache.&lt;br /&gt;
&lt;br /&gt;
GOOD PRACTICE: před každým opakovaným použitím IP adresy, která byla získána z DNS resolveru, je vhodné zavolat dns_resolv() pro danou doménu znovu. Pokud je výsledná adresa (výsledek překladu domény na IP adresu) stejná, je to také okamžitě potvrzeno. Pokud však mezitím došlo ke změně (DNS záznamu), tak se jedině takto dokáže tato změna projevit ! Pokud tedy periodicky voláte např. funkci http_get(), tak vždy před každým tímto voláním, musíte provést i celé kolečko s dns_resolv() pro danou doménu, se kterou takto chcete komunikovat. Pokud to neuděláte, časem se dostanete do obtížného problému, kdy daný cílový server už může být dávno na jiné IP adrese, ale váš program bude stále chodit na starou, neplatnou, a přestane fungovat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stavové hodnoty ==&lt;br /&gt;
&lt;br /&gt;
Program musí použít volání funkce '''dns_resolv_status''' pro zjištění okamžitého stavu. Dokud nezískáte finální stavovou hodnotu, musíte tuto funkci volat opakovaně (nezapomeňte na vlastní bezpečnostní timeout).&lt;br /&gt;
&lt;br /&gt;
  dns_resolv_status()       význam&lt;br /&gt;
 -------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
  0                       |  klid, můžete odeslat DNS dotaz, funkce dns_resolv_status() současně nevrací platnou IP adresu (musíte nejprve spustit DNS překlad)&lt;br /&gt;
  512                     |  pracuje, dotaz odeslán (překlad nenalezen v interní cache), čekejte (funkce současně nevrací platnou IP adresu, ta bude až po dokončení překladu)&lt;br /&gt;
  513                     |  hotovo OK, do *resolvedIPaddressOutput byla zapsána IP adresa (4 bajty), a záznam v interní cache je platný a živý (zbývající TTL větší než 0)&lt;br /&gt;
  514                     |  odpověď nebyla získána (chyba) a současně nemáme záznam v interní DNS cache, takže funkce nevrací platnou IP adresu (musíte znovu začít s dotazem)&lt;br /&gt;
  515                     |  funkce byla zavolána s neplatnými parametry - nic nebylo provedeno, funkce nevrací platnou IP adresu&lt;br /&gt;
  516                     |  dotaz selhal, protože došlo k odpojení Ethernetu&lt;br /&gt;
  517                     |  dotaz selhal, protože došlo ke ztrátě vlastní přidělené IP adresy zařízení SDS (typicky když vyprší IP z DHCP a není ještě obnovena)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pokud funkce dns_resolv_status() vrátila hodnotu 513, je možné číst systémovou proměnnou z indexu [70] (uint32_t), která ukáže hodnotu TTL v momentu, kdy tuto hodnotu právě čtete. Lze takto sledovat, jak se postupně TTL snižuje (o 1 každou sekundu). Hodnota TTL odpovídá dané položce v interní cache, která byla určena právě posledním voláním funkce dns_resolv().&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C_dns_resolv_functions&amp;diff=954</id>
		<title>FULL-C dns resolv functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C_dns_resolv_functions&amp;diff=954"/>
		<updated>2025-08-10T09:52:15Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje programovací jazyk '''FULL-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Některá zařízení používají SDS-C, pro který máme návody jinde na této WiKi.&lt;br /&gt;
&lt;br /&gt;
== Síťové funkce: dotaz na přidělenou IP adresu pro DNS jméno ==&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS umožňuje odeslat dotaz na DNS server, za účelem zjištění IP adresy přidělené k DNS názvu, který je obsahem právě takového dotazu.&lt;br /&gt;
&lt;br /&gt;
Za tímto účelem jsou k dispozici tyto dvě funkce:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void dns_resolv(char *domainNameInput);&lt;br /&gt;
 unsigned int dns_resolv_status(unsigned int *IP0value, unsigned int *IP1value, unsigned int *IP2value, unsigned int *IP3value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Princip ==&lt;br /&gt;
&lt;br /&gt;
SDS odesílá dotaz na DNS server, který je nastaven uživatelem SDS ve webové administraci zařízení (popř. je adresa DNS serveru získána z DHCP serveru, opět záleží na konfiguraci).&lt;br /&gt;
&lt;br /&gt;
Po odeslání dotazu se čeká na odpověď, přičemž FULL-C program pravidelně kontroluje stav voláním '''dns_resolv_status()''' funkce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''POZOR : Maximální délka názvu DNS domény je interně omezena na 96 znaků !'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Příklad ==&lt;br /&gt;
&lt;br /&gt;
V tomto příkladu odesílá SDS dotaz (textový název domény) na DNS server a zobrazuje případnou získanou odpověď (IP adresu).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 char DNSname[96];&lt;br /&gt;
 unsigned int status;&lt;br /&gt;
 unsigned int IP0, IP1, IP2, IP3;&lt;br /&gt;
&lt;br /&gt;
 sprintf((char *)DNSname, &amp;quot;www.google.com&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 printf(&amp;quot;RESOLVING %s \n&amp;quot;, DNSname);&lt;br /&gt;
&lt;br /&gt;
 // start - select the new DNSname for all the subsequent status function calls&lt;br /&gt;
 dns_resolv(DNSname);&lt;br /&gt;
&lt;br /&gt;
 // get the first status value&lt;br /&gt;
 status = dns_resolv_status(&amp;amp;IP0, &amp;amp;IP1, &amp;amp;IP2, &amp;amp;IP3);&lt;br /&gt;
 // only if truly working, keep waiting&lt;br /&gt;
 while (512 == status)&lt;br /&gt;
 {&lt;br /&gt;
   // keep getting a new status, until it is different than 512&lt;br /&gt;
   status = dns_resolv_status(&amp;amp;IP0, &amp;amp;IP1, &amp;amp;IP2, &amp;amp;IP3);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 // check the final status value&lt;br /&gt;
 if (513 == status)&lt;br /&gt;
 {&lt;br /&gt;
   printf(&amp;quot;GOT RESULT: IP = %u.%u.%u.%u\n&amp;quot;, IP0, IP1, IP2, IP3);&lt;br /&gt;
   // only in this case, we can use the IPx address&lt;br /&gt;
   // ... OK&lt;br /&gt;
&lt;br /&gt;
   // we can print the additional internal DNS cache status, for this particular domain&lt;br /&gt;
   // note. the value is valid only if the status is 512, otherwise not&lt;br /&gt;
   unsigned int ttl;&lt;br /&gt;
   ttl = SDS_get_u(70); // index [70] = actual TTL value for the selected DNS cache item &lt;br /&gt;
   printf(&amp;quot;DNS CACHE TTL VALUE IS %u SECONDS FOR DOMAIN %s\n&amp;quot;, ttl, DNSname);&lt;br /&gt;
 } else&lt;br /&gt;
 {&lt;br /&gt;
   printf(&amp;quot;DNS RESOLV FAILED (error %u) \n&amp;quot;, status);&lt;br /&gt;
   // in this case, the IPx adress is not valid, and you need to repeat the dns_resolv() call again&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interní DNS cache ==&lt;br /&gt;
&lt;br /&gt;
Po úspěšném provedení získání DNS překladu, kdy SDS odešle dotaz na určený DNS server, a získá z něj odpověď, &lt;br /&gt;
je výsledek k dispozici (dá se získat pomocí dns_resolv_status funkce).&lt;br /&gt;
&lt;br /&gt;
Funkce dns_resolv_status() vrací vždy výsledek toho úplně posledního dotazu, který byl vyvolán zavoláním funkce dns_resolv().&lt;br /&gt;
&lt;br /&gt;
Platná odpověď z DNS serveru je uložena do interní tabulky (DNS cache) v SDS. &lt;br /&gt;
&lt;br /&gt;
Pokud je zbývající hodnota TTL větší než 0, bude ihned k dispozici odpověď z interní cache.&lt;br /&gt;
&lt;br /&gt;
Pokud záznam v interní cache není (nebo už vypršel), bude automaticky odeslána žádost o nový překlad na DNS server.&lt;br /&gt;
&lt;br /&gt;
Toto si řídí SDS interně.&lt;br /&gt;
&lt;br /&gt;
Váš program tedy vždy, když potřebuje IP adresu pro jakoukoliv doménu, tak vždy musí nejprve zavolat dns_resolv(). Tím se jednak vybere aktuální doména, pro kterou chcete získat platnou aktuální IP adresu (a lze ji tedy přečíst pomocí dns_resolv_status() funkce), a také se spustí mechanismus kontroly interní cache a eventuálního odeslání nového dotazu.&lt;br /&gt;
&lt;br /&gt;
Nový dotaz není odeslán automaticky, tedy SDS samo neodesílá nové dotazy, když položka v interní DNS cache vyprší. Toto máte plně pod kontrolou vy, a to tak, že voláte funkci dns_resolv(), která se teprve v ten moment (kdy ji ze svého programu zavoláte) rozhodne, jestli bude nový dotaz posílat, nebo ne (čistě dle stavu obsahu interní DNS cache). Pokud v cache není záznam pro danou doménu, nebo je ale už vypršel (TTL na nule), tak dojde k odeslání dotazu, a váš program pak musí čekat na odpověď (viz příklad výše, periodickým voláním dns_resolv_status(), kdy se průběžně zařídí dle vrácené hodnoty od této funkce).&lt;br /&gt;
&lt;br /&gt;
Hodnota na indexu [71] ukazuje, kdy dorazila platná a očekávaná odpověď (paket) z DNS serveru. Pokud nedorazila, je hodnota na 0. Pokud odpověď dorazila (pro daný dotaz, položený posledním voláním funkce dns_resolv), tak je do indexu [71] zapsána časová známka (UTC čas) momentu, kdy byla odpověď přijata (paket ze serveru akceptován). Pomocí sledování indexu [71] můžete nezávisle kontrolovat činnost DNS resolveru v zařízení SDS. Např. při výpadku síťové komunikace (např. odpojení kabelu, porucha sítě atd.), dojde k vypršení položek v interní cache (to lze sledovat pomocí indexu [70]) a pokud nový dotaz nebude zodpovězen (nebude komunikace s DNS serverem), tak se hodnota v [71] ukáže jako nulová. Samozřejmě vždy jsou v těchto indexech k dispozici hodnoty pouze pro ten doménový název, který jste jako poslední použili při zavolání funkce dns_resolv().&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Upozornění ==&lt;br /&gt;
&lt;br /&gt;
Starší FW mělo bug, kdy při vypršení TTL v interní cache nedošlo ke smazání položky v interni cache. Toto je samozřejmě problém, který je vyřešen v novém firmware, všechny verze od 08/2025.&lt;br /&gt;
&lt;br /&gt;
DNS cache je (záměrně) vymazána při:&lt;br /&gt;
* nahrání nového FULLC programu&lt;br /&gt;
* restartu zařízení SDS&lt;br /&gt;
&lt;br /&gt;
DNS cache není vymazána při výpadku Ethernetového připojení.&lt;br /&gt;
&lt;br /&gt;
DNS cache lze ručně vymazat zapsáním hodnoty 0xE4A5ECAC do systémové proměnné na indexu [70]. Zápis této speciální hodnoty kompletně smaže interní DNS cache. Tato specifická funkcionalita vyžaduje aktuální firmware (bylo to přidáno až 08/2025).&lt;br /&gt;
&lt;br /&gt;
To, že je DNS cache vymazána, znamená pouze jedinou záležitost - a to, že při novém dotazu přes dns_resolv() dojde ke komunikace s DNS serverem, a bude se čekat na jeho novou, čerstvou odpověď. Ta jak přijde (a bude platná), tak je uložena do cache, po dobu hodnoty TTL (tuto dobu určuje DNS server!). Další volání dns_resolv(), dokud TTL pro danou doménu v interní cache nevyprší, jsou pak vyřízeny okamžitě, protože se nečeká na odpověď ze serveru, ale FULLC program dostane odpověď ihned z interní cache.&lt;br /&gt;
&lt;br /&gt;
GOOD PRACTICE: před každým opakovaným použitím IP adresy, která byla získána z DNS resolveru, je vhodné zavolat dns_resolv() pro danou doménu znovu. Pokud je výsledná adresa (výsledek překladu domény na IP adresu) stejná, je to také okamžitě potvrzeno. Pokud však mezitím došlo ke změně (DNS záznamu), tak se jedině takto dokáže tato změna projevit ! Pokud tedy periodicky voláte např. funkci http_get(), tak vždy před každým tímto voláním, musíte provést i celé kolečko s dns_resolv() pro danou doménu, se kterou takto chcete komunikovat. Pokud to neuděláte, časem se dostanete do obtížného problému, kdy daný cílový server už může být dávno na jiné IP adrese, ale váš program bude stále chodit na starou, neplatnou, a přestane fungovat.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stavové hodnoty ==&lt;br /&gt;
&lt;br /&gt;
Program musí použít volání funkce '''dns_resolv_status''' pro zjištění okamžitého stavu. Dokud nezískáte finální stavovou hodnotu, musíte tuto funkci volat opakovaně (nezapomeňte na vlastní bezpečnostní timeout).&lt;br /&gt;
&lt;br /&gt;
  dns_resolv_status()       význam&lt;br /&gt;
 -------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
  0                       |  klid, můžete odeslat DNS dotaz, funkce dns_resolv_status() současně nevrací platnou IP adresu (musíte nejprve spustit DNS překlad)&lt;br /&gt;
  512                     |  pracuje, dotaz odeslán (překlad nenalezen v interní cache), čekejte (funkce současně nevrací platnou IP adresu, ta bude až po dokončení překladu)&lt;br /&gt;
  513                     |  hotovo OK, do *resolvedIPaddressOutput byla zapsána IP adresa (4 bajty), a záznam v interní cache je platný a živý (zbývající TTL větší než 0)&lt;br /&gt;
  514                     |  odpověď nebyla získána (chyba) a současně nemáme záznam v interní DNS cache, takže funkce nevrací platnou IP adresu (musíte znovu začít s dotazem)&lt;br /&gt;
  515                     |  funkce byla zavolána s neplatnými parametry - nic nebylo provedeno, funkce nevrací platnou IP adresu&lt;br /&gt;
  516                     |  dotaz selhal, protože došlo k odpojení Ethernetu&lt;br /&gt;
  517                     |  dotaz selhal, protože došlo ke ztrátě vlastní přidělené IP adresy zařízení SDS (typicky když vyprší IP z DHCP a není ještě obnovena)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pokud funkce dns_resolv_status() vrátila hodnotu 513, je možné číst systémovou proměnnou z indexu [70] (uint32_t), která ukáže hodnotu TTL v momentu, kdy tuto hodnotu právě čtete. Lze takto sledovat, jak se postupně TTL snižuje (o 1 každou sekundu). Hodnota TTL odpovídá dané položce v interní cache, která byla určena právě posledním voláním funkce dns_resolv().&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_set_and_get&amp;diff=953</id>
		<title>FULL-C: set and get</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_set_and_get&amp;diff=953"/>
		<updated>2025-08-10T09:39:15Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje programovací jazyk '''FULL-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Některá zařízení používají SDS-C, pro který máme návody jinde na této WiKi.&lt;br /&gt;
&lt;br /&gt;
== Jak je FULL-C program připojen k hardware ==&lt;br /&gt;
&lt;br /&gt;
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é).&lt;br /&gt;
&lt;br /&gt;
Za tímto účelem je k dispozici sada C funkcí, které může program volat a které buď navrátí aktuální stav (&amp;quot;get&amp;quot; funkce), nebo stav změní (&amp;quot;set&amp;quot; funkce).&lt;br /&gt;
&lt;br /&gt;
Zde je seznam těchto funkcí:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void SDS_set_i32(unsigned int index, signed int value);&lt;br /&gt;
   signed int SDS_get_i32(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_i64(unsigned int index, int64_t value);&lt;br /&gt;
   signed int SDS_get_i64(unsigned int index);&lt;br /&gt;
  &lt;br /&gt;
         void SDS_set_u32(unsigned int index, unsigned int value);&lt;br /&gt;
 unsigned int SDS_get_u32(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_u64(unsigned int index, uint64_t value);&lt;br /&gt;
 unsigned int SDS_get_u64(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_f32(unsigned int index, float value);&lt;br /&gt;
        float SDS_get_f32(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_a(unsigned int index, void *ptr, unsigned int len);&lt;br /&gt;
         void SDS_get_a(unsigned int index, void *ptr, unsigned int maxlen);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Historicky zde původně byly i tyto funkce:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void SDS_set_i(unsigned int index, signed int value);&lt;br /&gt;
   signed int SDS_get_i(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_u(unsigned int index, unsigned int value);&lt;br /&gt;
 unsigned int SDS_get_u(unsigned int index);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ty &amp;quot;nezmizely&amp;quot; jen byly '''přejmenovány''' (i na i32, u na u32). &lt;br /&gt;
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ý.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Detailní Příklady ===&lt;br /&gt;
&lt;br /&gt;
Přečtěte si nejprve celou tuto stránku, ať pochopíte princip. Následně se podívejte na [[FULL-C:_set_and_get:_detailed|jednotlivé příklady zde]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Princip ==&lt;br /&gt;
&lt;br /&gt;
Základem je použití přístupu k informacím prostřednictvím tzv. '''index'''u.&lt;br /&gt;
&lt;br /&gt;
Pod každou položkou (číselným '''index'''em) je schována odpovídající činnost nebo hodnota (např. '''index = 3''' vrátí přes &amp;quot;get&amp;quot; funkci aktuální hodnotu &amp;quot;UpTime&amp;quot;, viz tabulka).&lt;br /&gt;
&lt;br /&gt;
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 funkci):&lt;br /&gt;
&lt;br /&gt;
  typ položky              | rozsah         | typ proměnné    | postfix set\get funkce&lt;br /&gt;
 --------------------------+----------------+-----------------+-------------------------&lt;br /&gt;
   signed 32-bit integer   |  -2^31..+2^31  |  int            |  _i32&lt;br /&gt;
   signed 64-bit integer   |  -2^63..+2^63  |  int64_t        |  _i32&lt;br /&gt;
   unsigned 32-bit integer |      0..+2^32  |  unsigned int   |  _u64&lt;br /&gt;
   unsigned 64-bit integer |      0..+2^64  |  uint64_t       |  _u64&lt;br /&gt;
   IP address              |  uchar[4]      |  unsigned int   |  _u32&lt;br /&gt;
   float                   |  IEEE-754      |  float          |  _f32&lt;br /&gt;
   string (text)           |  len\maxlen    |  void* \ char*  |  _a&lt;br /&gt;
   binary array            |  len\maxlen    |  void* \ char*  |  _a&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, bude při psaní programu potřeba správně vybrat postfix u dané funkce.&lt;br /&gt;
&lt;br /&gt;
Příklad: chceme zapsat desetinné číslo &amp;quot;numf&amp;quot;, v tom případě se jedná o typ &amp;quot;float numf;&amp;quot; a musíme použít ''SDS_set_f(index, numf);''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Funkce _u32 \ _i32 \ _f32 ==&lt;br /&gt;
&lt;br /&gt;
Základní funkce určené pro získání číselné hodnoty &amp;quot;z&amp;quot; SDS, popř. zápisu číselné hodnoty &amp;quot;do&amp;quot; SDS. Vždy se jedná o kombinaci ''index''u (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).&lt;br /&gt;
&lt;br /&gt;
Č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é).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
První příklad: ''čtení'' 32bitové hodnoty bez znaménka&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
unsigned int NTPtime;&lt;br /&gt;
NTPtime = SDS_get_u32(4);&lt;br /&gt;
printf(&amp;quot;Aktuální Epoch Time je %u (secs).\n&amp;quot;, NTPtime);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Druhý příklad: ''čtení'' 32bitové hodnoty se znaménkem&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int NTPoffset;&lt;br /&gt;
NTPoffset = SDS_get_i32(26);&lt;br /&gt;
printf(&amp;quot;Offset pro NTP čas je: %d hod.\n&amp;quot;, NTPoffset);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Třetí příklad: ''čtení'' float hodnoty&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
float AD_Rinput__in_user_units;&lt;br /&gt;
AD_Rinput__in_user_units = SDS_get_f32(311);&lt;br /&gt;
printf(&amp;quot;Resistance Measure Input value is: %0.3f \n&amp;quot;, AD_Rinput__in_user_units);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Čtvrtý příklad: ''zápis'' 32bitové hodnoty bez znaménka&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// zapni RELE 1 (zápisem nenulové hodnoty na index [231], viz tabulka)&lt;br /&gt;
SDS_set_u32(231, 0xFF); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Funkce _u64 \ _i64 ==&lt;br /&gt;
&lt;br /&gt;
Princip je identický jako pro _u32 a _i32 funkce. &lt;br /&gt;
&lt;br /&gt;
Vždy se podívejte do tabulky, jaké informace můžete v 64bitové formě dostat; většina jich je pouze ve 32bit formě.&lt;br /&gt;
To ale nevadí, protože přeci například není problém do proměnné typu uint64_t zapsat 32bitové číslo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Funkce _a ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
První příklad: čtení textového parametru&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// definujeme si pole o velikosti 32 bajtů; tzn. sem se vleze až 31 znaků plus jeden ukončovací 0x00&lt;br /&gt;
char sysLoc[32];&lt;br /&gt;
&lt;br /&gt;
// SDS uloží text z indexu [2] do pole &amp;quot;sysLoc&amp;quot;, o maximální velikosti 32 bajtů&lt;br /&gt;
SDS_get_a(2, (void *)sysLoc, 32);&lt;br /&gt;
&lt;br /&gt;
// a můžeme se podívat na výsledek (výpis do konzole)&lt;br /&gt;
printf(&amp;quot;Nastavená system location: %s \n&amp;quot;, sysLoc);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Druhý příklad: čtení pole údajů - '''pouze''' položky z indexu označeného (a) v tabulce indexů&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// definujeme si pole o 8 položkách, které obsahuje prvky typu &amp;quot;unsigned int&amp;quot; (každý tento prvek má velikost: 4 bajty)&lt;br /&gt;
unsigned int OPTOvalues[8];&lt;br /&gt;
 &lt;br /&gt;
// SDS zapíše 8 pozic od indexu [151] do pole OPTOvalues&lt;br /&gt;
// maximální velikost zápisu = 8*4 , tzn. 8 položek v poli OPTOvalues, každá o 4 bajtech&lt;br /&gt;
SDS_get_a(151, (void *)OPTOvalues, 8 * 4);&lt;br /&gt;
&lt;br /&gt;
// a muzeme pristupovat na jednotlive polozky (jejich obsah je platny vuci okamziku zavolani GET funkce)&lt;br /&gt;
if (0 == OPTOvalues[0]) ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Pro tyto přístupy je potřeba uvést, že blokové čtení funguje jen vždy od prvního indexu pro daný blok indexů.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na zcela stejném přístupu funguje '''SDS_set_a()''' funkce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úplné detaily a všechny příklady ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'''Detailní přehled, doplněný o příklady ve FULL-C, naleznete zde: [[FULL-C: set and get: detailed]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tabulka ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Je li také uveden klíč &amp;quot;(a)&amp;quot;, 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.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 -----------+---------+------+--------------------------------------------------------------------------------------------------------&lt;br /&gt;
   index    | i\u\f\a |  dir |  comment&lt;br /&gt;
 -----------+---------+------+--------------------------------------------------------------------------------------------------------&lt;br /&gt;
   0        | u32     |  GET |  firmware PAIRCODE (SDS device master-type identification)&lt;br /&gt;
   0        |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   1        | u32     |  GET |  count of actually logged-in users (logged-in to SDS web admin)&lt;br /&gt;
   1        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   2        | u32     |  GET |  unique ID for SDS (serial number assigned during manufacturing)&lt;br /&gt;
   2        | a       |  GET |  sysLocation (user configured text)&lt;br /&gt;
   2        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   3        | u32     |  GET |  uptime (increased by 1 each every 10msec) (example: 100 = 1 sec)&lt;br /&gt;
   3        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   4        | u32     |  GET |  LOCAL time (NTP UTC Epoch, with GMT-offset and DST-offset applied), value in seconds&lt;br /&gt;
   4        |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   5        | u32     |  GET |  LOCAL time decomposition = value of DAY (1 through 31)&lt;br /&gt;
   5        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   6        | u32     |  GET |  LOCAL time decomposition = value of MONTH (1 through 12)&lt;br /&gt;
   6        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   7        | u32     |  GET |  LOCAL time decomposition = value of YEAR (full value)&lt;br /&gt;
   7        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   8        | u32     |  GET |  LOCAL time decomposition = value of HOUR (0 through 23)&lt;br /&gt;
   8        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   9        | u32     |  GET |  LOCAL time decomposition = value of MINUTE (0 through 59)&lt;br /&gt;
   9        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   10       | u32     |  GET |  LOCAL time decomposition = value of SECOND (0 through 59)&lt;br /&gt;
   10       |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   11       | u32     |  GET |  LOCAL time decomposition = day-of-week number = number of days since Sunday (0 to 6)&lt;br /&gt;
   11       |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   12       | u32     |  GET |  SDS device IP address (web admin IP)&lt;br /&gt;
   12       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   13..15   |         |  GET |  n/a (reserved)&lt;br /&gt;
   13..15   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   16       | u32     |  GET |  network gateway IP address&lt;br /&gt;
   16       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   17..19   |         |  GET |  n/a (reserved)&lt;br /&gt;
   17..19   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   20       | u32     |  GET |  network IP MASK&lt;br /&gt;
   20       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   21       | a       |  GET |  SNMPv3 - EngineID (FC: prepare buffer for 32 chars + trailing zero)&lt;br /&gt;
   21       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   22       | u32     |  GET |  SNMPv3 - Engine Boots &lt;br /&gt;
   22       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   23       | u32     |  GET |  SNMPv3 - Engine Time &lt;br /&gt;
   23       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   24       | u32     |  GET |  Ethernet Link Status&lt;br /&gt;
   24       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   25       | u32     |  GET |  Ethernet Link Speed (0, 10 or 100)&lt;br /&gt;
   25       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   26       | i32     |  GET |  read NTP GMT offset (-11 .. 11) = offset, in hour(s), between UTC and LOCAL time&lt;br /&gt;
   26       | i32     |  SET |  set NTP GMT offset (warning: this is not stored to permanent memory - use web admin to store it permanently)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   27       | u32     |  GET |  validity of the assigned IP address (0 = SDS does not have any IP address assigned, at the moment)&lt;br /&gt;
   27       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   28       | u32     |  GET |  timestamp of last change (assignment) of IP address &lt;br /&gt;
   28       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   29       | u32     |  GET |  state of DHCP client (0 = disabled, OR: enabled = status value of 1 .. 11)&lt;br /&gt;
   29       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   30       | u32     |  GET |  DHCP lease time (secs) value&lt;br /&gt;
   30       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   31       | u32     |  GET |  MAC[0] (always use only the lowest 8 bits, for each item)&lt;br /&gt;
   31       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   32       | u32     |  GET |  MAC[1]&lt;br /&gt;
   32       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   33       | u32     |  GET |  MAC[2]&lt;br /&gt;
   33       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   34       | u32     |  GET |  MAC[3]&lt;br /&gt;
   34       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   35       | u32     |  GET |  MAC[4]&lt;br /&gt;
   35       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   36       | u32     |  GET |  MAC[5]&lt;br /&gt;
   36       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   37..39   |         |  GET |  n/a (reserved)&lt;br /&gt;
   37..39   |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   40       | u32     |  GET |  SoC power-up or reset reason (64/128 = read only LSB: 8 bits) (512 = read all 32 bits)&lt;br /&gt;
   40       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   41       | a       |  GET |  OEM branding (login web page) [32 chars]&lt;br /&gt;
   41       | a       |  SET |  set custom OEM branding (login web page) [32 chars]&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   42       | a       |  GET |  OEM branding (welcome web page) [128 chars]&lt;br /&gt;
   42       | a       |  SET |  set custom OEM branding (welcome web page) [128 chars]&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   43       | u32     |  GET |  NTP-server IP address&lt;br /&gt;
   43       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   44       | u32     |  GET |  NTP-client status (0 = NOT synchronized)&lt;br /&gt;
   44       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   45       | u32     |  GET |  UpTime value - units: msec (uptime is constantly counted since then latest SDS FW boot)&lt;br /&gt;
   45       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   46       | u32     |  GET |  temperature of SoC - the RAW value (you have to manually recalculate this raw value to get degC)&lt;br /&gt;
   46       | i32     |  GET |  temperature of SoC - already recalculated to degC (SDS does have, and uses, all the required calibration info)&lt;br /&gt;
   46       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   48..60   |         |  GET |  n/a (reserved)&lt;br /&gt;
   48..60   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   61       | u32     |  GET |  read this to get a 32-bit Random Number (HW RNG)&lt;br /&gt;
   61       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   62..63   |         |  GET |  n/a (reserved)&lt;br /&gt;
   62..63   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   64       | u32     |  GET |  read this to get a value of an automatic SECOND DOWN-COUNTER #0 (it does decrease its internal value by 1 for each 1 second, down to 0 where it stays, until restarted by writing)&lt;br /&gt;
   64       | u32     |  SET |  write this to set/start/restart an automatic SECOND DOWN-COUNTER #0&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   65       | u32     |  GET |  get state of the DST automatic (0 = not used) (1 = DST used and DST shift is applied) (2 = DST used but NO shift applied)&lt;br /&gt;
   65       | u32     |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   66       | u32     |  GET |  DNS-server IP address&lt;br /&gt;
   66       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   67       | u32     |  GET |  info about SDS device IP address origin (0=none, 1=manual, 2=dhcp)&lt;br /&gt;
   67       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   68       | u32     |  GET |  info about DNS server IP address origin (0=none, 1=manual, 2=dhcp)&lt;br /&gt;
   68       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   69       |         |  GET |  n/a (reserved) &lt;br /&gt;
   69       |         |  SET |  n/a (reserved) &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   70       | u32     |  GET |  DNS RESOLV - actual TTL live value (= 1..MAX, in seconds) for the very last resolved DNS name (or 0 = no resolv done or finished yet)&lt;br /&gt;
   70       | u32     |  SET |  write 0xE4A5ECAC to manually clear the WHOLE internal DNS cache (will force fresh DNS requests once dns_resolv() is again called by your program)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   71       | u32     |  GET |  DNS RESOLV - timestamp (UTC) of the latest DNS server response (packet) as requested by dns_resolv() function (if 0 then no response received, or cache has expired)&lt;br /&gt;
   71       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   72..77   |         |  GET |  n/a (reserved) &lt;br /&gt;
   72..77   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   78       | u32     |  GET |  SDS HW availability detail (information): 0 = single PWM output / 4 = four PWM outputs&lt;br /&gt;
   78       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   79       | u32     |  GET |  SDS HW sub-type (information): 1 = variant &amp;quot;DP&amp;quot; (newer HW version) / 0 = basic BIG (no DP)&lt;br /&gt;
   79       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   80       | u32     |  GET |  SDS HW sub-type (information): 1 = variant &amp;quot;DS84&amp;quot; / 0 = no DS84&lt;br /&gt;
   80       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   81..84   |         |  GET |  n/a (reserved) &lt;br /&gt;
   81..84   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   85       | u32     |  GET |  SDS module type (BIG, BIG2 or STSW) discrimination:  0 = STSW or SMALL / 1 = BIG / 2 = BIG2&lt;br /&gt;
   85       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   86       | u32     |  GET |  FC: actual state (running, uploading, failed etc.) of the FULL-C program (0, 1, 2, 4, 8, 16, 32, 64)&lt;br /&gt;
   86       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   87       | u32     |  GET |  FC: unique identifier of the actually uploaded FULL-C program&lt;br /&gt;
   87       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   88       |         |  GET |  n/a (reserved) &lt;br /&gt;
   88       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   89       | u32     |  GET |  SDS IP-WatchDog: state (0 = OFF)&lt;br /&gt;
   89       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   90       | u32     |  GET |  SDS IP-WatchDog: last known RTT (msecs)&lt;br /&gt;
   90       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   91       | u32     |  GET |  SDS IP-WatchDog: logical output status&lt;br /&gt;
   91       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   92..131  |         |  GET |  n/a (reserved)&lt;br /&gt;
   92..131  |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   132      | u32     |  GET |  FC: UTC time value, of the last FC-WDG restart of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
   132      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   133      | u32     |  GET |  FC: UpTime value, of the last FC-WDG restart of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
   133      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   134      | a       |  GET |  FC: archived text of the last FC error&lt;br /&gt;
   134      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   135      | u32     |  GET |  FC: number of FC-WDF restarts of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
   135      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   136      | u32     |  GET |  FC: total count of all FC program starts, since the SDS boot&lt;br /&gt;
   136      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   137      | u32     |  GET |  read an actual SDS CPU cycle counter (number of executed instructions since power-up/reboot), continuously wraps around, (1 step = approx. 2 nsec)&lt;br /&gt;
   137      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   138      | u32     |  GET |  get SDS internal RTC power-on status (0 = invalid data after powerup in RTC) (1 = RTC data OK and were used on powerup) &lt;br /&gt;
   138      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   139      | u32     |  GET |  NTP true actual raw epoch-time (secs since Linux Epoch) = clean UTC with *no* GMT nor DST offset applied&lt;br /&gt;
   139      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   140      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:401)&lt;br /&gt;
   140      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:401)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   141      | a       |  GET |  FC: custom TRAP variable - read (TRAP:402)&lt;br /&gt;
   141      | a       |  SET |  FC: custom TRAP variable - write to change (TRAP:402) (note. max 32 characters)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   142      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:403)&lt;br /&gt;
   142      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:403)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   143      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:404)&lt;br /&gt;
   143      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:404)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   144      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:405)&lt;br /&gt;
   144      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:405)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   145      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:406)&lt;br /&gt;
   145      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:406)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   146      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:407)&lt;br /&gt;
   146      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:407)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   147      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:408)&lt;br /&gt;
   147      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:408)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   148      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:409)&lt;br /&gt;
   148      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:409)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   149      |         |  GET |  n/a (reserved)&lt;br /&gt;
   149      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   150      |         |  GET |  FC: shared-variables access control - read state of the access control&lt;br /&gt;
   150      |         |  SET |  FC: shared-variables access control - use this to force a user-login in order to access the shared variables (0 = access without login is enabled)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   151..182 | u32 (a) |  GET |  OPTO1..OPTO32 status (warning: 0 = input ACTIVE = with signal) (non-zero = input not active = no signal)&lt;br /&gt;
   151..182 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   183      | u32     |  GET |  SDS FW date stamp (or just 0x00000000 for a very old firmware) - use this to verify the features or to ask user to update the firmware to a required newer version&lt;br /&gt;
   183      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   184      | u32     |  GET |  FC: information about how this actual running program was started (0 = none) (1 = normal) (2 = fc-wdg or manual restart) (4 = freshly loaded)&lt;br /&gt;
   184      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   185      | u32     |  GET |  FC: actual FULL-C WatchDog (decreasing) timeout counter value, v msec&lt;br /&gt;
   185      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   186      | u32     |  GET |  (common) frequency for PWM3 and PWM4 generator (1Hz .. 5MHz)&lt;br /&gt;
   186      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   187      | u32     |  GET |  PWM3 duty-cycle percent (0..100 [%])&lt;br /&gt;
   187      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   188      | u32     |  GET |  PWM3 HW: direct &amp;quot;pulse&amp;quot; register value&lt;br /&gt;
   188      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   189      | u32     |  GET |  PWM4 duty-cycle percent (0..100 [%])&lt;br /&gt;
   189      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   190      | u32     |  GET |  PWM4 HW: direct &amp;quot;pulse&amp;quot; register value&lt;br /&gt;
   190      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   191      | u32     |  GET |  (common) frequency for PWM1 and PWM2 generator (1Hz .. 5MHz)&lt;br /&gt;
   191      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   192      | u32     |  GET |  PWM1 duty-cycle percent (0..100 [%])&lt;br /&gt;
   192      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   193      | u32     |  GET |  PWM1 HW: read direct &amp;quot;pulse&amp;quot; (compare) register value&lt;br /&gt;
   193      | u32     |  SET |  PWM1 HW: write to direct &amp;quot;pulse&amp;quot; (compare) register value &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   194      | u32     |  GET |  reserved&lt;br /&gt;
   194      |         |  SET |  N/A&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   195      | u32     |  GET |  reserved&lt;br /&gt;
   195      |         |  SET |  N/A&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   196..228 | u32 (a) |  GET |  RELAY1..RELAY32 - &amp;quot;who&amp;quot; controls this output&lt;br /&gt;
   196..228 | u32     |  SET |  RELAY1..RELAY32 - (0 = manual = user via web) (2 = FULL-C) (4 = SDS IPwdg)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   229..230 |         |  GET |  n/a (reserved)&lt;br /&gt;
   229..230 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   231..262 | u32 (a) |  GET |  RELAY1..RELAY32 - output status (0 = off)&lt;br /&gt;
   231..262 | u32     |  SET |  RELAY1..RELAY32 - output status control (0 = off) (!0 = coil activated)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   263..265 |         |  GET |  n/a (reserved)&lt;br /&gt;
   263..265 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   266..297 | a       |  GET |  RELAY1..RELAY32 - identification/name (text, see webadmin)&lt;br /&gt;
   266..297 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   298..300 |         |  GET |  n/a (reserved)&lt;br /&gt;
   298..300 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   301      | u32     |  GET |  status (log0/log1) of GPIO-TOPBOARD pin&lt;br /&gt;
   301      | u32     |  SET |  control the GPIO-TOPBOARD pin value (if direction is set to output)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   302      | u32     |  GET |  direction (in/out) of GPIO-TOPBOARD pin&lt;br /&gt;
   302      | u32     |  SET |  control the GPIO-TOPBOARD pin direction (input or output)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   303..310 |         |  GET |  n/a (reserved)&lt;br /&gt;
   303..310 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   311..342 | f32 (a) |  GET |  AD: recalculated value (float) of A/D input&lt;br /&gt;
   311..342 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   343..374 | a       |  GET |  AD: input identification / name (text)&lt;br /&gt;
   343..374 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   375..406 | a       |  GET |  AD: input unit name (text)&lt;br /&gt;
   375..406 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   407..427 |         |  GET |  n/a (reserved)&lt;br /&gt;
   407..427 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   428      | u32     |  GET |  AD: user-selected type of the OpAmp chip (HW SDS) (0 = AD) (9 = LMV) &lt;br /&gt;
   428      |         |  SET |  n/a (read-only) (configuration to be done via web admin) - note. this must match the HW&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   429      | u32     |  GET |  AD: raw value of Vbatt (raw ADC value). To convert use: Vbatt = (raw * 3.3)/2048 (result in Volts)&lt;br /&gt;
   429      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   430      | u32     |  GET |  AD: value of VrefInt in miliVolts (typical value: 3300)&lt;br /&gt;
   430      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   431..438 | u32 (a) |  GET |  AD: raw value of A/D input in 12bits (0..4095) - for all SDS variants (64, 128 and 512)&lt;br /&gt;
   431..438 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   439..446 | u32 (a) |  GET |  AD: raw value of A/D input in 16bits (0..65535) - available only for the 512 SDS variant&lt;br /&gt;
   439..446 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   447..462 |         |  GET |  n/a (reserved)&lt;br /&gt;
   447..462 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   463..469 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [0]&lt;br /&gt;
   463..469 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   470..476 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [1]&lt;br /&gt;
   470..476 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   477..483 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [2]&lt;br /&gt;
   477..483 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   484..490 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [3]&lt;br /&gt;
   484..490 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   491..497 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [4]&lt;br /&gt;
   491..497 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   498..504 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [5]&lt;br /&gt;
   498..504 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   505..511 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [6]&lt;br /&gt;
   505..511 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   512..518 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [7]&lt;br /&gt;
   512..518 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   519..991 |         |  GET |  n/a (reserved)&lt;br /&gt;
   519..991 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   992      | u32     |  GET |  UTC timestamp (localtime) of the moment, when local clock gets to 23:59:59 (= last second of this day)&lt;br /&gt;
   992      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   993      | u32     |  GET |  UTC timestamp (localtime) marking a start of yesterday (as a moment since when we capture a new record) (or 0 = if there is no record for yesterday)&lt;br /&gt;
   993      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   994      | u32     |  GET |  UTC timestamp (localtime) marking a start of today (or a moment of SDS power on), since when a today's record is captured&lt;br /&gt;
   994      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   995      | u32     |  GET |  count of seconds, during yesterday, capturing the total length of T0 tariff activity (captures the timespan since [993] to [994])&lt;br /&gt;
   995      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   996      | u32     |  GET |  count of seconds, during yesterday, capturing the total length of T1 tariff activity (captures the timespan since [993] to [994])&lt;br /&gt;
   996      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   997      | u32     |  GET |  count of seconds since the moment of [994] (start of today) until NOW; counting the duration of T0 tariff being active&lt;br /&gt;
   997      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   998      | u32     |  GET |  count of seconds since the moment of [994] (start of today) until NOW; counting the duration of T1 tariff being active&lt;br /&gt;
   998      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   999      | u32     |  GET |  immediate state of the global Tariff Input (0 = T0 is active right now) (!0 = T1 is active right now)&lt;br /&gt;
   999      | u32     |  SET |  &amp;quot;manual&amp;quot; control of the global Tariff Input (write/control enabled only if the feature is set in web admin - control set to FULL-C)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1000..1031| u32 (a) |  GET |  [S0-input] actual live value of the impulse counter, for T0 tariff&lt;br /&gt;
  1000..1031| u32     |  SET |  [S0-input] modify the impulse counter, for T0 tariff&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1032..1063| u32 (a) |  GET |  [S0-input] actual live value of the impulse counter, for T1 tariff&lt;br /&gt;
  1032..1063| u32     |  SET |  [S0-input] modify the impulse counter, for T0 tariff&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1064..1095| u32 (a) |  GET |  [S0-input] time distance (in msec) between impulses&lt;br /&gt;
  1064..1095|         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1096..1127| u32 (a) |  GET |  [S0-input] time (in msec) since the last captured impulse&lt;br /&gt;
  1096..1127|         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1128..1159| u32     |  GET |  [S0-input] T0 counter value difference for the yesterday (for timespan since [993] to [994])&lt;br /&gt;
  1128..1159|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1160..1191| u32     |  GET |  [S0-input] T1 counter value difference for the yesterday (for timespan since [993] to [994])&lt;br /&gt;
  1160..1191|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1192..1223| u32     |  GET |  [S0-input] T0 counter value difference for the today - timespan since [994] (since start of today) to now&lt;br /&gt;
  1192..1223|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1224..1255| u32     |  GET |  [S0-input] T1 counter value difference for the today - timespan since [994] (since start of today) to now&lt;br /&gt;
  1224..1255|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1256..1499|         |  GET |  n/a (reserved)&lt;br /&gt;
  1256..1499|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1500..1531| a       |  GET |  [S0-input] master configuration struct for this input&lt;br /&gt;
  1500..1531| a       |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1532..1999|         |  GET |  n/a (reserved)&lt;br /&gt;
  1532..1999|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2000..2063| u32 (a) |  GET |  [1-W BUS (A)] device status&lt;br /&gt;
  2000..2063|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2100..2163| a       |  GET |  [1-W BUS (A)] master configuration struct for this OneWire device&lt;br /&gt;
  2100..2163|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2200..2263| i32 (a) |  GET |  [1-W BUS (A)] obtained value from device (basic value)&lt;br /&gt;
  2200..2263|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2300..2363| i32 (a) |  GET |  [1-W BUS (A)] obtained value from device (additional value)&lt;br /&gt;
  2300..2363|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2364..2487|         |  GET |  n/a (reserved)&lt;br /&gt;
  2364..2487|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2488..2495| a       |  GET |  (8-Byte) ROM code for a FamilyID OneWire device found with SDS_onewire_search_bus() for bus (A)&lt;br /&gt;
  2488..2495|         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2496      | u32     |  GET |  number of FamilyID OneWire devices found (via last SEARCH scan (SDS_onewire_search_bus)) on bus (A)&lt;br /&gt;
  2496      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2497      | i32     |  GET |  principal result of a last SEARCH scan (SDS_onewire_search_bus) of the OneWire bus (A)&lt;br /&gt;
  2497      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2498      | i32     |  GET |  principal result of a last MASTER rescan of the OneWire bus (A)&lt;br /&gt;
  2498      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2499      | u32     |  GET |  number of OneWire devices found (via MASTER rescan) on bus (A)&lt;br /&gt;
  2499      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2500..2563| u32 (a) |  GET |  [1-W BUS (B)] device status&lt;br /&gt;
  2500..2563|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2600..2663| a       |  GET |  [1-W BUS (B)] master configuration struct for this OneWire device&lt;br /&gt;
  2600..2663|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2700..2763| i32 (a) |  GET |  [1-W BUS (B)] obtained value from device (basic value)&lt;br /&gt;
  2700..2763|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2800..2863| i32 (a) |  GET |  [1-W BUS (B)] obtained value from device (additional value)&lt;br /&gt;
  2800..2863|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2864..2986|         |  GET |  n/a (reserved)&lt;br /&gt;
  2864..2986|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2986..2993| a       |  GET |  (8-Byte) ROM code for a FamilyID OneWire device found with SDS_onewire_search_bus() for bus (B)&lt;br /&gt;
  2986..2993|         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2994      | u32     |  GET |  number of FamilyID OneWire devices found (via last SEARCH scan (SDS_onewire_search_bus)) on bus (B)&lt;br /&gt;
  2994      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2995      | i32     |  GET |  principal result of a last SEARCH scan (SDS_onewire_search_bus) of the OneWire bus (B)&lt;br /&gt;
  2995      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2996      | i32     |  GET |  principal result of a last MASTER rescan of the OneWire bus (B)&lt;br /&gt;
  2996      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2997      | u32     |  GET |  number of OneWire devices found (via MASTER rescan) on bus (B)&lt;br /&gt;
  2997      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2998      | u32     |  GET |  general 1-W Master Chip status: 1 = detecting; 2 or 4 = failure; 8 = working; 16 = disabled by user&lt;br /&gt;
  2998      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2999      | u32     |  GET |  general 1-W Master Chip status: detection-retry countdown (*10msec)&lt;br /&gt;
  2999      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3000      |         |  GET |  n/a (reserved)&lt;br /&gt;
  3000      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3001      | a       |  GET |  custom 24-byte string (readable via SNMP .8.80)&lt;br /&gt;
  3001      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3002      | a       |  GET |  custom 24-byte string (readable via SNMP .8.81)&lt;br /&gt;
  3002      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3003      | a       |  GET |  custom 16-byte string (readable via SNMP .8.82)&lt;br /&gt;
  3003      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3004      | a       |  GET |  custom 16-byte string (readable via SNMP .8.83)&lt;br /&gt;
  3004      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3005      | a       |  GET |  custom 16-byte string (readable via SNMP .8.84)&lt;br /&gt;
  3005      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3006..3799|         |  GET |  n/a (reserved)&lt;br /&gt;
  3006..3799|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3800      | u32     |  GET |  PVD Active - (nonzero:) main power failure detected&lt;br /&gt;
  3800      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3801      | u32     |  GET |  PVD Was Active - this flag is only cleared by reading this index 3801&lt;br /&gt;
  3801      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3802..3849|         |  GET |  n/a (reserved)&lt;br /&gt;
  3802..3849|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3850      | u32     |  GET |  SD Card - fully mounted and useable&lt;br /&gt;
  3850      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3851      | i32     |  GET |  latest file i/o error code&lt;br /&gt;
  3851      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3852      | u32     |  GET |  SD Card - Block Size in bytes (typically 512)&lt;br /&gt;
  3852      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3853      | u32     |  GET |  SD Card - CardType&lt;br /&gt;
  3853      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3854      | u32     |  GET |  SD Card - CID - ProductSN&lt;br /&gt;
  3854      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3855      | u32     |  GET |  statistic counter: SDcard: all init attempts (= successful + failed)&lt;br /&gt;
  3855      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3856      | u32     |  GET |  statistic counter: SDcard: failed init attempts&lt;br /&gt;
  3856      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3857      | u32     |  GET |  SD Card - Total Sector Count in KiB (size of the card)&lt;br /&gt;
  3857      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3858      | u32     |  GET |  statistic counter: SDcard: sector reads&lt;br /&gt;
  3858      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3859      | u32     |  GET |  statistic counter: SDcard: sector writes&lt;br /&gt;
  3859      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3860      | u32     |  GET |  statistic counter: SDcard: sector r/w failures&lt;br /&gt;
  3860      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3861      | u32     |  GET |  statistic counter: number of opened files&lt;br /&gt;
  3861      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3862..3999|         |  GET |  n/a (reserved)&lt;br /&gt;
  3862..3999|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4000..4099| i32     |  GET |  Shared Variables: S00 through S99 - read&lt;br /&gt;
  4000..4099| i32     |  SET |  Shared Variables: S00 through S99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4100..4199| u32     |  GET |  Shared Variables: U00 through U99 - read&lt;br /&gt;
  4100..4199| u32     |  SET |  Shared Variables: U00 through U99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4200..4299| f32     |  GET |  Shared Variables: F00 through F99 - read&lt;br /&gt;
  4200..4299| f32     |  SET |  Shared Variables: F00 through F99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4300..4399| a       |  GET |  Shared Variables: T00 through T99 - read&lt;br /&gt;
  4300..4399| a       |  SET |  Shared Variables: T00 through T99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4400..4989|         |  GET |  n/a (reserved)&lt;br /&gt;
  4400..4989|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4990..4999| u32     |  GET |  read this to get a value of an automatic SECOND DOWN-COUNTER #1..#10 (it does decrease its internal value by 1 for each 1 second, down to 0 where it stays, until restarted by writing)&lt;br /&gt;
  4990..4999| u32     |  SET |  write this to set/start/restart an automatic SECOND DOWN-COUNTER #1..#10&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  5000..5127| u/i/f 32|  GET |  BackUp-RAM (FC version 0x08+) - write&lt;br /&gt;
  5000..5127| u/i/f 32|  SET |  BackUp-RAM (FC version 0x08+) - read&lt;br /&gt;
 -----------+-+-------+------+--&lt;br /&gt;
  5128..11197 |       |  GET |  n/a (reserved)&lt;br /&gt;
  5128..11197 |       |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+-+-------+------+--&lt;br /&gt;
  11198     | u32     |  GET |  mqtt_publish PUBLISH Fixed Header value ( 0b0011dqqr : d=DUP, qq=QOS, r=RETAIN ) &lt;br /&gt;
  11198     | u32     |  SET |  write ( default: 0b00110001 )&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  11199     | u/i 32  |  GET |  FW support for MQTT-c (0 == NOT present)&lt;br /&gt;
  11199     |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12200     | i32     |  GET |  work progress (and result) of mqtt_connect()&lt;br /&gt;
  12200     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12201     | i32     |  GET |  &amp;quot;CONNACK Connect Return&amp;quot; - result of mqtt_connect()&lt;br /&gt;
  12201     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12202     | i32     |  GET |  result of: mqtt_publish(), mqtt_subscribe(), mqtt_unsubscribe_index(), mqtt_unsubscribe_name()&lt;br /&gt;
  12202     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12203     | i32     |  GET |  MQTT protocol error counter (informative)&lt;br /&gt;
  12203     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12204..12208 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12204..12208 |      |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12209     | i32     |  GET |  Subscribe Table - total number of available rows&lt;br /&gt;
  12209     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12210     | a       |  GET |  latest received Topic Name (sent from broker)&lt;br /&gt;
  12210     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12211..12241 | a    |  GET |  Subscribe Table: Topic Name for each table row&lt;br /&gt;
  12211..12241 |      |  SET |  n/a&lt;br /&gt;
 --------------+------+------+--&lt;br /&gt;
  12242..12249 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12242..12249 |      |  SET |  n/a&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12250     | a       |  GET |  latest received Value (sent from broker)&lt;br /&gt;
  12250     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12251..12281 | a    |  GET |  Subscribe Table: actual Value for each table row&lt;br /&gt;
  12251..12281 |      |  SET |  n/a&lt;br /&gt;
 --------------+------+------+--&lt;br /&gt;
  12282..12289 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12282..12289 |      |  SET |  n/a&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12290     | u32     |  GET |  timestamp for the latest received data (Topic) from broker&lt;br /&gt;
  12290     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+--+---+--+--&lt;br /&gt;
  12291..12321 | u32 (a) |  GET |  Subscribe Table: timestamp for the last Value update, for each table row&lt;br /&gt;
  12291..12321 |         |  SET |  n/a&lt;br /&gt;
 --------------+------+--+---+--+--&lt;br /&gt;
  12322..12398 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12322..12398 |      |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12399     | u/i 32  |  GET |  FW support for MODBUS-TCP-c (0 == NOT present)&lt;br /&gt;
  12399     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12400     | i32     |  GET |  work progress (and result) of modbus_tcp_connect()&lt;br /&gt;
  12400     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12401     | i32     |  GET |  progress/result for function 0x01 - modbus_tcp_read(uid, 0x01, ...);&lt;br /&gt;
  12401     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12402     | i32     |  GET |  progress/result for function 0x02 - modbus_tcp_read(uid, 0x02, ...);&lt;br /&gt;
  12402     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12403     | i32     |  GET |  progress/result for function 0x03 - modbus_tcp_read(uid, 0x03, ...);&lt;br /&gt;
  12403     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12404     | i32     |  GET |  progress/result for function 0x04 - modbus_tcp_read(uid, 0x04, ...);&lt;br /&gt;
  12404     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12405     | i32     |  GET |  progress/result for function 0x05 - modbus_tcp_writesingle(uid, 0x05, ...);&lt;br /&gt;
  12405     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12406     | i32     |  GET |  progress/result for function 0x06 - modbus_tcp_writesingle(uid, 0x06, ...);&lt;br /&gt;
  12406     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12407..12414 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12407..12414 |      |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12415     | i32     |  GET |  progress/result for function 0x0F - modbus_tcp_writemultiple(uid, 0x0F, ...);&lt;br /&gt;
  12415     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12416     | i32     |  GET |  progress/result for function 0x10 - modbus_tcp_writemultiple(uid, 0x10, ...);&lt;br /&gt;
  12416     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12417..12462 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12417..12462 |      |  SET |  n/a (reserved) &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12463     | u/i 32  |  GET |  latest Unit Identifier value written to MBAP header (msg TX to server)&lt;br /&gt;
  12463     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12464     | u/i 32  |  GET |  latest Transaction Identifier value written to MBAP header (msg TX to server)&lt;br /&gt;
  12464     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12465     | u/i 32  |  GET |  timestamp of the latest received message&lt;br /&gt;
  12465     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12466     | u/i 32  |  GET |  a count of received items inside the latest received message&lt;br /&gt;
  12466     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12467     | u/i 32  |  GET |  latest received Unit Identifier value (inside incoming MBAP header)&lt;br /&gt;
  12467     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12468     | u/i 32  |  GET |  latest received Transaction Identifier value (inside incoming MBAP header)&lt;br /&gt;
  12468     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12469     | u/i 32  |  GET |  an address of the first coil/input/register item (maps to a value in 12470)&lt;br /&gt;
  12469     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+--+---+--+--&lt;br /&gt;
  12470..12719 | i32 (a) |  GET |  received values (latest received message contents)&lt;br /&gt;
  12470..12719 |         |  SET |  n/a &lt;br /&gt;
 --------------+---------+------+--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Poznámky''' &lt;br /&gt;
&lt;br /&gt;
Položky obsahující: &amp;quot;konfigurační struktura&amp;quot; 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ý &amp;quot;struct&amp;quot; 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í [[FULL-C:_set_and_get:_detailed|příklady]], které přesně popisují postup pro každý typ takové struktury - a vysvětlují tuto poznámku svým kódem.&lt;br /&gt;
&lt;br /&gt;
Indexy označené jako '''(a)''' lze ''blokově číst'' (pozor, označené specificky jako &amp;quot;a v závorce&amp;quot;). Vždy ale lze ''blokové čtení'' (tj. čtení více indexů najednou, za sebou, v rámci povoleného rozsahu) provést pouze od prvního indexu v bloku (ne od dalších v bloku).&lt;br /&gt;
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ává dalším parametrem při volání SDS_get_a() funkce.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Sdílené proměnné je potřeba nejprve definovat, aby je šlo použít, a aby k nim šlo přistupovat přes set/get funkce - viz specifická stránka na této wiki.&lt;br /&gt;
&lt;br /&gt;
Detaily (významy hodnot) pro položky ''MQTT klient'' a ''MODBUS-TCP klient'' jsou rozepsány na příslušných odpovídajících stránkách na této wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Vysvětlení položek'''&lt;br /&gt;
&lt;br /&gt;
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í.&lt;br /&gt;
To naleznete na dalších stránkách v rámci této wiki, nebo se nás rovnou zeptejte (přes forum).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Vstupy pro měření napětí'''&lt;br /&gt;
&lt;br /&gt;
Detaily k A/D vstupům jsou uvedeny [[SDS_2PR:_ADC_vstupy_a_kalibrace|zde]]. Pro psaní programu je důležité mapování '''index'''u na jednotlivé vstupy, viz [[SDS_2PR:_ADC_vstupy_a_kalibrace|tabulka]].&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_set_and_get&amp;diff=952</id>
		<title>FULL-C: set and get</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_set_and_get&amp;diff=952"/>
		<updated>2025-08-10T09:34:38Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje programovací jazyk '''FULL-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Některá zařízení používají SDS-C, pro který máme návody jinde na této WiKi.&lt;br /&gt;
&lt;br /&gt;
== Jak je FULL-C program připojen k hardware ==&lt;br /&gt;
&lt;br /&gt;
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é).&lt;br /&gt;
&lt;br /&gt;
Za tímto účelem je k dispozici sada C funkcí, které může program volat a které buď navrátí aktuální stav (&amp;quot;get&amp;quot; funkce), nebo stav změní (&amp;quot;set&amp;quot; funkce).&lt;br /&gt;
&lt;br /&gt;
Zde je seznam těchto funkcí:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void SDS_set_i32(unsigned int index, signed int value);&lt;br /&gt;
   signed int SDS_get_i32(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_i64(unsigned int index, int64_t value);&lt;br /&gt;
   signed int SDS_get_i64(unsigned int index);&lt;br /&gt;
  &lt;br /&gt;
         void SDS_set_u32(unsigned int index, unsigned int value);&lt;br /&gt;
 unsigned int SDS_get_u32(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_u64(unsigned int index, uint64_t value);&lt;br /&gt;
 unsigned int SDS_get_u64(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_f32(unsigned int index, float value);&lt;br /&gt;
        float SDS_get_f32(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_a(unsigned int index, void *ptr, unsigned int len);&lt;br /&gt;
         void SDS_get_a(unsigned int index, void *ptr, unsigned int maxlen);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Historicky zde původně byly i tyto funkce:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void SDS_set_i(unsigned int index, signed int value);&lt;br /&gt;
   signed int SDS_get_i(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_u(unsigned int index, unsigned int value);&lt;br /&gt;
 unsigned int SDS_get_u(unsigned int index);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ty &amp;quot;nezmizely&amp;quot; jen byly '''přejmenovány''' (i na i32, u na u32). &lt;br /&gt;
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ý.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Detailní Příklady ===&lt;br /&gt;
&lt;br /&gt;
Přečtěte si nejprve celou tuto stránku, ať pochopíte princip. Následně se podívejte na [[FULL-C:_set_and_get:_detailed|jednotlivé příklady zde]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Princip ==&lt;br /&gt;
&lt;br /&gt;
Základem je použití přístupu k informacím prostřednictvím tzv. '''index'''u.&lt;br /&gt;
&lt;br /&gt;
Pod každou položkou (číselným '''index'''em) je schována odpovídající činnost nebo hodnota (např. '''index = 3''' vrátí přes &amp;quot;get&amp;quot; funkci aktuální hodnotu &amp;quot;UpTime&amp;quot;, viz tabulka).&lt;br /&gt;
&lt;br /&gt;
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 funkci):&lt;br /&gt;
&lt;br /&gt;
  typ položky              | rozsah         | typ proměnné    | postfix set\get funkce&lt;br /&gt;
 --------------------------+----------------+-----------------+-------------------------&lt;br /&gt;
   signed 32-bit integer   |  -2^31..+2^31  |  int            |  _i32&lt;br /&gt;
   signed 64-bit integer   |  -2^63..+2^63  |  int64_t        |  _i32&lt;br /&gt;
   unsigned 32-bit integer |      0..+2^32  |  unsigned int   |  _u64&lt;br /&gt;
   unsigned 64-bit integer |      0..+2^64  |  uint64_t       |  _u64&lt;br /&gt;
   IP address              |  uchar[4]      |  unsigned int   |  _u32&lt;br /&gt;
   float                   |  IEEE-754      |  float          |  _f32&lt;br /&gt;
   string (text)           |  len\maxlen    |  void* \ char*  |  _a&lt;br /&gt;
   binary array            |  len\maxlen    |  void* \ char*  |  _a&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, bude při psaní programu potřeba správně vybrat postfix u dané funkce.&lt;br /&gt;
&lt;br /&gt;
Příklad: chceme zapsat desetinné číslo &amp;quot;numf&amp;quot;, v tom případě se jedná o typ &amp;quot;float numf;&amp;quot; a musíme použít ''SDS_set_f(index, numf);''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Funkce _u32 \ _i32 \ _f32 ==&lt;br /&gt;
&lt;br /&gt;
Základní funkce určené pro získání číselné hodnoty &amp;quot;z&amp;quot; SDS, popř. zápisu číselné hodnoty &amp;quot;do&amp;quot; SDS. Vždy se jedná o kombinaci ''index''u (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).&lt;br /&gt;
&lt;br /&gt;
Č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é).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
První příklad: ''čtení'' 32bitové hodnoty bez znaménka&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
unsigned int NTPtime;&lt;br /&gt;
NTPtime = SDS_get_u32(4);&lt;br /&gt;
printf(&amp;quot;Aktuální Epoch Time je %u (secs).\n&amp;quot;, NTPtime);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Druhý příklad: ''čtení'' 32bitové hodnoty se znaménkem&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int NTPoffset;&lt;br /&gt;
NTPoffset = SDS_get_i32(26);&lt;br /&gt;
printf(&amp;quot;Offset pro NTP čas je: %d hod.\n&amp;quot;, NTPoffset);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Třetí příklad: ''čtení'' float hodnoty&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
float AD_Rinput__in_user_units;&lt;br /&gt;
AD_Rinput__in_user_units = SDS_get_f32(311);&lt;br /&gt;
printf(&amp;quot;Resistance Measure Input value is: %0.3f \n&amp;quot;, AD_Rinput__in_user_units);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Čtvrtý příklad: ''zápis'' 32bitové hodnoty bez znaménka&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// zapni RELE 1 (zápisem nenulové hodnoty na index [231], viz tabulka)&lt;br /&gt;
SDS_set_u32(231, 0xFF); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Funkce _u64 \ _i64 ==&lt;br /&gt;
&lt;br /&gt;
Princip je identický jako pro _u32 a _i32 funkce. &lt;br /&gt;
&lt;br /&gt;
Vždy se podívejte do tabulky, jaké informace můžete v 64bitové formě dostat; většina jich je pouze ve 32bit formě.&lt;br /&gt;
To ale nevadí, protože přeci například není problém do proměnné typu uint64_t zapsat 32bitové číslo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Funkce _a ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
První příklad: čtení textového parametru&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// definujeme si pole o velikosti 32 bajtů; tzn. sem se vleze až 31 znaků plus jeden ukončovací 0x00&lt;br /&gt;
char sysLoc[32];&lt;br /&gt;
&lt;br /&gt;
// SDS uloží text z indexu [2] do pole &amp;quot;sysLoc&amp;quot;, o maximální velikosti 32 bajtů&lt;br /&gt;
SDS_get_a(2, (void *)sysLoc, 32);&lt;br /&gt;
&lt;br /&gt;
// a můžeme se podívat na výsledek (výpis do konzole)&lt;br /&gt;
printf(&amp;quot;Nastavená system location: %s \n&amp;quot;, sysLoc);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Druhý příklad: čtení pole údajů - '''pouze''' položky z indexu označeného (a) v tabulce indexů&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// definujeme si pole o 8 položkách, které obsahuje prvky typu &amp;quot;unsigned int&amp;quot; (každý tento prvek má velikost: 4 bajty)&lt;br /&gt;
unsigned int OPTOvalues[8];&lt;br /&gt;
 &lt;br /&gt;
// SDS zapíše 8 pozic od indexu [151] do pole OPTOvalues&lt;br /&gt;
// maximální velikost zápisu = 8*4 , tzn. 8 položek v poli OPTOvalues, každá o 4 bajtech&lt;br /&gt;
SDS_get_a(151, (void *)OPTOvalues, 8 * 4);&lt;br /&gt;
&lt;br /&gt;
// a muzeme pristupovat na jednotlive polozky (jejich obsah je platny vuci okamziku zavolani GET funkce)&lt;br /&gt;
if (0 == OPTOvalues[0]) ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Pro tyto přístupy je potřeba uvést, že blokové čtení funguje jen vždy od prvního indexu pro daný blok indexů.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na zcela stejném přístupu funguje '''SDS_set_a()''' funkce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úplné detaily a všechny příklady ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'''Detailní přehled, doplněný o příklady ve FULL-C, naleznete zde: [[FULL-C: set and get: detailed]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tabulka ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Je li také uveden klíč &amp;quot;(a)&amp;quot;, 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.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 -----------+---------+------+--------------------------------------------------------------------------------------------------------&lt;br /&gt;
   index    | i\u\f\a |  dir |  comment&lt;br /&gt;
 -----------+---------+------+--------------------------------------------------------------------------------------------------------&lt;br /&gt;
   0        | u32     |  GET |  firmware PAIRCODE (SDS device master-type identification)&lt;br /&gt;
   0        |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   1        | u32     |  GET |  count of actually logged-in users (logged-in to SDS web admin)&lt;br /&gt;
   1        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   2        | u32     |  GET |  unique ID for SDS (serial number assigned during manufacturing)&lt;br /&gt;
   2        | a       |  GET |  sysLocation (user configured text)&lt;br /&gt;
   2        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   3        | u32     |  GET |  uptime (increased by 1 each every 10msec) (example: 100 = 1 sec)&lt;br /&gt;
   3        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   4        | u32     |  GET |  LOCAL time (NTP UTC Epoch, with GMT-offset and DST-offset applied), value in seconds&lt;br /&gt;
   4        |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   5        | u32     |  GET |  LOCAL time decomposition = value of DAY (1 through 31)&lt;br /&gt;
   5        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   6        | u32     |  GET |  LOCAL time decomposition = value of MONTH (1 through 12)&lt;br /&gt;
   6        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   7        | u32     |  GET |  LOCAL time decomposition = value of YEAR (full value)&lt;br /&gt;
   7        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   8        | u32     |  GET |  LOCAL time decomposition = value of HOUR (0 through 23)&lt;br /&gt;
   8        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   9        | u32     |  GET |  LOCAL time decomposition = value of MINUTE (0 through 59)&lt;br /&gt;
   9        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   10       | u32     |  GET |  LOCAL time decomposition = value of SECOND (0 through 59)&lt;br /&gt;
   10       |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   11       | u32     |  GET |  LOCAL time decomposition = day-of-week number = number of days since Sunday (0 to 6)&lt;br /&gt;
   11       |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   12       | u32     |  GET |  SDS device IP address (web admin IP)&lt;br /&gt;
   12       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   13..15   |         |  GET |  n/a (reserved)&lt;br /&gt;
   13..15   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   16       | u32     |  GET |  network gateway IP address&lt;br /&gt;
   16       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   17..19   |         |  GET |  n/a (reserved)&lt;br /&gt;
   17..19   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   20       | u32     |  GET |  network IP MASK&lt;br /&gt;
   20       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   21       | a       |  GET |  SNMPv3 - EngineID (FC: prepare buffer for 32 chars + trailing zero)&lt;br /&gt;
   21       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   22       | u32     |  GET |  SNMPv3 - Engine Boots &lt;br /&gt;
   22       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   23       | u32     |  GET |  SNMPv3 - Engine Time &lt;br /&gt;
   23       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   24       | u32     |  GET |  Ethernet Link Status&lt;br /&gt;
   24       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   25       | u32     |  GET |  Ethernet Link Speed (0, 10 or 100)&lt;br /&gt;
   25       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   26       | i32     |  GET |  read NTP GMT offset (-11 .. 11) = offset, in hour(s), between UTC and LOCAL time&lt;br /&gt;
   26       | i32     |  SET |  set NTP GMT offset (warning: this is not stored to permanent memory - use web admin to store it permanently)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   27       | u32     |  GET |  validity of the assigned IP address (0 = SDS does not have any IP address assigned, at the moment)&lt;br /&gt;
   27       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   28       | u32     |  GET |  timestamp of last change (assignment) of IP address &lt;br /&gt;
   28       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   29       | u32     |  GET |  state of DHCP client (0 = disabled, OR: enabled = status value of 1 .. 11)&lt;br /&gt;
   29       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   30       | u32     |  GET |  DHCP lease time (secs) value&lt;br /&gt;
   30       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   31       | u32     |  GET |  MAC[0] (always use only the lowest 8 bits, for each item)&lt;br /&gt;
   31       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   32       | u32     |  GET |  MAC[1]&lt;br /&gt;
   32       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   33       | u32     |  GET |  MAC[2]&lt;br /&gt;
   33       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   34       | u32     |  GET |  MAC[3]&lt;br /&gt;
   34       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   35       | u32     |  GET |  MAC[4]&lt;br /&gt;
   35       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   36       | u32     |  GET |  MAC[5]&lt;br /&gt;
   36       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   37..39   |         |  GET |  n/a (reserved)&lt;br /&gt;
   37..39   |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   40       | u32     |  GET |  SoC power-up or reset reason (64/128 = read only LSB: 8 bits) (512 = read all 32 bits)&lt;br /&gt;
   40       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   41       | a       |  GET |  OEM branding (login web page) [32 chars]&lt;br /&gt;
   41       | a       |  SET |  set custom OEM branding (login web page) [32 chars]&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   42       | a       |  GET |  OEM branding (welcome web page) [128 chars]&lt;br /&gt;
   42       | a       |  SET |  set custom OEM branding (welcome web page) [128 chars]&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   43       | u32     |  GET |  NTP-server IP address&lt;br /&gt;
   43       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   44       | u32     |  GET |  NTP-client status (0 = NOT synchronized)&lt;br /&gt;
   44       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   45       | u32     |  GET |  UpTime value - units: msec (uptime is constantly counted since then latest SDS FW boot)&lt;br /&gt;
   45       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   46       | u32     |  GET |  temperature of SoC - the RAW value (you have to manually recalculate this raw value to get degC)&lt;br /&gt;
   46       | i32     |  GET |  temperature of SoC - already recalculated to degC (SDS does have, and uses, all the required calibration info)&lt;br /&gt;
   46       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   48..60   |         |  GET |  n/a (reserved)&lt;br /&gt;
   48..60   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   61       | u32     |  GET |  read this to get a 32-bit Random Number (HW RNG)&lt;br /&gt;
   61       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   62..63   |         |  GET |  n/a (reserved)&lt;br /&gt;
   62..63   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   64       | u32     |  GET |  read this to get a value of an automatic SECOND DOWN-COUNTER #0 (it does decrease its internal value by 1 for each 1 second, down to 0 where it stays, until restarted by writing)&lt;br /&gt;
   64       | u32     |  SET |  write this to set/start/restart an automatic SECOND DOWN-COUNTER #0&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   65       | u32     |  GET |  get state of the DST automatic (0 = not used) (1 = DST used and DST shift is applied) (2 = DST used but NO shift applied)&lt;br /&gt;
   65       | u32     |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   66       | u32     |  GET |  DNS-server IP address&lt;br /&gt;
   66       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   67       | u32     |  GET |  info about SDS device IP address origin (0=none, 1=manual, 2=dhcp)&lt;br /&gt;
   67       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   68       | u32     |  GET |  info about DNS server IP address origin (0=none, 1=manual, 2=dhcp)&lt;br /&gt;
   68       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   69       |         |  GET |  n/a (reserved) &lt;br /&gt;
   69       |         |  SET |  n/a (reserved) &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   70       | u32     |  GET |  DNS RESOLV - actual TTL live value (= 1..MAX, in seconds) for the very last resolved DNS name (or 0 = no resolv done or finished yet)&lt;br /&gt;
   70       | u32     |  SET |  write 0xE4A5ECAC to manually clear the WHOLE internal DNS cache (will force fresh DNS requests once dns_resolv() is again called by your program)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   71       | u32     |  GET |  DNS RESOLV - timestamp (UTC) of the latest DNS server response (packet) as requested by dns_resolv() function (if 0 then no response received)&lt;br /&gt;
   71       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   72..77   |         |  GET |  n/a (reserved) &lt;br /&gt;
   72..77   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   78       | u32     |  GET |  SDS HW availability detail (information): 0 = single PWM output / 4 = four PWM outputs&lt;br /&gt;
   78       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   79       | u32     |  GET |  SDS HW sub-type (information): 1 = variant &amp;quot;DP&amp;quot; (newer HW version) / 0 = basic BIG (no DP)&lt;br /&gt;
   79       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   80       | u32     |  GET |  SDS HW sub-type (information): 1 = variant &amp;quot;DS84&amp;quot; / 0 = no DS84&lt;br /&gt;
   80       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   81..84   |         |  GET |  n/a (reserved) &lt;br /&gt;
   81..84   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   85       | u32     |  GET |  SDS module type (BIG, BIG2 or STSW) discrimination:  0 = STSW or SMALL / 1 = BIG / 2 = BIG2&lt;br /&gt;
   85       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   86       | u32     |  GET |  FC: actual state (running, uploading, failed etc.) of the FULL-C program (0, 1, 2, 4, 8, 16, 32, 64)&lt;br /&gt;
   86       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   87       | u32     |  GET |  FC: unique identifier of the actually uploaded FULL-C program&lt;br /&gt;
   87       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   88       |         |  GET |  n/a (reserved) &lt;br /&gt;
   88       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   89       | u32     |  GET |  SDS IP-WatchDog: state (0 = OFF)&lt;br /&gt;
   89       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   90       | u32     |  GET |  SDS IP-WatchDog: last known RTT (msecs)&lt;br /&gt;
   90       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   91       | u32     |  GET |  SDS IP-WatchDog: logical output status&lt;br /&gt;
   91       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   92..131  |         |  GET |  n/a (reserved)&lt;br /&gt;
   92..131  |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   132      | u32     |  GET |  FC: UTC time value, of the last FC-WDG restart of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
   132      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   133      | u32     |  GET |  FC: UpTime value, of the last FC-WDG restart of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
   133      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   134      | a       |  GET |  FC: archived text of the last FC error&lt;br /&gt;
   134      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   135      | u32     |  GET |  FC: number of FC-WDF restarts of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
   135      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   136      | u32     |  GET |  FC: total count of all FC program starts, since the SDS boot&lt;br /&gt;
   136      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   137      | u32     |  GET |  read an actual SDS CPU cycle counter (number of executed instructions since power-up/reboot), continuously wraps around, (1 step = approx. 2 nsec)&lt;br /&gt;
   137      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   138      | u32     |  GET |  get SDS internal RTC power-on status (0 = invalid data after powerup in RTC) (1 = RTC data OK and were used on powerup) &lt;br /&gt;
   138      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   139      | u32     |  GET |  NTP true actual raw epoch-time (secs since Linux Epoch) = clean UTC with *no* GMT nor DST offset applied&lt;br /&gt;
   139      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   140      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:401)&lt;br /&gt;
   140      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:401)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   141      | a       |  GET |  FC: custom TRAP variable - read (TRAP:402)&lt;br /&gt;
   141      | a       |  SET |  FC: custom TRAP variable - write to change (TRAP:402) (note. max 32 characters)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   142      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:403)&lt;br /&gt;
   142      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:403)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   143      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:404)&lt;br /&gt;
   143      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:404)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   144      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:405)&lt;br /&gt;
   144      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:405)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   145      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:406)&lt;br /&gt;
   145      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:406)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   146      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:407)&lt;br /&gt;
   146      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:407)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   147      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:408)&lt;br /&gt;
   147      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:408)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   148      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:409)&lt;br /&gt;
   148      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:409)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   149      |         |  GET |  n/a (reserved)&lt;br /&gt;
   149      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   150      |         |  GET |  FC: shared-variables access control - read state of the access control&lt;br /&gt;
   150      |         |  SET |  FC: shared-variables access control - use this to force a user-login in order to access the shared variables (0 = access without login is enabled)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   151..182 | u32 (a) |  GET |  OPTO1..OPTO32 status (warning: 0 = input ACTIVE = with signal) (non-zero = input not active = no signal)&lt;br /&gt;
   151..182 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   183      | u32     |  GET |  SDS FW date stamp (or just 0x00000000 for a very old firmware) - use this to verify the features or to ask user to update the firmware to a required newer version&lt;br /&gt;
   183      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   184      | u32     |  GET |  FC: information about how this actual running program was started (0 = none) (1 = normal) (2 = fc-wdg or manual restart) (4 = freshly loaded)&lt;br /&gt;
   184      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   185      | u32     |  GET |  FC: actual FULL-C WatchDog (decreasing) timeout counter value, v msec&lt;br /&gt;
   185      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   186      | u32     |  GET |  (common) frequency for PWM3 and PWM4 generator (1Hz .. 5MHz)&lt;br /&gt;
   186      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   187      | u32     |  GET |  PWM3 duty-cycle percent (0..100 [%])&lt;br /&gt;
   187      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   188      | u32     |  GET |  PWM3 HW: direct &amp;quot;pulse&amp;quot; register value&lt;br /&gt;
   188      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   189      | u32     |  GET |  PWM4 duty-cycle percent (0..100 [%])&lt;br /&gt;
   189      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   190      | u32     |  GET |  PWM4 HW: direct &amp;quot;pulse&amp;quot; register value&lt;br /&gt;
   190      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   191      | u32     |  GET |  (common) frequency for PWM1 and PWM2 generator (1Hz .. 5MHz)&lt;br /&gt;
   191      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   192      | u32     |  GET |  PWM1 duty-cycle percent (0..100 [%])&lt;br /&gt;
   192      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   193      | u32     |  GET |  PWM1 HW: read direct &amp;quot;pulse&amp;quot; (compare) register value&lt;br /&gt;
   193      | u32     |  SET |  PWM1 HW: write to direct &amp;quot;pulse&amp;quot; (compare) register value &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   194      | u32     |  GET |  reserved&lt;br /&gt;
   194      |         |  SET |  N/A&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   195      | u32     |  GET |  reserved&lt;br /&gt;
   195      |         |  SET |  N/A&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   196..228 | u32 (a) |  GET |  RELAY1..RELAY32 - &amp;quot;who&amp;quot; controls this output&lt;br /&gt;
   196..228 | u32     |  SET |  RELAY1..RELAY32 - (0 = manual = user via web) (2 = FULL-C) (4 = SDS IPwdg)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   229..230 |         |  GET |  n/a (reserved)&lt;br /&gt;
   229..230 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   231..262 | u32 (a) |  GET |  RELAY1..RELAY32 - output status (0 = off)&lt;br /&gt;
   231..262 | u32     |  SET |  RELAY1..RELAY32 - output status control (0 = off) (!0 = coil activated)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   263..265 |         |  GET |  n/a (reserved)&lt;br /&gt;
   263..265 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   266..297 | a       |  GET |  RELAY1..RELAY32 - identification/name (text, see webadmin)&lt;br /&gt;
   266..297 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   298..300 |         |  GET |  n/a (reserved)&lt;br /&gt;
   298..300 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   301      | u32     |  GET |  status (log0/log1) of GPIO-TOPBOARD pin&lt;br /&gt;
   301      | u32     |  SET |  control the GPIO-TOPBOARD pin value (if direction is set to output)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   302      | u32     |  GET |  direction (in/out) of GPIO-TOPBOARD pin&lt;br /&gt;
   302      | u32     |  SET |  control the GPIO-TOPBOARD pin direction (input or output)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   303..310 |         |  GET |  n/a (reserved)&lt;br /&gt;
   303..310 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   311..342 | f32 (a) |  GET |  AD: recalculated value (float) of A/D input&lt;br /&gt;
   311..342 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   343..374 | a       |  GET |  AD: input identification / name (text)&lt;br /&gt;
   343..374 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   375..406 | a       |  GET |  AD: input unit name (text)&lt;br /&gt;
   375..406 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   407..427 |         |  GET |  n/a (reserved)&lt;br /&gt;
   407..427 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   428      | u32     |  GET |  AD: user-selected type of the OpAmp chip (HW SDS) (0 = AD) (9 = LMV) &lt;br /&gt;
   428      |         |  SET |  n/a (read-only) (configuration to be done via web admin) - note. this must match the HW&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   429      | u32     |  GET |  AD: raw value of Vbatt (raw ADC value). To convert use: Vbatt = (raw * 3.3)/2048 (result in Volts)&lt;br /&gt;
   429      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   430      | u32     |  GET |  AD: value of VrefInt in miliVolts (typical value: 3300)&lt;br /&gt;
   430      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   431..438 | u32 (a) |  GET |  AD: raw value of A/D input in 12bits (0..4095) - for all SDS variants (64, 128 and 512)&lt;br /&gt;
   431..438 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   439..446 | u32 (a) |  GET |  AD: raw value of A/D input in 16bits (0..65535) - available only for the 512 SDS variant&lt;br /&gt;
   439..446 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   447..462 |         |  GET |  n/a (reserved)&lt;br /&gt;
   447..462 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   463..469 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [0]&lt;br /&gt;
   463..469 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   470..476 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [1]&lt;br /&gt;
   470..476 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   477..483 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [2]&lt;br /&gt;
   477..483 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   484..490 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [3]&lt;br /&gt;
   484..490 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   491..497 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [4]&lt;br /&gt;
   491..497 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   498..504 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [5]&lt;br /&gt;
   498..504 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   505..511 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [6]&lt;br /&gt;
   505..511 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   512..518 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [7]&lt;br /&gt;
   512..518 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   519..991 |         |  GET |  n/a (reserved)&lt;br /&gt;
   519..991 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   992      | u32     |  GET |  UTC timestamp (localtime) of the moment, when local clock gets to 23:59:59 (= last second of this day)&lt;br /&gt;
   992      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   993      | u32     |  GET |  UTC timestamp (localtime) marking a start of yesterday (as a moment since when we capture a new record) (or 0 = if there is no record for yesterday)&lt;br /&gt;
   993      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   994      | u32     |  GET |  UTC timestamp (localtime) marking a start of today (or a moment of SDS power on), since when a today's record is captured&lt;br /&gt;
   994      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   995      | u32     |  GET |  count of seconds, during yesterday, capturing the total length of T0 tariff activity (captures the timespan since [993] to [994])&lt;br /&gt;
   995      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   996      | u32     |  GET |  count of seconds, during yesterday, capturing the total length of T1 tariff activity (captures the timespan since [993] to [994])&lt;br /&gt;
   996      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   997      | u32     |  GET |  count of seconds since the moment of [994] (start of today) until NOW; counting the duration of T0 tariff being active&lt;br /&gt;
   997      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   998      | u32     |  GET |  count of seconds since the moment of [994] (start of today) until NOW; counting the duration of T1 tariff being active&lt;br /&gt;
   998      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   999      | u32     |  GET |  immediate state of the global Tariff Input (0 = T0 is active right now) (!0 = T1 is active right now)&lt;br /&gt;
   999      | u32     |  SET |  &amp;quot;manual&amp;quot; control of the global Tariff Input (write/control enabled only if the feature is set in web admin - control set to FULL-C)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1000..1031| u32 (a) |  GET |  [S0-input] actual live value of the impulse counter, for T0 tariff&lt;br /&gt;
  1000..1031| u32     |  SET |  [S0-input] modify the impulse counter, for T0 tariff&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1032..1063| u32 (a) |  GET |  [S0-input] actual live value of the impulse counter, for T1 tariff&lt;br /&gt;
  1032..1063| u32     |  SET |  [S0-input] modify the impulse counter, for T0 tariff&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1064..1095| u32 (a) |  GET |  [S0-input] time distance (in msec) between impulses&lt;br /&gt;
  1064..1095|         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1096..1127| u32 (a) |  GET |  [S0-input] time (in msec) since the last captured impulse&lt;br /&gt;
  1096..1127|         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1128..1159| u32     |  GET |  [S0-input] T0 counter value difference for the yesterday (for timespan since [993] to [994])&lt;br /&gt;
  1128..1159|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1160..1191| u32     |  GET |  [S0-input] T1 counter value difference for the yesterday (for timespan since [993] to [994])&lt;br /&gt;
  1160..1191|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1192..1223| u32     |  GET |  [S0-input] T0 counter value difference for the today - timespan since [994] (since start of today) to now&lt;br /&gt;
  1192..1223|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1224..1255| u32     |  GET |  [S0-input] T1 counter value difference for the today - timespan since [994] (since start of today) to now&lt;br /&gt;
  1224..1255|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1256..1499|         |  GET |  n/a (reserved)&lt;br /&gt;
  1256..1499|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1500..1531| a       |  GET |  [S0-input] master configuration struct for this input&lt;br /&gt;
  1500..1531| a       |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1532..1999|         |  GET |  n/a (reserved)&lt;br /&gt;
  1532..1999|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2000..2063| u32 (a) |  GET |  [1-W BUS (A)] device status&lt;br /&gt;
  2000..2063|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2100..2163| a       |  GET |  [1-W BUS (A)] master configuration struct for this OneWire device&lt;br /&gt;
  2100..2163|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2200..2263| i32 (a) |  GET |  [1-W BUS (A)] obtained value from device (basic value)&lt;br /&gt;
  2200..2263|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2300..2363| i32 (a) |  GET |  [1-W BUS (A)] obtained value from device (additional value)&lt;br /&gt;
  2300..2363|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2364..2487|         |  GET |  n/a (reserved)&lt;br /&gt;
  2364..2487|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2488..2495| a       |  GET |  (8-Byte) ROM code for a FamilyID OneWire device found with SDS_onewire_search_bus() for bus (A)&lt;br /&gt;
  2488..2495|         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2496      | u32     |  GET |  number of FamilyID OneWire devices found (via last SEARCH scan (SDS_onewire_search_bus)) on bus (A)&lt;br /&gt;
  2496      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2497      | i32     |  GET |  principal result of a last SEARCH scan (SDS_onewire_search_bus) of the OneWire bus (A)&lt;br /&gt;
  2497      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2498      | i32     |  GET |  principal result of a last MASTER rescan of the OneWire bus (A)&lt;br /&gt;
  2498      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2499      | u32     |  GET |  number of OneWire devices found (via MASTER rescan) on bus (A)&lt;br /&gt;
  2499      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2500..2563| u32 (a) |  GET |  [1-W BUS (B)] device status&lt;br /&gt;
  2500..2563|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2600..2663| a       |  GET |  [1-W BUS (B)] master configuration struct for this OneWire device&lt;br /&gt;
  2600..2663|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2700..2763| i32 (a) |  GET |  [1-W BUS (B)] obtained value from device (basic value)&lt;br /&gt;
  2700..2763|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2800..2863| i32 (a) |  GET |  [1-W BUS (B)] obtained value from device (additional value)&lt;br /&gt;
  2800..2863|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2864..2986|         |  GET |  n/a (reserved)&lt;br /&gt;
  2864..2986|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2986..2993| a       |  GET |  (8-Byte) ROM code for a FamilyID OneWire device found with SDS_onewire_search_bus() for bus (B)&lt;br /&gt;
  2986..2993|         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2994      | u32     |  GET |  number of FamilyID OneWire devices found (via last SEARCH scan (SDS_onewire_search_bus)) on bus (B)&lt;br /&gt;
  2994      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2995      | i32     |  GET |  principal result of a last SEARCH scan (SDS_onewire_search_bus) of the OneWire bus (B)&lt;br /&gt;
  2995      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2996      | i32     |  GET |  principal result of a last MASTER rescan of the OneWire bus (B)&lt;br /&gt;
  2996      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2997      | u32     |  GET |  number of OneWire devices found (via MASTER rescan) on bus (B)&lt;br /&gt;
  2997      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2998      | u32     |  GET |  general 1-W Master Chip status: 1 = detecting; 2 or 4 = failure; 8 = working; 16 = disabled by user&lt;br /&gt;
  2998      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2999      | u32     |  GET |  general 1-W Master Chip status: detection-retry countdown (*10msec)&lt;br /&gt;
  2999      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3000      |         |  GET |  n/a (reserved)&lt;br /&gt;
  3000      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3001      | a       |  GET |  custom 24-byte string (readable via SNMP .8.80)&lt;br /&gt;
  3001      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3002      | a       |  GET |  custom 24-byte string (readable via SNMP .8.81)&lt;br /&gt;
  3002      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3003      | a       |  GET |  custom 16-byte string (readable via SNMP .8.82)&lt;br /&gt;
  3003      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3004      | a       |  GET |  custom 16-byte string (readable via SNMP .8.83)&lt;br /&gt;
  3004      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3005      | a       |  GET |  custom 16-byte string (readable via SNMP .8.84)&lt;br /&gt;
  3005      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3006..3799|         |  GET |  n/a (reserved)&lt;br /&gt;
  3006..3799|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3800      | u32     |  GET |  PVD Active - (nonzero:) main power failure detected&lt;br /&gt;
  3800      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3801      | u32     |  GET |  PVD Was Active - this flag is only cleared by reading this index 3801&lt;br /&gt;
  3801      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3802..3849|         |  GET |  n/a (reserved)&lt;br /&gt;
  3802..3849|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3850      | u32     |  GET |  SD Card - fully mounted and useable&lt;br /&gt;
  3850      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3851      | i32     |  GET |  latest file i/o error code&lt;br /&gt;
  3851      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3852      | u32     |  GET |  SD Card - Block Size in bytes (typically 512)&lt;br /&gt;
  3852      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3853      | u32     |  GET |  SD Card - CardType&lt;br /&gt;
  3853      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3854      | u32     |  GET |  SD Card - CID - ProductSN&lt;br /&gt;
  3854      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3855      | u32     |  GET |  statistic counter: SDcard: all init attempts (= successful + failed)&lt;br /&gt;
  3855      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3856      | u32     |  GET |  statistic counter: SDcard: failed init attempts&lt;br /&gt;
  3856      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3857      | u32     |  GET |  SD Card - Total Sector Count in KiB (size of the card)&lt;br /&gt;
  3857      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3858      | u32     |  GET |  statistic counter: SDcard: sector reads&lt;br /&gt;
  3858      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3859      | u32     |  GET |  statistic counter: SDcard: sector writes&lt;br /&gt;
  3859      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3860      | u32     |  GET |  statistic counter: SDcard: sector r/w failures&lt;br /&gt;
  3860      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3861      | u32     |  GET |  statistic counter: number of opened files&lt;br /&gt;
  3861      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3862..3999|         |  GET |  n/a (reserved)&lt;br /&gt;
  3862..3999|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4000..4099| i32     |  GET |  Shared Variables: S00 through S99 - read&lt;br /&gt;
  4000..4099| i32     |  SET |  Shared Variables: S00 through S99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4100..4199| u32     |  GET |  Shared Variables: U00 through U99 - read&lt;br /&gt;
  4100..4199| u32     |  SET |  Shared Variables: U00 through U99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4200..4299| f32     |  GET |  Shared Variables: F00 through F99 - read&lt;br /&gt;
  4200..4299| f32     |  SET |  Shared Variables: F00 through F99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4300..4399| a       |  GET |  Shared Variables: T00 through T99 - read&lt;br /&gt;
  4300..4399| a       |  SET |  Shared Variables: T00 through T99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4400..4989|         |  GET |  n/a (reserved)&lt;br /&gt;
  4400..4989|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4990..4999| u32     |  GET |  read this to get a value of an automatic SECOND DOWN-COUNTER #1..#10 (it does decrease its internal value by 1 for each 1 second, down to 0 where it stays, until restarted by writing)&lt;br /&gt;
  4990..4999| u32     |  SET |  write this to set/start/restart an automatic SECOND DOWN-COUNTER #1..#10&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  5000..5127| u/i/f 32|  GET |  BackUp-RAM (FC version 0x08+) - write&lt;br /&gt;
  5000..5127| u/i/f 32|  SET |  BackUp-RAM (FC version 0x08+) - read&lt;br /&gt;
 -----------+-+-------+------+--&lt;br /&gt;
  5128..11197 |       |  GET |  n/a (reserved)&lt;br /&gt;
  5128..11197 |       |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+-+-------+------+--&lt;br /&gt;
  11198     | u32     |  GET |  mqtt_publish PUBLISH Fixed Header value ( 0b0011dqqr : d=DUP, qq=QOS, r=RETAIN ) &lt;br /&gt;
  11198     | u32     |  SET |  write ( default: 0b00110001 )&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  11199     | u/i 32  |  GET |  FW support for MQTT-c (0 == NOT present)&lt;br /&gt;
  11199     |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12200     | i32     |  GET |  work progress (and result) of mqtt_connect()&lt;br /&gt;
  12200     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12201     | i32     |  GET |  &amp;quot;CONNACK Connect Return&amp;quot; - result of mqtt_connect()&lt;br /&gt;
  12201     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12202     | i32     |  GET |  result of: mqtt_publish(), mqtt_subscribe(), mqtt_unsubscribe_index(), mqtt_unsubscribe_name()&lt;br /&gt;
  12202     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12203     | i32     |  GET |  MQTT protocol error counter (informative)&lt;br /&gt;
  12203     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12204..12208 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12204..12208 |      |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12209     | i32     |  GET |  Subscribe Table - total number of available rows&lt;br /&gt;
  12209     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12210     | a       |  GET |  latest received Topic Name (sent from broker)&lt;br /&gt;
  12210     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12211..12241 | a    |  GET |  Subscribe Table: Topic Name for each table row&lt;br /&gt;
  12211..12241 |      |  SET |  n/a&lt;br /&gt;
 --------------+------+------+--&lt;br /&gt;
  12242..12249 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12242..12249 |      |  SET |  n/a&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12250     | a       |  GET |  latest received Value (sent from broker)&lt;br /&gt;
  12250     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12251..12281 | a    |  GET |  Subscribe Table: actual Value for each table row&lt;br /&gt;
  12251..12281 |      |  SET |  n/a&lt;br /&gt;
 --------------+------+------+--&lt;br /&gt;
  12282..12289 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12282..12289 |      |  SET |  n/a&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12290     | u32     |  GET |  timestamp for the latest received data (Topic) from broker&lt;br /&gt;
  12290     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+--+---+--+--&lt;br /&gt;
  12291..12321 | u32 (a) |  GET |  Subscribe Table: timestamp for the last Value update, for each table row&lt;br /&gt;
  12291..12321 |         |  SET |  n/a&lt;br /&gt;
 --------------+------+--+---+--+--&lt;br /&gt;
  12322..12398 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12322..12398 |      |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12399     | u/i 32  |  GET |  FW support for MODBUS-TCP-c (0 == NOT present)&lt;br /&gt;
  12399     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12400     | i32     |  GET |  work progress (and result) of modbus_tcp_connect()&lt;br /&gt;
  12400     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12401     | i32     |  GET |  progress/result for function 0x01 - modbus_tcp_read(uid, 0x01, ...);&lt;br /&gt;
  12401     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12402     | i32     |  GET |  progress/result for function 0x02 - modbus_tcp_read(uid, 0x02, ...);&lt;br /&gt;
  12402     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12403     | i32     |  GET |  progress/result for function 0x03 - modbus_tcp_read(uid, 0x03, ...);&lt;br /&gt;
  12403     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12404     | i32     |  GET |  progress/result for function 0x04 - modbus_tcp_read(uid, 0x04, ...);&lt;br /&gt;
  12404     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12405     | i32     |  GET |  progress/result for function 0x05 - modbus_tcp_writesingle(uid, 0x05, ...);&lt;br /&gt;
  12405     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12406     | i32     |  GET |  progress/result for function 0x06 - modbus_tcp_writesingle(uid, 0x06, ...);&lt;br /&gt;
  12406     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12407..12414 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12407..12414 |      |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12415     | i32     |  GET |  progress/result for function 0x0F - modbus_tcp_writemultiple(uid, 0x0F, ...);&lt;br /&gt;
  12415     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12416     | i32     |  GET |  progress/result for function 0x10 - modbus_tcp_writemultiple(uid, 0x10, ...);&lt;br /&gt;
  12416     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12417..12462 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12417..12462 |      |  SET |  n/a (reserved) &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12463     | u/i 32  |  GET |  latest Unit Identifier value written to MBAP header (msg TX to server)&lt;br /&gt;
  12463     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12464     | u/i 32  |  GET |  latest Transaction Identifier value written to MBAP header (msg TX to server)&lt;br /&gt;
  12464     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12465     | u/i 32  |  GET |  timestamp of the latest received message&lt;br /&gt;
  12465     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12466     | u/i 32  |  GET |  a count of received items inside the latest received message&lt;br /&gt;
  12466     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12467     | u/i 32  |  GET |  latest received Unit Identifier value (inside incoming MBAP header)&lt;br /&gt;
  12467     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12468     | u/i 32  |  GET |  latest received Transaction Identifier value (inside incoming MBAP header)&lt;br /&gt;
  12468     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12469     | u/i 32  |  GET |  an address of the first coil/input/register item (maps to a value in 12470)&lt;br /&gt;
  12469     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+--+---+--+--&lt;br /&gt;
  12470..12719 | i32 (a) |  GET |  received values (latest received message contents)&lt;br /&gt;
  12470..12719 |         |  SET |  n/a &lt;br /&gt;
 --------------+---------+------+--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Poznámky''' &lt;br /&gt;
&lt;br /&gt;
Položky obsahující: &amp;quot;konfigurační struktura&amp;quot; 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ý &amp;quot;struct&amp;quot; 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í [[FULL-C:_set_and_get:_detailed|příklady]], které přesně popisují postup pro každý typ takové struktury - a vysvětlují tuto poznámku svým kódem.&lt;br /&gt;
&lt;br /&gt;
Indexy označené jako '''(a)''' lze ''blokově číst'' (pozor, označené specificky jako &amp;quot;a v závorce&amp;quot;). Vždy ale lze ''blokové čtení'' (tj. čtení více indexů najednou, za sebou, v rámci povoleného rozsahu) provést pouze od prvního indexu v bloku (ne od dalších v bloku).&lt;br /&gt;
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ává dalším parametrem při volání SDS_get_a() funkce.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Sdílené proměnné je potřeba nejprve definovat, aby je šlo použít, a aby k nim šlo přistupovat přes set/get funkce - viz specifická stránka na této wiki.&lt;br /&gt;
&lt;br /&gt;
Detaily (významy hodnot) pro položky ''MQTT klient'' a ''MODBUS-TCP klient'' jsou rozepsány na příslušných odpovídajících stránkách na této wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Vysvětlení položek'''&lt;br /&gt;
&lt;br /&gt;
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í.&lt;br /&gt;
To naleznete na dalších stránkách v rámci této wiki, nebo se nás rovnou zeptejte (přes forum).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Vstupy pro měření napětí'''&lt;br /&gt;
&lt;br /&gt;
Detaily k A/D vstupům jsou uvedeny [[SDS_2PR:_ADC_vstupy_a_kalibrace|zde]]. Pro psaní programu je důležité mapování '''index'''u na jednotlivé vstupy, viz [[SDS_2PR:_ADC_vstupy_a_kalibrace|tabulka]].&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_set_and_get&amp;diff=951</id>
		<title>FULL-C: set and get</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_set_and_get&amp;diff=951"/>
		<updated>2025-08-10T09:27:29Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje programovací jazyk '''FULL-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Některá zařízení používají SDS-C, pro který máme návody jinde na této WiKi.&lt;br /&gt;
&lt;br /&gt;
== Jak je FULL-C program připojen k hardware ==&lt;br /&gt;
&lt;br /&gt;
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é).&lt;br /&gt;
&lt;br /&gt;
Za tímto účelem je k dispozici sada C funkcí, které může program volat a které buď navrátí aktuální stav (&amp;quot;get&amp;quot; funkce), nebo stav změní (&amp;quot;set&amp;quot; funkce).&lt;br /&gt;
&lt;br /&gt;
Zde je seznam těchto funkcí:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void SDS_set_i32(unsigned int index, signed int value);&lt;br /&gt;
   signed int SDS_get_i32(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_i64(unsigned int index, int64_t value);&lt;br /&gt;
   signed int SDS_get_i64(unsigned int index);&lt;br /&gt;
  &lt;br /&gt;
         void SDS_set_u32(unsigned int index, unsigned int value);&lt;br /&gt;
 unsigned int SDS_get_u32(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_u64(unsigned int index, uint64_t value);&lt;br /&gt;
 unsigned int SDS_get_u64(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_f32(unsigned int index, float value);&lt;br /&gt;
        float SDS_get_f32(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_a(unsigned int index, void *ptr, unsigned int len);&lt;br /&gt;
         void SDS_get_a(unsigned int index, void *ptr, unsigned int maxlen);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Historicky zde původně byly i tyto funkce:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void SDS_set_i(unsigned int index, signed int value);&lt;br /&gt;
   signed int SDS_get_i(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_u(unsigned int index, unsigned int value);&lt;br /&gt;
 unsigned int SDS_get_u(unsigned int index);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ty &amp;quot;nezmizely&amp;quot; jen byly '''přejmenovány''' (i na i32, u na u32). &lt;br /&gt;
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ý.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Detailní Příklady ===&lt;br /&gt;
&lt;br /&gt;
Přečtěte si nejprve celou tuto stránku, ať pochopíte princip. Následně se podívejte na [[FULL-C:_set_and_get:_detailed|jednotlivé příklady zde]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Princip ==&lt;br /&gt;
&lt;br /&gt;
Základem je použití přístupu k informacím prostřednictvím tzv. '''index'''u.&lt;br /&gt;
&lt;br /&gt;
Pod každou položkou (číselným '''index'''em) je schována odpovídající činnost nebo hodnota (např. '''index = 3''' vrátí přes &amp;quot;get&amp;quot; funkci aktuální hodnotu &amp;quot;UpTime&amp;quot;, viz tabulka).&lt;br /&gt;
&lt;br /&gt;
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 funkci):&lt;br /&gt;
&lt;br /&gt;
  typ položky              | rozsah         | typ proměnné    | postfix set\get funkce&lt;br /&gt;
 --------------------------+----------------+-----------------+-------------------------&lt;br /&gt;
   signed 32-bit integer   |  -2^31..+2^31  |  int            |  _i32&lt;br /&gt;
   signed 64-bit integer   |  -2^63..+2^63  |  int64_t        |  _i32&lt;br /&gt;
   unsigned 32-bit integer |      0..+2^32  |  unsigned int   |  _u64&lt;br /&gt;
   unsigned 64-bit integer |      0..+2^64  |  uint64_t       |  _u64&lt;br /&gt;
   IP address              |  uchar[4]      |  unsigned int   |  _u32&lt;br /&gt;
   float                   |  IEEE-754      |  float          |  _f32&lt;br /&gt;
   string (text)           |  len\maxlen    |  void* \ char*  |  _a&lt;br /&gt;
   binary array            |  len\maxlen    |  void* \ char*  |  _a&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, bude při psaní programu potřeba správně vybrat postfix u dané funkce.&lt;br /&gt;
&lt;br /&gt;
Příklad: chceme zapsat desetinné číslo &amp;quot;numf&amp;quot;, v tom případě se jedná o typ &amp;quot;float numf;&amp;quot; a musíme použít ''SDS_set_f(index, numf);''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Funkce _u32 \ _i32 \ _f32 ==&lt;br /&gt;
&lt;br /&gt;
Základní funkce určené pro získání číselné hodnoty &amp;quot;z&amp;quot; SDS, popř. zápisu číselné hodnoty &amp;quot;do&amp;quot; SDS. Vždy se jedná o kombinaci ''index''u (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).&lt;br /&gt;
&lt;br /&gt;
Č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é).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
První příklad: ''čtení'' 32bitové hodnoty bez znaménka&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
unsigned int NTPtime;&lt;br /&gt;
NTPtime = SDS_get_u32(4);&lt;br /&gt;
printf(&amp;quot;Aktuální Epoch Time je %u (secs).\n&amp;quot;, NTPtime);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Druhý příklad: ''čtení'' 32bitové hodnoty se znaménkem&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int NTPoffset;&lt;br /&gt;
NTPoffset = SDS_get_i32(26);&lt;br /&gt;
printf(&amp;quot;Offset pro NTP čas je: %d hod.\n&amp;quot;, NTPoffset);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Třetí příklad: ''čtení'' float hodnoty&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
float AD_Rinput__in_user_units;&lt;br /&gt;
AD_Rinput__in_user_units = SDS_get_f32(311);&lt;br /&gt;
printf(&amp;quot;Resistance Measure Input value is: %0.3f \n&amp;quot;, AD_Rinput__in_user_units);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Čtvrtý příklad: ''zápis'' 32bitové hodnoty bez znaménka&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// zapni RELE 1 (zápisem nenulové hodnoty na index [231], viz tabulka)&lt;br /&gt;
SDS_set_u32(231, 0xFF); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Funkce _u64 \ _i64 ==&lt;br /&gt;
&lt;br /&gt;
Princip je identický jako pro _u32 a _i32 funkce. &lt;br /&gt;
&lt;br /&gt;
Vždy se podívejte do tabulky, jaké informace můžete v 64bitové formě dostat; většina jich je pouze ve 32bit formě.&lt;br /&gt;
To ale nevadí, protože přeci například není problém do proměnné typu uint64_t zapsat 32bitové číslo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Funkce _a ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
První příklad: čtení textového parametru&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// definujeme si pole o velikosti 32 bajtů; tzn. sem se vleze až 31 znaků plus jeden ukončovací 0x00&lt;br /&gt;
char sysLoc[32];&lt;br /&gt;
&lt;br /&gt;
// SDS uloží text z indexu [2] do pole &amp;quot;sysLoc&amp;quot;, o maximální velikosti 32 bajtů&lt;br /&gt;
SDS_get_a(2, (void *)sysLoc, 32);&lt;br /&gt;
&lt;br /&gt;
// a můžeme se podívat na výsledek (výpis do konzole)&lt;br /&gt;
printf(&amp;quot;Nastavená system location: %s \n&amp;quot;, sysLoc);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Druhý příklad: čtení pole údajů - '''pouze''' položky z indexu označeného (a) v tabulce indexů&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// definujeme si pole o 8 položkách, které obsahuje prvky typu &amp;quot;unsigned int&amp;quot; (každý tento prvek má velikost: 4 bajty)&lt;br /&gt;
unsigned int OPTOvalues[8];&lt;br /&gt;
 &lt;br /&gt;
// SDS zapíše 8 pozic od indexu [151] do pole OPTOvalues&lt;br /&gt;
// maximální velikost zápisu = 8*4 , tzn. 8 položek v poli OPTOvalues, každá o 4 bajtech&lt;br /&gt;
SDS_get_a(151, (void *)OPTOvalues, 8 * 4);&lt;br /&gt;
&lt;br /&gt;
// a muzeme pristupovat na jednotlive polozky (jejich obsah je platny vuci okamziku zavolani GET funkce)&lt;br /&gt;
if (0 == OPTOvalues[0]) ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Pro tyto přístupy je potřeba uvést, že blokové čtení funguje jen vždy od prvního indexu pro daný blok indexů.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na zcela stejném přístupu funguje '''SDS_set_a()''' funkce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úplné detaily a všechny příklady ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'''Detailní přehled, doplněný o příklady ve FULL-C, naleznete zde: [[FULL-C: set and get: detailed]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tabulka ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Je li také uveden klíč &amp;quot;(a)&amp;quot;, 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.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 -----------+---------+------+--------------------------------------------------------------------------------------------------------&lt;br /&gt;
   index    | i\u\f\a |  dir |  comment&lt;br /&gt;
 -----------+---------+------+--------------------------------------------------------------------------------------------------------&lt;br /&gt;
   0        | u32     |  GET |  firmware PAIRCODE (SDS device master-type identification)&lt;br /&gt;
   0        |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   1        | u32     |  GET |  count of actually logged-in users (logged-in to SDS web admin)&lt;br /&gt;
   1        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   2        | u32     |  GET |  unique ID for SDS (serial number assigned during manufacturing)&lt;br /&gt;
   2        | a       |  GET |  sysLocation (user configured text)&lt;br /&gt;
   2        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   3        | u32     |  GET |  uptime (increased by 1 each every 10msec) (example: 100 = 1 sec)&lt;br /&gt;
   3        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   4        | u32     |  GET |  LOCAL time (NTP UTC Epoch, with GMT-offset and DST-offset applied), value in seconds&lt;br /&gt;
   4        |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   5        | u32     |  GET |  LOCAL time decomposition = value of DAY (1 through 31)&lt;br /&gt;
   5        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   6        | u32     |  GET |  LOCAL time decomposition = value of MONTH (1 through 12)&lt;br /&gt;
   6        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   7        | u32     |  GET |  LOCAL time decomposition = value of YEAR (full value)&lt;br /&gt;
   7        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   8        | u32     |  GET |  LOCAL time decomposition = value of HOUR (0 through 23)&lt;br /&gt;
   8        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   9        | u32     |  GET |  LOCAL time decomposition = value of MINUTE (0 through 59)&lt;br /&gt;
   9        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   10       | u32     |  GET |  LOCAL time decomposition = value of SECOND (0 through 59)&lt;br /&gt;
   10       |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   11       | u32     |  GET |  LOCAL time decomposition = day-of-week number = number of days since Sunday (0 to 6)&lt;br /&gt;
   11       |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   12       | u32     |  GET |  SDS device IP address (web admin IP)&lt;br /&gt;
   12       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   13..15   |         |  GET |  n/a (reserved)&lt;br /&gt;
   13..15   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   16       | u32     |  GET |  network gateway IP address&lt;br /&gt;
   16       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   17..19   |         |  GET |  n/a (reserved)&lt;br /&gt;
   17..19   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   20       | u32     |  GET |  network IP MASK&lt;br /&gt;
   20       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   21       | a       |  GET |  SNMPv3 - EngineID (FC: prepare buffer for 32 chars + trailing zero)&lt;br /&gt;
   21       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   22       | u32     |  GET |  SNMPv3 - Engine Boots &lt;br /&gt;
   22       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   23       | u32     |  GET |  SNMPv3 - Engine Time &lt;br /&gt;
   23       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   24       | u32     |  GET |  Ethernet Link Status&lt;br /&gt;
   24       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   25       | u32     |  GET |  Ethernet Link Speed (0, 10 or 100)&lt;br /&gt;
   25       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   26       | i32     |  GET |  read NTP GMT offset (-11 .. 11) = offset, in hour(s), between UTC and LOCAL time&lt;br /&gt;
   26       | i32     |  SET |  set NTP GMT offset (warning: this is not stored to permanent memory - use web admin to store it permanently)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   27       | u32     |  GET |  validity of the assigned IP address (0 = SDS does not have any IP address assigned, at the moment)&lt;br /&gt;
   27       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   28       | u32     |  GET |  timestamp of last change (assignment) of IP address &lt;br /&gt;
   28       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   29       | u32     |  GET |  state of DHCP client (0 = disabled, OR: enabled = status value of 1 .. 11)&lt;br /&gt;
   29       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   30       | u32     |  GET |  DHCP lease time (secs) value&lt;br /&gt;
   30       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   31       | u32     |  GET |  MAC[0] (always use only the lowest 8 bits, for each item)&lt;br /&gt;
   31       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   32       | u32     |  GET |  MAC[1]&lt;br /&gt;
   32       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   33       | u32     |  GET |  MAC[2]&lt;br /&gt;
   33       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   34       | u32     |  GET |  MAC[3]&lt;br /&gt;
   34       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   35       | u32     |  GET |  MAC[4]&lt;br /&gt;
   35       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   36       | u32     |  GET |  MAC[5]&lt;br /&gt;
   36       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   37..39   |         |  GET |  n/a (reserved)&lt;br /&gt;
   37..39   |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   40       | u32     |  GET |  SoC power-up or reset reason (64/128 = read only LSB: 8 bits) (512 = read all 32 bits)&lt;br /&gt;
   40       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   41       | a       |  GET |  OEM branding (login web page) [32 chars]&lt;br /&gt;
   41       | a       |  SET |  set custom OEM branding (login web page) [32 chars]&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   42       | a       |  GET |  OEM branding (welcome web page) [128 chars]&lt;br /&gt;
   42       | a       |  SET |  set custom OEM branding (welcome web page) [128 chars]&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   43       | u32     |  GET |  NTP-server IP address&lt;br /&gt;
   43       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   44       | u32     |  GET |  NTP-client status (0 = NOT synchronized)&lt;br /&gt;
   44       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   45       | u32     |  GET |  UpTime value - units: msec (uptime is constantly counted since then latest SDS FW boot)&lt;br /&gt;
   45       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   46       | u32     |  GET |  temperature of SoC - the RAW value (you have to manually recalculate this raw value to get degC)&lt;br /&gt;
   46       | i32     |  GET |  temperature of SoC - already recalculated to degC (SDS does have, and uses, all the required calibration info)&lt;br /&gt;
   46       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   48..60   |         |  GET |  n/a (reserved)&lt;br /&gt;
   48..60   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   61       | u32     |  GET |  read this to get a 32-bit Random Number (HW RNG)&lt;br /&gt;
   61       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   62..63   |         |  GET |  n/a (reserved)&lt;br /&gt;
   62..63   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   64       | u32     |  GET |  read this to get a value of an automatic SECOND DOWN-COUNTER #0 (it does decrease its internal value by 1 for each 1 second, down to 0 where it stays, until restarted by writing)&lt;br /&gt;
   64       | u32     |  SET |  write this to set/start/restart an automatic SECOND DOWN-COUNTER #0&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   65       | u32     |  GET |  get state of the DST automatic (0 = not used) (1 = DST used and DST shift is applied) (2 = DST used but NO shift applied)&lt;br /&gt;
   65       | u32     |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   66       | u32     |  GET |  DNS-server IP address&lt;br /&gt;
   66       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   67       | u32     |  GET |  info about SDS device IP address origin (0=none, 1=manual, 2=dhcp)&lt;br /&gt;
   67       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   68       | u32     |  GET |  info about DNS server IP address origin (0=none, 1=manual, 2=dhcp)&lt;br /&gt;
   68       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   69       |         |  GET |  n/a (reserved) &lt;br /&gt;
   69       |         |  SET |  n/a (reserved) &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   70       | u32     |  GET |  DNS RESOLV - actual TTL live value (= 1..MAX, in seconds) for the very last resolved DNS name (or 0 = no resolv done or finished yet)&lt;br /&gt;
   70       | u32     |  SET |  write 0xE4A5ECAC to manually clear the WHOLE internal DNS cache (will force fresh DNS requests once dns_resolv() is again called by your program)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   71       | u32     |  GET |  DNS RESOLV - source of the latest IP result, as requested by dns_resolv() function (0 = none, 1 = direct from DNS-server response, 2 = from internal DNS cache)&lt;br /&gt;
   71       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   72..77   |         |  GET |  n/a (reserved) &lt;br /&gt;
   72..77   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   78       | u32     |  GET |  SDS HW availability detail (information): 0 = single PWM output / 4 = four PWM outputs&lt;br /&gt;
   78       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   79       | u32     |  GET |  SDS HW sub-type (information): 1 = variant &amp;quot;DP&amp;quot; (newer HW version) / 0 = basic BIG (no DP)&lt;br /&gt;
   79       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   80       | u32     |  GET |  SDS HW sub-type (information): 1 = variant &amp;quot;DS84&amp;quot; / 0 = no DS84&lt;br /&gt;
   80       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   81..84   |         |  GET |  n/a (reserved) &lt;br /&gt;
   81..84   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   85       | u32     |  GET |  SDS module type (BIG, BIG2 or STSW) discrimination:  0 = STSW or SMALL / 1 = BIG / 2 = BIG2&lt;br /&gt;
   85       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   86       | u32     |  GET |  FC: actual state (running, uploading, failed etc.) of the FULL-C program (0, 1, 2, 4, 8, 16, 32, 64)&lt;br /&gt;
   86       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   87       | u32     |  GET |  FC: unique identifier of the actually uploaded FULL-C program&lt;br /&gt;
   87       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   88       |         |  GET |  n/a (reserved) &lt;br /&gt;
   88       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   89       | u32     |  GET |  SDS IP-WatchDog: state (0 = OFF)&lt;br /&gt;
   89       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   90       | u32     |  GET |  SDS IP-WatchDog: last known RTT (msecs)&lt;br /&gt;
   90       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   91       | u32     |  GET |  SDS IP-WatchDog: logical output status&lt;br /&gt;
   91       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   92..131  |         |  GET |  n/a (reserved)&lt;br /&gt;
   92..131  |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   132      | u32     |  GET |  FC: UTC time value, of the last FC-WDG restart of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
   132      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   133      | u32     |  GET |  FC: UpTime value, of the last FC-WDG restart of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
   133      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   134      | a       |  GET |  FC: archived text of the last FC error&lt;br /&gt;
   134      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   135      | u32     |  GET |  FC: number of FC-WDF restarts of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
   135      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   136      | u32     |  GET |  FC: total count of all FC program starts, since the SDS boot&lt;br /&gt;
   136      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   137      | u32     |  GET |  read an actual SDS CPU cycle counter (number of executed instructions since power-up/reboot), continuously wraps around, (1 step = approx. 2 nsec)&lt;br /&gt;
   137      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   138      | u32     |  GET |  get SDS internal RTC power-on status (0 = invalid data after powerup in RTC) (1 = RTC data OK and were used on powerup) &lt;br /&gt;
   138      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   139      | u32     |  GET |  NTP true actual raw epoch-time (secs since Linux Epoch) = clean UTC with *no* GMT nor DST offset applied&lt;br /&gt;
   139      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   140      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:401)&lt;br /&gt;
   140      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:401)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   141      | a       |  GET |  FC: custom TRAP variable - read (TRAP:402)&lt;br /&gt;
   141      | a       |  SET |  FC: custom TRAP variable - write to change (TRAP:402) (note. max 32 characters)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   142      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:403)&lt;br /&gt;
   142      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:403)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   143      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:404)&lt;br /&gt;
   143      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:404)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   144      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:405)&lt;br /&gt;
   144      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:405)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   145      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:406)&lt;br /&gt;
   145      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:406)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   146      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:407)&lt;br /&gt;
   146      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:407)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   147      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:408)&lt;br /&gt;
   147      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:408)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   148      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:409)&lt;br /&gt;
   148      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:409)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   149      |         |  GET |  n/a (reserved)&lt;br /&gt;
   149      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   150      |         |  GET |  FC: shared-variables access control - read state of the access control&lt;br /&gt;
   150      |         |  SET |  FC: shared-variables access control - use this to force a user-login in order to access the shared variables (0 = access without login is enabled)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   151..182 | u32 (a) |  GET |  OPTO1..OPTO32 status (warning: 0 = input ACTIVE = with signal) (non-zero = input not active = no signal)&lt;br /&gt;
   151..182 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   183      | u32     |  GET |  SDS FW date stamp (or just 0x00000000 for a very old firmware) - use this to verify the features or to ask user to update the firmware to a required newer version&lt;br /&gt;
   183      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   184      | u32     |  GET |  FC: information about how this actual running program was started (0 = none) (1 = normal) (2 = fc-wdg or manual restart) (4 = freshly loaded)&lt;br /&gt;
   184      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   185      | u32     |  GET |  FC: actual FULL-C WatchDog (decreasing) timeout counter value, v msec&lt;br /&gt;
   185      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   186      | u32     |  GET |  (common) frequency for PWM3 and PWM4 generator (1Hz .. 5MHz)&lt;br /&gt;
   186      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   187      | u32     |  GET |  PWM3 duty-cycle percent (0..100 [%])&lt;br /&gt;
   187      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   188      | u32     |  GET |  PWM3 HW: direct &amp;quot;pulse&amp;quot; register value&lt;br /&gt;
   188      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   189      | u32     |  GET |  PWM4 duty-cycle percent (0..100 [%])&lt;br /&gt;
   189      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   190      | u32     |  GET |  PWM4 HW: direct &amp;quot;pulse&amp;quot; register value&lt;br /&gt;
   190      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   191      | u32     |  GET |  (common) frequency for PWM1 and PWM2 generator (1Hz .. 5MHz)&lt;br /&gt;
   191      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   192      | u32     |  GET |  PWM1 duty-cycle percent (0..100 [%])&lt;br /&gt;
   192      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   193      | u32     |  GET |  PWM1 HW: read direct &amp;quot;pulse&amp;quot; (compare) register value&lt;br /&gt;
   193      | u32     |  SET |  PWM1 HW: write to direct &amp;quot;pulse&amp;quot; (compare) register value &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   194      | u32     |  GET |  reserved&lt;br /&gt;
   194      |         |  SET |  N/A&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   195      | u32     |  GET |  reserved&lt;br /&gt;
   195      |         |  SET |  N/A&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   196..228 | u32 (a) |  GET |  RELAY1..RELAY32 - &amp;quot;who&amp;quot; controls this output&lt;br /&gt;
   196..228 | u32     |  SET |  RELAY1..RELAY32 - (0 = manual = user via web) (2 = FULL-C) (4 = SDS IPwdg)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   229..230 |         |  GET |  n/a (reserved)&lt;br /&gt;
   229..230 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   231..262 | u32 (a) |  GET |  RELAY1..RELAY32 - output status (0 = off)&lt;br /&gt;
   231..262 | u32     |  SET |  RELAY1..RELAY32 - output status control (0 = off) (!0 = coil activated)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   263..265 |         |  GET |  n/a (reserved)&lt;br /&gt;
   263..265 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   266..297 | a       |  GET |  RELAY1..RELAY32 - identification/name (text, see webadmin)&lt;br /&gt;
   266..297 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   298..300 |         |  GET |  n/a (reserved)&lt;br /&gt;
   298..300 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   301      | u32     |  GET |  status (log0/log1) of GPIO-TOPBOARD pin&lt;br /&gt;
   301      | u32     |  SET |  control the GPIO-TOPBOARD pin value (if direction is set to output)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   302      | u32     |  GET |  direction (in/out) of GPIO-TOPBOARD pin&lt;br /&gt;
   302      | u32     |  SET |  control the GPIO-TOPBOARD pin direction (input or output)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   303..310 |         |  GET |  n/a (reserved)&lt;br /&gt;
   303..310 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   311..342 | f32 (a) |  GET |  AD: recalculated value (float) of A/D input&lt;br /&gt;
   311..342 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   343..374 | a       |  GET |  AD: input identification / name (text)&lt;br /&gt;
   343..374 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   375..406 | a       |  GET |  AD: input unit name (text)&lt;br /&gt;
   375..406 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   407..427 |         |  GET |  n/a (reserved)&lt;br /&gt;
   407..427 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   428      | u32     |  GET |  AD: user-selected type of the OpAmp chip (HW SDS) (0 = AD) (9 = LMV) &lt;br /&gt;
   428      |         |  SET |  n/a (read-only) (configuration to be done via web admin) - note. this must match the HW&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   429      | u32     |  GET |  AD: raw value of Vbatt (raw ADC value). To convert use: Vbatt = (raw * 3.3)/2048 (result in Volts)&lt;br /&gt;
   429      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   430      | u32     |  GET |  AD: value of VrefInt in miliVolts (typical value: 3300)&lt;br /&gt;
   430      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   431..438 | u32 (a) |  GET |  AD: raw value of A/D input in 12bits (0..4095) - for all SDS variants (64, 128 and 512)&lt;br /&gt;
   431..438 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   439..446 | u32 (a) |  GET |  AD: raw value of A/D input in 16bits (0..65535) - available only for the 512 SDS variant&lt;br /&gt;
   439..446 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   447..462 |         |  GET |  n/a (reserved)&lt;br /&gt;
   447..462 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   463..469 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [0]&lt;br /&gt;
   463..469 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   470..476 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [1]&lt;br /&gt;
   470..476 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   477..483 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [2]&lt;br /&gt;
   477..483 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   484..490 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [3]&lt;br /&gt;
   484..490 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   491..497 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [4]&lt;br /&gt;
   491..497 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   498..504 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [5]&lt;br /&gt;
   498..504 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   505..511 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [6]&lt;br /&gt;
   505..511 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   512..518 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [7]&lt;br /&gt;
   512..518 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   519..991 |         |  GET |  n/a (reserved)&lt;br /&gt;
   519..991 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   992      | u32     |  GET |  UTC timestamp (localtime) of the moment, when local clock gets to 23:59:59 (= last second of this day)&lt;br /&gt;
   992      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   993      | u32     |  GET |  UTC timestamp (localtime) marking a start of yesterday (as a moment since when we capture a new record) (or 0 = if there is no record for yesterday)&lt;br /&gt;
   993      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   994      | u32     |  GET |  UTC timestamp (localtime) marking a start of today (or a moment of SDS power on), since when a today's record is captured&lt;br /&gt;
   994      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   995      | u32     |  GET |  count of seconds, during yesterday, capturing the total length of T0 tariff activity (captures the timespan since [993] to [994])&lt;br /&gt;
   995      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   996      | u32     |  GET |  count of seconds, during yesterday, capturing the total length of T1 tariff activity (captures the timespan since [993] to [994])&lt;br /&gt;
   996      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   997      | u32     |  GET |  count of seconds since the moment of [994] (start of today) until NOW; counting the duration of T0 tariff being active&lt;br /&gt;
   997      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   998      | u32     |  GET |  count of seconds since the moment of [994] (start of today) until NOW; counting the duration of T1 tariff being active&lt;br /&gt;
   998      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   999      | u32     |  GET |  immediate state of the global Tariff Input (0 = T0 is active right now) (!0 = T1 is active right now)&lt;br /&gt;
   999      | u32     |  SET |  &amp;quot;manual&amp;quot; control of the global Tariff Input (write/control enabled only if the feature is set in web admin - control set to FULL-C)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1000..1031| u32 (a) |  GET |  [S0-input] actual live value of the impulse counter, for T0 tariff&lt;br /&gt;
  1000..1031| u32     |  SET |  [S0-input] modify the impulse counter, for T0 tariff&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1032..1063| u32 (a) |  GET |  [S0-input] actual live value of the impulse counter, for T1 tariff&lt;br /&gt;
  1032..1063| u32     |  SET |  [S0-input] modify the impulse counter, for T0 tariff&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1064..1095| u32 (a) |  GET |  [S0-input] time distance (in msec) between impulses&lt;br /&gt;
  1064..1095|         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1096..1127| u32 (a) |  GET |  [S0-input] time (in msec) since the last captured impulse&lt;br /&gt;
  1096..1127|         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1128..1159| u32     |  GET |  [S0-input] T0 counter value difference for the yesterday (for timespan since [993] to [994])&lt;br /&gt;
  1128..1159|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1160..1191| u32     |  GET |  [S0-input] T1 counter value difference for the yesterday (for timespan since [993] to [994])&lt;br /&gt;
  1160..1191|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1192..1223| u32     |  GET |  [S0-input] T0 counter value difference for the today - timespan since [994] (since start of today) to now&lt;br /&gt;
  1192..1223|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1224..1255| u32     |  GET |  [S0-input] T1 counter value difference for the today - timespan since [994] (since start of today) to now&lt;br /&gt;
  1224..1255|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1256..1499|         |  GET |  n/a (reserved)&lt;br /&gt;
  1256..1499|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1500..1531| a       |  GET |  [S0-input] master configuration struct for this input&lt;br /&gt;
  1500..1531| a       |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1532..1999|         |  GET |  n/a (reserved)&lt;br /&gt;
  1532..1999|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2000..2063| u32 (a) |  GET |  [1-W BUS (A)] device status&lt;br /&gt;
  2000..2063|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2100..2163| a       |  GET |  [1-W BUS (A)] master configuration struct for this OneWire device&lt;br /&gt;
  2100..2163|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2200..2263| i32 (a) |  GET |  [1-W BUS (A)] obtained value from device (basic value)&lt;br /&gt;
  2200..2263|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2300..2363| i32 (a) |  GET |  [1-W BUS (A)] obtained value from device (additional value)&lt;br /&gt;
  2300..2363|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2364..2487|         |  GET |  n/a (reserved)&lt;br /&gt;
  2364..2487|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2488..2495| a       |  GET |  (8-Byte) ROM code for a FamilyID OneWire device found with SDS_onewire_search_bus() for bus (A)&lt;br /&gt;
  2488..2495|         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2496      | u32     |  GET |  number of FamilyID OneWire devices found (via last SEARCH scan (SDS_onewire_search_bus)) on bus (A)&lt;br /&gt;
  2496      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2497      | i32     |  GET |  principal result of a last SEARCH scan (SDS_onewire_search_bus) of the OneWire bus (A)&lt;br /&gt;
  2497      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2498      | i32     |  GET |  principal result of a last MASTER rescan of the OneWire bus (A)&lt;br /&gt;
  2498      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2499      | u32     |  GET |  number of OneWire devices found (via MASTER rescan) on bus (A)&lt;br /&gt;
  2499      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2500..2563| u32 (a) |  GET |  [1-W BUS (B)] device status&lt;br /&gt;
  2500..2563|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2600..2663| a       |  GET |  [1-W BUS (B)] master configuration struct for this OneWire device&lt;br /&gt;
  2600..2663|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2700..2763| i32 (a) |  GET |  [1-W BUS (B)] obtained value from device (basic value)&lt;br /&gt;
  2700..2763|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2800..2863| i32 (a) |  GET |  [1-W BUS (B)] obtained value from device (additional value)&lt;br /&gt;
  2800..2863|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2864..2986|         |  GET |  n/a (reserved)&lt;br /&gt;
  2864..2986|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2986..2993| a       |  GET |  (8-Byte) ROM code for a FamilyID OneWire device found with SDS_onewire_search_bus() for bus (B)&lt;br /&gt;
  2986..2993|         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2994      | u32     |  GET |  number of FamilyID OneWire devices found (via last SEARCH scan (SDS_onewire_search_bus)) on bus (B)&lt;br /&gt;
  2994      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2995      | i32     |  GET |  principal result of a last SEARCH scan (SDS_onewire_search_bus) of the OneWire bus (B)&lt;br /&gt;
  2995      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2996      | i32     |  GET |  principal result of a last MASTER rescan of the OneWire bus (B)&lt;br /&gt;
  2996      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2997      | u32     |  GET |  number of OneWire devices found (via MASTER rescan) on bus (B)&lt;br /&gt;
  2997      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2998      | u32     |  GET |  general 1-W Master Chip status: 1 = detecting; 2 or 4 = failure; 8 = working; 16 = disabled by user&lt;br /&gt;
  2998      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2999      | u32     |  GET |  general 1-W Master Chip status: detection-retry countdown (*10msec)&lt;br /&gt;
  2999      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3000      |         |  GET |  n/a (reserved)&lt;br /&gt;
  3000      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3001      | a       |  GET |  custom 24-byte string (readable via SNMP .8.80)&lt;br /&gt;
  3001      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3002      | a       |  GET |  custom 24-byte string (readable via SNMP .8.81)&lt;br /&gt;
  3002      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3003      | a       |  GET |  custom 16-byte string (readable via SNMP .8.82)&lt;br /&gt;
  3003      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3004      | a       |  GET |  custom 16-byte string (readable via SNMP .8.83)&lt;br /&gt;
  3004      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3005      | a       |  GET |  custom 16-byte string (readable via SNMP .8.84)&lt;br /&gt;
  3005      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3006..3799|         |  GET |  n/a (reserved)&lt;br /&gt;
  3006..3799|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3800      | u32     |  GET |  PVD Active - (nonzero:) main power failure detected&lt;br /&gt;
  3800      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3801      | u32     |  GET |  PVD Was Active - this flag is only cleared by reading this index 3801&lt;br /&gt;
  3801      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3802..3849|         |  GET |  n/a (reserved)&lt;br /&gt;
  3802..3849|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3850      | u32     |  GET |  SD Card - fully mounted and useable&lt;br /&gt;
  3850      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3851      | i32     |  GET |  latest file i/o error code&lt;br /&gt;
  3851      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3852      | u32     |  GET |  SD Card - Block Size in bytes (typically 512)&lt;br /&gt;
  3852      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3853      | u32     |  GET |  SD Card - CardType&lt;br /&gt;
  3853      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3854      | u32     |  GET |  SD Card - CID - ProductSN&lt;br /&gt;
  3854      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3855      | u32     |  GET |  statistic counter: SDcard: all init attempts (= successful + failed)&lt;br /&gt;
  3855      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3856      | u32     |  GET |  statistic counter: SDcard: failed init attempts&lt;br /&gt;
  3856      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3857      | u32     |  GET |  SD Card - Total Sector Count in KiB (size of the card)&lt;br /&gt;
  3857      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3858      | u32     |  GET |  statistic counter: SDcard: sector reads&lt;br /&gt;
  3858      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3859      | u32     |  GET |  statistic counter: SDcard: sector writes&lt;br /&gt;
  3859      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3860      | u32     |  GET |  statistic counter: SDcard: sector r/w failures&lt;br /&gt;
  3860      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3861      | u32     |  GET |  statistic counter: number of opened files&lt;br /&gt;
  3861      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3862..3999|         |  GET |  n/a (reserved)&lt;br /&gt;
  3862..3999|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4000..4099| i32     |  GET |  Shared Variables: S00 through S99 - read&lt;br /&gt;
  4000..4099| i32     |  SET |  Shared Variables: S00 through S99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4100..4199| u32     |  GET |  Shared Variables: U00 through U99 - read&lt;br /&gt;
  4100..4199| u32     |  SET |  Shared Variables: U00 through U99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4200..4299| f32     |  GET |  Shared Variables: F00 through F99 - read&lt;br /&gt;
  4200..4299| f32     |  SET |  Shared Variables: F00 through F99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4300..4399| a       |  GET |  Shared Variables: T00 through T99 - read&lt;br /&gt;
  4300..4399| a       |  SET |  Shared Variables: T00 through T99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4400..4989|         |  GET |  n/a (reserved)&lt;br /&gt;
  4400..4989|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4990..4999| u32     |  GET |  read this to get a value of an automatic SECOND DOWN-COUNTER #1..#10 (it does decrease its internal value by 1 for each 1 second, down to 0 where it stays, until restarted by writing)&lt;br /&gt;
  4990..4999| u32     |  SET |  write this to set/start/restart an automatic SECOND DOWN-COUNTER #1..#10&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  5000..5127| u/i/f 32|  GET |  BackUp-RAM (FC version 0x08+) - write&lt;br /&gt;
  5000..5127| u/i/f 32|  SET |  BackUp-RAM (FC version 0x08+) - read&lt;br /&gt;
 -----------+-+-------+------+--&lt;br /&gt;
  5128..11197 |       |  GET |  n/a (reserved)&lt;br /&gt;
  5128..11197 |       |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+-+-------+------+--&lt;br /&gt;
  11198     | u32     |  GET |  mqtt_publish PUBLISH Fixed Header value ( 0b0011dqqr : d=DUP, qq=QOS, r=RETAIN ) &lt;br /&gt;
  11198     | u32     |  SET |  write ( default: 0b00110001 )&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  11199     | u/i 32  |  GET |  FW support for MQTT-c (0 == NOT present)&lt;br /&gt;
  11199     |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12200     | i32     |  GET |  work progress (and result) of mqtt_connect()&lt;br /&gt;
  12200     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12201     | i32     |  GET |  &amp;quot;CONNACK Connect Return&amp;quot; - result of mqtt_connect()&lt;br /&gt;
  12201     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12202     | i32     |  GET |  result of: mqtt_publish(), mqtt_subscribe(), mqtt_unsubscribe_index(), mqtt_unsubscribe_name()&lt;br /&gt;
  12202     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12203     | i32     |  GET |  MQTT protocol error counter (informative)&lt;br /&gt;
  12203     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12204..12208 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12204..12208 |      |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12209     | i32     |  GET |  Subscribe Table - total number of available rows&lt;br /&gt;
  12209     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12210     | a       |  GET |  latest received Topic Name (sent from broker)&lt;br /&gt;
  12210     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12211..12241 | a    |  GET |  Subscribe Table: Topic Name for each table row&lt;br /&gt;
  12211..12241 |      |  SET |  n/a&lt;br /&gt;
 --------------+------+------+--&lt;br /&gt;
  12242..12249 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12242..12249 |      |  SET |  n/a&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12250     | a       |  GET |  latest received Value (sent from broker)&lt;br /&gt;
  12250     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12251..12281 | a    |  GET |  Subscribe Table: actual Value for each table row&lt;br /&gt;
  12251..12281 |      |  SET |  n/a&lt;br /&gt;
 --------------+------+------+--&lt;br /&gt;
  12282..12289 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12282..12289 |      |  SET |  n/a&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12290     | u32     |  GET |  timestamp for the latest received data (Topic) from broker&lt;br /&gt;
  12290     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+--+---+--+--&lt;br /&gt;
  12291..12321 | u32 (a) |  GET |  Subscribe Table: timestamp for the last Value update, for each table row&lt;br /&gt;
  12291..12321 |         |  SET |  n/a&lt;br /&gt;
 --------------+------+--+---+--+--&lt;br /&gt;
  12322..12398 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12322..12398 |      |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12399     | u/i 32  |  GET |  FW support for MODBUS-TCP-c (0 == NOT present)&lt;br /&gt;
  12399     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12400     | i32     |  GET |  work progress (and result) of modbus_tcp_connect()&lt;br /&gt;
  12400     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12401     | i32     |  GET |  progress/result for function 0x01 - modbus_tcp_read(uid, 0x01, ...);&lt;br /&gt;
  12401     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12402     | i32     |  GET |  progress/result for function 0x02 - modbus_tcp_read(uid, 0x02, ...);&lt;br /&gt;
  12402     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12403     | i32     |  GET |  progress/result for function 0x03 - modbus_tcp_read(uid, 0x03, ...);&lt;br /&gt;
  12403     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12404     | i32     |  GET |  progress/result for function 0x04 - modbus_tcp_read(uid, 0x04, ...);&lt;br /&gt;
  12404     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12405     | i32     |  GET |  progress/result for function 0x05 - modbus_tcp_writesingle(uid, 0x05, ...);&lt;br /&gt;
  12405     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12406     | i32     |  GET |  progress/result for function 0x06 - modbus_tcp_writesingle(uid, 0x06, ...);&lt;br /&gt;
  12406     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12407..12414 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12407..12414 |      |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12415     | i32     |  GET |  progress/result for function 0x0F - modbus_tcp_writemultiple(uid, 0x0F, ...);&lt;br /&gt;
  12415     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12416     | i32     |  GET |  progress/result for function 0x10 - modbus_tcp_writemultiple(uid, 0x10, ...);&lt;br /&gt;
  12416     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12417..12462 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12417..12462 |      |  SET |  n/a (reserved) &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12463     | u/i 32  |  GET |  latest Unit Identifier value written to MBAP header (msg TX to server)&lt;br /&gt;
  12463     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12464     | u/i 32  |  GET |  latest Transaction Identifier value written to MBAP header (msg TX to server)&lt;br /&gt;
  12464     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12465     | u/i 32  |  GET |  timestamp of the latest received message&lt;br /&gt;
  12465     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12466     | u/i 32  |  GET |  a count of received items inside the latest received message&lt;br /&gt;
  12466     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12467     | u/i 32  |  GET |  latest received Unit Identifier value (inside incoming MBAP header)&lt;br /&gt;
  12467     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12468     | u/i 32  |  GET |  latest received Transaction Identifier value (inside incoming MBAP header)&lt;br /&gt;
  12468     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12469     | u/i 32  |  GET |  an address of the first coil/input/register item (maps to a value in 12470)&lt;br /&gt;
  12469     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+--+---+--+--&lt;br /&gt;
  12470..12719 | i32 (a) |  GET |  received values (latest received message contents)&lt;br /&gt;
  12470..12719 |         |  SET |  n/a &lt;br /&gt;
 --------------+---------+------+--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Poznámky''' &lt;br /&gt;
&lt;br /&gt;
Položky obsahující: &amp;quot;konfigurační struktura&amp;quot; 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ý &amp;quot;struct&amp;quot; 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í [[FULL-C:_set_and_get:_detailed|příklady]], které přesně popisují postup pro každý typ takové struktury - a vysvětlují tuto poznámku svým kódem.&lt;br /&gt;
&lt;br /&gt;
Indexy označené jako '''(a)''' lze ''blokově číst'' (pozor, označené specificky jako &amp;quot;a v závorce&amp;quot;). Vždy ale lze ''blokové čtení'' (tj. čtení více indexů najednou, za sebou, v rámci povoleného rozsahu) provést pouze od prvního indexu v bloku (ne od dalších v bloku).&lt;br /&gt;
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ává dalším parametrem při volání SDS_get_a() funkce.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Sdílené proměnné je potřeba nejprve definovat, aby je šlo použít, a aby k nim šlo přistupovat přes set/get funkce - viz specifická stránka na této wiki.&lt;br /&gt;
&lt;br /&gt;
Detaily (významy hodnot) pro položky ''MQTT klient'' a ''MODBUS-TCP klient'' jsou rozepsány na příslušných odpovídajících stránkách na této wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Vysvětlení položek'''&lt;br /&gt;
&lt;br /&gt;
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í.&lt;br /&gt;
To naleznete na dalších stránkách v rámci této wiki, nebo se nás rovnou zeptejte (přes forum).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Vstupy pro měření napětí'''&lt;br /&gt;
&lt;br /&gt;
Detaily k A/D vstupům jsou uvedeny [[SDS_2PR:_ADC_vstupy_a_kalibrace|zde]]. Pro psaní programu je důležité mapování '''index'''u na jednotlivé vstupy, viz [[SDS_2PR:_ADC_vstupy_a_kalibrace|tabulka]].&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C_dns_resolv_functions&amp;diff=950</id>
		<title>FULL-C dns resolv functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C_dns_resolv_functions&amp;diff=950"/>
		<updated>2025-08-10T08:19:11Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje programovací jazyk '''FULL-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Některá zařízení používají SDS-C, pro který máme návody jinde na této WiKi.&lt;br /&gt;
&lt;br /&gt;
== Síťové funkce: dotaz na přidělenou IP adresu pro DNS jméno ==&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS umožňuje odeslat dotaz na DNS server, za účelem zjištění IP adresy přidělené k DNS názvu, který je obsahem právě takového dotazu.&lt;br /&gt;
&lt;br /&gt;
Za tímto účelem jsou k dispozici tyto dvě funkce:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void dns_resolv(char *domainNameInput);&lt;br /&gt;
 unsigned int dns_resolv_status(unsigned int *IP0value, unsigned int *IP1value, unsigned int *IP2value, unsigned int *IP3value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Princip ==&lt;br /&gt;
&lt;br /&gt;
SDS odesílá dotaz na DNS server, který je nastaven uživatelem SDS ve webové administraci zařízení (popř. je adresa DNS serveru získána z DHCP serveru, opět záleží na konfiguraci).&lt;br /&gt;
&lt;br /&gt;
Po odeslání dotazu se čeká na odpověď, přičemž FULL-C program pravidelně kontroluje stav voláním '''dns_resolv_status()''' funkce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''POZOR : Maximální délka názvu DNS domény je interně omezena na 96 znaků !'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Příklad ==&lt;br /&gt;
&lt;br /&gt;
V tomto příkladu odesílá SDS dotaz (textový název domény) na DNS server a zobrazuje případnou získanou odpověď (IP adresu).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 char DNSname[96];&lt;br /&gt;
 unsigned int status;&lt;br /&gt;
 unsigned int IP0, IP1, IP2, IP3;&lt;br /&gt;
&lt;br /&gt;
 sprintf((char *)DNSname, &amp;quot;www.google.com&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 printf(&amp;quot;RESOLVING %s \n&amp;quot;, DNSname);&lt;br /&gt;
&lt;br /&gt;
 // start - select the new DNSname for all the subsequent status function calls&lt;br /&gt;
 dns_resolv(DNSname);&lt;br /&gt;
&lt;br /&gt;
 // get the first status value&lt;br /&gt;
 status = dns_resolv_status(&amp;amp;IP0, &amp;amp;IP1, &amp;amp;IP2, &amp;amp;IP3);&lt;br /&gt;
 // only if truly working, keep waiting&lt;br /&gt;
 while (512 == status)&lt;br /&gt;
 {&lt;br /&gt;
   // keep getting a new status, until it is different than 512&lt;br /&gt;
   status = dns_resolv_status(&amp;amp;IP0, &amp;amp;IP1, &amp;amp;IP2, &amp;amp;IP3);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 // check the final status value&lt;br /&gt;
 if (513 == status)&lt;br /&gt;
 {&lt;br /&gt;
   printf(&amp;quot;GOT RESULT: IP = %u.%u.%u.%u\n&amp;quot;, IP0, IP1, IP2, IP3);&lt;br /&gt;
   // only in this case, we can use the IPx address&lt;br /&gt;
   // ... OK&lt;br /&gt;
&lt;br /&gt;
   // we can print the additional internal DNS cache status, for this particular domain&lt;br /&gt;
   // note. the value is valid only if the status is 512, otherwise not&lt;br /&gt;
   unsigned int ttl;&lt;br /&gt;
   ttl = SDS_get_u(70); // index [70] = actual TTL value for the selected DNS cache item &lt;br /&gt;
   printf(&amp;quot;DNS CACHE TTL VALUE IS %u SECONDS FOR DOMAIN %s\n&amp;quot;, ttl, DNSname);&lt;br /&gt;
 } else&lt;br /&gt;
 {&lt;br /&gt;
   printf(&amp;quot;DNS RESOLV FAILED (error %u) \n&amp;quot;, status);&lt;br /&gt;
   // in this case, the IPx adress is not valid, and you need to repeat the dns_resolv() call again&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interní DNS cache ==&lt;br /&gt;
&lt;br /&gt;
Po úspěšném provedení získání DNS překladu, kdy SDS odešle dotaz na určený DNS server, a získá z něj odpověď, &lt;br /&gt;
je výsledek k dispozici (dá se získat pomocí dns_resolv_status funkce).&lt;br /&gt;
&lt;br /&gt;
Funkce dns_resolv_status() vrací vždy výsledek toho úplně posledního dotazu, který byl vyvolán zavoláním funkce dns_resolv().&lt;br /&gt;
&lt;br /&gt;
Platná odpověď z DNS serveru je uložena do interní tabulky (DNS cache) v SDS. &lt;br /&gt;
&lt;br /&gt;
Pokud je zbývající hodnota TTL větší než 0, bude ihned k dispozici odpověď z interní cache.&lt;br /&gt;
&lt;br /&gt;
Pokud záznam v interní cache není (nebo už vypršel), bude automaticky odeslána žádost o nový překlad na DNS server.&lt;br /&gt;
&lt;br /&gt;
Toto si řídí SDS interně.&lt;br /&gt;
&lt;br /&gt;
Váš program tedy vždy, když potřebuje IP adresu pro jakoukoliv doménu, tak vždy musí nejprve zavolat dns_resolv(). Tím se jednak vybere aktuální doména, pro kterou chcete získat platnou aktuální IP adresu (a lze ji tedy přečíst pomocí dns_resolv_status() funkce), a také se spustí mechanismus kontroly interní cache a eventuálního odeslání nového dotazu.&lt;br /&gt;
&lt;br /&gt;
Nový dotaz není odeslán automaticky, tedy SDS samo neodesílá nové dotazy, když položka v interní DNS cache vyprší. Toto máte plně pod kontrolou vy, a to tak, že voláte funkci dns_resolv(), která se teprve v ten moment (kdy ji ze svého programu zavoláte) rozhodne, jestli bude nový dotaz posílat, nebo ne (čistě dle stavu obsahu interní DNS cache). Pokud v cache není záznam pro danou doménu, nebo je ale už vypršel (TTL na nule), tak dojde k odeslání dotazu, a váš program pak musí čekat na odpověď (viz příklad výše, periodickým voláním dns_resolv_status(), kdy se průběžně zařídí dle vrácené hodnoty od této funkce).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Upozornění ==&lt;br /&gt;
&lt;br /&gt;
Starší FW mělo bug, kdy při vypršení TTL v interní cache nedošlo ke smazání položky v interni cache. Toto je samozřejmě problém, který je vyřešen v novém firmware.&lt;br /&gt;
&lt;br /&gt;
DNS cache je (záměrně) vymazána při:&lt;br /&gt;
* nahrání nového FULLC programu&lt;br /&gt;
* restartu zařízení SDS&lt;br /&gt;
&lt;br /&gt;
DNS cache není vymazána při výpadku Ethernetového připojení.&lt;br /&gt;
&lt;br /&gt;
DNS cache lze ručně vymazat zapsáním hodnoty 0xE4A5ECAC do systémové proměnné na indexu [70]. Zápis této speciální hodnoty kompletně smaže interní DNS cache. Tato specifická funkcionalita vyžaduje aktuální firmware (bylo to přidáno až 08/2025).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stavové hodnoty ==&lt;br /&gt;
&lt;br /&gt;
Program musí použít volání funkce '''dns_resolv_status''' pro zjištění okamžitého stavu. Dokud nezískáte finální stavovou hodnotu, musíte tuto funkci volat opakovaně (nezapomeňte na vlastní bezpečnostní timeout).&lt;br /&gt;
&lt;br /&gt;
  dns_resolv_status()       význam&lt;br /&gt;
 -------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
  0                       |  klid, můžete odeslat DNS dotaz, funkce dns_resolv_status() současně nevrací platnou IP adresu (musíte nejprve spustit DNS překlad)&lt;br /&gt;
  512                     |  pracuje, dotaz odeslán (překlad nenalezen v interní cache), čekejte (funkce současně nevrací platnou IP adresu, ta bude až po dokončení překladu)&lt;br /&gt;
  513                     |  hotovo OK, do *resolvedIPaddressOutput byla zapsána IP adresa (4 bajty), a záznam v interní cache je platný a živý (zbývající TTL větší než 0)&lt;br /&gt;
  514                     |  odpověď nebyla získána (chyba) a současně nemáme záznam v interní DNS cache, takže funkce nevrací platnou IP adresu (musíte znovu začít s dotazem)&lt;br /&gt;
  515                     |  funkce byla zavolána s neplatnými parametry - nic nebylo provedeno, funkce nevrací platnou IP adresu&lt;br /&gt;
  516                     |  dotaz selhal, protože došlo k odpojení Ethernetu&lt;br /&gt;
  517                     |  dotaz selhal, protože došlo ke ztrátě vlastní přidělené IP adresy zařízení SDS (typicky když vyprší IP z DHCP a není ještě obnovena)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pokud funkce dns_resolv_status() vrátila hodnotu 513, je možné číst systémovou proměnnou z indexu [70] (uint32_t), která ukáže hodnotu TTL v momentu, kdy tuto hodnotu právě čtete. Lze takto sledovat, jak se postupně TTL snižuje (o 1 každou sekundu). Hodnota TTL odpovídá dané položce v interní cache, která byla určena právě posledním voláním funkce dns_resolv().&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_set_and_get&amp;diff=949</id>
		<title>FULL-C: set and get</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C:_set_and_get&amp;diff=949"/>
		<updated>2025-08-10T08:03:16Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje programovací jazyk '''FULL-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Některá zařízení používají SDS-C, pro který máme návody jinde na této WiKi.&lt;br /&gt;
&lt;br /&gt;
== Jak je FULL-C program připojen k hardware ==&lt;br /&gt;
&lt;br /&gt;
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é).&lt;br /&gt;
&lt;br /&gt;
Za tímto účelem je k dispozici sada C funkcí, které může program volat a které buď navrátí aktuální stav (&amp;quot;get&amp;quot; funkce), nebo stav změní (&amp;quot;set&amp;quot; funkce).&lt;br /&gt;
&lt;br /&gt;
Zde je seznam těchto funkcí:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void SDS_set_i32(unsigned int index, signed int value);&lt;br /&gt;
   signed int SDS_get_i32(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_i64(unsigned int index, int64_t value);&lt;br /&gt;
   signed int SDS_get_i64(unsigned int index);&lt;br /&gt;
  &lt;br /&gt;
         void SDS_set_u32(unsigned int index, unsigned int value);&lt;br /&gt;
 unsigned int SDS_get_u32(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_u64(unsigned int index, uint64_t value);&lt;br /&gt;
 unsigned int SDS_get_u64(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_f32(unsigned int index, float value);&lt;br /&gt;
        float SDS_get_f32(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_a(unsigned int index, void *ptr, unsigned int len);&lt;br /&gt;
         void SDS_get_a(unsigned int index, void *ptr, unsigned int maxlen);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Historicky zde původně byly i tyto funkce:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void SDS_set_i(unsigned int index, signed int value);&lt;br /&gt;
   signed int SDS_get_i(unsigned int index);&lt;br /&gt;
 &lt;br /&gt;
         void SDS_set_u(unsigned int index, unsigned int value);&lt;br /&gt;
 unsigned int SDS_get_u(unsigned int index);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Ty &amp;quot;nezmizely&amp;quot; jen byly '''přejmenovány''' (i na i32, u na u32). &lt;br /&gt;
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ý.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Detailní Příklady ===&lt;br /&gt;
&lt;br /&gt;
Přečtěte si nejprve celou tuto stránku, ať pochopíte princip. Následně se podívejte na [[FULL-C:_set_and_get:_detailed|jednotlivé příklady zde]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Princip ==&lt;br /&gt;
&lt;br /&gt;
Základem je použití přístupu k informacím prostřednictvím tzv. '''index'''u.&lt;br /&gt;
&lt;br /&gt;
Pod každou položkou (číselným '''index'''em) je schována odpovídající činnost nebo hodnota (např. '''index = 3''' vrátí přes &amp;quot;get&amp;quot; funkci aktuální hodnotu &amp;quot;UpTime&amp;quot;, viz tabulka).&lt;br /&gt;
&lt;br /&gt;
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 funkci):&lt;br /&gt;
&lt;br /&gt;
  typ položky              | rozsah         | typ proměnné    | postfix set\get funkce&lt;br /&gt;
 --------------------------+----------------+-----------------+-------------------------&lt;br /&gt;
   signed 32-bit integer   |  -2^31..+2^31  |  int            |  _i32&lt;br /&gt;
   signed 64-bit integer   |  -2^63..+2^63  |  int64_t        |  _i32&lt;br /&gt;
   unsigned 32-bit integer |      0..+2^32  |  unsigned int   |  _u64&lt;br /&gt;
   unsigned 64-bit integer |      0..+2^64  |  uint64_t       |  _u64&lt;br /&gt;
   IP address              |  uchar[4]      |  unsigned int   |  _u32&lt;br /&gt;
   float                   |  IEEE-754      |  float          |  _f32&lt;br /&gt;
   string (text)           |  len\maxlen    |  void* \ char*  |  _a&lt;br /&gt;
   binary array            |  len\maxlen    |  void* \ char*  |  _a&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, bude při psaní programu potřeba správně vybrat postfix u dané funkce.&lt;br /&gt;
&lt;br /&gt;
Příklad: chceme zapsat desetinné číslo &amp;quot;numf&amp;quot;, v tom případě se jedná o typ &amp;quot;float numf;&amp;quot; a musíme použít ''SDS_set_f(index, numf);''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Funkce _u32 \ _i32 \ _f32 ==&lt;br /&gt;
&lt;br /&gt;
Základní funkce určené pro získání číselné hodnoty &amp;quot;z&amp;quot; SDS, popř. zápisu číselné hodnoty &amp;quot;do&amp;quot; SDS. Vždy se jedná o kombinaci ''index''u (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).&lt;br /&gt;
&lt;br /&gt;
Č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é).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
První příklad: ''čtení'' 32bitové hodnoty bez znaménka&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
unsigned int NTPtime;&lt;br /&gt;
NTPtime = SDS_get_u32(4);&lt;br /&gt;
printf(&amp;quot;Aktuální Epoch Time je %u (secs).\n&amp;quot;, NTPtime);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Druhý příklad: ''čtení'' 32bitové hodnoty se znaménkem&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int NTPoffset;&lt;br /&gt;
NTPoffset = SDS_get_i32(26);&lt;br /&gt;
printf(&amp;quot;Offset pro NTP čas je: %d hod.\n&amp;quot;, NTPoffset);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Třetí příklad: ''čtení'' float hodnoty&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
float AD_Rinput__in_user_units;&lt;br /&gt;
AD_Rinput__in_user_units = SDS_get_f32(311);&lt;br /&gt;
printf(&amp;quot;Resistance Measure Input value is: %0.3f \n&amp;quot;, AD_Rinput__in_user_units);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Čtvrtý příklad: ''zápis'' 32bitové hodnoty bez znaménka&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// zapni RELE 1 (zápisem nenulové hodnoty na index [231], viz tabulka)&lt;br /&gt;
SDS_set_u32(231, 0xFF); &lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Funkce _u64 \ _i64 ==&lt;br /&gt;
&lt;br /&gt;
Princip je identický jako pro _u32 a _i32 funkce. &lt;br /&gt;
&lt;br /&gt;
Vždy se podívejte do tabulky, jaké informace můžete v 64bitové formě dostat; většina jich je pouze ve 32bit formě.&lt;br /&gt;
To ale nevadí, protože přeci například není problém do proměnné typu uint64_t zapsat 32bitové číslo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Funkce _a ==&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
První příklad: čtení textového parametru&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// definujeme si pole o velikosti 32 bajtů; tzn. sem se vleze až 31 znaků plus jeden ukončovací 0x00&lt;br /&gt;
char sysLoc[32];&lt;br /&gt;
&lt;br /&gt;
// SDS uloží text z indexu [2] do pole &amp;quot;sysLoc&amp;quot;, o maximální velikosti 32 bajtů&lt;br /&gt;
SDS_get_a(2, (void *)sysLoc, 32);&lt;br /&gt;
&lt;br /&gt;
// a můžeme se podívat na výsledek (výpis do konzole)&lt;br /&gt;
printf(&amp;quot;Nastavená system location: %s \n&amp;quot;, sysLoc);&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Druhý příklad: čtení pole údajů - '''pouze''' položky z indexu označeného (a) v tabulce indexů&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
// definujeme si pole o 8 položkách, které obsahuje prvky typu &amp;quot;unsigned int&amp;quot; (každý tento prvek má velikost: 4 bajty)&lt;br /&gt;
unsigned int OPTOvalues[8];&lt;br /&gt;
 &lt;br /&gt;
// SDS zapíše 8 pozic od indexu [151] do pole OPTOvalues&lt;br /&gt;
// maximální velikost zápisu = 8*4 , tzn. 8 položek v poli OPTOvalues, každá o 4 bajtech&lt;br /&gt;
SDS_get_a(151, (void *)OPTOvalues, 8 * 4);&lt;br /&gt;
&lt;br /&gt;
// a muzeme pristupovat na jednotlive polozky (jejich obsah je platny vuci okamziku zavolani GET funkce)&lt;br /&gt;
if (0 == OPTOvalues[0]) ...&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
Pro tyto přístupy je potřeba uvést, že blokové čtení funguje jen vždy od prvního indexu pro daný blok indexů.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Na zcela stejném přístupu funguje '''SDS_set_a()''' funkce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Úplné detaily a všechny příklady ==&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
'''Detailní přehled, doplněný o příklady ve FULL-C, naleznete zde: [[FULL-C: set and get: detailed]]'''.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Tabulka ==&lt;br /&gt;
&lt;br /&gt;
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. &lt;br /&gt;
&lt;br /&gt;
Je li také uveden klíč &amp;quot;(a)&amp;quot;, 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.).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 -----------+---------+------+--------------------------------------------------------------------------------------------------------&lt;br /&gt;
   index    | i\u\f\a |  dir |  comment&lt;br /&gt;
 -----------+---------+------+--------------------------------------------------------------------------------------------------------&lt;br /&gt;
   0        | u32     |  GET |  firmware PAIRCODE (SDS device master-type identification)&lt;br /&gt;
   0        |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   1        | u32     |  GET |  count of actually logged-in users (logged-in to SDS web admin)&lt;br /&gt;
   1        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   2        | u32     |  GET |  unique ID for SDS (serial number assigned during manufacturing)&lt;br /&gt;
   2        | a       |  GET |  sysLocation (user configured text)&lt;br /&gt;
   2        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   3        | u32     |  GET |  uptime (increased by 1 each every 10msec) (example: 100 = 1 sec)&lt;br /&gt;
   3        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   4        | u32     |  GET |  LOCAL time (NTP UTC Epoch, with GMT-offset and DST-offset applied), value in seconds&lt;br /&gt;
   4        |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   5        | u32     |  GET |  LOCAL time decomposition = value of DAY (1 through 31)&lt;br /&gt;
   5        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   6        | u32     |  GET |  LOCAL time decomposition = value of MONTH (1 through 12)&lt;br /&gt;
   6        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   7        | u32     |  GET |  LOCAL time decomposition = value of YEAR (full value)&lt;br /&gt;
   7        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   8        | u32     |  GET |  LOCAL time decomposition = value of HOUR (0 through 23)&lt;br /&gt;
   8        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   9        | u32     |  GET |  LOCAL time decomposition = value of MINUTE (0 through 59)&lt;br /&gt;
   9        |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   10       | u32     |  GET |  LOCAL time decomposition = value of SECOND (0 through 59)&lt;br /&gt;
   10       |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   11       | u32     |  GET |  LOCAL time decomposition = day-of-week number = number of days since Sunday (0 to 6)&lt;br /&gt;
   11       |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   12       | u32     |  GET |  SDS device IP address (web admin IP)&lt;br /&gt;
   12       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   13..15   |         |  GET |  n/a (reserved)&lt;br /&gt;
   13..15   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   16       | u32     |  GET |  network gateway IP address&lt;br /&gt;
   16       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   17..19   |         |  GET |  n/a (reserved)&lt;br /&gt;
   17..19   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   20       | u32     |  GET |  network IP MASK&lt;br /&gt;
   20       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   21       | a       |  GET |  SNMPv3 - EngineID (FC: prepare buffer for 32 chars + trailing zero)&lt;br /&gt;
   21       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   22       | u32     |  GET |  SNMPv3 - Engine Boots &lt;br /&gt;
   22       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   23       | u32     |  GET |  SNMPv3 - Engine Time &lt;br /&gt;
   23       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   24       | u32     |  GET |  Ethernet Link Status&lt;br /&gt;
   24       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   25       | u32     |  GET |  Ethernet Link Speed (0, 10 or 100)&lt;br /&gt;
   25       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   26       | i32     |  GET |  read NTP GMT offset (-11 .. 11) = offset, in hour(s), between UTC and LOCAL time&lt;br /&gt;
   26       | i32     |  SET |  set NTP GMT offset (warning: this is not stored to permanent memory - use web admin to store it permanently)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   27       | u32     |  GET |  validity of the assigned IP address (0 = SDS does not have any IP address assigned, at the moment)&lt;br /&gt;
   27       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   28       | u32     |  GET |  timestamp of last change (assignment) of IP address &lt;br /&gt;
   28       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   29       | u32     |  GET |  state of DHCP client (0 = disabled, OR: enabled = status value of 1 .. 11)&lt;br /&gt;
   29       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   30       | u32     |  GET |  DHCP lease time (secs) value&lt;br /&gt;
   30       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   31       | u32     |  GET |  MAC[0] (always use only the lowest 8 bits, for each item)&lt;br /&gt;
   31       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   32       | u32     |  GET |  MAC[1]&lt;br /&gt;
   32       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   33       | u32     |  GET |  MAC[2]&lt;br /&gt;
   33       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   34       | u32     |  GET |  MAC[3]&lt;br /&gt;
   34       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   35       | u32     |  GET |  MAC[4]&lt;br /&gt;
   35       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   36       | u32     |  GET |  MAC[5]&lt;br /&gt;
   36       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   37..39   |         |  GET |  n/a (reserved)&lt;br /&gt;
   37..39   |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   40       | u32     |  GET |  SoC power-up or reset reason (64/128 = read only LSB: 8 bits) (512 = read all 32 bits)&lt;br /&gt;
   40       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   41       | a       |  GET |  OEM branding (login web page) [32 chars]&lt;br /&gt;
   41       | a       |  SET |  set custom OEM branding (login web page) [32 chars]&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   42       | a       |  GET |  OEM branding (welcome web page) [128 chars]&lt;br /&gt;
   42       | a       |  SET |  set custom OEM branding (welcome web page) [128 chars]&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   43       | u32     |  GET |  NTP-server IP address&lt;br /&gt;
   43       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   44       | u32     |  GET |  NTP-client status (0 = NOT synchronized)&lt;br /&gt;
   44       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   45       | u32     |  GET |  UpTime value - units: msec (uptime is constantly counted since then latest SDS FW boot)&lt;br /&gt;
   45       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   46       | u32     |  GET |  temperature of SoC - the RAW value (you have to manually recalculate this raw value to get degC)&lt;br /&gt;
   46       | i32     |  GET |  temperature of SoC - already recalculated to degC (SDS does have, and uses, all the required calibration info)&lt;br /&gt;
   46       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   48..60   |         |  GET |  n/a (reserved)&lt;br /&gt;
   48..60   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   61       | u32     |  GET |  read this to get a 32-bit Random Number (HW RNG)&lt;br /&gt;
   61       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   62..63   |         |  GET |  n/a (reserved)&lt;br /&gt;
   62..63   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   64       | u32     |  GET |  read this to get a value of an automatic SECOND DOWN-COUNTER #0 (it does decrease its internal value by 1 for each 1 second, down to 0 where it stays, until restarted by writing)&lt;br /&gt;
   64       | u32     |  SET |  write this to set/start/restart an automatic SECOND DOWN-COUNTER #0&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   65       | u32     |  GET |  get state of the DST automatic (0 = not used) (1 = DST used and DST shift is applied) (2 = DST used but NO shift applied)&lt;br /&gt;
   65       | u32     |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   66       | u32     |  GET |  DNS-server IP address&lt;br /&gt;
   66       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   67       | u32     |  GET |  info about SDS device IP address origin (0=none, 1=manual, 2=dhcp)&lt;br /&gt;
   67       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   68       | u32     |  GET |  info about DNS server IP address origin (0=none, 1=manual, 2=dhcp)&lt;br /&gt;
   68       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   69       |         |  GET |  n/a (reserved) &lt;br /&gt;
   69       |         |  SET |  n/a (reserved) &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   70       | u32     |  GET |  DNS RESOLV - actual TTL live value (= 1..MAX, in seconds) for the very last resolved DNS name (or 0 = no resolv done/finished yet)&lt;br /&gt;
   70       | u32     |  SET |  write 0xE4A5ECAC to manually clear the WHOLE internal DNS cache (will force fresh DNS request once dns_resolv() is called by program)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   71..77   |         |  GET |  n/a (reserved) &lt;br /&gt;
   71..77   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   78       | u32     |  GET |  SDS HW availability detail (information): 0 = single PWM output / 4 = four PWM outputs&lt;br /&gt;
   78       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   79       | u32     |  GET |  SDS HW sub-type (information): 1 = variant &amp;quot;DP&amp;quot; / 0 = basic BIG (no DP)&lt;br /&gt;
   79       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   80       | u32     |  GET |  SDS HW sub-type (information): 1 = variant &amp;quot;DS84&amp;quot; / 0 = no DS84&lt;br /&gt;
   80       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   81..84   |         |  GET |  n/a (reserved) &lt;br /&gt;
   81..84   |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   85       | u32     |  GET |  SDS module type (BIG, BIG2 or STSW) discrimination:  0 = STSW or SMALL / 1 = BIG / 2 = BIG2&lt;br /&gt;
   85       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   86       | u32     |  GET |  FC: actual state (running, uploading, failed etc.) of the FULL-C program (0, 1, 2, 4, 8, 16, 32, 64)&lt;br /&gt;
   86       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   87       | u32     |  GET |  FC: unique identifier of the actually uploaded FULL-C program&lt;br /&gt;
   87       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   88       |         |  GET |  n/a (reserved) &lt;br /&gt;
   88       |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   89       | u32     |  GET |  SDS IP-WatchDog: state (0 = OFF)&lt;br /&gt;
   89       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   90       | u32     |  GET |  SDS IP-WatchDog: last known RTT (msecs)&lt;br /&gt;
   90       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   91       | u32     |  GET |  SDS IP-WatchDog: logical output status&lt;br /&gt;
   91       |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   92..131  |         |  GET |  n/a (reserved)&lt;br /&gt;
   92..131  |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   132      | u32     |  GET |  FC: UTC time value, of the last FC-WDG restart of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
   132      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   133      | u32     |  GET |  FC: UpTime value, of the last FC-WDG restart of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
   133      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   134      | a       |  GET |  FC: archived text of the last FC error&lt;br /&gt;
   134      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   135      | u32     |  GET |  FC: number of FC-WDF restarts of this (same) program (zeroed when a new program is uploaded)&lt;br /&gt;
   135      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   136      | u32     |  GET |  FC: total count of all FC program starts, since the SDS boot&lt;br /&gt;
   136      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   137      | u32     |  GET |  read an actual SDS CPU cycle counter (number of executed instructions since power-up/reboot), continuously wraps around, (1 step = approx. 2 nsec)&lt;br /&gt;
   137      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   138      | u32     |  GET |  get SDS internal RTC power-on status (0 = invalid data after powerup in RTC) (1 = RTC data OK and were used on powerup) &lt;br /&gt;
   138      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   139      | u32     |  GET |  NTP true actual raw epoch-time (secs since Linux Epoch) = clean UTC with *no* GMT nor DST offset applied&lt;br /&gt;
   139      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   140      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:401)&lt;br /&gt;
   140      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:401)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   141      | a       |  GET |  FC: custom TRAP variable - read (TRAP:402)&lt;br /&gt;
   141      | a       |  SET |  FC: custom TRAP variable - write to change (TRAP:402) (note. max 32 characters)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   142      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:403)&lt;br /&gt;
   142      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:403)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   143      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:404)&lt;br /&gt;
   143      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:404)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   144      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:405)&lt;br /&gt;
   144      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:405)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   145      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:406)&lt;br /&gt;
   145      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:406)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   146      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:407)&lt;br /&gt;
   146      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:407)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   147      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:408)&lt;br /&gt;
   147      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:408)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   148      | u32     |  GET |  FC: custom TRAP variable - read (TRAP:409)&lt;br /&gt;
   148      | u32     |  SET |  FC: custom TRAP variable - write to change (TRAP:409)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   149      |         |  GET |  n/a (reserved)&lt;br /&gt;
   149      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   150      |         |  GET |  FC: shared-variables access control - read state of the access control&lt;br /&gt;
   150      |         |  SET |  FC: shared-variables access control - use this to force a user-login in order to access the shared variables (0 = access without login is enabled)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   151..182 | u32 (a) |  GET |  OPTO1..OPTO32 status (warning: 0 = input ACTIVE = with signal) (non-zero = input not active = no signal)&lt;br /&gt;
   151..182 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   183      | u32     |  GET |  SDS FW date stamp (or just 0x00000000 for a very old firmware) - use this to verify the features or to ask user to update the firmware to a required newer version&lt;br /&gt;
   183      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   184      | u32     |  GET |  FC: information about how this actual running program was started (0 = none) (1 = normal) (2 = fc-wdg or manual restart) (4 = freshly loaded)&lt;br /&gt;
   184      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   185      | u32     |  GET |  FC: actual FULL-C WatchDog (decreasing) timeout counter value, v msec&lt;br /&gt;
   185      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   186      | u32     |  GET |  (common) frequency for PWM3 and PWM4 generator (1Hz .. 5MHz)&lt;br /&gt;
   186      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   187      | u32     |  GET |  PWM3 duty-cycle percent (0..100 [%])&lt;br /&gt;
   187      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   188      | u32     |  GET |  PWM3 HW: direct &amp;quot;pulse&amp;quot; register value&lt;br /&gt;
   188      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   189      | u32     |  GET |  PWM4 duty-cycle percent (0..100 [%])&lt;br /&gt;
   189      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   190      | u32     |  GET |  PWM4 HW: direct &amp;quot;pulse&amp;quot; register value&lt;br /&gt;
   190      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   191      | u32     |  GET |  (common) frequency for PWM1 and PWM2 generator (1Hz .. 5MHz)&lt;br /&gt;
   191      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   192      | u32     |  GET |  PWM1 duty-cycle percent (0..100 [%])&lt;br /&gt;
   192      |         |  SET |  N/A (use SDS_PWMx_setDutyAsPercents)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   193      | u32     |  GET |  PWM1 HW: read direct &amp;quot;pulse&amp;quot; (compare) register value&lt;br /&gt;
   193      | u32     |  SET |  PWM1 HW: write to direct &amp;quot;pulse&amp;quot; (compare) register value &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   194      | u32     |  GET |  reserved&lt;br /&gt;
   194      |         |  SET |  N/A&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   195      | u32     |  GET |  reserved&lt;br /&gt;
   195      |         |  SET |  N/A&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   196..228 | u32 (a) |  GET |  RELAY1..RELAY32 - &amp;quot;who&amp;quot; controls this output&lt;br /&gt;
   196..228 | u32     |  SET |  RELAY1..RELAY32 - (0 = manual = user via web) (2 = FULL-C) (4 = SDS IPwdg)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   229..230 |         |  GET |  n/a (reserved)&lt;br /&gt;
   229..230 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   231..262 | u32 (a) |  GET |  RELAY1..RELAY32 - output status (0 = off)&lt;br /&gt;
   231..262 | u32     |  SET |  RELAY1..RELAY32 - output status control (0 = off) (!0 = coil activated)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   263..265 |         |  GET |  n/a (reserved)&lt;br /&gt;
   263..265 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   266..297 | a       |  GET |  RELAY1..RELAY32 - identification/name (text, see webadmin)&lt;br /&gt;
   266..297 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   298..300 |         |  GET |  n/a (reserved)&lt;br /&gt;
   298..300 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   301      | u32     |  GET |  status (log0/log1) of GPIO-TOPBOARD pin&lt;br /&gt;
   301      | u32     |  SET |  control the GPIO-TOPBOARD pin value (if direction is set to output)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   302      | u32     |  GET |  direction (in/out) of GPIO-TOPBOARD pin&lt;br /&gt;
   302      | u32     |  SET |  control the GPIO-TOPBOARD pin direction (input or output)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   303..310 |         |  GET |  n/a (reserved)&lt;br /&gt;
   303..310 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   311..342 | f32 (a) |  GET |  AD: recalculated value (float) of A/D input&lt;br /&gt;
   311..342 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   343..374 | a       |  GET |  AD: input identification / name (text)&lt;br /&gt;
   343..374 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   375..406 | a       |  GET |  AD: input unit name (text)&lt;br /&gt;
   375..406 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   407..427 |         |  GET |  n/a (reserved)&lt;br /&gt;
   407..427 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   428      | u32     |  GET |  AD: user-selected type of the OpAmp chip (HW SDS) (0 = AD) (9 = LMV) &lt;br /&gt;
   428      |         |  SET |  n/a (read-only) (configuration to be done via web admin) - note. this must match the HW&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   429      | u32     |  GET |  AD: raw value of Vbatt (raw ADC value). To convert use: Vbatt = (raw * 3.3)/2048 (result in Volts)&lt;br /&gt;
   429      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   430      | u32     |  GET |  AD: value of VrefInt in miliVolts (typical value: 3300)&lt;br /&gt;
   430      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   431..438 | u32 (a) |  GET |  AD: raw value of A/D input in 12bits (0..4095) - for all SDS variants (64, 128 and 512)&lt;br /&gt;
   431..438 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   439..446 | u32 (a) |  GET |  AD: raw value of A/D input in 16bits (0..65535) - available only for the 512 SDS variant&lt;br /&gt;
   439..446 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   447..462 |         |  GET |  n/a (reserved)&lt;br /&gt;
   447..462 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   463..469 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [0]&lt;br /&gt;
   463..469 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   470..476 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [1]&lt;br /&gt;
   470..476 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   477..483 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [2]&lt;br /&gt;
   477..483 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   484..490 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [3]&lt;br /&gt;
   484..490 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   491..497 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [4]&lt;br /&gt;
   491..497 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   498..504 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [5]&lt;br /&gt;
   498..504 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   505..511 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [6]&lt;br /&gt;
   505..511 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   512..518 | f32 (a) |  GET |  AD: calibration constants (F0..F6) for A/D input nr. [7]&lt;br /&gt;
   512..518 |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   519..991 |         |  GET |  n/a (reserved)&lt;br /&gt;
   519..991 |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   992      | u32     |  GET |  UTC timestamp (localtime) of the moment, when local clock gets to 23:59:59 (= last second of this day)&lt;br /&gt;
   992      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   993      | u32     |  GET |  UTC timestamp (localtime) marking a start of yesterday (as a moment since when we capture a new record) (or 0 = if there is no record for yesterday)&lt;br /&gt;
   993      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   994      | u32     |  GET |  UTC timestamp (localtime) marking a start of today (or a moment of SDS power on), since when a today's record is captured&lt;br /&gt;
   994      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   995      | u32     |  GET |  count of seconds, during yesterday, capturing the total length of T0 tariff activity (captures the timespan since [993] to [994])&lt;br /&gt;
   995      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   996      | u32     |  GET |  count of seconds, during yesterday, capturing the total length of T1 tariff activity (captures the timespan since [993] to [994])&lt;br /&gt;
   996      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   997      | u32     |  GET |  count of seconds since the moment of [994] (start of today) until NOW; counting the duration of T0 tariff being active&lt;br /&gt;
   997      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   998      | u32     |  GET |  count of seconds since the moment of [994] (start of today) until NOW; counting the duration of T1 tariff being active&lt;br /&gt;
   998      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
   999      | u32     |  GET |  immediate state of the global Tariff Input (0 = T0 is active right now) (!0 = T1 is active right now)&lt;br /&gt;
   999      | u32     |  SET |  &amp;quot;manual&amp;quot; control of the global Tariff Input (write/control enabled only if the feature is set in web admin - control set to FULL-C)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1000..1031| u32 (a) |  GET |  [S0-input] actual live value of the impulse counter, for T0 tariff&lt;br /&gt;
  1000..1031| u32     |  SET |  [S0-input] modify the impulse counter, for T0 tariff&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1032..1063| u32 (a) |  GET |  [S0-input] actual live value of the impulse counter, for T1 tariff&lt;br /&gt;
  1032..1063| u32     |  SET |  [S0-input] modify the impulse counter, for T0 tariff&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1064..1095| u32 (a) |  GET |  [S0-input] time distance (in msec) between impulses&lt;br /&gt;
  1064..1095|         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1096..1127| u32 (a) |  GET |  [S0-input] time (in msec) since the last captured impulse&lt;br /&gt;
  1096..1127|         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1128..1159| u32     |  GET |  [S0-input] T0 counter value difference for the yesterday (for timespan since [993] to [994])&lt;br /&gt;
  1128..1159|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1160..1191| u32     |  GET |  [S0-input] T1 counter value difference for the yesterday (for timespan since [993] to [994])&lt;br /&gt;
  1160..1191|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1192..1223| u32     |  GET |  [S0-input] T0 counter value difference for the today - timespan since [994] (since start of today) to now&lt;br /&gt;
  1192..1223|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1224..1255| u32     |  GET |  [S0-input] T1 counter value difference for the today - timespan since [994] (since start of today) to now&lt;br /&gt;
  1224..1255|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1256..1499|         |  GET |  n/a (reserved)&lt;br /&gt;
  1256..1499|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1500..1531| a       |  GET |  [S0-input] master configuration struct for this input&lt;br /&gt;
  1500..1531| a       |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  1532..1999|         |  GET |  n/a (reserved)&lt;br /&gt;
  1532..1999|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2000..2063| u32 (a) |  GET |  [1-W BUS (A)] device status&lt;br /&gt;
  2000..2063|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2100..2163| a       |  GET |  [1-W BUS (A)] master configuration struct for this OneWire device&lt;br /&gt;
  2100..2163|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2200..2263| i32 (a) |  GET |  [1-W BUS (A)] obtained value from device (basic value)&lt;br /&gt;
  2200..2263|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2300..2363| i32 (a) |  GET |  [1-W BUS (A)] obtained value from device (additional value)&lt;br /&gt;
  2300..2363|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2364..2487|         |  GET |  n/a (reserved)&lt;br /&gt;
  2364..2487|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2488..2495| a       |  GET |  (8-Byte) ROM code for a FamilyID OneWire device found with SDS_onewire_search_bus() for bus (A)&lt;br /&gt;
  2488..2495|         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2496      | u32     |  GET |  number of FamilyID OneWire devices found (via last SEARCH scan (SDS_onewire_search_bus)) on bus (A)&lt;br /&gt;
  2496      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2497      | i32     |  GET |  principal result of a last SEARCH scan (SDS_onewire_search_bus) of the OneWire bus (A)&lt;br /&gt;
  2497      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2498      | i32     |  GET |  principal result of a last MASTER rescan of the OneWire bus (A)&lt;br /&gt;
  2498      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2499      | u32     |  GET |  number of OneWire devices found (via MASTER rescan) on bus (A)&lt;br /&gt;
  2499      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2500..2563| u32 (a) |  GET |  [1-W BUS (B)] device status&lt;br /&gt;
  2500..2563|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2600..2663| a       |  GET |  [1-W BUS (B)] master configuration struct for this OneWire device&lt;br /&gt;
  2600..2663|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2700..2763| i32 (a) |  GET |  [1-W BUS (B)] obtained value from device (basic value)&lt;br /&gt;
  2700..2763|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2800..2863| i32 (a) |  GET |  [1-W BUS (B)] obtained value from device (additional value)&lt;br /&gt;
  2800..2863|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2864..2986|         |  GET |  n/a (reserved)&lt;br /&gt;
  2864..2986|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2986..2993| a       |  GET |  (8-Byte) ROM code for a FamilyID OneWire device found with SDS_onewire_search_bus() for bus (B)&lt;br /&gt;
  2986..2993|         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2994      | u32     |  GET |  number of FamilyID OneWire devices found (via last SEARCH scan (SDS_onewire_search_bus)) on bus (B)&lt;br /&gt;
  2994      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2995      | i32     |  GET |  principal result of a last SEARCH scan (SDS_onewire_search_bus) of the OneWire bus (B)&lt;br /&gt;
  2995      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2996      | i32     |  GET |  principal result of a last MASTER rescan of the OneWire bus (B)&lt;br /&gt;
  2996      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2997      | u32     |  GET |  number of OneWire devices found (via MASTER rescan) on bus (B)&lt;br /&gt;
  2997      |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2998      | u32     |  GET |  general 1-W Master Chip status: 1 = detecting; 2 or 4 = failure; 8 = working; 16 = disabled by user&lt;br /&gt;
  2998      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  2999      | u32     |  GET |  general 1-W Master Chip status: detection-retry countdown (*10msec)&lt;br /&gt;
  2999      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3000      |         |  GET |  n/a (reserved)&lt;br /&gt;
  3000      |         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3001      | a       |  GET |  custom 24-byte string (readable via SNMP .8.80)&lt;br /&gt;
  3001      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3002      | a       |  GET |  custom 24-byte string (readable via SNMP .8.81)&lt;br /&gt;
  3002      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3003      | a       |  GET |  custom 16-byte string (readable via SNMP .8.82)&lt;br /&gt;
  3003      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3004      | a       |  GET |  custom 16-byte string (readable via SNMP .8.83)&lt;br /&gt;
  3004      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3005      | a       |  GET |  custom 16-byte string (readable via SNMP .8.84)&lt;br /&gt;
  3005      | a       |  SET |  write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3006..3799|         |  GET |  n/a (reserved)&lt;br /&gt;
  3006..3799|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3800      | u32     |  GET |  PVD Active - (nonzero:) main power failure detected&lt;br /&gt;
  3800      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3801      | u32     |  GET |  PVD Was Active - this flag is only cleared by reading this index 3801&lt;br /&gt;
  3801      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3802..3849|         |  GET |  n/a (reserved)&lt;br /&gt;
  3802..3849|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3850      | u32     |  GET |  SD Card - fully mounted and useable&lt;br /&gt;
  3850      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3851      | i32     |  GET |  latest file i/o error code&lt;br /&gt;
  3851      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3852      | u32     |  GET |  SD Card - Block Size in bytes (typically 512)&lt;br /&gt;
  3852      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3853      | u32     |  GET |  SD Card - CardType&lt;br /&gt;
  3853      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3854      | u32     |  GET |  SD Card - CID - ProductSN&lt;br /&gt;
  3854      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3855      | u32     |  GET |  statistic counter: SDcard: all init attempts (= successful + failed)&lt;br /&gt;
  3855      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3856      | u32     |  GET |  statistic counter: SDcard: failed init attempts&lt;br /&gt;
  3856      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3857      | u32     |  GET |  SD Card - Total Sector Count in KiB (size of the card)&lt;br /&gt;
  3857      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3858      | u32     |  GET |  statistic counter: SDcard: sector reads&lt;br /&gt;
  3858      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3859      | u32     |  GET |  statistic counter: SDcard: sector writes&lt;br /&gt;
  3859      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3860      | u32     |  GET |  statistic counter: SDcard: sector r/w failures&lt;br /&gt;
  3860      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3861      | u32     |  GET |  statistic counter: number of opened files&lt;br /&gt;
  3861      |         |  SET |  n/a (read-only)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  3862..3999|         |  GET |  n/a (reserved)&lt;br /&gt;
  3862..3999|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4000..4099| i32     |  GET |  Shared Variables: S00 through S99 - read&lt;br /&gt;
  4000..4099| i32     |  SET |  Shared Variables: S00 through S99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4100..4199| u32     |  GET |  Shared Variables: U00 through U99 - read&lt;br /&gt;
  4100..4199| u32     |  SET |  Shared Variables: U00 through U99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4200..4299| f32     |  GET |  Shared Variables: F00 through F99 - read&lt;br /&gt;
  4200..4299| f32     |  SET |  Shared Variables: F00 through F99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4300..4399| a       |  GET |  Shared Variables: T00 through T99 - read&lt;br /&gt;
  4300..4399| a       |  SET |  Shared Variables: T00 through T99 - write&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4400..4989|         |  GET |  n/a (reserved)&lt;br /&gt;
  4400..4989|         |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  4990..4999| u32     |  GET |  read this to get a value of an automatic SECOND DOWN-COUNTER #1..#10 (it does decrease its internal value by 1 for each 1 second, down to 0 where it stays, until restarted by writing)&lt;br /&gt;
  4990..4999| u32     |  SET |  write this to set/start/restart an automatic SECOND DOWN-COUNTER #1..#10&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  5000..5127| u/i/f 32|  GET |  BackUp-RAM (FC version 0x08+) - write&lt;br /&gt;
  5000..5127| u/i/f 32|  SET |  BackUp-RAM (FC version 0x08+) - read&lt;br /&gt;
 -----------+-+-------+------+--&lt;br /&gt;
  5128..11197 |       |  GET |  n/a (reserved)&lt;br /&gt;
  5128..11197 |       |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+-+-------+------+--&lt;br /&gt;
  11198     | u32     |  GET |  mqtt_publish PUBLISH Fixed Header value ( 0b0011dqqr : d=DUP, qq=QOS, r=RETAIN ) &lt;br /&gt;
  11198     | u32     |  SET |  write ( default: 0b00110001 )&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  11199     | u/i 32  |  GET |  FW support for MQTT-c (0 == NOT present)&lt;br /&gt;
  11199     |         |  SET |  n/a&lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12200     | i32     |  GET |  work progress (and result) of mqtt_connect()&lt;br /&gt;
  12200     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12201     | i32     |  GET |  &amp;quot;CONNACK Connect Return&amp;quot; - result of mqtt_connect()&lt;br /&gt;
  12201     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12202     | i32     |  GET |  result of: mqtt_publish(), mqtt_subscribe(), mqtt_unsubscribe_index(), mqtt_unsubscribe_name()&lt;br /&gt;
  12202     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12203     | i32     |  GET |  MQTT protocol error counter (informative)&lt;br /&gt;
  12203     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12204..12208 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12204..12208 |      |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12209     | i32     |  GET |  Subscribe Table - total number of available rows&lt;br /&gt;
  12209     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12210     | a       |  GET |  latest received Topic Name (sent from broker)&lt;br /&gt;
  12210     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12211..12241 | a    |  GET |  Subscribe Table: Topic Name for each table row&lt;br /&gt;
  12211..12241 |      |  SET |  n/a&lt;br /&gt;
 --------------+------+------+--&lt;br /&gt;
  12242..12249 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12242..12249 |      |  SET |  n/a&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12250     | a       |  GET |  latest received Value (sent from broker)&lt;br /&gt;
  12250     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12251..12281 | a    |  GET |  Subscribe Table: actual Value for each table row&lt;br /&gt;
  12251..12281 |      |  SET |  n/a&lt;br /&gt;
 --------------+------+------+--&lt;br /&gt;
  12282..12289 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12282..12289 |      |  SET |  n/a&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12290     | u32     |  GET |  timestamp for the latest received data (Topic) from broker&lt;br /&gt;
  12290     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+--+---+--+--&lt;br /&gt;
  12291..12321 | u32 (a) |  GET |  Subscribe Table: timestamp for the last Value update, for each table row&lt;br /&gt;
  12291..12321 |         |  SET |  n/a&lt;br /&gt;
 --------------+------+--+---+--+--&lt;br /&gt;
  12322..12398 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12322..12398 |      |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12399     | u/i 32  |  GET |  FW support for MODBUS-TCP-c (0 == NOT present)&lt;br /&gt;
  12399     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12400     | i32     |  GET |  work progress (and result) of modbus_tcp_connect()&lt;br /&gt;
  12400     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12401     | i32     |  GET |  progress/result for function 0x01 - modbus_tcp_read(uid, 0x01, ...);&lt;br /&gt;
  12401     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12402     | i32     |  GET |  progress/result for function 0x02 - modbus_tcp_read(uid, 0x02, ...);&lt;br /&gt;
  12402     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12403     | i32     |  GET |  progress/result for function 0x03 - modbus_tcp_read(uid, 0x03, ...);&lt;br /&gt;
  12403     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12404     | i32     |  GET |  progress/result for function 0x04 - modbus_tcp_read(uid, 0x04, ...);&lt;br /&gt;
  12404     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12405     | i32     |  GET |  progress/result for function 0x05 - modbus_tcp_writesingle(uid, 0x05, ...);&lt;br /&gt;
  12405     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12406     | i32     |  GET |  progress/result for function 0x06 - modbus_tcp_writesingle(uid, 0x06, ...);&lt;br /&gt;
  12406     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12407..12414 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12407..12414 |      |  SET |  n/a (reserved)&lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12415     | i32     |  GET |  progress/result for function 0x0F - modbus_tcp_writemultiple(uid, 0x0F, ...);&lt;br /&gt;
  12415     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12416     | i32     |  GET |  progress/result for function 0x10 - modbus_tcp_writemultiple(uid, 0x10, ...);&lt;br /&gt;
  12416     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12417..12462 |      |  GET |  n/a (reserved)&lt;br /&gt;
  12417..12462 |      |  SET |  n/a (reserved) &lt;br /&gt;
 -----------+--+------+------+--&lt;br /&gt;
  12463     | u/i 32  |  GET |  latest Unit Identifier value written to MBAP header (msg TX to server)&lt;br /&gt;
  12463     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12464     | u/i 32  |  GET |  latest Transaction Identifier value written to MBAP header (msg TX to server)&lt;br /&gt;
  12464     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12465     | u/i 32  |  GET |  timestamp of the latest received message&lt;br /&gt;
  12465     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12466     | u/i 32  |  GET |  a count of received items inside the latest received message&lt;br /&gt;
  12466     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12467     | u/i 32  |  GET |  latest received Unit Identifier value (inside incoming MBAP header)&lt;br /&gt;
  12467     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12468     | u/i 32  |  GET |  latest received Transaction Identifier value (inside incoming MBAP header)&lt;br /&gt;
  12468     |         |  SET |  n/a &lt;br /&gt;
 -----------+---------+------+--&lt;br /&gt;
  12469     | u/i 32  |  GET |  an address of the first coil/input/register item (maps to a value in 12470)&lt;br /&gt;
  12469     |         |  SET |  n/a &lt;br /&gt;
 -----------+--+------+--+---+--+--&lt;br /&gt;
  12470..12719 | i32 (a) |  GET |  received values (latest received message contents)&lt;br /&gt;
  12470..12719 |         |  SET |  n/a &lt;br /&gt;
 --------------+---------+------+--&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Poznámky''' &lt;br /&gt;
&lt;br /&gt;
Položky obsahující: &amp;quot;konfigurační struktura&amp;quot; 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ý &amp;quot;struct&amp;quot; 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í [[FULL-C:_set_and_get:_detailed|příklady]], které přesně popisují postup pro každý typ takové struktury - a vysvětlují tuto poznámku svým kódem.&lt;br /&gt;
&lt;br /&gt;
Indexy označené jako '''(a)''' lze ''blokově číst'' (pozor, označené specificky jako &amp;quot;a v závorce&amp;quot;). Vždy ale lze ''blokové čtení'' (tj. čtení více indexů najednou, za sebou, v rámci povoleného rozsahu) provést pouze od prvního indexu v bloku (ne od dalších v bloku).&lt;br /&gt;
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ává dalším parametrem při volání SDS_get_a() funkce.&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
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).&lt;br /&gt;
&lt;br /&gt;
Sdílené proměnné je potřeba nejprve definovat, aby je šlo použít, a aby k nim šlo přistupovat přes set/get funkce - viz specifická stránka na této wiki.&lt;br /&gt;
&lt;br /&gt;
Detaily (významy hodnot) pro položky ''MQTT klient'' a ''MODBUS-TCP klient'' jsou rozepsány na příslušných odpovídajících stránkách na této wiki.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Vysvětlení položek'''&lt;br /&gt;
&lt;br /&gt;
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í.&lt;br /&gt;
To naleznete na dalších stránkách v rámci této wiki, nebo se nás rovnou zeptejte (přes forum).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Vstupy pro měření napětí'''&lt;br /&gt;
&lt;br /&gt;
Detaily k A/D vstupům jsou uvedeny [[SDS_2PR:_ADC_vstupy_a_kalibrace|zde]]. Pro psaní programu je důležité mapování '''index'''u na jednotlivé vstupy, viz [[SDS_2PR:_ADC_vstupy_a_kalibrace|tabulka]].&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C_dns_resolv_functions&amp;diff=948</id>
		<title>FULL-C dns resolv functions</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=FULL-C_dns_resolv_functions&amp;diff=948"/>
		<updated>2025-08-10T08:01:54Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje programovací jazyk '''FULL-C''', který je dostupný na vybraných zařízeních SDS. &lt;br /&gt;
 Některá zařízení používají SDS-C, pro který máme návody jinde na této WiKi.&lt;br /&gt;
&lt;br /&gt;
== Síťové funkce: dotaz na přidělenou IP adresu pro DNS jméno ==&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
Zařízení SDS umožňuje odeslat dotaz na DNS server, za účelem zjištění IP adresy přidělené k DNS názvu, který je obsahem právě takového dotazu.&lt;br /&gt;
&lt;br /&gt;
Za tímto účelem jsou k dispozici tyto dvě funkce:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
         void dns_resolv(char *domainNameInput);&lt;br /&gt;
 unsigned int dns_resolv_status(unsigned int *IP0value, unsigned int *IP1value, unsigned int *IP2value, unsigned int *IP3value);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Princip ==&lt;br /&gt;
&lt;br /&gt;
SDS odesílá dotaz na DNS server, který je nastaven uživatelem SDS ve webové administraci zařízení (popř. je adresa DNS serveru získána z DHCP serveru, opět záleží na konfiguraci).&lt;br /&gt;
&lt;br /&gt;
Po odeslání dotazu se čeká na odpověď, přičemž FULL-C program pravidelně kontroluje stav voláním '''dns_resolv_status()''' funkce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Příklad ==&lt;br /&gt;
&lt;br /&gt;
V tomto příkladu odesílá SDS dotaz (textový název domény) na DNS server a zobrazuje případnou získanou odpověď (IP adresu).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void main(void)&lt;br /&gt;
{&lt;br /&gt;
 char DNSname[64];&lt;br /&gt;
 unsigned int status;&lt;br /&gt;
 unsigned int IP0, IP1, IP2, IP3;&lt;br /&gt;
&lt;br /&gt;
 sprintf((char *)DNSname, &amp;quot;www.google.com&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
 printf(&amp;quot;RESOLVING %s \n&amp;quot;, DNSname);&lt;br /&gt;
&lt;br /&gt;
 // start - select the new DNSname for all the subsequent status function calls&lt;br /&gt;
 dns_resolv(DNSname);&lt;br /&gt;
&lt;br /&gt;
 // get the first status value&lt;br /&gt;
 status = dns_resolv_status(&amp;amp;IP0, &amp;amp;IP1, &amp;amp;IP2, &amp;amp;IP3);&lt;br /&gt;
 // only if truly working, keep waiting&lt;br /&gt;
 while (512 == status)&lt;br /&gt;
 {&lt;br /&gt;
   // keep getting a new status, until it is different than 512&lt;br /&gt;
   status = dns_resolv_status(&amp;amp;IP0, &amp;amp;IP1, &amp;amp;IP2, &amp;amp;IP3);&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 // check the final status value&lt;br /&gt;
 if (513 == status)&lt;br /&gt;
 {&lt;br /&gt;
   printf(&amp;quot;GOT RESULT: IP = %u.%u.%u.%u\n&amp;quot;, IP0, IP1, IP2, IP3);&lt;br /&gt;
   // only in this case, we can use the IPx address&lt;br /&gt;
   // ... OK&lt;br /&gt;
&lt;br /&gt;
   // we can print the additional internal DNS cache status, for this particular domain&lt;br /&gt;
   // note. the value is valid only if the status is 512, otherwise not&lt;br /&gt;
   unsigned int ttl;&lt;br /&gt;
   ttl = SDS_get_u(70); // index [70] = actual TTL value for the selected DNS cache item &lt;br /&gt;
   printf(&amp;quot;DNS CACHE TTL VALUE IS %u SECONDS FOR DOMAIN %s\n&amp;quot;, ttl, DNSname);&lt;br /&gt;
 } else&lt;br /&gt;
 {&lt;br /&gt;
   printf(&amp;quot;DNS RESOLV FAILED (error %u) \n&amp;quot;, status);&lt;br /&gt;
   // in this case, the IPx adress is not valid, and you need to repeat the dns_resolv() call again&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Interní DNS cache ==&lt;br /&gt;
&lt;br /&gt;
Po úspěšném provedení získání DNS překladu, kdy SDS odešle dotaz na určený DNS server, a získá z něj odpověď, &lt;br /&gt;
je výsledek k dispozici (dá se získat pomocí dns_resolv_status funkce).&lt;br /&gt;
&lt;br /&gt;
Funkce dns_resolv_status() vrací vždy výsledek toho úplně posledního dotazu, který byl vyvolán zavoláním funkce dns_resolv().&lt;br /&gt;
&lt;br /&gt;
Platná odpověď z DNS serveru je uložena do interní tabulky (DNS cache) v SDS. &lt;br /&gt;
&lt;br /&gt;
Pokud je zbývající hodnota TTL větší než 0, bude ihned k dispozici odpověď z interní cache.&lt;br /&gt;
&lt;br /&gt;
Pokud záznam v interní cache není (nebo už vypršel), bude automaticky odeslána žádost o nový překlad na DNS server.&lt;br /&gt;
&lt;br /&gt;
Toto si řídí SDS interně.&lt;br /&gt;
&lt;br /&gt;
Váš program tedy vždy, když potřebuje IP adresu pro jakoukoliv doménu, tak vždy musí nejprve zavolat dns_resolv(). Tím se jednak vybere aktuální doména, pro kterou chcete získat platnou aktuální IP adresu (a lze ji tedy přečíst pomocí dns_resolv_status() funkce), a také se spustí mechanismus kontroly interní cache a eventuálního odeslání nového dotazu.&lt;br /&gt;
&lt;br /&gt;
Nový dotaz není odeslán automaticky, tedy SDS samo neodesílá nové dotazy, když položka v interní DNS cache vyprší. Toto máte plně pod kontrolou vy, a to tak, že voláte funkci dns_resolv(), která se teprve v ten moment (kdy ji ze svého programu zavoláte) rozhodne, jestli bude nový dotaz posílat, nebo ne (čistě dle stavu obsahu interní DNS cache). Pokud v cache není záznam pro danou doménu, nebo je ale už vypršel (TTL na nule), tak dojde k odeslání dotazu, a váš program pak musí čekat na odpověď (viz příklad výše, periodickým voláním dns_resolv_status(), kdy se průběžně zařídí dle vrácené hodnoty od této funkce).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Upozornění ==&lt;br /&gt;
&lt;br /&gt;
Starší FW mělo bug, kdy při vypršení TTL v interní cache nedošlo ke smazání položky v interni cache. Toto je samozřejmě problém, který je vyřešen v novém firmware.&lt;br /&gt;
&lt;br /&gt;
DNS cache je (záměrně) vymazána při:&lt;br /&gt;
* nahrání nového FULLC programu&lt;br /&gt;
* restartu zařízení SDS&lt;br /&gt;
&lt;br /&gt;
DNS cache není vymazána při výpadku Ethernetového připojení.&lt;br /&gt;
&lt;br /&gt;
DNS cache lze ručně vymazat zapsáním hodnoty 0xE4A5ECAC do systémové proměnné na indexu [70]. Zápis této speciální hodnoty kompletně smaže interní DNS cache. Tato specifická funkcionalita vyžaduje aktuální firmware (bylo to přidáno až 08/2025).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Stavové hodnoty ==&lt;br /&gt;
&lt;br /&gt;
Program musí použít volání funkce '''dns_resolv_status''' pro zjištění okamžitého stavu. Dokud nezískáte finální stavovou hodnotu, musíte tuto funkci volat opakovaně (nezapomeňte na vlastní bezpečnostní timeout).&lt;br /&gt;
&lt;br /&gt;
  dns_resolv_status()       význam&lt;br /&gt;
 -------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
  0                       |  klid, můžete odeslat DNS dotaz, funkce dns_resolv_status() současně nevrací platnou IP adresu (musíte nejprve spustit DNS překlad)&lt;br /&gt;
  512                     |  pracuje, dotaz odeslán (překlad nenalezen v interní cache), čekejte (funkce současně nevrací platnou IP adresu, ta bude až po dokončení překladu)&lt;br /&gt;
  513                     |  hotovo OK, do *resolvedIPaddressOutput byla zapsána IP adresa (4 bajty), a záznam v interní cache je platný a živý (zbývající TTL větší než 0)&lt;br /&gt;
  514                     |  odpověď nebyla získána (chyba) a současně nemáme záznam v interní DNS cache, takže funkce nevrací platnou IP adresu (musíte znovu začít s dotazem)&lt;br /&gt;
  515                     |  funkce byla zavolána s neplatnými parametry - nic nebylo provedeno, funkce nevrací platnou IP adresu&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pokud funkce dns_resolv_status() vrátila hodnotu 513, je možné číst systémovou proměnnou z indexu [70] (uint32_t), která ukáže hodnotu TTL v momentu, kdy tuto hodnotu právě čtete. Lze takto sledovat, jak se postupně TTL snižuje (o 1 každou sekundu). Hodnota TTL odpovídá dané položce v interní cache, která byla určena právě posledním voláním funkce dns_resolv().&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_BIG:_firmware_changelog&amp;diff=947</id>
		<title>SDS BIG: firmware changelog</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_BIG:_firmware_changelog&amp;diff=947"/>
		<updated>2025-03-28T18:57:51Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SDS-BIG(2) , SDS-SMALL(2), SDS-STSW a všechny OEM ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
Tato stránka se věnuje změnám ve firmware a v HW pro výrobek SDS-BIG a SDS-SMALL a SDS-STSW.&lt;br /&gt;
&lt;br /&gt;
Změny jsou seřazeny tak, že nejnovější verze (která je stáhnutelná z webu) je popsána jako první.&lt;br /&gt;
&lt;br /&gt;
Proč je vydáván nový firmware? Protože operativně řešíme požadavky uživatelů, a jsou doplňovány nové funkce.&lt;br /&gt;
&lt;br /&gt;
Firmware poskytujeme zcela zadarmo po celou dobu životnosti výrobku. Děláme to vše pro Vás.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 28.3.2025 ==&lt;br /&gt;
* oprava odpovědi pro S-UDP příkaz 0x04 (Read FC)&lt;br /&gt;
&lt;br /&gt;
== 15.3.2025 ==&lt;br /&gt;
* oprava odpovědi pro S-UDP příkaz 0x08 (Write FC)&lt;br /&gt;
&lt;br /&gt;
== 27.2.2025 ==&lt;br /&gt;
* upraven timeout pro čtení souboru z SD karty přes webový server (poskytování obsahu z SD karty na web)&lt;br /&gt;
* 512: oprava nefunkčního čtení ze sériové linky COM6&lt;br /&gt;
&lt;br /&gt;
== 8.2.2025 ==&lt;br /&gt;
* oprava některých payloadů v protokolu SUDP &lt;br /&gt;
&lt;br /&gt;
== 22.7.2024 ==&lt;br /&gt;
* FULLC.EXE - odstraněna chyba, která neumožnila nahrát do SDS soubor FCB větší než 64kB&lt;br /&gt;
* možnost volby klidového stavu pro každý S0 vstup (umožňuje počítat impulsy i pro NC spínače v měřiči energie)&lt;br /&gt;
* FC: SDS_reset_program() nezanechává nadbytečnou chybouvou hlášku v konzoli&lt;br /&gt;
* FC: mqtt_publish() použije vámi nastavené bitové pole do PUBLISH hlavičky (viz index 11198)&lt;br /&gt;
* SMTP odesílání by mělo být robustnější při odesílání více emailů za sebou&lt;br /&gt;
&lt;br /&gt;
== 24.2.2024 ==&lt;br /&gt;
* možnost smazat nahraný TLS klíč+certifikát (tlačítko s heslem, ve webovém rozhraní)&lt;br /&gt;
* RSTD nesmaže (nanastaví na tovární hodnoty) vaše nastavení pro všechny AD vstupy (to lze teď udělat ručně, nově přidaným tlačítkem ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 31.10.2023 ==&lt;br /&gt;
* SNMP - oprava způsobu předání chyby v odpovědi&lt;br /&gt;
* SNMP v1 - možnost nastavit dvě nezávislé komunity&lt;br /&gt;
* 512: plná implementace SNMP v3 (včetně AUTHPRIV)&lt;br /&gt;
* 64,128: omezená implementace SNMP v3 (pouze NOAUTHNOPRIV)&lt;br /&gt;
* FC: indexy 66, 67, 68, 4990..4999&lt;br /&gt;
&lt;br /&gt;
== 19.8.2023 ==&lt;br /&gt;
* oprava SDS UDP SEARCH (příchozí paket na portu 20484 byl firewallem od verze 6.6.23 zahozen, teď už opraveno)&lt;br /&gt;
* 512: HTTPS server (aktivace nahráním certifikátu, jinak zůstává HTTP)&lt;br /&gt;
&lt;br /&gt;
== 14.7.2023 ==&lt;br /&gt;
* HTTP POST: oprava sekundární chyby (objevila se ve FW 6.6.2023), kdy FW akceptoval jen rozdělený krok č. 2 (teď už opět umí jak rozdělený, tak i nerozdělený krok č. 2)&lt;br /&gt;
* FC: umožněn přímý zápisu do indexu 193 (přímo zapíše do registru PWM - určeno pro nejjemnější uživatelskou přímo konfiguraci generátoru PWM)&lt;br /&gt;
&lt;br /&gt;
== 6.6.2023 ==&lt;br /&gt;
* funkce http_header_set_user_row() má zvětšenou maximální délku parametru na 255 znaků&lt;br /&gt;
* 512: počet MQTT subscribe zvětšen z max. 8 na max. 20&lt;br /&gt;
* 512: další zvětšení FC konzole&lt;br /&gt;
* webový admin: úprava (oprava) použití timerů v javascriptu &lt;br /&gt;
* FC: DNS resolv umí pracovat s širším rozsahem UDP portů (někdy způsobilo nepřijetí odpovědi a musel se resolv opakovat)&lt;br /&gt;
* HTTP POST: poradí si i s ne-oddělenou komunikací (když klient pošle úvodní konverzační data najednou, neodděleně, tzn. nečeká na odpověď ze serveru)&lt;br /&gt;
 &lt;br /&gt;
== 9.3.2023 ==&lt;br /&gt;
* FC: verze 0x12 (+ odpovídající FULLC.EXE): přidány funkce http_header_set_user_row() a http_header_set_content_type()&lt;br /&gt;
* 64 a 128: odstraněno možné zpomalení běhu po zapnutí v určité okrajové situaci&lt;br /&gt;
&lt;br /&gt;
== 28.2.2023 ==&lt;br /&gt;
* POST: přidán příkaz /wrdf&lt;br /&gt;
* POST: oprava chyby, kdy mohlo dojít k neprovedení akce na základě příkazu /changeip&lt;br /&gt;
* malá bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 9.1.2023 ==&lt;br /&gt;
* FC verze 0x11 (+ odpovídající FULLC.EXE)&lt;br /&gt;
* firmware pro všechny HW varianty BIG, BIG2-DP a BIG2-DP-DS84&lt;br /&gt;
* web: doplněno zobrazení surových hodnot, čtených z 1-Wire zařízení &lt;br /&gt;
* FC: přidána funkce SDS_onewire_config() pro varianty -DS84&lt;br /&gt;
* FC: doplněna funkčnost FC WatchDog (pro situaci, pokud spadne program na chybu a je zastaven, tak FC Watchdog pokračuje a provede restart FC programu)&lt;br /&gt;
* FC: doplněna archivace poslední chyby FC programu, a zobrazení na webu (i v případě restartu FC Watchdogem)&lt;br /&gt;
* FC: funkce pro prohledání složky (file_opendir, file_readdir, file_closedir)&lt;br /&gt;
* oprava PWM3 a PWM4 na BIG2-64/128 - funkce, ukládání nastavení&lt;br /&gt;
* HW BIG2 DS84: RTC běží na baterii na všech HW variantách DS84 - udržuje běžící aktuální čas i při vypnutém napájení&lt;br /&gt;
* FC: přidána funkce SDS_onewire_search_bus()&lt;br /&gt;
* FC: přidány indexy 132..136 , indexy 2488..2499, 2986..2997&lt;br /&gt;
&lt;br /&gt;
== 1.12.2022 ==&lt;br /&gt;
* bezpečnostní aktualizace (dle nahlášené záležitosti a testu)&lt;br /&gt;
* trvalé zobrazení archivovaného HW faultu v Logu (pokud dojde k faultu, je hned před restartem zařízení archivován a trvale zobrazován ve výpisu, i po libovolném novém spuštění)&lt;br /&gt;
* odstraněno eventuální čekání (a následný WDG restart) při komunikaci s externími I2C zařízeními (specifické chipy na sandwich deskách uživatelů)&lt;br /&gt;
&lt;br /&gt;
== 30.11.2022 ==&lt;br /&gt;
* FC: zvýšena výkonnost (512: optimalizace pro až několika-násobné celkové zrychlení vykonávání programu) (64,128: byť jen menší zrychlení, ale přece + zvětšená konzole echo.htm) &lt;br /&gt;
* zrychleno webové rozhraní (zpomaleno zřejmě o dvě verze zpět, byť to bylo bez vlivu na funkci, je vhodnější když to nezdržuje při zobrazování v prohlížeči)&lt;br /&gt;
* FC: přidán index 137&lt;br /&gt;
* zlepšena interní obsluha sériových linek (COMx/RS485), odstraněno možné náhodné zpoždění (byť jen ve specifickém případě a jen o několik msec, ale i tak se toto vyřešilo)&lt;br /&gt;
&lt;br /&gt;
== 22.11.2022 ==&lt;br /&gt;
* FC (64/128/512): verze 0x10 &lt;br /&gt;
* dns_resolv správně hlásí chybu 516 a 517 při výpadku připojení v průběhu dotazu&lt;br /&gt;
&lt;br /&gt;
== 18.11.2022 ==&lt;br /&gt;
* FC (64/128): verze 0x10 &lt;br /&gt;
* FC: nová funkce SDS_set_RTC&lt;br /&gt;
* FC: nové funkce pro práci s float&lt;br /&gt;
* oprava pro mounting některých typů SD karet&lt;br /&gt;
&lt;br /&gt;
== 14.11.2022 ==&lt;br /&gt;
* FC: oprava výpočtů v 64-bit doméně&lt;br /&gt;
* FC: file_expand() - detailnější rozvrstvení návratových chybových hodnot&lt;br /&gt;
* web: rozšířeny zobrazované informace o probíhajícím připojování SD karty&lt;br /&gt;
* web server: vrací korektně 503 pro soubory na SD kartě, které jsou zablokovány FC programem&lt;br /&gt;
* FC: rozšířena a zásadně zlepšena implementace printf/sprintf/snprintf/sscanf - viz detaily v návodu na wiki&lt;br /&gt;
* FC: zlepšen výpis (informace na web) při určitých chybách v FC programu, plus další drobky kolem echo.htm&lt;br /&gt;
&lt;br /&gt;
== 16.10.2022 ==&lt;br /&gt;
* tento firmware (od této verze) podporuje i hardware SDS 64/128/512 ve variantě DP&lt;br /&gt;
* podpora pro 4 PWM výstupy (pro vhodný hardware - BIG2)&lt;br /&gt;
* odpověď na (webový) příkaz /sv? , má doplněný obsah http hlavičky, takže by ji mělo být snazší zpracovat&lt;br /&gt;
* FC: watchdog programu je (nově) pozastaven po dobu mountování SD karty (protože je pozastaven i program)&lt;br /&gt;
* FC: zápis do indexu 999 funguje jak má&lt;br /&gt;
* FC: verze 0x0F (nové funkce PWMx)&lt;br /&gt;
&lt;br /&gt;
== 5.10.2022 ==&lt;br /&gt;
* pouze vše řady 512 (ostatní bez tohoto problému) - důležitá oprava situace kdy někdy chybně došlo ke smazání nahraného FC programu při nahrání nového UWEB projektu do SDS&lt;br /&gt;
&lt;br /&gt;
== 30.9.2022 ==&lt;br /&gt;
* FC: oprava běhu programu v situaci kdy v kódu je vnořený (nested) switch() v rámci jiného switch() (původně chybné chování, teď opraveno)&lt;br /&gt;
&lt;br /&gt;
== 28.9.2022 ==&lt;br /&gt;
* FC: oprava výsledků maker (define), kdy chybně docházelo k pevnému přetypování na int32_t, což je teď opraveno (odstraněno)&lt;br /&gt;
&lt;br /&gt;
== 1.8.2022 ==&lt;br /&gt;
* správně zobrazovaná hláška (nápověda) na úvodní webové stránce ohledně stavu konfigurace&lt;br /&gt;
* FC: přidáno tlačítko (odkaz) pro restart FULLC programu (např. pokud skončil a chcete jej ručně spustit znovu)&lt;br /&gt;
* FC: do výpisu chyby při pádu programu je přidán UTC čas (pro identifikaci, kdy se chyba stala)&lt;br /&gt;
* FC: spolehlivostní úpravy při startu programu (načtení z DF), a při zápisu nového programu (práce s DF)&lt;br /&gt;
&lt;br /&gt;
== 11.7.2022 ==&lt;br /&gt;
* FC: verze 0x0E&lt;br /&gt;
* FC: přidána funkce mktime()&lt;br /&gt;
* FC: přidána funkce gmtime()&lt;br /&gt;
* FC: přidána funkce localtime()&lt;br /&gt;
* opraveno zachování konfigurace ipwdg (webové rozhraní) a obsluhy relé ipwdg&lt;br /&gt;
&lt;br /&gt;
== 1.7.2022 ==&lt;br /&gt;
* FC: verze 0x0D&lt;br /&gt;
* FC: upravena funkce SDS_TOPB_keyboard_status() pro lepší předané výsledky&lt;br /&gt;
* FC: přidána funkce SDS_TOPB_keyboard_updn()&lt;br /&gt;
* FC: přidána funkce SDS_rescan_onewire()&lt;br /&gt;
* FC: odstraněno náhodné hlášení o už probíhajícím nahrávání programu při nahrávání z EXE&lt;br /&gt;
* BIG 64/128 prodloužen čas pro sestavení Ethernetového spojení, což řeší problém s některými USB síťovými kartami atd.&lt;br /&gt;
* opraveno HTTP POST nastavení položek NTP&lt;br /&gt;
* opraveno HTTP POST který teď neuzavře spojení dříve než má, pokud mazání NVM pro nový FW (nebo nový UserWeb) trvá dlouho&lt;br /&gt;
&lt;br /&gt;
== 12.4.2022 ==&lt;br /&gt;
* doplněna informační stránka o vnitřním stavu OneWire Master (pro snazší identifikaci problémů při používání sběrnice)&lt;br /&gt;
* oprava v bootloaderu pro řadu 512 - vyžaduje přeprogramování u výrobce pro všechna SDS řady 512 s FW starším než 14.2.2022&lt;br /&gt;
&lt;br /&gt;
== 3.4.2022 ==&lt;br /&gt;
* FC verze 0x0C&lt;br /&gt;
* FC: přidána funkce SDS_I2C_rw&lt;br /&gt;
* OneWire stabilnější&lt;br /&gt;
&lt;br /&gt;
== 21.1.2022 ==&lt;br /&gt;
* prioritu mají vybrané konfigurační položky v NVM (jsou-li tam platné) před baterií zálohovanou pamětí&lt;br /&gt;
* aktivován HTTP POST protokol pro nahrávání a konfiguraci SDS (viz [[SDS:POST_upload]])&lt;br /&gt;
&lt;br /&gt;
== 18.1.2022 ==&lt;br /&gt;
* RSTD zapíše do NVM všechny konfigurační položky (i to co nenuluje), pro jistotu že v NVM bude vše skutečně zapsáno&lt;br /&gt;
* načítání konfigurace upraveno (větší spolehlivost)&lt;br /&gt;
&lt;br /&gt;
== 15.1.2022 ==&lt;br /&gt;
* přidána stránka cfgstatus.htm - pro možnost kontroly stavu uložené konfigurace v pevné paměti (např. co nemáte uloženo)&lt;br /&gt;
* přidán M2M výstup ip.xml&lt;br /&gt;
* FC: přidán algoritmus SHA-256 do funkce SDS_crypto()&lt;br /&gt;
* FC: každý program má unikátní identifikátor, podle kterého lze např. kontrolovat či zpětně poznat co máte v SDS nahráno&lt;br /&gt;
* identifikátor FC programu přidán na webové rozhraní a do M2M výstupů, a do exe aplikace&lt;br /&gt;
* zobrazeno unikátní identifikační čislo SDS hardware (napevno spojeno s modulem SDS, nezměnitelné), teď i ve M2M výstupech&lt;br /&gt;
* SNMP: nové položky .8.90 , .8.91 , .8.99&lt;br /&gt;
* FC: nové get(u32) položky 2 a 87&lt;br /&gt;
&lt;br /&gt;
== 31.12.2021 ==&lt;br /&gt;
* možnost vyřadit NTP z činnosti zadáním adresy 127.0.0.1 (vhodné pro uživatele kteří získávají čas odjinud, např. přes LoRA)&lt;br /&gt;
* web: informace na web (p=8) o stavu připojování SD karty (mounting...) a o stavu kdy je FC program pozastaven (PAUSED)&lt;br /&gt;
* web: opraven zámek zvětšené konzole (echo)&lt;br /&gt;
* důslednější kontrola platnosti konfigurace při startu&lt;br /&gt;
&lt;br /&gt;
== 27.12.2021 ==&lt;br /&gt;
* opravena chyba kdy na webu nešlo nastavit 100 procent PWM duty (jen 0 až 99, teď už jde i 100)&lt;br /&gt;
* FC: několikanásobně zvětšena konzole (echo.htm)&lt;br /&gt;
* HW: při poruše hlavního zdroje hodin (krystal) se použije záložní zdroj&lt;br /&gt;
* HW: využíváme RTC pro udržení času při přechodu přes reset (drží čas dokud zase nepřijde NTP)&lt;br /&gt;
* aktualizován bootloader (aktualizace bootloaderu jen prostřednictvím přeprogramování u výrobce) - umí znovu nahrát FW pokud se v SoC poškodí&lt;br /&gt;
* vydána varianta 512 - vlastní soubor s firmware&lt;br /&gt;
&lt;br /&gt;
== 25.12.2021 ==&lt;br /&gt;
* pouze interní vydání&lt;br /&gt;
&lt;br /&gt;
== 26.3.2021 ==&lt;br /&gt;
* FC: oprava nesprávného zacházení s unsigned typy (na některých místech interně přemapovány na signed)&lt;br /&gt;
* FC: chování varianty if pro speciální kombinaci signed/unsigned dle specifikace standardu C&lt;br /&gt;
&lt;br /&gt;
== 9.2.2021 ==&lt;br /&gt;
* FC: oprava TID v MODBUS-TCP&lt;br /&gt;
* MBTC výpis rozšířen&lt;br /&gt;
* FC: drobná úspora heap (více dostupného místa)&lt;br /&gt;
* FC: dns resolv drobný fix&lt;br /&gt;
* FC: http_get a http_post důležitý fix&lt;br /&gt;
* FC: nová funkce http_close&lt;br /&gt;
* FC: chyba -7 pro MODBUS-TCP a pro MQTT&lt;br /&gt;
* vylepšený algoritmus S0, rozšířené možnosti nastavení detektoru S0 (nastavení přidáno ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 22.12.2020 ==&lt;br /&gt;
* web: ruční přepnutí CBY pro relé (tzn. &amp;quot;kdo ovládá relé&amp;quot;), na &amp;quot;FULL-C&amp;quot;, dané relé nevypne (off) ale ponechá jeho stávající stav (on, off)&lt;br /&gt;
* security fix&lt;br /&gt;
&lt;br /&gt;
== 10.12.2020 ==&lt;br /&gt;
* dřívější odeslání NTP požadavku po výpadku síťového spojení&lt;br /&gt;
* integrovaná korekce chyby A/D měření pro HW osazený LMV324; uživatel může povolit tuto automatickou opravu chyby LMV324 ve webové administraci&lt;br /&gt;
* počítání délky aktivace tarifního vstupu (doba T0 a T1 v sekundách za den) viz nové sys, pozor pro funkci vyžaduje NTP&lt;br /&gt;
* automatický odečet S0 počítadel (vždy za dnešek a včerejšek), viz nové sys, pozor pro funkci vyžaduje NTP&lt;br /&gt;
&lt;br /&gt;
== 23.11.2020 ==&lt;br /&gt;
* FC + FULLC.exe: oprava chyby v případě více #if / #ifdef / #endif bloků zapsaných hned za sebou&lt;br /&gt;
* FC: makra a define lze provést i uvnitř funkce (dříve jen venku)&lt;br /&gt;
* FC: detekce nesprávné dereference ukazatele&lt;br /&gt;
&lt;br /&gt;
== 14.11.2020 ==&lt;br /&gt;
* webová administrace: stránka p=42: index ck03 se propíše i do nastavení (chybělo od 23.10.2020, web byl aktualizován, nastavení ale přebíralo ck00)&lt;br /&gt;
&lt;br /&gt;
== 4.11.2020 ==&lt;br /&gt;
* FC + FULLC.exe: odstraněn problém při načtení nahraného FULL-C programu v SDS, kdy dříve mohlo u jedné specifické velikosti nahraného programu, dojít k jeho nespuštění kvůli neodpovídajícímu crc&lt;br /&gt;
&lt;br /&gt;
== 3.11.2020 ==&lt;br /&gt;
* FC: zobrazení (v konzoli) čísla řádku (ve zdrojovém kódu) při chybě (což velmi zlepší ladění programů)&lt;br /&gt;
* FULLC.exe: odstraněno omezení na 255 znaků na řádek&lt;br /&gt;
* FULLC.exe: zrychlení nahrávání do SDS&lt;br /&gt;
&lt;br /&gt;
== 23.10.2020 ==&lt;br /&gt;
* webová administrace: stránka p=42: změna indexu ck00 na ck03 ať se dají uživatelským skriptem všechny prvky samostatně rozlišit&lt;br /&gt;
* FC: oprava http_get/post: správné vyplnění výsledků i pro situaci kdy server ukončí spojení přes TCP RST&lt;br /&gt;
&lt;br /&gt;
== 14.10.2020 ==&lt;br /&gt;
* oprava FULL-C funkce XTEA-CRYPT (bug o dvě verze dříve)&lt;br /&gt;
&lt;br /&gt;
== 13.10.2020 ==&lt;br /&gt;
* důležitá oprava chyby ve FULL-C (ternary operator, a další nahlášené nesrovnalosti)&lt;br /&gt;
&lt;br /&gt;
== 13.9.2020 ==&lt;br /&gt;
* oprava detekce SD karty (některé varianty SD karet nebyly detekovány, teď už ano)&lt;br /&gt;
&lt;br /&gt;
== 9.8.2020 ==&lt;br /&gt;
* FULL-C verze 0B (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* různé drobné opravy a zabezpečení&lt;br /&gt;
* zobrazení auditlogu (webové rozhraní SDS)&lt;br /&gt;
* FC: http_post&lt;br /&gt;
* FC: MQTT klient&lt;br /&gt;
* FC: MODBUS-TCP klient&lt;br /&gt;
&lt;br /&gt;
== 4.8.2020 ==&lt;br /&gt;
* úprava obsluhy relé&lt;br /&gt;
* podpora OneWire modulu SDS-1W-T-RH&lt;br /&gt;
&lt;br /&gt;
== 3.10.2019 ==&lt;br /&gt;
* SMTP klient posílá v hlavičce i položku &amp;quot;Date&amp;quot; (ale jen za předpokladu správného času v SDS)&lt;br /&gt;
* RSTD při zapnutí zařízení, ve kterém není záložní baterie (nebo je vybitá), zachová původně nastavenou MAC adresu (vše ostatní ale už jde do defaultu, což je správně)&lt;br /&gt;
* SUDP: rozšířen NOP příkaz &lt;br /&gt;
* SUDP: přidány další nové příkazy (master_cmd: 32, 33, 40, 42, 44, 48)&lt;br /&gt;
&lt;br /&gt;
== 23.9.2019 ==&lt;br /&gt;
* oprava GUI (S0 Inputs)&lt;br /&gt;
* SNMP nabízí možnost číst všechny sdílené proměnné (FULL-C: Sxx, Uxx, Fxx, Txx)&lt;br /&gt;
* opraven nefunkční RSTD na modulu STSW-rev3&lt;br /&gt;
&lt;br /&gt;
== 23.6.2019 ==&lt;br /&gt;
* oprava chyby objevené ve FW 28.5.2019, kdy na některých specifických SDS nefungovaly AD vstupy&lt;br /&gt;
&lt;br /&gt;
== 28.5.2019 ==&lt;br /&gt;
* oprava funkce SD karty (pro případy kdy se stala po čase nedostupná pro FC/web)&lt;br /&gt;
&lt;br /&gt;
== 5.5.2019 ==&lt;br /&gt;
* dořešeno hlídání stavu (načtení, atd.) SD karty i v případě provozu náročného FULL-C programu (tedy i pro hluboce vnořené smyčky)&lt;br /&gt;
* oprava původně chybné implementace S-UDP příkazu &amp;quot;1Waccess: sub-command 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== 24.2.2019 ==&lt;br /&gt;
* překlopení z BETA do oficiálního FW&lt;br /&gt;
* automatika zimní/letní čas&lt;br /&gt;
* přístup na SD kartu: FULL-C pracuje se soubory (vytvoření, smazání, čtení a zápis, atd.) &lt;br /&gt;
* přístup na SD kartu: web server zobrazuje soubory ze SD karty (vše ve složce \web\ a podsložkách této složky)&lt;br /&gt;
* oprava čtení napětí baterie pro variantu 128K&lt;br /&gt;
* shared.xml&lt;br /&gt;
* odstraněno omezení délky ve shared.txt&lt;br /&gt;
* zprovozněno getsv&lt;br /&gt;
* verze FULL-C je teď FC 0x0A (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* FULL-C: nová možnost způsobu čtení teploty SoC&lt;br /&gt;
* FULL-C: index 64, 65, 184, 185, 429, 430, atd.&lt;br /&gt;
* FULL-C: doplněné set/get funkce pro sdílené proměnné&lt;br /&gt;
* FULL-C: s/printf umí správné zpracovat požadavek na určení desetinných míst pro float&lt;br /&gt;
* FULL-C: funkce pro reset FC programu&lt;br /&gt;
* FULL-C: funkce pro watchdog FC programu&lt;br /&gt;
* SNMP nové OIDy (dle přidaných věcí - čas, sdcard)&lt;br /&gt;
&lt;br /&gt;
== 1.7.2018 ==&lt;br /&gt;
* SNMP: sdsS0translatedUnitT0,1 je poskytováno jako hodnota od odečtu (ne od úplného začátku měření, jak to bylo předtím) &lt;br /&gt;
* FULL-C: přidán index 183 poskytující datum vydání FW který je právě nahrán v SDS&lt;br /&gt;
&lt;br /&gt;
== 27.6.2018 ==&lt;br /&gt;
* verze FULL-C je teď FC 0x09 (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* FULL-C: přidána podpora pro int64_t a uint64_t&lt;br /&gt;
* FULL-C: přejmenováno set a get funkce (rozlišení 32 a 64 bit)&lt;br /&gt;
* FULL-C: snprintf přesně dle standardu (zrušena nevhodná změna z 20.12.2017)&lt;br /&gt;
* drobné opravy&lt;br /&gt;
* drobná oprava v odchozím TCP-SYN a v generátoru ISN&lt;br /&gt;
&lt;br /&gt;
== 8.3.2018 ==&lt;br /&gt;
* oprava echo.htm - správně wrapuje obsah, a nejsou tam nadbytečné 0x00&lt;br /&gt;
* vhodnější řešení rexmitu částí webových stránek a dynamických dat (ocení to zejména uživatelé s mobilním připojením pro SDS)&lt;br /&gt;
&lt;br /&gt;
== 2.3.2018 ==&lt;br /&gt;
* aktulizace a oprava ve výpočtu &amp;quot;aktuálního výkonu&amp;quot; pro okrajové situace (např. krajní hodnoty impulsní konstanty)&lt;br /&gt;
&lt;br /&gt;
== 11.2.2017 ==&lt;br /&gt;
* zprovozněny funkce set/get pro indexy 4000 až 4300 (alternativní přístup k číselným sdíleným proměnným)&lt;br /&gt;
&lt;br /&gt;
== 21.12.2017 ==&lt;br /&gt;
* zvýšena stabilita spuštění po zapnutí&lt;br /&gt;
&lt;br /&gt;
== 20.12.2017 ==&lt;br /&gt;
* dočasná změna ve FULL-C (bude zrušena): funkce snprintf() má interně posunutý limit délky zápisu o 1 (toto je záměrný rozdíl proti C99). Změna v SDS je provedena z důvodu neznalosti programátorů FC v tom, že do snprintf() limitu je potřeba započítat i jeden byte pro ukončující nulu. Ve výsledku tedy zápis &amp;quot;snprintf(buf, limit, ...);&amp;quot; je v FC interně vykonán jako &amp;quot;snprintf(buf, limit+1, ...);&amp;quot;.&lt;br /&gt;
* oprava ve FULL-C: výpočet platné délky bufferu funguje i pro ukazatele vytvořené offsetem ze základní alokované adresy (příklad takového bufferu je: buf=malloc(x)+offset;)&lt;br /&gt;
* stav všech relé je načten z paměti vždy po zapnutí modulu, a ty relé které jsou ručně ovládány (manual control) a které byly před vypnutím v zapnutém (ON) stavu, jsou po zapnutí modulu aktivovány (zatímco relé ovládané z IP-W a FC jsou vždy po zapnutí modulu uvedeny do OFF stavu)&lt;br /&gt;
&lt;br /&gt;
== 18.12.2017 ==&lt;br /&gt;
* UserWEB projekt má opravenu chybu, kdy nebylo možno použít delší Name Chain tabulku (tedy lze už vložit mnohem více souborů) &lt;br /&gt;
* nastavená MAC adresa je zachována i po průchodu RSTD (byla-li platná)&lt;br /&gt;
* opravena chyba způsobující nefunkční http_get(), teď už to opět funguje&lt;br /&gt;
* aktualizace obsluhy PWM (např. lépe přepočítává zobrazovaná &amp;quot;procenta&amp;quot;)&lt;br /&gt;
* oprava strcat() funkce (opraveno hlídání max velikosti bufferu ze &amp;quot;from&amp;quot; na &amp;quot;to&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== 18.9.2017 ==&lt;br /&gt;
* FULL-C: printf() správně tiskne float i pokud se formátovací parametr zadá jako %d (tedy ne jako %f)&lt;br /&gt;
* FULL-C: snprint() opraven (když je 'from' kratší než 'to' tak je 'to' doplněn 0x00 - je to zvláštnost, nemá se to používat, ale C99 to předepisuje, tak to dodržíme)&lt;br /&gt;
&lt;br /&gt;
== 9.9.2017 ==&lt;br /&gt;
* vnitřní bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 29.8.2017 ==&lt;br /&gt;
* oprava chování RSTD - pokud je zapojen před zapnutím, nepřejde do automatického resetu po 10sec, ale RSTD je použit a SDS pracuje dále; přitom funkce &amp;quot;zapoj RSTD za běhu&amp;quot; je zachována správně&lt;br /&gt;
* zásadní zlepšení odolnosti FULL-C proti chybám programátora - vnitřní hlídání rozsahů bufferu a stringů, zamezující zápisu za hranice pole (typicky chybné použití sprintf() funkce, ale toto hlídání je aplikováno obecně všude)&lt;br /&gt;
&lt;br /&gt;
== 8.8.2017 ==&lt;br /&gt;
* oprava: FC teď správně převádí URL kód &amp;quot;sv?xxxx=yyyy...&amp;quot;, na text (vypadlo 31.3. při rozšíření počtu znaků pro sdílené proměnné Txx) &lt;br /&gt;
&lt;br /&gt;
== 10.7.2017 ==&lt;br /&gt;
* vydán firmware pro variantu &amp;quot;128kB&amp;quot; (od teď vychází dva typy firmware, pro variantu &amp;quot;64kB&amp;quot; a variantu &amp;quot;128kB&amp;quot;, vyberete si tu svou dle HW který máte)&lt;br /&gt;
* velká optimalizace využití paměti pro uložení a běh FULL-C programu (komprese, a zmenšení vyžadovaného heapu pro běh programu) - významně zvětšuje možnou velikost FC programu&lt;br /&gt;
* pin RSTD lze teď také použít i bez vypnutí a zapnutí SDS, stačí jej na 10 vteřin za běhu zkratovat (pak se provede RSTD a SDS se rebootuje) - výhodné pro zařízení kde vypnutí nelze provést&lt;br /&gt;
* drobné užitečné opravy dle hlášení uživatelů&lt;br /&gt;
* verze FC zvýšena na 0x08, a přidána možnost uložit 128 proměnných do baterií zálohované pamětí (tzn. obsah přežije výpadek napájení a FC program po restartu o tyto údaje nepřijde)&lt;br /&gt;
&lt;br /&gt;
== 2.6.2017 ==&lt;br /&gt;
* návratová hodnota funkce DF_read_page() je nastavena správně i v případě, kdy tato funkce čte data z cache (opakované čtení stejné stránky DF)&lt;br /&gt;
&lt;br /&gt;
== 6.4.2017 ==&lt;br /&gt;
* přidána FULL-C funkce AES-128-CTR, viz SDS_crypto(0x20, ...);&lt;br /&gt;
&lt;br /&gt;
== 31.3.2017 ==&lt;br /&gt;
* oprava RS485-MASTER drive, je teď zcela přesný (tzn. vypnut v přesném časování za úplně posledním vyslaným bitem)&lt;br /&gt;
* oprava čtení konfigurace 1-W, pomocí sds_get_a()&lt;br /&gt;
* přidán index 139&lt;br /&gt;
* odstraněno omezení na 32 znaků pro sdílené proměnné (přenos textu) &amp;quot;Txx&amp;quot; (xx = 00 až 99)&lt;br /&gt;
* fix návratových hodnot FULL-C funkcí pro práci s DF (teď to vrací správně 1 nebo 0, podle wiki)&lt;br /&gt;
* upřesněn název: (z BIG na BIG-64) / (z STSW na STSW-64)&lt;br /&gt;
* vyžaduje aktuální SDSLOAD.exe (6.3.2017 nebo novější) a FULLC.exe (6.3.2017 nebo novější)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== starší záznamy ==&lt;br /&gt;
&lt;br /&gt;
Nejsou k dispozici.&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=946</id>
		<title>Firmware</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=946"/>
		<updated>2025-03-28T18:57:11Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Nový Firmware ==&lt;br /&gt;
&lt;br /&gt;
Aktualizujte si své SDS - nahrejte do něj nový firmware, který získáte na této stránce - '''naskrolujte dolů''' kde naleznete odkaz na BIN soubor pro vaše zařízení.&lt;br /&gt;
&lt;br /&gt;
Postup a řešení problémů: [[Manual_Firmware_Update|Návod pro aktualizaci Firmware v SDS]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Odkazy ke stáhnutí ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;PC Software&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_sdsc_winexe.jpg]] '''Program SDSC.exe''' (programovací jazyk SDS-C, aktualizace firmware pro SDS '''první řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; stáhnout WinEXE pro SDS-C [https://sds.an-d.cz/firmware/SDSC_310123.exe zápis/simulace/upload SDS-C (SDS-C '''verze 09''') a UWEB, ze dne 31.1.2023]&amp;lt;br&amp;gt;SHA-256: daf1095f206404e33223f675f5d0bc09d4fc5dfd7d9f79f4f735af88f5ff1e6a&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program FULLC.exe''' (programovací jazyk FULL-C, aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; (FC verze '''0x12''' - '''aktuální'''): stáhnout WinEXE pro FULL-C [https://sds.an-d.cz/firmware/FULLC_220724.exe zápis/upload FULL-C a UWEB, ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro Firmware od 9.3.2023 včetně, pro všechny varianty SDS (64kB a 128kB a 512kB)&amp;lt;br&amp;gt;SHA-256: b4cb95d8ec8a6e844a3a4c9a2e9fc50ece60ccf44e8043f8c10f46b2294cae0b&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program SDSLOAD.exe''' (&amp;quot;jednokrokový&amp;quot; upload .FC souborů a aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; ('''aktuální''' verze, pro FW od 10.7.2017 včetně a dále) stáhnout WinEXE [https://sds.an-d.cz/firmware/SDSLOAD_220724.exe program SDSLOAD ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro všechny SDS varianty 64kB a 128kB a 512kB, (subvarianty DP a DS84)&amp;lt;br&amp;gt;SHA-256: ded5bf1aca2e04e22c33899a0976deccc8ff76eb88f53ecd9769788b7daa25a7&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_empty.jpg]] '''Program SDS LOG'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; Program '''[[SDS LOG: intro|SDS LOG]]''' - verze 0.1 ze dne 26.8.2011 - [https://sds.an-d.cz/firmware/SDS_LOG.exe stáhnout EXE program]&lt;br /&gt;
&amp;lt;li&amp;gt; Zdrojové kódy programu SDS LOG (Creative Commons Licence) [[SDS LOG: source code|ke stáhnutí zde]]&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS LOG: changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;První Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMICROE.jpg]]  [[Soubor:Thumbnail_SDSMICRO.jpg]] [[Soubor:Thumbnail_SDS_DIN.jpg]] '''D0000001''' MICRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: LM]] varianty '''LIGHT''', '''LIGHT 2''' a '''E (DIN)'''.&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny varianty a revize SDS MICRO LM.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_010722_CZ.bin SDS-MICRO-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_010722_EN.bin SDS-MICRO-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B0000057''' MICRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_021123_CZ.bin SDS-MICRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_021123_EN.bin SDS-MICRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B000D957''' MICRO ST DP&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST DP]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST DP.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_021123_CZ.bin SDS-MICRO-ST-DP-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_021123_EN.bin SDS-MICRO-ST-DP-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MINI_1.png]] [[Soubor:Thumbnail_SDS_MINI_2.png]] '''B0000020''' MINI ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MINI: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MINI ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MINI_021123_CZ.bin SDS-MINI-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MINI_021123_EN.bin SDS-MINI-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
[[SDS MINI: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMACRO.jpg]] '''C0000001''' MACRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: LM]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_010722_CZ.bin SDS-MACRO-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_010722_EN.bin SDS-MACRO-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MACRO_ST_rev1.png]] '''C0000057''' MACRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_021123_CZ.bin SDS-MACRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_021123_EN.bin SDS-MACRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSTTCPRO.jpg]] '''B0000001''' TTCPRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS TTCPRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_021123_CZ.bin SDS-TTCPRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_021123_EN.bin SDS-TTCPRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS TTCPRO ST má shodný Change Log se SDS MINI ST, a to zde: [[SDS MINI: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSIO6.jpg|160px]] '''D0000006''' IO6 LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: LM]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_010722_CZ.bin SDS-IO6-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_010722_EN.bin SDS-IO6-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 LM má shodný Change Log se SDS MICRO LM, a to zde: [[SDS MICRO: LM: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_empty.jpg]] '''D0000011''' IO6 ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_021123_CZ.bin SDS-IO6-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_021123_EN.bin SDS-IO6-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 ST má shodný Change Log se SDS MICRO ST, a to zde: [[SDS MICRO: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_FTP_rev1.png]] '''F0000001''' FTP LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS FTP: LM]], výchozí firmware.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Firmware: ''SDS FTP ze dne 7.9.2010'' už nahrán ve výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS FTP: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_ONEDPS.jpg]] '''E000AAA1''' UPS ONEDPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: ONEDPS]], finální jednodesková verze (aktuální) (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stáhnout firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_CZ.bin (Česká lokalizace) SDS-UPS-ONEDPS-LM ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;Download firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_EN.bin (English language version) SDS-UPS-ONEDPS-LM released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS UPS: LM: ONEDPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_TWODPS.jpg]] '''C00xxxxx''' UPS TWODPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: TWODPS]], HW rev3u - DVOUDESKOVÁ (UŽ NEPRODÁVANÁ) varianta.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je zaslán na požádání (pošlete email), aktuální verze je z 1.3.2011 (dále aktualizováno na specifické požádání, raději proto přejděte na nový HW).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Každá deska má svou kalibraci, proto každá deska má svůj vlastní FW, proto musíte uvést S/N svého výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;HISTORIE: [[SDS UPS: LM: TWODPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;Druhá Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSBIG.jpg]] [[Soubor:Thumbnail_SDSSMALL.jpg]] '''B1900001''' / '''B1900002''' / '''B1900004''' : BIG, BIG2, SMALL, STSW, MBGW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Společný firmware pro výrobky [[SDS BIG]], [[SDS SMALL]] a [[SDS STSW]] a [[SDS MBGW]]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je jednotný pro všechny varianty '''SDS Druhé Produktové Řady''', nutné je rozlišení dle varianty 64kB/128kB/512kB. Rozlišení podle dalších subvariant (DP, DS84) se neprovádí.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je společný pro BIG a BIG2, rozlišení je pouze dle varianty 64/128/512.&lt;br /&gt;
&amp;lt;li&amp;gt;Pozn. Modul SMALL a modul MBGW interně obsahuje modul STSW, nahrává se tam tedy stejný FW.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware vždy vyžaduje použití odpovídající, aktuální verze FULLC.EXE programu. &lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS BIG/SMALL/STSW: [[SDS BIG: firmware changelog|firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;64kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 64kB) [https://sds.an-d.cz/firmware/SDS_BIG_64K_280325_EN.bin firmware &amp;quot;64kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 28.3.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;128kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 128kB) [https://sds.an-d.cz/firmware/SDS_BIG_128K_280325_EN.bin firmware &amp;quot;128kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 28.3.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;512kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [[firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 12.4.2022|informace pokud máte SDS512 s FW &amp;lt;b&amp;gt;starším&amp;lt;/b&amp;gt; než 12.4.2022]]&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [https://sds.an-d.cz/firmware/SDS_BIG_512K_280325_EN.bin firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 28.3.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;Informace: SDS BIG/SMALL/STSW 512 se starším FW než 12.4.2022 vyžaduje přeprogramování u výrobce.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| POZOR&lt;br /&gt;
'''Aktualizujte''' své doplňkové sandwich desky, tzn. [[SDS BIG: DALI]], [[SDS BIG: LORA]] - na verzi FW 5.12.2016 '''nebo novější'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Aktualizaci lze provést jen fyzicky u výrobce, ten ji provede bezplatně (zašlete výrobci vaše SDS pro jeho aktualizaci). Se starým FW nebude tento HW plně fungovat.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Informace ===&lt;br /&gt;
&lt;br /&gt;
 VŽDY MĚJTE VE SVÉM ZAŘÍZENÍ NEJNOVĚJŠÍ FIRMWARE, A POUŽÍVEJTE TAKÉ NEJNOVĚJŠÍ SDS-C EXE / FULL-C EXE PROGRAM.&lt;br /&gt;
 V opačném případě vám budou chybět nové funkce, které neustále přidáváme, a také nebudete mít opravené nalezené chyby.&lt;br /&gt;
 V případě že chcete získat podporu, musíte mít instalovaný nejnovější firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Historický Software ===&lt;br /&gt;
&lt;br /&gt;
Za účelem aktualizace takových SDS, kde už dlouho nebyl aktualizován firmware, je potřeba použít odpovídající EXE program pro aktualizaci takovéhoto zařízení.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== První Produktová Řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro SDS-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_151119.exe ze dne '''15.11.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 08, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020118.exe ze dne '''2.1.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 07, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020317.exe ze dne '''2.3.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 8.8.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_060216.exe ze dne '''6.2.2016''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které nemají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 24.1.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_231111.exe ze dne '''23.11.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 04&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_170211.exe ze dne '''17.2.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''února 2011''')&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro ''SDS-C verze č. 03'' (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_140511.exe ze dne '''14.5.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''konce května 2011''')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Druhá Produktová řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro FULL-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_070323.exe ze dne '''7.3.2023''']&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_311222.exe ze dne '''31.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 11, (firmware od 9.1.2023 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_071222.exe ze dne '''7.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 10, (firmware od 18.11.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_161022.exe ze dne '''16.10.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0F, (firmware od 16.10.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_110722.exe ze dne '''11.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0E, (firmware od 11.7.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010722.exe ze dne '''1.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0D, (firmware od 6.8.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030422.exe ze dne '''3.4.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0C, (firmware od 23.3.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010322.exe ze dne '''1.3.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0B, (firmware od 6.8.2020 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030119.exe ze dne '''3.1.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0A, (firmware od 3.1.2019 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010718.exe ze dne '''1.7.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 09, (firmware od 27.6.2018 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_100717.exe ze dne '''10.7.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 08, (firmware od 10.7.2017 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_080617.exe ze dne '''8.6.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 06, (firmware starší než Červenec-2017, a pouze pro variantu SDS 64kB)&lt;br /&gt;
&lt;br /&gt;
* (historická verze) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_201022.exe ze dne 20.10.2022]&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_120417.exe ze dne 12.4.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB která používá ''starý'' firmware (2017 nebo starší)&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_100717.exe ze dne 10.7.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB a 128kB (nepodporuje variantu 512kB tak jako aktuální stáhnutelná verze aplikace)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta Testing ==&lt;br /&gt;
&lt;br /&gt;
Než vydáme novou verzi, je potřeba změny a novinky otestovat.&lt;br /&gt;
&lt;br /&gt;
Pokud jste ochotní se testu zúčastnit, pak se podívejte [https://forum.sds.an-d.cz/viewtopic.php?id=129 na tento odkaz]. Zde jsou uveřejněny vždy nejnovější beta verze firmware.&lt;br /&gt;
&lt;br /&gt;
Diskuse s vývojem k aktuálnímu Firmware je k dispozici na našem fóru.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_BIG:_firmware_changelog&amp;diff=945</id>
		<title>SDS BIG: firmware changelog</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_BIG:_firmware_changelog&amp;diff=945"/>
		<updated>2025-03-15T09:43:28Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SDS-BIG(2) , SDS-SMALL(2), SDS-STSW a všechny OEM ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
Tato stránka se věnuje změnám ve firmware a v HW pro výrobek SDS-BIG a SDS-SMALL a SDS-STSW.&lt;br /&gt;
&lt;br /&gt;
Změny jsou seřazeny tak, že nejnovější verze (která je stáhnutelná z webu) je popsána jako první.&lt;br /&gt;
&lt;br /&gt;
Proč je vydáván nový firmware? Protože operativně řešíme požadavky uživatelů, a jsou doplňovány nové funkce.&lt;br /&gt;
&lt;br /&gt;
Firmware poskytujeme zcela zadarmo po celou dobu životnosti výrobku. Děláme to vše pro Vás.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 15.3.2025 ==&lt;br /&gt;
* oprava odpovědi pro S-UDP příkaz 0x08 (Write FC)&lt;br /&gt;
&lt;br /&gt;
== 27.2.2025 ==&lt;br /&gt;
* upraven timeout pro čtení souboru z SD karty přes webový server (poskytování obsahu z SD karty na web)&lt;br /&gt;
* 512: oprava nefunkčního čtení ze sériové linky COM6&lt;br /&gt;
&lt;br /&gt;
== 8.2.2025 ==&lt;br /&gt;
* oprava některých payloadů v protokolu SUDP &lt;br /&gt;
&lt;br /&gt;
== 22.7.2024 ==&lt;br /&gt;
* FULLC.EXE - odstraněna chyba, která neumožnila nahrát do SDS soubor FCB větší než 64kB&lt;br /&gt;
* možnost volby klidového stavu pro každý S0 vstup (umožňuje počítat impulsy i pro NC spínače v měřiči energie)&lt;br /&gt;
* FC: SDS_reset_program() nezanechává nadbytečnou chybouvou hlášku v konzoli&lt;br /&gt;
* FC: mqtt_publish() použije vámi nastavené bitové pole do PUBLISH hlavičky (viz index 11198)&lt;br /&gt;
* SMTP odesílání by mělo být robustnější při odesílání více emailů za sebou&lt;br /&gt;
&lt;br /&gt;
== 24.2.2024 ==&lt;br /&gt;
* možnost smazat nahraný TLS klíč+certifikát (tlačítko s heslem, ve webovém rozhraní)&lt;br /&gt;
* RSTD nesmaže (nanastaví na tovární hodnoty) vaše nastavení pro všechny AD vstupy (to lze teď udělat ručně, nově přidaným tlačítkem ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 31.10.2023 ==&lt;br /&gt;
* SNMP - oprava způsobu předání chyby v odpovědi&lt;br /&gt;
* SNMP v1 - možnost nastavit dvě nezávislé komunity&lt;br /&gt;
* 512: plná implementace SNMP v3 (včetně AUTHPRIV)&lt;br /&gt;
* 64,128: omezená implementace SNMP v3 (pouze NOAUTHNOPRIV)&lt;br /&gt;
* FC: indexy 66, 67, 68, 4990..4999&lt;br /&gt;
&lt;br /&gt;
== 19.8.2023 ==&lt;br /&gt;
* oprava SDS UDP SEARCH (příchozí paket na portu 20484 byl firewallem od verze 6.6.23 zahozen, teď už opraveno)&lt;br /&gt;
* 512: HTTPS server (aktivace nahráním certifikátu, jinak zůstává HTTP)&lt;br /&gt;
&lt;br /&gt;
== 14.7.2023 ==&lt;br /&gt;
* HTTP POST: oprava sekundární chyby (objevila se ve FW 6.6.2023), kdy FW akceptoval jen rozdělený krok č. 2 (teď už opět umí jak rozdělený, tak i nerozdělený krok č. 2)&lt;br /&gt;
* FC: umožněn přímý zápisu do indexu 193 (přímo zapíše do registru PWM - určeno pro nejjemnější uživatelskou přímo konfiguraci generátoru PWM)&lt;br /&gt;
&lt;br /&gt;
== 6.6.2023 ==&lt;br /&gt;
* funkce http_header_set_user_row() má zvětšenou maximální délku parametru na 255 znaků&lt;br /&gt;
* 512: počet MQTT subscribe zvětšen z max. 8 na max. 20&lt;br /&gt;
* 512: další zvětšení FC konzole&lt;br /&gt;
* webový admin: úprava (oprava) použití timerů v javascriptu &lt;br /&gt;
* FC: DNS resolv umí pracovat s širším rozsahem UDP portů (někdy způsobilo nepřijetí odpovědi a musel se resolv opakovat)&lt;br /&gt;
* HTTP POST: poradí si i s ne-oddělenou komunikací (když klient pošle úvodní konverzační data najednou, neodděleně, tzn. nečeká na odpověď ze serveru)&lt;br /&gt;
 &lt;br /&gt;
== 9.3.2023 ==&lt;br /&gt;
* FC: verze 0x12 (+ odpovídající FULLC.EXE): přidány funkce http_header_set_user_row() a http_header_set_content_type()&lt;br /&gt;
* 64 a 128: odstraněno možné zpomalení běhu po zapnutí v určité okrajové situaci&lt;br /&gt;
&lt;br /&gt;
== 28.2.2023 ==&lt;br /&gt;
* POST: přidán příkaz /wrdf&lt;br /&gt;
* POST: oprava chyby, kdy mohlo dojít k neprovedení akce na základě příkazu /changeip&lt;br /&gt;
* malá bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 9.1.2023 ==&lt;br /&gt;
* FC verze 0x11 (+ odpovídající FULLC.EXE)&lt;br /&gt;
* firmware pro všechny HW varianty BIG, BIG2-DP a BIG2-DP-DS84&lt;br /&gt;
* web: doplněno zobrazení surových hodnot, čtených z 1-Wire zařízení &lt;br /&gt;
* FC: přidána funkce SDS_onewire_config() pro varianty -DS84&lt;br /&gt;
* FC: doplněna funkčnost FC WatchDog (pro situaci, pokud spadne program na chybu a je zastaven, tak FC Watchdog pokračuje a provede restart FC programu)&lt;br /&gt;
* FC: doplněna archivace poslední chyby FC programu, a zobrazení na webu (i v případě restartu FC Watchdogem)&lt;br /&gt;
* FC: funkce pro prohledání složky (file_opendir, file_readdir, file_closedir)&lt;br /&gt;
* oprava PWM3 a PWM4 na BIG2-64/128 - funkce, ukládání nastavení&lt;br /&gt;
* HW BIG2 DS84: RTC běží na baterii na všech HW variantách DS84 - udržuje běžící aktuální čas i při vypnutém napájení&lt;br /&gt;
* FC: přidána funkce SDS_onewire_search_bus()&lt;br /&gt;
* FC: přidány indexy 132..136 , indexy 2488..2499, 2986..2997&lt;br /&gt;
&lt;br /&gt;
== 1.12.2022 ==&lt;br /&gt;
* bezpečnostní aktualizace (dle nahlášené záležitosti a testu)&lt;br /&gt;
* trvalé zobrazení archivovaného HW faultu v Logu (pokud dojde k faultu, je hned před restartem zařízení archivován a trvale zobrazován ve výpisu, i po libovolném novém spuštění)&lt;br /&gt;
* odstraněno eventuální čekání (a následný WDG restart) při komunikaci s externími I2C zařízeními (specifické chipy na sandwich deskách uživatelů)&lt;br /&gt;
&lt;br /&gt;
== 30.11.2022 ==&lt;br /&gt;
* FC: zvýšena výkonnost (512: optimalizace pro až několika-násobné celkové zrychlení vykonávání programu) (64,128: byť jen menší zrychlení, ale přece + zvětšená konzole echo.htm) &lt;br /&gt;
* zrychleno webové rozhraní (zpomaleno zřejmě o dvě verze zpět, byť to bylo bez vlivu na funkci, je vhodnější když to nezdržuje při zobrazování v prohlížeči)&lt;br /&gt;
* FC: přidán index 137&lt;br /&gt;
* zlepšena interní obsluha sériových linek (COMx/RS485), odstraněno možné náhodné zpoždění (byť jen ve specifickém případě a jen o několik msec, ale i tak se toto vyřešilo)&lt;br /&gt;
&lt;br /&gt;
== 22.11.2022 ==&lt;br /&gt;
* FC (64/128/512): verze 0x10 &lt;br /&gt;
* dns_resolv správně hlásí chybu 516 a 517 při výpadku připojení v průběhu dotazu&lt;br /&gt;
&lt;br /&gt;
== 18.11.2022 ==&lt;br /&gt;
* FC (64/128): verze 0x10 &lt;br /&gt;
* FC: nová funkce SDS_set_RTC&lt;br /&gt;
* FC: nové funkce pro práci s float&lt;br /&gt;
* oprava pro mounting některých typů SD karet&lt;br /&gt;
&lt;br /&gt;
== 14.11.2022 ==&lt;br /&gt;
* FC: oprava výpočtů v 64-bit doméně&lt;br /&gt;
* FC: file_expand() - detailnější rozvrstvení návratových chybových hodnot&lt;br /&gt;
* web: rozšířeny zobrazované informace o probíhajícím připojování SD karty&lt;br /&gt;
* web server: vrací korektně 503 pro soubory na SD kartě, které jsou zablokovány FC programem&lt;br /&gt;
* FC: rozšířena a zásadně zlepšena implementace printf/sprintf/snprintf/sscanf - viz detaily v návodu na wiki&lt;br /&gt;
* FC: zlepšen výpis (informace na web) při určitých chybách v FC programu, plus další drobky kolem echo.htm&lt;br /&gt;
&lt;br /&gt;
== 16.10.2022 ==&lt;br /&gt;
* tento firmware (od této verze) podporuje i hardware SDS 64/128/512 ve variantě DP&lt;br /&gt;
* podpora pro 4 PWM výstupy (pro vhodný hardware - BIG2)&lt;br /&gt;
* odpověď na (webový) příkaz /sv? , má doplněný obsah http hlavičky, takže by ji mělo být snazší zpracovat&lt;br /&gt;
* FC: watchdog programu je (nově) pozastaven po dobu mountování SD karty (protože je pozastaven i program)&lt;br /&gt;
* FC: zápis do indexu 999 funguje jak má&lt;br /&gt;
* FC: verze 0x0F (nové funkce PWMx)&lt;br /&gt;
&lt;br /&gt;
== 5.10.2022 ==&lt;br /&gt;
* pouze vše řady 512 (ostatní bez tohoto problému) - důležitá oprava situace kdy někdy chybně došlo ke smazání nahraného FC programu při nahrání nového UWEB projektu do SDS&lt;br /&gt;
&lt;br /&gt;
== 30.9.2022 ==&lt;br /&gt;
* FC: oprava běhu programu v situaci kdy v kódu je vnořený (nested) switch() v rámci jiného switch() (původně chybné chování, teď opraveno)&lt;br /&gt;
&lt;br /&gt;
== 28.9.2022 ==&lt;br /&gt;
* FC: oprava výsledků maker (define), kdy chybně docházelo k pevnému přetypování na int32_t, což je teď opraveno (odstraněno)&lt;br /&gt;
&lt;br /&gt;
== 1.8.2022 ==&lt;br /&gt;
* správně zobrazovaná hláška (nápověda) na úvodní webové stránce ohledně stavu konfigurace&lt;br /&gt;
* FC: přidáno tlačítko (odkaz) pro restart FULLC programu (např. pokud skončil a chcete jej ručně spustit znovu)&lt;br /&gt;
* FC: do výpisu chyby při pádu programu je přidán UTC čas (pro identifikaci, kdy se chyba stala)&lt;br /&gt;
* FC: spolehlivostní úpravy při startu programu (načtení z DF), a při zápisu nového programu (práce s DF)&lt;br /&gt;
&lt;br /&gt;
== 11.7.2022 ==&lt;br /&gt;
* FC: verze 0x0E&lt;br /&gt;
* FC: přidána funkce mktime()&lt;br /&gt;
* FC: přidána funkce gmtime()&lt;br /&gt;
* FC: přidána funkce localtime()&lt;br /&gt;
* opraveno zachování konfigurace ipwdg (webové rozhraní) a obsluhy relé ipwdg&lt;br /&gt;
&lt;br /&gt;
== 1.7.2022 ==&lt;br /&gt;
* FC: verze 0x0D&lt;br /&gt;
* FC: upravena funkce SDS_TOPB_keyboard_status() pro lepší předané výsledky&lt;br /&gt;
* FC: přidána funkce SDS_TOPB_keyboard_updn()&lt;br /&gt;
* FC: přidána funkce SDS_rescan_onewire()&lt;br /&gt;
* FC: odstraněno náhodné hlášení o už probíhajícím nahrávání programu při nahrávání z EXE&lt;br /&gt;
* BIG 64/128 prodloužen čas pro sestavení Ethernetového spojení, což řeší problém s některými USB síťovými kartami atd.&lt;br /&gt;
* opraveno HTTP POST nastavení položek NTP&lt;br /&gt;
* opraveno HTTP POST který teď neuzavře spojení dříve než má, pokud mazání NVM pro nový FW (nebo nový UserWeb) trvá dlouho&lt;br /&gt;
&lt;br /&gt;
== 12.4.2022 ==&lt;br /&gt;
* doplněna informační stránka o vnitřním stavu OneWire Master (pro snazší identifikaci problémů při používání sběrnice)&lt;br /&gt;
* oprava v bootloaderu pro řadu 512 - vyžaduje přeprogramování u výrobce pro všechna SDS řady 512 s FW starším než 14.2.2022&lt;br /&gt;
&lt;br /&gt;
== 3.4.2022 ==&lt;br /&gt;
* FC verze 0x0C&lt;br /&gt;
* FC: přidána funkce SDS_I2C_rw&lt;br /&gt;
* OneWire stabilnější&lt;br /&gt;
&lt;br /&gt;
== 21.1.2022 ==&lt;br /&gt;
* prioritu mají vybrané konfigurační položky v NVM (jsou-li tam platné) před baterií zálohovanou pamětí&lt;br /&gt;
* aktivován HTTP POST protokol pro nahrávání a konfiguraci SDS (viz [[SDS:POST_upload]])&lt;br /&gt;
&lt;br /&gt;
== 18.1.2022 ==&lt;br /&gt;
* RSTD zapíše do NVM všechny konfigurační položky (i to co nenuluje), pro jistotu že v NVM bude vše skutečně zapsáno&lt;br /&gt;
* načítání konfigurace upraveno (větší spolehlivost)&lt;br /&gt;
&lt;br /&gt;
== 15.1.2022 ==&lt;br /&gt;
* přidána stránka cfgstatus.htm - pro možnost kontroly stavu uložené konfigurace v pevné paměti (např. co nemáte uloženo)&lt;br /&gt;
* přidán M2M výstup ip.xml&lt;br /&gt;
* FC: přidán algoritmus SHA-256 do funkce SDS_crypto()&lt;br /&gt;
* FC: každý program má unikátní identifikátor, podle kterého lze např. kontrolovat či zpětně poznat co máte v SDS nahráno&lt;br /&gt;
* identifikátor FC programu přidán na webové rozhraní a do M2M výstupů, a do exe aplikace&lt;br /&gt;
* zobrazeno unikátní identifikační čislo SDS hardware (napevno spojeno s modulem SDS, nezměnitelné), teď i ve M2M výstupech&lt;br /&gt;
* SNMP: nové položky .8.90 , .8.91 , .8.99&lt;br /&gt;
* FC: nové get(u32) položky 2 a 87&lt;br /&gt;
&lt;br /&gt;
== 31.12.2021 ==&lt;br /&gt;
* možnost vyřadit NTP z činnosti zadáním adresy 127.0.0.1 (vhodné pro uživatele kteří získávají čas odjinud, např. přes LoRA)&lt;br /&gt;
* web: informace na web (p=8) o stavu připojování SD karty (mounting...) a o stavu kdy je FC program pozastaven (PAUSED)&lt;br /&gt;
* web: opraven zámek zvětšené konzole (echo)&lt;br /&gt;
* důslednější kontrola platnosti konfigurace při startu&lt;br /&gt;
&lt;br /&gt;
== 27.12.2021 ==&lt;br /&gt;
* opravena chyba kdy na webu nešlo nastavit 100 procent PWM duty (jen 0 až 99, teď už jde i 100)&lt;br /&gt;
* FC: několikanásobně zvětšena konzole (echo.htm)&lt;br /&gt;
* HW: při poruše hlavního zdroje hodin (krystal) se použije záložní zdroj&lt;br /&gt;
* HW: využíváme RTC pro udržení času při přechodu přes reset (drží čas dokud zase nepřijde NTP)&lt;br /&gt;
* aktualizován bootloader (aktualizace bootloaderu jen prostřednictvím přeprogramování u výrobce) - umí znovu nahrát FW pokud se v SoC poškodí&lt;br /&gt;
* vydána varianta 512 - vlastní soubor s firmware&lt;br /&gt;
&lt;br /&gt;
== 25.12.2021 ==&lt;br /&gt;
* pouze interní vydání&lt;br /&gt;
&lt;br /&gt;
== 26.3.2021 ==&lt;br /&gt;
* FC: oprava nesprávného zacházení s unsigned typy (na některých místech interně přemapovány na signed)&lt;br /&gt;
* FC: chování varianty if pro speciální kombinaci signed/unsigned dle specifikace standardu C&lt;br /&gt;
&lt;br /&gt;
== 9.2.2021 ==&lt;br /&gt;
* FC: oprava TID v MODBUS-TCP&lt;br /&gt;
* MBTC výpis rozšířen&lt;br /&gt;
* FC: drobná úspora heap (více dostupného místa)&lt;br /&gt;
* FC: dns resolv drobný fix&lt;br /&gt;
* FC: http_get a http_post důležitý fix&lt;br /&gt;
* FC: nová funkce http_close&lt;br /&gt;
* FC: chyba -7 pro MODBUS-TCP a pro MQTT&lt;br /&gt;
* vylepšený algoritmus S0, rozšířené možnosti nastavení detektoru S0 (nastavení přidáno ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 22.12.2020 ==&lt;br /&gt;
* web: ruční přepnutí CBY pro relé (tzn. &amp;quot;kdo ovládá relé&amp;quot;), na &amp;quot;FULL-C&amp;quot;, dané relé nevypne (off) ale ponechá jeho stávající stav (on, off)&lt;br /&gt;
* security fix&lt;br /&gt;
&lt;br /&gt;
== 10.12.2020 ==&lt;br /&gt;
* dřívější odeslání NTP požadavku po výpadku síťového spojení&lt;br /&gt;
* integrovaná korekce chyby A/D měření pro HW osazený LMV324; uživatel může povolit tuto automatickou opravu chyby LMV324 ve webové administraci&lt;br /&gt;
* počítání délky aktivace tarifního vstupu (doba T0 a T1 v sekundách za den) viz nové sys, pozor pro funkci vyžaduje NTP&lt;br /&gt;
* automatický odečet S0 počítadel (vždy za dnešek a včerejšek), viz nové sys, pozor pro funkci vyžaduje NTP&lt;br /&gt;
&lt;br /&gt;
== 23.11.2020 ==&lt;br /&gt;
* FC + FULLC.exe: oprava chyby v případě více #if / #ifdef / #endif bloků zapsaných hned za sebou&lt;br /&gt;
* FC: makra a define lze provést i uvnitř funkce (dříve jen venku)&lt;br /&gt;
* FC: detekce nesprávné dereference ukazatele&lt;br /&gt;
&lt;br /&gt;
== 14.11.2020 ==&lt;br /&gt;
* webová administrace: stránka p=42: index ck03 se propíše i do nastavení (chybělo od 23.10.2020, web byl aktualizován, nastavení ale přebíralo ck00)&lt;br /&gt;
&lt;br /&gt;
== 4.11.2020 ==&lt;br /&gt;
* FC + FULLC.exe: odstraněn problém při načtení nahraného FULL-C programu v SDS, kdy dříve mohlo u jedné specifické velikosti nahraného programu, dojít k jeho nespuštění kvůli neodpovídajícímu crc&lt;br /&gt;
&lt;br /&gt;
== 3.11.2020 ==&lt;br /&gt;
* FC: zobrazení (v konzoli) čísla řádku (ve zdrojovém kódu) při chybě (což velmi zlepší ladění programů)&lt;br /&gt;
* FULLC.exe: odstraněno omezení na 255 znaků na řádek&lt;br /&gt;
* FULLC.exe: zrychlení nahrávání do SDS&lt;br /&gt;
&lt;br /&gt;
== 23.10.2020 ==&lt;br /&gt;
* webová administrace: stránka p=42: změna indexu ck00 na ck03 ať se dají uživatelským skriptem všechny prvky samostatně rozlišit&lt;br /&gt;
* FC: oprava http_get/post: správné vyplnění výsledků i pro situaci kdy server ukončí spojení přes TCP RST&lt;br /&gt;
&lt;br /&gt;
== 14.10.2020 ==&lt;br /&gt;
* oprava FULL-C funkce XTEA-CRYPT (bug o dvě verze dříve)&lt;br /&gt;
&lt;br /&gt;
== 13.10.2020 ==&lt;br /&gt;
* důležitá oprava chyby ve FULL-C (ternary operator, a další nahlášené nesrovnalosti)&lt;br /&gt;
&lt;br /&gt;
== 13.9.2020 ==&lt;br /&gt;
* oprava detekce SD karty (některé varianty SD karet nebyly detekovány, teď už ano)&lt;br /&gt;
&lt;br /&gt;
== 9.8.2020 ==&lt;br /&gt;
* FULL-C verze 0B (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* různé drobné opravy a zabezpečení&lt;br /&gt;
* zobrazení auditlogu (webové rozhraní SDS)&lt;br /&gt;
* FC: http_post&lt;br /&gt;
* FC: MQTT klient&lt;br /&gt;
* FC: MODBUS-TCP klient&lt;br /&gt;
&lt;br /&gt;
== 4.8.2020 ==&lt;br /&gt;
* úprava obsluhy relé&lt;br /&gt;
* podpora OneWire modulu SDS-1W-T-RH&lt;br /&gt;
&lt;br /&gt;
== 3.10.2019 ==&lt;br /&gt;
* SMTP klient posílá v hlavičce i položku &amp;quot;Date&amp;quot; (ale jen za předpokladu správného času v SDS)&lt;br /&gt;
* RSTD při zapnutí zařízení, ve kterém není záložní baterie (nebo je vybitá), zachová původně nastavenou MAC adresu (vše ostatní ale už jde do defaultu, což je správně)&lt;br /&gt;
* SUDP: rozšířen NOP příkaz &lt;br /&gt;
* SUDP: přidány další nové příkazy (master_cmd: 32, 33, 40, 42, 44, 48)&lt;br /&gt;
&lt;br /&gt;
== 23.9.2019 ==&lt;br /&gt;
* oprava GUI (S0 Inputs)&lt;br /&gt;
* SNMP nabízí možnost číst všechny sdílené proměnné (FULL-C: Sxx, Uxx, Fxx, Txx)&lt;br /&gt;
* opraven nefunkční RSTD na modulu STSW-rev3&lt;br /&gt;
&lt;br /&gt;
== 23.6.2019 ==&lt;br /&gt;
* oprava chyby objevené ve FW 28.5.2019, kdy na některých specifických SDS nefungovaly AD vstupy&lt;br /&gt;
&lt;br /&gt;
== 28.5.2019 ==&lt;br /&gt;
* oprava funkce SD karty (pro případy kdy se stala po čase nedostupná pro FC/web)&lt;br /&gt;
&lt;br /&gt;
== 5.5.2019 ==&lt;br /&gt;
* dořešeno hlídání stavu (načtení, atd.) SD karty i v případě provozu náročného FULL-C programu (tedy i pro hluboce vnořené smyčky)&lt;br /&gt;
* oprava původně chybné implementace S-UDP příkazu &amp;quot;1Waccess: sub-command 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== 24.2.2019 ==&lt;br /&gt;
* překlopení z BETA do oficiálního FW&lt;br /&gt;
* automatika zimní/letní čas&lt;br /&gt;
* přístup na SD kartu: FULL-C pracuje se soubory (vytvoření, smazání, čtení a zápis, atd.) &lt;br /&gt;
* přístup na SD kartu: web server zobrazuje soubory ze SD karty (vše ve složce \web\ a podsložkách této složky)&lt;br /&gt;
* oprava čtení napětí baterie pro variantu 128K&lt;br /&gt;
* shared.xml&lt;br /&gt;
* odstraněno omezení délky ve shared.txt&lt;br /&gt;
* zprovozněno getsv&lt;br /&gt;
* verze FULL-C je teď FC 0x0A (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* FULL-C: nová možnost způsobu čtení teploty SoC&lt;br /&gt;
* FULL-C: index 64, 65, 184, 185, 429, 430, atd.&lt;br /&gt;
* FULL-C: doplněné set/get funkce pro sdílené proměnné&lt;br /&gt;
* FULL-C: s/printf umí správné zpracovat požadavek na určení desetinných míst pro float&lt;br /&gt;
* FULL-C: funkce pro reset FC programu&lt;br /&gt;
* FULL-C: funkce pro watchdog FC programu&lt;br /&gt;
* SNMP nové OIDy (dle přidaných věcí - čas, sdcard)&lt;br /&gt;
&lt;br /&gt;
== 1.7.2018 ==&lt;br /&gt;
* SNMP: sdsS0translatedUnitT0,1 je poskytováno jako hodnota od odečtu (ne od úplného začátku měření, jak to bylo předtím) &lt;br /&gt;
* FULL-C: přidán index 183 poskytující datum vydání FW který je právě nahrán v SDS&lt;br /&gt;
&lt;br /&gt;
== 27.6.2018 ==&lt;br /&gt;
* verze FULL-C je teď FC 0x09 (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* FULL-C: přidána podpora pro int64_t a uint64_t&lt;br /&gt;
* FULL-C: přejmenováno set a get funkce (rozlišení 32 a 64 bit)&lt;br /&gt;
* FULL-C: snprintf přesně dle standardu (zrušena nevhodná změna z 20.12.2017)&lt;br /&gt;
* drobné opravy&lt;br /&gt;
* drobná oprava v odchozím TCP-SYN a v generátoru ISN&lt;br /&gt;
&lt;br /&gt;
== 8.3.2018 ==&lt;br /&gt;
* oprava echo.htm - správně wrapuje obsah, a nejsou tam nadbytečné 0x00&lt;br /&gt;
* vhodnější řešení rexmitu částí webových stránek a dynamických dat (ocení to zejména uživatelé s mobilním připojením pro SDS)&lt;br /&gt;
&lt;br /&gt;
== 2.3.2018 ==&lt;br /&gt;
* aktulizace a oprava ve výpočtu &amp;quot;aktuálního výkonu&amp;quot; pro okrajové situace (např. krajní hodnoty impulsní konstanty)&lt;br /&gt;
&lt;br /&gt;
== 11.2.2017 ==&lt;br /&gt;
* zprovozněny funkce set/get pro indexy 4000 až 4300 (alternativní přístup k číselným sdíleným proměnným)&lt;br /&gt;
&lt;br /&gt;
== 21.12.2017 ==&lt;br /&gt;
* zvýšena stabilita spuštění po zapnutí&lt;br /&gt;
&lt;br /&gt;
== 20.12.2017 ==&lt;br /&gt;
* dočasná změna ve FULL-C (bude zrušena): funkce snprintf() má interně posunutý limit délky zápisu o 1 (toto je záměrný rozdíl proti C99). Změna v SDS je provedena z důvodu neznalosti programátorů FC v tom, že do snprintf() limitu je potřeba započítat i jeden byte pro ukončující nulu. Ve výsledku tedy zápis &amp;quot;snprintf(buf, limit, ...);&amp;quot; je v FC interně vykonán jako &amp;quot;snprintf(buf, limit+1, ...);&amp;quot;.&lt;br /&gt;
* oprava ve FULL-C: výpočet platné délky bufferu funguje i pro ukazatele vytvořené offsetem ze základní alokované adresy (příklad takového bufferu je: buf=malloc(x)+offset;)&lt;br /&gt;
* stav všech relé je načten z paměti vždy po zapnutí modulu, a ty relé které jsou ručně ovládány (manual control) a které byly před vypnutím v zapnutém (ON) stavu, jsou po zapnutí modulu aktivovány (zatímco relé ovládané z IP-W a FC jsou vždy po zapnutí modulu uvedeny do OFF stavu)&lt;br /&gt;
&lt;br /&gt;
== 18.12.2017 ==&lt;br /&gt;
* UserWEB projekt má opravenu chybu, kdy nebylo možno použít delší Name Chain tabulku (tedy lze už vložit mnohem více souborů) &lt;br /&gt;
* nastavená MAC adresa je zachována i po průchodu RSTD (byla-li platná)&lt;br /&gt;
* opravena chyba způsobující nefunkční http_get(), teď už to opět funguje&lt;br /&gt;
* aktualizace obsluhy PWM (např. lépe přepočítává zobrazovaná &amp;quot;procenta&amp;quot;)&lt;br /&gt;
* oprava strcat() funkce (opraveno hlídání max velikosti bufferu ze &amp;quot;from&amp;quot; na &amp;quot;to&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== 18.9.2017 ==&lt;br /&gt;
* FULL-C: printf() správně tiskne float i pokud se formátovací parametr zadá jako %d (tedy ne jako %f)&lt;br /&gt;
* FULL-C: snprint() opraven (když je 'from' kratší než 'to' tak je 'to' doplněn 0x00 - je to zvláštnost, nemá se to používat, ale C99 to předepisuje, tak to dodržíme)&lt;br /&gt;
&lt;br /&gt;
== 9.9.2017 ==&lt;br /&gt;
* vnitřní bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 29.8.2017 ==&lt;br /&gt;
* oprava chování RSTD - pokud je zapojen před zapnutím, nepřejde do automatického resetu po 10sec, ale RSTD je použit a SDS pracuje dále; přitom funkce &amp;quot;zapoj RSTD za běhu&amp;quot; je zachována správně&lt;br /&gt;
* zásadní zlepšení odolnosti FULL-C proti chybám programátora - vnitřní hlídání rozsahů bufferu a stringů, zamezující zápisu za hranice pole (typicky chybné použití sprintf() funkce, ale toto hlídání je aplikováno obecně všude)&lt;br /&gt;
&lt;br /&gt;
== 8.8.2017 ==&lt;br /&gt;
* oprava: FC teď správně převádí URL kód &amp;quot;sv?xxxx=yyyy...&amp;quot;, na text (vypadlo 31.3. při rozšíření počtu znaků pro sdílené proměnné Txx) &lt;br /&gt;
&lt;br /&gt;
== 10.7.2017 ==&lt;br /&gt;
* vydán firmware pro variantu &amp;quot;128kB&amp;quot; (od teď vychází dva typy firmware, pro variantu &amp;quot;64kB&amp;quot; a variantu &amp;quot;128kB&amp;quot;, vyberete si tu svou dle HW který máte)&lt;br /&gt;
* velká optimalizace využití paměti pro uložení a běh FULL-C programu (komprese, a zmenšení vyžadovaného heapu pro běh programu) - významně zvětšuje možnou velikost FC programu&lt;br /&gt;
* pin RSTD lze teď také použít i bez vypnutí a zapnutí SDS, stačí jej na 10 vteřin za běhu zkratovat (pak se provede RSTD a SDS se rebootuje) - výhodné pro zařízení kde vypnutí nelze provést&lt;br /&gt;
* drobné užitečné opravy dle hlášení uživatelů&lt;br /&gt;
* verze FC zvýšena na 0x08, a přidána možnost uložit 128 proměnných do baterií zálohované pamětí (tzn. obsah přežije výpadek napájení a FC program po restartu o tyto údaje nepřijde)&lt;br /&gt;
&lt;br /&gt;
== 2.6.2017 ==&lt;br /&gt;
* návratová hodnota funkce DF_read_page() je nastavena správně i v případě, kdy tato funkce čte data z cache (opakované čtení stejné stránky DF)&lt;br /&gt;
&lt;br /&gt;
== 6.4.2017 ==&lt;br /&gt;
* přidána FULL-C funkce AES-128-CTR, viz SDS_crypto(0x20, ...);&lt;br /&gt;
&lt;br /&gt;
== 31.3.2017 ==&lt;br /&gt;
* oprava RS485-MASTER drive, je teď zcela přesný (tzn. vypnut v přesném časování za úplně posledním vyslaným bitem)&lt;br /&gt;
* oprava čtení konfigurace 1-W, pomocí sds_get_a()&lt;br /&gt;
* přidán index 139&lt;br /&gt;
* odstraněno omezení na 32 znaků pro sdílené proměnné (přenos textu) &amp;quot;Txx&amp;quot; (xx = 00 až 99)&lt;br /&gt;
* fix návratových hodnot FULL-C funkcí pro práci s DF (teď to vrací správně 1 nebo 0, podle wiki)&lt;br /&gt;
* upřesněn název: (z BIG na BIG-64) / (z STSW na STSW-64)&lt;br /&gt;
* vyžaduje aktuální SDSLOAD.exe (6.3.2017 nebo novější) a FULLC.exe (6.3.2017 nebo novější)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== starší záznamy ==&lt;br /&gt;
&lt;br /&gt;
Nejsou k dispozici.&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=944</id>
		<title>Firmware</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=944"/>
		<updated>2025-03-15T09:42:27Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Nový Firmware ==&lt;br /&gt;
&lt;br /&gt;
Aktualizujte si své SDS - nahrejte do něj nový firmware, který získáte na této stránce - '''naskrolujte dolů''' kde naleznete odkaz na BIN soubor pro vaše zařízení.&lt;br /&gt;
&lt;br /&gt;
Postup a řešení problémů: [[Manual_Firmware_Update|Návod pro aktualizaci Firmware v SDS]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Odkazy ke stáhnutí ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;PC Software&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_sdsc_winexe.jpg]] '''Program SDSC.exe''' (programovací jazyk SDS-C, aktualizace firmware pro SDS '''první řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; stáhnout WinEXE pro SDS-C [https://sds.an-d.cz/firmware/SDSC_310123.exe zápis/simulace/upload SDS-C (SDS-C '''verze 09''') a UWEB, ze dne 31.1.2023]&amp;lt;br&amp;gt;SHA-256: daf1095f206404e33223f675f5d0bc09d4fc5dfd7d9f79f4f735af88f5ff1e6a&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program FULLC.exe''' (programovací jazyk FULL-C, aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; (FC verze '''0x12''' - '''aktuální'''): stáhnout WinEXE pro FULL-C [https://sds.an-d.cz/firmware/FULLC_220724.exe zápis/upload FULL-C a UWEB, ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro Firmware od 9.3.2023 včetně, pro všechny varianty SDS (64kB a 128kB a 512kB)&amp;lt;br&amp;gt;SHA-256: b4cb95d8ec8a6e844a3a4c9a2e9fc50ece60ccf44e8043f8c10f46b2294cae0b&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program SDSLOAD.exe''' (&amp;quot;jednokrokový&amp;quot; upload .FC souborů a aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; ('''aktuální''' verze, pro FW od 10.7.2017 včetně a dále) stáhnout WinEXE [https://sds.an-d.cz/firmware/SDSLOAD_220724.exe program SDSLOAD ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro všechny SDS varianty 64kB a 128kB a 512kB, (subvarianty DP a DS84)&amp;lt;br&amp;gt;SHA-256: ded5bf1aca2e04e22c33899a0976deccc8ff76eb88f53ecd9769788b7daa25a7&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_empty.jpg]] '''Program SDS LOG'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; Program '''[[SDS LOG: intro|SDS LOG]]''' - verze 0.1 ze dne 26.8.2011 - [https://sds.an-d.cz/firmware/SDS_LOG.exe stáhnout EXE program]&lt;br /&gt;
&amp;lt;li&amp;gt; Zdrojové kódy programu SDS LOG (Creative Commons Licence) [[SDS LOG: source code|ke stáhnutí zde]]&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS LOG: changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;První Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMICROE.jpg]]  [[Soubor:Thumbnail_SDSMICRO.jpg]] [[Soubor:Thumbnail_SDS_DIN.jpg]] '''D0000001''' MICRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: LM]] varianty '''LIGHT''', '''LIGHT 2''' a '''E (DIN)'''.&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny varianty a revize SDS MICRO LM.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_010722_CZ.bin SDS-MICRO-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_010722_EN.bin SDS-MICRO-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B0000057''' MICRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_021123_CZ.bin SDS-MICRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_021123_EN.bin SDS-MICRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B000D957''' MICRO ST DP&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST DP]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST DP.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_021123_CZ.bin SDS-MICRO-ST-DP-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_021123_EN.bin SDS-MICRO-ST-DP-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MINI_1.png]] [[Soubor:Thumbnail_SDS_MINI_2.png]] '''B0000020''' MINI ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MINI: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MINI ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MINI_021123_CZ.bin SDS-MINI-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MINI_021123_EN.bin SDS-MINI-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
[[SDS MINI: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMACRO.jpg]] '''C0000001''' MACRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: LM]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_010722_CZ.bin SDS-MACRO-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_010722_EN.bin SDS-MACRO-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MACRO_ST_rev1.png]] '''C0000057''' MACRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_021123_CZ.bin SDS-MACRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_021123_EN.bin SDS-MACRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSTTCPRO.jpg]] '''B0000001''' TTCPRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS TTCPRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_021123_CZ.bin SDS-TTCPRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_021123_EN.bin SDS-TTCPRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS TTCPRO ST má shodný Change Log se SDS MINI ST, a to zde: [[SDS MINI: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSIO6.jpg|160px]] '''D0000006''' IO6 LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: LM]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_010722_CZ.bin SDS-IO6-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_010722_EN.bin SDS-IO6-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 LM má shodný Change Log se SDS MICRO LM, a to zde: [[SDS MICRO: LM: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_empty.jpg]] '''D0000011''' IO6 ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_021123_CZ.bin SDS-IO6-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_021123_EN.bin SDS-IO6-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 ST má shodný Change Log se SDS MICRO ST, a to zde: [[SDS MICRO: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_FTP_rev1.png]] '''F0000001''' FTP LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS FTP: LM]], výchozí firmware.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Firmware: ''SDS FTP ze dne 7.9.2010'' už nahrán ve výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS FTP: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_ONEDPS.jpg]] '''E000AAA1''' UPS ONEDPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: ONEDPS]], finální jednodesková verze (aktuální) (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stáhnout firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_CZ.bin (Česká lokalizace) SDS-UPS-ONEDPS-LM ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;Download firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_EN.bin (English language version) SDS-UPS-ONEDPS-LM released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS UPS: LM: ONEDPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_TWODPS.jpg]] '''C00xxxxx''' UPS TWODPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: TWODPS]], HW rev3u - DVOUDESKOVÁ (UŽ NEPRODÁVANÁ) varianta.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je zaslán na požádání (pošlete email), aktuální verze je z 1.3.2011 (dále aktualizováno na specifické požádání, raději proto přejděte na nový HW).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Každá deska má svou kalibraci, proto každá deska má svůj vlastní FW, proto musíte uvést S/N svého výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;HISTORIE: [[SDS UPS: LM: TWODPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;Druhá Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSBIG.jpg]] [[Soubor:Thumbnail_SDSSMALL.jpg]] '''B1900001''' / '''B1900002''' / '''B1900004''' : BIG, BIG2, SMALL, STSW, MBGW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Společný firmware pro výrobky [[SDS BIG]], [[SDS SMALL]] a [[SDS STSW]] a [[SDS MBGW]]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je jednotný pro všechny varianty '''SDS Druhé Produktové Řady''', nutné je rozlišení dle varianty 64kB/128kB/512kB. Rozlišení podle dalších subvariant (DP, DS84) se neprovádí.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je společný pro BIG a BIG2, rozlišení je pouze dle varianty 64/128/512.&lt;br /&gt;
&amp;lt;li&amp;gt;Pozn. Modul SMALL a modul MBGW interně obsahuje modul STSW, nahrává se tam tedy stejný FW.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware vždy vyžaduje použití odpovídající, aktuální verze FULLC.EXE programu. &lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS BIG/SMALL/STSW: [[SDS BIG: firmware changelog|firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;64kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 64kB) [https://sds.an-d.cz/firmware/SDS_BIG_64K_150325_EN.bin firmware &amp;quot;64kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 15.3.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;128kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 128kB) [https://sds.an-d.cz/firmware/SDS_BIG_128K_150325_EN.bin firmware &amp;quot;128kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 15.3.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;512kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [[firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 12.4.2022|informace pokud máte SDS512 s FW &amp;lt;b&amp;gt;starším&amp;lt;/b&amp;gt; než 12.4.2022]]&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [https://sds.an-d.cz/firmware/SDS_BIG_512K_150325_EN.bin firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 15.3.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;Informace: SDS BIG/SMALL/STSW 512 se starším FW než 12.4.2022 vyžaduje přeprogramování u výrobce.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| POZOR&lt;br /&gt;
'''Aktualizujte''' své doplňkové sandwich desky, tzn. [[SDS BIG: DALI]], [[SDS BIG: LORA]] - na verzi FW 5.12.2016 '''nebo novější'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Aktualizaci lze provést jen fyzicky u výrobce, ten ji provede bezplatně (zašlete výrobci vaše SDS pro jeho aktualizaci). Se starým FW nebude tento HW plně fungovat.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Informace ===&lt;br /&gt;
&lt;br /&gt;
 VŽDY MĚJTE VE SVÉM ZAŘÍZENÍ NEJNOVĚJŠÍ FIRMWARE, A POUŽÍVEJTE TAKÉ NEJNOVĚJŠÍ SDS-C EXE / FULL-C EXE PROGRAM.&lt;br /&gt;
 V opačném případě vám budou chybět nové funkce, které neustále přidáváme, a také nebudete mít opravené nalezené chyby.&lt;br /&gt;
 V případě že chcete získat podporu, musíte mít instalovaný nejnovější firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Historický Software ===&lt;br /&gt;
&lt;br /&gt;
Za účelem aktualizace takových SDS, kde už dlouho nebyl aktualizován firmware, je potřeba použít odpovídající EXE program pro aktualizaci takovéhoto zařízení.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== První Produktová Řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro SDS-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_151119.exe ze dne '''15.11.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 08, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020118.exe ze dne '''2.1.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 07, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020317.exe ze dne '''2.3.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 8.8.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_060216.exe ze dne '''6.2.2016''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které nemají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 24.1.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_231111.exe ze dne '''23.11.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 04&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_170211.exe ze dne '''17.2.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''února 2011''')&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro ''SDS-C verze č. 03'' (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_140511.exe ze dne '''14.5.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''konce května 2011''')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Druhá Produktová řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro FULL-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_070323.exe ze dne '''7.3.2023''']&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_311222.exe ze dne '''31.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 11, (firmware od 9.1.2023 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_071222.exe ze dne '''7.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 10, (firmware od 18.11.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_161022.exe ze dne '''16.10.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0F, (firmware od 16.10.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_110722.exe ze dne '''11.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0E, (firmware od 11.7.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010722.exe ze dne '''1.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0D, (firmware od 6.8.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030422.exe ze dne '''3.4.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0C, (firmware od 23.3.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010322.exe ze dne '''1.3.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0B, (firmware od 6.8.2020 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030119.exe ze dne '''3.1.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0A, (firmware od 3.1.2019 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010718.exe ze dne '''1.7.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 09, (firmware od 27.6.2018 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_100717.exe ze dne '''10.7.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 08, (firmware od 10.7.2017 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_080617.exe ze dne '''8.6.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 06, (firmware starší než Červenec-2017, a pouze pro variantu SDS 64kB)&lt;br /&gt;
&lt;br /&gt;
* (historická verze) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_201022.exe ze dne 20.10.2022]&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_120417.exe ze dne 12.4.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB která používá ''starý'' firmware (2017 nebo starší)&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_100717.exe ze dne 10.7.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB a 128kB (nepodporuje variantu 512kB tak jako aktuální stáhnutelná verze aplikace)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta Testing ==&lt;br /&gt;
&lt;br /&gt;
Než vydáme novou verzi, je potřeba změny a novinky otestovat.&lt;br /&gt;
&lt;br /&gt;
Pokud jste ochotní se testu zúčastnit, pak se podívejte [https://forum.sds.an-d.cz/viewtopic.php?id=129 na tento odkaz]. Zde jsou uveřejněny vždy nejnovější beta verze firmware.&lt;br /&gt;
&lt;br /&gt;
Diskuse s vývojem k aktuálnímu Firmware je k dispozici na našem fóru.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=M2M:_S-UDP_protocol&amp;diff=943</id>
		<title>M2M: S-UDP protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=M2M:_S-UDP_protocol&amp;diff=943"/>
		<updated>2025-03-15T09:02:42Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje funkci zařízení SDS '''druhé produktové řady''' - protože SDS první produktové řady používají jiný protokol.&lt;br /&gt;
&lt;br /&gt;
== Rychlá komunikace: S-UDP ==&lt;br /&gt;
&lt;br /&gt;
Pomocí speciálního protokolu, kdy se data přenášejí prostřednictvím [http://en.wikipedia.org/wiki/User_Datagram_Protocol UDP], je možné získávat informace z výrobků řady SDS/OnlineTechnology.&lt;br /&gt;
&lt;br /&gt;
 S-UDP používá následující výchozí UDP PORT: 310&lt;br /&gt;
&lt;br /&gt;
Komunikace probíhá formou DOTAZ - ODPOVĚĎ. To znamená, že ten, kdo má o informace zájem (vzdálený uživatel) pošle dotaz (korektně vyplněný UDP paket, viz dále) a obratem obdrží od zařízení odpověď - UDP paket s informacemi. UDP Port na kterém je komunikace prováděna lze samozřejmě v administraci zařízení změnit.&lt;br /&gt;
&lt;br /&gt;
Přenos dat využívá specifického protokolu, který umožňuje bezpečně ovládat specifické zařízení SDS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Typické použití:''' komunikace zařízení SDS s protistranou (např. aplikace na mobilním telefonu).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Informace == &lt;br /&gt;
&lt;br /&gt;
Některé z FULL-C funkcí, které jsou zde popsány, jsou plně implementovány až ve firmware 03/2025 a dále. Je potřeba, aby jste měli svůj modul SDS aktualizován na nový firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bezpečnost ==&lt;br /&gt;
&lt;br /&gt;
Protokol S-UDP je založen na důsledné autentizaci strany, která posílá zprávu - zařízení SDS ověřuje identitu odesílatele příkazu, a ten může ověřit identitu SDS který odpovídá.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Je to založeno na následujícím principu:&lt;br /&gt;
&lt;br /&gt;
- S-UDP protokol je zabezpečen symetrickou šifrou, se sdíleným klíčem který znají jen komunikující strany (bezpečnost je přímo úměrná úrovni zabezpečení tohoto klíče na obou stranách)&lt;br /&gt;
&lt;br /&gt;
- SDS má unikátní identifikátor (zaručeně unikátní, od výrobce) který nelze změnit (je fyzicky vypálen v SoC - nezměnitelně přímo v silikonu chipu).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== S-UDP protokol ==&lt;br /&gt;
&lt;br /&gt;
Každý příkaz a odpověď jsou v samostatném, jediném, UDP paketu.&lt;br /&gt;
&lt;br /&gt;
Každý paket je sestaven v rámci společného formátu, který je zde popsán. Samotný doplňující datový obsah (payload) je dynamický, a u některých příkazů není potřeba.&lt;br /&gt;
&lt;br /&gt;
S-UDP Paket se tedy skládá z těchto základní částí (tyto části jsou právě přenášeny UDP paketem, v následující sestavě):&lt;br /&gt;
&lt;br /&gt;
  [MASTER PACKET CONTENTS]&lt;br /&gt;
 &lt;br /&gt;
   OFFSET    | LEN    |  DATA&lt;br /&gt;
   ----------+--------+---------------------------------------------------------------&lt;br /&gt;
     0       |     28 |  HEADER&lt;br /&gt;
    28       |  PL*16 |  ENCRYPTED PAYLOAD (contains: payload-header and payload-data)&lt;br /&gt;
&lt;br /&gt;
'''Pozor!''' Hodnota PL je velikost [ENCRYPTED PAYLOAD] vydělená 16. To znamená, že velikost [ENCRYPTED PAYLOAD] musí být beze zbytku dělitelná 16 (tzn. pouze hodnota 16, 32, 64, ...) ! Pokud je potřeba, doplní se na úplný konec (viz oblast &amp;quot;R&amp;quot;) zarovnání do potřebné délky, aby se dosáhlo čisté dělitelnosti 16.&lt;br /&gt;
&lt;br /&gt;
 LITTLE-ENDIAN&lt;br /&gt;
&lt;br /&gt;
Následující uvedené položky jsou ve formátu [http://en.wikipedia.org/wiki/Endianness#Little-endian Little-Endian] (procesory: ARM, x86):&lt;br /&gt;
* ''uword'' (unsigned 16-bit)&lt;br /&gt;
* ''dword'' (unsigned 32-bit)&lt;br /&gt;
* ''slong'' (signed   32-bit)&lt;br /&gt;
* ''qword'' (unsigned 64-bit)&lt;br /&gt;
&lt;br /&gt;
Položky typu: ''byte'', ''sbyte'', ''bytes'' - jsou jednotlivé samostatné bajty, nesdružené do společného čísla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zde jsou uvedeny detailní položky:&lt;br /&gt;
 &lt;br /&gt;
  [MASTER PACKET CONTENTS]&lt;br /&gt;
 &lt;br /&gt;
   OFFSET   | LEN  |  TYPE  | DATA&lt;br /&gt;
   ---------+------+--------+-----------------------------&lt;br /&gt;
 &lt;br /&gt;
                              [HEADER]&lt;br /&gt;
 &lt;br /&gt;
    0       |   3  |  bytes | header &amp;quot;SDS&amp;quot;&lt;br /&gt;
    3       |   1  |   byte | TV = (SDS-product-line) including (S-UDP protocol master-version)&lt;br /&gt;
    4       |   1  |   byte | PL = number of 16B chunks - this is the payload_length of [ENCRYPTED PAYLOAD] (example: PL==10 =&amp;gt; 160 bytes)&lt;br /&gt;
    5       |   1  |   byte | encryption-flag  (NOW ACCEPTS ONLY: 0x10 == XTEA-64-CTR)&lt;br /&gt;
    6       |   1  |   byte | reserved&lt;br /&gt;
    7       |   1  |   byte | CK1: basic additive checksum for [ENCRYPTED PAYLOAD] (start from (including) byte offset [28] and forward)&lt;br /&gt;
    8       |   4  |  dword | user_identifier (correlation identifier) - use this to correlate query to response&lt;br /&gt;
   12       |  16  |  bytes | CounterBlock&lt;br /&gt;
  ----------+------+--------+----------------------------&lt;br /&gt;
 &lt;br /&gt;
                              [ENCRYPTED PAYLOAD] -&amp;gt; everything from this point is included:&lt;br /&gt;
 &lt;br /&gt;
   28       |   1  |   byte | random number (shall be always different than what was used ever before)&lt;br /&gt;
   29       |   1  |   byte | CK2: basic additive checksum for [HEADER] (all bytes [0] to [27] included, BUT: skipping byte [7])&lt;br /&gt;
   30       |   2  |  uword | XR_MTU value (maximal size of the custom-payload data including R) ( XL + R &amp;lt;= XR_MTU )&lt;br /&gt;
   32       |   4  |  dword | CRC-32 (part-header and plain-text payload) -&amp;gt; byte [36] (included) up to [52+XL-1] (the R area is not included here)&lt;br /&gt;
   36       |   4  |  dword | uptime (msecs from boot)&lt;br /&gt;
   40       |   4  |  dword | time (epoch) (or, if no NTP is available to SDS, this will be a value of &amp;quot;seconds from boot&amp;quot;)&lt;br /&gt;
   44       |   4  |  dword | SDS device type (0xXXXXXXXX) - THIS MUST MATCH&lt;br /&gt;
   48       |   1  |   byte | master_command&lt;br /&gt;
   49       |   1  |   byte | sub_command&lt;br /&gt;
   50       |   2  |  uword | XL value (exact length of the actually useful payload-data): XL = (PL*16) - R - 24&lt;br /&gt;
 &lt;br /&gt;
   52       |  XL  |  bytes | custom payload-data [C-PAYLOAD]&lt;br /&gt;
 &lt;br /&gt;
   52+XL    |   R  |  bytes | specific set of (random data filling) to round-up (the PL*16 value) to a clean 16B multiply (16, 32, 64, etc.)&lt;br /&gt;
 &lt;br /&gt;
  ----------+------+--------+----------------------------&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;SDS device type&amp;quot; je určena podle typu SDS, se kterým komunikujete. Seznam hodnot viz [[Firmware]], například 0xB1900001 pro BIG-64 nebo 0xB1900002 pro BIG-128 atd.Pokud tato hodnota neodpovídá typu firmware v daném SDS, bude paket zcela ignorován a neproveden. Jediná vyjímka je master_command == NOP, což je záměrná vyjímka, která umožní zjištění typu SDS (a přítomnosti SDS) při zahájení komunikace.&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;random number&amp;quot; je zde proto, aby šifrované data byly pokaždé jiné, i když se přenáší stejný obsah (tzn. jedná se o zábranu stenografického odhadu obsahu payloadu).&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;time&amp;quot; umožňuje zařízení, které komunikuje s SDS, zabránit &amp;quot;replay&amp;quot; útoku (když se zaznamená paket a později se zopakuje - v takovém případě se na to přijde protože &amp;quot;time&amp;quot; bude významně starší). SDS kontrolu provádí vůči svému vnitřnímu času, vzdálené zařízení co se SDS komunikuje by tuto kontrolu mělo dělat také.&lt;br /&gt;
&lt;br /&gt;
Protože hodnota &amp;quot;time&amp;quot; se zvyšuje pouze co 1 vteřinu, je k dispozici i hodnota &amp;quot;uptime&amp;quot; která se po resetu/bootu (kde se nastaví na nulu) zvyšuje každou 1 milisekundu o jedničku. Kombinace umožňuje vhodně sestavit algoritmus detekce &amp;quot;replay&amp;quot; útoků.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;CounterBlock&amp;quot; se využívá pro nastavení začátku šifrování a dešifrování. Všechny detaily jsou zcela shodné jako pro [[FULL-C_crypto_functions|FULL-C funkci SDS_Crypt()]]. Z hlediska bezpečnosti je důležité, aby obě strany neustále používaly zvyšující se CounterBlock obsah (začít &amp;quot;od jedničky&amp;quot; pouze a jenom po resetu/bootu), tzn. pro každou zprávu použít poslední hodnotu counteru a na té dále stavět pro novou zprávu atd. .&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;crc32&amp;quot; se počítá pro dešifrované data, algoritmus je identický jako pro [[FULL-C_crypto_functions|FULL-C funkci SDS_Crypt()]].&lt;br /&gt;
&lt;br /&gt;
Pro zvolené XTEA-64-CTR má &amp;quot;CounterBlock&amp;quot; následující sestavu svého obsahu:&lt;br /&gt;
&lt;br /&gt;
   CounterBlock:&lt;br /&gt;
 &lt;br /&gt;
   OFFSET    | LEN  |  TYPE  |  DATA&lt;br /&gt;
   ----------+------+--------+-----------------------------------------------------------------------------------------&lt;br /&gt;
    0        |   8  |  qword |  XTEA-64-CTR: 64-bit counter (counter is increased by 1, for each 16B of processed data)&lt;br /&gt;
    8        |   8  |  bytes |  (reserved) not-used area = reserved (fill with 0x00) &lt;br /&gt;
&lt;br /&gt;
Pro jiné mechanismy (do budoucna) je v CounterBlock oblasti přidána ještě 8B rezerva (např. pro AES-128 se pak využije všech 16 bajtů).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;TV&amp;quot; (v [HEADER] na offsetu [3]) je určení typu a verze protokolu. Skládá se ze dvou čtyřbitových údajů, viz následující tabulka.&lt;br /&gt;
&lt;br /&gt;
 TV: ttttVVVV&lt;br /&gt;
     76543210&lt;br /&gt;
 &lt;br /&gt;
 BIT OFFSET | LEN (bits) | content&lt;br /&gt;
 -----------+------------+--------------------------------------------------&lt;br /&gt;
  7 (MSB)   |          4 |  &amp;quot;t&amp;quot;: produc-line value: 1 == first, 2 == second&lt;br /&gt;
  3         |          4 |  &amp;quot;V&amp;quot;: version: 0 = first S-UDP protocol version&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V konečném důsledku, skutečnou funkční důležitost ma '''[C-PAYLOAD]''', což je blok dat, který obsahuje hodnoty a příkazy, které pomocí S-UDP chceme přenést.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Postup při příjmu S-UDP paketu ==&lt;br /&gt;
&lt;br /&gt;
Každá strana, která přijme S-UDP paket, provede následující kroky:&lt;br /&gt;
&lt;br /&gt;
 1) Ověřit platnost hodnot v [HEADER]&lt;br /&gt;
    a. text &amp;quot;SDS&amp;quot; (platný obsah)&lt;br /&gt;
    b. hodnota &amp;quot;TV&amp;quot; (&amp;quot;master-version&amp;quot; a &amp;quot;product-line&amp;quot;) (platný obsah)&lt;br /&gt;
    c. hodnota &amp;quot;PL&amp;quot; v platných mezích&lt;br /&gt;
    d. hodnota &amp;quot;encryption_flag&amp;quot; (platný obsah)&lt;br /&gt;
 2) Ověřit základní additive-checksum pro [ENCRYPTED PAYLOAD]&lt;br /&gt;
    a. přečíst bajty [28] až [28+PL-1] a sečíst je (overflow osm bitů), výsledek musí odpovídat &amp;quot;CK1&amp;quot; hodnotě&lt;br /&gt;
 3) Nastavit dešifrování&lt;br /&gt;
    a. zvolit algoritmus podle &amp;quot;encryption-flag&amp;quot; hodnoty&lt;br /&gt;
    b. nastavit klíč (stejný jako na protistraně, samozřejmě není přenášen přes síť)&lt;br /&gt;
    c. nastavit &amp;quot;CounterBlock&amp;quot; (přečíst z [HEADER])&lt;br /&gt;
 4) Dešifrovat celou [ENCRYPTED PAYLOAD] na plain-text&lt;br /&gt;
    a. hodnota &amp;quot;PL&amp;quot; musí být dělitelná 16 beze zbytku (tato podmínka závisí na použitém šifrovaní)&lt;br /&gt;
 5) Ověřit základní additive-checksum pro [HEADER] - teď totiž už máme hodnotu &amp;quot;CK2&amp;quot;&lt;br /&gt;
    a. přečíst bajty [0] až [27] (ovšem přeskočit byte [7] - pozor!) a sečíst je (overflow osm bitů), výsledek musí odpovídat &amp;quot;CK2&amp;quot; hodnotě&lt;br /&gt;
 6) Ověřit další hodnoty&lt;br /&gt;
    a. &amp;quot;SDS-DEVICE-TYPE&amp;quot; musí odpovídat (záruka ovládání toho správného typu SDS) - pokud hodnotu nevíte, můžete si &amp;quot;pomoci&amp;quot; NOP příkazem&lt;br /&gt;
    b. uschovat hodnotu &amp;quot;XR_MTU&amp;quot; pro vytváření odpovědi (&amp;quot;XR_MTU&amp;quot; omezuje velikost odpovědi, kterou můžeme zpátky odeslat)&lt;br /&gt;
    c. ověřit časové údaje (&amp;quot;time&amp;quot; a &amp;quot;uptime&amp;quot;)&lt;br /&gt;
    d. ověřit &amp;quot;XL&amp;quot; vůči &amp;quot;PL&amp;quot;&lt;br /&gt;
 7) Ověřit CRC-32 dešifrovaného payloadu&lt;br /&gt;
    a. spočítat CRC-32 správným algoritmem, vučí bajtům (plain-text) z [36] až [52+XL-1] včetně&lt;br /&gt;
 &lt;br /&gt;
 8) Hotovo: teď se provede aktuální příkaz (Master Command, dle tabulky podle produktové řady viz &amp;quot;TV&amp;quot;)&lt;br /&gt;
            a odešle odpověď (ponechat user_identifier pro korelaci) (pozor na &amp;quot;XR_MTU&amp;quot; omezení)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Postup při odesílání S-UDP paketu ==&lt;br /&gt;
&lt;br /&gt;
Odesílatel zprávy provádí tyto kroky:&lt;br /&gt;
&lt;br /&gt;
 1) Je sestaven přesný obsah [C-PAYLOAD] a určena odpovídající hodnota XL&lt;br /&gt;
    a. obsah samozřejmě odpovídá tomu co chcete odeslat&lt;br /&gt;
    b. určí se i &amp;quot;master-command&amp;quot; a &amp;quot;sub-command&amp;quot; (pozor na produktovou řadu SDS - viz &amp;quot;TV&amp;quot;)&lt;br /&gt;
 2) Vyplní se [HEADER]&lt;br /&gt;
    a. hlavička &amp;quot;SDS&amp;quot;, &amp;quot;encryption-flag&amp;quot;&lt;br /&gt;
    b. zapsat správnou hodnotu &amp;quot;TV&amp;quot; podle protokolu a konkrétního SDS (&amp;quot;master-version&amp;quot;, &amp;quot;product-line&amp;quot;)&lt;br /&gt;
    c. určí se nová unikátní hodnota &amp;quot;user_identifier&amp;quot;, a zapíše se do [HEADER]&lt;br /&gt;
    d. zapíše se &amp;quot;CounterBlock&amp;quot; (hodnota pokračuje po předchozím paketu)&lt;br /&gt;
 3) Nachystá se zaokrouhlovací oblast &amp;quot;R&amp;quot; &lt;br /&gt;
    a. Pokud XL není beze zbytku dělitelná 16, musí se doplnit oblastí &amp;quot;R&amp;quot;&lt;br /&gt;
 4) Spočítá se hodnota &amp;quot;PL&amp;quot;&lt;br /&gt;
    a. PL = (XL + R)/16&lt;br /&gt;
    b. zapsat do [HEADER]&lt;br /&gt;
 5) Začne se vyplňovat [ENCRYPTED PAYLOAD]&lt;br /&gt;
    a. zapsat náhodný byte do &amp;quot;random number&amp;quot;&lt;br /&gt;
    b. spočítá se hodnota &amp;quot;CK2&amp;quot; (sečíst bajty [0] až [27] - ovšem přeskočit byte [7] - pozor!) &lt;br /&gt;
    c. zapsat hodnotu &amp;quot;XR_MTU&amp;quot; podle možností zařízení (tzn. jak velkou odpověď lze bezpečně přijmout, podle omezení sítě)&lt;br /&gt;
    d. zapíší se hodnoty &amp;quot;uptime&amp;quot; a &amp;quot;time&amp;quot;, zapsat hodnotu &amp;quot;SDS-DEVICE-TYPE&amp;quot;&lt;br /&gt;
    e. zapsat &amp;quot;master-command&amp;quot; a &amp;quot;sub-command&amp;quot;&lt;br /&gt;
 6) Spočítá se CRC-32 (před šifrováním)&lt;br /&gt;
    a. spočítat crc32 pro bajty (plain-text) z offsetu [36] až [52+XL-1] včetně&lt;br /&gt;
 7) Nastavit šifrování&lt;br /&gt;
    a. zvolit algoritmus (musí odpovídat tomu, co se zapsalo do &amp;quot;encryption-flag&amp;quot;)&lt;br /&gt;
    b. nastavit klíč (stejný jako na protistraně, samozřejmě není přenášen přes síť)&lt;br /&gt;
    c. nastavit &amp;quot;CounterBlock&amp;quot; (stejný jako byl zapsán [HEADER])&lt;br /&gt;
 8) Šifrovat celou [ENCRYPTED PAYLOAD] na plain-text&lt;br /&gt;
    a. hodnota &amp;quot;PL&amp;quot; musí být dělitelná 16 beze zbytku (tato podmínka závisí na použitém šifrovaní)&lt;br /&gt;
    b. aktualizovaná hodnota &amp;quot;CounterBlock&amp;quot; (zvýšená o průběh šifrování) se uschová pro další použití - viz bod &amp;quot; 2) c. &amp;quot;&lt;br /&gt;
 9) Spočítat základní additive-checksum pro [ENCRYPTED PAYLOAD]&lt;br /&gt;
    a. přečíst bajty [28] až [28+PL-1] a sečíst je (overflow osm bitů), výsledek se zapíše do &amp;quot;CK1&amp;quot; hodnoty&lt;br /&gt;
 &lt;br /&gt;
 10) Hotovo: paket se následně odešle přes síť do protistrany, která odpoví novým paketem - ten je vztažen k tomuto dotazu pomocí &amp;quot;user_identifier&amp;quot; hodnoty.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vzorové obsahy paketů ==&lt;br /&gt;
&lt;br /&gt;
Na stránce [[M2M: S-UDP protocol: examples]] naleznete ukázkové vzorové pakety a jejich vnitřní obsah, i se zobrazeních jednotlivých položek v paketu (před a po šifrování).&lt;br /&gt;
Toto je vhodné pro vývojáře komunikační protistrany, kterým nestačí popis postupu na této stránce, ale chtějí také vidět jednotlivé kroky s aktuálními hodnotami.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Seznam hlavních příkazů ==&lt;br /&gt;
&lt;br /&gt;
Obě produktové řady SDS, které jsou na trhu, mají svou sadu &amp;quot;master_command&amp;quot; příkazů. Proto je potřeba nejprve zjistit, do které produktové řady vaše SDS spadá, a podle toho dále pokračovat. Lze to přímo odvodit od typu SDS (&amp;quot;SDS-DEVICE-TYPE&amp;quot; hodnota), nebo se zeptat příkazem NOP.&lt;br /&gt;
&lt;br /&gt;
Zařazení SDS do produktových řad je v [[Seznam_Všech_SDS|tomto seznamu]].&lt;br /&gt;
&lt;br /&gt;
* První produktová řada: &amp;quot;TV = 0001....&amp;quot;  -&amp;gt; '''(1PŘ)'''&lt;br /&gt;
* Druhá produktová řada: &amp;quot;TV = 0010....&amp;quot;  -&amp;gt; '''(2PŘ)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2PŘ) Master Command (druhá produktová řada: &amp;quot;TV = 0010....&amp;quot; ) ==&lt;br /&gt;
&lt;br /&gt;
Jednotlivé základní příkazy (''master command''):&lt;br /&gt;
 &lt;br /&gt;
  MASTER COMMAND  |  command&lt;br /&gt;
  ----------------+-------------------------------------&lt;br /&gt;
     0            |   NOP (replies with NOP)&lt;br /&gt;
     1            |   general device status&lt;br /&gt;
     2            |   1-Wire access&lt;br /&gt;
     4            |   read FC-Get list&lt;br /&gt;
     8            |   write FC-Set list&lt;br /&gt;
    16            |   FULL-C shared variable(s) access&lt;br /&gt;
    32            |   serial port access&lt;br /&gt;
    64            |   DataFlash access&lt;br /&gt;
   128            |   reserved&lt;br /&gt;
 &lt;br /&gt;
Jak lze vidět, jednotlivé ''master command'' příkazy jsou dále rozlišeny pomocí hodnoty ''sub command''.&lt;br /&gt;
&lt;br /&gt;
Každý příkaz má doplňující datovou sadu, tzn. [C-PAYLOAD]. V rámci těchto dat jsou uvedeny všechny hodnoty, které přesně určují co se má stát (popř. jsou zde všechny odpovědi na dotaz).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [0] '''NOP''' ==&lt;br /&gt;
&lt;br /&gt;
SDS odpoví na tento příkaz odesláním [0] NOP.&lt;br /&gt;
&lt;br /&gt;
Tohoto příkazu lze využít k ověření komunikace a k vzájemné základní synchronizace.&lt;br /&gt;
&lt;br /&gt;
Specifická vlastnost příkazu NOP, oproti všem ostatním příkazům, je to, že SDS odpoví i v případě, že v dotazu není správně uvedený SDS Device Type. Toto je záměr, aby bylo možné při začátku komunikace s SDS modulem, tento modul identifikovat. Samozřejmě všechny ostatní bezpečnostní prvky jsou stále aplikovány, jen tento detail je zde upraven.&lt;br /&gt;
&lt;br /&gt;
Tento příkaz je také velmi užitečný pro získání hodnoty &amp;quot;TV&amp;quot; z [HEADER], tím pádem pro určení číslo produktové řady SDS - a tím pádem k určení které &amp;quot;master_command&amp;quot; příkazy jsou k dispozici !&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 0, sent from SDS as reply)&lt;br /&gt;
 sub_command = 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN   | TYPE  | content&lt;br /&gt;
 -----------------+-------+-------+------------------------------------------------------&lt;br /&gt;
    0             |     6 | bytes |  MAC ADDRESS (bytes, not text)&lt;br /&gt;
    6             |     4 | bytes |  SDS Device Type&lt;br /&gt;
   10             |     4 | dword |  FW version &lt;br /&gt;
   14             |    32 | bytes |  sysLocation (missing the 0x00 terminator)&lt;br /&gt;
   46             |     8 | bytes |  reserved (0x00)&lt;br /&gt;
   54             |    32 | bytes |  OEM string (missing the 0x00 terminator)&lt;br /&gt;
   86             |     8 | bytes |  reserved (0x00)&lt;br /&gt;
   94             |     1 |  byte |  bylo aktivováno RSTD&lt;br /&gt;
   95             |     1 |  byte |  bylo aktivováno PVD&lt;br /&gt;
   96             |     1 |  byte |  SDS je: BIG (hodnota 1) nebo STSW (hodnota 0)&lt;br /&gt;
   97             |     8 | bytes |  reserved (0x00)&lt;br /&gt;
  105             |     2 | uword |  web interface TCP port number (typicky 80)&lt;br /&gt;
  107             |     1 |  byte |  SNMP-read enabled&lt;br /&gt;
  108             |     1 |  byte |  SNMP-write enabled&lt;br /&gt;
  109             |     1 |  byte |  FULLC shared vars access lock (0 = unlocked) tzn. sys[150]&lt;br /&gt;
  110             |     1 |  byte |  FULLC program run status&lt;br /&gt;
  111             |     1 |  byte |  FULLC program started-by info&lt;br /&gt;
  112             |     1 |  byte |  FULLC program watchdog active&lt;br /&gt;
  113             |     6 | bytes |  reserved&lt;br /&gt;
  119             |     4 |   f32 |  backup battery voltage (milliVolts)&lt;br /&gt;
&lt;br /&gt;
Pozn. rozšířená funkcionalita příkazu NOP (tedy vracení payloadu) bylo přidáno až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [1] '''General Device Status''' ==&lt;br /&gt;
&lt;br /&gt;
SDS odpoví zasláním vybraných údajů, jejichž seznam je přesně daný. Tato funkce je k dispozici pro umožnění rychlého přístupu k základnímu stavu zařízení SDS, bez složité přípravy.&lt;br /&gt;
&lt;br /&gt;
Základní odpověď s nejzajímavějšími živými údaji. Určeno např. pro průběžnou aktualizaci stavu zobrazeného uživateli.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 1, sent from SDS as reply)&lt;br /&gt;
 sub_command = 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN   | TYPE  | content&lt;br /&gt;
 -----------------+-------+-------+------------------------------------------------------&lt;br /&gt;
    0             |     6 | bytes |  MAC ADDRESS (bytes, not text)&lt;br /&gt;
    6             |     1 |  byte |  Ethernet Link Status / Speed (0, 10, 100)&lt;br /&gt;
    7             |     1 |  byte |  Amount of users logged into SDS Web Admin&lt;br /&gt;
    8             |    32 | bytes |  sysLocation (missing the 0x00 terminator)&lt;br /&gt;
   40             |     1 |  byte |  IP Watchdog Config status&lt;br /&gt;
   41             |     1 |  byte |  IP Watchdog Output (relay) status&lt;br /&gt;
   42             |     2 | uword |  IP Watchdog RTT value (note.: 0xFFFF = not available)&lt;br /&gt;
   44             |     1 |  byte |  DHCP status&lt;br /&gt;
   45             |     1 |  byte |  reserved&lt;br /&gt;
   46             |     1 |  byte |  NTP status&lt;br /&gt;
   47             |     1 | sbyte |  NTP offset (+/- hours) (signed char)&lt;br /&gt;
   48             |     2 | uword |  SoC chip temperature (degC)&lt;br /&gt;
   50             |     1 |  byte |  GPIO-TOPB PIN(s) direction (0 == input)&lt;br /&gt;
   51             |     1 |  byte |  GPIO-TOPB PIN(s) pin value&lt;br /&gt;
   52             |  32*1 |  byte |  OPTO [1]..[32] status (0xFF == signal) (0x00 == nosignal)&lt;br /&gt;
   84             |  32*1 |  byte |  RELAY [1]..[32] status (active/nonactive)&lt;br /&gt;
  116             |  32*2 | uword |  ADC [0]..[31] RAW value&lt;br /&gt;
  180             |     1 |  byte |  General 1-W BUS status&lt;br /&gt;
  181             |     1 |  byte |  1-W BUS A - active device count&lt;br /&gt;
  182             |     1 |  byte |  1-W BUS B - active device count&lt;br /&gt;
  183             |     3 | bytes |  reserved (0x00)&lt;br /&gt;
  186             |     1 |  byte |  S0 Tariff Value (active/nonactive)&lt;br /&gt;
  187             |     1 |  byte |  number of the following S0 INPUT DB data blocks:&lt;br /&gt;
  188             | 31*28 |  data |  S0 INPUT [1]..[ (max) 31] DB (data block)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 S0-INPUT DB offset | LEN | TYPE  | content&lt;br /&gt;
 -------------------+-----+-------+-------------------------------------------------------&lt;br /&gt;
    0               |   1 |  byte |  configuration status (combined flags: bit0 = enabled as S0; bit1 = is tariff used)&lt;br /&gt;
    1               |   3 | bytes |  reserved (filled with 0x00)&lt;br /&gt;
    4               |   4 | dword |  T0 impulse counter&lt;br /&gt;
    8               |   4 | dword |  T1 impulse counter&lt;br /&gt;
    12              |   4 | dword |  T0 offset&lt;br /&gt;
    16              |   4 | dword |  T1 offset&lt;br /&gt;
    20              |   4 | dword |  measured space between impulses (msec)&lt;br /&gt;
    24              |   4 | dword |  time since last registered impulse (msec)&lt;br /&gt;
&lt;br /&gt;
Sestava [C-PAYLOAD] je tedy zřejmá. &lt;br /&gt;
&lt;br /&gt;
Poslední blok (offset [188] až [1083] včetně) je určen pro přenos 32 S0 vstupů - často je jich ale v zařízení SDS fyzicky přítomno mnohem méně, např. jen devět - a potom zařízení SDS ve své odpovědi pošle jen devět záznamů (namísto 32) (toto se týká pouze a jenom S0 položek, né jiných v rámci paketu). To je provedeno z praktického důvodu: aby byl UDP paket dostatečně malý (a tedy rychlý na zpracování).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [2] '''1-Wire Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tato funkce se používá pro čtení stavu hodnot získaných z obou 1-W sběrnic, kterými SDS disponuje (některé SDS mají jen jednu sběrnici). Maximální počet prvků (chipů) na sběrnici je 64, celkem je tedy k dispozici 2x64 = 128 prvků.&lt;br /&gt;
&lt;br /&gt;
 QUERY/COMMAND TO SDS (master_command == 2)&lt;br /&gt;
 &lt;br /&gt;
 sub_command | meaning&lt;br /&gt;
 ------------+-----------------------------------------------------------&lt;br /&gt;
           0 |  reserved&lt;br /&gt;
           1 |  obtain status, and list of found items on BUS A&lt;br /&gt;
           2 |  obtain status, and list of found items on BUS B&lt;br /&gt;
           4 |  list all read-values on BUS A&lt;br /&gt;
           8 |  list all read-values on BUS B&lt;br /&gt;
&lt;br /&gt;
První možností tedy je sub_command == 1 , tzn. výpis nalezených zařízení na sběrnici A respektive B:&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 1, sent from SDS as reply)&lt;br /&gt;
 sub_command = 1 or 2&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  global 1-W controller status (SDS status)&lt;br /&gt;
    1             |   1 |  byte |  number of active items on BUS A&lt;br /&gt;
    2             |   1 |  byte |  number of active items on BUS B&lt;br /&gt;
    3             |   1 |  byte |  reserved (0x00)&lt;br /&gt;
    4             |  12 |  data |  1-W item status #0&lt;br /&gt;
    . . .         | ... |   ... |  . . .&lt;br /&gt;
    4+12*63       |  12 |  data |  1-W item status #63&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;1-W item status&amp;quot; ofs | LEN | TYPE  | content&lt;br /&gt;
 ----------------------+-----+-------+-------------------------------------------------------&lt;br /&gt;
    0                  |   1 |  byte |  ctrl: main-status&lt;br /&gt;
    1                  |   1 |  byte |  ctrl: sub-status &lt;br /&gt;
    2                  |   2 | bytes |  reserved (filled with 0x00)&lt;br /&gt;
    4                  |   8 | bytes |  ROM-CODE [0]..[7]&lt;br /&gt;
&lt;br /&gt;
Následuje: výpis získaných hodnot (např. změřené teploty z teplotních čidel) pro jednotlivé sběrnice :&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 1, sent from SDS as reply)&lt;br /&gt;
 sub_command = 4 or 8&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  global 1-W controller status (SDS status)&lt;br /&gt;
    1             |   1 |  byte |  number of active items on BUS A&lt;br /&gt;
    2             |   1 |  byte |  number of active items on BUS B&lt;br /&gt;
    3             |   1 |  byte |  reserved (0x00)&lt;br /&gt;
    4             |  12 |  data |  1-W item value #0&lt;br /&gt;
    . . .         | ... |   ... |  . . .&lt;br /&gt;
    4+12*63       |  12 |  data |  1-W item value #63&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;1-W item value&amp;quot; ofs  | LEN | TYPE  | content&lt;br /&gt;
 ----------------------+-----+-------+-------------------------------------------------------&lt;br /&gt;
    0                  |   1 |  byte |  ctrl: main-status&lt;br /&gt;
    1                  |   1 |  byte |  ctrl: sub-status&lt;br /&gt;
    2                  |   1 |  byte |  value of ROM-CODE offset [0] (1-W DEVICE TYPE: ID)&lt;br /&gt;
    3                  |   1 |  byte |  value of ROM-CODE offset [7] (1-W DEVICE TYPE: CRC)&lt;br /&gt;
    4                  |   4 | slong |  1-W read: primary value&lt;br /&gt;
    8                  |   4 | slong |  1-W read: secondary value&lt;br /&gt;
&lt;br /&gt;
Každý chip na sběrnici 1-Wire má vždy primární a sekundární hodnotu, kterou SDS pro daný chip udržuje (ne vždy jsou však, v závislosti na konkrétním chipu, obě hodnoty použity). Aktuální význam je potřeba určit podle chipu (příklad: DS18B20 má &amp;quot;primary value&amp;quot; zpracovanou teplotu v degC, a &amp;quot;secondary value&amp;quot; přímou surovou 16-bit hodnotu přečtenou z čidla).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [4] '''Read FC-Get List''' ==&lt;br /&gt;
&lt;br /&gt;
Dotaz (query) který obsahuje seznam indexů jejichž hodnoty jsou tazatelem požadovány, se posílá do SDS, které následně odpoví (reply).&lt;br /&gt;
&lt;br /&gt;
Dotaz i odpověď má dynamický obsah, který je specificky strukturován.&lt;br /&gt;
&lt;br /&gt;
 QUERY (master_command == 4, sent to SDS)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------&lt;br /&gt;
  0               |   2 | uword | [#0] index value &lt;br /&gt;
  2               |   2 | uword | [#0] TBLEN#0: type-bits and data length (L#0)&lt;br /&gt;
  4               | L#0 |  data | [#0] space prepared for answer from SDS&lt;br /&gt;
 &lt;br /&gt;
  (4+(L#0))+0     |   2 | uword | [#1] index value&lt;br /&gt;
  (4+(L#0))+2     |   2 | uword | [#1] TBLEN#1: type-bits and data length (L#1)&lt;br /&gt;
  (4+(L#0))+4     | L#1 |  data | [#1] space prepared for answer from SDS&lt;br /&gt;
 &lt;br /&gt;
  . . .           | ... | . . . | ...&lt;br /&gt;
 &lt;br /&gt;
  Z+0             |   2 | uword | [#n] index value &lt;br /&gt;
  Z+2             |   2 | uword | [#n] TBLEN#n: type-bits and data length (L#n)&lt;br /&gt;
  Z+4             | L#n |  data | [#n] space prepared for answer from SDS&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, v dotazu (query) jsou za sebou naskládány položky (indexy), na které následně SDS odpoví. Vždy musíte u každého indexu, na který se ptáte, uvést typ odpovědi (viz dále) a prostor, kam bude odpověď zapsána - to znamená, musíte znát přesnou délku, kterou má obsah pro daný index !&lt;br /&gt;
&lt;br /&gt;
Pozor na množství dotazů v rámci jednoho paketu, protože velikost dotazu, a také velikost odpovědi, je omezena XR_MTU. Jakmile SDS při skládání odpovědi narazení na XR_MTU protistrany, už více odpovědí do paketu nepřidá (aby nebylo XR_MTU překročeno).&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 4, sent from SDS as reply to query)&lt;br /&gt;
 &lt;br /&gt;
 SDS writes the values into the &amp;quot;[#n] space prepared for answer from SDS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Odpověď tedy přesně sleduje (vyplňuje) původní dotaz, přičemž [C-PAYLOAD] teď obdrží skutečný datový obsah pro jednotlivé položky. Pokud poskytnete SDS menší prostor pro odpověď, než je potřeba, bude odpověď vyplněna 0x00.&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;sub_command&amp;quot; je nastavena SDS na počet položek (#n) v odpovědi. Toto omezuje maximální počet položek v jednom paketu na 255.&lt;br /&gt;
&lt;br /&gt;
Následující popis ukazuje kódování typu proměnné a její délky, ve společném slově:&lt;br /&gt;
&lt;br /&gt;
 TBLEN#x: (16-bit unsigned word, little-endian) Type-Bits and Data Length (L#x)&lt;br /&gt;
 &lt;br /&gt;
 TBLEN#x: TTTTvvvvvvvvvvvv&lt;br /&gt;
          FEDCBA9876543210&lt;br /&gt;
 &lt;br /&gt;
 BIT OFFSET (hex) | LEN (bits) | content&lt;br /&gt;
 -----------------+------------+-----------------------------------------&lt;br /&gt;
  F (MSB)         |          4 |  &amp;quot;T&amp;quot;: type (see bit-value in next table)&lt;br /&gt;
  B               |         12 |  &amp;quot;v&amp;quot;: length of data, in bytes&lt;br /&gt;
 &lt;br /&gt;
  &amp;quot;T&amp;quot; bit-values | meaning                     | FULL-C set/get&lt;br /&gt;
            FEDC |                             | (which function)&lt;br /&gt;
 ----------------+-----------------------------+------------------&lt;br /&gt;
            0000 |  unsigned integer (32-bit)  |  _u&lt;br /&gt;
            0001 |  signed integer (32-bit)    |  _i&lt;br /&gt;
            0010 |  float IEEE-754 (32-bit)    |  _f&lt;br /&gt;
            0100 |  string UTF-8 (L#x * 8-bit) |  _a&lt;br /&gt;
            1000 |  reserved (do not use)      |  &lt;br /&gt;
&lt;br /&gt;
Horní 4 bity z TBLEN#x tedy určují typ položky. Pro získání délky L#x položky 'x', je potřeba hodnotu TBLEN#x odmaskovat - použít jen dolních 12 bitů.&lt;br /&gt;
&lt;br /&gt;
Je vaším úkolem správně zvolit typ (T) pro každou položku, pokud zvolíte špatně, nebude údaj pro daný index zpracován.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Index Value''' - každá položka má svůj číselný index, viz [[FULL-C:_set_and_get|seznam všech FULL-C indexů]].&lt;br /&gt;
&lt;br /&gt;
POZOR: V případě chyby dojde k odpovědi S-UDP paketem [0] '''NOP''' bez payloadu. Vaše aplikace, komunikující s SDS, toto musí umět správné zpracovat (pokud dostane na požadavek [4] prázdnou odpověď [0], tak je zřejmé, že jste poslali chybný obsah ve svém požadavku [4] - přičemž SDS neposkytuje další bližší informace o tom, kde přesně ve vašem paketu [4] byla chyba). Odpověď paketem [0] NOP je samozřejmě s vaším požadavkem [4] svázána přes identifikátor v hlavičce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [8] '''Write FC-Get List''' ==&lt;br /&gt;
&lt;br /&gt;
Pokud SDS obdrží zprávu s &amp;quot;master_command == 8&amp;quot;, tak nastaví příslušné FULL-C indexy na nové hodnoty (podle obsahu této přijaté zprávy). &lt;br /&gt;
&lt;br /&gt;
SDS na tuto zprávu odpovídá pouze ve smyslu &amp;quot;úspěch&amp;quot; nebo &amp;quot;neúspěch&amp;quot; - takže pro skutečné ověření hodnot (zda-li se zapsaly správně) musíte proto sami zaslat další zprávu &amp;quot;master_command == 4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 COMMAND TO SDS (master_command == 8, sent to SDS)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------&lt;br /&gt;
  0               |   2 | uword | [#0] index value &lt;br /&gt;
  2               |   2 | uword | [#0] TBLEN#0: type-bits and data length (L#0)&lt;br /&gt;
  4               | L#0 |  data | [#0] new data value to write to SDS&lt;br /&gt;
 &lt;br /&gt;
  (4+(L#0))+0     |   2 | uword | [#1] index value&lt;br /&gt;
  (4+(L#0))+2     |   2 | uword | [#1] TBLEN#1: type-bits and data length (L#1)&lt;br /&gt;
  (4+(L#0))+4     | L#1 |  data | [#1] new data value to write to SDS&lt;br /&gt;
 &lt;br /&gt;
  . . .           | ... | . . . | ...&lt;br /&gt;
 &lt;br /&gt;
  Z+0             |   2 | uword | [#n] index value &lt;br /&gt;
  Z+2             |   2 | uword | [#n] TBLEN#n: type-bits and data length (L#n)&lt;br /&gt;
  Z+4             | L#n |  data | [#n] new data value to write to SDS&lt;br /&gt;
&lt;br /&gt;
Lze vidět, že formát je naprosto shodný jako formát odpovědi kterou SDS posílá pro &amp;quot;master_command == 4&amp;quot; zprávu. Nicméně, v tomto případě, je tento obsah [C-PAYLOAD] zapsán '''do''' SDS, které jej zpracuje a provede - pouze ale pokud je délka L#x přesně odpovídající danému indexu.&lt;br /&gt;
&lt;br /&gt;
Odpověď, kterou na tento příkaz SDS následně posílá, je velmi jednoduchá: [C-PAYLOAD] není vůbec použito (XL=0), a &amp;quot;sub_command&amp;quot; obsahuje následující možnost:&lt;br /&gt;
&lt;br /&gt;
 REPLY FROM SDS (master_command == 8)&lt;br /&gt;
 &lt;br /&gt;
 NOTE: THIS FEATURE (PROPER RESPONSE) IS IMPLEMENTED SINCE FW 15.March.2025 AND ONWARDS&lt;br /&gt;
 (previously no proper response was provided)&lt;br /&gt;
 &lt;br /&gt;
 sub_command | meaning&lt;br /&gt;
 ------------+-----------------------------------------------------------&lt;br /&gt;
           0 |  complete failure (no item modified)&lt;br /&gt;
           1 |  partial failure  (some items modified, some not modified)&lt;br /&gt;
           2 |  success          (all items modified OK)&lt;br /&gt;
 &lt;br /&gt;
Další, detailnější, rozlišení selhání (failure) se neprovádí (tzn. SDS neposílá více detailnější informaci ve své odpovědi, než uvedené tři možnosti).&lt;br /&gt;
&lt;br /&gt;
Pozor, odpověď se týka schopnosti převzít jednotlivé položky ze S-UDP příkazu, a předat je do FULL-C bloku k dalšímu zpracování (zápis do indexů). Pokud je specifický index pouze pro čtení, samozřejmě nedojde k zápisu, ovšem to není bráno jako chyba z hlediska odpovědi na tento paket (jen jednoduše nedojde k zápisu pro daný read-only index). Chybová hodnota (0 nebo 1) je v této celkové odpovědi vrácena pouze pokud je obsahem S-UDP příkazu nesmysl (částečný nebo úplný), např. jde o obsahově prázdný paket (není co zapisovat), nebo se snažíte zapsat nesmyslné velikosti nebo rozsahy hodnot, nebo příliš moc indexů najednou atd. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [16] '''FULL-C Shared Variable(s) Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz se využívá k přístupu ke [[FULL-C:_sharing|sdíleným proměnným]] programu FULL-C.&lt;br /&gt;
&lt;br /&gt;
Proměnné se označují vzorem, kde je na začátku velké písmeno určující typ, a pak dvě decimální číslice určující pořadí - tedy sto možných hodnot. &lt;br /&gt;
&lt;br /&gt;
Mohou existovat tyto sdílené proměnné :&lt;br /&gt;
* S00 až S99 (hodnoty: signed 32-bit)&lt;br /&gt;
* U00 až U99 (hodnoty: unsigned 32-bit)&lt;br /&gt;
* F00 až F99 (hodnoty: float 32-bit)&lt;br /&gt;
* T00 až T99 (hodnoty: array/text)&lt;br /&gt;
&lt;br /&gt;
Rozlišování jednotlivých funkcí je závislé na hodnotě &amp;quot;sub_command&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 QUERY-or-COMMAND TO SDS (master_command == 16, sent to SDS)&lt;br /&gt;
 &lt;br /&gt;
 sub_command | meaning&lt;br /&gt;
 ------------+---------------------------------------------&lt;br /&gt;
           0 | provide list of all active shared variables&lt;br /&gt;
           1 | read from shared variable (single variable)&lt;br /&gt;
           2 | reserved&lt;br /&gt;
           4 | write to shared variable (single variable)&lt;br /&gt;
           8 | reserved&lt;br /&gt;
&lt;br /&gt;
Pro &amp;quot;sub_command == 0&amp;quot; poskytne SDS odpověď, kde je uvedeno zda-li je specifická sdílená proměnná definována v právě aktivním FULL-C programu.&lt;br /&gt;
&lt;br /&gt;
 RESPONSE:  LIST OF SHARED VARIABLES: sub_command = 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
   0              |  13 | bytes | Uxx existence: bit-field&lt;br /&gt;
  13              |  13 | bytes | Sxx existence: bit-field&lt;br /&gt;
  26              |  13 | bytes | Fxx existence: bit-field&lt;br /&gt;
  39              |  13 | bytes | Txx existence: bit-field&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, v odpovědi jsou čtyři samostatné bitové pole, každé o délce 100 bitů (plus nevyužitý zbytek 4 bitů na konci). Každý bit přestavuje existenci jedné ze sdílených proměnných, pokud je nastaven na 1 tak proměnná existuje.&lt;br /&gt;
&lt;br /&gt;
 Xxx existence: bit-field&lt;br /&gt;
 &lt;br /&gt;
 BYTE -&amp;gt; [0] . . . [13]&lt;br /&gt;
 BITS -&amp;gt;  0 . . .   100 (plus 4 at the end, which are not used)&lt;br /&gt;
 &lt;br /&gt;
 BYTE [0] = bit 0, 1, 2, ..., 7&lt;br /&gt;
 BYTE [1] = bit 8, 9, 10, ..., 15&lt;br /&gt;
 ...&lt;br /&gt;
 BYTE [13] = bit 96, 97, 98 ..., 103&lt;br /&gt;
 &lt;br /&gt;
 example: existence of &amp;quot;U11&amp;quot; =&amp;gt; bit 11 =&amp;gt; look at BYTE [1]&lt;br /&gt;
&lt;br /&gt;
Takže pro kteroukoliv sdílenou proměnnou si lze nalézt příslušnou pozici, která ukazuje, zda-li právě daná proměnná existuje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Další,''' &amp;quot;sub_command == 1&amp;quot; umožňuje z konkrétní (jedné) sdílené proměnné číst.&lt;br /&gt;
&lt;br /&gt;
 QUERY TO SDS: READ ONE SHARED VARIABLE: sub_command = 1&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
  0               |   3 | bytes | [#0] name (example: &amp;quot;U25&amp;quot;)&lt;br /&gt;
  1               |   1 |  byte | reserved (0x00)&lt;br /&gt;
&lt;br /&gt;
A ''odpověď'' je:&lt;br /&gt;
&lt;br /&gt;
 REPLY FROM SDS: READ ONE SHARED VARIABLE: sub_command = 1&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
  0               |   3 | bytes | [#0] name (example: &amp;quot;F95&amp;quot;)&lt;br /&gt;
  1               |   1 |  byte | reserved (0x00)&lt;br /&gt;
  4               |   2 | uword | [#0] L#0: data length (L#0)&lt;br /&gt;
  6               |   2 | uword | reserved (0x0000)&lt;br /&gt;
  8               | L#0 |  data | [#0] data value from the shared variable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Dále,''' pro &amp;quot;sub_command == 4&amp;quot; dojde ke změně hodnoty.&lt;br /&gt;
&lt;br /&gt;
 COMMAND TO SDS: WRITE ONE SHARED VARIABLE: sub_command = 4&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
  0               |   3 | bytes | [#0] name (example: &amp;quot;T12&amp;quot;)&lt;br /&gt;
  1               |   1 |  byte | reserved (0x00)&lt;br /&gt;
  4               |   2 | uword | [#0] L#0: data length (L#0)&lt;br /&gt;
  6               |   2 | uword | reserved (0x0000)&lt;br /&gt;
  8               | L#0 |  data | [#0] new data value to write to shared variable&lt;br /&gt;
&lt;br /&gt;
A odpověď je zde shodná jako odpověd pro &amp;quot;sub_command == 1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [32] '''S0 Input Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení kalibračních konstant pro S0 vstupy. Současně jsou předány i aktuální (živé) údaje pro daný S0 vstup.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 32 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 32, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to S0 array [1..MAX] (typical MAX value is 9)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  S0 input number for this reply (for a valid answer: 1..MAX , otherwise: 0x00).&lt;br /&gt;
    1             |   1 |  byte |  total number of S0 inputs for this SDS&lt;br /&gt;
    2             |   1 |  byte |  configuration status (combined flags: bit0 = enabled as S0; bit1 = is tariff used)&lt;br /&gt;
    3             |   1 |  byte |  reserved (0x00)&lt;br /&gt;
    4             |  32 | bytes |  text (name: unit)&lt;br /&gt;
    36            |  32 | bytes |  text (name: money)&lt;br /&gt;
    68            |  32 | bytes |  text (unit: power)&lt;br /&gt;
    100           |  32 | bytes |  text (name: power)&lt;br /&gt;
    132           |  32 | bytes |  text (name: device)&lt;br /&gt;
    168           |   4 | dword |  MTD value&lt;br /&gt;
    172           |   4 | dword |  minimal impulse length (msec)&lt;br /&gt;
    176           |   4 | dword |  impulse constant value (imp. per unit)&lt;br /&gt;
    180           |   4 | bytes |  price for T0&lt;br /&gt;
    184           |   4 | bytes |  price for T1&lt;br /&gt;
    188           |   8 | bytes |  reserved (0x00)&lt;br /&gt;
    196           |   4 | dword |  live value: T0 impulse counter&lt;br /&gt;
    200           |   4 | dword |  live value: T1 impulse counter&lt;br /&gt;
    204           |   4 | dword |  T0 offset&lt;br /&gt;
    208           |   4 | dword |  T1 offset&lt;br /&gt;
    212           |   4 | dword |  live value: measured space between impulses (msec)&lt;br /&gt;
    216           |   4 | dword |  live value: time since last registered impulse (msec)&lt;br /&gt;
    220           |   4 | bytes |  reserved (0x00)&lt;br /&gt;
    224           |   n | bytes |  live value: combined text&lt;br /&gt;
&lt;br /&gt;
Kombinovaný text (combined text) obsahuje vypočtené informace, oddělené znakem '|'. Tyto údaje lze přímo zobrazit uživateli. Výpočet provádí SDS, a stejné hodnoty ukazuje na svém webu. Jedná se zde o doplněk původní funkce GDS (master_command==0).&lt;br /&gt;
&lt;br /&gt;
Délka textu &amp;quot;n&amp;quot; je dynamická, text je zakončen 0x00 (nebo pokud vyjde přesně na maximální délku co se vleze do payloadu, zakončení nemá a je uříznut na posledním znaku, pozor na to).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''(sub_command = 0xFF)''': speciální odpověď pro Tarifní vstup :&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 32, sent from SDS as reply)&lt;br /&gt;
 sub_command == 0xFF (tariff)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  constant 0xFF&lt;br /&gt;
    1             |   3 | bytes |  reserved (0x00)&lt;br /&gt;
    4             |   1 |  byte |  tariff input&lt;br /&gt;
    5             |  32 | bytes |  text (name: tariff)&lt;br /&gt;
    37            |  32 | bytes |  text (name: tariff T0 input)&lt;br /&gt;
    69            |  32 | bytes |  text (name: tariff T1 input)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [33] '''S0 Input History Values''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení historických hodnot počítadel pro vybraný S0 vstup. Každá nová položka se do záznamu historie uloží co 15 minut.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 33 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 33, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to S0 array [1..MAX] (typical MAX value is 9)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  S0 input number for this reply (for a valid answer: 1..MAX , otherwise: 0x00).&lt;br /&gt;
    1             |   1 |  byte |  total number of S0 inputs for this SDS&lt;br /&gt;
    2             |   1 |  byte |  configuration status (combined flags: bit0 = enabled as S0; bit1 = is tariff used)&lt;br /&gt;
    3             |   3 | bytes |  reserved (0x00)&lt;br /&gt;
    6             |   2 |  word |  history depth (number of items) - value &amp;quot;n&amp;quot; (example: five items -&amp;gt; n == 5)&lt;br /&gt;
    8             |   4 | dword |  uptime value for the last element (#n) in the list&lt;br /&gt;
    12            |   4 | dword |  ntptime value for the last element (#n) in the list&lt;br /&gt;
    16            |   4 | dword |  history item #1: value of T0 counter (this is the most oldest item)&lt;br /&gt;
    20            |   4 | dword |  history item #1: value of T1 counter (this is the most oldest item)&lt;br /&gt;
    ...&lt;br /&gt;
    16+(n-1)*8    |   4 | dword |  history item #n: value of T0 counter (this is the most newest item)&lt;br /&gt;
    16+(n-1)*8+4  |   4 | dword |  history item #n: value of T1 counter (this is the most newest item)&lt;br /&gt;
&lt;br /&gt;
Historické údaje počítadel ukazují stav počítadel od současnosti dozadu. Položka #1 je nejstarší, pak #2 je mladší atd. až po položku #n která je nejaktuálnější (nejbližší současné chvíli).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [40] '''AD Input Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení kalibračních konstant pro AD vstupy.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 40 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 40, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to AD array [1..MAX]&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN  | TYPE  | content&lt;br /&gt;
 -----------------+------+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1  |  byte |  actual AD input index for this reply&lt;br /&gt;
    1             |   1  |  byte |  total number of AD inputs&lt;br /&gt;
    2             |   2  | bytes |  reserved (0x00)&lt;br /&gt;
    4             |   4  |   f32 |  F6 calibration constant&lt;br /&gt;
    8             |   4  |   f32 |  F5 calibration constant&lt;br /&gt;
   12             |   4  |   f32 |  F4 calibration constant&lt;br /&gt;
   16             |   4  |   f32 |  F3 calibration constant&lt;br /&gt;
   20             |   4  |   f32 |  F2 calibration constant&lt;br /&gt;
   24             |   4  |   f32 |  F1 calibration constant&lt;br /&gt;
   28             |   4  |   f32 |  F0 calibration constant&lt;br /&gt;
   32             |   1  |  byte |  is calibration factory locked&lt;br /&gt;
   33             |  32  | bytes |  unit&lt;br /&gt;
   65             |   4  | bytes |  reserved (0x00)&lt;br /&gt;
   69             |  32  | bytes |  name&lt;br /&gt;
  101             |   4  | bytes |  reserved (0x00)&lt;br /&gt;
  105             |   4  | dword |  raw value&lt;br /&gt;
  109             |   4  |   f32 |  real value (converted from raw)&lt;br /&gt;
  113             |   n  | bytes |  live value text&lt;br /&gt;
&lt;br /&gt;
Text &amp;quot;live value&amp;quot; obsahuje hodnotu vypočtenou interně v SDS. Text lze prezentovat uživateli (je to stejné jako co SDS ukáže na svém webu). Jedná se o doplňkovou funkci vůči vlastnímu výpočtu ze surových hodnot z GDS (master_command==0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [42] '''PWM Output Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení nastavení pro PWM výstup (konfigurace a živý stav).&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 42 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 42, sent from SDS as reply)&lt;br /&gt;
 sub_command == 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN  | TYPE  | content&lt;br /&gt;
 -----------------+------+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1  |  byte |  reserved (0x00)&lt;br /&gt;
    1             |   1  |  byte |  &amp;quot;N&amp;quot; = total number of PWM outputs&lt;br /&gt;
    2             |   2  | bytes |  reserved (0x00)&lt;br /&gt;
 &lt;br /&gt;
    4+(i*12)+  0  |   4  | dword |  frequency (Hz) for PWMx&lt;br /&gt;
    4+(i*12)+  4  |   4  | dword |  &amp;quot;pulse&amp;quot; value for PWMx&lt;br /&gt;
    4+(i*12)+  8  |   1  |  byte |  &amp;quot;ValueB&amp;quot; value for PWMx&lt;br /&gt;
    4+(i*12)+  9  |   2  | uword |  &amp;quot;ValueS&amp;quot; value for PWMx&lt;br /&gt;
    4+(i*12)+ 11  |   1  |  byte |  output enabled for PWMx&lt;br /&gt;
&lt;br /&gt;
Pozn. PWM1 má hodnotu &amp;quot;i&amp;quot; = 0, PWM2 má hodnotu &amp;quot;i&amp;quot; = 1 atd.&lt;br /&gt;
&lt;br /&gt;
V případě, že je některý z PWMx výstupů nevyužit (&amp;quot;přeskočen&amp;quot;), je přesto v odpovědi uveden, aby bylo zachováno číslovaní pořadí všech PWMx výstupů.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [44] '''RELAYs Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení konfigurace RELAY výstupů (nastavení a živý stav).&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 44 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 44, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to RELAY array [1..MAX]&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN  | TYPE  | content&lt;br /&gt;
 -----------------+------+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1  |  byte |  actual RELAY output index for this reply&lt;br /&gt;
    1             |   1  |  byte |  total number of RELAY outputs&lt;br /&gt;
    2             |   2  | bytes |  reserved (0x00)&lt;br /&gt;
    4             |  32  | bytes |  name&lt;br /&gt;
   36             |   4  | bytes |  reserved (0x00)&lt;br /&gt;
   40             |   1  |  byte |  &amp;quot;relay-controlled-by&amp;quot; value&lt;br /&gt;
   41             |   1  |  byte |  &amp;quot;relay-output&amp;quot; value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [48] '''SD Card Status Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení stavu SD karty.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 48 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 48, sent from SDS as reply)&lt;br /&gt;
 sub_command == 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  card mounted &lt;br /&gt;
    1             |   3 | bytes |  reserved&lt;br /&gt;
    4             |   4 | dword |  card type&lt;br /&gt;
    8             |   4 | dword |  card ProdSN&lt;br /&gt;
   12             |   4 | dword |  card init attempts counter&lt;br /&gt;
   16             |   4 | dword |  card init failures counter&lt;br /&gt;
   20             |   4 | dword |  card total sector count in FAT in KiB&lt;br /&gt;
   24             |   4 | dword |  total sector reads counter&lt;br /&gt;
   28             |   4 | dword |  total sector writes counter&lt;br /&gt;
   32             |   4 | dword |  total sector r/w failures counter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [50] '''Serial Port Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz není pro &amp;quot;version == 0x00&amp;quot; podporován. Potřebujete novější &lt;br /&gt;
firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [64] '''DataFlash (NVM) Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz není pro &amp;quot;version == 0x00&amp;quot; podporován. Potřebujete novější &lt;br /&gt;
firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [128] '''Reserved''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz není v současné verzi použit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (1-PŘ) Master Command (první produktová řada: &amp;quot;TV = 0001....&amp;quot; ) ==&lt;br /&gt;
&lt;br /&gt;
Jednotlivé základní příkazy (''master command'') - zatím nejsou pro &lt;br /&gt;
první produktovou řadu definovány.&lt;br /&gt;
&lt;br /&gt;
Detaily zde budou doplněny.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=M2M:_S-UDP_protocol&amp;diff=942</id>
		<title>M2M: S-UDP protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=M2M:_S-UDP_protocol&amp;diff=942"/>
		<updated>2025-03-15T08:47:17Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje funkci zařízení SDS '''druhé produktové řady''' - protože SDS první produktové řady používají jiný protokol.&lt;br /&gt;
&lt;br /&gt;
== Rychlá komunikace: S-UDP ==&lt;br /&gt;
&lt;br /&gt;
Pomocí speciálního protokolu, kdy se data přenášejí prostřednictvím [http://en.wikipedia.org/wiki/User_Datagram_Protocol UDP], je možné získávat informace z výrobků řady SDS/OnlineTechnology.&lt;br /&gt;
&lt;br /&gt;
 S-UDP používá následující výchozí UDP PORT: 310&lt;br /&gt;
&lt;br /&gt;
Komunikace probíhá formou DOTAZ - ODPOVĚĎ. To znamená, že ten, kdo má o informace zájem (vzdálený uživatel) pošle dotaz (korektně vyplněný UDP paket, viz dále) a obratem obdrží od zařízení odpověď - UDP paket s informacemi. UDP Port na kterém je komunikace prováděna lze samozřejmě v administraci zařízení změnit.&lt;br /&gt;
&lt;br /&gt;
Přenos dat využívá specifického protokolu, který umožňuje bezpečně ovládat specifické zařízení SDS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Typické použití:''' komunikace zařízení SDS s protistranou (např. aplikace na mobilním telefonu).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Informace == &lt;br /&gt;
&lt;br /&gt;
Některé z FULL-C funkcí, které jsou zde popsány, jsou plně implementovány až ve firmware 03/2025 a dále. Je potřeba, aby jste měli svůj modul SDS aktualizován na nový firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bezpečnost ==&lt;br /&gt;
&lt;br /&gt;
Protokol S-UDP je založen na důsledné autentizaci strany, která posílá zprávu - zařízení SDS ověřuje identitu odesílatele příkazu, a ten může ověřit identitu SDS který odpovídá.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Je to založeno na následujícím principu:&lt;br /&gt;
&lt;br /&gt;
- S-UDP protokol je zabezpečen symetrickou šifrou, se sdíleným klíčem který znají jen komunikující strany (bezpečnost je přímo úměrná úrovni zabezpečení tohoto klíče na obou stranách)&lt;br /&gt;
&lt;br /&gt;
- SDS má unikátní identifikátor (zaručeně unikátní, od výrobce) který nelze změnit (je fyzicky vypálen v SoC - nezměnitelně přímo v silikonu chipu).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== S-UDP protokol ==&lt;br /&gt;
&lt;br /&gt;
Každý příkaz a odpověď jsou v samostatném, jediném, UDP paketu.&lt;br /&gt;
&lt;br /&gt;
Každý paket je sestaven v rámci společného formátu, který je zde popsán. Samotný doplňující datový obsah (payload) je dynamický, a u některých příkazů není potřeba.&lt;br /&gt;
&lt;br /&gt;
S-UDP Paket se tedy skládá z těchto základní částí (tyto části jsou právě přenášeny UDP paketem, v následující sestavě):&lt;br /&gt;
&lt;br /&gt;
  [MASTER PACKET CONTENTS]&lt;br /&gt;
 &lt;br /&gt;
   OFFSET    | LEN    |  DATA&lt;br /&gt;
   ----------+--------+---------------------------------------------------------------&lt;br /&gt;
     0       |     28 |  HEADER&lt;br /&gt;
    28       |  PL*16 |  ENCRYPTED PAYLOAD (contains: payload-header and payload-data)&lt;br /&gt;
&lt;br /&gt;
'''Pozor!''' Hodnota PL je velikost [ENCRYPTED PAYLOAD] vydělená 16. To znamená, že velikost [ENCRYPTED PAYLOAD] musí být beze zbytku dělitelná 16 (tzn. pouze hodnota 16, 32, 64, ...) ! Pokud je potřeba, doplní se na úplný konec (viz oblast &amp;quot;R&amp;quot;) zarovnání do potřebné délky, aby se dosáhlo čisté dělitelnosti 16.&lt;br /&gt;
&lt;br /&gt;
 LITTLE-ENDIAN&lt;br /&gt;
&lt;br /&gt;
Následující uvedené položky jsou ve formátu [http://en.wikipedia.org/wiki/Endianness#Little-endian Little-Endian] (procesory: ARM, x86):&lt;br /&gt;
* ''uword'' (unsigned 16-bit)&lt;br /&gt;
* ''dword'' (unsigned 32-bit)&lt;br /&gt;
* ''slong'' (signed   32-bit)&lt;br /&gt;
* ''qword'' (unsigned 64-bit)&lt;br /&gt;
&lt;br /&gt;
Položky typu: ''byte'', ''sbyte'', ''bytes'' - jsou jednotlivé samostatné bajty, nesdružené do společného čísla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zde jsou uvedeny detailní položky:&lt;br /&gt;
 &lt;br /&gt;
  [MASTER PACKET CONTENTS]&lt;br /&gt;
 &lt;br /&gt;
   OFFSET   | LEN  |  TYPE  | DATA&lt;br /&gt;
   ---------+------+--------+-----------------------------&lt;br /&gt;
 &lt;br /&gt;
                              [HEADER]&lt;br /&gt;
 &lt;br /&gt;
    0       |   3  |  bytes | header &amp;quot;SDS&amp;quot;&lt;br /&gt;
    3       |   1  |   byte | TV = (SDS-product-line) including (S-UDP protocol master-version)&lt;br /&gt;
    4       |   1  |   byte | PL = number of 16B chunks - this is the payload_length of [ENCRYPTED PAYLOAD] (example: PL==10 =&amp;gt; 160 bytes)&lt;br /&gt;
    5       |   1  |   byte | encryption-flag  (NOW ACCEPTS ONLY: 0x10 == XTEA-64-CTR)&lt;br /&gt;
    6       |   1  |   byte | reserved&lt;br /&gt;
    7       |   1  |   byte | CK1: basic additive checksum for [ENCRYPTED PAYLOAD] (start from (including) byte offset [28] and forward)&lt;br /&gt;
    8       |   4  |  dword | user_identifier (correlation identifier) - use this to correlate query to response&lt;br /&gt;
   12       |  16  |  bytes | CounterBlock&lt;br /&gt;
  ----------+------+--------+----------------------------&lt;br /&gt;
 &lt;br /&gt;
                              [ENCRYPTED PAYLOAD] -&amp;gt; everything from this point is included:&lt;br /&gt;
 &lt;br /&gt;
   28       |   1  |   byte | random number (shall be always different than what was used ever before)&lt;br /&gt;
   29       |   1  |   byte | CK2: basic additive checksum for [HEADER] (all bytes [0] to [27] included, BUT: skipping byte [7])&lt;br /&gt;
   30       |   2  |  uword | XR_MTU value (maximal size of the custom-payload data including R) ( XL + R &amp;lt;= XR_MTU )&lt;br /&gt;
   32       |   4  |  dword | CRC-32 (part-header and plain-text payload) -&amp;gt; byte [36] (included) up to [52+XL-1] (the R area is not included here)&lt;br /&gt;
   36       |   4  |  dword | uptime (msecs from boot)&lt;br /&gt;
   40       |   4  |  dword | time (epoch) (or, if no NTP is available to SDS, this will be a value of &amp;quot;seconds from boot&amp;quot;)&lt;br /&gt;
   44       |   4  |  dword | SDS device type (0xXXXXXXXX) - THIS MUST MATCH&lt;br /&gt;
   48       |   1  |   byte | master_command&lt;br /&gt;
   49       |   1  |   byte | sub_command&lt;br /&gt;
   50       |   2  |  uword | XL value (exact length of the actually useful payload-data): XL = (PL*16) - R - 24&lt;br /&gt;
 &lt;br /&gt;
   52       |  XL  |  bytes | custom payload-data [C-PAYLOAD]&lt;br /&gt;
 &lt;br /&gt;
   52+XL    |   R  |  bytes | specific set of (random data filling) to round-up (the PL*16 value) to a clean 16B multiply (16, 32, 64, etc.)&lt;br /&gt;
 &lt;br /&gt;
  ----------+------+--------+----------------------------&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;SDS device type&amp;quot; je určena podle typu SDS, se kterým komunikujete. Seznam hodnot viz [[Firmware]], například 0xB1900001 pro BIG-64 nebo 0xB1900002 pro BIG-128 atd.Pokud tato hodnota neodpovídá typu firmware v daném SDS, bude paket zcela ignorován a neproveden. Jediná vyjímka je master_command == NOP, což je záměrná vyjímka, která umožní zjištění typu SDS (a přítomnosti SDS) při zahájení komunikace.&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;random number&amp;quot; je zde proto, aby šifrované data byly pokaždé jiné, i když se přenáší stejný obsah (tzn. jedná se o zábranu stenografického odhadu obsahu payloadu).&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;time&amp;quot; umožňuje zařízení, které komunikuje s SDS, zabránit &amp;quot;replay&amp;quot; útoku (když se zaznamená paket a později se zopakuje - v takovém případě se na to přijde protože &amp;quot;time&amp;quot; bude významně starší). SDS kontrolu provádí vůči svému vnitřnímu času, vzdálené zařízení co se SDS komunikuje by tuto kontrolu mělo dělat také.&lt;br /&gt;
&lt;br /&gt;
Protože hodnota &amp;quot;time&amp;quot; se zvyšuje pouze co 1 vteřinu, je k dispozici i hodnota &amp;quot;uptime&amp;quot; která se po resetu/bootu (kde se nastaví na nulu) zvyšuje každou 1 milisekundu o jedničku. Kombinace umožňuje vhodně sestavit algoritmus detekce &amp;quot;replay&amp;quot; útoků.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;CounterBlock&amp;quot; se využívá pro nastavení začátku šifrování a dešifrování. Všechny detaily jsou zcela shodné jako pro [[FULL-C_crypto_functions|FULL-C funkci SDS_Crypt()]]. Z hlediska bezpečnosti je důležité, aby obě strany neustále používaly zvyšující se CounterBlock obsah (začít &amp;quot;od jedničky&amp;quot; pouze a jenom po resetu/bootu), tzn. pro každou zprávu použít poslední hodnotu counteru a na té dále stavět pro novou zprávu atd. .&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;crc32&amp;quot; se počítá pro dešifrované data, algoritmus je identický jako pro [[FULL-C_crypto_functions|FULL-C funkci SDS_Crypt()]].&lt;br /&gt;
&lt;br /&gt;
Pro zvolené XTEA-64-CTR má &amp;quot;CounterBlock&amp;quot; následující sestavu svého obsahu:&lt;br /&gt;
&lt;br /&gt;
   CounterBlock:&lt;br /&gt;
 &lt;br /&gt;
   OFFSET    | LEN  |  TYPE  |  DATA&lt;br /&gt;
   ----------+------+--------+-----------------------------------------------------------------------------------------&lt;br /&gt;
    0        |   8  |  qword |  XTEA-64-CTR: 64-bit counter (counter is increased by 1, for each 16B of processed data)&lt;br /&gt;
    8        |   8  |  bytes |  (reserved) not-used area = reserved (fill with 0x00) &lt;br /&gt;
&lt;br /&gt;
Pro jiné mechanismy (do budoucna) je v CounterBlock oblasti přidána ještě 8B rezerva (např. pro AES-128 se pak využije všech 16 bajtů).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;TV&amp;quot; (v [HEADER] na offsetu [3]) je určení typu a verze protokolu. Skládá se ze dvou čtyřbitových údajů, viz následující tabulka.&lt;br /&gt;
&lt;br /&gt;
 TV: ttttVVVV&lt;br /&gt;
     76543210&lt;br /&gt;
 &lt;br /&gt;
 BIT OFFSET | LEN (bits) | content&lt;br /&gt;
 -----------+------------+--------------------------------------------------&lt;br /&gt;
  7 (MSB)   |          4 |  &amp;quot;t&amp;quot;: produc-line value: 1 == first, 2 == second&lt;br /&gt;
  3         |          4 |  &amp;quot;V&amp;quot;: version: 0 = first S-UDP protocol version&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V konečném důsledku, skutečnou funkční důležitost ma '''[C-PAYLOAD]''', což je blok dat, který obsahuje hodnoty a příkazy, které pomocí S-UDP chceme přenést.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Postup při příjmu S-UDP paketu ==&lt;br /&gt;
&lt;br /&gt;
Každá strana, která přijme S-UDP paket, provede následující kroky:&lt;br /&gt;
&lt;br /&gt;
 1) Ověřit platnost hodnot v [HEADER]&lt;br /&gt;
    a. text &amp;quot;SDS&amp;quot; (platný obsah)&lt;br /&gt;
    b. hodnota &amp;quot;TV&amp;quot; (&amp;quot;master-version&amp;quot; a &amp;quot;product-line&amp;quot;) (platný obsah)&lt;br /&gt;
    c. hodnota &amp;quot;PL&amp;quot; v platných mezích&lt;br /&gt;
    d. hodnota &amp;quot;encryption_flag&amp;quot; (platný obsah)&lt;br /&gt;
 2) Ověřit základní additive-checksum pro [ENCRYPTED PAYLOAD]&lt;br /&gt;
    a. přečíst bajty [28] až [28+PL-1] a sečíst je (overflow osm bitů), výsledek musí odpovídat &amp;quot;CK1&amp;quot; hodnotě&lt;br /&gt;
 3) Nastavit dešifrování&lt;br /&gt;
    a. zvolit algoritmus podle &amp;quot;encryption-flag&amp;quot; hodnoty&lt;br /&gt;
    b. nastavit klíč (stejný jako na protistraně, samozřejmě není přenášen přes síť)&lt;br /&gt;
    c. nastavit &amp;quot;CounterBlock&amp;quot; (přečíst z [HEADER])&lt;br /&gt;
 4) Dešifrovat celou [ENCRYPTED PAYLOAD] na plain-text&lt;br /&gt;
    a. hodnota &amp;quot;PL&amp;quot; musí být dělitelná 16 beze zbytku (tato podmínka závisí na použitém šifrovaní)&lt;br /&gt;
 5) Ověřit základní additive-checksum pro [HEADER] - teď totiž už máme hodnotu &amp;quot;CK2&amp;quot;&lt;br /&gt;
    a. přečíst bajty [0] až [27] (ovšem přeskočit byte [7] - pozor!) a sečíst je (overflow osm bitů), výsledek musí odpovídat &amp;quot;CK2&amp;quot; hodnotě&lt;br /&gt;
 6) Ověřit další hodnoty&lt;br /&gt;
    a. &amp;quot;SDS-DEVICE-TYPE&amp;quot; musí odpovídat (záruka ovládání toho správného typu SDS) - pokud hodnotu nevíte, můžete si &amp;quot;pomoci&amp;quot; NOP příkazem&lt;br /&gt;
    b. uschovat hodnotu &amp;quot;XR_MTU&amp;quot; pro vytváření odpovědi (&amp;quot;XR_MTU&amp;quot; omezuje velikost odpovědi, kterou můžeme zpátky odeslat)&lt;br /&gt;
    c. ověřit časové údaje (&amp;quot;time&amp;quot; a &amp;quot;uptime&amp;quot;)&lt;br /&gt;
    d. ověřit &amp;quot;XL&amp;quot; vůči &amp;quot;PL&amp;quot;&lt;br /&gt;
 7) Ověřit CRC-32 dešifrovaného payloadu&lt;br /&gt;
    a. spočítat CRC-32 správným algoritmem, vučí bajtům (plain-text) z [36] až [52+XL-1] včetně&lt;br /&gt;
 &lt;br /&gt;
 8) Hotovo: teď se provede aktuální příkaz (Master Command, dle tabulky podle produktové řady viz &amp;quot;TV&amp;quot;)&lt;br /&gt;
            a odešle odpověď (ponechat user_identifier pro korelaci) (pozor na &amp;quot;XR_MTU&amp;quot; omezení)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Postup při odesílání S-UDP paketu ==&lt;br /&gt;
&lt;br /&gt;
Odesílatel zprávy provádí tyto kroky:&lt;br /&gt;
&lt;br /&gt;
 1) Je sestaven přesný obsah [C-PAYLOAD] a určena odpovídající hodnota XL&lt;br /&gt;
    a. obsah samozřejmě odpovídá tomu co chcete odeslat&lt;br /&gt;
    b. určí se i &amp;quot;master-command&amp;quot; a &amp;quot;sub-command&amp;quot; (pozor na produktovou řadu SDS - viz &amp;quot;TV&amp;quot;)&lt;br /&gt;
 2) Vyplní se [HEADER]&lt;br /&gt;
    a. hlavička &amp;quot;SDS&amp;quot;, &amp;quot;encryption-flag&amp;quot;&lt;br /&gt;
    b. zapsat správnou hodnotu &amp;quot;TV&amp;quot; podle protokolu a konkrétního SDS (&amp;quot;master-version&amp;quot;, &amp;quot;product-line&amp;quot;)&lt;br /&gt;
    c. určí se nová unikátní hodnota &amp;quot;user_identifier&amp;quot;, a zapíše se do [HEADER]&lt;br /&gt;
    d. zapíše se &amp;quot;CounterBlock&amp;quot; (hodnota pokračuje po předchozím paketu)&lt;br /&gt;
 3) Nachystá se zaokrouhlovací oblast &amp;quot;R&amp;quot; &lt;br /&gt;
    a. Pokud XL není beze zbytku dělitelná 16, musí se doplnit oblastí &amp;quot;R&amp;quot;&lt;br /&gt;
 4) Spočítá se hodnota &amp;quot;PL&amp;quot;&lt;br /&gt;
    a. PL = (XL + R)/16&lt;br /&gt;
    b. zapsat do [HEADER]&lt;br /&gt;
 5) Začne se vyplňovat [ENCRYPTED PAYLOAD]&lt;br /&gt;
    a. zapsat náhodný byte do &amp;quot;random number&amp;quot;&lt;br /&gt;
    b. spočítá se hodnota &amp;quot;CK2&amp;quot; (sečíst bajty [0] až [27] - ovšem přeskočit byte [7] - pozor!) &lt;br /&gt;
    c. zapsat hodnotu &amp;quot;XR_MTU&amp;quot; podle možností zařízení (tzn. jak velkou odpověď lze bezpečně přijmout, podle omezení sítě)&lt;br /&gt;
    d. zapíší se hodnoty &amp;quot;uptime&amp;quot; a &amp;quot;time&amp;quot;, zapsat hodnotu &amp;quot;SDS-DEVICE-TYPE&amp;quot;&lt;br /&gt;
    e. zapsat &amp;quot;master-command&amp;quot; a &amp;quot;sub-command&amp;quot;&lt;br /&gt;
 6) Spočítá se CRC-32 (před šifrováním)&lt;br /&gt;
    a. spočítat crc32 pro bajty (plain-text) z offsetu [36] až [52+XL-1] včetně&lt;br /&gt;
 7) Nastavit šifrování&lt;br /&gt;
    a. zvolit algoritmus (musí odpovídat tomu, co se zapsalo do &amp;quot;encryption-flag&amp;quot;)&lt;br /&gt;
    b. nastavit klíč (stejný jako na protistraně, samozřejmě není přenášen přes síť)&lt;br /&gt;
    c. nastavit &amp;quot;CounterBlock&amp;quot; (stejný jako byl zapsán [HEADER])&lt;br /&gt;
 8) Šifrovat celou [ENCRYPTED PAYLOAD] na plain-text&lt;br /&gt;
    a. hodnota &amp;quot;PL&amp;quot; musí být dělitelná 16 beze zbytku (tato podmínka závisí na použitém šifrovaní)&lt;br /&gt;
    b. aktualizovaná hodnota &amp;quot;CounterBlock&amp;quot; (zvýšená o průběh šifrování) se uschová pro další použití - viz bod &amp;quot; 2) c. &amp;quot;&lt;br /&gt;
 9) Spočítat základní additive-checksum pro [ENCRYPTED PAYLOAD]&lt;br /&gt;
    a. přečíst bajty [28] až [28+PL-1] a sečíst je (overflow osm bitů), výsledek se zapíše do &amp;quot;CK1&amp;quot; hodnoty&lt;br /&gt;
 &lt;br /&gt;
 10) Hotovo: paket se následně odešle přes síť do protistrany, která odpoví novým paketem - ten je vztažen k tomuto dotazu pomocí &amp;quot;user_identifier&amp;quot; hodnoty.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vzorové obsahy paketů ==&lt;br /&gt;
&lt;br /&gt;
Na stránce [[M2M: S-UDP protocol: examples]] naleznete ukázkové vzorové pakety a jejich vnitřní obsah, i se zobrazeních jednotlivých položek v paketu (před a po šifrování).&lt;br /&gt;
Toto je vhodné pro vývojáře komunikační protistrany, kterým nestačí popis postupu na této stránce, ale chtějí také vidět jednotlivé kroky s aktuálními hodnotami.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Seznam hlavních příkazů ==&lt;br /&gt;
&lt;br /&gt;
Obě produktové řady SDS, které jsou na trhu, mají svou sadu &amp;quot;master_command&amp;quot; příkazů. Proto je potřeba nejprve zjistit, do které produktové řady vaše SDS spadá, a podle toho dále pokračovat. Lze to přímo odvodit od typu SDS (&amp;quot;SDS-DEVICE-TYPE&amp;quot; hodnota), nebo se zeptat příkazem NOP.&lt;br /&gt;
&lt;br /&gt;
Zařazení SDS do produktových řad je v [[Seznam_Všech_SDS|tomto seznamu]].&lt;br /&gt;
&lt;br /&gt;
* První produktová řada: &amp;quot;TV = 0001....&amp;quot;  -&amp;gt; '''(1PŘ)'''&lt;br /&gt;
* Druhá produktová řada: &amp;quot;TV = 0010....&amp;quot;  -&amp;gt; '''(2PŘ)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2PŘ) Master Command (druhá produktová řada: &amp;quot;TV = 0010....&amp;quot; ) ==&lt;br /&gt;
&lt;br /&gt;
Jednotlivé základní příkazy (''master command''):&lt;br /&gt;
 &lt;br /&gt;
  MASTER COMMAND  |  command&lt;br /&gt;
  ----------------+-------------------------------------&lt;br /&gt;
     0            |   NOP (replies with NOP)&lt;br /&gt;
     1            |   general device status&lt;br /&gt;
     2            |   1-Wire access&lt;br /&gt;
     4            |   read FC-Get list&lt;br /&gt;
     8            |   write FC-Set list&lt;br /&gt;
    16            |   FULL-C shared variable(s) access&lt;br /&gt;
    32            |   serial port access&lt;br /&gt;
    64            |   DataFlash access&lt;br /&gt;
   128            |   reserved&lt;br /&gt;
 &lt;br /&gt;
Jak lze vidět, jednotlivé ''master command'' příkazy jsou dále rozlišeny pomocí hodnoty ''sub command''.&lt;br /&gt;
&lt;br /&gt;
Každý příkaz má doplňující datovou sadu, tzn. [C-PAYLOAD]. V rámci těchto dat jsou uvedeny všechny hodnoty, které přesně určují co se má stát (popř. jsou zde všechny odpovědi na dotaz).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [0] '''NOP''' ==&lt;br /&gt;
&lt;br /&gt;
SDS odpoví na tento příkaz odesláním [0] NOP.&lt;br /&gt;
&lt;br /&gt;
Tohoto příkazu lze využít k ověření komunikace a k vzájemné základní synchronizace.&lt;br /&gt;
&lt;br /&gt;
Specifická vlastnost příkazu NOP, oproti všem ostatním příkazům, je to, že SDS odpoví i v případě, že v dotazu není správně uvedený SDS Device Type. Toto je záměr, aby bylo možné při začátku komunikace s SDS modulem, tento modul identifikovat. Samozřejmě všechny ostatní bezpečnostní prvky jsou stále aplikovány, jen tento detail je zde upraven.&lt;br /&gt;
&lt;br /&gt;
Tento příkaz je také velmi užitečný pro získání hodnoty &amp;quot;TV&amp;quot; z [HEADER], tím pádem pro určení číslo produktové řady SDS - a tím pádem k určení které &amp;quot;master_command&amp;quot; příkazy jsou k dispozici !&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 0, sent from SDS as reply)&lt;br /&gt;
 sub_command = 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN   | TYPE  | content&lt;br /&gt;
 -----------------+-------+-------+------------------------------------------------------&lt;br /&gt;
    0             |     6 | bytes |  MAC ADDRESS (bytes, not text)&lt;br /&gt;
    6             |     4 | bytes |  SDS Device Type&lt;br /&gt;
   10             |     4 | dword |  FW version &lt;br /&gt;
   14             |    32 | bytes |  sysLocation (missing the 0x00 terminator)&lt;br /&gt;
   46             |     8 | bytes |  reserved (0x00)&lt;br /&gt;
   54             |    32 | bytes |  OEM string (missing the 0x00 terminator)&lt;br /&gt;
   86             |     8 | bytes |  reserved (0x00)&lt;br /&gt;
   94             |     1 |  byte |  bylo aktivováno RSTD&lt;br /&gt;
   95             |     1 |  byte |  bylo aktivováno PVD&lt;br /&gt;
   96             |     1 |  byte |  SDS je: BIG (hodnota 1) nebo STSW (hodnota 0)&lt;br /&gt;
   97             |     8 | bytes |  reserved (0x00)&lt;br /&gt;
  105             |     2 | uword |  web interface TCP port number (typicky 80)&lt;br /&gt;
  107             |     1 |  byte |  SNMP-read enabled&lt;br /&gt;
  108             |     1 |  byte |  SNMP-write enabled&lt;br /&gt;
  109             |     1 |  byte |  FULLC shared vars access lock (0 = unlocked) tzn. sys[150]&lt;br /&gt;
  110             |     1 |  byte |  FULLC program run status&lt;br /&gt;
  111             |     1 |  byte |  FULLC program started-by info&lt;br /&gt;
  112             |     1 |  byte |  FULLC program watchdog active&lt;br /&gt;
  113             |     6 | bytes |  reserved&lt;br /&gt;
  119             |     4 |   f32 |  backup battery voltage (milliVolts)&lt;br /&gt;
&lt;br /&gt;
Pozn. rozšířená funkcionalita příkazu NOP (tedy vracení payloadu) bylo přidáno až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [1] '''General Device Status''' ==&lt;br /&gt;
&lt;br /&gt;
SDS odpoví zasláním vybraných údajů, jejichž seznam je přesně daný. Tato funkce je k dispozici pro umožnění rychlého přístupu k základnímu stavu zařízení SDS, bez složité přípravy.&lt;br /&gt;
&lt;br /&gt;
Základní odpověď s nejzajímavějšími živými údaji. Určeno např. pro průběžnou aktualizaci stavu zobrazeného uživateli.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 1, sent from SDS as reply)&lt;br /&gt;
 sub_command = 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN   | TYPE  | content&lt;br /&gt;
 -----------------+-------+-------+------------------------------------------------------&lt;br /&gt;
    0             |     6 | bytes |  MAC ADDRESS (bytes, not text)&lt;br /&gt;
    6             |     1 |  byte |  Ethernet Link Status / Speed (0, 10, 100)&lt;br /&gt;
    7             |     1 |  byte |  Amount of users logged into SDS Web Admin&lt;br /&gt;
    8             |    32 | bytes |  sysLocation (missing the 0x00 terminator)&lt;br /&gt;
   40             |     1 |  byte |  IP Watchdog Config status&lt;br /&gt;
   41             |     1 |  byte |  IP Watchdog Output (relay) status&lt;br /&gt;
   42             |     2 | uword |  IP Watchdog RTT value (note.: 0xFFFF = not available)&lt;br /&gt;
   44             |     1 |  byte |  DHCP status&lt;br /&gt;
   45             |     1 |  byte |  reserved&lt;br /&gt;
   46             |     1 |  byte |  NTP status&lt;br /&gt;
   47             |     1 | sbyte |  NTP offset (+/- hours) (signed char)&lt;br /&gt;
   48             |     2 | uword |  SoC chip temperature (degC)&lt;br /&gt;
   50             |     1 |  byte |  GPIO-TOPB PIN(s) direction (0 == input)&lt;br /&gt;
   51             |     1 |  byte |  GPIO-TOPB PIN(s) pin value&lt;br /&gt;
   52             |  32*1 |  byte |  OPTO [1]..[32] status (0xFF == signal) (0x00 == nosignal)&lt;br /&gt;
   84             |  32*1 |  byte |  RELAY [1]..[32] status (active/nonactive)&lt;br /&gt;
  116             |  32*2 | uword |  ADC [0]..[31] RAW value&lt;br /&gt;
  180             |     1 |  byte |  General 1-W BUS status&lt;br /&gt;
  181             |     1 |  byte |  1-W BUS A - active device count&lt;br /&gt;
  182             |     1 |  byte |  1-W BUS B - active device count&lt;br /&gt;
  183             |     3 | bytes |  reserved (0x00)&lt;br /&gt;
  186             |     1 |  byte |  S0 Tariff Value (active/nonactive)&lt;br /&gt;
  187             |     1 |  byte |  number of the following S0 INPUT DB data blocks:&lt;br /&gt;
  188             | 31*28 |  data |  S0 INPUT [1]..[ (max) 31] DB (data block)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 S0-INPUT DB offset | LEN | TYPE  | content&lt;br /&gt;
 -------------------+-----+-------+-------------------------------------------------------&lt;br /&gt;
    0               |   1 |  byte |  configuration status (combined flags: bit0 = enabled as S0; bit1 = is tariff used)&lt;br /&gt;
    1               |   3 | bytes |  reserved (filled with 0x00)&lt;br /&gt;
    4               |   4 | dword |  T0 impulse counter&lt;br /&gt;
    8               |   4 | dword |  T1 impulse counter&lt;br /&gt;
    12              |   4 | dword |  T0 offset&lt;br /&gt;
    16              |   4 | dword |  T1 offset&lt;br /&gt;
    20              |   4 | dword |  measured space between impulses (msec)&lt;br /&gt;
    24              |   4 | dword |  time since last registered impulse (msec)&lt;br /&gt;
&lt;br /&gt;
Sestava [C-PAYLOAD] je tedy zřejmá. &lt;br /&gt;
&lt;br /&gt;
Poslední blok (offset [188] až [1083] včetně) je určen pro přenos 32 S0 vstupů - často je jich ale v zařízení SDS fyzicky přítomno mnohem méně, např. jen devět - a potom zařízení SDS ve své odpovědi pošle jen devět záznamů (namísto 32) (toto se týká pouze a jenom S0 položek, né jiných v rámci paketu). To je provedeno z praktického důvodu: aby byl UDP paket dostatečně malý (a tedy rychlý na zpracování).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [2] '''1-Wire Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tato funkce se používá pro čtení stavu hodnot získaných z obou 1-W sběrnic, kterými SDS disponuje (některé SDS mají jen jednu sběrnici). Maximální počet prvků (chipů) na sběrnici je 64, celkem je tedy k dispozici 2x64 = 128 prvků.&lt;br /&gt;
&lt;br /&gt;
 QUERY/COMMAND TO SDS (master_command == 2)&lt;br /&gt;
 &lt;br /&gt;
 sub_command | meaning&lt;br /&gt;
 ------------+-----------------------------------------------------------&lt;br /&gt;
           0 |  reserved&lt;br /&gt;
           1 |  obtain status, and list of found items on BUS A&lt;br /&gt;
           2 |  obtain status, and list of found items on BUS B&lt;br /&gt;
           4 |  list all read-values on BUS A&lt;br /&gt;
           8 |  list all read-values on BUS B&lt;br /&gt;
&lt;br /&gt;
První možností tedy je sub_command == 1 , tzn. výpis nalezených zařízení na sběrnici A respektive B:&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 1, sent from SDS as reply)&lt;br /&gt;
 sub_command = 1 or 2&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  global 1-W controller status (SDS status)&lt;br /&gt;
    1             |   1 |  byte |  number of active items on BUS A&lt;br /&gt;
    2             |   1 |  byte |  number of active items on BUS B&lt;br /&gt;
    3             |   1 |  byte |  reserved (0x00)&lt;br /&gt;
    4             |  12 |  data |  1-W item status #0&lt;br /&gt;
    . . .         | ... |   ... |  . . .&lt;br /&gt;
    4+12*63       |  12 |  data |  1-W item status #63&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;1-W item status&amp;quot; ofs | LEN | TYPE  | content&lt;br /&gt;
 ----------------------+-----+-------+-------------------------------------------------------&lt;br /&gt;
    0                  |   1 |  byte |  ctrl: main-status&lt;br /&gt;
    1                  |   1 |  byte |  ctrl: sub-status &lt;br /&gt;
    2                  |   2 | bytes |  reserved (filled with 0x00)&lt;br /&gt;
    4                  |   8 | bytes |  ROM-CODE [0]..[7]&lt;br /&gt;
&lt;br /&gt;
Následuje: výpis získaných hodnot (např. změřené teploty z teplotních čidel) pro jednotlivé sběrnice :&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 1, sent from SDS as reply)&lt;br /&gt;
 sub_command = 4 or 8&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  global 1-W controller status (SDS status)&lt;br /&gt;
    1             |   1 |  byte |  number of active items on BUS A&lt;br /&gt;
    2             |   1 |  byte |  number of active items on BUS B&lt;br /&gt;
    3             |   1 |  byte |  reserved (0x00)&lt;br /&gt;
    4             |  12 |  data |  1-W item value #0&lt;br /&gt;
    . . .         | ... |   ... |  . . .&lt;br /&gt;
    4+12*63       |  12 |  data |  1-W item value #63&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;1-W item value&amp;quot; ofs  | LEN | TYPE  | content&lt;br /&gt;
 ----------------------+-----+-------+-------------------------------------------------------&lt;br /&gt;
    0                  |   1 |  byte |  ctrl: main-status&lt;br /&gt;
    1                  |   1 |  byte |  ctrl: sub-status&lt;br /&gt;
    2                  |   1 |  byte |  value of ROM-CODE offset [0] (1-W DEVICE TYPE: ID)&lt;br /&gt;
    3                  |   1 |  byte |  value of ROM-CODE offset [7] (1-W DEVICE TYPE: CRC)&lt;br /&gt;
    4                  |   4 | slong |  1-W read: primary value&lt;br /&gt;
    8                  |   4 | slong |  1-W read: secondary value&lt;br /&gt;
&lt;br /&gt;
Každý chip na sběrnici 1-Wire má vždy primární a sekundární hodnotu, kterou SDS pro daný chip udržuje (ne vždy jsou však, v závislosti na konkrétním chipu, obě hodnoty použity). Aktuální význam je potřeba určit podle chipu (příklad: DS18B20 má &amp;quot;primary value&amp;quot; zpracovanou teplotu v degC, a &amp;quot;secondary value&amp;quot; přímou surovou 16-bit hodnotu přečtenou z čidla).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [4] '''Read FC-Get List''' ==&lt;br /&gt;
&lt;br /&gt;
Dotaz (query) který obsahuje seznam indexů jejichž hodnoty jsou tazatelem požadovány, se posílá do SDS, které následně odpoví (reply).&lt;br /&gt;
&lt;br /&gt;
Dotaz i odpověď má dynamický obsah, který je specificky strukturován.&lt;br /&gt;
&lt;br /&gt;
 QUERY (master_command == 4, sent to SDS)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------&lt;br /&gt;
  0               |   2 | uword | [#0] index value &lt;br /&gt;
  2               |   2 | uword | [#0] TBLEN#0: type-bits and data length (L#0)&lt;br /&gt;
  4               | L#0 |  data | [#0] space prepared for answer from SDS&lt;br /&gt;
 &lt;br /&gt;
  (4+(L#0))+0     |   2 | uword | [#1] index value&lt;br /&gt;
  (4+(L#0))+2     |   2 | uword | [#1] TBLEN#1: type-bits and data length (L#1)&lt;br /&gt;
  (4+(L#0))+4     | L#1 |  data | [#1] space prepared for answer from SDS&lt;br /&gt;
 &lt;br /&gt;
  . . .           | ... | . . . | ...&lt;br /&gt;
 &lt;br /&gt;
  Z+0             |   2 | uword | [#n] index value &lt;br /&gt;
  Z+2             |   2 | uword | [#n] TBLEN#n: type-bits and data length (L#n)&lt;br /&gt;
  Z+4             | L#n |  data | [#n] space prepared for answer from SDS&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, v dotazu (query) jsou za sebou naskládány položky (indexy), na které následně SDS odpoví. Vždy musíte u každého indexu, na který se ptáte, uvést typ odpovědi (viz dále) a prostor, kam bude odpověď zapsána - to znamená, musíte znát přesnou délku, kterou má obsah pro daný index !&lt;br /&gt;
&lt;br /&gt;
Pozor na množství dotazů v rámci jednoho paketu, protože velikost dotazu, a také velikost odpovědi, je omezena XR_MTU. Jakmile SDS při skládání odpovědi narazení na XR_MTU protistrany, už více odpovědí do paketu nepřidá (aby nebylo XR_MTU překročeno).&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 4, sent from SDS as reply to query)&lt;br /&gt;
 &lt;br /&gt;
 SDS writes the values into the &amp;quot;[#n] space prepared for answer from SDS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Odpověď tedy přesně sleduje (vyplňuje) původní dotaz, přičemž [C-PAYLOAD] teď obdrží skutečný datový obsah pro jednotlivé položky. Pokud poskytnete SDS menší prostor pro odpověď, než je potřeba, bude odpověď vyplněna 0x00.&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;sub_command&amp;quot; je nastavena SDS na počet položek (#n) v odpovědi. Toto omezuje maximální počet položek v jednom paketu na 255.&lt;br /&gt;
&lt;br /&gt;
Následující popis ukazuje kódování typu proměnné a její délky, ve společném slově:&lt;br /&gt;
&lt;br /&gt;
 TBLEN#x: (16-bit unsigned word, little-endian) Type-Bits and Data Length (L#x)&lt;br /&gt;
 &lt;br /&gt;
 TBLEN#x: TTTTvvvvvvvvvvvv&lt;br /&gt;
          FEDCBA9876543210&lt;br /&gt;
 &lt;br /&gt;
 BIT OFFSET (hex) | LEN (bits) | content&lt;br /&gt;
 -----------------+------------+-----------------------------------------&lt;br /&gt;
  F (MSB)         |          4 |  &amp;quot;T&amp;quot;: type (see bit-value in next table)&lt;br /&gt;
  B               |         12 |  &amp;quot;v&amp;quot;: length of data, in bytes&lt;br /&gt;
 &lt;br /&gt;
  &amp;quot;T&amp;quot; bit-values | meaning                     | FULL-C set/get&lt;br /&gt;
            FEDC |                             | (which function)&lt;br /&gt;
 ----------------+-----------------------------+------------------&lt;br /&gt;
            0000 |  unsigned integer (32-bit)  |  _u&lt;br /&gt;
            0001 |  signed integer (32-bit)    |  _i&lt;br /&gt;
            0010 |  float IEEE-754 (32-bit)    |  _f&lt;br /&gt;
            0100 |  string UTF-8 (L#x * 8-bit) |  _a&lt;br /&gt;
            1000 |  reserved (do not use)      |  &lt;br /&gt;
&lt;br /&gt;
Horní 4 bity z TBLEN#x tedy určují typ položky. Pro získání délky L#x položky 'x', je potřeba hodnotu TBLEN#x odmaskovat - použít jen dolních 12 bitů.&lt;br /&gt;
&lt;br /&gt;
Je vaším úkolem správně zvolit typ (T) pro každou položku, pokud zvolíte špatně, nebude údaj pro daný index zpracován.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Index Value''' - každá položka má svůj číselný index, viz [[FULL-C:_set_and_get|seznam všech FULL-C indexů]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [8] '''Write FC-Get List''' ==&lt;br /&gt;
&lt;br /&gt;
Pokud SDS obdrží zprávu s &amp;quot;master_command == 8&amp;quot;, tak nastaví příslušné FULL-C indexy na nové hodnoty (podle obsahu této přijaté zprávy). &lt;br /&gt;
&lt;br /&gt;
SDS na tuto zprávu odpovídá pouze ve smyslu &amp;quot;úspěch&amp;quot; nebo &amp;quot;neúspěch&amp;quot; - takže pro skutečné ověření hodnot (zda-li se zapsaly správně) musíte proto sami zaslat další zprávu &amp;quot;master_command == 4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 COMMAND TO SDS (master_command == 8, sent to SDS)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------&lt;br /&gt;
  0               |   2 | uword | [#0] index value &lt;br /&gt;
  2               |   2 | uword | [#0] TBLEN#0: type-bits and data length (L#0)&lt;br /&gt;
  4               | L#0 |  data | [#0] new data value to write to SDS&lt;br /&gt;
 &lt;br /&gt;
  (4+(L#0))+0     |   2 | uword | [#1] index value&lt;br /&gt;
  (4+(L#0))+2     |   2 | uword | [#1] TBLEN#1: type-bits and data length (L#1)&lt;br /&gt;
  (4+(L#0))+4     | L#1 |  data | [#1] new data value to write to SDS&lt;br /&gt;
 &lt;br /&gt;
  . . .           | ... | . . . | ...&lt;br /&gt;
 &lt;br /&gt;
  Z+0             |   2 | uword | [#n] index value &lt;br /&gt;
  Z+2             |   2 | uword | [#n] TBLEN#n: type-bits and data length (L#n)&lt;br /&gt;
  Z+4             | L#n |  data | [#n] new data value to write to SDS&lt;br /&gt;
&lt;br /&gt;
Lze vidět, že formát je naprosto shodný jako formát odpovědi kterou SDS posílá pro &amp;quot;master_command == 4&amp;quot; zprávu. Nicméně, v tomto případě, je tento obsah [C-PAYLOAD] zapsán '''do''' SDS, které jej zpracuje a provede - pouze ale pokud je délka L#x přesně odpovídající danému indexu.&lt;br /&gt;
&lt;br /&gt;
Odpověď, kterou na tento příkaz SDS následně posílá, je velmi jednoduchá: [C-PAYLOAD] není vůbec použito (XL=0), a &amp;quot;sub_command&amp;quot; obsahuje následující možnost:&lt;br /&gt;
&lt;br /&gt;
 REPLY FROM SDS (master_command == 8)&lt;br /&gt;
 &lt;br /&gt;
 NOTE: THIS FEATURE (PROPER RESPONSE) IS IMPLEMENTED SINCE FW 15.March.2025 AND ONWARDS&lt;br /&gt;
 (previously no proper response was provided)&lt;br /&gt;
 &lt;br /&gt;
 sub_command | meaning&lt;br /&gt;
 ------------+-----------------------------------------------------------&lt;br /&gt;
           0 |  complete failure (no item modified)&lt;br /&gt;
           1 |  partial failure  (some items modified, some not modified)&lt;br /&gt;
           2 |  success          (all items modified OK)&lt;br /&gt;
 &lt;br /&gt;
Další, detailnější, rozlišení selhání (failure) se neprovádí (tzn. SDS neposílá více detailnější informaci ve své odpovědi, než uvedené tři možnosti).&lt;br /&gt;
&lt;br /&gt;
Pozor, odpověď se týka schopnosti převzít jednotlivé položky ze S-UDP příkazu, a předat je do FULL-C bloku k dalšímu zpracování (zápis do indexů). Pokud je specifický index pouze pro čtení, samozřejmě nedojde k zápisu, ovšem to není bráno jako chyba z hlediska odpovědi na tento paket (jen jednoduše nedojde k zápisu pro daný read-only index). Chybová hodnota (0 nebo 1) je v této celkové odpovědi vrácena pouze pokud je obsahem S-UDP příkazu nesmysl (částečný nebo úplný), např. jde o obsahově prázdný paket (není co zapisovat), nebo se snažíte zapsat nesmyslné velikosti nebo rozsahy hodnot, nebo příliš moc indexů najednou atd. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [16] '''FULL-C Shared Variable(s) Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz se využívá k přístupu ke [[FULL-C:_sharing|sdíleným proměnným]] programu FULL-C.&lt;br /&gt;
&lt;br /&gt;
Proměnné se označují vzorem, kde je na začátku velké písmeno určující typ, a pak dvě decimální číslice určující pořadí - tedy sto možných hodnot. &lt;br /&gt;
&lt;br /&gt;
Mohou existovat tyto sdílené proměnné :&lt;br /&gt;
* S00 až S99 (hodnoty: signed 32-bit)&lt;br /&gt;
* U00 až U99 (hodnoty: unsigned 32-bit)&lt;br /&gt;
* F00 až F99 (hodnoty: float 32-bit)&lt;br /&gt;
* T00 až T99 (hodnoty: array/text)&lt;br /&gt;
&lt;br /&gt;
Rozlišování jednotlivých funkcí je závislé na hodnotě &amp;quot;sub_command&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 QUERY-or-COMMAND TO SDS (master_command == 16, sent to SDS)&lt;br /&gt;
 &lt;br /&gt;
 sub_command | meaning&lt;br /&gt;
 ------------+---------------------------------------------&lt;br /&gt;
           0 | provide list of all active shared variables&lt;br /&gt;
           1 | read from shared variable (single variable)&lt;br /&gt;
           2 | reserved&lt;br /&gt;
           4 | write to shared variable (single variable)&lt;br /&gt;
           8 | reserved&lt;br /&gt;
&lt;br /&gt;
Pro &amp;quot;sub_command == 0&amp;quot; poskytne SDS odpověď, kde je uvedeno zda-li je specifická sdílená proměnná definována v právě aktivním FULL-C programu.&lt;br /&gt;
&lt;br /&gt;
 RESPONSE:  LIST OF SHARED VARIABLES: sub_command = 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
   0              |  13 | bytes | Uxx existence: bit-field&lt;br /&gt;
  13              |  13 | bytes | Sxx existence: bit-field&lt;br /&gt;
  26              |  13 | bytes | Fxx existence: bit-field&lt;br /&gt;
  39              |  13 | bytes | Txx existence: bit-field&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, v odpovědi jsou čtyři samostatné bitové pole, každé o délce 100 bitů (plus nevyužitý zbytek 4 bitů na konci). Každý bit přestavuje existenci jedné ze sdílených proměnných, pokud je nastaven na 1 tak proměnná existuje.&lt;br /&gt;
&lt;br /&gt;
 Xxx existence: bit-field&lt;br /&gt;
 &lt;br /&gt;
 BYTE -&amp;gt; [0] . . . [13]&lt;br /&gt;
 BITS -&amp;gt;  0 . . .   100 (plus 4 at the end, which are not used)&lt;br /&gt;
 &lt;br /&gt;
 BYTE [0] = bit 0, 1, 2, ..., 7&lt;br /&gt;
 BYTE [1] = bit 8, 9, 10, ..., 15&lt;br /&gt;
 ...&lt;br /&gt;
 BYTE [13] = bit 96, 97, 98 ..., 103&lt;br /&gt;
 &lt;br /&gt;
 example: existence of &amp;quot;U11&amp;quot; =&amp;gt; bit 11 =&amp;gt; look at BYTE [1]&lt;br /&gt;
&lt;br /&gt;
Takže pro kteroukoliv sdílenou proměnnou si lze nalézt příslušnou pozici, která ukazuje, zda-li právě daná proměnná existuje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Další,''' &amp;quot;sub_command == 1&amp;quot; umožňuje z konkrétní (jedné) sdílené proměnné číst.&lt;br /&gt;
&lt;br /&gt;
 QUERY TO SDS: READ ONE SHARED VARIABLE: sub_command = 1&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
  0               |   3 | bytes | [#0] name (example: &amp;quot;U25&amp;quot;)&lt;br /&gt;
  1               |   1 |  byte | reserved (0x00)&lt;br /&gt;
&lt;br /&gt;
A ''odpověď'' je:&lt;br /&gt;
&lt;br /&gt;
 REPLY FROM SDS: READ ONE SHARED VARIABLE: sub_command = 1&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
  0               |   3 | bytes | [#0] name (example: &amp;quot;F95&amp;quot;)&lt;br /&gt;
  1               |   1 |  byte | reserved (0x00)&lt;br /&gt;
  4               |   2 | uword | [#0] L#0: data length (L#0)&lt;br /&gt;
  6               |   2 | uword | reserved (0x0000)&lt;br /&gt;
  8               | L#0 |  data | [#0] data value from the shared variable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Dále,''' pro &amp;quot;sub_command == 4&amp;quot; dojde ke změně hodnoty.&lt;br /&gt;
&lt;br /&gt;
 COMMAND TO SDS: WRITE ONE SHARED VARIABLE: sub_command = 4&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
  0               |   3 | bytes | [#0] name (example: &amp;quot;T12&amp;quot;)&lt;br /&gt;
  1               |   1 |  byte | reserved (0x00)&lt;br /&gt;
  4               |   2 | uword | [#0] L#0: data length (L#0)&lt;br /&gt;
  6               |   2 | uword | reserved (0x0000)&lt;br /&gt;
  8               | L#0 |  data | [#0] new data value to write to shared variable&lt;br /&gt;
&lt;br /&gt;
A odpověď je zde shodná jako odpověd pro &amp;quot;sub_command == 1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [32] '''S0 Input Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení kalibračních konstant pro S0 vstupy. Současně jsou předány i aktuální (živé) údaje pro daný S0 vstup.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 32 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 32, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to S0 array [1..MAX] (typical MAX value is 9)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  S0 input number for this reply (for a valid answer: 1..MAX , otherwise: 0x00).&lt;br /&gt;
    1             |   1 |  byte |  total number of S0 inputs for this SDS&lt;br /&gt;
    2             |   1 |  byte |  configuration status (combined flags: bit0 = enabled as S0; bit1 = is tariff used)&lt;br /&gt;
    3             |   1 |  byte |  reserved (0x00)&lt;br /&gt;
    4             |  32 | bytes |  text (name: unit)&lt;br /&gt;
    36            |  32 | bytes |  text (name: money)&lt;br /&gt;
    68            |  32 | bytes |  text (unit: power)&lt;br /&gt;
    100           |  32 | bytes |  text (name: power)&lt;br /&gt;
    132           |  32 | bytes |  text (name: device)&lt;br /&gt;
    168           |   4 | dword |  MTD value&lt;br /&gt;
    172           |   4 | dword |  minimal impulse length (msec)&lt;br /&gt;
    176           |   4 | dword |  impulse constant value (imp. per unit)&lt;br /&gt;
    180           |   4 | bytes |  price for T0&lt;br /&gt;
    184           |   4 | bytes |  price for T1&lt;br /&gt;
    188           |   8 | bytes |  reserved (0x00)&lt;br /&gt;
    196           |   4 | dword |  live value: T0 impulse counter&lt;br /&gt;
    200           |   4 | dword |  live value: T1 impulse counter&lt;br /&gt;
    204           |   4 | dword |  T0 offset&lt;br /&gt;
    208           |   4 | dword |  T1 offset&lt;br /&gt;
    212           |   4 | dword |  live value: measured space between impulses (msec)&lt;br /&gt;
    216           |   4 | dword |  live value: time since last registered impulse (msec)&lt;br /&gt;
    220           |   4 | bytes |  reserved (0x00)&lt;br /&gt;
    224           |   n | bytes |  live value: combined text&lt;br /&gt;
&lt;br /&gt;
Kombinovaný text (combined text) obsahuje vypočtené informace, oddělené znakem '|'. Tyto údaje lze přímo zobrazit uživateli. Výpočet provádí SDS, a stejné hodnoty ukazuje na svém webu. Jedná se zde o doplněk původní funkce GDS (master_command==0).&lt;br /&gt;
&lt;br /&gt;
Délka textu &amp;quot;n&amp;quot; je dynamická, text je zakončen 0x00 (nebo pokud vyjde přesně na maximální délku co se vleze do payloadu, zakončení nemá a je uříznut na posledním znaku, pozor na to).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''(sub_command = 0xFF)''': speciální odpověď pro Tarifní vstup :&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 32, sent from SDS as reply)&lt;br /&gt;
 sub_command == 0xFF (tariff)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  constant 0xFF&lt;br /&gt;
    1             |   3 | bytes |  reserved (0x00)&lt;br /&gt;
    4             |   1 |  byte |  tariff input&lt;br /&gt;
    5             |  32 | bytes |  text (name: tariff)&lt;br /&gt;
    37            |  32 | bytes |  text (name: tariff T0 input)&lt;br /&gt;
    69            |  32 | bytes |  text (name: tariff T1 input)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [33] '''S0 Input History Values''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení historických hodnot počítadel pro vybraný S0 vstup. Každá nová položka se do záznamu historie uloží co 15 minut.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 33 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 33, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to S0 array [1..MAX] (typical MAX value is 9)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  S0 input number for this reply (for a valid answer: 1..MAX , otherwise: 0x00).&lt;br /&gt;
    1             |   1 |  byte |  total number of S0 inputs for this SDS&lt;br /&gt;
    2             |   1 |  byte |  configuration status (combined flags: bit0 = enabled as S0; bit1 = is tariff used)&lt;br /&gt;
    3             |   3 | bytes |  reserved (0x00)&lt;br /&gt;
    6             |   2 |  word |  history depth (number of items) - value &amp;quot;n&amp;quot; (example: five items -&amp;gt; n == 5)&lt;br /&gt;
    8             |   4 | dword |  uptime value for the last element (#n) in the list&lt;br /&gt;
    12            |   4 | dword |  ntptime value for the last element (#n) in the list&lt;br /&gt;
    16            |   4 | dword |  history item #1: value of T0 counter (this is the most oldest item)&lt;br /&gt;
    20            |   4 | dword |  history item #1: value of T1 counter (this is the most oldest item)&lt;br /&gt;
    ...&lt;br /&gt;
    16+(n-1)*8    |   4 | dword |  history item #n: value of T0 counter (this is the most newest item)&lt;br /&gt;
    16+(n-1)*8+4  |   4 | dword |  history item #n: value of T1 counter (this is the most newest item)&lt;br /&gt;
&lt;br /&gt;
Historické údaje počítadel ukazují stav počítadel od současnosti dozadu. Položka #1 je nejstarší, pak #2 je mladší atd. až po položku #n která je nejaktuálnější (nejbližší současné chvíli).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [40] '''AD Input Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení kalibračních konstant pro AD vstupy.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 40 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 40, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to AD array [1..MAX]&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN  | TYPE  | content&lt;br /&gt;
 -----------------+------+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1  |  byte |  actual AD input index for this reply&lt;br /&gt;
    1             |   1  |  byte |  total number of AD inputs&lt;br /&gt;
    2             |   2  | bytes |  reserved (0x00)&lt;br /&gt;
    4             |   4  |   f32 |  F6 calibration constant&lt;br /&gt;
    8             |   4  |   f32 |  F5 calibration constant&lt;br /&gt;
   12             |   4  |   f32 |  F4 calibration constant&lt;br /&gt;
   16             |   4  |   f32 |  F3 calibration constant&lt;br /&gt;
   20             |   4  |   f32 |  F2 calibration constant&lt;br /&gt;
   24             |   4  |   f32 |  F1 calibration constant&lt;br /&gt;
   28             |   4  |   f32 |  F0 calibration constant&lt;br /&gt;
   32             |   1  |  byte |  is calibration factory locked&lt;br /&gt;
   33             |  32  | bytes |  unit&lt;br /&gt;
   65             |   4  | bytes |  reserved (0x00)&lt;br /&gt;
   69             |  32  | bytes |  name&lt;br /&gt;
  101             |   4  | bytes |  reserved (0x00)&lt;br /&gt;
  105             |   4  | dword |  raw value&lt;br /&gt;
  109             |   4  |   f32 |  real value (converted from raw)&lt;br /&gt;
  113             |   n  | bytes |  live value text&lt;br /&gt;
&lt;br /&gt;
Text &amp;quot;live value&amp;quot; obsahuje hodnotu vypočtenou interně v SDS. Text lze prezentovat uživateli (je to stejné jako co SDS ukáže na svém webu). Jedná se o doplňkovou funkci vůči vlastnímu výpočtu ze surových hodnot z GDS (master_command==0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [42] '''PWM Output Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení nastavení pro PWM výstup (konfigurace a živý stav).&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 42 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 42, sent from SDS as reply)&lt;br /&gt;
 sub_command == 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN  | TYPE  | content&lt;br /&gt;
 -----------------+------+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1  |  byte |  reserved (0x00)&lt;br /&gt;
    1             |   1  |  byte |  &amp;quot;N&amp;quot; = total number of PWM outputs&lt;br /&gt;
    2             |   2  | bytes |  reserved (0x00)&lt;br /&gt;
 &lt;br /&gt;
    4+(i*12)+  0  |   4  | dword |  frequency (Hz) for PWMx&lt;br /&gt;
    4+(i*12)+  4  |   4  | dword |  &amp;quot;pulse&amp;quot; value for PWMx&lt;br /&gt;
    4+(i*12)+  8  |   1  |  byte |  &amp;quot;ValueB&amp;quot; value for PWMx&lt;br /&gt;
    4+(i*12)+  9  |   2  | uword |  &amp;quot;ValueS&amp;quot; value for PWMx&lt;br /&gt;
    4+(i*12)+ 11  |   1  |  byte |  output enabled for PWMx&lt;br /&gt;
&lt;br /&gt;
Pozn. PWM1 má hodnotu &amp;quot;i&amp;quot; = 0, PWM2 má hodnotu &amp;quot;i&amp;quot; = 1 atd.&lt;br /&gt;
&lt;br /&gt;
V případě, že je některý z PWMx výstupů nevyužit (&amp;quot;přeskočen&amp;quot;), je přesto v odpovědi uveden, aby bylo zachováno číslovaní pořadí všech PWMx výstupů.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [44] '''RELAYs Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení konfigurace RELAY výstupů (nastavení a živý stav).&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 44 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 44, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to RELAY array [1..MAX]&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN  | TYPE  | content&lt;br /&gt;
 -----------------+------+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1  |  byte |  actual RELAY output index for this reply&lt;br /&gt;
    1             |   1  |  byte |  total number of RELAY outputs&lt;br /&gt;
    2             |   2  | bytes |  reserved (0x00)&lt;br /&gt;
    4             |  32  | bytes |  name&lt;br /&gt;
   36             |   4  | bytes |  reserved (0x00)&lt;br /&gt;
   40             |   1  |  byte |  &amp;quot;relay-controlled-by&amp;quot; value&lt;br /&gt;
   41             |   1  |  byte |  &amp;quot;relay-output&amp;quot; value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [48] '''SD Card Status Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení stavu SD karty.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 48 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 48, sent from SDS as reply)&lt;br /&gt;
 sub_command == 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  card mounted &lt;br /&gt;
    1             |   3 | bytes |  reserved&lt;br /&gt;
    4             |   4 | dword |  card type&lt;br /&gt;
    8             |   4 | dword |  card ProdSN&lt;br /&gt;
   12             |   4 | dword |  card init attempts counter&lt;br /&gt;
   16             |   4 | dword |  card init failures counter&lt;br /&gt;
   20             |   4 | dword |  card total sector count in FAT in KiB&lt;br /&gt;
   24             |   4 | dword |  total sector reads counter&lt;br /&gt;
   28             |   4 | dword |  total sector writes counter&lt;br /&gt;
   32             |   4 | dword |  total sector r/w failures counter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [50] '''Serial Port Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz není pro &amp;quot;version == 0x00&amp;quot; podporován. Potřebujete novější &lt;br /&gt;
firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [64] '''DataFlash (NVM) Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz není pro &amp;quot;version == 0x00&amp;quot; podporován. Potřebujete novější &lt;br /&gt;
firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [128] '''Reserved''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz není v současné verzi použit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (1-PŘ) Master Command (první produktová řada: &amp;quot;TV = 0001....&amp;quot; ) ==&lt;br /&gt;
&lt;br /&gt;
Jednotlivé základní příkazy (''master command'') - zatím nejsou pro &lt;br /&gt;
první produktovou řadu definovány.&lt;br /&gt;
&lt;br /&gt;
Detaily zde budou doplněny.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=M2M:_S-UDP_protocol&amp;diff=941</id>
		<title>M2M: S-UDP protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=M2M:_S-UDP_protocol&amp;diff=941"/>
		<updated>2025-03-15T08:36:40Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje funkci zařízení SDS '''druhé produktové řady''' - protože SDS první produktové řady používají jiný protokol.&lt;br /&gt;
&lt;br /&gt;
== Rychlá komunikace: S-UDP ==&lt;br /&gt;
&lt;br /&gt;
Pomocí speciálního protokolu, kdy se data přenášejí prostřednictvím [http://en.wikipedia.org/wiki/User_Datagram_Protocol UDP], je možné získávat informace z výrobků řady SDS/OnlineTechnology.&lt;br /&gt;
&lt;br /&gt;
 S-UDP používá následující výchozí UDP PORT: 310&lt;br /&gt;
&lt;br /&gt;
Komunikace probíhá formou DOTAZ - ODPOVĚĎ. To znamená, že ten, kdo má o informace zájem (vzdálený uživatel) pošle dotaz (korektně vyplněný UDP paket, viz dále) a obratem obdrží od zařízení odpověď - UDP paket s informacemi. UDP Port na kterém je komunikace prováděna lze samozřejmě v administraci zařízení změnit.&lt;br /&gt;
&lt;br /&gt;
Přenos dat využívá specifického protokolu, který umožňuje bezpečně ovládat specifické zařízení SDS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Typické použití:''' komunikace zařízení SDS s protistranou (např. aplikace na mobilním telefonu).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Informace == &lt;br /&gt;
&lt;br /&gt;
Některé z FULL-C funkcí, které jsou zde popsány, jsou plně implementovány až ve firmware 03/2025 a dále. Je potřeba, aby jste měli svůj modul SDS aktualizován na nový firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bezpečnost ==&lt;br /&gt;
&lt;br /&gt;
Protokol S-UDP je založen na důsledné autentizaci strany, která posílá zprávu - zařízení SDS ověřuje identitu odesílatele příkazu, a ten může ověřit identitu SDS který odpovídá.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Je to založeno na následujícím principu:&lt;br /&gt;
&lt;br /&gt;
- S-UDP protokol je zabezpečen symetrickou šifrou, se sdíleným klíčem který znají jen komunikující strany (bezpečnost je přímo úměrná úrovni zabezpečení tohoto klíče na obou stranách)&lt;br /&gt;
&lt;br /&gt;
- SDS má unikátní identifikátor (zaručeně unikátní, od výrobce) který nelze změnit (je fyzicky vypálen v SoC - nezměnitelně přímo v silikonu chipu).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== S-UDP protokol ==&lt;br /&gt;
&lt;br /&gt;
Každý příkaz a odpověď jsou v samostatném, jediném, UDP paketu.&lt;br /&gt;
&lt;br /&gt;
Každý paket je sestaven v rámci společného formátu, který je zde popsán. Samotný doplňující datový obsah (payload) je dynamický, a u některých příkazů není potřeba.&lt;br /&gt;
&lt;br /&gt;
S-UDP Paket se tedy skládá z těchto základní částí (tyto části jsou právě přenášeny UDP paketem, v následující sestavě):&lt;br /&gt;
&lt;br /&gt;
  [MASTER PACKET CONTENTS]&lt;br /&gt;
 &lt;br /&gt;
   OFFSET    | LEN    |  DATA&lt;br /&gt;
   ----------+--------+---------------------------------------------------------------&lt;br /&gt;
     0       |     28 |  HEADER&lt;br /&gt;
    28       |  PL*16 |  ENCRYPTED PAYLOAD (contains: payload-header and payload-data)&lt;br /&gt;
&lt;br /&gt;
'''Pozor!''' Hodnota PL je velikost [ENCRYPTED PAYLOAD] vydělená 16. To znamená, že velikost [ENCRYPTED PAYLOAD] musí být beze zbytku dělitelná 16 (tzn. pouze hodnota 16, 32, 64, ...) ! Pokud je potřeba, doplní se na úplný konec (viz oblast &amp;quot;R&amp;quot;) zarovnání do potřebné délky, aby se dosáhlo čisté dělitelnosti 16.&lt;br /&gt;
&lt;br /&gt;
 LITTLE-ENDIAN&lt;br /&gt;
&lt;br /&gt;
Následující uvedené položky jsou ve formátu [http://en.wikipedia.org/wiki/Endianness#Little-endian Little-Endian] (procesory: ARM, x86):&lt;br /&gt;
* ''uword'' (unsigned 16-bit)&lt;br /&gt;
* ''dword'' (unsigned 32-bit)&lt;br /&gt;
* ''slong'' (signed   32-bit)&lt;br /&gt;
* ''qword'' (unsigned 64-bit)&lt;br /&gt;
&lt;br /&gt;
Položky typu: ''byte'', ''sbyte'', ''bytes'' - jsou jednotlivé samostatné bajty, nesdružené do společného čísla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zde jsou uvedeny detailní položky:&lt;br /&gt;
 &lt;br /&gt;
  [MASTER PACKET CONTENTS]&lt;br /&gt;
 &lt;br /&gt;
   OFFSET   | LEN  |  TYPE  | DATA&lt;br /&gt;
   ---------+------+--------+-----------------------------&lt;br /&gt;
 &lt;br /&gt;
                              [HEADER]&lt;br /&gt;
 &lt;br /&gt;
    0       |   3  |  bytes | header &amp;quot;SDS&amp;quot;&lt;br /&gt;
    3       |   1  |   byte | TV = (SDS-product-line) including (S-UDP protocol master-version)&lt;br /&gt;
    4       |   1  |   byte | PL = number of 16B chunks - this is the payload_length of [ENCRYPTED PAYLOAD] (example: PL==10 =&amp;gt; 160 bytes)&lt;br /&gt;
    5       |   1  |   byte | encryption-flag  (NOW ACCEPTS ONLY: 0x10 == XTEA-64-CTR)&lt;br /&gt;
    6       |   1  |   byte | reserved&lt;br /&gt;
    7       |   1  |   byte | CK1: basic additive checksum for [ENCRYPTED PAYLOAD] (start from (including) byte offset [28] and forward)&lt;br /&gt;
    8       |   4  |  dword | user_identifier (correlation identifier) - use this to correlate query to response&lt;br /&gt;
   12       |  16  |  bytes | CounterBlock&lt;br /&gt;
  ----------+------+--------+----------------------------&lt;br /&gt;
 &lt;br /&gt;
                              [ENCRYPTED PAYLOAD] -&amp;gt; everything from this point is included:&lt;br /&gt;
 &lt;br /&gt;
   28       |   1  |   byte | random number (shall be always different than what was used ever before)&lt;br /&gt;
   29       |   1  |   byte | CK2: basic additive checksum for [HEADER] (all bytes [0] to [27] included, BUT: skipping byte [7])&lt;br /&gt;
   30       |   2  |  uword | XR_MTU value (maximal size of the custom-payload data including R) ( XL + R &amp;lt;= XR_MTU )&lt;br /&gt;
   32       |   4  |  dword | CRC-32 (part-header and plain-text payload) -&amp;gt; byte [36] (included) up to [52+XL-1] (the R area is not included here)&lt;br /&gt;
   36       |   4  |  dword | uptime (msecs from boot)&lt;br /&gt;
   40       |   4  |  dword | time (epoch) (or, if no NTP is available to SDS, this will be a value of &amp;quot;seconds from boot&amp;quot;)&lt;br /&gt;
   44       |   4  |  dword | SDS device type (0xXXXXXXXX) - THIS MUST MATCH&lt;br /&gt;
   48       |   1  |   byte | master_command&lt;br /&gt;
   49       |   1  |   byte | sub_command&lt;br /&gt;
   50       |   2  |  uword | XL value (exact length of the actually useful payload-data): XL = (PL*16) - R - 24&lt;br /&gt;
 &lt;br /&gt;
   52       |  XL  |  bytes | custom payload-data [C-PAYLOAD]&lt;br /&gt;
 &lt;br /&gt;
   52+XL    |   R  |  bytes | specific set of (random data filling) to round-up (the PL*16 value) to a clean 16B multiply (16, 32, 64, etc.)&lt;br /&gt;
 &lt;br /&gt;
  ----------+------+--------+----------------------------&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;SDS device type&amp;quot; je určena podle typu SDS, se kterým komunikujete. Seznam hodnot viz [[Firmware]], například 0xB1900001 pro BIG-64 nebo 0xB1900002 pro BIG-128 atd.Pokud tato hodnota neodpovídá typu firmware v daném SDS, bude paket zcela ignorován a neproveden. Jediná vyjímka je master_command == NOP, což je záměrná vyjímka, která umožní zjištění typu SDS (a přítomnosti SDS) při zahájení komunikace.&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;random number&amp;quot; je zde proto, aby šifrované data byly pokaždé jiné, i když se přenáší stejný obsah (tzn. jedná se o zábranu stenografického odhadu obsahu payloadu).&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;time&amp;quot; umožňuje zařízení, které komunikuje s SDS, zabránit &amp;quot;replay&amp;quot; útoku (když se zaznamená paket a později se zopakuje - v takovém případě se na to přijde protože &amp;quot;time&amp;quot; bude významně starší). SDS kontrolu provádí vůči svému vnitřnímu času, vzdálené zařízení co se SDS komunikuje by tuto kontrolu mělo dělat také.&lt;br /&gt;
&lt;br /&gt;
Protože hodnota &amp;quot;time&amp;quot; se zvyšuje pouze co 1 vteřinu, je k dispozici i hodnota &amp;quot;uptime&amp;quot; která se po resetu/bootu (kde se nastaví na nulu) zvyšuje každou 1 milisekundu o jedničku. Kombinace umožňuje vhodně sestavit algoritmus detekce &amp;quot;replay&amp;quot; útoků.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;CounterBlock&amp;quot; se využívá pro nastavení začátku šifrování a dešifrování. Všechny detaily jsou zcela shodné jako pro [[FULL-C_crypto_functions|FULL-C funkci SDS_Crypt()]]. Z hlediska bezpečnosti je důležité, aby obě strany neustále používaly zvyšující se CounterBlock obsah (začít &amp;quot;od jedničky&amp;quot; pouze a jenom po resetu/bootu), tzn. pro každou zprávu použít poslední hodnotu counteru a na té dále stavět pro novou zprávu atd. .&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;crc32&amp;quot; se počítá pro dešifrované data, algoritmus je identický jako pro [[FULL-C_crypto_functions|FULL-C funkci SDS_Crypt()]].&lt;br /&gt;
&lt;br /&gt;
Pro zvolené XTEA-64-CTR má &amp;quot;CounterBlock&amp;quot; následující sestavu svého obsahu:&lt;br /&gt;
&lt;br /&gt;
   CounterBlock:&lt;br /&gt;
 &lt;br /&gt;
   OFFSET    | LEN  |  TYPE  |  DATA&lt;br /&gt;
   ----------+------+--------+-----------------------------------------------------------------------------------------&lt;br /&gt;
    0        |   8  |  qword |  XTEA-64-CTR: 64-bit counter (counter is increased by 1, for each 16B of processed data)&lt;br /&gt;
    8        |   8  |  bytes |  (reserved) not-used area = reserved (fill with 0x00) &lt;br /&gt;
&lt;br /&gt;
Pro jiné mechanismy (do budoucna) je v CounterBlock oblasti přidána ještě 8B rezerva (např. pro AES-128 se pak využije všech 16 bajtů).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;TV&amp;quot; (v [HEADER] na offsetu [3]) je určení typu a verze protokolu. Skládá se ze dvou čtyřbitových údajů, viz následující tabulka.&lt;br /&gt;
&lt;br /&gt;
 TV: ttttVVVV&lt;br /&gt;
     76543210&lt;br /&gt;
 &lt;br /&gt;
 BIT OFFSET | LEN (bits) | content&lt;br /&gt;
 -----------+------------+--------------------------------------------------&lt;br /&gt;
  7 (MSB)   |          4 |  &amp;quot;t&amp;quot;: produc-line value: 1 == first, 2 == second&lt;br /&gt;
  3         |          4 |  &amp;quot;V&amp;quot;: version: 0 = first S-UDP protocol version&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V konečném důsledku, skutečnou funkční důležitost ma '''[C-PAYLOAD]''', což je blok dat, který obsahuje hodnoty a příkazy, které pomocí S-UDP chceme přenést.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Postup při příjmu S-UDP paketu ==&lt;br /&gt;
&lt;br /&gt;
Každá strana, která přijme S-UDP paket, provede následující kroky:&lt;br /&gt;
&lt;br /&gt;
 1) Ověřit platnost hodnot v [HEADER]&lt;br /&gt;
    a. text &amp;quot;SDS&amp;quot; (platný obsah)&lt;br /&gt;
    b. hodnota &amp;quot;TV&amp;quot; (&amp;quot;master-version&amp;quot; a &amp;quot;product-line&amp;quot;) (platný obsah)&lt;br /&gt;
    c. hodnota &amp;quot;PL&amp;quot; v platných mezích&lt;br /&gt;
    d. hodnota &amp;quot;encryption_flag&amp;quot; (platný obsah)&lt;br /&gt;
 2) Ověřit základní additive-checksum pro [ENCRYPTED PAYLOAD]&lt;br /&gt;
    a. přečíst bajty [28] až [28+PL-1] a sečíst je (overflow osm bitů), výsledek musí odpovídat &amp;quot;CK1&amp;quot; hodnotě&lt;br /&gt;
 3) Nastavit dešifrování&lt;br /&gt;
    a. zvolit algoritmus podle &amp;quot;encryption-flag&amp;quot; hodnoty&lt;br /&gt;
    b. nastavit klíč (stejný jako na protistraně, samozřejmě není přenášen přes síť)&lt;br /&gt;
    c. nastavit &amp;quot;CounterBlock&amp;quot; (přečíst z [HEADER])&lt;br /&gt;
 4) Dešifrovat celou [ENCRYPTED PAYLOAD] na plain-text&lt;br /&gt;
    a. hodnota &amp;quot;PL&amp;quot; musí být dělitelná 16 beze zbytku (tato podmínka závisí na použitém šifrovaní)&lt;br /&gt;
 5) Ověřit základní additive-checksum pro [HEADER] - teď totiž už máme hodnotu &amp;quot;CK2&amp;quot;&lt;br /&gt;
    a. přečíst bajty [0] až [27] (ovšem přeskočit byte [7] - pozor!) a sečíst je (overflow osm bitů), výsledek musí odpovídat &amp;quot;CK2&amp;quot; hodnotě&lt;br /&gt;
 6) Ověřit další hodnoty&lt;br /&gt;
    a. &amp;quot;SDS-DEVICE-TYPE&amp;quot; musí odpovídat (záruka ovládání toho správného typu SDS) - pokud hodnotu nevíte, můžete si &amp;quot;pomoci&amp;quot; NOP příkazem&lt;br /&gt;
    b. uschovat hodnotu &amp;quot;XR_MTU&amp;quot; pro vytváření odpovědi (&amp;quot;XR_MTU&amp;quot; omezuje velikost odpovědi, kterou můžeme zpátky odeslat)&lt;br /&gt;
    c. ověřit časové údaje (&amp;quot;time&amp;quot; a &amp;quot;uptime&amp;quot;)&lt;br /&gt;
    d. ověřit &amp;quot;XL&amp;quot; vůči &amp;quot;PL&amp;quot;&lt;br /&gt;
 7) Ověřit CRC-32 dešifrovaného payloadu&lt;br /&gt;
    a. spočítat CRC-32 správným algoritmem, vučí bajtům (plain-text) z [36] až [52+XL-1] včetně&lt;br /&gt;
 &lt;br /&gt;
 8) Hotovo: teď se provede aktuální příkaz (Master Command, dle tabulky podle produktové řady viz &amp;quot;TV&amp;quot;)&lt;br /&gt;
            a odešle odpověď (ponechat user_identifier pro korelaci) (pozor na &amp;quot;XR_MTU&amp;quot; omezení)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Postup při odesílání S-UDP paketu ==&lt;br /&gt;
&lt;br /&gt;
Odesílatel zprávy provádí tyto kroky:&lt;br /&gt;
&lt;br /&gt;
 1) Je sestaven přesný obsah [C-PAYLOAD] a určena odpovídající hodnota XL&lt;br /&gt;
    a. obsah samozřejmě odpovídá tomu co chcete odeslat&lt;br /&gt;
    b. určí se i &amp;quot;master-command&amp;quot; a &amp;quot;sub-command&amp;quot; (pozor na produktovou řadu SDS - viz &amp;quot;TV&amp;quot;)&lt;br /&gt;
 2) Vyplní se [HEADER]&lt;br /&gt;
    a. hlavička &amp;quot;SDS&amp;quot;, &amp;quot;encryption-flag&amp;quot;&lt;br /&gt;
    b. zapsat správnou hodnotu &amp;quot;TV&amp;quot; podle protokolu a konkrétního SDS (&amp;quot;master-version&amp;quot;, &amp;quot;product-line&amp;quot;)&lt;br /&gt;
    c. určí se nová unikátní hodnota &amp;quot;user_identifier&amp;quot;, a zapíše se do [HEADER]&lt;br /&gt;
    d. zapíše se &amp;quot;CounterBlock&amp;quot; (hodnota pokračuje po předchozím paketu)&lt;br /&gt;
 3) Nachystá se zaokrouhlovací oblast &amp;quot;R&amp;quot; &lt;br /&gt;
    a. Pokud XL není beze zbytku dělitelná 16, musí se doplnit oblastí &amp;quot;R&amp;quot;&lt;br /&gt;
 4) Spočítá se hodnota &amp;quot;PL&amp;quot;&lt;br /&gt;
    a. PL = (XL + R)/16&lt;br /&gt;
    b. zapsat do [HEADER]&lt;br /&gt;
 5) Začne se vyplňovat [ENCRYPTED PAYLOAD]&lt;br /&gt;
    a. zapsat náhodný byte do &amp;quot;random number&amp;quot;&lt;br /&gt;
    b. spočítá se hodnota &amp;quot;CK2&amp;quot; (sečíst bajty [0] až [27] - ovšem přeskočit byte [7] - pozor!) &lt;br /&gt;
    c. zapsat hodnotu &amp;quot;XR_MTU&amp;quot; podle možností zařízení (tzn. jak velkou odpověď lze bezpečně přijmout, podle omezení sítě)&lt;br /&gt;
    d. zapíší se hodnoty &amp;quot;uptime&amp;quot; a &amp;quot;time&amp;quot;, zapsat hodnotu &amp;quot;SDS-DEVICE-TYPE&amp;quot;&lt;br /&gt;
    e. zapsat &amp;quot;master-command&amp;quot; a &amp;quot;sub-command&amp;quot;&lt;br /&gt;
 6) Spočítá se CRC-32 (před šifrováním)&lt;br /&gt;
    a. spočítat crc32 pro bajty (plain-text) z offsetu [36] až [52+XL-1] včetně&lt;br /&gt;
 7) Nastavit šifrování&lt;br /&gt;
    a. zvolit algoritmus (musí odpovídat tomu, co se zapsalo do &amp;quot;encryption-flag&amp;quot;)&lt;br /&gt;
    b. nastavit klíč (stejný jako na protistraně, samozřejmě není přenášen přes síť)&lt;br /&gt;
    c. nastavit &amp;quot;CounterBlock&amp;quot; (stejný jako byl zapsán [HEADER])&lt;br /&gt;
 8) Šifrovat celou [ENCRYPTED PAYLOAD] na plain-text&lt;br /&gt;
    a. hodnota &amp;quot;PL&amp;quot; musí být dělitelná 16 beze zbytku (tato podmínka závisí na použitém šifrovaní)&lt;br /&gt;
    b. aktualizovaná hodnota &amp;quot;CounterBlock&amp;quot; (zvýšená o průběh šifrování) se uschová pro další použití - viz bod &amp;quot; 2) c. &amp;quot;&lt;br /&gt;
 9) Spočítat základní additive-checksum pro [ENCRYPTED PAYLOAD]&lt;br /&gt;
    a. přečíst bajty [28] až [28+PL-1] a sečíst je (overflow osm bitů), výsledek se zapíše do &amp;quot;CK1&amp;quot; hodnoty&lt;br /&gt;
 &lt;br /&gt;
 10) Hotovo: paket se následně odešle přes síť do protistrany, která odpoví novým paketem - ten je vztažen k tomuto dotazu pomocí &amp;quot;user_identifier&amp;quot; hodnoty.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vzorové obsahy paketů ==&lt;br /&gt;
&lt;br /&gt;
Na stránce [[M2M: S-UDP protocol: examples]] naleznete ukázkové vzorové pakety a jejich vnitřní obsah, i se zobrazeních jednotlivých položek v paketu (před a po šifrování).&lt;br /&gt;
Toto je vhodné pro vývojáře komunikační protistrany, kterým nestačí popis postupu na této stránce, ale chtějí také vidět jednotlivé kroky s aktuálními hodnotami.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Seznam hlavních příkazů ==&lt;br /&gt;
&lt;br /&gt;
Obě produktové řady SDS, které jsou na trhu, mají svou sadu &amp;quot;master_command&amp;quot; příkazů. Proto je potřeba nejprve zjistit, do které produktové řady vaše SDS spadá, a podle toho dále pokračovat. Lze to přímo odvodit od typu SDS (&amp;quot;SDS-DEVICE-TYPE&amp;quot; hodnota), nebo se zeptat příkazem NOP.&lt;br /&gt;
&lt;br /&gt;
Zařazení SDS do produktových řad je v [[Seznam_Všech_SDS|tomto seznamu]].&lt;br /&gt;
&lt;br /&gt;
* První produktová řada: &amp;quot;TV = 0001....&amp;quot;  -&amp;gt; '''(1PŘ)'''&lt;br /&gt;
* Druhá produktová řada: &amp;quot;TV = 0010....&amp;quot;  -&amp;gt; '''(2PŘ)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2PŘ) Master Command (druhá produktová řada: &amp;quot;TV = 0010....&amp;quot; ) ==&lt;br /&gt;
&lt;br /&gt;
Jednotlivé základní příkazy (''master command''):&lt;br /&gt;
 &lt;br /&gt;
  MASTER COMMAND  |  command&lt;br /&gt;
  ----------------+-------------------------------------&lt;br /&gt;
     0            |   NOP (replies with NOP)&lt;br /&gt;
     1            |   general device status&lt;br /&gt;
     2            |   1-Wire access&lt;br /&gt;
     4            |   read FC-Get list&lt;br /&gt;
     8            |   write FC-Set list&lt;br /&gt;
    16            |   FULL-C shared variable(s) access&lt;br /&gt;
    32            |   serial port access&lt;br /&gt;
    64            |   DataFlash access&lt;br /&gt;
   128            |   reserved&lt;br /&gt;
 &lt;br /&gt;
Jak lze vidět, jednotlivé ''master command'' příkazy jsou dále rozlišeny pomocí hodnoty ''sub command''.&lt;br /&gt;
&lt;br /&gt;
Každý příkaz má doplňující datovou sadu, tzn. [C-PAYLOAD]. V rámci těchto dat jsou uvedeny všechny hodnoty, které přesně určují co se má stát (popř. jsou zde všechny odpovědi na dotaz).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [0] '''NOP''' ==&lt;br /&gt;
&lt;br /&gt;
SDS odpoví na tento příkaz odesláním [0] NOP.&lt;br /&gt;
&lt;br /&gt;
Tohoto příkazu lze využít k ověření komunikace a k vzájemné základní synchronizace.&lt;br /&gt;
&lt;br /&gt;
Specifická vlastnost příkazu NOP, oproti všem ostatním příkazům, je to, že SDS odpoví i v případě, že v dotazu není správně uvedený SDS Device Type. Toto je záměr, aby bylo možné při začátku komunikace s SDS modulem, tento modul identifikovat. Samozřejmě všechny ostatní bezpečnostní prvky jsou stále aplikovány, jen tento detail je zde upraven.&lt;br /&gt;
&lt;br /&gt;
Tento příkaz je také velmi užitečný pro získání hodnoty &amp;quot;TV&amp;quot; z [HEADER], tím pádem pro určení číslo produktové řady SDS - a tím pádem k určení které &amp;quot;master_command&amp;quot; příkazy jsou k dispozici !&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 0, sent from SDS as reply)&lt;br /&gt;
 sub_command = 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN   | TYPE  | content&lt;br /&gt;
 -----------------+-------+-------+------------------------------------------------------&lt;br /&gt;
    0             |     6 | bytes |  MAC ADDRESS (bytes, not text)&lt;br /&gt;
    6             |     4 | bytes |  SDS Device Type&lt;br /&gt;
   10             |     4 | dword |  FW version &lt;br /&gt;
   14             |    32 | bytes |  sysLocation (missing the 0x00 terminator)&lt;br /&gt;
   46             |     8 | bytes |  reserved (0x00)&lt;br /&gt;
   54             |    32 | bytes |  OEM string (missing the 0x00 terminator)&lt;br /&gt;
   86             |     8 | bytes |  reserved (0x00)&lt;br /&gt;
   94             |     1 |  byte |  bylo aktivováno RSTD&lt;br /&gt;
   95             |     1 |  byte |  bylo aktivováno PVD&lt;br /&gt;
   96             |     1 |  byte |  SDS je: BIG (hodnota 1) nebo STSW (hodnota 0)&lt;br /&gt;
   97             |     8 | bytes |  reserved (0x00)&lt;br /&gt;
  105             |     2 | uword |  web interface TCP port number (typicky 80)&lt;br /&gt;
  107             |     1 |  byte |  SNMP-read enabled&lt;br /&gt;
  108             |     1 |  byte |  SNMP-write enabled&lt;br /&gt;
  109             |     1 |  byte |  FULLC shared vars access lock (0 = unlocked) tzn. sys[150]&lt;br /&gt;
  110             |     1 |  byte |  FULLC program run status&lt;br /&gt;
  111             |     1 |  byte |  FULLC program started-by info&lt;br /&gt;
  112             |     1 |  byte |  FULLC program watchdog active&lt;br /&gt;
  113             |     6 | bytes |  reserved&lt;br /&gt;
  119             |     4 |   f32 |  backup battery voltage (milliVolts)&lt;br /&gt;
&lt;br /&gt;
Pozn. rozšířená funkcionalita příkazu NOP (tedy vracení payloadu) bylo přidáno až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [1] '''General Device Status''' ==&lt;br /&gt;
&lt;br /&gt;
SDS odpoví zasláním vybraných údajů, jejichž seznam je přesně daný. Tato funkce je k dispozici pro umožnění rychlého přístupu k základnímu stavu zařízení SDS, bez složité přípravy.&lt;br /&gt;
&lt;br /&gt;
Základní odpověď s nejzajímavějšími živými údaji. Určeno např. pro průběžnou aktualizaci stavu zobrazeného uživateli.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 1, sent from SDS as reply)&lt;br /&gt;
 sub_command = 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN   | TYPE  | content&lt;br /&gt;
 -----------------+-------+-------+------------------------------------------------------&lt;br /&gt;
    0             |     6 | bytes |  MAC ADDRESS (bytes, not text)&lt;br /&gt;
    6             |     1 |  byte |  Ethernet Link Status / Speed (0, 10, 100)&lt;br /&gt;
    7             |     1 |  byte |  Amount of users logged into SDS Web Admin&lt;br /&gt;
    8             |    32 | bytes |  sysLocation (missing the 0x00 terminator)&lt;br /&gt;
   40             |     1 |  byte |  IP Watchdog Config status&lt;br /&gt;
   41             |     1 |  byte |  IP Watchdog Output (relay) status&lt;br /&gt;
   42             |     2 | uword |  IP Watchdog RTT value (note.: 0xFFFF = not available)&lt;br /&gt;
   44             |     1 |  byte |  DHCP status&lt;br /&gt;
   45             |     1 |  byte |  reserved&lt;br /&gt;
   46             |     1 |  byte |  NTP status&lt;br /&gt;
   47             |     1 | sbyte |  NTP offset (+/- hours) (signed char)&lt;br /&gt;
   48             |     2 | uword |  SoC chip temperature (degC)&lt;br /&gt;
   50             |     1 |  byte |  GPIO-TOPB PIN(s) direction (0 == input)&lt;br /&gt;
   51             |     1 |  byte |  GPIO-TOPB PIN(s) pin value&lt;br /&gt;
   52             |  32*1 |  byte |  OPTO [1]..[32] status (0xFF == signal) (0x00 == nosignal)&lt;br /&gt;
   84             |  32*1 |  byte |  RELAY [1]..[32] status (active/nonactive)&lt;br /&gt;
  116             |  32*2 | uword |  ADC [0]..[31] RAW value&lt;br /&gt;
  180             |     1 |  byte |  General 1-W BUS status&lt;br /&gt;
  181             |     1 |  byte |  1-W BUS A - active device count&lt;br /&gt;
  182             |     1 |  byte |  1-W BUS B - active device count&lt;br /&gt;
  183             |     3 | bytes |  reserved (0x00)&lt;br /&gt;
  186             |     1 |  byte |  S0 Tariff Value (active/nonactive)&lt;br /&gt;
  187             |     1 |  byte |  number of the following S0 INPUT DB data blocks:&lt;br /&gt;
  188             | 31*28 |  data |  S0 INPUT [1]..[ (max) 31] DB (data block)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 S0-INPUT DB offset | LEN | TYPE  | content&lt;br /&gt;
 -------------------+-----+-------+-------------------------------------------------------&lt;br /&gt;
    0               |   1 |  byte |  configuration status (combined flags: bit0 = enabled as S0; bit1 = is tariff used)&lt;br /&gt;
    1               |   3 | bytes |  reserved (filled with 0x00)&lt;br /&gt;
    4               |   4 | dword |  T0 impulse counter&lt;br /&gt;
    8               |   4 | dword |  T1 impulse counter&lt;br /&gt;
    12              |   4 | dword |  T0 offset&lt;br /&gt;
    16              |   4 | dword |  T1 offset&lt;br /&gt;
    20              |   4 | dword |  measured space between impulses (msec)&lt;br /&gt;
    24              |   4 | dword |  time since last registered impulse (msec)&lt;br /&gt;
&lt;br /&gt;
Sestava [C-PAYLOAD] je tedy zřejmá. &lt;br /&gt;
&lt;br /&gt;
Poslední blok (offset [188] až [1083] včetně) je určen pro přenos 32 S0 vstupů - často je jich ale v zařízení SDS fyzicky přítomno mnohem méně, např. jen devět - a potom zařízení SDS ve své odpovědi pošle jen devět záznamů (namísto 32) (toto se týká pouze a jenom S0 položek, né jiných v rámci paketu). To je provedeno z praktického důvodu: aby byl UDP paket dostatečně malý (a tedy rychlý na zpracování).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [2] '''1-Wire Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tato funkce se používá pro čtení stavu hodnot získaných z obou 1-W sběrnic, kterými SDS disponuje (některé SDS mají jen jednu sběrnici). Maximální počet prvků (chipů) na sběrnici je 64, celkem je tedy k dispozici 2x64 = 128 prvků.&lt;br /&gt;
&lt;br /&gt;
 QUERY/COMMAND TO SDS (master_command == 2)&lt;br /&gt;
 &lt;br /&gt;
 sub_command | meaning&lt;br /&gt;
 ------------+-----------------------------------------------------------&lt;br /&gt;
           0 |  reserved&lt;br /&gt;
           1 |  obtain status, and list of found items on BUS A&lt;br /&gt;
           2 |  obtain status, and list of found items on BUS B&lt;br /&gt;
           4 |  list all read-values on BUS A&lt;br /&gt;
           8 |  list all read-values on BUS B&lt;br /&gt;
&lt;br /&gt;
První možností tedy je sub_command == 1 , tzn. výpis nalezených zařízení na sběrnici A respektive B:&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 1, sent from SDS as reply)&lt;br /&gt;
 sub_command = 1 or 2&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  global 1-W controller status (SDS status)&lt;br /&gt;
    1             |   1 |  byte |  number of active items on BUS A&lt;br /&gt;
    2             |   1 |  byte |  number of active items on BUS B&lt;br /&gt;
    3             |   1 |  byte |  reserved (0x00)&lt;br /&gt;
    4             |  12 |  data |  1-W item status #0&lt;br /&gt;
    . . .         | ... |   ... |  . . .&lt;br /&gt;
    4+12*63       |  12 |  data |  1-W item status #63&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;1-W item status&amp;quot; ofs | LEN | TYPE  | content&lt;br /&gt;
 ----------------------+-----+-------+-------------------------------------------------------&lt;br /&gt;
    0                  |   1 |  byte |  ctrl: main-status&lt;br /&gt;
    1                  |   1 |  byte |  ctrl: sub-status &lt;br /&gt;
    2                  |   2 | bytes |  reserved (filled with 0x00)&lt;br /&gt;
    4                  |   8 | bytes |  ROM-CODE [0]..[7]&lt;br /&gt;
&lt;br /&gt;
Následuje: výpis získaných hodnot (např. změřené teploty z teplotních čidel) pro jednotlivé sběrnice :&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 1, sent from SDS as reply)&lt;br /&gt;
 sub_command = 4 or 8&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  global 1-W controller status (SDS status)&lt;br /&gt;
    1             |   1 |  byte |  number of active items on BUS A&lt;br /&gt;
    2             |   1 |  byte |  number of active items on BUS B&lt;br /&gt;
    3             |   1 |  byte |  reserved (0x00)&lt;br /&gt;
    4             |  12 |  data |  1-W item value #0&lt;br /&gt;
    . . .         | ... |   ... |  . . .&lt;br /&gt;
    4+12*63       |  12 |  data |  1-W item value #63&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;1-W item value&amp;quot; ofs  | LEN | TYPE  | content&lt;br /&gt;
 ----------------------+-----+-------+-------------------------------------------------------&lt;br /&gt;
    0                  |   1 |  byte |  ctrl: main-status&lt;br /&gt;
    1                  |   1 |  byte |  ctrl: sub-status&lt;br /&gt;
    2                  |   1 |  byte |  value of ROM-CODE offset [0] (1-W DEVICE TYPE: ID)&lt;br /&gt;
    3                  |   1 |  byte |  value of ROM-CODE offset [7] (1-W DEVICE TYPE: CRC)&lt;br /&gt;
    4                  |   4 | slong |  1-W read: primary value&lt;br /&gt;
    8                  |   4 | slong |  1-W read: secondary value&lt;br /&gt;
&lt;br /&gt;
Každý chip na sběrnici 1-Wire má vždy primární a sekundární hodnotu, kterou SDS pro daný chip udržuje (ne vždy jsou však, v závislosti na konkrétním chipu, obě hodnoty použity). Aktuální význam je potřeba určit podle chipu (příklad: DS18B20 má &amp;quot;primary value&amp;quot; zpracovanou teplotu v degC, a &amp;quot;secondary value&amp;quot; přímou surovou 16-bit hodnotu přečtenou z čidla).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [4] '''Read FC-Get List''' ==&lt;br /&gt;
&lt;br /&gt;
Dotaz (query) který obsahuje seznam indexů jejichž hodnoty jsou tazatelem požadovány, se posílá do SDS, které následně odpoví (reply).&lt;br /&gt;
&lt;br /&gt;
Dotaz i odpověď má dynamický obsah, který je specificky strukturován.&lt;br /&gt;
&lt;br /&gt;
 QUERY (master_command == 4, sent to SDS)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------&lt;br /&gt;
  0               |   2 | uword | [#0] index value &lt;br /&gt;
  2               |   2 | uword | [#0] TBLEN#0: type-bits and data length (L#0)&lt;br /&gt;
  4               | L#0 |  data | [#0] space prepared for answer from SDS&lt;br /&gt;
 &lt;br /&gt;
  (4+(L#0))+0     |   2 | uword | [#1] index value&lt;br /&gt;
  (4+(L#0))+2     |   2 | uword | [#1] TBLEN#1: type-bits and data length (L#1)&lt;br /&gt;
  (4+(L#0))+4     | L#1 |  data | [#1] space prepared for answer from SDS&lt;br /&gt;
 &lt;br /&gt;
  . . .           | ... | . . . | ...&lt;br /&gt;
 &lt;br /&gt;
  Z+0             |   2 | uword | [#n] index value &lt;br /&gt;
  Z+2             |   2 | uword | [#n] TBLEN#n: type-bits and data length (L#n)&lt;br /&gt;
  Z+4             | L#n |  data | [#n] space prepared for answer from SDS&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, v dotazu (query) jsou za sebou naskládány položky (indexy), na které následně SDS odpoví. Vždy musíte u každého indexu, na který se ptáte, uvést typ odpovědi (viz dále) a prostor, kam bude odpověď zapsána - to znamená, musíte znát přesnou délku, kterou má obsah pro daný index !&lt;br /&gt;
&lt;br /&gt;
Pozor na množství dotazů v rámci jednoho paketu, protože velikost dotazu, a také velikost odpovědi, je omezena XR_MTU. Jakmile SDS při skládání odpovědi narazení na XR_MTU protistrany, už více odpovědí do paketu nepřidá (aby nebylo XR_MTU překročeno).&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 4, sent from SDS as reply to query)&lt;br /&gt;
 &lt;br /&gt;
 SDS writes the values into the &amp;quot;[#n] space prepared for answer from SDS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Odpověď tedy přesně sleduje (vyplňuje) původní dotaz, přičemž [C-PAYLOAD] teď obdrží skutečný datový obsah pro jednotlivé položky. Pokud poskytnete SDS menší prostor pro odpověď, než je potřeba, bude odpověď vyplněna 0x00.&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;sub_command&amp;quot; je nastavena SDS na počet položek (#n) v odpovědi. Toto omezuje maximální počet položek v jednom paketu na 255.&lt;br /&gt;
&lt;br /&gt;
Následující popis ukazuje kódování typu proměnné a její délky, ve společném slově:&lt;br /&gt;
&lt;br /&gt;
 TBLEN#x: (16-bit unsigned word, little-endian) Type-Bits and Data Length (L#x)&lt;br /&gt;
 &lt;br /&gt;
 TBLEN#x: TTTTvvvvvvvvvvvv&lt;br /&gt;
          FEDCBA9876543210&lt;br /&gt;
 &lt;br /&gt;
 BIT OFFSET (hex) | LEN (bits) | content&lt;br /&gt;
 -----------------+------------+-----------------------------------------&lt;br /&gt;
  F (MSB)         |          4 |  &amp;quot;T&amp;quot;: type (see bit-value in next table)&lt;br /&gt;
  B               |         12 |  &amp;quot;v&amp;quot;: length of data, in bytes&lt;br /&gt;
 &lt;br /&gt;
  &amp;quot;T&amp;quot; bit-values | meaning                     | FULL-C set/get&lt;br /&gt;
            FEDC |                             | (which function)&lt;br /&gt;
 ----------------+-----------------------------+------------------&lt;br /&gt;
            0000 |  unsigned integer (32-bit)  |  _u&lt;br /&gt;
            0001 |  signed integer (32-bit)    |  _i&lt;br /&gt;
            0010 |  float IEEE-754 (32-bit)    |  _f&lt;br /&gt;
            0100 |  string UTF-8 (L#x * 8-bit) |  _a&lt;br /&gt;
            1000 |  reserved (do not use)      |  &lt;br /&gt;
&lt;br /&gt;
Horní 4 bity z TBLEN#x tedy určují typ položky. Pro získání délky L#x položky 'x', je potřeba hodnotu TBLEN#x odmaskovat - použít jen dolních 12 bitů.&lt;br /&gt;
&lt;br /&gt;
Je vaším úkolem správně zvolit typ (T) pro každou položku, pokud zvolíte špatně, nebude údaj pro daný index zpracován.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Index Value''' - každá položka má svůj číselný index, viz [[FULL-C:_set_and_get|seznam všech FULL-C indexů]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [8] '''Write FC-Get List''' ==&lt;br /&gt;
&lt;br /&gt;
Pokud SDS obdrží zprávu s &amp;quot;master_command == 8&amp;quot;, tak nastaví příslušné FULL-C indexy na nové hodnoty (podle obsahu této přijaté zprávy). &lt;br /&gt;
&lt;br /&gt;
SDS na tuto zprávu odpovídá pouze ve smyslu &amp;quot;úspěch&amp;quot; nebo &amp;quot;neúspěch&amp;quot; - takže pro skutečné ověření hodnot (zda-li se zapsaly správně) musíte proto sami zaslat další zprávu &amp;quot;master_command == 4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 COMMAND TO SDS (master_command == 8, sent to SDS)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------&lt;br /&gt;
  0               |   2 | uword | [#0] index value &lt;br /&gt;
  2               |   2 | uword | [#0] TBLEN#0: type-bits and data length (L#0)&lt;br /&gt;
  4               | L#0 |  data | [#0] new data value to write to SDS&lt;br /&gt;
 &lt;br /&gt;
  (4+(L#0))+0     |   2 | uword | [#1] index value&lt;br /&gt;
  (4+(L#0))+2     |   2 | uword | [#1] TBLEN#1: type-bits and data length (L#1)&lt;br /&gt;
  (4+(L#0))+4     | L#1 |  data | [#1] new data value to write to SDS&lt;br /&gt;
 &lt;br /&gt;
  . . .           | ... | . . . | ...&lt;br /&gt;
 &lt;br /&gt;
  Z+0             |   2 | uword | [#n] index value &lt;br /&gt;
  Z+2             |   2 | uword | [#n] TBLEN#n: type-bits and data length (L#n)&lt;br /&gt;
  Z+4             | L#n |  data | [#n] new data value to write to SDS&lt;br /&gt;
&lt;br /&gt;
Lze vidět, že formát je naprosto shodný jako formát odpovědi kterou SDS posílá pro &amp;quot;master_command == 4&amp;quot; zprávu. Nicméně, v tomto případě, je tento obsah [C-PAYLOAD] zapsán '''do''' SDS, které jej zpracuje a provede - pouze ale pokud je délka L#x přesně odpovídající danému indexu.&lt;br /&gt;
&lt;br /&gt;
Odpověď, kterou na tento příkaz SDS následně posílá, je velmi jednoduchá: [C-PAYLOAD] není vůbec použito (XL=0), a &amp;quot;sub_command&amp;quot; obsahuje následující možnost:&lt;br /&gt;
&lt;br /&gt;
 REPLY FROM SDS (master_command == 8)&lt;br /&gt;
 &lt;br /&gt;
 NOTE: THIS FEATURE (PROPER RESPONSE) IS IMPLEMENTED SINCE FW 15.March.2025 AND ONWARDS&lt;br /&gt;
 (previously no proper response was provided)&lt;br /&gt;
 &lt;br /&gt;
 sub_command | meaning&lt;br /&gt;
 ------------+-----------------------------------------------------------&lt;br /&gt;
           0 |  complete failure (no item modified)&lt;br /&gt;
           1 |  partial failure  (some items modified, some not modified)&lt;br /&gt;
           2 |  success          (all items modified OK)&lt;br /&gt;
 &lt;br /&gt;
Další, detailnější, rozlišení selhání (failure) se neprovádí (tzn. SDS neposílá více detailnější informaci ve své odpovědi, než uvedené tři možnosti).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [16] '''FULL-C Shared Variable(s) Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz se využívá k přístupu ke [[FULL-C:_sharing|sdíleným proměnným]] programu FULL-C.&lt;br /&gt;
&lt;br /&gt;
Proměnné se označují vzorem, kde je na začátku velké písmeno určující typ, a pak dvě decimální číslice určující pořadí - tedy sto možných hodnot. &lt;br /&gt;
&lt;br /&gt;
Mohou existovat tyto sdílené proměnné :&lt;br /&gt;
* S00 až S99 (hodnoty: signed 32-bit)&lt;br /&gt;
* U00 až U99 (hodnoty: unsigned 32-bit)&lt;br /&gt;
* F00 až F99 (hodnoty: float 32-bit)&lt;br /&gt;
* T00 až T99 (hodnoty: array/text)&lt;br /&gt;
&lt;br /&gt;
Rozlišování jednotlivých funkcí je závislé na hodnotě &amp;quot;sub_command&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 QUERY-or-COMMAND TO SDS (master_command == 16, sent to SDS)&lt;br /&gt;
 &lt;br /&gt;
 sub_command | meaning&lt;br /&gt;
 ------------+---------------------------------------------&lt;br /&gt;
           0 | provide list of all active shared variables&lt;br /&gt;
           1 | read from shared variable (single variable)&lt;br /&gt;
           2 | reserved&lt;br /&gt;
           4 | write to shared variable (single variable)&lt;br /&gt;
           8 | reserved&lt;br /&gt;
&lt;br /&gt;
Pro &amp;quot;sub_command == 0&amp;quot; poskytne SDS odpověď, kde je uvedeno zda-li je specifická sdílená proměnná definována v právě aktivním FULL-C programu.&lt;br /&gt;
&lt;br /&gt;
 RESPONSE:  LIST OF SHARED VARIABLES: sub_command = 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
   0              |  13 | bytes | Uxx existence: bit-field&lt;br /&gt;
  13              |  13 | bytes | Sxx existence: bit-field&lt;br /&gt;
  26              |  13 | bytes | Fxx existence: bit-field&lt;br /&gt;
  39              |  13 | bytes | Txx existence: bit-field&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, v odpovědi jsou čtyři samostatné bitové pole, každé o délce 100 bitů (plus nevyužitý zbytek 4 bitů na konci). Každý bit přestavuje existenci jedné ze sdílených proměnných, pokud je nastaven na 1 tak proměnná existuje.&lt;br /&gt;
&lt;br /&gt;
 Xxx existence: bit-field&lt;br /&gt;
 &lt;br /&gt;
 BYTE -&amp;gt; [0] . . . [13]&lt;br /&gt;
 BITS -&amp;gt;  0 . . .   100 (plus 4 at the end, which are not used)&lt;br /&gt;
 &lt;br /&gt;
 BYTE [0] = bit 0, 1, 2, ..., 7&lt;br /&gt;
 BYTE [1] = bit 8, 9, 10, ..., 15&lt;br /&gt;
 ...&lt;br /&gt;
 BYTE [13] = bit 96, 97, 98 ..., 103&lt;br /&gt;
 &lt;br /&gt;
 example: existence of &amp;quot;U11&amp;quot; =&amp;gt; bit 11 =&amp;gt; look at BYTE [1]&lt;br /&gt;
&lt;br /&gt;
Takže pro kteroukoliv sdílenou proměnnou si lze nalézt příslušnou pozici, která ukazuje, zda-li právě daná proměnná existuje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Další,''' &amp;quot;sub_command == 1&amp;quot; umožňuje z konkrétní (jedné) sdílené proměnné číst.&lt;br /&gt;
&lt;br /&gt;
 QUERY TO SDS: READ ONE SHARED VARIABLE: sub_command = 1&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
  0               |   3 | bytes | [#0] name (example: &amp;quot;U25&amp;quot;)&lt;br /&gt;
  1               |   1 |  byte | reserved (0x00)&lt;br /&gt;
&lt;br /&gt;
A ''odpověď'' je:&lt;br /&gt;
&lt;br /&gt;
 REPLY FROM SDS: READ ONE SHARED VARIABLE: sub_command = 1&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
  0               |   3 | bytes | [#0] name (example: &amp;quot;F95&amp;quot;)&lt;br /&gt;
  1               |   1 |  byte | reserved (0x00)&lt;br /&gt;
  4               |   2 | uword | [#0] L#0: data length (L#0)&lt;br /&gt;
  6               |   2 | uword | reserved (0x0000)&lt;br /&gt;
  8               | L#0 |  data | [#0] data value from the shared variable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Dále,''' pro &amp;quot;sub_command == 4&amp;quot; dojde ke změně hodnoty.&lt;br /&gt;
&lt;br /&gt;
 COMMAND TO SDS: WRITE ONE SHARED VARIABLE: sub_command = 4&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
  0               |   3 | bytes | [#0] name (example: &amp;quot;T12&amp;quot;)&lt;br /&gt;
  1               |   1 |  byte | reserved (0x00)&lt;br /&gt;
  4               |   2 | uword | [#0] L#0: data length (L#0)&lt;br /&gt;
  6               |   2 | uword | reserved (0x0000)&lt;br /&gt;
  8               | L#0 |  data | [#0] new data value to write to shared variable&lt;br /&gt;
&lt;br /&gt;
A odpověď je zde shodná jako odpověd pro &amp;quot;sub_command == 1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [32] '''S0 Input Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení kalibračních konstant pro S0 vstupy. Současně jsou předány i aktuální (živé) údaje pro daný S0 vstup.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 32 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 32, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to S0 array [1..MAX] (typical MAX value is 9)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  S0 input number for this reply (for a valid answer: 1..MAX , otherwise: 0x00).&lt;br /&gt;
    1             |   1 |  byte |  total number of S0 inputs for this SDS&lt;br /&gt;
    2             |   1 |  byte |  configuration status (combined flags: bit0 = enabled as S0; bit1 = is tariff used)&lt;br /&gt;
    3             |   1 |  byte |  reserved (0x00)&lt;br /&gt;
    4             |  32 | bytes |  text (name: unit)&lt;br /&gt;
    36            |  32 | bytes |  text (name: money)&lt;br /&gt;
    68            |  32 | bytes |  text (unit: power)&lt;br /&gt;
    100           |  32 | bytes |  text (name: power)&lt;br /&gt;
    132           |  32 | bytes |  text (name: device)&lt;br /&gt;
    168           |   4 | dword |  MTD value&lt;br /&gt;
    172           |   4 | dword |  minimal impulse length (msec)&lt;br /&gt;
    176           |   4 | dword |  impulse constant value (imp. per unit)&lt;br /&gt;
    180           |   4 | bytes |  price for T0&lt;br /&gt;
    184           |   4 | bytes |  price for T1&lt;br /&gt;
    188           |   8 | bytes |  reserved (0x00)&lt;br /&gt;
    196           |   4 | dword |  live value: T0 impulse counter&lt;br /&gt;
    200           |   4 | dword |  live value: T1 impulse counter&lt;br /&gt;
    204           |   4 | dword |  T0 offset&lt;br /&gt;
    208           |   4 | dword |  T1 offset&lt;br /&gt;
    212           |   4 | dword |  live value: measured space between impulses (msec)&lt;br /&gt;
    216           |   4 | dword |  live value: time since last registered impulse (msec)&lt;br /&gt;
    220           |   4 | bytes |  reserved (0x00)&lt;br /&gt;
    224           |   n | bytes |  live value: combined text&lt;br /&gt;
&lt;br /&gt;
Kombinovaný text (combined text) obsahuje vypočtené informace, oddělené znakem '|'. Tyto údaje lze přímo zobrazit uživateli. Výpočet provádí SDS, a stejné hodnoty ukazuje na svém webu. Jedná se zde o doplněk původní funkce GDS (master_command==0).&lt;br /&gt;
&lt;br /&gt;
Délka textu &amp;quot;n&amp;quot; je dynamická, text je zakončen 0x00 (nebo pokud vyjde přesně na maximální délku co se vleze do payloadu, zakončení nemá a je uříznut na posledním znaku, pozor na to).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''(sub_command = 0xFF)''': speciální odpověď pro Tarifní vstup :&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 32, sent from SDS as reply)&lt;br /&gt;
 sub_command == 0xFF (tariff)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  constant 0xFF&lt;br /&gt;
    1             |   3 | bytes |  reserved (0x00)&lt;br /&gt;
    4             |   1 |  byte |  tariff input&lt;br /&gt;
    5             |  32 | bytes |  text (name: tariff)&lt;br /&gt;
    37            |  32 | bytes |  text (name: tariff T0 input)&lt;br /&gt;
    69            |  32 | bytes |  text (name: tariff T1 input)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [33] '''S0 Input History Values''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení historických hodnot počítadel pro vybraný S0 vstup. Každá nová položka se do záznamu historie uloží co 15 minut.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 33 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 33, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to S0 array [1..MAX] (typical MAX value is 9)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  S0 input number for this reply (for a valid answer: 1..MAX , otherwise: 0x00).&lt;br /&gt;
    1             |   1 |  byte |  total number of S0 inputs for this SDS&lt;br /&gt;
    2             |   1 |  byte |  configuration status (combined flags: bit0 = enabled as S0; bit1 = is tariff used)&lt;br /&gt;
    3             |   3 | bytes |  reserved (0x00)&lt;br /&gt;
    6             |   2 |  word |  history depth (number of items) - value &amp;quot;n&amp;quot; (example: five items -&amp;gt; n == 5)&lt;br /&gt;
    8             |   4 | dword |  uptime value for the last element (#n) in the list&lt;br /&gt;
    12            |   4 | dword |  ntptime value for the last element (#n) in the list&lt;br /&gt;
    16            |   4 | dword |  history item #1: value of T0 counter (this is the most oldest item)&lt;br /&gt;
    20            |   4 | dword |  history item #1: value of T1 counter (this is the most oldest item)&lt;br /&gt;
    ...&lt;br /&gt;
    16+(n-1)*8    |   4 | dword |  history item #n: value of T0 counter (this is the most newest item)&lt;br /&gt;
    16+(n-1)*8+4  |   4 | dword |  history item #n: value of T1 counter (this is the most newest item)&lt;br /&gt;
&lt;br /&gt;
Historické údaje počítadel ukazují stav počítadel od současnosti dozadu. Položka #1 je nejstarší, pak #2 je mladší atd. až po položku #n která je nejaktuálnější (nejbližší současné chvíli).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [40] '''AD Input Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení kalibračních konstant pro AD vstupy.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 40 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 40, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to AD array [1..MAX]&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN  | TYPE  | content&lt;br /&gt;
 -----------------+------+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1  |  byte |  actual AD input index for this reply&lt;br /&gt;
    1             |   1  |  byte |  total number of AD inputs&lt;br /&gt;
    2             |   2  | bytes |  reserved (0x00)&lt;br /&gt;
    4             |   4  |   f32 |  F6 calibration constant&lt;br /&gt;
    8             |   4  |   f32 |  F5 calibration constant&lt;br /&gt;
   12             |   4  |   f32 |  F4 calibration constant&lt;br /&gt;
   16             |   4  |   f32 |  F3 calibration constant&lt;br /&gt;
   20             |   4  |   f32 |  F2 calibration constant&lt;br /&gt;
   24             |   4  |   f32 |  F1 calibration constant&lt;br /&gt;
   28             |   4  |   f32 |  F0 calibration constant&lt;br /&gt;
   32             |   1  |  byte |  is calibration factory locked&lt;br /&gt;
   33             |  32  | bytes |  unit&lt;br /&gt;
   65             |   4  | bytes |  reserved (0x00)&lt;br /&gt;
   69             |  32  | bytes |  name&lt;br /&gt;
  101             |   4  | bytes |  reserved (0x00)&lt;br /&gt;
  105             |   4  | dword |  raw value&lt;br /&gt;
  109             |   4  |   f32 |  real value (converted from raw)&lt;br /&gt;
  113             |   n  | bytes |  live value text&lt;br /&gt;
&lt;br /&gt;
Text &amp;quot;live value&amp;quot; obsahuje hodnotu vypočtenou interně v SDS. Text lze prezentovat uživateli (je to stejné jako co SDS ukáže na svém webu). Jedná se o doplňkovou funkci vůči vlastnímu výpočtu ze surových hodnot z GDS (master_command==0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [42] '''PWM Output Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení nastavení pro PWM výstup (konfigurace a živý stav).&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 42 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 42, sent from SDS as reply)&lt;br /&gt;
 sub_command == 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN  | TYPE  | content&lt;br /&gt;
 -----------------+------+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1  |  byte |  reserved (0x00)&lt;br /&gt;
    1             |   1  |  byte |  &amp;quot;N&amp;quot; = total number of PWM outputs&lt;br /&gt;
    2             |   2  | bytes |  reserved (0x00)&lt;br /&gt;
 &lt;br /&gt;
    4+(i*12)+  0  |   4  | dword |  frequency (Hz) for PWMx&lt;br /&gt;
    4+(i*12)+  4  |   4  | dword |  &amp;quot;pulse&amp;quot; value for PWMx&lt;br /&gt;
    4+(i*12)+  8  |   1  |  byte |  &amp;quot;ValueB&amp;quot; value for PWMx&lt;br /&gt;
    4+(i*12)+  9  |   2  | uword |  &amp;quot;ValueS&amp;quot; value for PWMx&lt;br /&gt;
    4+(i*12)+ 11  |   1  |  byte |  output enabled for PWMx&lt;br /&gt;
&lt;br /&gt;
Pozn. PWM1 má hodnotu &amp;quot;i&amp;quot; = 0, PWM2 má hodnotu &amp;quot;i&amp;quot; = 1 atd.&lt;br /&gt;
&lt;br /&gt;
V případě, že je některý z PWMx výstupů nevyužit (&amp;quot;přeskočen&amp;quot;), je přesto v odpovědi uveden, aby bylo zachováno číslovaní pořadí všech PWMx výstupů.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [44] '''RELAYs Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení konfigurace RELAY výstupů (nastavení a živý stav).&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 44 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 44, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to RELAY array [1..MAX]&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN  | TYPE  | content&lt;br /&gt;
 -----------------+------+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1  |  byte |  actual RELAY output index for this reply&lt;br /&gt;
    1             |   1  |  byte |  total number of RELAY outputs&lt;br /&gt;
    2             |   2  | bytes |  reserved (0x00)&lt;br /&gt;
    4             |  32  | bytes |  name&lt;br /&gt;
   36             |   4  | bytes |  reserved (0x00)&lt;br /&gt;
   40             |   1  |  byte |  &amp;quot;relay-controlled-by&amp;quot; value&lt;br /&gt;
   41             |   1  |  byte |  &amp;quot;relay-output&amp;quot; value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [48] '''SD Card Status Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení stavu SD karty.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 48 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 48, sent from SDS as reply)&lt;br /&gt;
 sub_command == 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  card mounted &lt;br /&gt;
    1             |   3 | bytes |  reserved&lt;br /&gt;
    4             |   4 | dword |  card type&lt;br /&gt;
    8             |   4 | dword |  card ProdSN&lt;br /&gt;
   12             |   4 | dword |  card init attempts counter&lt;br /&gt;
   16             |   4 | dword |  card init failures counter&lt;br /&gt;
   20             |   4 | dword |  card total sector count in FAT in KiB&lt;br /&gt;
   24             |   4 | dword |  total sector reads counter&lt;br /&gt;
   28             |   4 | dword |  total sector writes counter&lt;br /&gt;
   32             |   4 | dword |  total sector r/w failures counter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [50] '''Serial Port Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz není pro &amp;quot;version == 0x00&amp;quot; podporován. Potřebujete novější &lt;br /&gt;
firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [64] '''DataFlash (NVM) Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz není pro &amp;quot;version == 0x00&amp;quot; podporován. Potřebujete novější &lt;br /&gt;
firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [128] '''Reserved''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz není v současné verzi použit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (1-PŘ) Master Command (první produktová řada: &amp;quot;TV = 0001....&amp;quot; ) ==&lt;br /&gt;
&lt;br /&gt;
Jednotlivé základní příkazy (''master command'') - zatím nejsou pro &lt;br /&gt;
první produktovou řadu definovány.&lt;br /&gt;
&lt;br /&gt;
Detaily zde budou doplněny.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=M2M:_S-UDP_protocol&amp;diff=940</id>
		<title>M2M: S-UDP protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=M2M:_S-UDP_protocol&amp;diff=940"/>
		<updated>2025-03-15T08:19:45Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje funkci zařízení SDS '''druhé produktové řady''' - protože SDS první produktové řady používají jiný protokol.&lt;br /&gt;
&lt;br /&gt;
== Rychlá komunikace: S-UDP ==&lt;br /&gt;
&lt;br /&gt;
Pomocí speciálního protokolu, kdy se data přenášejí prostřednictvím [http://en.wikipedia.org/wiki/User_Datagram_Protocol UDP], je možné získávat informace z výrobků řady SDS/OnlineTechnology.&lt;br /&gt;
&lt;br /&gt;
 S-UDP používá následující výchozí UDP PORT: 310&lt;br /&gt;
&lt;br /&gt;
Komunikace probíhá formou DOTAZ - ODPOVĚĎ. To znamená, že ten, kdo má o informace zájem (vzdálený uživatel) pošle dotaz (korektně vyplněný UDP paket, viz dále) a obratem obdrží od zařízení odpověď - UDP paket s informacemi. UDP Port na kterém je komunikace prováděna lze samozřejmě v administraci zařízení změnit.&lt;br /&gt;
&lt;br /&gt;
Přenos dat využívá specifického protokolu, který umožňuje bezpečně ovládat specifické zařízení SDS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Typické použití:''' komunikace zařízení SDS s protistranou (např. aplikace na mobilním telefonu).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Informace == &lt;br /&gt;
&lt;br /&gt;
Některé z FULL-C funkcí, které jsou zde popsány, jsou plně implementovány až ve firmware 03/2025 a dále. Je potřeba, aby jste měli svůj modul SDS aktualizován na nový firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bezpečnost ==&lt;br /&gt;
&lt;br /&gt;
Protokol S-UDP je založen na důsledné autentizaci strany, která posílá zprávu - zařízení SDS ověřuje identitu odesílatele příkazu, a ten může ověřit identitu SDS který odpovídá.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Je to založeno na následujícím principu:&lt;br /&gt;
&lt;br /&gt;
- S-UDP protokol je zabezpečen symetrickou šifrou, se sdíleným klíčem který znají jen komunikující strany (bezpečnost je přímo úměrná úrovni zabezpečení tohoto klíče na obou stranách)&lt;br /&gt;
&lt;br /&gt;
- SDS má unikátní identifikátor (zaručeně unikátní, od výrobce) který nelze změnit (je fyzicky vypálen v SoC - nezměnitelně přímo v silikonu chipu).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== S-UDP protokol ==&lt;br /&gt;
&lt;br /&gt;
Každý příkaz a odpověď jsou v samostatném, jediném, UDP paketu.&lt;br /&gt;
&lt;br /&gt;
Každý paket je sestaven v rámci společného formátu, který je zde popsán. Samotný doplňující datový obsah (payload) je dynamický, a u některých příkazů není potřeba.&lt;br /&gt;
&lt;br /&gt;
S-UDP Paket se tedy skládá z těchto základní částí (tyto části jsou právě přenášeny UDP paketem, v následující sestavě):&lt;br /&gt;
&lt;br /&gt;
  [MASTER PACKET CONTENTS]&lt;br /&gt;
 &lt;br /&gt;
   OFFSET    | LEN    |  DATA&lt;br /&gt;
   ----------+--------+---------------------------------------------------------------&lt;br /&gt;
     0       |     28 |  HEADER&lt;br /&gt;
    28       |  PL*16 |  ENCRYPTED PAYLOAD (contains: payload-header and payload-data)&lt;br /&gt;
&lt;br /&gt;
'''Pozor!''' Hodnota PL je velikost [ENCRYPTED PAYLOAD] vydělená 16. To znamená, že velikost [ENCRYPTED PAYLOAD] musí být beze zbytku dělitelná 16 (tzn. pouze hodnota 16, 32, 64, ...) ! Pokud je potřeba, doplní se na úplný konec (viz oblast &amp;quot;R&amp;quot;) zarovnání do potřebné délky, aby se dosáhlo čisté dělitelnosti 16.&lt;br /&gt;
&lt;br /&gt;
 LITTLE-ENDIAN&lt;br /&gt;
&lt;br /&gt;
Následující uvedené položky jsou ve formátu [http://en.wikipedia.org/wiki/Endianness#Little-endian Little-Endian] (procesory: ARM, x86):&lt;br /&gt;
* ''uword'' (unsigned 16-bit)&lt;br /&gt;
* ''dword'' (unsigned 32-bit)&lt;br /&gt;
* ''slong'' (signed   32-bit)&lt;br /&gt;
* ''qword'' (unsigned 64-bit)&lt;br /&gt;
&lt;br /&gt;
Položky typu: ''byte'', ''sbyte'', ''bytes'' - jsou jednotlivé samostatné bajty, nesdružené do společného čísla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zde jsou uvedeny detailní položky:&lt;br /&gt;
 &lt;br /&gt;
  [MASTER PACKET CONTENTS]&lt;br /&gt;
 &lt;br /&gt;
   OFFSET   | LEN  |  TYPE  | DATA&lt;br /&gt;
   ---------+------+--------+-----------------------------&lt;br /&gt;
 &lt;br /&gt;
                              [HEADER]&lt;br /&gt;
 &lt;br /&gt;
    0       |   3  |  bytes | header &amp;quot;SDS&amp;quot;&lt;br /&gt;
    3       |   1  |   byte | TV = (SDS-product-line) including (S-UDP protocol master-version)&lt;br /&gt;
    4       |   1  |   byte | PL = number of 16B chunks - this is the payload_length of [ENCRYPTED PAYLOAD] (example: PL==10 =&amp;gt; 160 bytes)&lt;br /&gt;
    5       |   1  |   byte | encryption-flag  (NOW ACCEPTS ONLY: 0x10 == XTEA-64-CTR)&lt;br /&gt;
    6       |   1  |   byte | reserved&lt;br /&gt;
    7       |   1  |   byte | CK1: basic additive checksum for [ENCRYPTED PAYLOAD] (start from (including) byte offset [28] and forward)&lt;br /&gt;
    8       |   4  |  dword | user_identifier (correlation identifier) - use this to correlate query to response&lt;br /&gt;
   12       |  16  |  bytes | CounterBlock&lt;br /&gt;
  ----------+------+--------+----------------------------&lt;br /&gt;
 &lt;br /&gt;
                              [ENCRYPTED PAYLOAD] -&amp;gt; everything from this point is included:&lt;br /&gt;
 &lt;br /&gt;
   28       |   1  |   byte | random number (shall be always different than what was used ever before)&lt;br /&gt;
   29       |   1  |   byte | CK2: basic additive checksum for [HEADER] (all bytes [0] to [27] included, BUT: skipping byte [7])&lt;br /&gt;
   30       |   2  |  uword | XR_MTU value (maximal size of the custom-payload data including R) ( XL + R &amp;lt;= XR_MTU )&lt;br /&gt;
   32       |   4  |  dword | CRC-32 (part-header and plain-text payload) -&amp;gt; byte [36] (included) up to [52+XL-1] (the R area is not included here)&lt;br /&gt;
   36       |   4  |  dword | uptime (msecs from boot)&lt;br /&gt;
   40       |   4  |  dword | time (epoch) (or, if no NTP is available to SDS, this will be a value of &amp;quot;seconds from boot&amp;quot;)&lt;br /&gt;
   44       |   4  |  dword | SDS device type (0xXXXXXXXX) - THIS MUST MATCH&lt;br /&gt;
   48       |   1  |   byte | master_command&lt;br /&gt;
   49       |   1  |   byte | sub_command&lt;br /&gt;
   50       |   2  |  uword | XL value (exact length of the actually useful payload-data): XL = (PL*16) - R - 24&lt;br /&gt;
 &lt;br /&gt;
   52       |  XL  |  bytes | custom payload-data [C-PAYLOAD]&lt;br /&gt;
 &lt;br /&gt;
   52+XL    |   R  |  bytes | specific set of (random data filling) to round-up (the PL*16 value) to a clean 16B multiply (16, 32, 64, etc.)&lt;br /&gt;
 &lt;br /&gt;
  ----------+------+--------+----------------------------&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;SDS device type&amp;quot; je určena podle typu SDS, se kterým komunikujete. Seznam hodnot viz [[Firmware]], například 0xB1900001 pro BIG-64 nebo 0xB1900002 pro BIG-128 atd.Pokud tato hodnota neodpovídá typu firmware v daném SDS, bude paket zcela ignorován a neproveden. Jediná vyjímka je master_command == NOP, což je záměrná vyjímka, která umožní zjištění typu SDS (a přítomnosti SDS) při zahájení komunikace.&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;random number&amp;quot; je zde proto, aby šifrované data byly pokaždé jiné, i když se přenáší stejný obsah (tzn. jedná se o zábranu stenografického odhadu obsahu payloadu).&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;time&amp;quot; umožňuje zařízení, které komunikuje s SDS, zabránit &amp;quot;replay&amp;quot; útoku (když se zaznamená paket a později se zopakuje - v takovém případě se na to přijde protože &amp;quot;time&amp;quot; bude významně starší). SDS kontrolu provádí vůči svému vnitřnímu času, vzdálené zařízení co se SDS komunikuje by tuto kontrolu mělo dělat také.&lt;br /&gt;
&lt;br /&gt;
Protože hodnota &amp;quot;time&amp;quot; se zvyšuje pouze co 1 vteřinu, je k dispozici i hodnota &amp;quot;uptime&amp;quot; která se po resetu/bootu (kde se nastaví na nulu) zvyšuje každou 1 milisekundu o jedničku. Kombinace umožňuje vhodně sestavit algoritmus detekce &amp;quot;replay&amp;quot; útoků.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;CounterBlock&amp;quot; se využívá pro nastavení začátku šifrování a dešifrování. Všechny detaily jsou zcela shodné jako pro [[FULL-C_crypto_functions|FULL-C funkci SDS_Crypt()]]. Z hlediska bezpečnosti je důležité, aby obě strany neustále používaly zvyšující se CounterBlock obsah (začít &amp;quot;od jedničky&amp;quot; pouze a jenom po resetu/bootu), tzn. pro každou zprávu použít poslední hodnotu counteru a na té dále stavět pro novou zprávu atd. .&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;crc32&amp;quot; se počítá pro dešifrované data, algoritmus je identický jako pro [[FULL-C_crypto_functions|FULL-C funkci SDS_Crypt()]].&lt;br /&gt;
&lt;br /&gt;
Pro zvolené XTEA-64-CTR má &amp;quot;CounterBlock&amp;quot; následující sestavu svého obsahu:&lt;br /&gt;
&lt;br /&gt;
   CounterBlock:&lt;br /&gt;
 &lt;br /&gt;
   OFFSET    | LEN  |  TYPE  |  DATA&lt;br /&gt;
   ----------+------+--------+-----------------------------------------------------------------------------------------&lt;br /&gt;
    0        |   8  |  qword |  XTEA-64-CTR: 64-bit counter (counter is increased by 1, for each 16B of processed data)&lt;br /&gt;
    8        |   8  |  bytes |  (reserved) not-used area = reserved (fill with 0x00) &lt;br /&gt;
&lt;br /&gt;
Pro jiné mechanismy (do budoucna) je v CounterBlock oblasti přidána ještě 8B rezerva (např. pro AES-128 se pak využije všech 16 bajtů).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;TV&amp;quot; (v [HEADER] na offsetu [3]) je určení typu a verze protokolu. Skládá se ze dvou čtyřbitových údajů, viz následující tabulka.&lt;br /&gt;
&lt;br /&gt;
 TV: ttttVVVV&lt;br /&gt;
     76543210&lt;br /&gt;
 &lt;br /&gt;
 BIT OFFSET | LEN (bits) | content&lt;br /&gt;
 -----------+------------+--------------------------------------------------&lt;br /&gt;
  7 (MSB)   |          4 |  &amp;quot;t&amp;quot;: produc-line value: 1 == first, 2 == second&lt;br /&gt;
  3         |          4 |  &amp;quot;V&amp;quot;: version: 0 = first S-UDP protocol version&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V konečném důsledku, skutečnou funkční důležitost ma '''[C-PAYLOAD]''', což je blok dat, který obsahuje hodnoty a příkazy, které pomocí S-UDP chceme přenést.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Postup při příjmu S-UDP paketu ==&lt;br /&gt;
&lt;br /&gt;
Každá strana, která přijme S-UDP paket, provede následující kroky:&lt;br /&gt;
&lt;br /&gt;
 1) Ověřit platnost hodnot v [HEADER]&lt;br /&gt;
    a. text &amp;quot;SDS&amp;quot; (platný obsah)&lt;br /&gt;
    b. hodnota &amp;quot;TV&amp;quot; (&amp;quot;master-version&amp;quot; a &amp;quot;product-line&amp;quot;) (platný obsah)&lt;br /&gt;
    c. hodnota &amp;quot;PL&amp;quot; v platných mezích&lt;br /&gt;
    d. hodnota &amp;quot;encryption_flag&amp;quot; (platný obsah)&lt;br /&gt;
 2) Ověřit základní additive-checksum pro [ENCRYPTED PAYLOAD]&lt;br /&gt;
    a. přečíst bajty [28] až [28+PL-1] a sečíst je (overflow osm bitů), výsledek musí odpovídat &amp;quot;CK1&amp;quot; hodnotě&lt;br /&gt;
 3) Nastavit dešifrování&lt;br /&gt;
    a. zvolit algoritmus podle &amp;quot;encryption-flag&amp;quot; hodnoty&lt;br /&gt;
    b. nastavit klíč (stejný jako na protistraně, samozřejmě není přenášen přes síť)&lt;br /&gt;
    c. nastavit &amp;quot;CounterBlock&amp;quot; (přečíst z [HEADER])&lt;br /&gt;
 4) Dešifrovat celou [ENCRYPTED PAYLOAD] na plain-text&lt;br /&gt;
    a. hodnota &amp;quot;PL&amp;quot; musí být dělitelná 16 beze zbytku (tato podmínka závisí na použitém šifrovaní)&lt;br /&gt;
 5) Ověřit základní additive-checksum pro [HEADER] - teď totiž už máme hodnotu &amp;quot;CK2&amp;quot;&lt;br /&gt;
    a. přečíst bajty [0] až [27] (ovšem přeskočit byte [7] - pozor!) a sečíst je (overflow osm bitů), výsledek musí odpovídat &amp;quot;CK2&amp;quot; hodnotě&lt;br /&gt;
 6) Ověřit další hodnoty&lt;br /&gt;
    a. &amp;quot;SDS-DEVICE-TYPE&amp;quot; musí odpovídat (záruka ovládání toho správného typu SDS) - pokud hodnotu nevíte, můžete si &amp;quot;pomoci&amp;quot; NOP příkazem&lt;br /&gt;
    b. uschovat hodnotu &amp;quot;XR_MTU&amp;quot; pro vytváření odpovědi (&amp;quot;XR_MTU&amp;quot; omezuje velikost odpovědi, kterou můžeme zpátky odeslat)&lt;br /&gt;
    c. ověřit časové údaje (&amp;quot;time&amp;quot; a &amp;quot;uptime&amp;quot;)&lt;br /&gt;
    d. ověřit &amp;quot;XL&amp;quot; vůči &amp;quot;PL&amp;quot;&lt;br /&gt;
 7) Ověřit CRC-32 dešifrovaného payloadu&lt;br /&gt;
    a. spočítat CRC-32 správným algoritmem, vučí bajtům (plain-text) z [36] až [52+XL-1] včetně&lt;br /&gt;
 &lt;br /&gt;
 8) Hotovo: teď se provede aktuální příkaz (Master Command, dle tabulky podle produktové řady viz &amp;quot;TV&amp;quot;)&lt;br /&gt;
            a odešle odpověď (ponechat user_identifier pro korelaci) (pozor na &amp;quot;XR_MTU&amp;quot; omezení)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Postup při odesílání S-UDP paketu ==&lt;br /&gt;
&lt;br /&gt;
Odesílatel zprávy provádí tyto kroky:&lt;br /&gt;
&lt;br /&gt;
 1) Je sestaven přesný obsah [C-PAYLOAD] a určena odpovídající hodnota XL&lt;br /&gt;
    a. obsah samozřejmě odpovídá tomu co chcete odeslat&lt;br /&gt;
    b. určí se i &amp;quot;master-command&amp;quot; a &amp;quot;sub-command&amp;quot; (pozor na produktovou řadu SDS - viz &amp;quot;TV&amp;quot;)&lt;br /&gt;
 2) Vyplní se [HEADER]&lt;br /&gt;
    a. hlavička &amp;quot;SDS&amp;quot;, &amp;quot;encryption-flag&amp;quot;&lt;br /&gt;
    b. zapsat správnou hodnotu &amp;quot;TV&amp;quot; podle protokolu a konkrétního SDS (&amp;quot;master-version&amp;quot;, &amp;quot;product-line&amp;quot;)&lt;br /&gt;
    c. určí se nová unikátní hodnota &amp;quot;user_identifier&amp;quot;, a zapíše se do [HEADER]&lt;br /&gt;
    d. zapíše se &amp;quot;CounterBlock&amp;quot; (hodnota pokračuje po předchozím paketu)&lt;br /&gt;
 3) Nachystá se zaokrouhlovací oblast &amp;quot;R&amp;quot; &lt;br /&gt;
    a. Pokud XL není beze zbytku dělitelná 16, musí se doplnit oblastí &amp;quot;R&amp;quot;&lt;br /&gt;
 4) Spočítá se hodnota &amp;quot;PL&amp;quot;&lt;br /&gt;
    a. PL = (XL + R)/16&lt;br /&gt;
    b. zapsat do [HEADER]&lt;br /&gt;
 5) Začne se vyplňovat [ENCRYPTED PAYLOAD]&lt;br /&gt;
    a. zapsat náhodný byte do &amp;quot;random number&amp;quot;&lt;br /&gt;
    b. spočítá se hodnota &amp;quot;CK2&amp;quot; (sečíst bajty [0] až [27] - ovšem přeskočit byte [7] - pozor!) &lt;br /&gt;
    c. zapsat hodnotu &amp;quot;XR_MTU&amp;quot; podle možností zařízení (tzn. jak velkou odpověď lze bezpečně přijmout, podle omezení sítě)&lt;br /&gt;
    d. zapíší se hodnoty &amp;quot;uptime&amp;quot; a &amp;quot;time&amp;quot;, zapsat hodnotu &amp;quot;SDS-DEVICE-TYPE&amp;quot;&lt;br /&gt;
    e. zapsat &amp;quot;master-command&amp;quot; a &amp;quot;sub-command&amp;quot;&lt;br /&gt;
 6) Spočítá se CRC-32 (před šifrováním)&lt;br /&gt;
    a. spočítat crc32 pro bajty (plain-text) z offsetu [36] až [52+XL-1] včetně&lt;br /&gt;
 7) Nastavit šifrování&lt;br /&gt;
    a. zvolit algoritmus (musí odpovídat tomu, co se zapsalo do &amp;quot;encryption-flag&amp;quot;)&lt;br /&gt;
    b. nastavit klíč (stejný jako na protistraně, samozřejmě není přenášen přes síť)&lt;br /&gt;
    c. nastavit &amp;quot;CounterBlock&amp;quot; (stejný jako byl zapsán [HEADER])&lt;br /&gt;
 8) Šifrovat celou [ENCRYPTED PAYLOAD] na plain-text&lt;br /&gt;
    a. hodnota &amp;quot;PL&amp;quot; musí být dělitelná 16 beze zbytku (tato podmínka závisí na použitém šifrovaní)&lt;br /&gt;
    b. aktualizovaná hodnota &amp;quot;CounterBlock&amp;quot; (zvýšená o průběh šifrování) se uschová pro další použití - viz bod &amp;quot; 2) c. &amp;quot;&lt;br /&gt;
 9) Spočítat základní additive-checksum pro [ENCRYPTED PAYLOAD]&lt;br /&gt;
    a. přečíst bajty [28] až [28+PL-1] a sečíst je (overflow osm bitů), výsledek se zapíše do &amp;quot;CK1&amp;quot; hodnoty&lt;br /&gt;
 &lt;br /&gt;
 10) Hotovo: paket se následně odešle přes síť do protistrany, která odpoví novým paketem - ten je vztažen k tomuto dotazu pomocí &amp;quot;user_identifier&amp;quot; hodnoty.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vzorové obsahy paketů ==&lt;br /&gt;
&lt;br /&gt;
Na stránce [[M2M: S-UDP protocol: examples]] naleznete ukázkové vzorové pakety a jejich vnitřní obsah, i se zobrazeních jednotlivých položek v paketu (před a po šifrování).&lt;br /&gt;
Toto je vhodné pro vývojáře komunikační protistrany, kterým nestačí popis postupu na této stránce, ale chtějí také vidět jednotlivé kroky s aktuálními hodnotami.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Seznam hlavních příkazů ==&lt;br /&gt;
&lt;br /&gt;
Obě produktové řady SDS, které jsou na trhu, mají svou sadu &amp;quot;master_command&amp;quot; příkazů. Proto je potřeba nejprve zjistit, do které produktové řady vaše SDS spadá, a podle toho dále pokračovat. Lze to přímo odvodit od typu SDS (&amp;quot;SDS-DEVICE-TYPE&amp;quot; hodnota), nebo se zeptat příkazem NOP.&lt;br /&gt;
&lt;br /&gt;
Zařazení SDS do produktových řad je v [[Seznam_Všech_SDS|tomto seznamu]].&lt;br /&gt;
&lt;br /&gt;
* První produktová řada: &amp;quot;TV = 0001....&amp;quot;  -&amp;gt; '''(1PŘ)'''&lt;br /&gt;
* Druhá produktová řada: &amp;quot;TV = 0010....&amp;quot;  -&amp;gt; '''(2PŘ)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2PŘ) Master Command (druhá produktová řada: &amp;quot;TV = 0010....&amp;quot; ) ==&lt;br /&gt;
&lt;br /&gt;
Jednotlivé základní příkazy (''master command''):&lt;br /&gt;
 &lt;br /&gt;
  MASTER COMMAND  |  command&lt;br /&gt;
  ----------------+-------------------------------------&lt;br /&gt;
     0            |   NOP (replies with NOP)&lt;br /&gt;
     1            |   general device status&lt;br /&gt;
     2            |   1-Wire access&lt;br /&gt;
     4            |   read FC-Get list&lt;br /&gt;
     8            |   write FC-Set list&lt;br /&gt;
    16            |   FULL-C shared variable(s) access&lt;br /&gt;
    32            |   serial port access&lt;br /&gt;
    64            |   DataFlash access&lt;br /&gt;
   128            |   reserved&lt;br /&gt;
 &lt;br /&gt;
Jak lze vidět, jednotlivé ''master command'' příkazy jsou dále rozlišeny pomocí hodnoty ''sub command''.&lt;br /&gt;
&lt;br /&gt;
Každý příkaz má doplňující datovou sadu, tzn. [C-PAYLOAD]. V rámci těchto dat jsou uvedeny všechny hodnoty, které přesně určují co se má stát (popř. jsou zde všechny odpovědi na dotaz).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [0] '''NOP''' ==&lt;br /&gt;
&lt;br /&gt;
SDS odpoví na tento příkaz odesláním [0] NOP.&lt;br /&gt;
&lt;br /&gt;
Tohoto příkazu lze využít k ověření komunikace a k vzájemné základní synchronizace.&lt;br /&gt;
&lt;br /&gt;
Specifická vlastnost příkazu NOP, oproti všem ostatním příkazům, je to, že SDS odpoví i v případě, že v dotazu není správně uvedený SDS Device Type. Toto je záměr, aby bylo možné při začátku komunikace s SDS modulem, tento modul identifikovat. Samozřejmě všechny ostatní bezpečnostní prvky jsou stále aplikovány, jen tento detail je zde upraven.&lt;br /&gt;
&lt;br /&gt;
Tento příkaz je také velmi užitečný pro získání hodnoty &amp;quot;TV&amp;quot; z [HEADER], tím pádem pro určení číslo produktové řady SDS - a tím pádem k určení které &amp;quot;master_command&amp;quot; příkazy jsou k dispozici !&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 0, sent from SDS as reply)&lt;br /&gt;
 sub_command = 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN   | TYPE  | content&lt;br /&gt;
 -----------------+-------+-------+------------------------------------------------------&lt;br /&gt;
    0             |     6 | bytes |  MAC ADDRESS (bytes, not text)&lt;br /&gt;
    6             |     4 | bytes |  SDS Device Type&lt;br /&gt;
   10             |     4 | dword |  FW version &lt;br /&gt;
   14             |    32 | bytes |  sysLocation (missing the 0x00 terminator)&lt;br /&gt;
   46             |     8 | bytes |  reserved (0x00)&lt;br /&gt;
   54             |    32 | bytes |  OEM string (missing the 0x00 terminator)&lt;br /&gt;
   86             |     8 | bytes |  reserved (0x00)&lt;br /&gt;
   94             |     1 |  byte |  bylo aktivováno RSTD&lt;br /&gt;
   95             |     1 |  byte |  bylo aktivováno PVD&lt;br /&gt;
   96             |     1 |  byte |  SDS je: BIG (hodnota 1) nebo STSW (hodnota 0)&lt;br /&gt;
   97             |     8 | bytes |  reserved (0x00)&lt;br /&gt;
  105             |     2 | uword |  web interface TCP port number (typicky 80)&lt;br /&gt;
  107             |     1 |  byte |  SNMP-read enabled&lt;br /&gt;
  108             |     1 |  byte |  SNMP-write enabled&lt;br /&gt;
  109             |     1 |  byte |  FULLC shared vars access lock (0 = unlocked) tzn. sys[150]&lt;br /&gt;
  110             |     1 |  byte |  FULLC program run status&lt;br /&gt;
  111             |     1 |  byte |  FULLC program started-by info&lt;br /&gt;
  112             |     1 |  byte |  FULLC program watchdog active&lt;br /&gt;
  113             |     6 | bytes |  reserved&lt;br /&gt;
  119             |     4 |   f32 |  backup battery voltage (milliVolts)&lt;br /&gt;
&lt;br /&gt;
Pozn. rozšířená funkcionalita příkazu NOP (tedy vracení payloadu) bylo přidáno až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [1] '''General Device Status''' ==&lt;br /&gt;
&lt;br /&gt;
SDS odpoví zasláním vybraných údajů, jejichž seznam je přesně daný. Tato funkce je k dispozici pro umožnění rychlého přístupu k základnímu stavu zařízení SDS, bez složité přípravy.&lt;br /&gt;
&lt;br /&gt;
Základní odpověď s nejzajímavějšími živými údaji. Určeno např. pro průběžnou aktualizaci stavu zobrazeného uživateli.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 1, sent from SDS as reply)&lt;br /&gt;
 sub_command = 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN   | TYPE  | content&lt;br /&gt;
 -----------------+-------+-------+------------------------------------------------------&lt;br /&gt;
    0             |     6 | bytes |  MAC ADDRESS (bytes, not text)&lt;br /&gt;
    6             |     1 |  byte |  Ethernet Link Status / Speed (0, 10, 100)&lt;br /&gt;
    7             |     1 |  byte |  Amount of users logged into SDS Web Admin&lt;br /&gt;
    8             |    32 | bytes |  sysLocation (missing the 0x00 terminator)&lt;br /&gt;
   40             |     1 |  byte |  IP Watchdog Config status&lt;br /&gt;
   41             |     1 |  byte |  IP Watchdog Output (relay) status&lt;br /&gt;
   42             |     2 | uword |  IP Watchdog RTT value (note.: 0xFFFF = not available)&lt;br /&gt;
   44             |     1 |  byte |  DHCP status&lt;br /&gt;
   45             |     1 |  byte |  reserved&lt;br /&gt;
   46             |     1 |  byte |  NTP status&lt;br /&gt;
   47             |     1 | sbyte |  NTP offset (+/- hours) (signed char)&lt;br /&gt;
   48             |     2 | uword |  SoC chip temperature (degC)&lt;br /&gt;
   50             |     1 |  byte |  GPIO-TOPB PIN(s) direction (0 == input)&lt;br /&gt;
   51             |     1 |  byte |  GPIO-TOPB PIN(s) pin value&lt;br /&gt;
   52             |  32*1 |  byte |  OPTO [1]..[32] status (0xFF == signal) (0x00 == nosignal)&lt;br /&gt;
   84             |  32*1 |  byte |  RELAY [1]..[32] status (active/nonactive)&lt;br /&gt;
  116             |  32*2 | uword |  ADC [0]..[31] RAW value&lt;br /&gt;
  180             |     1 |  byte |  General 1-W BUS status&lt;br /&gt;
  181             |     1 |  byte |  1-W BUS A - active device count&lt;br /&gt;
  182             |     1 |  byte |  1-W BUS B - active device count&lt;br /&gt;
  183             |     3 | bytes |  reserved (0x00)&lt;br /&gt;
  186             |     1 |  byte |  S0 Tariff Value (active/nonactive)&lt;br /&gt;
  187             |     1 |  byte |  number of the following S0 INPUT DB data blocks:&lt;br /&gt;
  188             | 31*28 |  data |  S0 INPUT [1]..[ (max) 31] DB (data block)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 S0-INPUT DB offset | LEN | TYPE  | content&lt;br /&gt;
 -------------------+-----+-------+-------------------------------------------------------&lt;br /&gt;
    0               |   1 |  byte |  configuration status (combined flags: bit0 = enabled as S0; bit1 = is tariff used)&lt;br /&gt;
    1               |   3 | bytes |  reserved (filled with 0x00)&lt;br /&gt;
    4               |   4 | dword |  T0 impulse counter&lt;br /&gt;
    8               |   4 | dword |  T1 impulse counter&lt;br /&gt;
    12              |   4 | dword |  T0 offset&lt;br /&gt;
    16              |   4 | dword |  T1 offset&lt;br /&gt;
    20              |   4 | dword |  measured space between impulses (msec)&lt;br /&gt;
    24              |   4 | dword |  time since last registered impulse (msec)&lt;br /&gt;
&lt;br /&gt;
Sestava [C-PAYLOAD] je tedy zřejmá. &lt;br /&gt;
&lt;br /&gt;
Poslední blok (offset [188] až [1083] včetně) je určen pro přenos 32 S0 vstupů - často je jich ale v zařízení SDS fyzicky přítomno mnohem méně, např. jen devět - a potom zařízení SDS ve své odpovědi pošle jen devět záznamů (namísto 32) (toto se týká pouze a jenom S0 položek, né jiných v rámci paketu). To je provedeno z praktického důvodu: aby byl UDP paket dostatečně malý (a tedy rychlý na zpracování).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [2] '''1-Wire Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tato funkce se používá pro čtení stavu hodnot získaných z obou 1-W sběrnic, kterými SDS disponuje (některé SDS mají jen jednu sběrnici). Maximální počet prvků (chipů) na sběrnici je 64, celkem je tedy k dispozici 2x64 = 128 prvků.&lt;br /&gt;
&lt;br /&gt;
 QUERY/COMMAND TO SDS (master_command == 2)&lt;br /&gt;
 &lt;br /&gt;
 sub_command | meaning&lt;br /&gt;
 ------------+-----------------------------------------------------------&lt;br /&gt;
           0 |  reserved&lt;br /&gt;
           1 |  obtain status, and list of found items on BUS A&lt;br /&gt;
           2 |  obtain status, and list of found items on BUS B&lt;br /&gt;
           4 |  list all read-values on BUS A&lt;br /&gt;
           8 |  list all read-values on BUS B&lt;br /&gt;
&lt;br /&gt;
První možností tedy je sub_command == 1 , tzn. výpis nalezených zařízení na sběrnici A respektive B:&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 1, sent from SDS as reply)&lt;br /&gt;
 sub_command = 1 or 2&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  global 1-W controller status (SDS status)&lt;br /&gt;
    1             |   1 |  byte |  number of active items on BUS A&lt;br /&gt;
    2             |   1 |  byte |  number of active items on BUS B&lt;br /&gt;
    3             |   1 |  byte |  reserved (0x00)&lt;br /&gt;
    4             |  12 |  data |  1-W item status #0&lt;br /&gt;
    . . .         | ... |   ... |  . . .&lt;br /&gt;
    4+12*63       |  12 |  data |  1-W item status #63&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;1-W item status&amp;quot; ofs | LEN | TYPE  | content&lt;br /&gt;
 ----------------------+-----+-------+-------------------------------------------------------&lt;br /&gt;
    0                  |   1 |  byte |  ctrl: main-status&lt;br /&gt;
    1                  |   1 |  byte |  ctrl: sub-status &lt;br /&gt;
    2                  |   2 | bytes |  reserved (filled with 0x00)&lt;br /&gt;
    4                  |   8 | bytes |  ROM-CODE [0]..[7]&lt;br /&gt;
&lt;br /&gt;
Následuje: výpis získaných hodnot (např. změřené teploty z teplotních čidel) pro jednotlivé sběrnice :&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 1, sent from SDS as reply)&lt;br /&gt;
 sub_command = 4 or 8&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  global 1-W controller status (SDS status)&lt;br /&gt;
    1             |   1 |  byte |  number of active items on BUS A&lt;br /&gt;
    2             |   1 |  byte |  number of active items on BUS B&lt;br /&gt;
    3             |   1 |  byte |  reserved (0x00)&lt;br /&gt;
    4             |  12 |  data |  1-W item value #0&lt;br /&gt;
    . . .         | ... |   ... |  . . .&lt;br /&gt;
    4+12*63       |  12 |  data |  1-W item value #63&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;1-W item value&amp;quot; ofs  | LEN | TYPE  | content&lt;br /&gt;
 ----------------------+-----+-------+-------------------------------------------------------&lt;br /&gt;
    0                  |   1 |  byte |  ctrl: main-status&lt;br /&gt;
    1                  |   1 |  byte |  ctrl: sub-status&lt;br /&gt;
    2                  |   1 |  byte |  value of ROM-CODE offset [0] (1-W DEVICE TYPE: ID)&lt;br /&gt;
    3                  |   1 |  byte |  value of ROM-CODE offset [7] (1-W DEVICE TYPE: CRC)&lt;br /&gt;
    4                  |   4 | slong |  1-W read: primary value&lt;br /&gt;
    8                  |   4 | slong |  1-W read: secondary value&lt;br /&gt;
&lt;br /&gt;
Každý chip na sběrnici 1-Wire má vždy primární a sekundární hodnotu, kterou SDS pro daný chip udržuje (ne vždy jsou však, v závislosti na konkrétním chipu, obě hodnoty použity). Aktuální význam je potřeba určit podle chipu (příklad: DS18B20 má &amp;quot;primary value&amp;quot; zpracovanou teplotu v degC, a &amp;quot;secondary value&amp;quot; přímou surovou 16-bit hodnotu přečtenou z čidla).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [4] '''Read FC-Get List''' ==&lt;br /&gt;
&lt;br /&gt;
Dotaz (query) který obsahuje seznam indexů jejichž hodnoty jsou tazatelem požadovány, se posílá do SDS, které následně odpoví (reply).&lt;br /&gt;
&lt;br /&gt;
Dotaz i odpověď má dynamický obsah, který je specificky strukturován.&lt;br /&gt;
&lt;br /&gt;
 QUERY (master_command == 4, sent to SDS)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------&lt;br /&gt;
  0               |   2 | uword | [#0] index value &lt;br /&gt;
  2               |   2 | uword | [#0] TBLEN#0: type-bits and data length (L#0)&lt;br /&gt;
  4               | L#0 |  data | [#0] space prepared for answer from SDS&lt;br /&gt;
 &lt;br /&gt;
  (4+(L#0))+0     |   2 | uword | [#1] index value&lt;br /&gt;
  (4+(L#0))+2     |   2 | uword | [#1] TBLEN#1: type-bits and data length (L#1)&lt;br /&gt;
  (4+(L#0))+4     | L#1 |  data | [#1] space prepared for answer from SDS&lt;br /&gt;
 &lt;br /&gt;
  . . .           | ... | . . . | ...&lt;br /&gt;
 &lt;br /&gt;
  Z+0             |   2 | uword | [#n] index value &lt;br /&gt;
  Z+2             |   2 | uword | [#n] TBLEN#n: type-bits and data length (L#n)&lt;br /&gt;
  Z+4             | L#n |  data | [#n] space prepared for answer from SDS&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, v dotazu (query) jsou za sebou naskládány položky (indexy), na které následně SDS odpoví. Vždy musíte u každého indexu, na který se ptáte, uvést typ odpovědi (viz dále) a prostor, kam bude odpověď zapsána - to znamená, musíte znát přesnou délku, kterou má obsah pro daný index !&lt;br /&gt;
&lt;br /&gt;
Pozor na množství dotazů v rámci jednoho paketu, protože velikost dotazu, a také velikost odpovědi, je omezena XR_MTU. Jakmile SDS při skládání odpovědi narazení na XR_MTU protistrany, už více odpovědí do paketu nepřidá (aby nebylo XR_MTU překročeno).&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 4, sent from SDS as reply to query)&lt;br /&gt;
 &lt;br /&gt;
 SDS writes the values into the &amp;quot;[#n] space prepared for answer from SDS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Odpověď tedy přesně sleduje (vyplňuje) původní dotaz, přičemž [C-PAYLOAD] teď obdrží skutečný datový obsah pro jednotlivé položky. Pokud poskytnete SDS menší prostor pro odpověď, než je potřeba, bude odpověď vyplněna 0x00.&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;sub_command&amp;quot; je nastavena SDS na počet položek (#n) v odpovědi. Toto omezuje maximální počet položek v jednom paketu na 255.&lt;br /&gt;
&lt;br /&gt;
Následující popis ukazuje kódování typu proměnné a její délky, ve společném slově:&lt;br /&gt;
&lt;br /&gt;
 TBLEN#x: (16-bit unsigned word, little-endian) Type-Bits and Data Length (L#x)&lt;br /&gt;
 &lt;br /&gt;
 TBLEN#x: TTTTvvvvvvvvvvvv&lt;br /&gt;
          FEDCBA9876543210&lt;br /&gt;
 &lt;br /&gt;
 BIT OFFSET (hex) | LEN (bits) | content&lt;br /&gt;
 -----------------+------------+-----------------------------------------&lt;br /&gt;
  F (MSB)         |          4 |  &amp;quot;T&amp;quot;: type (see bit-value in next table)&lt;br /&gt;
  B               |         12 |  &amp;quot;v&amp;quot;: length of data, in bytes&lt;br /&gt;
 &lt;br /&gt;
  &amp;quot;T&amp;quot; bit-values | meaning                     | FULL-C set/get&lt;br /&gt;
            FEDC |                             | (which function)&lt;br /&gt;
 ----------------+-----------------------------+------------------&lt;br /&gt;
            0000 |  unsigned integer (32-bit)  |  _u&lt;br /&gt;
            0001 |  signed integer (32-bit)    |  _i&lt;br /&gt;
            0010 |  float IEEE-754 (32-bit)    |  _f&lt;br /&gt;
            0100 |  string UTF-8 (L#x * 8-bit) |  _a&lt;br /&gt;
            1000 |  reserved (do not use)      |  &lt;br /&gt;
&lt;br /&gt;
Horní 4 bity z TBLEN#x tedy určují typ položky. Pro získání délky L#x položky 'x', je potřeba hodnotu TBLEN#x odmaskovat - použít jen dolních 12 bitů.&lt;br /&gt;
&lt;br /&gt;
Je vaším úkolem správně zvolit typ (T) pro každou položku, pokud zvolíte špatně, nebude údaj pro daný index zpracován.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Index Value''' - každá položka má svůj číselný index, viz [[FULL-C:_set_and_get|seznam všech FULL-C indexů]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Odpověď, kterou na tento příkaz SDS následně posílá, je velmi jednoduchá: [C-PAYLOAD] není vůbec použito (XL=0), a &amp;quot;sub_command&amp;quot; obsahuje následující možnost:&lt;br /&gt;
&lt;br /&gt;
 REPLY FROM SDS (master_command == 8)&lt;br /&gt;
 &lt;br /&gt;
 NOTE: THIS FEATURE (PROPER RESPONSE) IS IMPLEMENTED SINCE FW 15.March.2025 AND ONWARDS&lt;br /&gt;
 (previously no proper response was provided)&lt;br /&gt;
 &lt;br /&gt;
 sub_command | meaning&lt;br /&gt;
 ------------+-----------------------------------------------------------&lt;br /&gt;
           0 |  complete failure (no item read)&lt;br /&gt;
           1 |  partial failure  (some items read, some not read)&lt;br /&gt;
           2 |  success          (all items read OK)&lt;br /&gt;
 &lt;br /&gt;
Další, detailnější, rozlišení selhání (failure) se neprovádí (tzn. SDS neposílá více detailnější informaci ve své odpovědi, než uvedené tři možnosti).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [8] '''Write FC-Get List''' ==&lt;br /&gt;
&lt;br /&gt;
Pokud SDS obdrží zprávu s &amp;quot;master_command == 8&amp;quot;, tak nastaví příslušné FULL-C indexy na nové hodnoty (podle obsahu této přijaté zprávy). &lt;br /&gt;
&lt;br /&gt;
SDS na tuto zprávu odpovídá pouze ve smyslu &amp;quot;úspěch&amp;quot; nebo &amp;quot;neúspěch&amp;quot; - takže pro skutečné ověření hodnot (zda-li se zapsaly správně) musíte proto sami zaslat další zprávu &amp;quot;master_command == 4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 COMMAND TO SDS (master_command == 8, sent to SDS)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------&lt;br /&gt;
  0               |   2 | uword | [#0] index value &lt;br /&gt;
  2               |   2 | uword | [#0] TBLEN#0: type-bits and data length (L#0)&lt;br /&gt;
  4               | L#0 |  data | [#0] new data value to write to SDS&lt;br /&gt;
 &lt;br /&gt;
  (4+(L#0))+0     |   2 | uword | [#1] index value&lt;br /&gt;
  (4+(L#0))+2     |   2 | uword | [#1] TBLEN#1: type-bits and data length (L#1)&lt;br /&gt;
  (4+(L#0))+4     | L#1 |  data | [#1] new data value to write to SDS&lt;br /&gt;
 &lt;br /&gt;
  . . .           | ... | . . . | ...&lt;br /&gt;
 &lt;br /&gt;
  Z+0             |   2 | uword | [#n] index value &lt;br /&gt;
  Z+2             |   2 | uword | [#n] TBLEN#n: type-bits and data length (L#n)&lt;br /&gt;
  Z+4             | L#n |  data | [#n] new data value to write to SDS&lt;br /&gt;
&lt;br /&gt;
Lze vidět, že formát je naprosto shodný jako formát odpovědi kterou SDS posílá pro &amp;quot;master_command == 4&amp;quot; zprávu. Nicméně, v tomto případě, je tento obsah [C-PAYLOAD] zapsán '''do''' SDS, které jej zpracuje a provede - pouze ale pokud je délka L#x přesně odpovídající danému indexu.&lt;br /&gt;
&lt;br /&gt;
Odpověď, kterou na tento příkaz SDS následně posílá, je velmi jednoduchá: [C-PAYLOAD] není vůbec použito (XL=0), a &amp;quot;sub_command&amp;quot; obsahuje následující možnost:&lt;br /&gt;
&lt;br /&gt;
 REPLY FROM SDS (master_command == 8)&lt;br /&gt;
 &lt;br /&gt;
 NOTE: THIS FEATURE (PROPER RESPONSE) IS IMPLEMENTED SINCE FW 15.March.2025 AND ONWARDS&lt;br /&gt;
 (previously no proper response was provided)&lt;br /&gt;
 &lt;br /&gt;
 sub_command | meaning&lt;br /&gt;
 ------------+-----------------------------------------------------------&lt;br /&gt;
           0 |  complete failure (no item modified)&lt;br /&gt;
           1 |  partial failure  (some items modified, some not modified)&lt;br /&gt;
           2 |  success          (all items modified OK)&lt;br /&gt;
 &lt;br /&gt;
Další, detailnější, rozlišení selhání (failure) se neprovádí (tzn. SDS neposílá více detailnější informaci ve své odpovědi, než uvedené tři možnosti).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [16] '''FULL-C Shared Variable(s) Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz se využívá k přístupu ke [[FULL-C:_sharing|sdíleným proměnným]] programu FULL-C.&lt;br /&gt;
&lt;br /&gt;
Proměnné se označují vzorem, kde je na začátku velké písmeno určující typ, a pak dvě decimální číslice určující pořadí - tedy sto možných hodnot. &lt;br /&gt;
&lt;br /&gt;
Mohou existovat tyto sdílené proměnné :&lt;br /&gt;
* S00 až S99 (hodnoty: signed 32-bit)&lt;br /&gt;
* U00 až U99 (hodnoty: unsigned 32-bit)&lt;br /&gt;
* F00 až F99 (hodnoty: float 32-bit)&lt;br /&gt;
* T00 až T99 (hodnoty: array/text)&lt;br /&gt;
&lt;br /&gt;
Rozlišování jednotlivých funkcí je závislé na hodnotě &amp;quot;sub_command&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 QUERY-or-COMMAND TO SDS (master_command == 16, sent to SDS)&lt;br /&gt;
 &lt;br /&gt;
 sub_command | meaning&lt;br /&gt;
 ------------+---------------------------------------------&lt;br /&gt;
           0 | provide list of all active shared variables&lt;br /&gt;
           1 | read from shared variable (single variable)&lt;br /&gt;
           2 | reserved&lt;br /&gt;
           4 | write to shared variable (single variable)&lt;br /&gt;
           8 | reserved&lt;br /&gt;
&lt;br /&gt;
Pro &amp;quot;sub_command == 0&amp;quot; poskytne SDS odpověď, kde je uvedeno zda-li je specifická sdílená proměnná definována v právě aktivním FULL-C programu.&lt;br /&gt;
&lt;br /&gt;
 RESPONSE:  LIST OF SHARED VARIABLES: sub_command = 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
   0              |  13 | bytes | Uxx existence: bit-field&lt;br /&gt;
  13              |  13 | bytes | Sxx existence: bit-field&lt;br /&gt;
  26              |  13 | bytes | Fxx existence: bit-field&lt;br /&gt;
  39              |  13 | bytes | Txx existence: bit-field&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, v odpovědi jsou čtyři samostatné bitové pole, každé o délce 100 bitů (plus nevyužitý zbytek 4 bitů na konci). Každý bit přestavuje existenci jedné ze sdílených proměnných, pokud je nastaven na 1 tak proměnná existuje.&lt;br /&gt;
&lt;br /&gt;
 Xxx existence: bit-field&lt;br /&gt;
 &lt;br /&gt;
 BYTE -&amp;gt; [0] . . . [13]&lt;br /&gt;
 BITS -&amp;gt;  0 . . .   100 (plus 4 at the end, which are not used)&lt;br /&gt;
 &lt;br /&gt;
 BYTE [0] = bit 0, 1, 2, ..., 7&lt;br /&gt;
 BYTE [1] = bit 8, 9, 10, ..., 15&lt;br /&gt;
 ...&lt;br /&gt;
 BYTE [13] = bit 96, 97, 98 ..., 103&lt;br /&gt;
 &lt;br /&gt;
 example: existence of &amp;quot;U11&amp;quot; =&amp;gt; bit 11 =&amp;gt; look at BYTE [1]&lt;br /&gt;
&lt;br /&gt;
Takže pro kteroukoliv sdílenou proměnnou si lze nalézt příslušnou pozici, která ukazuje, zda-li právě daná proměnná existuje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Další,''' &amp;quot;sub_command == 1&amp;quot; umožňuje z konkrétní (jedné) sdílené proměnné číst.&lt;br /&gt;
&lt;br /&gt;
 QUERY TO SDS: READ ONE SHARED VARIABLE: sub_command = 1&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
  0               |   3 | bytes | [#0] name (example: &amp;quot;U25&amp;quot;)&lt;br /&gt;
  1               |   1 |  byte | reserved (0x00)&lt;br /&gt;
&lt;br /&gt;
A ''odpověď'' je:&lt;br /&gt;
&lt;br /&gt;
 REPLY FROM SDS: READ ONE SHARED VARIABLE: sub_command = 1&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
  0               |   3 | bytes | [#0] name (example: &amp;quot;F95&amp;quot;)&lt;br /&gt;
  1               |   1 |  byte | reserved (0x00)&lt;br /&gt;
  4               |   2 | uword | [#0] L#0: data length (L#0)&lt;br /&gt;
  6               |   2 | uword | reserved (0x0000)&lt;br /&gt;
  8               | L#0 |  data | [#0] data value from the shared variable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Dále,''' pro &amp;quot;sub_command == 4&amp;quot; dojde ke změně hodnoty.&lt;br /&gt;
&lt;br /&gt;
 COMMAND TO SDS: WRITE ONE SHARED VARIABLE: sub_command = 4&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
  0               |   3 | bytes | [#0] name (example: &amp;quot;T12&amp;quot;)&lt;br /&gt;
  1               |   1 |  byte | reserved (0x00)&lt;br /&gt;
  4               |   2 | uword | [#0] L#0: data length (L#0)&lt;br /&gt;
  6               |   2 | uword | reserved (0x0000)&lt;br /&gt;
  8               | L#0 |  data | [#0] new data value to write to shared variable&lt;br /&gt;
&lt;br /&gt;
A odpověď je zde shodná jako odpověd pro &amp;quot;sub_command == 1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [32] '''S0 Input Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení kalibračních konstant pro S0 vstupy. Současně jsou předány i aktuální (živé) údaje pro daný S0 vstup.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 32 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 32, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to S0 array [1..MAX] (typical MAX value is 9)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  S0 input number for this reply (for a valid answer: 1..MAX , otherwise: 0x00).&lt;br /&gt;
    1             |   1 |  byte |  total number of S0 inputs for this SDS&lt;br /&gt;
    2             |   1 |  byte |  configuration status (combined flags: bit0 = enabled as S0; bit1 = is tariff used)&lt;br /&gt;
    3             |   1 |  byte |  reserved (0x00)&lt;br /&gt;
    4             |  32 | bytes |  text (name: unit)&lt;br /&gt;
    36            |  32 | bytes |  text (name: money)&lt;br /&gt;
    68            |  32 | bytes |  text (unit: power)&lt;br /&gt;
    100           |  32 | bytes |  text (name: power)&lt;br /&gt;
    132           |  32 | bytes |  text (name: device)&lt;br /&gt;
    168           |   4 | dword |  MTD value&lt;br /&gt;
    172           |   4 | dword |  minimal impulse length (msec)&lt;br /&gt;
    176           |   4 | dword |  impulse constant value (imp. per unit)&lt;br /&gt;
    180           |   4 | bytes |  price for T0&lt;br /&gt;
    184           |   4 | bytes |  price for T1&lt;br /&gt;
    188           |   8 | bytes |  reserved (0x00)&lt;br /&gt;
    196           |   4 | dword |  live value: T0 impulse counter&lt;br /&gt;
    200           |   4 | dword |  live value: T1 impulse counter&lt;br /&gt;
    204           |   4 | dword |  T0 offset&lt;br /&gt;
    208           |   4 | dword |  T1 offset&lt;br /&gt;
    212           |   4 | dword |  live value: measured space between impulses (msec)&lt;br /&gt;
    216           |   4 | dword |  live value: time since last registered impulse (msec)&lt;br /&gt;
    220           |   4 | bytes |  reserved (0x00)&lt;br /&gt;
    224           |   n | bytes |  live value: combined text&lt;br /&gt;
&lt;br /&gt;
Kombinovaný text (combined text) obsahuje vypočtené informace, oddělené znakem '|'. Tyto údaje lze přímo zobrazit uživateli. Výpočet provádí SDS, a stejné hodnoty ukazuje na svém webu. Jedná se zde o doplněk původní funkce GDS (master_command==0).&lt;br /&gt;
&lt;br /&gt;
Délka textu &amp;quot;n&amp;quot; je dynamická, text je zakončen 0x00 (nebo pokud vyjde přesně na maximální délku co se vleze do payloadu, zakončení nemá a je uříznut na posledním znaku, pozor na to).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''(sub_command = 0xFF)''': speciální odpověď pro Tarifní vstup :&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 32, sent from SDS as reply)&lt;br /&gt;
 sub_command == 0xFF (tariff)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  constant 0xFF&lt;br /&gt;
    1             |   3 | bytes |  reserved (0x00)&lt;br /&gt;
    4             |   1 |  byte |  tariff input&lt;br /&gt;
    5             |  32 | bytes |  text (name: tariff)&lt;br /&gt;
    37            |  32 | bytes |  text (name: tariff T0 input)&lt;br /&gt;
    69            |  32 | bytes |  text (name: tariff T1 input)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [33] '''S0 Input History Values''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení historických hodnot počítadel pro vybraný S0 vstup. Každá nová položka se do záznamu historie uloží co 15 minut.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 33 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 33, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to S0 array [1..MAX] (typical MAX value is 9)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  S0 input number for this reply (for a valid answer: 1..MAX , otherwise: 0x00).&lt;br /&gt;
    1             |   1 |  byte |  total number of S0 inputs for this SDS&lt;br /&gt;
    2             |   1 |  byte |  configuration status (combined flags: bit0 = enabled as S0; bit1 = is tariff used)&lt;br /&gt;
    3             |   3 | bytes |  reserved (0x00)&lt;br /&gt;
    6             |   2 |  word |  history depth (number of items) - value &amp;quot;n&amp;quot; (example: five items -&amp;gt; n == 5)&lt;br /&gt;
    8             |   4 | dword |  uptime value for the last element (#n) in the list&lt;br /&gt;
    12            |   4 | dword |  ntptime value for the last element (#n) in the list&lt;br /&gt;
    16            |   4 | dword |  history item #1: value of T0 counter (this is the most oldest item)&lt;br /&gt;
    20            |   4 | dword |  history item #1: value of T1 counter (this is the most oldest item)&lt;br /&gt;
    ...&lt;br /&gt;
    16+(n-1)*8    |   4 | dword |  history item #n: value of T0 counter (this is the most newest item)&lt;br /&gt;
    16+(n-1)*8+4  |   4 | dword |  history item #n: value of T1 counter (this is the most newest item)&lt;br /&gt;
&lt;br /&gt;
Historické údaje počítadel ukazují stav počítadel od současnosti dozadu. Položka #1 je nejstarší, pak #2 je mladší atd. až po položku #n která je nejaktuálnější (nejbližší současné chvíli).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [40] '''AD Input Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení kalibračních konstant pro AD vstupy.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 40 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 40, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to AD array [1..MAX]&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN  | TYPE  | content&lt;br /&gt;
 -----------------+------+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1  |  byte |  actual AD input index for this reply&lt;br /&gt;
    1             |   1  |  byte |  total number of AD inputs&lt;br /&gt;
    2             |   2  | bytes |  reserved (0x00)&lt;br /&gt;
    4             |   4  |   f32 |  F6 calibration constant&lt;br /&gt;
    8             |   4  |   f32 |  F5 calibration constant&lt;br /&gt;
   12             |   4  |   f32 |  F4 calibration constant&lt;br /&gt;
   16             |   4  |   f32 |  F3 calibration constant&lt;br /&gt;
   20             |   4  |   f32 |  F2 calibration constant&lt;br /&gt;
   24             |   4  |   f32 |  F1 calibration constant&lt;br /&gt;
   28             |   4  |   f32 |  F0 calibration constant&lt;br /&gt;
   32             |   1  |  byte |  is calibration factory locked&lt;br /&gt;
   33             |  32  | bytes |  unit&lt;br /&gt;
   65             |   4  | bytes |  reserved (0x00)&lt;br /&gt;
   69             |  32  | bytes |  name&lt;br /&gt;
  101             |   4  | bytes |  reserved (0x00)&lt;br /&gt;
  105             |   4  | dword |  raw value&lt;br /&gt;
  109             |   4  |   f32 |  real value (converted from raw)&lt;br /&gt;
  113             |   n  | bytes |  live value text&lt;br /&gt;
&lt;br /&gt;
Text &amp;quot;live value&amp;quot; obsahuje hodnotu vypočtenou interně v SDS. Text lze prezentovat uživateli (je to stejné jako co SDS ukáže na svém webu). Jedná se o doplňkovou funkci vůči vlastnímu výpočtu ze surových hodnot z GDS (master_command==0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [42] '''PWM Output Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení nastavení pro PWM výstup (konfigurace a živý stav).&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 42 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 42, sent from SDS as reply)&lt;br /&gt;
 sub_command == 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN  | TYPE  | content&lt;br /&gt;
 -----------------+------+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1  |  byte |  reserved (0x00)&lt;br /&gt;
    1             |   1  |  byte |  &amp;quot;N&amp;quot; = total number of PWM outputs&lt;br /&gt;
    2             |   2  | bytes |  reserved (0x00)&lt;br /&gt;
 &lt;br /&gt;
    4+(i*12)+  0  |   4  | dword |  frequency (Hz) for PWMx&lt;br /&gt;
    4+(i*12)+  4  |   4  | dword |  &amp;quot;pulse&amp;quot; value for PWMx&lt;br /&gt;
    4+(i*12)+  8  |   1  |  byte |  &amp;quot;ValueB&amp;quot; value for PWMx&lt;br /&gt;
    4+(i*12)+  9  |   2  | uword |  &amp;quot;ValueS&amp;quot; value for PWMx&lt;br /&gt;
    4+(i*12)+ 11  |   1  |  byte |  output enabled for PWMx&lt;br /&gt;
&lt;br /&gt;
Pozn. PWM1 má hodnotu &amp;quot;i&amp;quot; = 0, PWM2 má hodnotu &amp;quot;i&amp;quot; = 1 atd.&lt;br /&gt;
&lt;br /&gt;
V případě, že je některý z PWMx výstupů nevyužit (&amp;quot;přeskočen&amp;quot;), je přesto v odpovědi uveden, aby bylo zachováno číslovaní pořadí všech PWMx výstupů.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [44] '''RELAYs Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení konfigurace RELAY výstupů (nastavení a živý stav).&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 44 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 44, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to RELAY array [1..MAX]&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN  | TYPE  | content&lt;br /&gt;
 -----------------+------+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1  |  byte |  actual RELAY output index for this reply&lt;br /&gt;
    1             |   1  |  byte |  total number of RELAY outputs&lt;br /&gt;
    2             |   2  | bytes |  reserved (0x00)&lt;br /&gt;
    4             |  32  | bytes |  name&lt;br /&gt;
   36             |   4  | bytes |  reserved (0x00)&lt;br /&gt;
   40             |   1  |  byte |  &amp;quot;relay-controlled-by&amp;quot; value&lt;br /&gt;
   41             |   1  |  byte |  &amp;quot;relay-output&amp;quot; value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [48] '''SD Card Status Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení stavu SD karty.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 48 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 48, sent from SDS as reply)&lt;br /&gt;
 sub_command == 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  card mounted &lt;br /&gt;
    1             |   3 | bytes |  reserved&lt;br /&gt;
    4             |   4 | dword |  card type&lt;br /&gt;
    8             |   4 | dword |  card ProdSN&lt;br /&gt;
   12             |   4 | dword |  card init attempts counter&lt;br /&gt;
   16             |   4 | dword |  card init failures counter&lt;br /&gt;
   20             |   4 | dword |  card total sector count in FAT in KiB&lt;br /&gt;
   24             |   4 | dword |  total sector reads counter&lt;br /&gt;
   28             |   4 | dword |  total sector writes counter&lt;br /&gt;
   32             |   4 | dword |  total sector r/w failures counter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [50] '''Serial Port Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz není pro &amp;quot;version == 0x00&amp;quot; podporován. Potřebujete novější &lt;br /&gt;
firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [64] '''DataFlash (NVM) Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz není pro &amp;quot;version == 0x00&amp;quot; podporován. Potřebujete novější &lt;br /&gt;
firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [128] '''Reserved''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz není v současné verzi použit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (1-PŘ) Master Command (první produktová řada: &amp;quot;TV = 0001....&amp;quot; ) ==&lt;br /&gt;
&lt;br /&gt;
Jednotlivé základní příkazy (''master command'') - zatím nejsou pro &lt;br /&gt;
první produktovou řadu definovány.&lt;br /&gt;
&lt;br /&gt;
Detaily zde budou doplněny.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=M2M:_S-UDP_protocol&amp;diff=939</id>
		<title>M2M: S-UDP protocol</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=M2M:_S-UDP_protocol&amp;diff=939"/>
		<updated>2025-03-15T08:18:02Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt; Tato stránka popisuje funkci zařízení SDS '''druhé produktové řady''' - protože SDS první produktové řady používají jiný protokol.&lt;br /&gt;
&lt;br /&gt;
== Rychlá komunikace: S-UDP ==&lt;br /&gt;
&lt;br /&gt;
Pomocí speciálního protokolu, kdy se data přenášejí prostřednictvím [http://en.wikipedia.org/wiki/User_Datagram_Protocol UDP], je možné získávat informace z výrobků řady SDS/OnlineTechnology.&lt;br /&gt;
&lt;br /&gt;
 S-UDP používá následující výchozí UDP PORT: 310&lt;br /&gt;
&lt;br /&gt;
Komunikace probíhá formou DOTAZ - ODPOVĚĎ. To znamená, že ten, kdo má o informace zájem (vzdálený uživatel) pošle dotaz (korektně vyplněný UDP paket, viz dále) a obratem obdrží od zařízení odpověď - UDP paket s informacemi. UDP Port na kterém je komunikace prováděna lze samozřejmě v administraci zařízení změnit.&lt;br /&gt;
&lt;br /&gt;
Přenos dat využívá specifického protokolu, který umožňuje bezpečně ovládat specifické zařízení SDS.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Typické použití:''' komunikace zařízení SDS s protistranou (např. aplikace na mobilním telefonu).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Bezpečnost ==&lt;br /&gt;
&lt;br /&gt;
Protokol S-UDP je založen na důsledné autentizaci strany, která posílá zprávu - zařízení SDS ověřuje identitu odesílatele příkazu, a ten může ověřit identitu SDS který odpovídá.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Je to založeno na následujícím principu:&lt;br /&gt;
&lt;br /&gt;
- S-UDP protokol je zabezpečen symetrickou šifrou, se sdíleným klíčem který znají jen komunikující strany (bezpečnost je přímo úměrná úrovni zabezpečení tohoto klíče na obou stranách)&lt;br /&gt;
&lt;br /&gt;
- SDS má unikátní identifikátor (zaručeně unikátní, od výrobce) který nelze změnit (je fyzicky vypálen v SoC - nezměnitelně přímo v silikonu chipu).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== S-UDP protokol ==&lt;br /&gt;
&lt;br /&gt;
Každý příkaz a odpověď jsou v samostatném, jediném, UDP paketu.&lt;br /&gt;
&lt;br /&gt;
Každý paket je sestaven v rámci společného formátu, který je zde popsán. Samotný doplňující datový obsah (payload) je dynamický, a u některých příkazů není potřeba.&lt;br /&gt;
&lt;br /&gt;
S-UDP Paket se tedy skládá z těchto základní částí (tyto části jsou právě přenášeny UDP paketem, v následující sestavě):&lt;br /&gt;
&lt;br /&gt;
  [MASTER PACKET CONTENTS]&lt;br /&gt;
 &lt;br /&gt;
   OFFSET    | LEN    |  DATA&lt;br /&gt;
   ----------+--------+---------------------------------------------------------------&lt;br /&gt;
     0       |     28 |  HEADER&lt;br /&gt;
    28       |  PL*16 |  ENCRYPTED PAYLOAD (contains: payload-header and payload-data)&lt;br /&gt;
&lt;br /&gt;
'''Pozor!''' Hodnota PL je velikost [ENCRYPTED PAYLOAD] vydělená 16. To znamená, že velikost [ENCRYPTED PAYLOAD] musí být beze zbytku dělitelná 16 (tzn. pouze hodnota 16, 32, 64, ...) ! Pokud je potřeba, doplní se na úplný konec (viz oblast &amp;quot;R&amp;quot;) zarovnání do potřebné délky, aby se dosáhlo čisté dělitelnosti 16.&lt;br /&gt;
&lt;br /&gt;
 LITTLE-ENDIAN&lt;br /&gt;
&lt;br /&gt;
Následující uvedené položky jsou ve formátu [http://en.wikipedia.org/wiki/Endianness#Little-endian Little-Endian] (procesory: ARM, x86):&lt;br /&gt;
* ''uword'' (unsigned 16-bit)&lt;br /&gt;
* ''dword'' (unsigned 32-bit)&lt;br /&gt;
* ''slong'' (signed   32-bit)&lt;br /&gt;
* ''qword'' (unsigned 64-bit)&lt;br /&gt;
&lt;br /&gt;
Položky typu: ''byte'', ''sbyte'', ''bytes'' - jsou jednotlivé samostatné bajty, nesdružené do společného čísla.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Zde jsou uvedeny detailní položky:&lt;br /&gt;
 &lt;br /&gt;
  [MASTER PACKET CONTENTS]&lt;br /&gt;
 &lt;br /&gt;
   OFFSET   | LEN  |  TYPE  | DATA&lt;br /&gt;
   ---------+------+--------+-----------------------------&lt;br /&gt;
 &lt;br /&gt;
                              [HEADER]&lt;br /&gt;
 &lt;br /&gt;
    0       |   3  |  bytes | header &amp;quot;SDS&amp;quot;&lt;br /&gt;
    3       |   1  |   byte | TV = (SDS-product-line) including (S-UDP protocol master-version)&lt;br /&gt;
    4       |   1  |   byte | PL = number of 16B chunks - this is the payload_length of [ENCRYPTED PAYLOAD] (example: PL==10 =&amp;gt; 160 bytes)&lt;br /&gt;
    5       |   1  |   byte | encryption-flag  (NOW ACCEPTS ONLY: 0x10 == XTEA-64-CTR)&lt;br /&gt;
    6       |   1  |   byte | reserved&lt;br /&gt;
    7       |   1  |   byte | CK1: basic additive checksum for [ENCRYPTED PAYLOAD] (start from (including) byte offset [28] and forward)&lt;br /&gt;
    8       |   4  |  dword | user_identifier (correlation identifier) - use this to correlate query to response&lt;br /&gt;
   12       |  16  |  bytes | CounterBlock&lt;br /&gt;
  ----------+------+--------+----------------------------&lt;br /&gt;
 &lt;br /&gt;
                              [ENCRYPTED PAYLOAD] -&amp;gt; everything from this point is included:&lt;br /&gt;
 &lt;br /&gt;
   28       |   1  |   byte | random number (shall be always different than what was used ever before)&lt;br /&gt;
   29       |   1  |   byte | CK2: basic additive checksum for [HEADER] (all bytes [0] to [27] included, BUT: skipping byte [7])&lt;br /&gt;
   30       |   2  |  uword | XR_MTU value (maximal size of the custom-payload data including R) ( XL + R &amp;lt;= XR_MTU )&lt;br /&gt;
   32       |   4  |  dword | CRC-32 (part-header and plain-text payload) -&amp;gt; byte [36] (included) up to [52+XL-1] (the R area is not included here)&lt;br /&gt;
   36       |   4  |  dword | uptime (msecs from boot)&lt;br /&gt;
   40       |   4  |  dword | time (epoch) (or, if no NTP is available to SDS, this will be a value of &amp;quot;seconds from boot&amp;quot;)&lt;br /&gt;
   44       |   4  |  dword | SDS device type (0xXXXXXXXX) - THIS MUST MATCH&lt;br /&gt;
   48       |   1  |   byte | master_command&lt;br /&gt;
   49       |   1  |   byte | sub_command&lt;br /&gt;
   50       |   2  |  uword | XL value (exact length of the actually useful payload-data): XL = (PL*16) - R - 24&lt;br /&gt;
 &lt;br /&gt;
   52       |  XL  |  bytes | custom payload-data [C-PAYLOAD]&lt;br /&gt;
 &lt;br /&gt;
   52+XL    |   R  |  bytes | specific set of (random data filling) to round-up (the PL*16 value) to a clean 16B multiply (16, 32, 64, etc.)&lt;br /&gt;
 &lt;br /&gt;
  ----------+------+--------+----------------------------&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;SDS device type&amp;quot; je určena podle typu SDS, se kterým komunikujete. Seznam hodnot viz [[Firmware]], například 0xB1900001 pro BIG-64 nebo 0xB1900002 pro BIG-128 atd.Pokud tato hodnota neodpovídá typu firmware v daném SDS, bude paket zcela ignorován a neproveden. Jediná vyjímka je master_command == NOP, což je záměrná vyjímka, která umožní zjištění typu SDS (a přítomnosti SDS) při zahájení komunikace.&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;random number&amp;quot; je zde proto, aby šifrované data byly pokaždé jiné, i když se přenáší stejný obsah (tzn. jedná se o zábranu stenografického odhadu obsahu payloadu).&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;time&amp;quot; umožňuje zařízení, které komunikuje s SDS, zabránit &amp;quot;replay&amp;quot; útoku (když se zaznamená paket a později se zopakuje - v takovém případě se na to přijde protože &amp;quot;time&amp;quot; bude významně starší). SDS kontrolu provádí vůči svému vnitřnímu času, vzdálené zařízení co se SDS komunikuje by tuto kontrolu mělo dělat také.&lt;br /&gt;
&lt;br /&gt;
Protože hodnota &amp;quot;time&amp;quot; se zvyšuje pouze co 1 vteřinu, je k dispozici i hodnota &amp;quot;uptime&amp;quot; která se po resetu/bootu (kde se nastaví na nulu) zvyšuje každou 1 milisekundu o jedničku. Kombinace umožňuje vhodně sestavit algoritmus detekce &amp;quot;replay&amp;quot; útoků.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;CounterBlock&amp;quot; se využívá pro nastavení začátku šifrování a dešifrování. Všechny detaily jsou zcela shodné jako pro [[FULL-C_crypto_functions|FULL-C funkci SDS_Crypt()]]. Z hlediska bezpečnosti je důležité, aby obě strany neustále používaly zvyšující se CounterBlock obsah (začít &amp;quot;od jedničky&amp;quot; pouze a jenom po resetu/bootu), tzn. pro každou zprávu použít poslední hodnotu counteru a na té dále stavět pro novou zprávu atd. .&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;crc32&amp;quot; se počítá pro dešifrované data, algoritmus je identický jako pro [[FULL-C_crypto_functions|FULL-C funkci SDS_Crypt()]].&lt;br /&gt;
&lt;br /&gt;
Pro zvolené XTEA-64-CTR má &amp;quot;CounterBlock&amp;quot; následující sestavu svého obsahu:&lt;br /&gt;
&lt;br /&gt;
   CounterBlock:&lt;br /&gt;
 &lt;br /&gt;
   OFFSET    | LEN  |  TYPE  |  DATA&lt;br /&gt;
   ----------+------+--------+-----------------------------------------------------------------------------------------&lt;br /&gt;
    0        |   8  |  qword |  XTEA-64-CTR: 64-bit counter (counter is increased by 1, for each 16B of processed data)&lt;br /&gt;
    8        |   8  |  bytes |  (reserved) not-used area = reserved (fill with 0x00) &lt;br /&gt;
&lt;br /&gt;
Pro jiné mechanismy (do budoucna) je v CounterBlock oblasti přidána ještě 8B rezerva (např. pro AES-128 se pak využije všech 16 bajtů).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;TV&amp;quot; (v [HEADER] na offsetu [3]) je určení typu a verze protokolu. Skládá se ze dvou čtyřbitových údajů, viz následující tabulka.&lt;br /&gt;
&lt;br /&gt;
 TV: ttttVVVV&lt;br /&gt;
     76543210&lt;br /&gt;
 &lt;br /&gt;
 BIT OFFSET | LEN (bits) | content&lt;br /&gt;
 -----------+------------+--------------------------------------------------&lt;br /&gt;
  7 (MSB)   |          4 |  &amp;quot;t&amp;quot;: produc-line value: 1 == first, 2 == second&lt;br /&gt;
  3         |          4 |  &amp;quot;V&amp;quot;: version: 0 = first S-UDP protocol version&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
V konečném důsledku, skutečnou funkční důležitost ma '''[C-PAYLOAD]''', což je blok dat, který obsahuje hodnoty a příkazy, které pomocí S-UDP chceme přenést.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Postup při příjmu S-UDP paketu ==&lt;br /&gt;
&lt;br /&gt;
Každá strana, která přijme S-UDP paket, provede následující kroky:&lt;br /&gt;
&lt;br /&gt;
 1) Ověřit platnost hodnot v [HEADER]&lt;br /&gt;
    a. text &amp;quot;SDS&amp;quot; (platný obsah)&lt;br /&gt;
    b. hodnota &amp;quot;TV&amp;quot; (&amp;quot;master-version&amp;quot; a &amp;quot;product-line&amp;quot;) (platný obsah)&lt;br /&gt;
    c. hodnota &amp;quot;PL&amp;quot; v platných mezích&lt;br /&gt;
    d. hodnota &amp;quot;encryption_flag&amp;quot; (platný obsah)&lt;br /&gt;
 2) Ověřit základní additive-checksum pro [ENCRYPTED PAYLOAD]&lt;br /&gt;
    a. přečíst bajty [28] až [28+PL-1] a sečíst je (overflow osm bitů), výsledek musí odpovídat &amp;quot;CK1&amp;quot; hodnotě&lt;br /&gt;
 3) Nastavit dešifrování&lt;br /&gt;
    a. zvolit algoritmus podle &amp;quot;encryption-flag&amp;quot; hodnoty&lt;br /&gt;
    b. nastavit klíč (stejný jako na protistraně, samozřejmě není přenášen přes síť)&lt;br /&gt;
    c. nastavit &amp;quot;CounterBlock&amp;quot; (přečíst z [HEADER])&lt;br /&gt;
 4) Dešifrovat celou [ENCRYPTED PAYLOAD] na plain-text&lt;br /&gt;
    a. hodnota &amp;quot;PL&amp;quot; musí být dělitelná 16 beze zbytku (tato podmínka závisí na použitém šifrovaní)&lt;br /&gt;
 5) Ověřit základní additive-checksum pro [HEADER] - teď totiž už máme hodnotu &amp;quot;CK2&amp;quot;&lt;br /&gt;
    a. přečíst bajty [0] až [27] (ovšem přeskočit byte [7] - pozor!) a sečíst je (overflow osm bitů), výsledek musí odpovídat &amp;quot;CK2&amp;quot; hodnotě&lt;br /&gt;
 6) Ověřit další hodnoty&lt;br /&gt;
    a. &amp;quot;SDS-DEVICE-TYPE&amp;quot; musí odpovídat (záruka ovládání toho správného typu SDS) - pokud hodnotu nevíte, můžete si &amp;quot;pomoci&amp;quot; NOP příkazem&lt;br /&gt;
    b. uschovat hodnotu &amp;quot;XR_MTU&amp;quot; pro vytváření odpovědi (&amp;quot;XR_MTU&amp;quot; omezuje velikost odpovědi, kterou můžeme zpátky odeslat)&lt;br /&gt;
    c. ověřit časové údaje (&amp;quot;time&amp;quot; a &amp;quot;uptime&amp;quot;)&lt;br /&gt;
    d. ověřit &amp;quot;XL&amp;quot; vůči &amp;quot;PL&amp;quot;&lt;br /&gt;
 7) Ověřit CRC-32 dešifrovaného payloadu&lt;br /&gt;
    a. spočítat CRC-32 správným algoritmem, vučí bajtům (plain-text) z [36] až [52+XL-1] včetně&lt;br /&gt;
 &lt;br /&gt;
 8) Hotovo: teď se provede aktuální příkaz (Master Command, dle tabulky podle produktové řady viz &amp;quot;TV&amp;quot;)&lt;br /&gt;
            a odešle odpověď (ponechat user_identifier pro korelaci) (pozor na &amp;quot;XR_MTU&amp;quot; omezení)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Postup při odesílání S-UDP paketu ==&lt;br /&gt;
&lt;br /&gt;
Odesílatel zprávy provádí tyto kroky:&lt;br /&gt;
&lt;br /&gt;
 1) Je sestaven přesný obsah [C-PAYLOAD] a určena odpovídající hodnota XL&lt;br /&gt;
    a. obsah samozřejmě odpovídá tomu co chcete odeslat&lt;br /&gt;
    b. určí se i &amp;quot;master-command&amp;quot; a &amp;quot;sub-command&amp;quot; (pozor na produktovou řadu SDS - viz &amp;quot;TV&amp;quot;)&lt;br /&gt;
 2) Vyplní se [HEADER]&lt;br /&gt;
    a. hlavička &amp;quot;SDS&amp;quot;, &amp;quot;encryption-flag&amp;quot;&lt;br /&gt;
    b. zapsat správnou hodnotu &amp;quot;TV&amp;quot; podle protokolu a konkrétního SDS (&amp;quot;master-version&amp;quot;, &amp;quot;product-line&amp;quot;)&lt;br /&gt;
    c. určí se nová unikátní hodnota &amp;quot;user_identifier&amp;quot;, a zapíše se do [HEADER]&lt;br /&gt;
    d. zapíše se &amp;quot;CounterBlock&amp;quot; (hodnota pokračuje po předchozím paketu)&lt;br /&gt;
 3) Nachystá se zaokrouhlovací oblast &amp;quot;R&amp;quot; &lt;br /&gt;
    a. Pokud XL není beze zbytku dělitelná 16, musí se doplnit oblastí &amp;quot;R&amp;quot;&lt;br /&gt;
 4) Spočítá se hodnota &amp;quot;PL&amp;quot;&lt;br /&gt;
    a. PL = (XL + R)/16&lt;br /&gt;
    b. zapsat do [HEADER]&lt;br /&gt;
 5) Začne se vyplňovat [ENCRYPTED PAYLOAD]&lt;br /&gt;
    a. zapsat náhodný byte do &amp;quot;random number&amp;quot;&lt;br /&gt;
    b. spočítá se hodnota &amp;quot;CK2&amp;quot; (sečíst bajty [0] až [27] - ovšem přeskočit byte [7] - pozor!) &lt;br /&gt;
    c. zapsat hodnotu &amp;quot;XR_MTU&amp;quot; podle možností zařízení (tzn. jak velkou odpověď lze bezpečně přijmout, podle omezení sítě)&lt;br /&gt;
    d. zapíší se hodnoty &amp;quot;uptime&amp;quot; a &amp;quot;time&amp;quot;, zapsat hodnotu &amp;quot;SDS-DEVICE-TYPE&amp;quot;&lt;br /&gt;
    e. zapsat &amp;quot;master-command&amp;quot; a &amp;quot;sub-command&amp;quot;&lt;br /&gt;
 6) Spočítá se CRC-32 (před šifrováním)&lt;br /&gt;
    a. spočítat crc32 pro bajty (plain-text) z offsetu [36] až [52+XL-1] včetně&lt;br /&gt;
 7) Nastavit šifrování&lt;br /&gt;
    a. zvolit algoritmus (musí odpovídat tomu, co se zapsalo do &amp;quot;encryption-flag&amp;quot;)&lt;br /&gt;
    b. nastavit klíč (stejný jako na protistraně, samozřejmě není přenášen přes síť)&lt;br /&gt;
    c. nastavit &amp;quot;CounterBlock&amp;quot; (stejný jako byl zapsán [HEADER])&lt;br /&gt;
 8) Šifrovat celou [ENCRYPTED PAYLOAD] na plain-text&lt;br /&gt;
    a. hodnota &amp;quot;PL&amp;quot; musí být dělitelná 16 beze zbytku (tato podmínka závisí na použitém šifrovaní)&lt;br /&gt;
    b. aktualizovaná hodnota &amp;quot;CounterBlock&amp;quot; (zvýšená o průběh šifrování) se uschová pro další použití - viz bod &amp;quot; 2) c. &amp;quot;&lt;br /&gt;
 9) Spočítat základní additive-checksum pro [ENCRYPTED PAYLOAD]&lt;br /&gt;
    a. přečíst bajty [28] až [28+PL-1] a sečíst je (overflow osm bitů), výsledek se zapíše do &amp;quot;CK1&amp;quot; hodnoty&lt;br /&gt;
 &lt;br /&gt;
 10) Hotovo: paket se následně odešle přes síť do protistrany, která odpoví novým paketem - ten je vztažen k tomuto dotazu pomocí &amp;quot;user_identifier&amp;quot; hodnoty.&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Vzorové obsahy paketů ==&lt;br /&gt;
&lt;br /&gt;
Na stránce [[M2M: S-UDP protocol: examples]] naleznete ukázkové vzorové pakety a jejich vnitřní obsah, i se zobrazeních jednotlivých položek v paketu (před a po šifrování).&lt;br /&gt;
Toto je vhodné pro vývojáře komunikační protistrany, kterým nestačí popis postupu na této stránce, ale chtějí také vidět jednotlivé kroky s aktuálními hodnotami.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Seznam hlavních příkazů ==&lt;br /&gt;
&lt;br /&gt;
Obě produktové řady SDS, které jsou na trhu, mají svou sadu &amp;quot;master_command&amp;quot; příkazů. Proto je potřeba nejprve zjistit, do které produktové řady vaše SDS spadá, a podle toho dále pokračovat. Lze to přímo odvodit od typu SDS (&amp;quot;SDS-DEVICE-TYPE&amp;quot; hodnota), nebo se zeptat příkazem NOP.&lt;br /&gt;
&lt;br /&gt;
Zařazení SDS do produktových řad je v [[Seznam_Všech_SDS|tomto seznamu]].&lt;br /&gt;
&lt;br /&gt;
* První produktová řada: &amp;quot;TV = 0001....&amp;quot;  -&amp;gt; '''(1PŘ)'''&lt;br /&gt;
* Druhá produktová řada: &amp;quot;TV = 0010....&amp;quot;  -&amp;gt; '''(2PŘ)'''&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2PŘ) Master Command (druhá produktová řada: &amp;quot;TV = 0010....&amp;quot; ) ==&lt;br /&gt;
&lt;br /&gt;
Jednotlivé základní příkazy (''master command''):&lt;br /&gt;
 &lt;br /&gt;
  MASTER COMMAND  |  command&lt;br /&gt;
  ----------------+-------------------------------------&lt;br /&gt;
     0            |   NOP (replies with NOP)&lt;br /&gt;
     1            |   general device status&lt;br /&gt;
     2            |   1-Wire access&lt;br /&gt;
     4            |   read FC-Get list&lt;br /&gt;
     8            |   write FC-Set list&lt;br /&gt;
    16            |   FULL-C shared variable(s) access&lt;br /&gt;
    32            |   serial port access&lt;br /&gt;
    64            |   DataFlash access&lt;br /&gt;
   128            |   reserved&lt;br /&gt;
 &lt;br /&gt;
Jak lze vidět, jednotlivé ''master command'' příkazy jsou dále rozlišeny pomocí hodnoty ''sub command''.&lt;br /&gt;
&lt;br /&gt;
Každý příkaz má doplňující datovou sadu, tzn. [C-PAYLOAD]. V rámci těchto dat jsou uvedeny všechny hodnoty, které přesně určují co se má stát (popř. jsou zde všechny odpovědi na dotaz).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [0] '''NOP''' ==&lt;br /&gt;
&lt;br /&gt;
SDS odpoví na tento příkaz odesláním [0] NOP.&lt;br /&gt;
&lt;br /&gt;
Tohoto příkazu lze využít k ověření komunikace a k vzájemné základní synchronizace.&lt;br /&gt;
&lt;br /&gt;
Specifická vlastnost příkazu NOP, oproti všem ostatním příkazům, je to, že SDS odpoví i v případě, že v dotazu není správně uvedený SDS Device Type. Toto je záměr, aby bylo možné při začátku komunikace s SDS modulem, tento modul identifikovat. Samozřejmě všechny ostatní bezpečnostní prvky jsou stále aplikovány, jen tento detail je zde upraven.&lt;br /&gt;
&lt;br /&gt;
Tento příkaz je také velmi užitečný pro získání hodnoty &amp;quot;TV&amp;quot; z [HEADER], tím pádem pro určení číslo produktové řady SDS - a tím pádem k určení které &amp;quot;master_command&amp;quot; příkazy jsou k dispozici !&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 0, sent from SDS as reply)&lt;br /&gt;
 sub_command = 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN   | TYPE  | content&lt;br /&gt;
 -----------------+-------+-------+------------------------------------------------------&lt;br /&gt;
    0             |     6 | bytes |  MAC ADDRESS (bytes, not text)&lt;br /&gt;
    6             |     4 | bytes |  SDS Device Type&lt;br /&gt;
   10             |     4 | dword |  FW version &lt;br /&gt;
   14             |    32 | bytes |  sysLocation (missing the 0x00 terminator)&lt;br /&gt;
   46             |     8 | bytes |  reserved (0x00)&lt;br /&gt;
   54             |    32 | bytes |  OEM string (missing the 0x00 terminator)&lt;br /&gt;
   86             |     8 | bytes |  reserved (0x00)&lt;br /&gt;
   94             |     1 |  byte |  bylo aktivováno RSTD&lt;br /&gt;
   95             |     1 |  byte |  bylo aktivováno PVD&lt;br /&gt;
   96             |     1 |  byte |  SDS je: BIG (hodnota 1) nebo STSW (hodnota 0)&lt;br /&gt;
   97             |     8 | bytes |  reserved (0x00)&lt;br /&gt;
  105             |     2 | uword |  web interface TCP port number (typicky 80)&lt;br /&gt;
  107             |     1 |  byte |  SNMP-read enabled&lt;br /&gt;
  108             |     1 |  byte |  SNMP-write enabled&lt;br /&gt;
  109             |     1 |  byte |  FULLC shared vars access lock (0 = unlocked) tzn. sys[150]&lt;br /&gt;
  110             |     1 |  byte |  FULLC program run status&lt;br /&gt;
  111             |     1 |  byte |  FULLC program started-by info&lt;br /&gt;
  112             |     1 |  byte |  FULLC program watchdog active&lt;br /&gt;
  113             |     6 | bytes |  reserved&lt;br /&gt;
  119             |     4 |   f32 |  backup battery voltage (milliVolts)&lt;br /&gt;
&lt;br /&gt;
Pozn. rozšířená funkcionalita příkazu NOP (tedy vracení payloadu) bylo přidáno až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [1] '''General Device Status''' ==&lt;br /&gt;
&lt;br /&gt;
SDS odpoví zasláním vybraných údajů, jejichž seznam je přesně daný. Tato funkce je k dispozici pro umožnění rychlého přístupu k základnímu stavu zařízení SDS, bez složité přípravy.&lt;br /&gt;
&lt;br /&gt;
Základní odpověď s nejzajímavějšími živými údaji. Určeno např. pro průběžnou aktualizaci stavu zobrazeného uživateli.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 1, sent from SDS as reply)&lt;br /&gt;
 sub_command = 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN   | TYPE  | content&lt;br /&gt;
 -----------------+-------+-------+------------------------------------------------------&lt;br /&gt;
    0             |     6 | bytes |  MAC ADDRESS (bytes, not text)&lt;br /&gt;
    6             |     1 |  byte |  Ethernet Link Status / Speed (0, 10, 100)&lt;br /&gt;
    7             |     1 |  byte |  Amount of users logged into SDS Web Admin&lt;br /&gt;
    8             |    32 | bytes |  sysLocation (missing the 0x00 terminator)&lt;br /&gt;
   40             |     1 |  byte |  IP Watchdog Config status&lt;br /&gt;
   41             |     1 |  byte |  IP Watchdog Output (relay) status&lt;br /&gt;
   42             |     2 | uword |  IP Watchdog RTT value (note.: 0xFFFF = not available)&lt;br /&gt;
   44             |     1 |  byte |  DHCP status&lt;br /&gt;
   45             |     1 |  byte |  reserved&lt;br /&gt;
   46             |     1 |  byte |  NTP status&lt;br /&gt;
   47             |     1 | sbyte |  NTP offset (+/- hours) (signed char)&lt;br /&gt;
   48             |     2 | uword |  SoC chip temperature (degC)&lt;br /&gt;
   50             |     1 |  byte |  GPIO-TOPB PIN(s) direction (0 == input)&lt;br /&gt;
   51             |     1 |  byte |  GPIO-TOPB PIN(s) pin value&lt;br /&gt;
   52             |  32*1 |  byte |  OPTO [1]..[32] status (0xFF == signal) (0x00 == nosignal)&lt;br /&gt;
   84             |  32*1 |  byte |  RELAY [1]..[32] status (active/nonactive)&lt;br /&gt;
  116             |  32*2 | uword |  ADC [0]..[31] RAW value&lt;br /&gt;
  180             |     1 |  byte |  General 1-W BUS status&lt;br /&gt;
  181             |     1 |  byte |  1-W BUS A - active device count&lt;br /&gt;
  182             |     1 |  byte |  1-W BUS B - active device count&lt;br /&gt;
  183             |     3 | bytes |  reserved (0x00)&lt;br /&gt;
  186             |     1 |  byte |  S0 Tariff Value (active/nonactive)&lt;br /&gt;
  187             |     1 |  byte |  number of the following S0 INPUT DB data blocks:&lt;br /&gt;
  188             | 31*28 |  data |  S0 INPUT [1]..[ (max) 31] DB (data block)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 S0-INPUT DB offset | LEN | TYPE  | content&lt;br /&gt;
 -------------------+-----+-------+-------------------------------------------------------&lt;br /&gt;
    0               |   1 |  byte |  configuration status (combined flags: bit0 = enabled as S0; bit1 = is tariff used)&lt;br /&gt;
    1               |   3 | bytes |  reserved (filled with 0x00)&lt;br /&gt;
    4               |   4 | dword |  T0 impulse counter&lt;br /&gt;
    8               |   4 | dword |  T1 impulse counter&lt;br /&gt;
    12              |   4 | dword |  T0 offset&lt;br /&gt;
    16              |   4 | dword |  T1 offset&lt;br /&gt;
    20              |   4 | dword |  measured space between impulses (msec)&lt;br /&gt;
    24              |   4 | dword |  time since last registered impulse (msec)&lt;br /&gt;
&lt;br /&gt;
Sestava [C-PAYLOAD] je tedy zřejmá. &lt;br /&gt;
&lt;br /&gt;
Poslední blok (offset [188] až [1083] včetně) je určen pro přenos 32 S0 vstupů - často je jich ale v zařízení SDS fyzicky přítomno mnohem méně, např. jen devět - a potom zařízení SDS ve své odpovědi pošle jen devět záznamů (namísto 32) (toto se týká pouze a jenom S0 položek, né jiných v rámci paketu). To je provedeno z praktického důvodu: aby byl UDP paket dostatečně malý (a tedy rychlý na zpracování).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [2] '''1-Wire Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tato funkce se používá pro čtení stavu hodnot získaných z obou 1-W sběrnic, kterými SDS disponuje (některé SDS mají jen jednu sběrnici). Maximální počet prvků (chipů) na sběrnici je 64, celkem je tedy k dispozici 2x64 = 128 prvků.&lt;br /&gt;
&lt;br /&gt;
 QUERY/COMMAND TO SDS (master_command == 2)&lt;br /&gt;
 &lt;br /&gt;
 sub_command | meaning&lt;br /&gt;
 ------------+-----------------------------------------------------------&lt;br /&gt;
           0 |  reserved&lt;br /&gt;
           1 |  obtain status, and list of found items on BUS A&lt;br /&gt;
           2 |  obtain status, and list of found items on BUS B&lt;br /&gt;
           4 |  list all read-values on BUS A&lt;br /&gt;
           8 |  list all read-values on BUS B&lt;br /&gt;
&lt;br /&gt;
První možností tedy je sub_command == 1 , tzn. výpis nalezených zařízení na sběrnici A respektive B:&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 1, sent from SDS as reply)&lt;br /&gt;
 sub_command = 1 or 2&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  global 1-W controller status (SDS status)&lt;br /&gt;
    1             |   1 |  byte |  number of active items on BUS A&lt;br /&gt;
    2             |   1 |  byte |  number of active items on BUS B&lt;br /&gt;
    3             |   1 |  byte |  reserved (0x00)&lt;br /&gt;
    4             |  12 |  data |  1-W item status #0&lt;br /&gt;
    . . .         | ... |   ... |  . . .&lt;br /&gt;
    4+12*63       |  12 |  data |  1-W item status #63&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;1-W item status&amp;quot; ofs | LEN | TYPE  | content&lt;br /&gt;
 ----------------------+-----+-------+-------------------------------------------------------&lt;br /&gt;
    0                  |   1 |  byte |  ctrl: main-status&lt;br /&gt;
    1                  |   1 |  byte |  ctrl: sub-status &lt;br /&gt;
    2                  |   2 | bytes |  reserved (filled with 0x00)&lt;br /&gt;
    4                  |   8 | bytes |  ROM-CODE [0]..[7]&lt;br /&gt;
&lt;br /&gt;
Následuje: výpis získaných hodnot (např. změřené teploty z teplotních čidel) pro jednotlivé sběrnice :&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 1, sent from SDS as reply)&lt;br /&gt;
 sub_command = 4 or 8&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  global 1-W controller status (SDS status)&lt;br /&gt;
    1             |   1 |  byte |  number of active items on BUS A&lt;br /&gt;
    2             |   1 |  byte |  number of active items on BUS B&lt;br /&gt;
    3             |   1 |  byte |  reserved (0x00)&lt;br /&gt;
    4             |  12 |  data |  1-W item value #0&lt;br /&gt;
    . . .         | ... |   ... |  . . .&lt;br /&gt;
    4+12*63       |  12 |  data |  1-W item value #63&lt;br /&gt;
 &lt;br /&gt;
 &amp;quot;1-W item value&amp;quot; ofs  | LEN | TYPE  | content&lt;br /&gt;
 ----------------------+-----+-------+-------------------------------------------------------&lt;br /&gt;
    0                  |   1 |  byte |  ctrl: main-status&lt;br /&gt;
    1                  |   1 |  byte |  ctrl: sub-status&lt;br /&gt;
    2                  |   1 |  byte |  value of ROM-CODE offset [0] (1-W DEVICE TYPE: ID)&lt;br /&gt;
    3                  |   1 |  byte |  value of ROM-CODE offset [7] (1-W DEVICE TYPE: CRC)&lt;br /&gt;
    4                  |   4 | slong |  1-W read: primary value&lt;br /&gt;
    8                  |   4 | slong |  1-W read: secondary value&lt;br /&gt;
&lt;br /&gt;
Každý chip na sběrnici 1-Wire má vždy primární a sekundární hodnotu, kterou SDS pro daný chip udržuje (ne vždy jsou však, v závislosti na konkrétním chipu, obě hodnoty použity). Aktuální význam je potřeba určit podle chipu (příklad: DS18B20 má &amp;quot;primary value&amp;quot; zpracovanou teplotu v degC, a &amp;quot;secondary value&amp;quot; přímou surovou 16-bit hodnotu přečtenou z čidla).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [4] '''Read FC-Get List''' ==&lt;br /&gt;
&lt;br /&gt;
Dotaz (query) který obsahuje seznam indexů jejichž hodnoty jsou tazatelem požadovány, se posílá do SDS, které následně odpoví (reply).&lt;br /&gt;
&lt;br /&gt;
Dotaz i odpověď má dynamický obsah, který je specificky strukturován.&lt;br /&gt;
&lt;br /&gt;
 QUERY (master_command == 4, sent to SDS)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------&lt;br /&gt;
  0               |   2 | uword | [#0] index value &lt;br /&gt;
  2               |   2 | uword | [#0] TBLEN#0: type-bits and data length (L#0)&lt;br /&gt;
  4               | L#0 |  data | [#0] space prepared for answer from SDS&lt;br /&gt;
 &lt;br /&gt;
  (4+(L#0))+0     |   2 | uword | [#1] index value&lt;br /&gt;
  (4+(L#0))+2     |   2 | uword | [#1] TBLEN#1: type-bits and data length (L#1)&lt;br /&gt;
  (4+(L#0))+4     | L#1 |  data | [#1] space prepared for answer from SDS&lt;br /&gt;
 &lt;br /&gt;
  . . .           | ... | . . . | ...&lt;br /&gt;
 &lt;br /&gt;
  Z+0             |   2 | uword | [#n] index value &lt;br /&gt;
  Z+2             |   2 | uword | [#n] TBLEN#n: type-bits and data length (L#n)&lt;br /&gt;
  Z+4             | L#n |  data | [#n] space prepared for answer from SDS&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, v dotazu (query) jsou za sebou naskládány položky (indexy), na které následně SDS odpoví. Vždy musíte u každého indexu, na který se ptáte, uvést typ odpovědi (viz dále) a prostor, kam bude odpověď zapsána - to znamená, musíte znát přesnou délku, kterou má obsah pro daný index !&lt;br /&gt;
&lt;br /&gt;
Pozor na množství dotazů v rámci jednoho paketu, protože velikost dotazu, a také velikost odpovědi, je omezena XR_MTU. Jakmile SDS při skládání odpovědi narazení na XR_MTU protistrany, už více odpovědí do paketu nepřidá (aby nebylo XR_MTU překročeno).&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 4, sent from SDS as reply to query)&lt;br /&gt;
 &lt;br /&gt;
 SDS writes the values into the &amp;quot;[#n] space prepared for answer from SDS&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Odpověď tedy přesně sleduje (vyplňuje) původní dotaz, přičemž [C-PAYLOAD] teď obdrží skutečný datový obsah pro jednotlivé položky. Pokud poskytnete SDS menší prostor pro odpověď, než je potřeba, bude odpověď vyplněna 0x00.&lt;br /&gt;
&lt;br /&gt;
Hodnota &amp;quot;sub_command&amp;quot; je nastavena SDS na počet položek (#n) v odpovědi. Toto omezuje maximální počet položek v jednom paketu na 255.&lt;br /&gt;
&lt;br /&gt;
Následující popis ukazuje kódování typu proměnné a její délky, ve společném slově:&lt;br /&gt;
&lt;br /&gt;
 TBLEN#x: (16-bit unsigned word, little-endian) Type-Bits and Data Length (L#x)&lt;br /&gt;
 &lt;br /&gt;
 TBLEN#x: TTTTvvvvvvvvvvvv&lt;br /&gt;
          FEDCBA9876543210&lt;br /&gt;
 &lt;br /&gt;
 BIT OFFSET (hex) | LEN (bits) | content&lt;br /&gt;
 -----------------+------------+-----------------------------------------&lt;br /&gt;
  F (MSB)         |          4 |  &amp;quot;T&amp;quot;: type (see bit-value in next table)&lt;br /&gt;
  B               |         12 |  &amp;quot;v&amp;quot;: length of data, in bytes&lt;br /&gt;
 &lt;br /&gt;
  &amp;quot;T&amp;quot; bit-values | meaning                     | FULL-C set/get&lt;br /&gt;
            FEDC |                             | (which function)&lt;br /&gt;
 ----------------+-----------------------------+------------------&lt;br /&gt;
            0000 |  unsigned integer (32-bit)  |  _u&lt;br /&gt;
            0001 |  signed integer (32-bit)    |  _i&lt;br /&gt;
            0010 |  float IEEE-754 (32-bit)    |  _f&lt;br /&gt;
            0100 |  string UTF-8 (L#x * 8-bit) |  _a&lt;br /&gt;
            1000 |  reserved (do not use)      |  &lt;br /&gt;
&lt;br /&gt;
Horní 4 bity z TBLEN#x tedy určují typ položky. Pro získání délky L#x položky 'x', je potřeba hodnotu TBLEN#x odmaskovat - použít jen dolních 12 bitů.&lt;br /&gt;
&lt;br /&gt;
Je vaším úkolem správně zvolit typ (T) pro každou položku, pokud zvolíte špatně, nebude údaj pro daný index zpracován.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Index Value''' - každá položka má svůj číselný index, viz [[FULL-C:_set_and_get|seznam všech FULL-C indexů]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Odpověď, kterou na tento příkaz SDS následně posílá, je velmi jednoduchá: [C-PAYLOAD] není vůbec použito (XL=0), a &amp;quot;sub_command&amp;quot; obsahuje následující možnost:&lt;br /&gt;
&lt;br /&gt;
 REPLY FROM SDS (master_command == 8)&lt;br /&gt;
 &lt;br /&gt;
 NOTE: THIS FEATURE (PROPER RESPONSE) IS IMPLEMENTED SINCE FW 15.March.2025 AND ONWARDS&lt;br /&gt;
 (previously no proper response was provided)&lt;br /&gt;
 &lt;br /&gt;
 sub_command | meaning&lt;br /&gt;
 ------------+-----------------------------------------------------------&lt;br /&gt;
           0 |  complete failure (no item read)&lt;br /&gt;
           1 |  partial failure  (some items read, some not read)&lt;br /&gt;
           2 |  success          (all items read OK)&lt;br /&gt;
 &lt;br /&gt;
Další, detailnější, rozlišení selhání (failure) se neprovádí (tzn. SDS neposílá více detailnější informaci ve své odpovědi, než uvedené tři možnosti).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [8] '''Write FC-Get List''' ==&lt;br /&gt;
&lt;br /&gt;
Pokud SDS obdrží zprávu s &amp;quot;master_command == 8&amp;quot;, tak nastaví příslušné FULL-C indexy na nové hodnoty (podle obsahu této přijaté zprávy). &lt;br /&gt;
&lt;br /&gt;
SDS na tuto zprávu odpovídá pouze ve smyslu &amp;quot;úspěch&amp;quot; nebo &amp;quot;neúspěch&amp;quot; - takže pro skutečné ověření hodnot (zda-li se zapsaly správně) musíte proto sami zaslat další zprávu &amp;quot;master_command == 4&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
 COMMAND TO SDS (master_command == 8, sent to SDS)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------&lt;br /&gt;
  0               |   2 | uword | [#0] index value &lt;br /&gt;
  2               |   2 | uword | [#0] TBLEN#0: type-bits and data length (L#0)&lt;br /&gt;
  4               | L#0 |  data | [#0] new data value to write to SDS&lt;br /&gt;
 &lt;br /&gt;
  (4+(L#0))+0     |   2 | uword | [#1] index value&lt;br /&gt;
  (4+(L#0))+2     |   2 | uword | [#1] TBLEN#1: type-bits and data length (L#1)&lt;br /&gt;
  (4+(L#0))+4     | L#1 |  data | [#1] new data value to write to SDS&lt;br /&gt;
 &lt;br /&gt;
  . . .           | ... | . . . | ...&lt;br /&gt;
 &lt;br /&gt;
  Z+0             |   2 | uword | [#n] index value &lt;br /&gt;
  Z+2             |   2 | uword | [#n] TBLEN#n: type-bits and data length (L#n)&lt;br /&gt;
  Z+4             | L#n |  data | [#n] new data value to write to SDS&lt;br /&gt;
&lt;br /&gt;
Lze vidět, že formát je naprosto shodný jako formát odpovědi kterou SDS posílá pro &amp;quot;master_command == 4&amp;quot; zprávu. Nicméně, v tomto případě, je tento obsah [C-PAYLOAD] zapsán '''do''' SDS, které jej zpracuje a provede - pouze ale pokud je délka L#x přesně odpovídající danému indexu.&lt;br /&gt;
&lt;br /&gt;
Odpověď, kterou na tento příkaz SDS následně posílá, je velmi jednoduchá: [C-PAYLOAD] není vůbec použito (XL=0), a &amp;quot;sub_command&amp;quot; obsahuje následující možnost:&lt;br /&gt;
&lt;br /&gt;
 REPLY FROM SDS (master_command == 8)&lt;br /&gt;
 &lt;br /&gt;
 NOTE: THIS FEATURE (PROPER RESPONSE) IS IMPLEMENTED SINCE FW 15.March.2025 AND ONWARDS&lt;br /&gt;
 (previously no proper response was provided)&lt;br /&gt;
 &lt;br /&gt;
 sub_command | meaning&lt;br /&gt;
 ------------+-----------------------------------------------------------&lt;br /&gt;
           0 |  complete failure (no item modified)&lt;br /&gt;
           1 |  partial failure  (some items modified, some not modified)&lt;br /&gt;
           2 |  success          (all items modified OK)&lt;br /&gt;
 &lt;br /&gt;
Další, detailnější, rozlišení selhání (failure) se neprovádí (tzn. SDS neposílá více detailnější informaci ve své odpovědi, než uvedené tři možnosti).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [16] '''FULL-C Shared Variable(s) Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz se využívá k přístupu ke [[FULL-C:_sharing|sdíleným proměnným]] programu FULL-C.&lt;br /&gt;
&lt;br /&gt;
Proměnné se označují vzorem, kde je na začátku velké písmeno určující typ, a pak dvě decimální číslice určující pořadí - tedy sto možných hodnot. &lt;br /&gt;
&lt;br /&gt;
Mohou existovat tyto sdílené proměnné :&lt;br /&gt;
* S00 až S99 (hodnoty: signed 32-bit)&lt;br /&gt;
* U00 až U99 (hodnoty: unsigned 32-bit)&lt;br /&gt;
* F00 až F99 (hodnoty: float 32-bit)&lt;br /&gt;
* T00 až T99 (hodnoty: array/text)&lt;br /&gt;
&lt;br /&gt;
Rozlišování jednotlivých funkcí je závislé na hodnotě &amp;quot;sub_command&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
 QUERY-or-COMMAND TO SDS (master_command == 16, sent to SDS)&lt;br /&gt;
 &lt;br /&gt;
 sub_command | meaning&lt;br /&gt;
 ------------+---------------------------------------------&lt;br /&gt;
           0 | provide list of all active shared variables&lt;br /&gt;
           1 | read from shared variable (single variable)&lt;br /&gt;
           2 | reserved&lt;br /&gt;
           4 | write to shared variable (single variable)&lt;br /&gt;
           8 | reserved&lt;br /&gt;
&lt;br /&gt;
Pro &amp;quot;sub_command == 0&amp;quot; poskytne SDS odpověď, kde je uvedeno zda-li je specifická sdílená proměnná definována v právě aktivním FULL-C programu.&lt;br /&gt;
&lt;br /&gt;
 RESPONSE:  LIST OF SHARED VARIABLES: sub_command = 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
   0              |  13 | bytes | Uxx existence: bit-field&lt;br /&gt;
  13              |  13 | bytes | Sxx existence: bit-field&lt;br /&gt;
  26              |  13 | bytes | Fxx existence: bit-field&lt;br /&gt;
  39              |  13 | bytes | Txx existence: bit-field&lt;br /&gt;
&lt;br /&gt;
Jak lze vidět, v odpovědi jsou čtyři samostatné bitové pole, každé o délce 100 bitů (plus nevyužitý zbytek 4 bitů na konci). Každý bit přestavuje existenci jedné ze sdílených proměnných, pokud je nastaven na 1 tak proměnná existuje.&lt;br /&gt;
&lt;br /&gt;
 Xxx existence: bit-field&lt;br /&gt;
 &lt;br /&gt;
 BYTE -&amp;gt; [0] . . . [13]&lt;br /&gt;
 BITS -&amp;gt;  0 . . .   100 (plus 4 at the end, which are not used)&lt;br /&gt;
 &lt;br /&gt;
 BYTE [0] = bit 0, 1, 2, ..., 7&lt;br /&gt;
 BYTE [1] = bit 8, 9, 10, ..., 15&lt;br /&gt;
 ...&lt;br /&gt;
 BYTE [13] = bit 96, 97, 98 ..., 103&lt;br /&gt;
 &lt;br /&gt;
 example: existence of &amp;quot;U11&amp;quot; =&amp;gt; bit 11 =&amp;gt; look at BYTE [1]&lt;br /&gt;
&lt;br /&gt;
Takže pro kteroukoliv sdílenou proměnnou si lze nalézt příslušnou pozici, která ukazuje, zda-li právě daná proměnná existuje.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Další,''' &amp;quot;sub_command == 1&amp;quot; umožňuje z konkrétní (jedné) sdílené proměnné číst.&lt;br /&gt;
&lt;br /&gt;
 QUERY TO SDS: READ ONE SHARED VARIABLE: sub_command = 1&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
  0               |   3 | bytes | [#0] name (example: &amp;quot;U25&amp;quot;)&lt;br /&gt;
  1               |   1 |  byte | reserved (0x00)&lt;br /&gt;
&lt;br /&gt;
A ''odpověď'' je:&lt;br /&gt;
&lt;br /&gt;
 REPLY FROM SDS: READ ONE SHARED VARIABLE: sub_command = 1&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
  0               |   3 | bytes | [#0] name (example: &amp;quot;F95&amp;quot;)&lt;br /&gt;
  1               |   1 |  byte | reserved (0x00)&lt;br /&gt;
  4               |   2 | uword | [#0] L#0: data length (L#0)&lt;br /&gt;
  6               |   2 | uword | reserved (0x0000)&lt;br /&gt;
  8               | L#0 |  data | [#0] data value from the shared variable&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Dále,''' pro &amp;quot;sub_command == 4&amp;quot; dojde ke změně hodnoty.&lt;br /&gt;
&lt;br /&gt;
 COMMAND TO SDS: WRITE ONE SHARED VARIABLE: sub_command = 4&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+--------------------------&lt;br /&gt;
  0               |   3 | bytes | [#0] name (example: &amp;quot;T12&amp;quot;)&lt;br /&gt;
  1               |   1 |  byte | reserved (0x00)&lt;br /&gt;
  4               |   2 | uword | [#0] L#0: data length (L#0)&lt;br /&gt;
  6               |   2 | uword | reserved (0x0000)&lt;br /&gt;
  8               | L#0 |  data | [#0] new data value to write to shared variable&lt;br /&gt;
&lt;br /&gt;
A odpověď je zde shodná jako odpověd pro &amp;quot;sub_command == 1&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [32] '''S0 Input Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení kalibračních konstant pro S0 vstupy. Současně jsou předány i aktuální (živé) údaje pro daný S0 vstup.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 32 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 32, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to S0 array [1..MAX] (typical MAX value is 9)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  S0 input number for this reply (for a valid answer: 1..MAX , otherwise: 0x00).&lt;br /&gt;
    1             |   1 |  byte |  total number of S0 inputs for this SDS&lt;br /&gt;
    2             |   1 |  byte |  configuration status (combined flags: bit0 = enabled as S0; bit1 = is tariff used)&lt;br /&gt;
    3             |   1 |  byte |  reserved (0x00)&lt;br /&gt;
    4             |  32 | bytes |  text (name: unit)&lt;br /&gt;
    36            |  32 | bytes |  text (name: money)&lt;br /&gt;
    68            |  32 | bytes |  text (unit: power)&lt;br /&gt;
    100           |  32 | bytes |  text (name: power)&lt;br /&gt;
    132           |  32 | bytes |  text (name: device)&lt;br /&gt;
    168           |   4 | dword |  MTD value&lt;br /&gt;
    172           |   4 | dword |  minimal impulse length (msec)&lt;br /&gt;
    176           |   4 | dword |  impulse constant value (imp. per unit)&lt;br /&gt;
    180           |   4 | bytes |  price for T0&lt;br /&gt;
    184           |   4 | bytes |  price for T1&lt;br /&gt;
    188           |   8 | bytes |  reserved (0x00)&lt;br /&gt;
    196           |   4 | dword |  live value: T0 impulse counter&lt;br /&gt;
    200           |   4 | dword |  live value: T1 impulse counter&lt;br /&gt;
    204           |   4 | dword |  T0 offset&lt;br /&gt;
    208           |   4 | dword |  T1 offset&lt;br /&gt;
    212           |   4 | dword |  live value: measured space between impulses (msec)&lt;br /&gt;
    216           |   4 | dword |  live value: time since last registered impulse (msec)&lt;br /&gt;
    220           |   4 | bytes |  reserved (0x00)&lt;br /&gt;
    224           |   n | bytes |  live value: combined text&lt;br /&gt;
&lt;br /&gt;
Kombinovaný text (combined text) obsahuje vypočtené informace, oddělené znakem '|'. Tyto údaje lze přímo zobrazit uživateli. Výpočet provádí SDS, a stejné hodnoty ukazuje na svém webu. Jedná se zde o doplněk původní funkce GDS (master_command==0).&lt;br /&gt;
&lt;br /&gt;
Délka textu &amp;quot;n&amp;quot; je dynamická, text je zakončen 0x00 (nebo pokud vyjde přesně na maximální délku co se vleze do payloadu, zakončení nemá a je uříznut na posledním znaku, pozor na to).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''(sub_command = 0xFF)''': speciální odpověď pro Tarifní vstup :&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 32, sent from SDS as reply)&lt;br /&gt;
 sub_command == 0xFF (tariff)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  constant 0xFF&lt;br /&gt;
    1             |   3 | bytes |  reserved (0x00)&lt;br /&gt;
    4             |   1 |  byte |  tariff input&lt;br /&gt;
    5             |  32 | bytes |  text (name: tariff)&lt;br /&gt;
    37            |  32 | bytes |  text (name: tariff T0 input)&lt;br /&gt;
    69            |  32 | bytes |  text (name: tariff T1 input)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [33] '''S0 Input History Values''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení historických hodnot počítadel pro vybraný S0 vstup. Každá nová položka se do záznamu historie uloží co 15 minut.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 33 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 33, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to S0 array [1..MAX] (typical MAX value is 9)&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  S0 input number for this reply (for a valid answer: 1..MAX , otherwise: 0x00).&lt;br /&gt;
    1             |   1 |  byte |  total number of S0 inputs for this SDS&lt;br /&gt;
    2             |   1 |  byte |  configuration status (combined flags: bit0 = enabled as S0; bit1 = is tariff used)&lt;br /&gt;
    3             |   3 | bytes |  reserved (0x00)&lt;br /&gt;
    6             |   2 |  word |  history depth (number of items) - value &amp;quot;n&amp;quot; (example: five items -&amp;gt; n == 5)&lt;br /&gt;
    8             |   4 | dword |  uptime value for the last element (#n) in the list&lt;br /&gt;
    12            |   4 | dword |  ntptime value for the last element (#n) in the list&lt;br /&gt;
    16            |   4 | dword |  history item #1: value of T0 counter (this is the most oldest item)&lt;br /&gt;
    20            |   4 | dword |  history item #1: value of T1 counter (this is the most oldest item)&lt;br /&gt;
    ...&lt;br /&gt;
    16+(n-1)*8    |   4 | dword |  history item #n: value of T0 counter (this is the most newest item)&lt;br /&gt;
    16+(n-1)*8+4  |   4 | dword |  history item #n: value of T1 counter (this is the most newest item)&lt;br /&gt;
&lt;br /&gt;
Historické údaje počítadel ukazují stav počítadel od současnosti dozadu. Položka #1 je nejstarší, pak #2 je mladší atd. až po položku #n která je nejaktuálnější (nejbližší současné chvíli).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [40] '''AD Input Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení kalibračních konstant pro AD vstupy.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 40 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 40, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to AD array [1..MAX]&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN  | TYPE  | content&lt;br /&gt;
 -----------------+------+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1  |  byte |  actual AD input index for this reply&lt;br /&gt;
    1             |   1  |  byte |  total number of AD inputs&lt;br /&gt;
    2             |   2  | bytes |  reserved (0x00)&lt;br /&gt;
    4             |   4  |   f32 |  F6 calibration constant&lt;br /&gt;
    8             |   4  |   f32 |  F5 calibration constant&lt;br /&gt;
   12             |   4  |   f32 |  F4 calibration constant&lt;br /&gt;
   16             |   4  |   f32 |  F3 calibration constant&lt;br /&gt;
   20             |   4  |   f32 |  F2 calibration constant&lt;br /&gt;
   24             |   4  |   f32 |  F1 calibration constant&lt;br /&gt;
   28             |   4  |   f32 |  F0 calibration constant&lt;br /&gt;
   32             |   1  |  byte |  is calibration factory locked&lt;br /&gt;
   33             |  32  | bytes |  unit&lt;br /&gt;
   65             |   4  | bytes |  reserved (0x00)&lt;br /&gt;
   69             |  32  | bytes |  name&lt;br /&gt;
  101             |   4  | bytes |  reserved (0x00)&lt;br /&gt;
  105             |   4  | dword |  raw value&lt;br /&gt;
  109             |   4  |   f32 |  real value (converted from raw)&lt;br /&gt;
  113             |   n  | bytes |  live value text&lt;br /&gt;
&lt;br /&gt;
Text &amp;quot;live value&amp;quot; obsahuje hodnotu vypočtenou interně v SDS. Text lze prezentovat uživateli (je to stejné jako co SDS ukáže na svém webu). Jedná se o doplňkovou funkci vůči vlastnímu výpočtu ze surových hodnot z GDS (master_command==0).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [42] '''PWM Output Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení nastavení pro PWM výstup (konfigurace a živý stav).&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 42 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 42, sent from SDS as reply)&lt;br /&gt;
 sub_command == 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN  | TYPE  | content&lt;br /&gt;
 -----------------+------+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1  |  byte |  reserved (0x00)&lt;br /&gt;
    1             |   1  |  byte |  &amp;quot;N&amp;quot; = total number of PWM outputs&lt;br /&gt;
    2             |   2  | bytes |  reserved (0x00)&lt;br /&gt;
 &lt;br /&gt;
    4+(i*12)+  0  |   4  | dword |  frequency (Hz) for PWMx&lt;br /&gt;
    4+(i*12)+  4  |   4  | dword |  &amp;quot;pulse&amp;quot; value for PWMx&lt;br /&gt;
    4+(i*12)+  8  |   1  |  byte |  &amp;quot;ValueB&amp;quot; value for PWMx&lt;br /&gt;
    4+(i*12)+  9  |   2  | uword |  &amp;quot;ValueS&amp;quot; value for PWMx&lt;br /&gt;
    4+(i*12)+ 11  |   1  |  byte |  output enabled for PWMx&lt;br /&gt;
&lt;br /&gt;
Pozn. PWM1 má hodnotu &amp;quot;i&amp;quot; = 0, PWM2 má hodnotu &amp;quot;i&amp;quot; = 1 atd.&lt;br /&gt;
&lt;br /&gt;
V případě, že je některý z PWMx výstupů nevyužit (&amp;quot;přeskočen&amp;quot;), je přesto v odpovědi uveden, aby bylo zachováno číslovaní pořadí všech PWMx výstupů.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [44] '''RELAYs Configuration Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení konfigurace RELAY výstupů (nastavení a živý stav).&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 44 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 44, sent from SDS as reply)&lt;br /&gt;
 sub_command == index to RELAY array [1..MAX]&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN  | TYPE  | content&lt;br /&gt;
 -----------------+------+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1  |  byte |  actual RELAY output index for this reply&lt;br /&gt;
    1             |   1  |  byte |  total number of RELAY outputs&lt;br /&gt;
    2             |   2  | bytes |  reserved (0x00)&lt;br /&gt;
    4             |  32  | bytes |  name&lt;br /&gt;
   36             |   4  | bytes |  reserved (0x00)&lt;br /&gt;
   40             |   1  |  byte |  &amp;quot;relay-controlled-by&amp;quot; value&lt;br /&gt;
   41             |   1  |  byte |  &amp;quot;relay-output&amp;quot; value&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [48] '''SD Card Status Query''' ==&lt;br /&gt;
&lt;br /&gt;
Určeno pro čtení stavu SD karty.&lt;br /&gt;
&lt;br /&gt;
Pozn. master_command == 48 byl přidán až ve Firmware od verze 3.10.2019.&lt;br /&gt;
&lt;br /&gt;
 REPLY (master_command == 48, sent from SDS as reply)&lt;br /&gt;
 sub_command == 0&lt;br /&gt;
 &lt;br /&gt;
 C-PAYLOAD offset | LEN | TYPE  | content&lt;br /&gt;
 -----------------+-----+-------+------------------------------------------------------&lt;br /&gt;
    0             |   1 |  byte |  card mounted &lt;br /&gt;
    1             |   3 | bytes |  reserved&lt;br /&gt;
    4             |   4 | dword |  card type&lt;br /&gt;
    8             |   4 | dword |  card ProdSN&lt;br /&gt;
   12             |   4 | dword |  card init attempts counter&lt;br /&gt;
   16             |   4 | dword |  card init failures counter&lt;br /&gt;
   20             |   4 | dword |  card total sector count in FAT in KiB&lt;br /&gt;
   24             |   4 | dword |  total sector reads counter&lt;br /&gt;
   28             |   4 | dword |  total sector writes counter&lt;br /&gt;
   32             |   4 | dword |  total sector r/w failures counter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [50] '''Serial Port Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz není pro &amp;quot;version == 0x00&amp;quot; podporován. Potřebujete novější &lt;br /&gt;
firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [64] '''DataFlash (NVM) Access''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz není pro &amp;quot;version == 0x00&amp;quot; podporován. Potřebujete novější &lt;br /&gt;
firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (2-PŘ) Master Command: [128] '''Reserved''' ==&lt;br /&gt;
&lt;br /&gt;
Tento příkaz není v současné verzi použit. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== (1-PŘ) Master Command (první produktová řada: &amp;quot;TV = 0001....&amp;quot; ) ==&lt;br /&gt;
&lt;br /&gt;
Jednotlivé základní příkazy (''master command'') - zatím nejsou pro &lt;br /&gt;
první produktovou řadu definovány.&lt;br /&gt;
&lt;br /&gt;
Detaily zde budou doplněny.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_BIG:_firmware_changelog&amp;diff=938</id>
		<title>SDS BIG: firmware changelog</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_BIG:_firmware_changelog&amp;diff=938"/>
		<updated>2025-02-27T07:53:20Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SDS-BIG(2) , SDS-SMALL(2), SDS-STSW a všechny OEM ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
Tato stránka se věnuje změnám ve firmware a v HW pro výrobek SDS-BIG a SDS-SMALL a SDS-STSW.&lt;br /&gt;
&lt;br /&gt;
Změny jsou seřazeny tak, že nejnovější verze (která je stáhnutelná z webu) je popsána jako první.&lt;br /&gt;
&lt;br /&gt;
Proč je vydáván nový firmware? Protože operativně řešíme požadavky uživatelů, a jsou doplňovány nové funkce.&lt;br /&gt;
&lt;br /&gt;
Firmware poskytujeme zcela zadarmo po celou dobu životnosti výrobku. Děláme to vše pro Vás.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 27.2.2025 ==&lt;br /&gt;
* upraven timeout pro čtení souboru z SD karty přes webový server (poskytování obsahu z SD karty na web)&lt;br /&gt;
* 512: oprava nefunkčního čtení ze sériové linky COM6&lt;br /&gt;
&lt;br /&gt;
== 8.2.2025 ==&lt;br /&gt;
* oprava některých payloadů v protokolu SUDP &lt;br /&gt;
&lt;br /&gt;
== 22.7.2024 ==&lt;br /&gt;
* FULLC.EXE - odstraněna chyba, která neumožnila nahrát do SDS soubor FCB větší než 64kB&lt;br /&gt;
* možnost volby klidového stavu pro každý S0 vstup (umožňuje počítat impulsy i pro NC spínače v měřiči energie)&lt;br /&gt;
* FC: SDS_reset_program() nezanechává nadbytečnou chybouvou hlášku v konzoli&lt;br /&gt;
* FC: mqtt_publish() použije vámi nastavené bitové pole do PUBLISH hlavičky (viz index 11198)&lt;br /&gt;
* SMTP odesílání by mělo být robustnější při odesílání více emailů za sebou&lt;br /&gt;
&lt;br /&gt;
== 24.2.2024 ==&lt;br /&gt;
* možnost smazat nahraný TLS klíč+certifikát (tlačítko s heslem, ve webovém rozhraní)&lt;br /&gt;
* RSTD nesmaže (nanastaví na tovární hodnoty) vaše nastavení pro všechny AD vstupy (to lze teď udělat ručně, nově přidaným tlačítkem ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 31.10.2023 ==&lt;br /&gt;
* SNMP - oprava způsobu předání chyby v odpovědi&lt;br /&gt;
* SNMP v1 - možnost nastavit dvě nezávislé komunity&lt;br /&gt;
* 512: plná implementace SNMP v3 (včetně AUTHPRIV)&lt;br /&gt;
* 64,128: omezená implementace SNMP v3 (pouze NOAUTHNOPRIV)&lt;br /&gt;
* FC: indexy 66, 67, 68, 4990..4999&lt;br /&gt;
&lt;br /&gt;
== 19.8.2023 ==&lt;br /&gt;
* oprava SDS UDP SEARCH (příchozí paket na portu 20484 byl firewallem od verze 6.6.23 zahozen, teď už opraveno)&lt;br /&gt;
* 512: HTTPS server (aktivace nahráním certifikátu, jinak zůstává HTTP)&lt;br /&gt;
&lt;br /&gt;
== 14.7.2023 ==&lt;br /&gt;
* HTTP POST: oprava sekundární chyby (objevila se ve FW 6.6.2023), kdy FW akceptoval jen rozdělený krok č. 2 (teď už opět umí jak rozdělený, tak i nerozdělený krok č. 2)&lt;br /&gt;
* FC: umožněn přímý zápisu do indexu 193 (přímo zapíše do registru PWM - určeno pro nejjemnější uživatelskou přímo konfiguraci generátoru PWM)&lt;br /&gt;
&lt;br /&gt;
== 6.6.2023 ==&lt;br /&gt;
* funkce http_header_set_user_row() má zvětšenou maximální délku parametru na 255 znaků&lt;br /&gt;
* 512: počet MQTT subscribe zvětšen z max. 8 na max. 20&lt;br /&gt;
* 512: další zvětšení FC konzole&lt;br /&gt;
* webový admin: úprava (oprava) použití timerů v javascriptu &lt;br /&gt;
* FC: DNS resolv umí pracovat s širším rozsahem UDP portů (někdy způsobilo nepřijetí odpovědi a musel se resolv opakovat)&lt;br /&gt;
* HTTP POST: poradí si i s ne-oddělenou komunikací (když klient pošle úvodní konverzační data najednou, neodděleně, tzn. nečeká na odpověď ze serveru)&lt;br /&gt;
 &lt;br /&gt;
== 9.3.2023 ==&lt;br /&gt;
* FC: verze 0x12 (+ odpovídající FULLC.EXE): přidány funkce http_header_set_user_row() a http_header_set_content_type()&lt;br /&gt;
* 64 a 128: odstraněno možné zpomalení běhu po zapnutí v určité okrajové situaci&lt;br /&gt;
&lt;br /&gt;
== 28.2.2023 ==&lt;br /&gt;
* POST: přidán příkaz /wrdf&lt;br /&gt;
* POST: oprava chyby, kdy mohlo dojít k neprovedení akce na základě příkazu /changeip&lt;br /&gt;
* malá bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 9.1.2023 ==&lt;br /&gt;
* FC verze 0x11 (+ odpovídající FULLC.EXE)&lt;br /&gt;
* firmware pro všechny HW varianty BIG, BIG2-DP a BIG2-DP-DS84&lt;br /&gt;
* web: doplněno zobrazení surových hodnot, čtených z 1-Wire zařízení &lt;br /&gt;
* FC: přidána funkce SDS_onewire_config() pro varianty -DS84&lt;br /&gt;
* FC: doplněna funkčnost FC WatchDog (pro situaci, pokud spadne program na chybu a je zastaven, tak FC Watchdog pokračuje a provede restart FC programu)&lt;br /&gt;
* FC: doplněna archivace poslední chyby FC programu, a zobrazení na webu (i v případě restartu FC Watchdogem)&lt;br /&gt;
* FC: funkce pro prohledání složky (file_opendir, file_readdir, file_closedir)&lt;br /&gt;
* oprava PWM3 a PWM4 na BIG2-64/128 - funkce, ukládání nastavení&lt;br /&gt;
* HW BIG2 DS84: RTC běží na baterii na všech HW variantách DS84 - udržuje běžící aktuální čas i při vypnutém napájení&lt;br /&gt;
* FC: přidána funkce SDS_onewire_search_bus()&lt;br /&gt;
* FC: přidány indexy 132..136 , indexy 2488..2499, 2986..2997&lt;br /&gt;
&lt;br /&gt;
== 1.12.2022 ==&lt;br /&gt;
* bezpečnostní aktualizace (dle nahlášené záležitosti a testu)&lt;br /&gt;
* trvalé zobrazení archivovaného HW faultu v Logu (pokud dojde k faultu, je hned před restartem zařízení archivován a trvale zobrazován ve výpisu, i po libovolném novém spuštění)&lt;br /&gt;
* odstraněno eventuální čekání (a následný WDG restart) při komunikaci s externími I2C zařízeními (specifické chipy na sandwich deskách uživatelů)&lt;br /&gt;
&lt;br /&gt;
== 30.11.2022 ==&lt;br /&gt;
* FC: zvýšena výkonnost (512: optimalizace pro až několika-násobné celkové zrychlení vykonávání programu) (64,128: byť jen menší zrychlení, ale přece + zvětšená konzole echo.htm) &lt;br /&gt;
* zrychleno webové rozhraní (zpomaleno zřejmě o dvě verze zpět, byť to bylo bez vlivu na funkci, je vhodnější když to nezdržuje při zobrazování v prohlížeči)&lt;br /&gt;
* FC: přidán index 137&lt;br /&gt;
* zlepšena interní obsluha sériových linek (COMx/RS485), odstraněno možné náhodné zpoždění (byť jen ve specifickém případě a jen o několik msec, ale i tak se toto vyřešilo)&lt;br /&gt;
&lt;br /&gt;
== 22.11.2022 ==&lt;br /&gt;
* FC (64/128/512): verze 0x10 &lt;br /&gt;
* dns_resolv správně hlásí chybu 516 a 517 při výpadku připojení v průběhu dotazu&lt;br /&gt;
&lt;br /&gt;
== 18.11.2022 ==&lt;br /&gt;
* FC (64/128): verze 0x10 &lt;br /&gt;
* FC: nová funkce SDS_set_RTC&lt;br /&gt;
* FC: nové funkce pro práci s float&lt;br /&gt;
* oprava pro mounting některých typů SD karet&lt;br /&gt;
&lt;br /&gt;
== 14.11.2022 ==&lt;br /&gt;
* FC: oprava výpočtů v 64-bit doméně&lt;br /&gt;
* FC: file_expand() - detailnější rozvrstvení návratových chybových hodnot&lt;br /&gt;
* web: rozšířeny zobrazované informace o probíhajícím připojování SD karty&lt;br /&gt;
* web server: vrací korektně 503 pro soubory na SD kartě, které jsou zablokovány FC programem&lt;br /&gt;
* FC: rozšířena a zásadně zlepšena implementace printf/sprintf/snprintf/sscanf - viz detaily v návodu na wiki&lt;br /&gt;
* FC: zlepšen výpis (informace na web) při určitých chybách v FC programu, plus další drobky kolem echo.htm&lt;br /&gt;
&lt;br /&gt;
== 16.10.2022 ==&lt;br /&gt;
* tento firmware (od této verze) podporuje i hardware SDS 64/128/512 ve variantě DP&lt;br /&gt;
* podpora pro 4 PWM výstupy (pro vhodný hardware - BIG2)&lt;br /&gt;
* odpověď na (webový) příkaz /sv? , má doplněný obsah http hlavičky, takže by ji mělo být snazší zpracovat&lt;br /&gt;
* FC: watchdog programu je (nově) pozastaven po dobu mountování SD karty (protože je pozastaven i program)&lt;br /&gt;
* FC: zápis do indexu 999 funguje jak má&lt;br /&gt;
* FC: verze 0x0F (nové funkce PWMx)&lt;br /&gt;
&lt;br /&gt;
== 5.10.2022 ==&lt;br /&gt;
* pouze vše řady 512 (ostatní bez tohoto problému) - důležitá oprava situace kdy někdy chybně došlo ke smazání nahraného FC programu při nahrání nového UWEB projektu do SDS&lt;br /&gt;
&lt;br /&gt;
== 30.9.2022 ==&lt;br /&gt;
* FC: oprava běhu programu v situaci kdy v kódu je vnořený (nested) switch() v rámci jiného switch() (původně chybné chování, teď opraveno)&lt;br /&gt;
&lt;br /&gt;
== 28.9.2022 ==&lt;br /&gt;
* FC: oprava výsledků maker (define), kdy chybně docházelo k pevnému přetypování na int32_t, což je teď opraveno (odstraněno)&lt;br /&gt;
&lt;br /&gt;
== 1.8.2022 ==&lt;br /&gt;
* správně zobrazovaná hláška (nápověda) na úvodní webové stránce ohledně stavu konfigurace&lt;br /&gt;
* FC: přidáno tlačítko (odkaz) pro restart FULLC programu (např. pokud skončil a chcete jej ručně spustit znovu)&lt;br /&gt;
* FC: do výpisu chyby při pádu programu je přidán UTC čas (pro identifikaci, kdy se chyba stala)&lt;br /&gt;
* FC: spolehlivostní úpravy při startu programu (načtení z DF), a při zápisu nového programu (práce s DF)&lt;br /&gt;
&lt;br /&gt;
== 11.7.2022 ==&lt;br /&gt;
* FC: verze 0x0E&lt;br /&gt;
* FC: přidána funkce mktime()&lt;br /&gt;
* FC: přidána funkce gmtime()&lt;br /&gt;
* FC: přidána funkce localtime()&lt;br /&gt;
* opraveno zachování konfigurace ipwdg (webové rozhraní) a obsluhy relé ipwdg&lt;br /&gt;
&lt;br /&gt;
== 1.7.2022 ==&lt;br /&gt;
* FC: verze 0x0D&lt;br /&gt;
* FC: upravena funkce SDS_TOPB_keyboard_status() pro lepší předané výsledky&lt;br /&gt;
* FC: přidána funkce SDS_TOPB_keyboard_updn()&lt;br /&gt;
* FC: přidána funkce SDS_rescan_onewire()&lt;br /&gt;
* FC: odstraněno náhodné hlášení o už probíhajícím nahrávání programu při nahrávání z EXE&lt;br /&gt;
* BIG 64/128 prodloužen čas pro sestavení Ethernetového spojení, což řeší problém s některými USB síťovými kartami atd.&lt;br /&gt;
* opraveno HTTP POST nastavení položek NTP&lt;br /&gt;
* opraveno HTTP POST který teď neuzavře spojení dříve než má, pokud mazání NVM pro nový FW (nebo nový UserWeb) trvá dlouho&lt;br /&gt;
&lt;br /&gt;
== 12.4.2022 ==&lt;br /&gt;
* doplněna informační stránka o vnitřním stavu OneWire Master (pro snazší identifikaci problémů při používání sběrnice)&lt;br /&gt;
* oprava v bootloaderu pro řadu 512 - vyžaduje přeprogramování u výrobce pro všechna SDS řady 512 s FW starším než 14.2.2022&lt;br /&gt;
&lt;br /&gt;
== 3.4.2022 ==&lt;br /&gt;
* FC verze 0x0C&lt;br /&gt;
* FC: přidána funkce SDS_I2C_rw&lt;br /&gt;
* OneWire stabilnější&lt;br /&gt;
&lt;br /&gt;
== 21.1.2022 ==&lt;br /&gt;
* prioritu mají vybrané konfigurační položky v NVM (jsou-li tam platné) před baterií zálohovanou pamětí&lt;br /&gt;
* aktivován HTTP POST protokol pro nahrávání a konfiguraci SDS (viz [[SDS:POST_upload]])&lt;br /&gt;
&lt;br /&gt;
== 18.1.2022 ==&lt;br /&gt;
* RSTD zapíše do NVM všechny konfigurační položky (i to co nenuluje), pro jistotu že v NVM bude vše skutečně zapsáno&lt;br /&gt;
* načítání konfigurace upraveno (větší spolehlivost)&lt;br /&gt;
&lt;br /&gt;
== 15.1.2022 ==&lt;br /&gt;
* přidána stránka cfgstatus.htm - pro možnost kontroly stavu uložené konfigurace v pevné paměti (např. co nemáte uloženo)&lt;br /&gt;
* přidán M2M výstup ip.xml&lt;br /&gt;
* FC: přidán algoritmus SHA-256 do funkce SDS_crypto()&lt;br /&gt;
* FC: každý program má unikátní identifikátor, podle kterého lze např. kontrolovat či zpětně poznat co máte v SDS nahráno&lt;br /&gt;
* identifikátor FC programu přidán na webové rozhraní a do M2M výstupů, a do exe aplikace&lt;br /&gt;
* zobrazeno unikátní identifikační čislo SDS hardware (napevno spojeno s modulem SDS, nezměnitelné), teď i ve M2M výstupech&lt;br /&gt;
* SNMP: nové položky .8.90 , .8.91 , .8.99&lt;br /&gt;
* FC: nové get(u32) položky 2 a 87&lt;br /&gt;
&lt;br /&gt;
== 31.12.2021 ==&lt;br /&gt;
* možnost vyřadit NTP z činnosti zadáním adresy 127.0.0.1 (vhodné pro uživatele kteří získávají čas odjinud, např. přes LoRA)&lt;br /&gt;
* web: informace na web (p=8) o stavu připojování SD karty (mounting...) a o stavu kdy je FC program pozastaven (PAUSED)&lt;br /&gt;
* web: opraven zámek zvětšené konzole (echo)&lt;br /&gt;
* důslednější kontrola platnosti konfigurace při startu&lt;br /&gt;
&lt;br /&gt;
== 27.12.2021 ==&lt;br /&gt;
* opravena chyba kdy na webu nešlo nastavit 100 procent PWM duty (jen 0 až 99, teď už jde i 100)&lt;br /&gt;
* FC: několikanásobně zvětšena konzole (echo.htm)&lt;br /&gt;
* HW: při poruše hlavního zdroje hodin (krystal) se použije záložní zdroj&lt;br /&gt;
* HW: využíváme RTC pro udržení času při přechodu přes reset (drží čas dokud zase nepřijde NTP)&lt;br /&gt;
* aktualizován bootloader (aktualizace bootloaderu jen prostřednictvím přeprogramování u výrobce) - umí znovu nahrát FW pokud se v SoC poškodí&lt;br /&gt;
* vydána varianta 512 - vlastní soubor s firmware&lt;br /&gt;
&lt;br /&gt;
== 25.12.2021 ==&lt;br /&gt;
* pouze interní vydání&lt;br /&gt;
&lt;br /&gt;
== 26.3.2021 ==&lt;br /&gt;
* FC: oprava nesprávného zacházení s unsigned typy (na některých místech interně přemapovány na signed)&lt;br /&gt;
* FC: chování varianty if pro speciální kombinaci signed/unsigned dle specifikace standardu C&lt;br /&gt;
&lt;br /&gt;
== 9.2.2021 ==&lt;br /&gt;
* FC: oprava TID v MODBUS-TCP&lt;br /&gt;
* MBTC výpis rozšířen&lt;br /&gt;
* FC: drobná úspora heap (více dostupného místa)&lt;br /&gt;
* FC: dns resolv drobný fix&lt;br /&gt;
* FC: http_get a http_post důležitý fix&lt;br /&gt;
* FC: nová funkce http_close&lt;br /&gt;
* FC: chyba -7 pro MODBUS-TCP a pro MQTT&lt;br /&gt;
* vylepšený algoritmus S0, rozšířené možnosti nastavení detektoru S0 (nastavení přidáno ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 22.12.2020 ==&lt;br /&gt;
* web: ruční přepnutí CBY pro relé (tzn. &amp;quot;kdo ovládá relé&amp;quot;), na &amp;quot;FULL-C&amp;quot;, dané relé nevypne (off) ale ponechá jeho stávající stav (on, off)&lt;br /&gt;
* security fix&lt;br /&gt;
&lt;br /&gt;
== 10.12.2020 ==&lt;br /&gt;
* dřívější odeslání NTP požadavku po výpadku síťového spojení&lt;br /&gt;
* integrovaná korekce chyby A/D měření pro HW osazený LMV324; uživatel může povolit tuto automatickou opravu chyby LMV324 ve webové administraci&lt;br /&gt;
* počítání délky aktivace tarifního vstupu (doba T0 a T1 v sekundách za den) viz nové sys, pozor pro funkci vyžaduje NTP&lt;br /&gt;
* automatický odečet S0 počítadel (vždy za dnešek a včerejšek), viz nové sys, pozor pro funkci vyžaduje NTP&lt;br /&gt;
&lt;br /&gt;
== 23.11.2020 ==&lt;br /&gt;
* FC + FULLC.exe: oprava chyby v případě více #if / #ifdef / #endif bloků zapsaných hned za sebou&lt;br /&gt;
* FC: makra a define lze provést i uvnitř funkce (dříve jen venku)&lt;br /&gt;
* FC: detekce nesprávné dereference ukazatele&lt;br /&gt;
&lt;br /&gt;
== 14.11.2020 ==&lt;br /&gt;
* webová administrace: stránka p=42: index ck03 se propíše i do nastavení (chybělo od 23.10.2020, web byl aktualizován, nastavení ale přebíralo ck00)&lt;br /&gt;
&lt;br /&gt;
== 4.11.2020 ==&lt;br /&gt;
* FC + FULLC.exe: odstraněn problém při načtení nahraného FULL-C programu v SDS, kdy dříve mohlo u jedné specifické velikosti nahraného programu, dojít k jeho nespuštění kvůli neodpovídajícímu crc&lt;br /&gt;
&lt;br /&gt;
== 3.11.2020 ==&lt;br /&gt;
* FC: zobrazení (v konzoli) čísla řádku (ve zdrojovém kódu) při chybě (což velmi zlepší ladění programů)&lt;br /&gt;
* FULLC.exe: odstraněno omezení na 255 znaků na řádek&lt;br /&gt;
* FULLC.exe: zrychlení nahrávání do SDS&lt;br /&gt;
&lt;br /&gt;
== 23.10.2020 ==&lt;br /&gt;
* webová administrace: stránka p=42: změna indexu ck00 na ck03 ať se dají uživatelským skriptem všechny prvky samostatně rozlišit&lt;br /&gt;
* FC: oprava http_get/post: správné vyplnění výsledků i pro situaci kdy server ukončí spojení přes TCP RST&lt;br /&gt;
&lt;br /&gt;
== 14.10.2020 ==&lt;br /&gt;
* oprava FULL-C funkce XTEA-CRYPT (bug o dvě verze dříve)&lt;br /&gt;
&lt;br /&gt;
== 13.10.2020 ==&lt;br /&gt;
* důležitá oprava chyby ve FULL-C (ternary operator, a další nahlášené nesrovnalosti)&lt;br /&gt;
&lt;br /&gt;
== 13.9.2020 ==&lt;br /&gt;
* oprava detekce SD karty (některé varianty SD karet nebyly detekovány, teď už ano)&lt;br /&gt;
&lt;br /&gt;
== 9.8.2020 ==&lt;br /&gt;
* FULL-C verze 0B (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* různé drobné opravy a zabezpečení&lt;br /&gt;
* zobrazení auditlogu (webové rozhraní SDS)&lt;br /&gt;
* FC: http_post&lt;br /&gt;
* FC: MQTT klient&lt;br /&gt;
* FC: MODBUS-TCP klient&lt;br /&gt;
&lt;br /&gt;
== 4.8.2020 ==&lt;br /&gt;
* úprava obsluhy relé&lt;br /&gt;
* podpora OneWire modulu SDS-1W-T-RH&lt;br /&gt;
&lt;br /&gt;
== 3.10.2019 ==&lt;br /&gt;
* SMTP klient posílá v hlavičce i položku &amp;quot;Date&amp;quot; (ale jen za předpokladu správného času v SDS)&lt;br /&gt;
* RSTD při zapnutí zařízení, ve kterém není záložní baterie (nebo je vybitá), zachová původně nastavenou MAC adresu (vše ostatní ale už jde do defaultu, což je správně)&lt;br /&gt;
* SUDP: rozšířen NOP příkaz &lt;br /&gt;
* SUDP: přidány další nové příkazy (master_cmd: 32, 33, 40, 42, 44, 48)&lt;br /&gt;
&lt;br /&gt;
== 23.9.2019 ==&lt;br /&gt;
* oprava GUI (S0 Inputs)&lt;br /&gt;
* SNMP nabízí možnost číst všechny sdílené proměnné (FULL-C: Sxx, Uxx, Fxx, Txx)&lt;br /&gt;
* opraven nefunkční RSTD na modulu STSW-rev3&lt;br /&gt;
&lt;br /&gt;
== 23.6.2019 ==&lt;br /&gt;
* oprava chyby objevené ve FW 28.5.2019, kdy na některých specifických SDS nefungovaly AD vstupy&lt;br /&gt;
&lt;br /&gt;
== 28.5.2019 ==&lt;br /&gt;
* oprava funkce SD karty (pro případy kdy se stala po čase nedostupná pro FC/web)&lt;br /&gt;
&lt;br /&gt;
== 5.5.2019 ==&lt;br /&gt;
* dořešeno hlídání stavu (načtení, atd.) SD karty i v případě provozu náročného FULL-C programu (tedy i pro hluboce vnořené smyčky)&lt;br /&gt;
* oprava původně chybné implementace S-UDP příkazu &amp;quot;1Waccess: sub-command 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== 24.2.2019 ==&lt;br /&gt;
* překlopení z BETA do oficiálního FW&lt;br /&gt;
* automatika zimní/letní čas&lt;br /&gt;
* přístup na SD kartu: FULL-C pracuje se soubory (vytvoření, smazání, čtení a zápis, atd.) &lt;br /&gt;
* přístup na SD kartu: web server zobrazuje soubory ze SD karty (vše ve složce \web\ a podsložkách této složky)&lt;br /&gt;
* oprava čtení napětí baterie pro variantu 128K&lt;br /&gt;
* shared.xml&lt;br /&gt;
* odstraněno omezení délky ve shared.txt&lt;br /&gt;
* zprovozněno getsv&lt;br /&gt;
* verze FULL-C je teď FC 0x0A (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* FULL-C: nová možnost způsobu čtení teploty SoC&lt;br /&gt;
* FULL-C: index 64, 65, 184, 185, 429, 430, atd.&lt;br /&gt;
* FULL-C: doplněné set/get funkce pro sdílené proměnné&lt;br /&gt;
* FULL-C: s/printf umí správné zpracovat požadavek na určení desetinných míst pro float&lt;br /&gt;
* FULL-C: funkce pro reset FC programu&lt;br /&gt;
* FULL-C: funkce pro watchdog FC programu&lt;br /&gt;
* SNMP nové OIDy (dle přidaných věcí - čas, sdcard)&lt;br /&gt;
&lt;br /&gt;
== 1.7.2018 ==&lt;br /&gt;
* SNMP: sdsS0translatedUnitT0,1 je poskytováno jako hodnota od odečtu (ne od úplného začátku měření, jak to bylo předtím) &lt;br /&gt;
* FULL-C: přidán index 183 poskytující datum vydání FW který je právě nahrán v SDS&lt;br /&gt;
&lt;br /&gt;
== 27.6.2018 ==&lt;br /&gt;
* verze FULL-C je teď FC 0x09 (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* FULL-C: přidána podpora pro int64_t a uint64_t&lt;br /&gt;
* FULL-C: přejmenováno set a get funkce (rozlišení 32 a 64 bit)&lt;br /&gt;
* FULL-C: snprintf přesně dle standardu (zrušena nevhodná změna z 20.12.2017)&lt;br /&gt;
* drobné opravy&lt;br /&gt;
* drobná oprava v odchozím TCP-SYN a v generátoru ISN&lt;br /&gt;
&lt;br /&gt;
== 8.3.2018 ==&lt;br /&gt;
* oprava echo.htm - správně wrapuje obsah, a nejsou tam nadbytečné 0x00&lt;br /&gt;
* vhodnější řešení rexmitu částí webových stránek a dynamických dat (ocení to zejména uživatelé s mobilním připojením pro SDS)&lt;br /&gt;
&lt;br /&gt;
== 2.3.2018 ==&lt;br /&gt;
* aktulizace a oprava ve výpočtu &amp;quot;aktuálního výkonu&amp;quot; pro okrajové situace (např. krajní hodnoty impulsní konstanty)&lt;br /&gt;
&lt;br /&gt;
== 11.2.2017 ==&lt;br /&gt;
* zprovozněny funkce set/get pro indexy 4000 až 4300 (alternativní přístup k číselným sdíleným proměnným)&lt;br /&gt;
&lt;br /&gt;
== 21.12.2017 ==&lt;br /&gt;
* zvýšena stabilita spuštění po zapnutí&lt;br /&gt;
&lt;br /&gt;
== 20.12.2017 ==&lt;br /&gt;
* dočasná změna ve FULL-C (bude zrušena): funkce snprintf() má interně posunutý limit délky zápisu o 1 (toto je záměrný rozdíl proti C99). Změna v SDS je provedena z důvodu neznalosti programátorů FC v tom, že do snprintf() limitu je potřeba započítat i jeden byte pro ukončující nulu. Ve výsledku tedy zápis &amp;quot;snprintf(buf, limit, ...);&amp;quot; je v FC interně vykonán jako &amp;quot;snprintf(buf, limit+1, ...);&amp;quot;.&lt;br /&gt;
* oprava ve FULL-C: výpočet platné délky bufferu funguje i pro ukazatele vytvořené offsetem ze základní alokované adresy (příklad takového bufferu je: buf=malloc(x)+offset;)&lt;br /&gt;
* stav všech relé je načten z paměti vždy po zapnutí modulu, a ty relé které jsou ručně ovládány (manual control) a které byly před vypnutím v zapnutém (ON) stavu, jsou po zapnutí modulu aktivovány (zatímco relé ovládané z IP-W a FC jsou vždy po zapnutí modulu uvedeny do OFF stavu)&lt;br /&gt;
&lt;br /&gt;
== 18.12.2017 ==&lt;br /&gt;
* UserWEB projekt má opravenu chybu, kdy nebylo možno použít delší Name Chain tabulku (tedy lze už vložit mnohem více souborů) &lt;br /&gt;
* nastavená MAC adresa je zachována i po průchodu RSTD (byla-li platná)&lt;br /&gt;
* opravena chyba způsobující nefunkční http_get(), teď už to opět funguje&lt;br /&gt;
* aktualizace obsluhy PWM (např. lépe přepočítává zobrazovaná &amp;quot;procenta&amp;quot;)&lt;br /&gt;
* oprava strcat() funkce (opraveno hlídání max velikosti bufferu ze &amp;quot;from&amp;quot; na &amp;quot;to&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== 18.9.2017 ==&lt;br /&gt;
* FULL-C: printf() správně tiskne float i pokud se formátovací parametr zadá jako %d (tedy ne jako %f)&lt;br /&gt;
* FULL-C: snprint() opraven (když je 'from' kratší než 'to' tak je 'to' doplněn 0x00 - je to zvláštnost, nemá se to používat, ale C99 to předepisuje, tak to dodržíme)&lt;br /&gt;
&lt;br /&gt;
== 9.9.2017 ==&lt;br /&gt;
* vnitřní bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 29.8.2017 ==&lt;br /&gt;
* oprava chování RSTD - pokud je zapojen před zapnutím, nepřejde do automatického resetu po 10sec, ale RSTD je použit a SDS pracuje dále; přitom funkce &amp;quot;zapoj RSTD za běhu&amp;quot; je zachována správně&lt;br /&gt;
* zásadní zlepšení odolnosti FULL-C proti chybám programátora - vnitřní hlídání rozsahů bufferu a stringů, zamezující zápisu za hranice pole (typicky chybné použití sprintf() funkce, ale toto hlídání je aplikováno obecně všude)&lt;br /&gt;
&lt;br /&gt;
== 8.8.2017 ==&lt;br /&gt;
* oprava: FC teď správně převádí URL kód &amp;quot;sv?xxxx=yyyy...&amp;quot;, na text (vypadlo 31.3. při rozšíření počtu znaků pro sdílené proměnné Txx) &lt;br /&gt;
&lt;br /&gt;
== 10.7.2017 ==&lt;br /&gt;
* vydán firmware pro variantu &amp;quot;128kB&amp;quot; (od teď vychází dva typy firmware, pro variantu &amp;quot;64kB&amp;quot; a variantu &amp;quot;128kB&amp;quot;, vyberete si tu svou dle HW který máte)&lt;br /&gt;
* velká optimalizace využití paměti pro uložení a běh FULL-C programu (komprese, a zmenšení vyžadovaného heapu pro běh programu) - významně zvětšuje možnou velikost FC programu&lt;br /&gt;
* pin RSTD lze teď také použít i bez vypnutí a zapnutí SDS, stačí jej na 10 vteřin za běhu zkratovat (pak se provede RSTD a SDS se rebootuje) - výhodné pro zařízení kde vypnutí nelze provést&lt;br /&gt;
* drobné užitečné opravy dle hlášení uživatelů&lt;br /&gt;
* verze FC zvýšena na 0x08, a přidána možnost uložit 128 proměnných do baterií zálohované pamětí (tzn. obsah přežije výpadek napájení a FC program po restartu o tyto údaje nepřijde)&lt;br /&gt;
&lt;br /&gt;
== 2.6.2017 ==&lt;br /&gt;
* návratová hodnota funkce DF_read_page() je nastavena správně i v případě, kdy tato funkce čte data z cache (opakované čtení stejné stránky DF)&lt;br /&gt;
&lt;br /&gt;
== 6.4.2017 ==&lt;br /&gt;
* přidána FULL-C funkce AES-128-CTR, viz SDS_crypto(0x20, ...);&lt;br /&gt;
&lt;br /&gt;
== 31.3.2017 ==&lt;br /&gt;
* oprava RS485-MASTER drive, je teď zcela přesný (tzn. vypnut v přesném časování za úplně posledním vyslaným bitem)&lt;br /&gt;
* oprava čtení konfigurace 1-W, pomocí sds_get_a()&lt;br /&gt;
* přidán index 139&lt;br /&gt;
* odstraněno omezení na 32 znaků pro sdílené proměnné (přenos textu) &amp;quot;Txx&amp;quot; (xx = 00 až 99)&lt;br /&gt;
* fix návratových hodnot FULL-C funkcí pro práci s DF (teď to vrací správně 1 nebo 0, podle wiki)&lt;br /&gt;
* upřesněn název: (z BIG na BIG-64) / (z STSW na STSW-64)&lt;br /&gt;
* vyžaduje aktuální SDSLOAD.exe (6.3.2017 nebo novější) a FULLC.exe (6.3.2017 nebo novější)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== starší záznamy ==&lt;br /&gt;
&lt;br /&gt;
Nejsou k dispozici.&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=937</id>
		<title>Firmware</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=937"/>
		<updated>2025-02-27T07:51:53Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Nový Firmware ==&lt;br /&gt;
&lt;br /&gt;
Aktualizujte si své SDS - nahrejte do něj nový firmware, který získáte na této stránce - '''naskrolujte dolů''' kde naleznete odkaz na BIN soubor pro vaše zařízení.&lt;br /&gt;
&lt;br /&gt;
Postup a řešení problémů: [[Manual_Firmware_Update|Návod pro aktualizaci Firmware v SDS]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Odkazy ke stáhnutí ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;PC Software&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_sdsc_winexe.jpg]] '''Program SDSC.exe''' (programovací jazyk SDS-C, aktualizace firmware pro SDS '''první řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; stáhnout WinEXE pro SDS-C [https://sds.an-d.cz/firmware/SDSC_310123.exe zápis/simulace/upload SDS-C (SDS-C '''verze 09''') a UWEB, ze dne 31.1.2023]&amp;lt;br&amp;gt;SHA-256: daf1095f206404e33223f675f5d0bc09d4fc5dfd7d9f79f4f735af88f5ff1e6a&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program FULLC.exe''' (programovací jazyk FULL-C, aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; (FC verze '''0x12''' - '''aktuální'''): stáhnout WinEXE pro FULL-C [https://sds.an-d.cz/firmware/FULLC_220724.exe zápis/upload FULL-C a UWEB, ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro Firmware od 9.3.2023 včetně, pro všechny varianty SDS (64kB a 128kB a 512kB)&amp;lt;br&amp;gt;SHA-256: b4cb95d8ec8a6e844a3a4c9a2e9fc50ece60ccf44e8043f8c10f46b2294cae0b&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program SDSLOAD.exe''' (&amp;quot;jednokrokový&amp;quot; upload .FC souborů a aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; ('''aktuální''' verze, pro FW od 10.7.2017 včetně a dále) stáhnout WinEXE [https://sds.an-d.cz/firmware/SDSLOAD_220724.exe program SDSLOAD ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro všechny SDS varianty 64kB a 128kB a 512kB, (subvarianty DP a DS84)&amp;lt;br&amp;gt;SHA-256: ded5bf1aca2e04e22c33899a0976deccc8ff76eb88f53ecd9769788b7daa25a7&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_empty.jpg]] '''Program SDS LOG'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; Program '''[[SDS LOG: intro|SDS LOG]]''' - verze 0.1 ze dne 26.8.2011 - [https://sds.an-d.cz/firmware/SDS_LOG.exe stáhnout EXE program]&lt;br /&gt;
&amp;lt;li&amp;gt; Zdrojové kódy programu SDS LOG (Creative Commons Licence) [[SDS LOG: source code|ke stáhnutí zde]]&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS LOG: changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;První Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMICROE.jpg]]  [[Soubor:Thumbnail_SDSMICRO.jpg]] [[Soubor:Thumbnail_SDS_DIN.jpg]] '''D0000001''' MICRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: LM]] varianty '''LIGHT''', '''LIGHT 2''' a '''E (DIN)'''.&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny varianty a revize SDS MICRO LM.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_010722_CZ.bin SDS-MICRO-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_010722_EN.bin SDS-MICRO-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B0000057''' MICRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_021123_CZ.bin SDS-MICRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_021123_EN.bin SDS-MICRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B000D957''' MICRO ST DP&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST DP]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST DP.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_021123_CZ.bin SDS-MICRO-ST-DP-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_021123_EN.bin SDS-MICRO-ST-DP-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MINI_1.png]] [[Soubor:Thumbnail_SDS_MINI_2.png]] '''B0000020''' MINI ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MINI: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MINI ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MINI_021123_CZ.bin SDS-MINI-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MINI_021123_EN.bin SDS-MINI-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
[[SDS MINI: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMACRO.jpg]] '''C0000001''' MACRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: LM]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_010722_CZ.bin SDS-MACRO-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_010722_EN.bin SDS-MACRO-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MACRO_ST_rev1.png]] '''C0000057''' MACRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_021123_CZ.bin SDS-MACRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_021123_EN.bin SDS-MACRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSTTCPRO.jpg]] '''B0000001''' TTCPRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS TTCPRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_021123_CZ.bin SDS-TTCPRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_021123_EN.bin SDS-TTCPRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS TTCPRO ST má shodný Change Log se SDS MINI ST, a to zde: [[SDS MINI: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSIO6.jpg|160px]] '''D0000006''' IO6 LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: LM]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_010722_CZ.bin SDS-IO6-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_010722_EN.bin SDS-IO6-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 LM má shodný Change Log se SDS MICRO LM, a to zde: [[SDS MICRO: LM: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_empty.jpg]] '''D0000011''' IO6 ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_021123_CZ.bin SDS-IO6-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_021123_EN.bin SDS-IO6-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 ST má shodný Change Log se SDS MICRO ST, a to zde: [[SDS MICRO: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_FTP_rev1.png]] '''F0000001''' FTP LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS FTP: LM]], výchozí firmware.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Firmware: ''SDS FTP ze dne 7.9.2010'' už nahrán ve výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS FTP: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_ONEDPS.jpg]] '''E000AAA1''' UPS ONEDPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: ONEDPS]], finální jednodesková verze (aktuální) (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stáhnout firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_CZ.bin (Česká lokalizace) SDS-UPS-ONEDPS-LM ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;Download firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_EN.bin (English language version) SDS-UPS-ONEDPS-LM released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS UPS: LM: ONEDPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_TWODPS.jpg]] '''C00xxxxx''' UPS TWODPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: TWODPS]], HW rev3u - DVOUDESKOVÁ (UŽ NEPRODÁVANÁ) varianta.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je zaslán na požádání (pošlete email), aktuální verze je z 1.3.2011 (dále aktualizováno na specifické požádání, raději proto přejděte na nový HW).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Každá deska má svou kalibraci, proto každá deska má svůj vlastní FW, proto musíte uvést S/N svého výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;HISTORIE: [[SDS UPS: LM: TWODPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;Druhá Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSBIG.jpg]] [[Soubor:Thumbnail_SDSSMALL.jpg]] '''B1900001''' / '''B1900002''' / '''B1900004''' : BIG, BIG2, SMALL, STSW, MBGW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Společný firmware pro výrobky [[SDS BIG]], [[SDS SMALL]] a [[SDS STSW]] a [[SDS MBGW]]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je jednotný pro všechny varianty '''SDS Druhé Produktové Řady''', nutné je rozlišení dle varianty 64kB/128kB/512kB. Rozlišení podle dalších subvariant (DP, DS84) se neprovádí.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je společný pro BIG a BIG2, rozlišení je pouze dle varianty 64/128/512.&lt;br /&gt;
&amp;lt;li&amp;gt;Pozn. Modul SMALL a modul MBGW interně obsahuje modul STSW, nahrává se tam tedy stejný FW.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware vždy vyžaduje použití odpovídající, aktuální verze FULLC.EXE programu. &lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS BIG/SMALL/STSW: [[SDS BIG: firmware changelog|firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;64kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 64kB) [https://sds.an-d.cz/firmware/SDS_BIG_64K_270225_EN.bin firmware &amp;quot;64kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 27.2.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;128kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 128kB) [https://sds.an-d.cz/firmware/SDS_BIG_128K_270225_EN.bin firmware &amp;quot;128kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 27.2.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;512kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [[firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 12.4.2022|informace pokud máte SDS512 s FW &amp;lt;b&amp;gt;starším&amp;lt;/b&amp;gt; než 12.4.2022]]&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [https://sds.an-d.cz/firmware/SDS_BIG_512K_270225_EN.bin firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 27.2.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;Informace: SDS BIG/SMALL/STSW 512 se starším FW než 12.4.2022 vyžaduje přeprogramování u výrobce.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| POZOR&lt;br /&gt;
'''Aktualizujte''' své doplňkové sandwich desky, tzn. [[SDS BIG: DALI]], [[SDS BIG: LORA]] - na verzi FW 5.12.2016 '''nebo novější'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Aktualizaci lze provést jen fyzicky u výrobce, ten ji provede bezplatně (zašlete výrobci vaše SDS pro jeho aktualizaci). Se starým FW nebude tento HW plně fungovat.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Informace ===&lt;br /&gt;
&lt;br /&gt;
 VŽDY MĚJTE VE SVÉM ZAŘÍZENÍ NEJNOVĚJŠÍ FIRMWARE, A POUŽÍVEJTE TAKÉ NEJNOVĚJŠÍ SDS-C EXE / FULL-C EXE PROGRAM.&lt;br /&gt;
 V opačném případě vám budou chybět nové funkce, které neustále přidáváme, a také nebudete mít opravené nalezené chyby.&lt;br /&gt;
 V případě že chcete získat podporu, musíte mít instalovaný nejnovější firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Historický Software ===&lt;br /&gt;
&lt;br /&gt;
Za účelem aktualizace takových SDS, kde už dlouho nebyl aktualizován firmware, je potřeba použít odpovídající EXE program pro aktualizaci takovéhoto zařízení.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== První Produktová Řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro SDS-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_151119.exe ze dne '''15.11.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 08, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020118.exe ze dne '''2.1.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 07, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020317.exe ze dne '''2.3.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 8.8.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_060216.exe ze dne '''6.2.2016''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které nemají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 24.1.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_231111.exe ze dne '''23.11.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 04&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_170211.exe ze dne '''17.2.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''února 2011''')&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro ''SDS-C verze č. 03'' (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_140511.exe ze dne '''14.5.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''konce května 2011''')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Druhá Produktová řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro FULL-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_070323.exe ze dne '''7.3.2023''']&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_311222.exe ze dne '''31.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 11, (firmware od 9.1.2023 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_071222.exe ze dne '''7.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 10, (firmware od 18.11.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_161022.exe ze dne '''16.10.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0F, (firmware od 16.10.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_110722.exe ze dne '''11.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0E, (firmware od 11.7.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010722.exe ze dne '''1.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0D, (firmware od 6.8.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030422.exe ze dne '''3.4.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0C, (firmware od 23.3.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010322.exe ze dne '''1.3.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0B, (firmware od 6.8.2020 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030119.exe ze dne '''3.1.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0A, (firmware od 3.1.2019 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010718.exe ze dne '''1.7.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 09, (firmware od 27.6.2018 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_100717.exe ze dne '''10.7.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 08, (firmware od 10.7.2017 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_080617.exe ze dne '''8.6.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 06, (firmware starší než Červenec-2017, a pouze pro variantu SDS 64kB)&lt;br /&gt;
&lt;br /&gt;
* (historická verze) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_201022.exe ze dne 20.10.2022]&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_120417.exe ze dne 12.4.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB která používá ''starý'' firmware (2017 nebo starší)&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_100717.exe ze dne 10.7.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB a 128kB (nepodporuje variantu 512kB tak jako aktuální stáhnutelná verze aplikace)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta Testing ==&lt;br /&gt;
&lt;br /&gt;
Než vydáme novou verzi, je potřeba změny a novinky otestovat.&lt;br /&gt;
&lt;br /&gt;
Pokud jste ochotní se testu zúčastnit, pak se podívejte [https://forum.sds.an-d.cz/viewtopic.php?id=129 na tento odkaz]. Zde jsou uveřejněny vždy nejnovější beta verze firmware.&lt;br /&gt;
&lt;br /&gt;
Diskuse s vývojem k aktuálnímu Firmware je k dispozici na našem fóru.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_BIG:_firmware_changelog&amp;diff=936</id>
		<title>SDS BIG: firmware changelog</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_BIG:_firmware_changelog&amp;diff=936"/>
		<updated>2025-02-20T07:50:48Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SDS-BIG(2) , SDS-SMALL(2), SDS-STSW a všechny OEM ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
Tato stránka se věnuje změnám ve firmware a v HW pro výrobek SDS-BIG a SDS-SMALL a SDS-STSW.&lt;br /&gt;
&lt;br /&gt;
Změny jsou seřazeny tak, že nejnovější verze (která je stáhnutelná z webu) je popsána jako první.&lt;br /&gt;
&lt;br /&gt;
Proč je vydáván nový firmware? Protože operativně řešíme požadavky uživatelů, a jsou doplňovány nové funkce.&lt;br /&gt;
&lt;br /&gt;
Firmware poskytujeme zcela zadarmo po celou dobu životnosti výrobku. Děláme to vše pro Vás.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 8.2.2025 ==&lt;br /&gt;
* oprava některých payloadů v protokolu SUDP &lt;br /&gt;
&lt;br /&gt;
== 22.7.2024 ==&lt;br /&gt;
* FULLC.EXE - odstraněna chyba, která neumožnila nahrát do SDS soubor FCB větší než 64kB&lt;br /&gt;
* možnost volby klidového stavu pro každý S0 vstup (umožňuje počítat impulsy i pro NC spínače v měřiči energie)&lt;br /&gt;
* FC: SDS_reset_program() nezanechává nadbytečnou chybouvou hlášku v konzoli&lt;br /&gt;
* FC: mqtt_publish() použije vámi nastavené bitové pole do PUBLISH hlavičky (viz index 11198)&lt;br /&gt;
* SMTP odesílání by mělo být robustnější při odesílání více emailů za sebou&lt;br /&gt;
&lt;br /&gt;
== 24.2.2024 ==&lt;br /&gt;
* možnost smazat nahraný TLS klíč+certifikát (tlačítko s heslem, ve webovém rozhraní)&lt;br /&gt;
* RSTD nesmaže (nanastaví na tovární hodnoty) vaše nastavení pro všechny AD vstupy (to lze teď udělat ručně, nově přidaným tlačítkem ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 31.10.2023 ==&lt;br /&gt;
* SNMP - oprava způsobu předání chyby v odpovědi&lt;br /&gt;
* SNMP v1 - možnost nastavit dvě nezávislé komunity&lt;br /&gt;
* 512: plná implementace SNMP v3 (včetně AUTHPRIV)&lt;br /&gt;
* 64,128: omezená implementace SNMP v3 (pouze NOAUTHNOPRIV)&lt;br /&gt;
* FC: indexy 66, 67, 68, 4990..4999&lt;br /&gt;
&lt;br /&gt;
== 19.8.2023 ==&lt;br /&gt;
* oprava SDS UDP SEARCH (příchozí paket na portu 20484 byl firewallem od verze 6.6.23 zahozen, teď už opraveno)&lt;br /&gt;
* 512: HTTPS server (aktivace nahráním certifikátu, jinak zůstává HTTP)&lt;br /&gt;
&lt;br /&gt;
== 14.7.2023 ==&lt;br /&gt;
* HTTP POST: oprava sekundární chyby (objevila se ve FW 6.6.2023), kdy FW akceptoval jen rozdělený krok č. 2 (teď už opět umí jak rozdělený, tak i nerozdělený krok č. 2)&lt;br /&gt;
* FC: umožněn přímý zápisu do indexu 193 (přímo zapíše do registru PWM - určeno pro nejjemnější uživatelskou přímo konfiguraci generátoru PWM)&lt;br /&gt;
&lt;br /&gt;
== 6.6.2023 ==&lt;br /&gt;
* funkce http_header_set_user_row() má zvětšenou maximální délku parametru na 255 znaků&lt;br /&gt;
* 512: počet MQTT subscribe zvětšen z max. 8 na max. 20&lt;br /&gt;
* 512: další zvětšení FC konzole&lt;br /&gt;
* webový admin: úprava (oprava) použití timerů v javascriptu &lt;br /&gt;
* FC: DNS resolv umí pracovat s širším rozsahem UDP portů (někdy způsobilo nepřijetí odpovědi a musel se resolv opakovat)&lt;br /&gt;
* HTTP POST: poradí si i s ne-oddělenou komunikací (když klient pošle úvodní konverzační data najednou, neodděleně, tzn. nečeká na odpověď ze serveru)&lt;br /&gt;
 &lt;br /&gt;
== 9.3.2023 ==&lt;br /&gt;
* FC: verze 0x12 (+ odpovídající FULLC.EXE): přidány funkce http_header_set_user_row() a http_header_set_content_type()&lt;br /&gt;
* 64 a 128: odstraněno možné zpomalení běhu po zapnutí v určité okrajové situaci&lt;br /&gt;
&lt;br /&gt;
== 28.2.2023 ==&lt;br /&gt;
* POST: přidán příkaz /wrdf&lt;br /&gt;
* POST: oprava chyby, kdy mohlo dojít k neprovedení akce na základě příkazu /changeip&lt;br /&gt;
* malá bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 9.1.2023 ==&lt;br /&gt;
* FC verze 0x11 (+ odpovídající FULLC.EXE)&lt;br /&gt;
* firmware pro všechny HW varianty BIG, BIG2-DP a BIG2-DP-DS84&lt;br /&gt;
* web: doplněno zobrazení surových hodnot, čtených z 1-Wire zařízení &lt;br /&gt;
* FC: přidána funkce SDS_onewire_config() pro varianty -DS84&lt;br /&gt;
* FC: doplněna funkčnost FC WatchDog (pro situaci, pokud spadne program na chybu a je zastaven, tak FC Watchdog pokračuje a provede restart FC programu)&lt;br /&gt;
* FC: doplněna archivace poslední chyby FC programu, a zobrazení na webu (i v případě restartu FC Watchdogem)&lt;br /&gt;
* FC: funkce pro prohledání složky (file_opendir, file_readdir, file_closedir)&lt;br /&gt;
* oprava PWM3 a PWM4 na BIG2-64/128 - funkce, ukládání nastavení&lt;br /&gt;
* HW BIG2 DS84: RTC běží na baterii na všech HW variantách DS84 - udržuje běžící aktuální čas i při vypnutém napájení&lt;br /&gt;
* FC: přidána funkce SDS_onewire_search_bus()&lt;br /&gt;
* FC: přidány indexy 132..136 , indexy 2488..2499, 2986..2997&lt;br /&gt;
&lt;br /&gt;
== 1.12.2022 ==&lt;br /&gt;
* bezpečnostní aktualizace (dle nahlášené záležitosti a testu)&lt;br /&gt;
* trvalé zobrazení archivovaného HW faultu v Logu (pokud dojde k faultu, je hned před restartem zařízení archivován a trvale zobrazován ve výpisu, i po libovolném novém spuštění)&lt;br /&gt;
* odstraněno eventuální čekání (a následný WDG restart) při komunikaci s externími I2C zařízeními (specifické chipy na sandwich deskách uživatelů)&lt;br /&gt;
&lt;br /&gt;
== 30.11.2022 ==&lt;br /&gt;
* FC: zvýšena výkonnost (512: optimalizace pro až několika-násobné celkové zrychlení vykonávání programu) (64,128: byť jen menší zrychlení, ale přece + zvětšená konzole echo.htm) &lt;br /&gt;
* zrychleno webové rozhraní (zpomaleno zřejmě o dvě verze zpět, byť to bylo bez vlivu na funkci, je vhodnější když to nezdržuje při zobrazování v prohlížeči)&lt;br /&gt;
* FC: přidán index 137&lt;br /&gt;
* zlepšena interní obsluha sériových linek (COMx/RS485), odstraněno možné náhodné zpoždění (byť jen ve specifickém případě a jen o několik msec, ale i tak se toto vyřešilo)&lt;br /&gt;
&lt;br /&gt;
== 22.11.2022 ==&lt;br /&gt;
* FC (64/128/512): verze 0x10 &lt;br /&gt;
* dns_resolv správně hlásí chybu 516 a 517 při výpadku připojení v průběhu dotazu&lt;br /&gt;
&lt;br /&gt;
== 18.11.2022 ==&lt;br /&gt;
* FC (64/128): verze 0x10 &lt;br /&gt;
* FC: nová funkce SDS_set_RTC&lt;br /&gt;
* FC: nové funkce pro práci s float&lt;br /&gt;
* oprava pro mounting některých typů SD karet&lt;br /&gt;
&lt;br /&gt;
== 14.11.2022 ==&lt;br /&gt;
* FC: oprava výpočtů v 64-bit doméně&lt;br /&gt;
* FC: file_expand() - detailnější rozvrstvení návratových chybových hodnot&lt;br /&gt;
* web: rozšířeny zobrazované informace o probíhajícím připojování SD karty&lt;br /&gt;
* web server: vrací korektně 503 pro soubory na SD kartě, které jsou zablokovány FC programem&lt;br /&gt;
* FC: rozšířena a zásadně zlepšena implementace printf/sprintf/snprintf/sscanf - viz detaily v návodu na wiki&lt;br /&gt;
* FC: zlepšen výpis (informace na web) při určitých chybách v FC programu, plus další drobky kolem echo.htm&lt;br /&gt;
&lt;br /&gt;
== 16.10.2022 ==&lt;br /&gt;
* tento firmware (od této verze) podporuje i hardware SDS 64/128/512 ve variantě DP&lt;br /&gt;
* podpora pro 4 PWM výstupy (pro vhodný hardware - BIG2)&lt;br /&gt;
* odpověď na (webový) příkaz /sv? , má doplněný obsah http hlavičky, takže by ji mělo být snazší zpracovat&lt;br /&gt;
* FC: watchdog programu je (nově) pozastaven po dobu mountování SD karty (protože je pozastaven i program)&lt;br /&gt;
* FC: zápis do indexu 999 funguje jak má&lt;br /&gt;
* FC: verze 0x0F (nové funkce PWMx)&lt;br /&gt;
&lt;br /&gt;
== 5.10.2022 ==&lt;br /&gt;
* pouze vše řady 512 (ostatní bez tohoto problému) - důležitá oprava situace kdy někdy chybně došlo ke smazání nahraného FC programu při nahrání nového UWEB projektu do SDS&lt;br /&gt;
&lt;br /&gt;
== 30.9.2022 ==&lt;br /&gt;
* FC: oprava běhu programu v situaci kdy v kódu je vnořený (nested) switch() v rámci jiného switch() (původně chybné chování, teď opraveno)&lt;br /&gt;
&lt;br /&gt;
== 28.9.2022 ==&lt;br /&gt;
* FC: oprava výsledků maker (define), kdy chybně docházelo k pevnému přetypování na int32_t, což je teď opraveno (odstraněno)&lt;br /&gt;
&lt;br /&gt;
== 1.8.2022 ==&lt;br /&gt;
* správně zobrazovaná hláška (nápověda) na úvodní webové stránce ohledně stavu konfigurace&lt;br /&gt;
* FC: přidáno tlačítko (odkaz) pro restart FULLC programu (např. pokud skončil a chcete jej ručně spustit znovu)&lt;br /&gt;
* FC: do výpisu chyby při pádu programu je přidán UTC čas (pro identifikaci, kdy se chyba stala)&lt;br /&gt;
* FC: spolehlivostní úpravy při startu programu (načtení z DF), a při zápisu nového programu (práce s DF)&lt;br /&gt;
&lt;br /&gt;
== 11.7.2022 ==&lt;br /&gt;
* FC: verze 0x0E&lt;br /&gt;
* FC: přidána funkce mktime()&lt;br /&gt;
* FC: přidána funkce gmtime()&lt;br /&gt;
* FC: přidána funkce localtime()&lt;br /&gt;
* opraveno zachování konfigurace ipwdg (webové rozhraní) a obsluhy relé ipwdg&lt;br /&gt;
&lt;br /&gt;
== 1.7.2022 ==&lt;br /&gt;
* FC: verze 0x0D&lt;br /&gt;
* FC: upravena funkce SDS_TOPB_keyboard_status() pro lepší předané výsledky&lt;br /&gt;
* FC: přidána funkce SDS_TOPB_keyboard_updn()&lt;br /&gt;
* FC: přidána funkce SDS_rescan_onewire()&lt;br /&gt;
* FC: odstraněno náhodné hlášení o už probíhajícím nahrávání programu při nahrávání z EXE&lt;br /&gt;
* BIG 64/128 prodloužen čas pro sestavení Ethernetového spojení, což řeší problém s některými USB síťovými kartami atd.&lt;br /&gt;
* opraveno HTTP POST nastavení položek NTP&lt;br /&gt;
* opraveno HTTP POST který teď neuzavře spojení dříve než má, pokud mazání NVM pro nový FW (nebo nový UserWeb) trvá dlouho&lt;br /&gt;
&lt;br /&gt;
== 12.4.2022 ==&lt;br /&gt;
* doplněna informační stránka o vnitřním stavu OneWire Master (pro snazší identifikaci problémů při používání sběrnice)&lt;br /&gt;
* oprava v bootloaderu pro řadu 512 - vyžaduje přeprogramování u výrobce pro všechna SDS řady 512 s FW starším než 14.2.2022&lt;br /&gt;
&lt;br /&gt;
== 3.4.2022 ==&lt;br /&gt;
* FC verze 0x0C&lt;br /&gt;
* FC: přidána funkce SDS_I2C_rw&lt;br /&gt;
* OneWire stabilnější&lt;br /&gt;
&lt;br /&gt;
== 21.1.2022 ==&lt;br /&gt;
* prioritu mají vybrané konfigurační položky v NVM (jsou-li tam platné) před baterií zálohovanou pamětí&lt;br /&gt;
* aktivován HTTP POST protokol pro nahrávání a konfiguraci SDS (viz [[SDS:POST_upload]])&lt;br /&gt;
&lt;br /&gt;
== 18.1.2022 ==&lt;br /&gt;
* RSTD zapíše do NVM všechny konfigurační položky (i to co nenuluje), pro jistotu že v NVM bude vše skutečně zapsáno&lt;br /&gt;
* načítání konfigurace upraveno (větší spolehlivost)&lt;br /&gt;
&lt;br /&gt;
== 15.1.2022 ==&lt;br /&gt;
* přidána stránka cfgstatus.htm - pro možnost kontroly stavu uložené konfigurace v pevné paměti (např. co nemáte uloženo)&lt;br /&gt;
* přidán M2M výstup ip.xml&lt;br /&gt;
* FC: přidán algoritmus SHA-256 do funkce SDS_crypto()&lt;br /&gt;
* FC: každý program má unikátní identifikátor, podle kterého lze např. kontrolovat či zpětně poznat co máte v SDS nahráno&lt;br /&gt;
* identifikátor FC programu přidán na webové rozhraní a do M2M výstupů, a do exe aplikace&lt;br /&gt;
* zobrazeno unikátní identifikační čislo SDS hardware (napevno spojeno s modulem SDS, nezměnitelné), teď i ve M2M výstupech&lt;br /&gt;
* SNMP: nové položky .8.90 , .8.91 , .8.99&lt;br /&gt;
* FC: nové get(u32) položky 2 a 87&lt;br /&gt;
&lt;br /&gt;
== 31.12.2021 ==&lt;br /&gt;
* možnost vyřadit NTP z činnosti zadáním adresy 127.0.0.1 (vhodné pro uživatele kteří získávají čas odjinud, např. přes LoRA)&lt;br /&gt;
* web: informace na web (p=8) o stavu připojování SD karty (mounting...) a o stavu kdy je FC program pozastaven (PAUSED)&lt;br /&gt;
* web: opraven zámek zvětšené konzole (echo)&lt;br /&gt;
* důslednější kontrola platnosti konfigurace při startu&lt;br /&gt;
&lt;br /&gt;
== 27.12.2021 ==&lt;br /&gt;
* opravena chyba kdy na webu nešlo nastavit 100 procent PWM duty (jen 0 až 99, teď už jde i 100)&lt;br /&gt;
* FC: několikanásobně zvětšena konzole (echo.htm)&lt;br /&gt;
* HW: při poruše hlavního zdroje hodin (krystal) se použije záložní zdroj&lt;br /&gt;
* HW: využíváme RTC pro udržení času při přechodu přes reset (drží čas dokud zase nepřijde NTP)&lt;br /&gt;
* aktualizován bootloader (aktualizace bootloaderu jen prostřednictvím přeprogramování u výrobce) - umí znovu nahrát FW pokud se v SoC poškodí&lt;br /&gt;
* vydána varianta 512 - vlastní soubor s firmware&lt;br /&gt;
&lt;br /&gt;
== 25.12.2021 ==&lt;br /&gt;
* pouze interní vydání&lt;br /&gt;
&lt;br /&gt;
== 26.3.2021 ==&lt;br /&gt;
* FC: oprava nesprávného zacházení s unsigned typy (na některých místech interně přemapovány na signed)&lt;br /&gt;
* FC: chování varianty if pro speciální kombinaci signed/unsigned dle specifikace standardu C&lt;br /&gt;
&lt;br /&gt;
== 9.2.2021 ==&lt;br /&gt;
* FC: oprava TID v MODBUS-TCP&lt;br /&gt;
* MBTC výpis rozšířen&lt;br /&gt;
* FC: drobná úspora heap (více dostupného místa)&lt;br /&gt;
* FC: dns resolv drobný fix&lt;br /&gt;
* FC: http_get a http_post důležitý fix&lt;br /&gt;
* FC: nová funkce http_close&lt;br /&gt;
* FC: chyba -7 pro MODBUS-TCP a pro MQTT&lt;br /&gt;
* vylepšený algoritmus S0, rozšířené možnosti nastavení detektoru S0 (nastavení přidáno ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 22.12.2020 ==&lt;br /&gt;
* web: ruční přepnutí CBY pro relé (tzn. &amp;quot;kdo ovládá relé&amp;quot;), na &amp;quot;FULL-C&amp;quot;, dané relé nevypne (off) ale ponechá jeho stávající stav (on, off)&lt;br /&gt;
* security fix&lt;br /&gt;
&lt;br /&gt;
== 10.12.2020 ==&lt;br /&gt;
* dřívější odeslání NTP požadavku po výpadku síťového spojení&lt;br /&gt;
* integrovaná korekce chyby A/D měření pro HW osazený LMV324; uživatel může povolit tuto automatickou opravu chyby LMV324 ve webové administraci&lt;br /&gt;
* počítání délky aktivace tarifního vstupu (doba T0 a T1 v sekundách za den) viz nové sys, pozor pro funkci vyžaduje NTP&lt;br /&gt;
* automatický odečet S0 počítadel (vždy za dnešek a včerejšek), viz nové sys, pozor pro funkci vyžaduje NTP&lt;br /&gt;
&lt;br /&gt;
== 23.11.2020 ==&lt;br /&gt;
* FC + FULLC.exe: oprava chyby v případě více #if / #ifdef / #endif bloků zapsaných hned za sebou&lt;br /&gt;
* FC: makra a define lze provést i uvnitř funkce (dříve jen venku)&lt;br /&gt;
* FC: detekce nesprávné dereference ukazatele&lt;br /&gt;
&lt;br /&gt;
== 14.11.2020 ==&lt;br /&gt;
* webová administrace: stránka p=42: index ck03 se propíše i do nastavení (chybělo od 23.10.2020, web byl aktualizován, nastavení ale přebíralo ck00)&lt;br /&gt;
&lt;br /&gt;
== 4.11.2020 ==&lt;br /&gt;
* FC + FULLC.exe: odstraněn problém při načtení nahraného FULL-C programu v SDS, kdy dříve mohlo u jedné specifické velikosti nahraného programu, dojít k jeho nespuštění kvůli neodpovídajícímu crc&lt;br /&gt;
&lt;br /&gt;
== 3.11.2020 ==&lt;br /&gt;
* FC: zobrazení (v konzoli) čísla řádku (ve zdrojovém kódu) při chybě (což velmi zlepší ladění programů)&lt;br /&gt;
* FULLC.exe: odstraněno omezení na 255 znaků na řádek&lt;br /&gt;
* FULLC.exe: zrychlení nahrávání do SDS&lt;br /&gt;
&lt;br /&gt;
== 23.10.2020 ==&lt;br /&gt;
* webová administrace: stránka p=42: změna indexu ck00 na ck03 ať se dají uživatelským skriptem všechny prvky samostatně rozlišit&lt;br /&gt;
* FC: oprava http_get/post: správné vyplnění výsledků i pro situaci kdy server ukončí spojení přes TCP RST&lt;br /&gt;
&lt;br /&gt;
== 14.10.2020 ==&lt;br /&gt;
* oprava FULL-C funkce XTEA-CRYPT (bug o dvě verze dříve)&lt;br /&gt;
&lt;br /&gt;
== 13.10.2020 ==&lt;br /&gt;
* důležitá oprava chyby ve FULL-C (ternary operator, a další nahlášené nesrovnalosti)&lt;br /&gt;
&lt;br /&gt;
== 13.9.2020 ==&lt;br /&gt;
* oprava detekce SD karty (některé varianty SD karet nebyly detekovány, teď už ano)&lt;br /&gt;
&lt;br /&gt;
== 9.8.2020 ==&lt;br /&gt;
* FULL-C verze 0B (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* různé drobné opravy a zabezpečení&lt;br /&gt;
* zobrazení auditlogu (webové rozhraní SDS)&lt;br /&gt;
* FC: http_post&lt;br /&gt;
* FC: MQTT klient&lt;br /&gt;
* FC: MODBUS-TCP klient&lt;br /&gt;
&lt;br /&gt;
== 4.8.2020 ==&lt;br /&gt;
* úprava obsluhy relé&lt;br /&gt;
* podpora OneWire modulu SDS-1W-T-RH&lt;br /&gt;
&lt;br /&gt;
== 3.10.2019 ==&lt;br /&gt;
* SMTP klient posílá v hlavičce i položku &amp;quot;Date&amp;quot; (ale jen za předpokladu správného času v SDS)&lt;br /&gt;
* RSTD při zapnutí zařízení, ve kterém není záložní baterie (nebo je vybitá), zachová původně nastavenou MAC adresu (vše ostatní ale už jde do defaultu, což je správně)&lt;br /&gt;
* SUDP: rozšířen NOP příkaz &lt;br /&gt;
* SUDP: přidány další nové příkazy (master_cmd: 32, 33, 40, 42, 44, 48)&lt;br /&gt;
&lt;br /&gt;
== 23.9.2019 ==&lt;br /&gt;
* oprava GUI (S0 Inputs)&lt;br /&gt;
* SNMP nabízí možnost číst všechny sdílené proměnné (FULL-C: Sxx, Uxx, Fxx, Txx)&lt;br /&gt;
* opraven nefunkční RSTD na modulu STSW-rev3&lt;br /&gt;
&lt;br /&gt;
== 23.6.2019 ==&lt;br /&gt;
* oprava chyby objevené ve FW 28.5.2019, kdy na některých specifických SDS nefungovaly AD vstupy&lt;br /&gt;
&lt;br /&gt;
== 28.5.2019 ==&lt;br /&gt;
* oprava funkce SD karty (pro případy kdy se stala po čase nedostupná pro FC/web)&lt;br /&gt;
&lt;br /&gt;
== 5.5.2019 ==&lt;br /&gt;
* dořešeno hlídání stavu (načtení, atd.) SD karty i v případě provozu náročného FULL-C programu (tedy i pro hluboce vnořené smyčky)&lt;br /&gt;
* oprava původně chybné implementace S-UDP příkazu &amp;quot;1Waccess: sub-command 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== 24.2.2019 ==&lt;br /&gt;
* překlopení z BETA do oficiálního FW&lt;br /&gt;
* automatika zimní/letní čas&lt;br /&gt;
* přístup na SD kartu: FULL-C pracuje se soubory (vytvoření, smazání, čtení a zápis, atd.) &lt;br /&gt;
* přístup na SD kartu: web server zobrazuje soubory ze SD karty (vše ve složce \web\ a podsložkách této složky)&lt;br /&gt;
* oprava čtení napětí baterie pro variantu 128K&lt;br /&gt;
* shared.xml&lt;br /&gt;
* odstraněno omezení délky ve shared.txt&lt;br /&gt;
* zprovozněno getsv&lt;br /&gt;
* verze FULL-C je teď FC 0x0A (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* FULL-C: nová možnost způsobu čtení teploty SoC&lt;br /&gt;
* FULL-C: index 64, 65, 184, 185, 429, 430, atd.&lt;br /&gt;
* FULL-C: doplněné set/get funkce pro sdílené proměnné&lt;br /&gt;
* FULL-C: s/printf umí správné zpracovat požadavek na určení desetinných míst pro float&lt;br /&gt;
* FULL-C: funkce pro reset FC programu&lt;br /&gt;
* FULL-C: funkce pro watchdog FC programu&lt;br /&gt;
* SNMP nové OIDy (dle přidaných věcí - čas, sdcard)&lt;br /&gt;
&lt;br /&gt;
== 1.7.2018 ==&lt;br /&gt;
* SNMP: sdsS0translatedUnitT0,1 je poskytováno jako hodnota od odečtu (ne od úplného začátku měření, jak to bylo předtím) &lt;br /&gt;
* FULL-C: přidán index 183 poskytující datum vydání FW který je právě nahrán v SDS&lt;br /&gt;
&lt;br /&gt;
== 27.6.2018 ==&lt;br /&gt;
* verze FULL-C je teď FC 0x09 (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* FULL-C: přidána podpora pro int64_t a uint64_t&lt;br /&gt;
* FULL-C: přejmenováno set a get funkce (rozlišení 32 a 64 bit)&lt;br /&gt;
* FULL-C: snprintf přesně dle standardu (zrušena nevhodná změna z 20.12.2017)&lt;br /&gt;
* drobné opravy&lt;br /&gt;
* drobná oprava v odchozím TCP-SYN a v generátoru ISN&lt;br /&gt;
&lt;br /&gt;
== 8.3.2018 ==&lt;br /&gt;
* oprava echo.htm - správně wrapuje obsah, a nejsou tam nadbytečné 0x00&lt;br /&gt;
* vhodnější řešení rexmitu částí webových stránek a dynamických dat (ocení to zejména uživatelé s mobilním připojením pro SDS)&lt;br /&gt;
&lt;br /&gt;
== 2.3.2018 ==&lt;br /&gt;
* aktulizace a oprava ve výpočtu &amp;quot;aktuálního výkonu&amp;quot; pro okrajové situace (např. krajní hodnoty impulsní konstanty)&lt;br /&gt;
&lt;br /&gt;
== 11.2.2017 ==&lt;br /&gt;
* zprovozněny funkce set/get pro indexy 4000 až 4300 (alternativní přístup k číselným sdíleným proměnným)&lt;br /&gt;
&lt;br /&gt;
== 21.12.2017 ==&lt;br /&gt;
* zvýšena stabilita spuštění po zapnutí&lt;br /&gt;
&lt;br /&gt;
== 20.12.2017 ==&lt;br /&gt;
* dočasná změna ve FULL-C (bude zrušena): funkce snprintf() má interně posunutý limit délky zápisu o 1 (toto je záměrný rozdíl proti C99). Změna v SDS je provedena z důvodu neznalosti programátorů FC v tom, že do snprintf() limitu je potřeba započítat i jeden byte pro ukončující nulu. Ve výsledku tedy zápis &amp;quot;snprintf(buf, limit, ...);&amp;quot; je v FC interně vykonán jako &amp;quot;snprintf(buf, limit+1, ...);&amp;quot;.&lt;br /&gt;
* oprava ve FULL-C: výpočet platné délky bufferu funguje i pro ukazatele vytvořené offsetem ze základní alokované adresy (příklad takového bufferu je: buf=malloc(x)+offset;)&lt;br /&gt;
* stav všech relé je načten z paměti vždy po zapnutí modulu, a ty relé které jsou ručně ovládány (manual control) a které byly před vypnutím v zapnutém (ON) stavu, jsou po zapnutí modulu aktivovány (zatímco relé ovládané z IP-W a FC jsou vždy po zapnutí modulu uvedeny do OFF stavu)&lt;br /&gt;
&lt;br /&gt;
== 18.12.2017 ==&lt;br /&gt;
* UserWEB projekt má opravenu chybu, kdy nebylo možno použít delší Name Chain tabulku (tedy lze už vložit mnohem více souborů) &lt;br /&gt;
* nastavená MAC adresa je zachována i po průchodu RSTD (byla-li platná)&lt;br /&gt;
* opravena chyba způsobující nefunkční http_get(), teď už to opět funguje&lt;br /&gt;
* aktualizace obsluhy PWM (např. lépe přepočítává zobrazovaná &amp;quot;procenta&amp;quot;)&lt;br /&gt;
* oprava strcat() funkce (opraveno hlídání max velikosti bufferu ze &amp;quot;from&amp;quot; na &amp;quot;to&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== 18.9.2017 ==&lt;br /&gt;
* FULL-C: printf() správně tiskne float i pokud se formátovací parametr zadá jako %d (tedy ne jako %f)&lt;br /&gt;
* FULL-C: snprint() opraven (když je 'from' kratší než 'to' tak je 'to' doplněn 0x00 - je to zvláštnost, nemá se to používat, ale C99 to předepisuje, tak to dodržíme)&lt;br /&gt;
&lt;br /&gt;
== 9.9.2017 ==&lt;br /&gt;
* vnitřní bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 29.8.2017 ==&lt;br /&gt;
* oprava chování RSTD - pokud je zapojen před zapnutím, nepřejde do automatického resetu po 10sec, ale RSTD je použit a SDS pracuje dále; přitom funkce &amp;quot;zapoj RSTD za běhu&amp;quot; je zachována správně&lt;br /&gt;
* zásadní zlepšení odolnosti FULL-C proti chybám programátora - vnitřní hlídání rozsahů bufferu a stringů, zamezující zápisu za hranice pole (typicky chybné použití sprintf() funkce, ale toto hlídání je aplikováno obecně všude)&lt;br /&gt;
&lt;br /&gt;
== 8.8.2017 ==&lt;br /&gt;
* oprava: FC teď správně převádí URL kód &amp;quot;sv?xxxx=yyyy...&amp;quot;, na text (vypadlo 31.3. při rozšíření počtu znaků pro sdílené proměnné Txx) &lt;br /&gt;
&lt;br /&gt;
== 10.7.2017 ==&lt;br /&gt;
* vydán firmware pro variantu &amp;quot;128kB&amp;quot; (od teď vychází dva typy firmware, pro variantu &amp;quot;64kB&amp;quot; a variantu &amp;quot;128kB&amp;quot;, vyberete si tu svou dle HW který máte)&lt;br /&gt;
* velká optimalizace využití paměti pro uložení a běh FULL-C programu (komprese, a zmenšení vyžadovaného heapu pro běh programu) - významně zvětšuje možnou velikost FC programu&lt;br /&gt;
* pin RSTD lze teď také použít i bez vypnutí a zapnutí SDS, stačí jej na 10 vteřin za běhu zkratovat (pak se provede RSTD a SDS se rebootuje) - výhodné pro zařízení kde vypnutí nelze provést&lt;br /&gt;
* drobné užitečné opravy dle hlášení uživatelů&lt;br /&gt;
* verze FC zvýšena na 0x08, a přidána možnost uložit 128 proměnných do baterií zálohované pamětí (tzn. obsah přežije výpadek napájení a FC program po restartu o tyto údaje nepřijde)&lt;br /&gt;
&lt;br /&gt;
== 2.6.2017 ==&lt;br /&gt;
* návratová hodnota funkce DF_read_page() je nastavena správně i v případě, kdy tato funkce čte data z cache (opakované čtení stejné stránky DF)&lt;br /&gt;
&lt;br /&gt;
== 6.4.2017 ==&lt;br /&gt;
* přidána FULL-C funkce AES-128-CTR, viz SDS_crypto(0x20, ...);&lt;br /&gt;
&lt;br /&gt;
== 31.3.2017 ==&lt;br /&gt;
* oprava RS485-MASTER drive, je teď zcela přesný (tzn. vypnut v přesném časování za úplně posledním vyslaným bitem)&lt;br /&gt;
* oprava čtení konfigurace 1-W, pomocí sds_get_a()&lt;br /&gt;
* přidán index 139&lt;br /&gt;
* odstraněno omezení na 32 znaků pro sdílené proměnné (přenos textu) &amp;quot;Txx&amp;quot; (xx = 00 až 99)&lt;br /&gt;
* fix návratových hodnot FULL-C funkcí pro práci s DF (teď to vrací správně 1 nebo 0, podle wiki)&lt;br /&gt;
* upřesněn název: (z BIG na BIG-64) / (z STSW na STSW-64)&lt;br /&gt;
* vyžaduje aktuální SDSLOAD.exe (6.3.2017 nebo novější) a FULLC.exe (6.3.2017 nebo novější)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== starší záznamy ==&lt;br /&gt;
&lt;br /&gt;
Nejsou k dispozici.&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=935</id>
		<title>Firmware</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=935"/>
		<updated>2025-02-20T07:48:27Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Nový Firmware ==&lt;br /&gt;
&lt;br /&gt;
Aktualizujte si své SDS - nahrejte do něj nový firmware, který získáte na této stránce - '''naskrolujte dolů''' kde naleznete odkaz na BIN soubor pro vaše zařízení.&lt;br /&gt;
&lt;br /&gt;
Postup a řešení problémů: [[Manual_Firmware_Update|Návod pro aktualizaci Firmware v SDS]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Odkazy ke stáhnutí ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;PC Software&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_sdsc_winexe.jpg]] '''Program SDSC.exe''' (programovací jazyk SDS-C, aktualizace firmware pro SDS '''první řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; stáhnout WinEXE pro SDS-C [https://sds.an-d.cz/firmware/SDSC_310123.exe zápis/simulace/upload SDS-C (SDS-C '''verze 09''') a UWEB, ze dne 31.1.2023]&amp;lt;br&amp;gt;SHA-256: daf1095f206404e33223f675f5d0bc09d4fc5dfd7d9f79f4f735af88f5ff1e6a&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program FULLC.exe''' (programovací jazyk FULL-C, aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; (FC verze '''0x12''' - '''aktuální'''): stáhnout WinEXE pro FULL-C [https://sds.an-d.cz/firmware/FULLC_220724.exe zápis/upload FULL-C a UWEB, ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro Firmware od 9.3.2023 včetně, pro všechny varianty SDS (64kB a 128kB a 512kB)&amp;lt;br&amp;gt;SHA-256: b4cb95d8ec8a6e844a3a4c9a2e9fc50ece60ccf44e8043f8c10f46b2294cae0b&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program SDSLOAD.exe''' (&amp;quot;jednokrokový&amp;quot; upload .FC souborů a aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; ('''aktuální''' verze, pro FW od 10.7.2017 včetně a dále) stáhnout WinEXE [https://sds.an-d.cz/firmware/SDSLOAD_220724.exe program SDSLOAD ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro všechny SDS varianty 64kB a 128kB a 512kB, (subvarianty DP a DS84)&amp;lt;br&amp;gt;SHA-256: ded5bf1aca2e04e22c33899a0976deccc8ff76eb88f53ecd9769788b7daa25a7&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_empty.jpg]] '''Program SDS LOG'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; Program '''[[SDS LOG: intro|SDS LOG]]''' - verze 0.1 ze dne 26.8.2011 - [https://sds.an-d.cz/firmware/SDS_LOG.exe stáhnout EXE program]&lt;br /&gt;
&amp;lt;li&amp;gt; Zdrojové kódy programu SDS LOG (Creative Commons Licence) [[SDS LOG: source code|ke stáhnutí zde]]&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS LOG: changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;První Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMICROE.jpg]]  [[Soubor:Thumbnail_SDSMICRO.jpg]] [[Soubor:Thumbnail_SDS_DIN.jpg]] '''D0000001''' MICRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: LM]] varianty '''LIGHT''', '''LIGHT 2''' a '''E (DIN)'''.&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny varianty a revize SDS MICRO LM.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_010722_CZ.bin SDS-MICRO-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_010722_EN.bin SDS-MICRO-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B0000057''' MICRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_021123_CZ.bin SDS-MICRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_021123_EN.bin SDS-MICRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B000D957''' MICRO ST DP&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST DP]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST DP.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_021123_CZ.bin SDS-MICRO-ST-DP-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_021123_EN.bin SDS-MICRO-ST-DP-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MINI_1.png]] [[Soubor:Thumbnail_SDS_MINI_2.png]] '''B0000020''' MINI ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MINI: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MINI ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MINI_021123_CZ.bin SDS-MINI-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MINI_021123_EN.bin SDS-MINI-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
[[SDS MINI: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMACRO.jpg]] '''C0000001''' MACRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: LM]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_010722_CZ.bin SDS-MACRO-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_010722_EN.bin SDS-MACRO-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MACRO_ST_rev1.png]] '''C0000057''' MACRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_021123_CZ.bin SDS-MACRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_021123_EN.bin SDS-MACRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSTTCPRO.jpg]] '''B0000001''' TTCPRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS TTCPRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_021123_CZ.bin SDS-TTCPRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_021123_EN.bin SDS-TTCPRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS TTCPRO ST má shodný Change Log se SDS MINI ST, a to zde: [[SDS MINI: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSIO6.jpg|160px]] '''D0000006''' IO6 LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: LM]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_010722_CZ.bin SDS-IO6-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_010722_EN.bin SDS-IO6-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 LM má shodný Change Log se SDS MICRO LM, a to zde: [[SDS MICRO: LM: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_empty.jpg]] '''D0000011''' IO6 ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_021123_CZ.bin SDS-IO6-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_021123_EN.bin SDS-IO6-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 ST má shodný Change Log se SDS MICRO ST, a to zde: [[SDS MICRO: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_FTP_rev1.png]] '''F0000001''' FTP LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS FTP: LM]], výchozí firmware.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Firmware: ''SDS FTP ze dne 7.9.2010'' už nahrán ve výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS FTP: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_ONEDPS.jpg]] '''E000AAA1''' UPS ONEDPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: ONEDPS]], finální jednodesková verze (aktuální) (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stáhnout firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_CZ.bin (Česká lokalizace) SDS-UPS-ONEDPS-LM ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;Download firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_EN.bin (English language version) SDS-UPS-ONEDPS-LM released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS UPS: LM: ONEDPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_TWODPS.jpg]] '''C00xxxxx''' UPS TWODPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: TWODPS]], HW rev3u - DVOUDESKOVÁ (UŽ NEPRODÁVANÁ) varianta.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je zaslán na požádání (pošlete email), aktuální verze je z 1.3.2011 (dále aktualizováno na specifické požádání, raději proto přejděte na nový HW).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Každá deska má svou kalibraci, proto každá deska má svůj vlastní FW, proto musíte uvést S/N svého výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;HISTORIE: [[SDS UPS: LM: TWODPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;Druhá Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSBIG.jpg]] [[Soubor:Thumbnail_SDSSMALL.jpg]] '''B1900001''' / '''B1900002''' / '''B1900004''' : BIG, BIG2, SMALL, STSW, MBGW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Společný firmware pro výrobky [[SDS BIG]], [[SDS SMALL]] a [[SDS STSW]] a [[SDS MBGW]]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je jednotný pro všechny varianty '''SDS Druhé Produktové Řady''', nutné je rozlišení dle varianty 64kB/128kB/512kB. Rozlišení podle dalších subvariant (DP, DS84) se neprovádí.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je společný pro BIG a BIG2, rozlišení je pouze dle varianty 64/128/512.&lt;br /&gt;
&amp;lt;li&amp;gt;Pozn. Modul SMALL a modul MBGW interně obsahuje modul STSW, nahrává se tam tedy stejný FW.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware vždy vyžaduje použití odpovídající, aktuální verze FULLC.EXE programu. &lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS BIG/SMALL/STSW: [[SDS BIG: firmware changelog|firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;64kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 64kB) [https://sds.an-d.cz/firmware/SDS_BIG_64K_080225_EN.bin firmware &amp;quot;64kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 8.2.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;128kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 128kB) [https://sds.an-d.cz/firmware/SDS_BIG_128K_080225_EN.bin firmware &amp;quot;128kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 8.2.2025]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;512kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [[firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 12.4.2022|informace pokud máte SDS512 s FW &amp;lt;b&amp;gt;starším&amp;lt;/b&amp;gt; než 12.4.2022]]&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [https://sds.an-d.cz/firmware/SDS_BIG_512K_080225_EN.bin firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 8.2.2025]&lt;br /&gt;
&amp;lt;li&amp;gt;Informace: SDS BIG/SMALL/STSW 512 se starším FW než 12.4.2022 vyžaduje přeprogramování u výrobce.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| POZOR&lt;br /&gt;
'''Aktualizujte''' své doplňkové sandwich desky, tzn. [[SDS BIG: DALI]], [[SDS BIG: LORA]] - na verzi FW 5.12.2016 '''nebo novější'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Aktualizaci lze provést jen fyzicky u výrobce, ten ji provede bezplatně (zašlete výrobci vaše SDS pro jeho aktualizaci). Se starým FW nebude tento HW plně fungovat.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Informace ===&lt;br /&gt;
&lt;br /&gt;
 VŽDY MĚJTE VE SVÉM ZAŘÍZENÍ NEJNOVĚJŠÍ FIRMWARE, A POUŽÍVEJTE TAKÉ NEJNOVĚJŠÍ SDS-C EXE / FULL-C EXE PROGRAM.&lt;br /&gt;
 V opačném případě vám budou chybět nové funkce, které neustále přidáváme, a také nebudete mít opravené nalezené chyby.&lt;br /&gt;
 V případě že chcete získat podporu, musíte mít instalovaný nejnovější firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Historický Software ===&lt;br /&gt;
&lt;br /&gt;
Za účelem aktualizace takových SDS, kde už dlouho nebyl aktualizován firmware, je potřeba použít odpovídající EXE program pro aktualizaci takovéhoto zařízení.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== První Produktová Řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro SDS-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_151119.exe ze dne '''15.11.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 08, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020118.exe ze dne '''2.1.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 07, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020317.exe ze dne '''2.3.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 8.8.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_060216.exe ze dne '''6.2.2016''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které nemají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 24.1.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_231111.exe ze dne '''23.11.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 04&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_170211.exe ze dne '''17.2.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''února 2011''')&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro ''SDS-C verze č. 03'' (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_140511.exe ze dne '''14.5.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''konce května 2011''')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Druhá Produktová řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro FULL-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_070323.exe ze dne '''7.3.2023''']&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_311222.exe ze dne '''31.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 11, (firmware od 9.1.2023 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_071222.exe ze dne '''7.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 10, (firmware od 18.11.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_161022.exe ze dne '''16.10.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0F, (firmware od 16.10.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_110722.exe ze dne '''11.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0E, (firmware od 11.7.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010722.exe ze dne '''1.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0D, (firmware od 6.8.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030422.exe ze dne '''3.4.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0C, (firmware od 23.3.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010322.exe ze dne '''1.3.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0B, (firmware od 6.8.2020 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030119.exe ze dne '''3.1.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0A, (firmware od 3.1.2019 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010718.exe ze dne '''1.7.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 09, (firmware od 27.6.2018 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_100717.exe ze dne '''10.7.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 08, (firmware od 10.7.2017 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_080617.exe ze dne '''8.6.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 06, (firmware starší než Červenec-2017, a pouze pro variantu SDS 64kB)&lt;br /&gt;
&lt;br /&gt;
* (historická verze) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_201022.exe ze dne 20.10.2022]&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_120417.exe ze dne 12.4.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB která používá ''starý'' firmware (2017 nebo starší)&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_100717.exe ze dne 10.7.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB a 128kB (nepodporuje variantu 512kB tak jako aktuální stáhnutelná verze aplikace)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta Testing ==&lt;br /&gt;
&lt;br /&gt;
Než vydáme novou verzi, je potřeba změny a novinky otestovat.&lt;br /&gt;
&lt;br /&gt;
Pokud jste ochotní se testu zúčastnit, pak se podívejte [https://forum.sds.an-d.cz/viewtopic.php?id=129 na tento odkaz]. Zde jsou uveřejněny vždy nejnovější beta verze firmware.&lt;br /&gt;
&lt;br /&gt;
Diskuse s vývojem k aktuálnímu Firmware je k dispozici na našem fóru.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_BIG:_firmware_changelog&amp;diff=934</id>
		<title>SDS BIG: firmware changelog</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_BIG:_firmware_changelog&amp;diff=934"/>
		<updated>2024-07-22T15:08:41Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SDS-BIG(2) , SDS-SMALL(2), SDS-STSW a všechny OEM ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
Tato stránka se věnuje změnám ve firmware a v HW pro výrobek SDS-BIG a SDS-SMALL a SDS-STSW.&lt;br /&gt;
&lt;br /&gt;
Změny jsou seřazeny tak, že nejnovější verze (která je stáhnutelná z webu) je popsána jako první.&lt;br /&gt;
&lt;br /&gt;
Proč je vydáván nový firmware? Protože operativně řešíme požadavky uživatelů, a jsou doplňovány nové funkce.&lt;br /&gt;
&lt;br /&gt;
Firmware poskytujeme zcela zadarmo po celou dobu životnosti výrobku. Děláme to vše pro Vás.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 22.7.2024 ==&lt;br /&gt;
* FULLC.EXE - odstraněna chyba, která neumožnila nahrát do SDS soubor FCB větší než 64kB&lt;br /&gt;
* možnost volby klidového stavu pro každý S0 vstup (umožňuje počítat impulsy i pro NC spínače v měřiči energie)&lt;br /&gt;
* FC: SDS_reset_program() nezanechává nadbytečnou chybouvou hlášku v konzoli&lt;br /&gt;
* FC: mqtt_publish() použije vámi nastavené bitové pole do PUBLISH hlavičky (viz index 11198)&lt;br /&gt;
* SMTP odesílání by mělo být robustnější při odesílání více emailů za sebou&lt;br /&gt;
&lt;br /&gt;
== 24.2.2024 ==&lt;br /&gt;
* možnost smazat nahraný TLS klíč+certifikát (tlačítko s heslem, ve webovém rozhraní)&lt;br /&gt;
* RSTD nesmaže (nanastaví na tovární hodnoty) vaše nastavení pro všechny AD vstupy (to lze teď udělat ručně, nově přidaným tlačítkem ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 31.10.2023 ==&lt;br /&gt;
* SNMP - oprava způsobu předání chyby v odpovědi&lt;br /&gt;
* SNMP v1 - možnost nastavit dvě nezávislé komunity&lt;br /&gt;
* 512: plná implementace SNMP v3 (včetně AUTHPRIV)&lt;br /&gt;
* 64,128: omezená implementace SNMP v3 (pouze NOAUTHNOPRIV)&lt;br /&gt;
* FC: indexy 66, 67, 68, 4990..4999&lt;br /&gt;
&lt;br /&gt;
== 19.8.2023 ==&lt;br /&gt;
* oprava SDS UDP SEARCH (příchozí paket na portu 20484 byl firewallem od verze 6.6.23 zahozen, teď už opraveno)&lt;br /&gt;
* 512: HTTPS server (aktivace nahráním certifikátu, jinak zůstává HTTP)&lt;br /&gt;
&lt;br /&gt;
== 14.7.2023 ==&lt;br /&gt;
* HTTP POST: oprava sekundární chyby (objevila se ve FW 6.6.2023), kdy FW akceptoval jen rozdělený krok č. 2 (teď už opět umí jak rozdělený, tak i nerozdělený krok č. 2)&lt;br /&gt;
* FC: umožněn přímý zápisu do indexu 193 (přímo zapíše do registru PWM - určeno pro nejjemnější uživatelskou přímo konfiguraci generátoru PWM)&lt;br /&gt;
&lt;br /&gt;
== 6.6.2023 ==&lt;br /&gt;
* funkce http_header_set_user_row() má zvětšenou maximální délku parametru na 255 znaků&lt;br /&gt;
* 512: počet MQTT subscribe zvětšen z max. 8 na max. 20&lt;br /&gt;
* 512: další zvětšení FC konzole&lt;br /&gt;
* webový admin: úprava (oprava) použití timerů v javascriptu &lt;br /&gt;
* FC: DNS resolv umí pracovat s širším rozsahem UDP portů (někdy způsobilo nepřijetí odpovědi a musel se resolv opakovat)&lt;br /&gt;
* HTTP POST: poradí si i s ne-oddělenou komunikací (když klient pošle úvodní konverzační data najednou, neodděleně, tzn. nečeká na odpověď ze serveru)&lt;br /&gt;
 &lt;br /&gt;
== 9.3.2023 ==&lt;br /&gt;
* FC: verze 0x12 (+ odpovídající FULLC.EXE): přidány funkce http_header_set_user_row() a http_header_set_content_type()&lt;br /&gt;
* 64 a 128: odstraněno možné zpomalení běhu po zapnutí v určité okrajové situaci&lt;br /&gt;
&lt;br /&gt;
== 28.2.2023 ==&lt;br /&gt;
* POST: přidán příkaz /wrdf&lt;br /&gt;
* POST: oprava chyby, kdy mohlo dojít k neprovedení akce na základě příkazu /changeip&lt;br /&gt;
* malá bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 9.1.2023 ==&lt;br /&gt;
* FC verze 0x11 (+ odpovídající FULLC.EXE)&lt;br /&gt;
* firmware pro všechny HW varianty BIG, BIG2-DP a BIG2-DP-DS84&lt;br /&gt;
* web: doplněno zobrazení surových hodnot, čtených z 1-Wire zařízení &lt;br /&gt;
* FC: přidána funkce SDS_onewire_config() pro varianty -DS84&lt;br /&gt;
* FC: doplněna funkčnost FC WatchDog (pro situaci, pokud spadne program na chybu a je zastaven, tak FC Watchdog pokračuje a provede restart FC programu)&lt;br /&gt;
* FC: doplněna archivace poslední chyby FC programu, a zobrazení na webu (i v případě restartu FC Watchdogem)&lt;br /&gt;
* FC: funkce pro prohledání složky (file_opendir, file_readdir, file_closedir)&lt;br /&gt;
* oprava PWM3 a PWM4 na BIG2-64/128 - funkce, ukládání nastavení&lt;br /&gt;
* HW BIG2 DS84: RTC běží na baterii na všech HW variantách DS84 - udržuje běžící aktuální čas i při vypnutém napájení&lt;br /&gt;
* FC: přidána funkce SDS_onewire_search_bus()&lt;br /&gt;
* FC: přidány indexy 132..136 , indexy 2488..2499, 2986..2997&lt;br /&gt;
&lt;br /&gt;
== 1.12.2022 ==&lt;br /&gt;
* bezpečnostní aktualizace (dle nahlášené záležitosti a testu)&lt;br /&gt;
* trvalé zobrazení archivovaného HW faultu v Logu (pokud dojde k faultu, je hned před restartem zařízení archivován a trvale zobrazován ve výpisu, i po libovolném novém spuštění)&lt;br /&gt;
* odstraněno eventuální čekání (a následný WDG restart) při komunikaci s externími I2C zařízeními (specifické chipy na sandwich deskách uživatelů)&lt;br /&gt;
&lt;br /&gt;
== 30.11.2022 ==&lt;br /&gt;
* FC: zvýšena výkonnost (512: optimalizace pro až několika-násobné celkové zrychlení vykonávání programu) (64,128: byť jen menší zrychlení, ale přece + zvětšená konzole echo.htm) &lt;br /&gt;
* zrychleno webové rozhraní (zpomaleno zřejmě o dvě verze zpět, byť to bylo bez vlivu na funkci, je vhodnější když to nezdržuje při zobrazování v prohlížeči)&lt;br /&gt;
* FC: přidán index 137&lt;br /&gt;
* zlepšena interní obsluha sériových linek (COMx/RS485), odstraněno možné náhodné zpoždění (byť jen ve specifickém případě a jen o několik msec, ale i tak se toto vyřešilo)&lt;br /&gt;
&lt;br /&gt;
== 22.11.2022 ==&lt;br /&gt;
* FC (64/128/512): verze 0x10 &lt;br /&gt;
* dns_resolv správně hlásí chybu 516 a 517 při výpadku připojení v průběhu dotazu&lt;br /&gt;
&lt;br /&gt;
== 18.11.2022 ==&lt;br /&gt;
* FC (64/128): verze 0x10 &lt;br /&gt;
* FC: nová funkce SDS_set_RTC&lt;br /&gt;
* FC: nové funkce pro práci s float&lt;br /&gt;
* oprava pro mounting některých typů SD karet&lt;br /&gt;
&lt;br /&gt;
== 14.11.2022 ==&lt;br /&gt;
* FC: oprava výpočtů v 64-bit doméně&lt;br /&gt;
* FC: file_expand() - detailnější rozvrstvení návratových chybových hodnot&lt;br /&gt;
* web: rozšířeny zobrazované informace o probíhajícím připojování SD karty&lt;br /&gt;
* web server: vrací korektně 503 pro soubory na SD kartě, které jsou zablokovány FC programem&lt;br /&gt;
* FC: rozšířena a zásadně zlepšena implementace printf/sprintf/snprintf/sscanf - viz detaily v návodu na wiki&lt;br /&gt;
* FC: zlepšen výpis (informace na web) při určitých chybách v FC programu, plus další drobky kolem echo.htm&lt;br /&gt;
&lt;br /&gt;
== 16.10.2022 ==&lt;br /&gt;
* tento firmware (od této verze) podporuje i hardware SDS 64/128/512 ve variantě DP&lt;br /&gt;
* podpora pro 4 PWM výstupy (pro vhodný hardware - BIG2)&lt;br /&gt;
* odpověď na (webový) příkaz /sv? , má doplněný obsah http hlavičky, takže by ji mělo být snazší zpracovat&lt;br /&gt;
* FC: watchdog programu je (nově) pozastaven po dobu mountování SD karty (protože je pozastaven i program)&lt;br /&gt;
* FC: zápis do indexu 999 funguje jak má&lt;br /&gt;
* FC: verze 0x0F (nové funkce PWMx)&lt;br /&gt;
&lt;br /&gt;
== 5.10.2022 ==&lt;br /&gt;
* pouze vše řady 512 (ostatní bez tohoto problému) - důležitá oprava situace kdy někdy chybně došlo ke smazání nahraného FC programu při nahrání nového UWEB projektu do SDS&lt;br /&gt;
&lt;br /&gt;
== 30.9.2022 ==&lt;br /&gt;
* FC: oprava běhu programu v situaci kdy v kódu je vnořený (nested) switch() v rámci jiného switch() (původně chybné chování, teď opraveno)&lt;br /&gt;
&lt;br /&gt;
== 28.9.2022 ==&lt;br /&gt;
* FC: oprava výsledků maker (define), kdy chybně docházelo k pevnému přetypování na int32_t, což je teď opraveno (odstraněno)&lt;br /&gt;
&lt;br /&gt;
== 1.8.2022 ==&lt;br /&gt;
* správně zobrazovaná hláška (nápověda) na úvodní webové stránce ohledně stavu konfigurace&lt;br /&gt;
* FC: přidáno tlačítko (odkaz) pro restart FULLC programu (např. pokud skončil a chcete jej ručně spustit znovu)&lt;br /&gt;
* FC: do výpisu chyby při pádu programu je přidán UTC čas (pro identifikaci, kdy se chyba stala)&lt;br /&gt;
* FC: spolehlivostní úpravy při startu programu (načtení z DF), a při zápisu nového programu (práce s DF)&lt;br /&gt;
&lt;br /&gt;
== 11.7.2022 ==&lt;br /&gt;
* FC: verze 0x0E&lt;br /&gt;
* FC: přidána funkce mktime()&lt;br /&gt;
* FC: přidána funkce gmtime()&lt;br /&gt;
* FC: přidána funkce localtime()&lt;br /&gt;
* opraveno zachování konfigurace ipwdg (webové rozhraní) a obsluhy relé ipwdg&lt;br /&gt;
&lt;br /&gt;
== 1.7.2022 ==&lt;br /&gt;
* FC: verze 0x0D&lt;br /&gt;
* FC: upravena funkce SDS_TOPB_keyboard_status() pro lepší předané výsledky&lt;br /&gt;
* FC: přidána funkce SDS_TOPB_keyboard_updn()&lt;br /&gt;
* FC: přidána funkce SDS_rescan_onewire()&lt;br /&gt;
* FC: odstraněno náhodné hlášení o už probíhajícím nahrávání programu při nahrávání z EXE&lt;br /&gt;
* BIG 64/128 prodloužen čas pro sestavení Ethernetového spojení, což řeší problém s některými USB síťovými kartami atd.&lt;br /&gt;
* opraveno HTTP POST nastavení položek NTP&lt;br /&gt;
* opraveno HTTP POST který teď neuzavře spojení dříve než má, pokud mazání NVM pro nový FW (nebo nový UserWeb) trvá dlouho&lt;br /&gt;
&lt;br /&gt;
== 12.4.2022 ==&lt;br /&gt;
* doplněna informační stránka o vnitřním stavu OneWire Master (pro snazší identifikaci problémů při používání sběrnice)&lt;br /&gt;
* oprava v bootloaderu pro řadu 512 - vyžaduje přeprogramování u výrobce pro všechna SDS řady 512 s FW starším než 14.2.2022&lt;br /&gt;
&lt;br /&gt;
== 3.4.2022 ==&lt;br /&gt;
* FC verze 0x0C&lt;br /&gt;
* FC: přidána funkce SDS_I2C_rw&lt;br /&gt;
* OneWire stabilnější&lt;br /&gt;
&lt;br /&gt;
== 21.1.2022 ==&lt;br /&gt;
* prioritu mají vybrané konfigurační položky v NVM (jsou-li tam platné) před baterií zálohovanou pamětí&lt;br /&gt;
* aktivován HTTP POST protokol pro nahrávání a konfiguraci SDS (viz [[SDS:POST_upload]])&lt;br /&gt;
&lt;br /&gt;
== 18.1.2022 ==&lt;br /&gt;
* RSTD zapíše do NVM všechny konfigurační položky (i to co nenuluje), pro jistotu že v NVM bude vše skutečně zapsáno&lt;br /&gt;
* načítání konfigurace upraveno (větší spolehlivost)&lt;br /&gt;
&lt;br /&gt;
== 15.1.2022 ==&lt;br /&gt;
* přidána stránka cfgstatus.htm - pro možnost kontroly stavu uložené konfigurace v pevné paměti (např. co nemáte uloženo)&lt;br /&gt;
* přidán M2M výstup ip.xml&lt;br /&gt;
* FC: přidán algoritmus SHA-256 do funkce SDS_crypto()&lt;br /&gt;
* FC: každý program má unikátní identifikátor, podle kterého lze např. kontrolovat či zpětně poznat co máte v SDS nahráno&lt;br /&gt;
* identifikátor FC programu přidán na webové rozhraní a do M2M výstupů, a do exe aplikace&lt;br /&gt;
* zobrazeno unikátní identifikační čislo SDS hardware (napevno spojeno s modulem SDS, nezměnitelné), teď i ve M2M výstupech&lt;br /&gt;
* SNMP: nové položky .8.90 , .8.91 , .8.99&lt;br /&gt;
* FC: nové get(u32) položky 2 a 87&lt;br /&gt;
&lt;br /&gt;
== 31.12.2021 ==&lt;br /&gt;
* možnost vyřadit NTP z činnosti zadáním adresy 127.0.0.1 (vhodné pro uživatele kteří získávají čas odjinud, např. přes LoRA)&lt;br /&gt;
* web: informace na web (p=8) o stavu připojování SD karty (mounting...) a o stavu kdy je FC program pozastaven (PAUSED)&lt;br /&gt;
* web: opraven zámek zvětšené konzole (echo)&lt;br /&gt;
* důslednější kontrola platnosti konfigurace při startu&lt;br /&gt;
&lt;br /&gt;
== 27.12.2021 ==&lt;br /&gt;
* opravena chyba kdy na webu nešlo nastavit 100 procent PWM duty (jen 0 až 99, teď už jde i 100)&lt;br /&gt;
* FC: několikanásobně zvětšena konzole (echo.htm)&lt;br /&gt;
* HW: při poruše hlavního zdroje hodin (krystal) se použije záložní zdroj&lt;br /&gt;
* HW: využíváme RTC pro udržení času při přechodu přes reset (drží čas dokud zase nepřijde NTP)&lt;br /&gt;
* aktualizován bootloader (aktualizace bootloaderu jen prostřednictvím přeprogramování u výrobce) - umí znovu nahrát FW pokud se v SoC poškodí&lt;br /&gt;
* vydána varianta 512 - vlastní soubor s firmware&lt;br /&gt;
&lt;br /&gt;
== 25.12.2021 ==&lt;br /&gt;
* pouze interní vydání&lt;br /&gt;
&lt;br /&gt;
== 26.3.2021 ==&lt;br /&gt;
* FC: oprava nesprávného zacházení s unsigned typy (na některých místech interně přemapovány na signed)&lt;br /&gt;
* FC: chování varianty if pro speciální kombinaci signed/unsigned dle specifikace standardu C&lt;br /&gt;
&lt;br /&gt;
== 9.2.2021 ==&lt;br /&gt;
* FC: oprava TID v MODBUS-TCP&lt;br /&gt;
* MBTC výpis rozšířen&lt;br /&gt;
* FC: drobná úspora heap (více dostupného místa)&lt;br /&gt;
* FC: dns resolv drobný fix&lt;br /&gt;
* FC: http_get a http_post důležitý fix&lt;br /&gt;
* FC: nová funkce http_close&lt;br /&gt;
* FC: chyba -7 pro MODBUS-TCP a pro MQTT&lt;br /&gt;
* vylepšený algoritmus S0, rozšířené možnosti nastavení detektoru S0 (nastavení přidáno ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 22.12.2020 ==&lt;br /&gt;
* web: ruční přepnutí CBY pro relé (tzn. &amp;quot;kdo ovládá relé&amp;quot;), na &amp;quot;FULL-C&amp;quot;, dané relé nevypne (off) ale ponechá jeho stávající stav (on, off)&lt;br /&gt;
* security fix&lt;br /&gt;
&lt;br /&gt;
== 10.12.2020 ==&lt;br /&gt;
* dřívější odeslání NTP požadavku po výpadku síťového spojení&lt;br /&gt;
* integrovaná korekce chyby A/D měření pro HW osazený LMV324; uživatel může povolit tuto automatickou opravu chyby LMV324 ve webové administraci&lt;br /&gt;
* počítání délky aktivace tarifního vstupu (doba T0 a T1 v sekundách za den) viz nové sys, pozor pro funkci vyžaduje NTP&lt;br /&gt;
* automatický odečet S0 počítadel (vždy za dnešek a včerejšek), viz nové sys, pozor pro funkci vyžaduje NTP&lt;br /&gt;
&lt;br /&gt;
== 23.11.2020 ==&lt;br /&gt;
* FC + FULLC.exe: oprava chyby v případě více #if / #ifdef / #endif bloků zapsaných hned za sebou&lt;br /&gt;
* FC: makra a define lze provést i uvnitř funkce (dříve jen venku)&lt;br /&gt;
* FC: detekce nesprávné dereference ukazatele&lt;br /&gt;
&lt;br /&gt;
== 14.11.2020 ==&lt;br /&gt;
* webová administrace: stránka p=42: index ck03 se propíše i do nastavení (chybělo od 23.10.2020, web byl aktualizován, nastavení ale přebíralo ck00)&lt;br /&gt;
&lt;br /&gt;
== 4.11.2020 ==&lt;br /&gt;
* FC + FULLC.exe: odstraněn problém při načtení nahraného FULL-C programu v SDS, kdy dříve mohlo u jedné specifické velikosti nahraného programu, dojít k jeho nespuštění kvůli neodpovídajícímu crc&lt;br /&gt;
&lt;br /&gt;
== 3.11.2020 ==&lt;br /&gt;
* FC: zobrazení (v konzoli) čísla řádku (ve zdrojovém kódu) při chybě (což velmi zlepší ladění programů)&lt;br /&gt;
* FULLC.exe: odstraněno omezení na 255 znaků na řádek&lt;br /&gt;
* FULLC.exe: zrychlení nahrávání do SDS&lt;br /&gt;
&lt;br /&gt;
== 23.10.2020 ==&lt;br /&gt;
* webová administrace: stránka p=42: změna indexu ck00 na ck03 ať se dají uživatelským skriptem všechny prvky samostatně rozlišit&lt;br /&gt;
* FC: oprava http_get/post: správné vyplnění výsledků i pro situaci kdy server ukončí spojení přes TCP RST&lt;br /&gt;
&lt;br /&gt;
== 14.10.2020 ==&lt;br /&gt;
* oprava FULL-C funkce XTEA-CRYPT (bug o dvě verze dříve)&lt;br /&gt;
&lt;br /&gt;
== 13.10.2020 ==&lt;br /&gt;
* důležitá oprava chyby ve FULL-C (ternary operator, a další nahlášené nesrovnalosti)&lt;br /&gt;
&lt;br /&gt;
== 13.9.2020 ==&lt;br /&gt;
* oprava detekce SD karty (některé varianty SD karet nebyly detekovány, teď už ano)&lt;br /&gt;
&lt;br /&gt;
== 9.8.2020 ==&lt;br /&gt;
* FULL-C verze 0B (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* různé drobné opravy a zabezpečení&lt;br /&gt;
* zobrazení auditlogu (webové rozhraní SDS)&lt;br /&gt;
* FC: http_post&lt;br /&gt;
* FC: MQTT klient&lt;br /&gt;
* FC: MODBUS-TCP klient&lt;br /&gt;
&lt;br /&gt;
== 4.8.2020 ==&lt;br /&gt;
* úprava obsluhy relé&lt;br /&gt;
* podpora OneWire modulu SDS-1W-T-RH&lt;br /&gt;
&lt;br /&gt;
== 3.10.2019 ==&lt;br /&gt;
* SMTP klient posílá v hlavičce i položku &amp;quot;Date&amp;quot; (ale jen za předpokladu správného času v SDS)&lt;br /&gt;
* RSTD při zapnutí zařízení, ve kterém není záložní baterie (nebo je vybitá), zachová původně nastavenou MAC adresu (vše ostatní ale už jde do defaultu, což je správně)&lt;br /&gt;
* SUDP: rozšířen NOP příkaz &lt;br /&gt;
* SUDP: přidány další nové příkazy (master_cmd: 32, 33, 40, 42, 44, 48)&lt;br /&gt;
&lt;br /&gt;
== 23.9.2019 ==&lt;br /&gt;
* oprava GUI (S0 Inputs)&lt;br /&gt;
* SNMP nabízí možnost číst všechny sdílené proměnné (FULL-C: Sxx, Uxx, Fxx, Txx)&lt;br /&gt;
* opraven nefunkční RSTD na modulu STSW-rev3&lt;br /&gt;
&lt;br /&gt;
== 23.6.2019 ==&lt;br /&gt;
* oprava chyby objevené ve FW 28.5.2019, kdy na některých specifických SDS nefungovaly AD vstupy&lt;br /&gt;
&lt;br /&gt;
== 28.5.2019 ==&lt;br /&gt;
* oprava funkce SD karty (pro případy kdy se stala po čase nedostupná pro FC/web)&lt;br /&gt;
&lt;br /&gt;
== 5.5.2019 ==&lt;br /&gt;
* dořešeno hlídání stavu (načtení, atd.) SD karty i v případě provozu náročného FULL-C programu (tedy i pro hluboce vnořené smyčky)&lt;br /&gt;
* oprava původně chybné implementace S-UDP příkazu &amp;quot;1Waccess: sub-command 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== 24.2.2019 ==&lt;br /&gt;
* překlopení z BETA do oficiálního FW&lt;br /&gt;
* automatika zimní/letní čas&lt;br /&gt;
* přístup na SD kartu: FULL-C pracuje se soubory (vytvoření, smazání, čtení a zápis, atd.) &lt;br /&gt;
* přístup na SD kartu: web server zobrazuje soubory ze SD karty (vše ve složce \web\ a podsložkách této složky)&lt;br /&gt;
* oprava čtení napětí baterie pro variantu 128K&lt;br /&gt;
* shared.xml&lt;br /&gt;
* odstraněno omezení délky ve shared.txt&lt;br /&gt;
* zprovozněno getsv&lt;br /&gt;
* verze FULL-C je teď FC 0x0A (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* FULL-C: nová možnost způsobu čtení teploty SoC&lt;br /&gt;
* FULL-C: index 64, 65, 184, 185, 429, 430, atd.&lt;br /&gt;
* FULL-C: doplněné set/get funkce pro sdílené proměnné&lt;br /&gt;
* FULL-C: s/printf umí správné zpracovat požadavek na určení desetinných míst pro float&lt;br /&gt;
* FULL-C: funkce pro reset FC programu&lt;br /&gt;
* FULL-C: funkce pro watchdog FC programu&lt;br /&gt;
* SNMP nové OIDy (dle přidaných věcí - čas, sdcard)&lt;br /&gt;
&lt;br /&gt;
== 1.7.2018 ==&lt;br /&gt;
* SNMP: sdsS0translatedUnitT0,1 je poskytováno jako hodnota od odečtu (ne od úplného začátku měření, jak to bylo předtím) &lt;br /&gt;
* FULL-C: přidán index 183 poskytující datum vydání FW který je právě nahrán v SDS&lt;br /&gt;
&lt;br /&gt;
== 27.6.2018 ==&lt;br /&gt;
* verze FULL-C je teď FC 0x09 (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* FULL-C: přidána podpora pro int64_t a uint64_t&lt;br /&gt;
* FULL-C: přejmenováno set a get funkce (rozlišení 32 a 64 bit)&lt;br /&gt;
* FULL-C: snprintf přesně dle standardu (zrušena nevhodná změna z 20.12.2017)&lt;br /&gt;
* drobné opravy&lt;br /&gt;
* drobná oprava v odchozím TCP-SYN a v generátoru ISN&lt;br /&gt;
&lt;br /&gt;
== 8.3.2018 ==&lt;br /&gt;
* oprava echo.htm - správně wrapuje obsah, a nejsou tam nadbytečné 0x00&lt;br /&gt;
* vhodnější řešení rexmitu částí webových stránek a dynamických dat (ocení to zejména uživatelé s mobilním připojením pro SDS)&lt;br /&gt;
&lt;br /&gt;
== 2.3.2018 ==&lt;br /&gt;
* aktulizace a oprava ve výpočtu &amp;quot;aktuálního výkonu&amp;quot; pro okrajové situace (např. krajní hodnoty impulsní konstanty)&lt;br /&gt;
&lt;br /&gt;
== 11.2.2017 ==&lt;br /&gt;
* zprovozněny funkce set/get pro indexy 4000 až 4300 (alternativní přístup k číselným sdíleným proměnným)&lt;br /&gt;
&lt;br /&gt;
== 21.12.2017 ==&lt;br /&gt;
* zvýšena stabilita spuštění po zapnutí&lt;br /&gt;
&lt;br /&gt;
== 20.12.2017 ==&lt;br /&gt;
* dočasná změna ve FULL-C (bude zrušena): funkce snprintf() má interně posunutý limit délky zápisu o 1 (toto je záměrný rozdíl proti C99). Změna v SDS je provedena z důvodu neznalosti programátorů FC v tom, že do snprintf() limitu je potřeba započítat i jeden byte pro ukončující nulu. Ve výsledku tedy zápis &amp;quot;snprintf(buf, limit, ...);&amp;quot; je v FC interně vykonán jako &amp;quot;snprintf(buf, limit+1, ...);&amp;quot;.&lt;br /&gt;
* oprava ve FULL-C: výpočet platné délky bufferu funguje i pro ukazatele vytvořené offsetem ze základní alokované adresy (příklad takového bufferu je: buf=malloc(x)+offset;)&lt;br /&gt;
* stav všech relé je načten z paměti vždy po zapnutí modulu, a ty relé které jsou ručně ovládány (manual control) a které byly před vypnutím v zapnutém (ON) stavu, jsou po zapnutí modulu aktivovány (zatímco relé ovládané z IP-W a FC jsou vždy po zapnutí modulu uvedeny do OFF stavu)&lt;br /&gt;
&lt;br /&gt;
== 18.12.2017 ==&lt;br /&gt;
* UserWEB projekt má opravenu chybu, kdy nebylo možno použít delší Name Chain tabulku (tedy lze už vložit mnohem více souborů) &lt;br /&gt;
* nastavená MAC adresa je zachována i po průchodu RSTD (byla-li platná)&lt;br /&gt;
* opravena chyba způsobující nefunkční http_get(), teď už to opět funguje&lt;br /&gt;
* aktualizace obsluhy PWM (např. lépe přepočítává zobrazovaná &amp;quot;procenta&amp;quot;)&lt;br /&gt;
* oprava strcat() funkce (opraveno hlídání max velikosti bufferu ze &amp;quot;from&amp;quot; na &amp;quot;to&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== 18.9.2017 ==&lt;br /&gt;
* FULL-C: printf() správně tiskne float i pokud se formátovací parametr zadá jako %d (tedy ne jako %f)&lt;br /&gt;
* FULL-C: snprint() opraven (když je 'from' kratší než 'to' tak je 'to' doplněn 0x00 - je to zvláštnost, nemá se to používat, ale C99 to předepisuje, tak to dodržíme)&lt;br /&gt;
&lt;br /&gt;
== 9.9.2017 ==&lt;br /&gt;
* vnitřní bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 29.8.2017 ==&lt;br /&gt;
* oprava chování RSTD - pokud je zapojen před zapnutím, nepřejde do automatického resetu po 10sec, ale RSTD je použit a SDS pracuje dále; přitom funkce &amp;quot;zapoj RSTD za běhu&amp;quot; je zachována správně&lt;br /&gt;
* zásadní zlepšení odolnosti FULL-C proti chybám programátora - vnitřní hlídání rozsahů bufferu a stringů, zamezující zápisu za hranice pole (typicky chybné použití sprintf() funkce, ale toto hlídání je aplikováno obecně všude)&lt;br /&gt;
&lt;br /&gt;
== 8.8.2017 ==&lt;br /&gt;
* oprava: FC teď správně převádí URL kód &amp;quot;sv?xxxx=yyyy...&amp;quot;, na text (vypadlo 31.3. při rozšíření počtu znaků pro sdílené proměnné Txx) &lt;br /&gt;
&lt;br /&gt;
== 10.7.2017 ==&lt;br /&gt;
* vydán firmware pro variantu &amp;quot;128kB&amp;quot; (od teď vychází dva typy firmware, pro variantu &amp;quot;64kB&amp;quot; a variantu &amp;quot;128kB&amp;quot;, vyberete si tu svou dle HW který máte)&lt;br /&gt;
* velká optimalizace využití paměti pro uložení a běh FULL-C programu (komprese, a zmenšení vyžadovaného heapu pro běh programu) - významně zvětšuje možnou velikost FC programu&lt;br /&gt;
* pin RSTD lze teď také použít i bez vypnutí a zapnutí SDS, stačí jej na 10 vteřin za běhu zkratovat (pak se provede RSTD a SDS se rebootuje) - výhodné pro zařízení kde vypnutí nelze provést&lt;br /&gt;
* drobné užitečné opravy dle hlášení uživatelů&lt;br /&gt;
* verze FC zvýšena na 0x08, a přidána možnost uložit 128 proměnných do baterií zálohované pamětí (tzn. obsah přežije výpadek napájení a FC program po restartu o tyto údaje nepřijde)&lt;br /&gt;
&lt;br /&gt;
== 2.6.2017 ==&lt;br /&gt;
* návratová hodnota funkce DF_read_page() je nastavena správně i v případě, kdy tato funkce čte data z cache (opakované čtení stejné stránky DF)&lt;br /&gt;
&lt;br /&gt;
== 6.4.2017 ==&lt;br /&gt;
* přidána FULL-C funkce AES-128-CTR, viz SDS_crypto(0x20, ...);&lt;br /&gt;
&lt;br /&gt;
== 31.3.2017 ==&lt;br /&gt;
* oprava RS485-MASTER drive, je teď zcela přesný (tzn. vypnut v přesném časování za úplně posledním vyslaným bitem)&lt;br /&gt;
* oprava čtení konfigurace 1-W, pomocí sds_get_a()&lt;br /&gt;
* přidán index 139&lt;br /&gt;
* odstraněno omezení na 32 znaků pro sdílené proměnné (přenos textu) &amp;quot;Txx&amp;quot; (xx = 00 až 99)&lt;br /&gt;
* fix návratových hodnot FULL-C funkcí pro práci s DF (teď to vrací správně 1 nebo 0, podle wiki)&lt;br /&gt;
* upřesněn název: (z BIG na BIG-64) / (z STSW na STSW-64)&lt;br /&gt;
* vyžaduje aktuální SDSLOAD.exe (6.3.2017 nebo novější) a FULLC.exe (6.3.2017 nebo novější)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== starší záznamy ==&lt;br /&gt;
&lt;br /&gt;
Nejsou k dispozici.&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_BIG:_firmware_changelog&amp;diff=933</id>
		<title>SDS BIG: firmware changelog</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=SDS_BIG:_firmware_changelog&amp;diff=933"/>
		<updated>2024-07-22T15:08:23Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== SDS-BIG(2) , SDS-SMALL(2), SDS-STSW a všechny OEM ==&lt;br /&gt;
&lt;br /&gt;
__NOTOC__ &lt;br /&gt;
&lt;br /&gt;
Tato stránka se věnuje změnám ve firmware a v HW pro výrobek SDS-BIG a SDS-SMALL a SDS-STSW.&lt;br /&gt;
&lt;br /&gt;
Změny jsou seřazeny tak, že nejnovější verze (která je stáhnutelná z webu) je popsána jako první.&lt;br /&gt;
&lt;br /&gt;
Proč je vydáván nový firmware? Protože operativně řešíme požadavky uživatelů, a jsou doplňovány nové funkce.&lt;br /&gt;
&lt;br /&gt;
Firmware poskytujeme zcela zadarmo po celou dobu životnosti výrobku. Děláme to vše pro Vás.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 24.2.2024 ==&lt;br /&gt;
* FULLC.EXE - odstraněna chyba, která neumožnila nahrát do SDS soubor FCB větší než 64kB&lt;br /&gt;
* možnost volby klidového stavu pro každý S0 vstup (umožňuje počítat impulsy i pro NC spínače v měřiči energie)&lt;br /&gt;
* FC: SDS_reset_program() nezanechává nadbytečnou chybouvou hlášku v konzoli&lt;br /&gt;
* FC: mqtt_publish() použije vámi nastavené bitové pole do PUBLISH hlavičky (viz index 11198)&lt;br /&gt;
* SMTP odesílání by mělo být robustnější při odesílání více emailů za sebou&lt;br /&gt;
&lt;br /&gt;
== 24.2.2024 ==&lt;br /&gt;
* možnost smazat nahraný TLS klíč+certifikát (tlačítko s heslem, ve webovém rozhraní)&lt;br /&gt;
* RSTD nesmaže (nanastaví na tovární hodnoty) vaše nastavení pro všechny AD vstupy (to lze teď udělat ručně, nově přidaným tlačítkem ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 31.10.2023 ==&lt;br /&gt;
* SNMP - oprava způsobu předání chyby v odpovědi&lt;br /&gt;
* SNMP v1 - možnost nastavit dvě nezávislé komunity&lt;br /&gt;
* 512: plná implementace SNMP v3 (včetně AUTHPRIV)&lt;br /&gt;
* 64,128: omezená implementace SNMP v3 (pouze NOAUTHNOPRIV)&lt;br /&gt;
* FC: indexy 66, 67, 68, 4990..4999&lt;br /&gt;
&lt;br /&gt;
== 19.8.2023 ==&lt;br /&gt;
* oprava SDS UDP SEARCH (příchozí paket na portu 20484 byl firewallem od verze 6.6.23 zahozen, teď už opraveno)&lt;br /&gt;
* 512: HTTPS server (aktivace nahráním certifikátu, jinak zůstává HTTP)&lt;br /&gt;
&lt;br /&gt;
== 14.7.2023 ==&lt;br /&gt;
* HTTP POST: oprava sekundární chyby (objevila se ve FW 6.6.2023), kdy FW akceptoval jen rozdělený krok č. 2 (teď už opět umí jak rozdělený, tak i nerozdělený krok č. 2)&lt;br /&gt;
* FC: umožněn přímý zápisu do indexu 193 (přímo zapíše do registru PWM - určeno pro nejjemnější uživatelskou přímo konfiguraci generátoru PWM)&lt;br /&gt;
&lt;br /&gt;
== 6.6.2023 ==&lt;br /&gt;
* funkce http_header_set_user_row() má zvětšenou maximální délku parametru na 255 znaků&lt;br /&gt;
* 512: počet MQTT subscribe zvětšen z max. 8 na max. 20&lt;br /&gt;
* 512: další zvětšení FC konzole&lt;br /&gt;
* webový admin: úprava (oprava) použití timerů v javascriptu &lt;br /&gt;
* FC: DNS resolv umí pracovat s širším rozsahem UDP portů (někdy způsobilo nepřijetí odpovědi a musel se resolv opakovat)&lt;br /&gt;
* HTTP POST: poradí si i s ne-oddělenou komunikací (když klient pošle úvodní konverzační data najednou, neodděleně, tzn. nečeká na odpověď ze serveru)&lt;br /&gt;
 &lt;br /&gt;
== 9.3.2023 ==&lt;br /&gt;
* FC: verze 0x12 (+ odpovídající FULLC.EXE): přidány funkce http_header_set_user_row() a http_header_set_content_type()&lt;br /&gt;
* 64 a 128: odstraněno možné zpomalení běhu po zapnutí v určité okrajové situaci&lt;br /&gt;
&lt;br /&gt;
== 28.2.2023 ==&lt;br /&gt;
* POST: přidán příkaz /wrdf&lt;br /&gt;
* POST: oprava chyby, kdy mohlo dojít k neprovedení akce na základě příkazu /changeip&lt;br /&gt;
* malá bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 9.1.2023 ==&lt;br /&gt;
* FC verze 0x11 (+ odpovídající FULLC.EXE)&lt;br /&gt;
* firmware pro všechny HW varianty BIG, BIG2-DP a BIG2-DP-DS84&lt;br /&gt;
* web: doplněno zobrazení surových hodnot, čtených z 1-Wire zařízení &lt;br /&gt;
* FC: přidána funkce SDS_onewire_config() pro varianty -DS84&lt;br /&gt;
* FC: doplněna funkčnost FC WatchDog (pro situaci, pokud spadne program na chybu a je zastaven, tak FC Watchdog pokračuje a provede restart FC programu)&lt;br /&gt;
* FC: doplněna archivace poslední chyby FC programu, a zobrazení na webu (i v případě restartu FC Watchdogem)&lt;br /&gt;
* FC: funkce pro prohledání složky (file_opendir, file_readdir, file_closedir)&lt;br /&gt;
* oprava PWM3 a PWM4 na BIG2-64/128 - funkce, ukládání nastavení&lt;br /&gt;
* HW BIG2 DS84: RTC běží na baterii na všech HW variantách DS84 - udržuje běžící aktuální čas i při vypnutém napájení&lt;br /&gt;
* FC: přidána funkce SDS_onewire_search_bus()&lt;br /&gt;
* FC: přidány indexy 132..136 , indexy 2488..2499, 2986..2997&lt;br /&gt;
&lt;br /&gt;
== 1.12.2022 ==&lt;br /&gt;
* bezpečnostní aktualizace (dle nahlášené záležitosti a testu)&lt;br /&gt;
* trvalé zobrazení archivovaného HW faultu v Logu (pokud dojde k faultu, je hned před restartem zařízení archivován a trvale zobrazován ve výpisu, i po libovolném novém spuštění)&lt;br /&gt;
* odstraněno eventuální čekání (a následný WDG restart) při komunikaci s externími I2C zařízeními (specifické chipy na sandwich deskách uživatelů)&lt;br /&gt;
&lt;br /&gt;
== 30.11.2022 ==&lt;br /&gt;
* FC: zvýšena výkonnost (512: optimalizace pro až několika-násobné celkové zrychlení vykonávání programu) (64,128: byť jen menší zrychlení, ale přece + zvětšená konzole echo.htm) &lt;br /&gt;
* zrychleno webové rozhraní (zpomaleno zřejmě o dvě verze zpět, byť to bylo bez vlivu na funkci, je vhodnější když to nezdržuje při zobrazování v prohlížeči)&lt;br /&gt;
* FC: přidán index 137&lt;br /&gt;
* zlepšena interní obsluha sériových linek (COMx/RS485), odstraněno možné náhodné zpoždění (byť jen ve specifickém případě a jen o několik msec, ale i tak se toto vyřešilo)&lt;br /&gt;
&lt;br /&gt;
== 22.11.2022 ==&lt;br /&gt;
* FC (64/128/512): verze 0x10 &lt;br /&gt;
* dns_resolv správně hlásí chybu 516 a 517 při výpadku připojení v průběhu dotazu&lt;br /&gt;
&lt;br /&gt;
== 18.11.2022 ==&lt;br /&gt;
* FC (64/128): verze 0x10 &lt;br /&gt;
* FC: nová funkce SDS_set_RTC&lt;br /&gt;
* FC: nové funkce pro práci s float&lt;br /&gt;
* oprava pro mounting některých typů SD karet&lt;br /&gt;
&lt;br /&gt;
== 14.11.2022 ==&lt;br /&gt;
* FC: oprava výpočtů v 64-bit doméně&lt;br /&gt;
* FC: file_expand() - detailnější rozvrstvení návratových chybových hodnot&lt;br /&gt;
* web: rozšířeny zobrazované informace o probíhajícím připojování SD karty&lt;br /&gt;
* web server: vrací korektně 503 pro soubory na SD kartě, které jsou zablokovány FC programem&lt;br /&gt;
* FC: rozšířena a zásadně zlepšena implementace printf/sprintf/snprintf/sscanf - viz detaily v návodu na wiki&lt;br /&gt;
* FC: zlepšen výpis (informace na web) při určitých chybách v FC programu, plus další drobky kolem echo.htm&lt;br /&gt;
&lt;br /&gt;
== 16.10.2022 ==&lt;br /&gt;
* tento firmware (od této verze) podporuje i hardware SDS 64/128/512 ve variantě DP&lt;br /&gt;
* podpora pro 4 PWM výstupy (pro vhodný hardware - BIG2)&lt;br /&gt;
* odpověď na (webový) příkaz /sv? , má doplněný obsah http hlavičky, takže by ji mělo být snazší zpracovat&lt;br /&gt;
* FC: watchdog programu je (nově) pozastaven po dobu mountování SD karty (protože je pozastaven i program)&lt;br /&gt;
* FC: zápis do indexu 999 funguje jak má&lt;br /&gt;
* FC: verze 0x0F (nové funkce PWMx)&lt;br /&gt;
&lt;br /&gt;
== 5.10.2022 ==&lt;br /&gt;
* pouze vše řady 512 (ostatní bez tohoto problému) - důležitá oprava situace kdy někdy chybně došlo ke smazání nahraného FC programu při nahrání nového UWEB projektu do SDS&lt;br /&gt;
&lt;br /&gt;
== 30.9.2022 ==&lt;br /&gt;
* FC: oprava běhu programu v situaci kdy v kódu je vnořený (nested) switch() v rámci jiného switch() (původně chybné chování, teď opraveno)&lt;br /&gt;
&lt;br /&gt;
== 28.9.2022 ==&lt;br /&gt;
* FC: oprava výsledků maker (define), kdy chybně docházelo k pevnému přetypování na int32_t, což je teď opraveno (odstraněno)&lt;br /&gt;
&lt;br /&gt;
== 1.8.2022 ==&lt;br /&gt;
* správně zobrazovaná hláška (nápověda) na úvodní webové stránce ohledně stavu konfigurace&lt;br /&gt;
* FC: přidáno tlačítko (odkaz) pro restart FULLC programu (např. pokud skončil a chcete jej ručně spustit znovu)&lt;br /&gt;
* FC: do výpisu chyby při pádu programu je přidán UTC čas (pro identifikaci, kdy se chyba stala)&lt;br /&gt;
* FC: spolehlivostní úpravy při startu programu (načtení z DF), a při zápisu nového programu (práce s DF)&lt;br /&gt;
&lt;br /&gt;
== 11.7.2022 ==&lt;br /&gt;
* FC: verze 0x0E&lt;br /&gt;
* FC: přidána funkce mktime()&lt;br /&gt;
* FC: přidána funkce gmtime()&lt;br /&gt;
* FC: přidána funkce localtime()&lt;br /&gt;
* opraveno zachování konfigurace ipwdg (webové rozhraní) a obsluhy relé ipwdg&lt;br /&gt;
&lt;br /&gt;
== 1.7.2022 ==&lt;br /&gt;
* FC: verze 0x0D&lt;br /&gt;
* FC: upravena funkce SDS_TOPB_keyboard_status() pro lepší předané výsledky&lt;br /&gt;
* FC: přidána funkce SDS_TOPB_keyboard_updn()&lt;br /&gt;
* FC: přidána funkce SDS_rescan_onewire()&lt;br /&gt;
* FC: odstraněno náhodné hlášení o už probíhajícím nahrávání programu při nahrávání z EXE&lt;br /&gt;
* BIG 64/128 prodloužen čas pro sestavení Ethernetového spojení, což řeší problém s některými USB síťovými kartami atd.&lt;br /&gt;
* opraveno HTTP POST nastavení položek NTP&lt;br /&gt;
* opraveno HTTP POST který teď neuzavře spojení dříve než má, pokud mazání NVM pro nový FW (nebo nový UserWeb) trvá dlouho&lt;br /&gt;
&lt;br /&gt;
== 12.4.2022 ==&lt;br /&gt;
* doplněna informační stránka o vnitřním stavu OneWire Master (pro snazší identifikaci problémů při používání sběrnice)&lt;br /&gt;
* oprava v bootloaderu pro řadu 512 - vyžaduje přeprogramování u výrobce pro všechna SDS řady 512 s FW starším než 14.2.2022&lt;br /&gt;
&lt;br /&gt;
== 3.4.2022 ==&lt;br /&gt;
* FC verze 0x0C&lt;br /&gt;
* FC: přidána funkce SDS_I2C_rw&lt;br /&gt;
* OneWire stabilnější&lt;br /&gt;
&lt;br /&gt;
== 21.1.2022 ==&lt;br /&gt;
* prioritu mají vybrané konfigurační položky v NVM (jsou-li tam platné) před baterií zálohovanou pamětí&lt;br /&gt;
* aktivován HTTP POST protokol pro nahrávání a konfiguraci SDS (viz [[SDS:POST_upload]])&lt;br /&gt;
&lt;br /&gt;
== 18.1.2022 ==&lt;br /&gt;
* RSTD zapíše do NVM všechny konfigurační položky (i to co nenuluje), pro jistotu že v NVM bude vše skutečně zapsáno&lt;br /&gt;
* načítání konfigurace upraveno (větší spolehlivost)&lt;br /&gt;
&lt;br /&gt;
== 15.1.2022 ==&lt;br /&gt;
* přidána stránka cfgstatus.htm - pro možnost kontroly stavu uložené konfigurace v pevné paměti (např. co nemáte uloženo)&lt;br /&gt;
* přidán M2M výstup ip.xml&lt;br /&gt;
* FC: přidán algoritmus SHA-256 do funkce SDS_crypto()&lt;br /&gt;
* FC: každý program má unikátní identifikátor, podle kterého lze např. kontrolovat či zpětně poznat co máte v SDS nahráno&lt;br /&gt;
* identifikátor FC programu přidán na webové rozhraní a do M2M výstupů, a do exe aplikace&lt;br /&gt;
* zobrazeno unikátní identifikační čislo SDS hardware (napevno spojeno s modulem SDS, nezměnitelné), teď i ve M2M výstupech&lt;br /&gt;
* SNMP: nové položky .8.90 , .8.91 , .8.99&lt;br /&gt;
* FC: nové get(u32) položky 2 a 87&lt;br /&gt;
&lt;br /&gt;
== 31.12.2021 ==&lt;br /&gt;
* možnost vyřadit NTP z činnosti zadáním adresy 127.0.0.1 (vhodné pro uživatele kteří získávají čas odjinud, např. přes LoRA)&lt;br /&gt;
* web: informace na web (p=8) o stavu připojování SD karty (mounting...) a o stavu kdy je FC program pozastaven (PAUSED)&lt;br /&gt;
* web: opraven zámek zvětšené konzole (echo)&lt;br /&gt;
* důslednější kontrola platnosti konfigurace při startu&lt;br /&gt;
&lt;br /&gt;
== 27.12.2021 ==&lt;br /&gt;
* opravena chyba kdy na webu nešlo nastavit 100 procent PWM duty (jen 0 až 99, teď už jde i 100)&lt;br /&gt;
* FC: několikanásobně zvětšena konzole (echo.htm)&lt;br /&gt;
* HW: při poruše hlavního zdroje hodin (krystal) se použije záložní zdroj&lt;br /&gt;
* HW: využíváme RTC pro udržení času při přechodu přes reset (drží čas dokud zase nepřijde NTP)&lt;br /&gt;
* aktualizován bootloader (aktualizace bootloaderu jen prostřednictvím přeprogramování u výrobce) - umí znovu nahrát FW pokud se v SoC poškodí&lt;br /&gt;
* vydána varianta 512 - vlastní soubor s firmware&lt;br /&gt;
&lt;br /&gt;
== 25.12.2021 ==&lt;br /&gt;
* pouze interní vydání&lt;br /&gt;
&lt;br /&gt;
== 26.3.2021 ==&lt;br /&gt;
* FC: oprava nesprávného zacházení s unsigned typy (na některých místech interně přemapovány na signed)&lt;br /&gt;
* FC: chování varianty if pro speciální kombinaci signed/unsigned dle specifikace standardu C&lt;br /&gt;
&lt;br /&gt;
== 9.2.2021 ==&lt;br /&gt;
* FC: oprava TID v MODBUS-TCP&lt;br /&gt;
* MBTC výpis rozšířen&lt;br /&gt;
* FC: drobná úspora heap (více dostupného místa)&lt;br /&gt;
* FC: dns resolv drobný fix&lt;br /&gt;
* FC: http_get a http_post důležitý fix&lt;br /&gt;
* FC: nová funkce http_close&lt;br /&gt;
* FC: chyba -7 pro MODBUS-TCP a pro MQTT&lt;br /&gt;
* vylepšený algoritmus S0, rozšířené možnosti nastavení detektoru S0 (nastavení přidáno ve webovém rozhraní)&lt;br /&gt;
&lt;br /&gt;
== 22.12.2020 ==&lt;br /&gt;
* web: ruční přepnutí CBY pro relé (tzn. &amp;quot;kdo ovládá relé&amp;quot;), na &amp;quot;FULL-C&amp;quot;, dané relé nevypne (off) ale ponechá jeho stávající stav (on, off)&lt;br /&gt;
* security fix&lt;br /&gt;
&lt;br /&gt;
== 10.12.2020 ==&lt;br /&gt;
* dřívější odeslání NTP požadavku po výpadku síťového spojení&lt;br /&gt;
* integrovaná korekce chyby A/D měření pro HW osazený LMV324; uživatel může povolit tuto automatickou opravu chyby LMV324 ve webové administraci&lt;br /&gt;
* počítání délky aktivace tarifního vstupu (doba T0 a T1 v sekundách za den) viz nové sys, pozor pro funkci vyžaduje NTP&lt;br /&gt;
* automatický odečet S0 počítadel (vždy za dnešek a včerejšek), viz nové sys, pozor pro funkci vyžaduje NTP&lt;br /&gt;
&lt;br /&gt;
== 23.11.2020 ==&lt;br /&gt;
* FC + FULLC.exe: oprava chyby v případě více #if / #ifdef / #endif bloků zapsaných hned za sebou&lt;br /&gt;
* FC: makra a define lze provést i uvnitř funkce (dříve jen venku)&lt;br /&gt;
* FC: detekce nesprávné dereference ukazatele&lt;br /&gt;
&lt;br /&gt;
== 14.11.2020 ==&lt;br /&gt;
* webová administrace: stránka p=42: index ck03 se propíše i do nastavení (chybělo od 23.10.2020, web byl aktualizován, nastavení ale přebíralo ck00)&lt;br /&gt;
&lt;br /&gt;
== 4.11.2020 ==&lt;br /&gt;
* FC + FULLC.exe: odstraněn problém při načtení nahraného FULL-C programu v SDS, kdy dříve mohlo u jedné specifické velikosti nahraného programu, dojít k jeho nespuštění kvůli neodpovídajícímu crc&lt;br /&gt;
&lt;br /&gt;
== 3.11.2020 ==&lt;br /&gt;
* FC: zobrazení (v konzoli) čísla řádku (ve zdrojovém kódu) při chybě (což velmi zlepší ladění programů)&lt;br /&gt;
* FULLC.exe: odstraněno omezení na 255 znaků na řádek&lt;br /&gt;
* FULLC.exe: zrychlení nahrávání do SDS&lt;br /&gt;
&lt;br /&gt;
== 23.10.2020 ==&lt;br /&gt;
* webová administrace: stránka p=42: změna indexu ck00 na ck03 ať se dají uživatelským skriptem všechny prvky samostatně rozlišit&lt;br /&gt;
* FC: oprava http_get/post: správné vyplnění výsledků i pro situaci kdy server ukončí spojení přes TCP RST&lt;br /&gt;
&lt;br /&gt;
== 14.10.2020 ==&lt;br /&gt;
* oprava FULL-C funkce XTEA-CRYPT (bug o dvě verze dříve)&lt;br /&gt;
&lt;br /&gt;
== 13.10.2020 ==&lt;br /&gt;
* důležitá oprava chyby ve FULL-C (ternary operator, a další nahlášené nesrovnalosti)&lt;br /&gt;
&lt;br /&gt;
== 13.9.2020 ==&lt;br /&gt;
* oprava detekce SD karty (některé varianty SD karet nebyly detekovány, teď už ano)&lt;br /&gt;
&lt;br /&gt;
== 9.8.2020 ==&lt;br /&gt;
* FULL-C verze 0B (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* různé drobné opravy a zabezpečení&lt;br /&gt;
* zobrazení auditlogu (webové rozhraní SDS)&lt;br /&gt;
* FC: http_post&lt;br /&gt;
* FC: MQTT klient&lt;br /&gt;
* FC: MODBUS-TCP klient&lt;br /&gt;
&lt;br /&gt;
== 4.8.2020 ==&lt;br /&gt;
* úprava obsluhy relé&lt;br /&gt;
* podpora OneWire modulu SDS-1W-T-RH&lt;br /&gt;
&lt;br /&gt;
== 3.10.2019 ==&lt;br /&gt;
* SMTP klient posílá v hlavičce i položku &amp;quot;Date&amp;quot; (ale jen za předpokladu správného času v SDS)&lt;br /&gt;
* RSTD při zapnutí zařízení, ve kterém není záložní baterie (nebo je vybitá), zachová původně nastavenou MAC adresu (vše ostatní ale už jde do defaultu, což je správně)&lt;br /&gt;
* SUDP: rozšířen NOP příkaz &lt;br /&gt;
* SUDP: přidány další nové příkazy (master_cmd: 32, 33, 40, 42, 44, 48)&lt;br /&gt;
&lt;br /&gt;
== 23.9.2019 ==&lt;br /&gt;
* oprava GUI (S0 Inputs)&lt;br /&gt;
* SNMP nabízí možnost číst všechny sdílené proměnné (FULL-C: Sxx, Uxx, Fxx, Txx)&lt;br /&gt;
* opraven nefunkční RSTD na modulu STSW-rev3&lt;br /&gt;
&lt;br /&gt;
== 23.6.2019 ==&lt;br /&gt;
* oprava chyby objevené ve FW 28.5.2019, kdy na některých specifických SDS nefungovaly AD vstupy&lt;br /&gt;
&lt;br /&gt;
== 28.5.2019 ==&lt;br /&gt;
* oprava funkce SD karty (pro případy kdy se stala po čase nedostupná pro FC/web)&lt;br /&gt;
&lt;br /&gt;
== 5.5.2019 ==&lt;br /&gt;
* dořešeno hlídání stavu (načtení, atd.) SD karty i v případě provozu náročného FULL-C programu (tedy i pro hluboce vnořené smyčky)&lt;br /&gt;
* oprava původně chybné implementace S-UDP příkazu &amp;quot;1Waccess: sub-command 8&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== 24.2.2019 ==&lt;br /&gt;
* překlopení z BETA do oficiálního FW&lt;br /&gt;
* automatika zimní/letní čas&lt;br /&gt;
* přístup na SD kartu: FULL-C pracuje se soubory (vytvoření, smazání, čtení a zápis, atd.) &lt;br /&gt;
* přístup na SD kartu: web server zobrazuje soubory ze SD karty (vše ve složce \web\ a podsložkách této složky)&lt;br /&gt;
* oprava čtení napětí baterie pro variantu 128K&lt;br /&gt;
* shared.xml&lt;br /&gt;
* odstraněno omezení délky ve shared.txt&lt;br /&gt;
* zprovozněno getsv&lt;br /&gt;
* verze FULL-C je teď FC 0x0A (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* FULL-C: nová možnost způsobu čtení teploty SoC&lt;br /&gt;
* FULL-C: index 64, 65, 184, 185, 429, 430, atd.&lt;br /&gt;
* FULL-C: doplněné set/get funkce pro sdílené proměnné&lt;br /&gt;
* FULL-C: s/printf umí správné zpracovat požadavek na určení desetinných míst pro float&lt;br /&gt;
* FULL-C: funkce pro reset FC programu&lt;br /&gt;
* FULL-C: funkce pro watchdog FC programu&lt;br /&gt;
* SNMP nové OIDy (dle přidaných věcí - čas, sdcard)&lt;br /&gt;
&lt;br /&gt;
== 1.7.2018 ==&lt;br /&gt;
* SNMP: sdsS0translatedUnitT0,1 je poskytováno jako hodnota od odečtu (ne od úplného začátku měření, jak to bylo předtím) &lt;br /&gt;
* FULL-C: přidán index 183 poskytující datum vydání FW který je právě nahrán v SDS&lt;br /&gt;
&lt;br /&gt;
== 27.6.2018 ==&lt;br /&gt;
* verze FULL-C je teď FC 0x09 (vyžaduje použít aktuální EXE pro překlad)&lt;br /&gt;
* FULL-C: přidána podpora pro int64_t a uint64_t&lt;br /&gt;
* FULL-C: přejmenováno set a get funkce (rozlišení 32 a 64 bit)&lt;br /&gt;
* FULL-C: snprintf přesně dle standardu (zrušena nevhodná změna z 20.12.2017)&lt;br /&gt;
* drobné opravy&lt;br /&gt;
* drobná oprava v odchozím TCP-SYN a v generátoru ISN&lt;br /&gt;
&lt;br /&gt;
== 8.3.2018 ==&lt;br /&gt;
* oprava echo.htm - správně wrapuje obsah, a nejsou tam nadbytečné 0x00&lt;br /&gt;
* vhodnější řešení rexmitu částí webových stránek a dynamických dat (ocení to zejména uživatelé s mobilním připojením pro SDS)&lt;br /&gt;
&lt;br /&gt;
== 2.3.2018 ==&lt;br /&gt;
* aktulizace a oprava ve výpočtu &amp;quot;aktuálního výkonu&amp;quot; pro okrajové situace (např. krajní hodnoty impulsní konstanty)&lt;br /&gt;
&lt;br /&gt;
== 11.2.2017 ==&lt;br /&gt;
* zprovozněny funkce set/get pro indexy 4000 až 4300 (alternativní přístup k číselným sdíleným proměnným)&lt;br /&gt;
&lt;br /&gt;
== 21.12.2017 ==&lt;br /&gt;
* zvýšena stabilita spuštění po zapnutí&lt;br /&gt;
&lt;br /&gt;
== 20.12.2017 ==&lt;br /&gt;
* dočasná změna ve FULL-C (bude zrušena): funkce snprintf() má interně posunutý limit délky zápisu o 1 (toto je záměrný rozdíl proti C99). Změna v SDS je provedena z důvodu neznalosti programátorů FC v tom, že do snprintf() limitu je potřeba započítat i jeden byte pro ukončující nulu. Ve výsledku tedy zápis &amp;quot;snprintf(buf, limit, ...);&amp;quot; je v FC interně vykonán jako &amp;quot;snprintf(buf, limit+1, ...);&amp;quot;.&lt;br /&gt;
* oprava ve FULL-C: výpočet platné délky bufferu funguje i pro ukazatele vytvořené offsetem ze základní alokované adresy (příklad takového bufferu je: buf=malloc(x)+offset;)&lt;br /&gt;
* stav všech relé je načten z paměti vždy po zapnutí modulu, a ty relé které jsou ručně ovládány (manual control) a které byly před vypnutím v zapnutém (ON) stavu, jsou po zapnutí modulu aktivovány (zatímco relé ovládané z IP-W a FC jsou vždy po zapnutí modulu uvedeny do OFF stavu)&lt;br /&gt;
&lt;br /&gt;
== 18.12.2017 ==&lt;br /&gt;
* UserWEB projekt má opravenu chybu, kdy nebylo možno použít delší Name Chain tabulku (tedy lze už vložit mnohem více souborů) &lt;br /&gt;
* nastavená MAC adresa je zachována i po průchodu RSTD (byla-li platná)&lt;br /&gt;
* opravena chyba způsobující nefunkční http_get(), teď už to opět funguje&lt;br /&gt;
* aktualizace obsluhy PWM (např. lépe přepočítává zobrazovaná &amp;quot;procenta&amp;quot;)&lt;br /&gt;
* oprava strcat() funkce (opraveno hlídání max velikosti bufferu ze &amp;quot;from&amp;quot; na &amp;quot;to&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== 18.9.2017 ==&lt;br /&gt;
* FULL-C: printf() správně tiskne float i pokud se formátovací parametr zadá jako %d (tedy ne jako %f)&lt;br /&gt;
* FULL-C: snprint() opraven (když je 'from' kratší než 'to' tak je 'to' doplněn 0x00 - je to zvláštnost, nemá se to používat, ale C99 to předepisuje, tak to dodržíme)&lt;br /&gt;
&lt;br /&gt;
== 9.9.2017 ==&lt;br /&gt;
* vnitřní bezpečnostní aktualizace&lt;br /&gt;
&lt;br /&gt;
== 29.8.2017 ==&lt;br /&gt;
* oprava chování RSTD - pokud je zapojen před zapnutím, nepřejde do automatického resetu po 10sec, ale RSTD je použit a SDS pracuje dále; přitom funkce &amp;quot;zapoj RSTD za běhu&amp;quot; je zachována správně&lt;br /&gt;
* zásadní zlepšení odolnosti FULL-C proti chybám programátora - vnitřní hlídání rozsahů bufferu a stringů, zamezující zápisu za hranice pole (typicky chybné použití sprintf() funkce, ale toto hlídání je aplikováno obecně všude)&lt;br /&gt;
&lt;br /&gt;
== 8.8.2017 ==&lt;br /&gt;
* oprava: FC teď správně převádí URL kód &amp;quot;sv?xxxx=yyyy...&amp;quot;, na text (vypadlo 31.3. při rozšíření počtu znaků pro sdílené proměnné Txx) &lt;br /&gt;
&lt;br /&gt;
== 10.7.2017 ==&lt;br /&gt;
* vydán firmware pro variantu &amp;quot;128kB&amp;quot; (od teď vychází dva typy firmware, pro variantu &amp;quot;64kB&amp;quot; a variantu &amp;quot;128kB&amp;quot;, vyberete si tu svou dle HW který máte)&lt;br /&gt;
* velká optimalizace využití paměti pro uložení a běh FULL-C programu (komprese, a zmenšení vyžadovaného heapu pro běh programu) - významně zvětšuje možnou velikost FC programu&lt;br /&gt;
* pin RSTD lze teď také použít i bez vypnutí a zapnutí SDS, stačí jej na 10 vteřin za běhu zkratovat (pak se provede RSTD a SDS se rebootuje) - výhodné pro zařízení kde vypnutí nelze provést&lt;br /&gt;
* drobné užitečné opravy dle hlášení uživatelů&lt;br /&gt;
* verze FC zvýšena na 0x08, a přidána možnost uložit 128 proměnných do baterií zálohované pamětí (tzn. obsah přežije výpadek napájení a FC program po restartu o tyto údaje nepřijde)&lt;br /&gt;
&lt;br /&gt;
== 2.6.2017 ==&lt;br /&gt;
* návratová hodnota funkce DF_read_page() je nastavena správně i v případě, kdy tato funkce čte data z cache (opakované čtení stejné stránky DF)&lt;br /&gt;
&lt;br /&gt;
== 6.4.2017 ==&lt;br /&gt;
* přidána FULL-C funkce AES-128-CTR, viz SDS_crypto(0x20, ...);&lt;br /&gt;
&lt;br /&gt;
== 31.3.2017 ==&lt;br /&gt;
* oprava RS485-MASTER drive, je teď zcela přesný (tzn. vypnut v přesném časování za úplně posledním vyslaným bitem)&lt;br /&gt;
* oprava čtení konfigurace 1-W, pomocí sds_get_a()&lt;br /&gt;
* přidán index 139&lt;br /&gt;
* odstraněno omezení na 32 znaků pro sdílené proměnné (přenos textu) &amp;quot;Txx&amp;quot; (xx = 00 až 99)&lt;br /&gt;
* fix návratových hodnot FULL-C funkcí pro práci s DF (teď to vrací správně 1 nebo 0, podle wiki)&lt;br /&gt;
* upřesněn název: (z BIG na BIG-64) / (z STSW na STSW-64)&lt;br /&gt;
* vyžaduje aktuální SDSLOAD.exe (6.3.2017 nebo novější) a FULLC.exe (6.3.2017 nebo novější)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== starší záznamy ==&lt;br /&gt;
&lt;br /&gt;
Nejsou k dispozici.&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
	<entry>
		<id>https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=932</id>
		<title>Firmware</title>
		<link rel="alternate" type="text/html" href="https://wiki.merenienergie.cz/subdom/wiki/index.php?title=Firmware&amp;diff=932"/>
		<updated>2024-07-22T15:04:08Z</updated>

		<summary type="html">&lt;p&gt;Adamn: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Nový Firmware ==&lt;br /&gt;
&lt;br /&gt;
Aktualizujte si své SDS - nahrejte do něj nový firmware, který získáte na této stránce - '''naskrolujte dolů''' kde naleznete odkaz na BIN soubor pro vaše zařízení.&lt;br /&gt;
&lt;br /&gt;
Postup a řešení problémů: [[Manual_Firmware_Update|Návod pro aktualizaci Firmware v SDS]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Odkazy ke stáhnutí ===&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;PC Software&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_sdsc_winexe.jpg]] '''Program SDSC.exe''' (programovací jazyk SDS-C, aktualizace firmware pro SDS '''první řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; stáhnout WinEXE pro SDS-C [https://sds.an-d.cz/firmware/SDSC_310123.exe zápis/simulace/upload SDS-C (SDS-C '''verze 09''') a UWEB, ze dne 31.1.2023]&amp;lt;br&amp;gt;SHA-256: daf1095f206404e33223f675f5d0bc09d4fc5dfd7d9f79f4f735af88f5ff1e6a&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program FULLC.exe''' (programovací jazyk FULL-C, aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; (FC verze '''0x12''' - '''aktuální'''): stáhnout WinEXE pro FULL-C [https://sds.an-d.cz/firmware/FULLC_220724.exe zápis/upload FULL-C a UWEB, ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro Firmware od 9.3.2023 včetně, pro všechny varianty SDS (64kB a 128kB a 512kB)&amp;lt;br&amp;gt;SHA-256: b4cb95d8ec8a6e844a3a4c9a2e9fc50ece60ccf44e8043f8c10f46b2294cae0b&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_fullc_winexe.jpg]] '''Program SDSLOAD.exe''' (&amp;quot;jednokrokový&amp;quot; upload .FC souborů a aktualizace firmware pro SDS '''druhé řady''')&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; ('''aktuální''' verze, pro FW od 10.7.2017 včetně a dále) stáhnout WinEXE [https://sds.an-d.cz/firmware/SDSLOAD_220724.exe program SDSLOAD ze dne 22.7.2024],&amp;lt;br&amp;gt; určeno pro všechny SDS varianty 64kB a 128kB a 512kB, (subvarianty DP a DS84)&amp;lt;br&amp;gt;SHA-256: ded5bf1aca2e04e22c33899a0976deccc8ff76eb88f53ecd9769788b7daa25a7&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_empty.jpg]] '''Program SDS LOG'''&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| &amp;lt;li&amp;gt; Program '''[[SDS LOG: intro|SDS LOG]]''' - verze 0.1 ze dne 26.8.2011 - [https://sds.an-d.cz/firmware/SDS_LOG.exe stáhnout EXE program]&lt;br /&gt;
&amp;lt;li&amp;gt; Zdrojové kódy programu SDS LOG (Creative Commons Licence) [[SDS LOG: source code|ke stáhnutí zde]]&lt;br /&gt;
&amp;lt;li&amp;gt; [[SDS LOG: changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;První Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMICROE.jpg]]  [[Soubor:Thumbnail_SDSMICRO.jpg]] [[Soubor:Thumbnail_SDS_DIN.jpg]] '''D0000001''' MICRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: LM]] varianty '''LIGHT''', '''LIGHT 2''' a '''E (DIN)'''.&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny varianty a revize SDS MICRO LM.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_010722_CZ.bin SDS-MICRO-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_010722_EN.bin SDS-MICRO-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B0000057''' MICRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_021123_CZ.bin SDS-MICRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_021123_EN.bin SDS-MICRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MICRO_ST_1.png]] '''B000D957''' MICRO ST DP&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MICRO: ST DP]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MICRO ST DP.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_021123_CZ.bin SDS-MICRO-ST-DP-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MICRO_ST_DP_021123_EN.bin SDS-MICRO-ST-DP-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MICRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MINI_1.png]] [[Soubor:Thumbnail_SDS_MINI_2.png]] '''B0000020''' MINI ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MINI: ST]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09), firmware je jednotný pro všechny revize SDS MINI ST.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MINI_021123_CZ.bin SDS-MINI-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MINI_021123_EN.bin SDS-MINI-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
[[SDS MINI: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSMACRO.jpg]] '''C0000001''' MACRO LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: LM]].&lt;br /&gt;
&amp;lt;li&amp;gt;Výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_010722_CZ.bin SDS-MACRO-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_010722_EN.bin SDS-MACRO-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_MACRO_ST_rev1.png]] '''C0000057''' MACRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS MACRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_021123_CZ.bin SDS-MACRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_MACRO_ST_021123_EN.bin SDS-MACRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS MACRO: ST: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSTTCPRO.jpg]] '''B0000001''' TTCPRO ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS TTCPRO: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_021123_CZ.bin SDS-TTCPRO-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_TTCPRO_021123_EN.bin SDS-TTCPRO-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS TTCPRO ST má shodný Change Log se SDS MINI ST, a to zde: [[SDS MINI: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:thumbnail_SDSIO6.jpg|160px]] '''D0000006''' IO6 LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: LM]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_010722_CZ.bin SDS-IO6-LM-CZ ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_010722_EN.bin SDS-IO6-LM-EN released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 LM má shodný Change Log se SDS MICRO LM, a to zde: [[SDS MICRO: LM: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_empty.jpg]] '''D0000011''' IO6 ST&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS IO6: ST]], výchozí firmware (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ČESKÁ LOKALIZACE''' / FULL CZECH LOCALISATION&amp;lt;br&amp;gt; - stáhnout firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_021123_CZ.bin SDS-IO6-ST-CZ ze dne 2.11.2023]&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&amp;lt;br&amp;gt; - download firmware [https://sds.an-d.cz/firmware/SDS_IO6_ST_021123_EN.bin SDS-IO6-ST-EN released on 2-Nov-2023]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS IO6 ST má shodný Change Log se SDS MICRO ST, a to zde: [[SDS MICRO: ST: firmware changelog]].&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDS_FTP_rev1.png]] '''F0000001''' FTP LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS FTP: LM]], výchozí firmware.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt; Firmware: ''SDS FTP ze dne 7.9.2010'' už nahrán ve výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt; &lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS FTP: LM: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_ONEDPS.jpg]] '''E000AAA1''' UPS ONEDPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: ONEDPS]], finální jednodesková verze (aktuální) (SDS-C verze č. 09).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Stáhnout firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_CZ.bin (Česká lokalizace) SDS-UPS-ONEDPS-LM ze dne 1.7.2022]&lt;br /&gt;
&amp;lt;li&amp;gt;Download firmware [https://sds.an-d.cz/firmware/SDSUPS_ONEDPS_010722_EN.bin (English language version) SDS-UPS-ONEDPS-LM released on 1-Jul-2022]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;[[SDS UPS: LM: ONEDPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSUPS_TWODPS.jpg]] '''C00xxxxx''' UPS TWODPS LM&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Výrobek [[SDS UPS: LM: TWODPS]], HW rev3u - DVOUDESKOVÁ (UŽ NEPRODÁVANÁ) varianta.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je zaslán na požádání (pošlete email), aktuální verze je z 1.3.2011 (dále aktualizováno na specifické požádání, raději proto přejděte na nový HW).&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Každá deska má svou kalibraci, proto každá deska má svůj vlastní FW, proto musíte uvést S/N svého výrobku.&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;HISTORIE: [[SDS UPS: LM: TWODPS: firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div class=&amp;quot;successbox&amp;quot;&amp;gt;Druhá Produktová Řada SDS&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 5px;background-color:#cdcdcd;&amp;quot;| [[Soubor:Thumbnail_SDSBIG.jpg]] [[Soubor:Thumbnail_SDSSMALL.jpg]] '''B1900001''' / '''B1900002''' / '''B1900004''' : BIG, BIG2, SMALL, STSW, MBGW&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;|&amp;lt;li&amp;gt;Společný firmware pro výrobky [[SDS BIG]], [[SDS SMALL]] a [[SDS STSW]] a [[SDS MBGW]]&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je jednotný pro všechny varianty '''SDS Druhé Produktové Řady''', nutné je rozlišení dle varianty 64kB/128kB/512kB. Rozlišení podle dalších subvariant (DP, DS84) se neprovádí.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware je společný pro BIG a BIG2, rozlišení je pouze dle varianty 64/128/512.&lt;br /&gt;
&amp;lt;li&amp;gt;Pozn. Modul SMALL a modul MBGW interně obsahuje modul STSW, nahrává se tam tedy stejný FW.&lt;br /&gt;
&amp;lt;li&amp;gt;Firmware vždy vyžaduje použití odpovídající, aktuální verze FULLC.EXE programu. &lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;SDS BIG/SMALL/STSW: [[SDS BIG: firmware changelog|firmware changelog]]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;64kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 64kB) [https://sds.an-d.cz/firmware/SDS_BIG_64K_220724_EN.bin firmware &amp;quot;64kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 22.7.2024]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;128kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 128kB) [https://sds.an-d.cz/firmware/SDS_BIG_128K_220724_EN.bin firmware &amp;quot;128kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 22.7.2024]&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| VARIANTA HARDWARE &amp;quot;512kB&amp;quot;&lt;br /&gt;
&amp;lt;li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;'''PLNĚ ANGLICKÁ LOKALIZACE''' / FULL ENGLISH LOCALISATION&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [[firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 12.4.2022|informace pokud máte SDS512 s FW &amp;lt;b&amp;gt;starším&amp;lt;/b&amp;gt; než 12.4.2022]]&lt;br /&gt;
&amp;lt;li&amp;gt;- stáhnout firmware (varianta: 512kB) [https://sds.an-d.cz/firmware/SDS_BIG_512K_220724_EN.bin firmware &amp;quot;512kB&amp;quot; SDS-BIG/SMALL/STSW/OEM ze dne 22.7.2024]&lt;br /&gt;
&amp;lt;li&amp;gt;Informace: SDS BIG/SMALL/STSW 512 se starším FW než 12.4.2022 vyžaduje přeprogramování u výrobce.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px;&amp;quot;| POZOR&lt;br /&gt;
'''Aktualizujte''' své doplňkové sandwich desky, tzn. [[SDS BIG: DALI]], [[SDS BIG: LORA]] - na verzi FW 5.12.2016 '''nebo novější'''.&amp;lt;br&amp;gt;&lt;br /&gt;
Aktualizaci lze provést jen fyzicky u výrobce, ten ji provede bezplatně (zašlete výrobci vaše SDS pro jeho aktualizaci). Se starým FW nebude tento HW plně fungovat.&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;padding: 15px; background-color:#ffffff;&amp;quot;|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Informace ===&lt;br /&gt;
&lt;br /&gt;
 VŽDY MĚJTE VE SVÉM ZAŘÍZENÍ NEJNOVĚJŠÍ FIRMWARE, A POUŽÍVEJTE TAKÉ NEJNOVĚJŠÍ SDS-C EXE / FULL-C EXE PROGRAM.&lt;br /&gt;
 V opačném případě vám budou chybět nové funkce, které neustále přidáváme, a také nebudete mít opravené nalezené chyby.&lt;br /&gt;
 V případě že chcete získat podporu, musíte mít instalovaný nejnovější firmware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Historický Software ===&lt;br /&gt;
&lt;br /&gt;
Za účelem aktualizace takových SDS, kde už dlouho nebyl aktualizován firmware, je potřeba použít odpovídající EXE program pro aktualizaci takovéhoto zařízení.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== První Produktová Řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro SDS-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_151119.exe ze dne '''15.11.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 08, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020118.exe ze dne '''2.1.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 07, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware novějším než SRPEN 2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_020317.exe ze dne '''2.3.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které mají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 8.8.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_060216.exe ze dne '''6.2.2016''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 06, které nemají podporu pro UserWEB project (tj. SDS první řady, které jsou provozovány s firmware starším než 24.1.2017)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_231111.exe ze dne '''23.11.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s SDS-C ver 04&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro SDS-C (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_170211.exe ze dne '''17.2.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''února 2011''')&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro ''SDS-C verze č. 03'' (zápis/simulace/upload SDS-C), [https://sds.an-d.cz/firmware/archive/SDSC_140511.exe ze dne '''14.5.2011''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu se '''starým''' firmware (pro ty kteří zcela náhodou mají neaktualizovaný firmware s původem do '''konce května 2011''')&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Druhá Produktová řada ====&lt;br /&gt;
&lt;br /&gt;
'''Nepoužívejte''' starý firmware a staré verze aplikace pro FULL-C. '''Aktualizujte''' své zařízení pravidelně.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Následující aplikace jsou poskytnuty pouze jako negarantovaná podpora zařízení, které jste ještě nestihli aktualizovat na nejnovější firmware. Jiný význam tyto aplikace už nemají.&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_070323.exe ze dne '''7.3.2023''']&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_311222.exe ze dne '''31.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 11, (firmware od 9.1.2023 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_071222.exe ze dne '''7.12.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 10, (firmware od 18.11.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_161022.exe ze dne '''16.10.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0F, (firmware od 16.10.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_110722.exe ze dne '''11.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0E, (firmware od 11.7.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010722.exe ze dne '''1.7.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0D, (firmware od 6.8.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030422.exe ze dne '''3.4.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0C, (firmware od 23.3.2022 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010322.exe ze dne '''1.3.2022''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0B, (firmware od 6.8.2020 včetně, varianty SDS 64kB a 128kB a 512kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_030119.exe ze dne '''3.1.2019''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 0A, (firmware od 3.1.2019 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_010718.exe ze dne '''1.7.2018''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 09, (firmware od 27.6.2018 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_100717.exe ze dne '''10.7.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 08, (firmware od 10.7.2017 včetně, varianty SDS 64kB a 128kB)&lt;br /&gt;
&lt;br /&gt;
* (HISTORICKÉ) stáhnout WinEXE pro FULL-C (zápis/upload FULL-C a UWEB), [https://sds.an-d.cz/firmware/archive/FULLC_080617.exe ze dne '''8.6.2017''']&amp;lt;br&amp;gt; - určeno pro zpětnou kompatibilitu pro zařízení s FULL-C ver 06, (firmware starší než Červenec-2017, a pouze pro variantu SDS 64kB)&lt;br /&gt;
&lt;br /&gt;
* (historická verze) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_201022.exe ze dne 20.10.2022]&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_120417.exe ze dne 12.4.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB která používá ''starý'' firmware (2017 nebo starší)&lt;br /&gt;
&lt;br /&gt;
* (historická verze, pro starší FW) stáhnout WinEXE program SDSLOAD [https://sds.an-d.cz/firmware/archive/SDSLOAD_100717.exe ze dne 10.7.2017],&amp;lt;br&amp;gt; určeno pouze pro SDS variantu 64kB a 128kB (nepodporuje variantu 512kB tak jako aktuální stáhnutelná verze aplikace)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Beta Testing ==&lt;br /&gt;
&lt;br /&gt;
Než vydáme novou verzi, je potřeba změny a novinky otestovat.&lt;br /&gt;
&lt;br /&gt;
Pokud jste ochotní se testu zúčastnit, pak se podívejte [https://forum.sds.an-d.cz/viewtopic.php?id=129 na tento odkaz]. Zde jsou uveřejněny vždy nejnovější beta verze firmware.&lt;br /&gt;
&lt;br /&gt;
Diskuse s vývojem k aktuálnímu Firmware je k dispozici na našem fóru.&lt;br /&gt;
&lt;br /&gt;
__NOTOC__&lt;/div&gt;</summary>
		<author><name>Adamn</name></author>
	</entry>
</feed>