SDS-C

Z onlinetechnology.cz

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

Obsah

Co to je?

SDS-C umožnujě vám, uživatelům (majitelům) našich výrobků, si dodatečně naprogramovat (upravit) chování těchto výrobků. Napíšete tedy program (text) a ten se po nahrání do zařízení začne provádět.

Zařízení je tedy PLC (Programmable Logic Controller), přesněji PAC (Programmable Automation Controller), programovatelný v SDS-C jazyce.

Chybí vám něco v SDS-C, nebo si nevíte rady? Využijte fórum, což je preferovaný postup (a navíc naleznete řadu odpovědí na již položené otázky ostatních uživatelů).

Kde to vezmu?

SDS-C je součástí firmware pro všechny výrobky SDS/Onlinetechnology, když si zařízení zakoupíte, tak SDS-C už v něm máte. Dále ještě potřebujete program pro komfortní zápis, ověření a upload konkrétních SDS-C programů (aplikace je pro Windows® 32bit, lze spustit i pod Linuxem ve WinE, nebo VMware atd.) - právě touto aplikací se váš napsaný program nahraje do zařízení. Vše zdarma stáhnete ze stránky pro nejaktuálnější firmware.

Naprogramujte si vlastní chování všech výrobků SDS

Použijete SDS-C, náš PLC skriptovací jazyk, který je odvozen od ANSI C programovacího jazyka. Každý, kdo umí v C programovat, si může snadno vytvořit libovolný program, který bude v zařízení SDS "interpretován" (přesněji, jedná se o JIT) a bude jej ovládat v reálném čase. Takto získáte plnohodnotné, ethernetové, opakovatelně programovatelné PLC za výbornou cenu.

Laicky řečeno: přímo online si naťukáte jakýkoliv vlastní program pro kterékoliv zařízení SDS, a tento program se bude na zařízení okamžitě vykonávat.

POPIS SDS-C PRO ZAČÁTEČNÍKY

K dispozici je i plnohodnotný komfortní simulátor (běží v systému Windows®, lze pod WinE) - lze si odladit (krokování) program bez nutnosti mít fyzický přístup k zařízení řady SDS.

Ukázkové programy naleznete zde.

Každou 1 milisekundu je provedena jedna celá instrukce programu (celý příkaz). To dává 1000 vykonaných hi-level příkazů (celých příkazů) za vteřinu, což je dostatečná rychlost pro největší množství aplikací. Pojmem celý příkaz přesně odpovídá jednomu CELÉMU řádku, který vidíte v debuggeru v simulátoru (toto je důležitá informace, protože to znamená, že skutečná rychlost je opravdu velká - nepleťte si to s low-level instrukcemi apod., skutečně se jedná o celé příkazy).

Pokud máte oprávněný požadavek na rychlejší činnost, je zde možnost - viz příslušné nastavení pro konkrétní položku v sys[], která odstraní 1msec zámek kroku.

Program je sestaven z jednotlivých:

příkazů, (zde),
uživatelských a systémových proměnných

Program je definován programátorem (to jste vy) jako text, ve kterém jsou uvedeny ve správném pořadí jednotlivé příkazy.

Program se tedy skládá z těchto zapsaných příkazů, které jsou postupně prováděny (tak jak to programátor zapsal). Program je neustále opakován, a to tak dlouho, dokud je zařízení zapnuto.

Verze

Postupně jsou možnosti SDS-C rozšiřovány, především na základě konkrétních požadavků uživatelů. V současné době je SDS-C již ve své třetí verzi. Zpětná kompatibilita zde je, tzn. programy ze starších verzí lze bez úpravy použít pro nové verze. Problém je v opačném směru, kdy nové verze mají nové funkce a systémové proměnné, které se ve starších verzích nevyskytovali. Naštěstí je přechod na novou verzi SDS-C pouze otázkou update firmware, který je v nejnovější verzi k dispozici zadarmo na tomto webu.

Existující verze:

  • verze 01 : první verze, vydáno 2.6.2010
  • verze 02 : druhá verze, vydáno koncem roku 2010
  • verze 03 : třetí verze, vydáno konecem února 2011
  • verze 04 : čtvrtá verze, vydáno na začátku června 2011
  • verze 05 : pátá verze, vydáno v listopadu 2011
  • verze 06 : šestá verze, od března 2012

Spolu s novým firmware je potřeba použít nový překladač/simulátor/uploader, který je ke stáhnutí ze stejné stránky jako nový firmware. Program v SDS-C lze spustit jen na stejné nebo novější verzi, v jaké byl konkrétní program napsán - tzn. program SDS-C fungující ve verzi např. 03 bude fungovat i pro 04, 05, atd., ale už ne pro 01 nebo 02.

Popis jazyka SDS-C

Tento jazyk je odvozen od ANSI C, přičemž došlo k řadě zjednodušení. Cílem je bezpečný, nepřerušený chod programu na embedded zařízení. Nejdůležitějším omezením je velikost volné paměti, určené pro uchování definice programu. Program je provozován kompletně na staticky alokované paměti, nepracuje se s dynamickými daty - takže se nemá co pokazit. Nepoužívá se dynamický zásobník, pouze statický s pevným počtem úrovní, s kontrolou na podtečení (nejdříve kontrola úrovně, pak provedení kroku), a nepředávají se údaje (lze použít pouze globální proměnné). Program je ze zadání (textová forma) přeložen do interního pseudokódu (tj. strojové instrukce), a není tedy pomalu vykonáván algoritmickým interpretrem (tj. žádné zásobníkové rozklady operátorů apod.).

Popis jazyka SDS-C je zde postupně zveřejňován tak rychle jak zvládáme dokumentaci psát. Pokud máte dotazy, použijte naše fórum.

Omezení a poznámky:

  • lze použít jen globální proměnné, všechny proměnné jsou globální, i ty definované uvnitř funkcí !!!
  • funkce jsou definovány vždy jako void (tj. nevracejí hodnotu, ani nemají vstupní proměnné, použijte globální proměnné)
  • zápis (deklarace) funkce je jen pomocí názvu funkce, bez parametrů - automaticky je předpokládáno (void)
  • funkce se volají jen svým názvem, např. mojefunkce(); (nezapomeňte na závorky (), i pro žádné parametry)
  • názvy návěstí (label xxx:) musí začínat písmenkem, a mohou být (pro přehlednost) uvedeny klíčovým slovem label (ale nemusí !)
  • jediná povolená proměnná typu "pole" je sys[] (reflektuje fyzický stav zařízení, navíc jako parametr lze zapsat jen přímo číslo) a ram[] a text[].
  • pro IF je možné použít podbloky kódu ohraničené { a } (pouze pro výsledky IF, viz detaily)
  • podmínky lze testovat pomocí if, s běžným C zápisem, vykonány jsou vždy všechny podmínky (nezkracuje se test)
  • cyklus for není k dispozici, bude v jednom z příštím verzí SDS-C (zatím si to sami snadno realizujte pomocí if a skoků)
  • cyklus while není k dispozici (opět - lze snadno nahradit návěstím a if)
  • všechny proměnné jsou typu signed 32-bit (tj. v rozsahu -2147483647 až +2147483648)
  • všechny proměnné musí být deklarovány (příklad: var i,j;) předtím než se někde v programu použijí
  • řetězce lze použít jen jako konstanty (pevné vstupy do funkcí), nebo si lze pomoct pomocí pole text[]
  • řetězce se uvozují jednoduchou čárkou ' (do budoucna přejdeme na správný znak uvozovky ", ale zatím to ještě je ' )

VERZE 03: NOVINKY

  • možnost použít #define, název musí být velkými písmeny, možnosti viz příklady
  • možnost zápisu čísel v binárním tvaru, např. 0b10101010 což odpovídá dekadickému číslu 170
  • pozn. samozřejmě můžete použít i zápis v hexadecimálním tvaru (např. 0x31)
  • label lze zapsat pouze jako name: , tj. bez předpony label, takže teď to plně odpovídá zvyklostem v C
  • parametrem pro index pole může být (kromě konstanty, např. sys[64]) i uživatelská proměnná - příklad: sys[i]
  • k dispozici je pole ram[], které slouží pro obecné účely (neuchovává se v pevné paměti, obsah nepřežije reset)
  • od 14.5.2011 lze při zápisu programu použít podbloky ohraničené { a } pro výsledky IF

VERZE 04: NOVINKY

  • rozšíření pole ram[] (více indexů)
  • rozšíření maximální možné velikosti programu (jak pro eeprom paměť, tak pro dataflash paměť)

VERZE 05: NOVINKY

  • přístup do data-flash paměti (info zde)

VERZE 06: NOVINKY

  • pole text[] (info zde)
  • možnost využít uživatelské webové stránky jako indexové stránky zařízení


INFORMACE:

Systémové proměnné (sys[]) a funkce (např. odeslání emailu) jsou vypsány zde.

DOPORUČENÍ: Stáhněte si simulátor-debugger a naučte se programovat SDS-C na svém počítači, na základě vzorových programů které naleznete na této WiKi - nejlépe se naučíte používat SDS-C tak, že budete upravovat již existující ověřené programy.

DOTAZY? Napište je na naše fórum, budeme se jim věnovat.

Jak pracovat s desetinnými čísly

Protože SDS-C podporuje pouze 32-bit signed long, musí se použít matematický trik.

Nejlepším příkladem je způsob prezentace teploty z teploměrů. Zařízení SDS předává tyto hodnoty do SDS-C vynásobené 100, čímž se dosahuje preciznosti na dvě desetinná místa (třetí a další místo z původní hodnoty je zahozeno).

Příklad: Teplota je 15.67°C, SDS-C tedy dostane hodnotu 1567. Pokud chcete číslo, které bylo původně před desetinnou tečkou, vydělíte to 100 (vše je celočíselné, takže dostanete 1567 / 100 = 15) a pokud chcete číslo, které bylo původně za desetinnou tečkou, použijte funkci modulo, tj. v našem příkladě 1567 % 100 = 67.

Pokud by jste chtěli větší preciznost, zvyšte počet nul v násobiči při vytváření čísla (místo např. 100 se dá 1000 pro třimístnou přesnost).

Dále pozor, pokud máte záporná čísla, tak je potřeba si uvědomit, že (příklad) -1234 / 100 = -12 a teď pozor: -1234 % 100 = -34 . Toto přináší nepříjemnost např. v případě zobrazování teplot, kdy vstupní údaj -1234 je při nepohlídání znaménka při převodu na text přepsán na "-12.-34" (místo "-12.34"). Řešení je snadné, stačí do programu doplnit hlídání záporného čísla a následně upravit znaménko u (původně desetinné) části. Taky pozor na nutnost ručního doplnění čísla nula při vypisování hodnoty za desetinnou tečkou, pokud je tato hodnota 0 až 9 (tj. menší než 10).

K čemu je SDS-C dobré?

Sami si uděláte přesně to, co potřebujete, tak, jak to potřebujete.

  • realizujte vlastní IP watchdog, s takovým chováním, jaké si přesně představujete
  • realizujte řízení klimatizace a vytápění
  • realizujte EZS/EPS zabezpečovací zařízení
  • realizujte vzdálený dohled s automatickým odesíláním alarmových zpráv (email, sms přes email, ...)
  • realizujte inteligentní řízení osvětlení
  • dohled nad záložními zdroji či jinými technologiemi
  • řízení VO v obci, včetně měření spotřeby, hlídání poruch, časování, dálkového ovládání
  • řízení topných kabelů podle venkovní teploty
  • řízení podle aktuálního odběru energie (využijte převodník PWM na 0-10V a ovládejte např. SSR)
  • malá domácí automatizace, využijte sběrnici RS485
  • odečty z elektroměrů se sběrnicí RS485
  • komunikace se střídači fotovoltaický elektráren
  • automatické odesílání údajů na centrální sběrné místo (na jakýkoliv server)
  • cokoliv co vás napadne a jste to schopni naprogramovat pomocí SDS-C

Výhodou je i možnost vzájemné komunikace zařízení SDS mezi sebou, a tím se dá vytvořit distribuovaná řídící soustava.

Dalším přínosem je možnost majitele zařízení SDS si do zařízení nahrát svou webovou stránku, kterou si celou sám vytvoří. Tato stránka může mít libovolný obsah a design. Praktické využití této funkce je v tom, že si můžete realizovat vlastní ovládací panel pro konkrétní aplikaci (příkladem, program v SDS-C bude řídit termostat, a na vlastní stránce bude možnost si změnit hodnotu cílové teploty, takže s výsledkem bude moct bez problémů pracovat i úplný laik).

Osobní nástroje
Translate