Jste zde

MiniPLC iDo - nové vlastnosti s novým firmwarem – 1. díl

ido_logo_1.png

Tak po delší odmlce než jsem předpokládal, jsem se dostal k postupnému testování nových vlastností miniPLC iDo, které získalo díky novému firmwaru (v současné době již verze 5.03). Protože je novinek více, rozdělil jsem to do několika částí. Dnes se podíváme na možnost vzájemné ethernetové komunikace několika iDo a rozšířených možností připojení a softwarového použití snímačů a čidel.

Postupem času, jak iDo získává na oblibě, se jej výrobce snaží v rámci možností stávajícího hardwaru doplňovat o nové funkce a vlastnosti, které by uživateli mohli dále zjednodušit jeho práci, nebo které si zákazníci přímo žádají. Inovace moderních elektronických zařízení se obvykle provádí nahráním nového firmwaru, který se již nejen dodává v nových iDo, ale každý stávající uživatel si ho může stáhnout z internetu a nahráním do svého iDo nové vlastnosti doplnit. I když již byl teď nejnověji vydán nový firmware iDo_Net ve verzi 5, v tomto článku se ještě vrátíme k prakticky významným vlastnostem, které naše dobře známé iDo získalo již s nahráním firmwaru verze 4.05. Samozřejmě jsou také k dispozici i u nejnovějšího firmwaru 5.03 (http://hw.cz/ido-53), který je k dostupný na HW serveru od 16.4.2009.

V tomto článku se dočtete o následujících nových vlastnostech:

  • Vzájemná síťová komunikace několika iDo
  • Podpora připojení 1-Wire snímačů vlhkosti
  • Libovolné programové pojmenování 1-Wire snímačů

 

Zvláště první vlastnost vzájemné síťové komunikace několika iDo je velké "+" pro potřeby vytváření tzv. plně distribuovaných řídídích systémů, kdy aplikace, systém nebo úloha není řízena jedním centrálním "mozkem", ale více vzájemně komunikujících "mozečků", kde každý v řetězci zastává předem definovanou úlohu. Tímto způsobem tak lze i z velmi jednoduchých stavebních prvků tzpu miniPLC iDo vytvořit i rozsáhlý a výkonný řídící systém provádějící mnoho úkonů.

Vzájemná komunikace mezi iDo

To co neuměly iDo s předchozími verzemi firmwaru, tedy možnost vzájemné komunikace několika iDo propojených ethernetem, tak to již od verze 4.05 umí. Navíc je to z pohledu uživatele velmi snadno naprogramovatelné, podobně jako dalších funkce iDo.

Tento režim obnáší možnost vzájemného volání proměnných programů běžících v iDo skoro tak, jako by byly přítomny přímo v paměti daného zařízení. Například máme po ethernetu propojeny dvě iDo obyčejným UTP křízovým kabelem s konektory RJ-45, kde jedno má funkci měřícího zařízení, do kterého jsou připojeny snímače, a druhý ve funkci akčního členu, které bude ovládat elektomotor, topení, větrák apod. „Akčí“ iDo si pak bude prostřednictvím ethernetu a protokolu XML získávat aktuální stavy všech hodnot a proměnných z měřícího iDo, včetně informací i stavech vstupů i naměřených teplotách připojených snímačů (teploměrů a vlhkoměrů). Komunikovat může libovolné množství iDo vzájemně připojených (propojených) se stejném subnetu například přes switch či router, tzn. všechny iDo budou mít např. IP adresu 192.168.1.xxx.

Implementace vzájemné komunikace v programech je velmi jednoduchá, stačí v programu definovat proměnnou, jejíž jméno bude začínat jménem jednotky, jejíž proměnná vás zajímá, tečkou a jménem proměnné ve vzdálené jednotce. Na straně vzdáleného iDo přitom není třeba psát ani nastavovat vůbec nic, protože celý proces je zcela automatický. Například syntaxe "out.1 = ovladac.in.1" způsobí, že výstup jedna bude kopírovat stav vstupu jedna na jednotce s názvem ovladac (název se zadává pomocí programu UDP_Config). Aby bylo možné tento trik v programu využít, je nutné nejdříve definovat ty proměnné, které nás doopravdy zajímají, aby tedy předchozí příklad fungoval musí být znění celého programu třeba následující:

prog(

ovladac.in.1 := 0,
ovladac.in.2 := 0,
out.1 = ovladac.in.1,
out.2 = ovladac.in.2

)

Omezení komunikace

Celý mechanismus funguje za následujících předpokladů:

  • Jednotky se nacházejí na stejném subnetu ethernetu
  • Mají adresu platnou v tomto subnetu (může být pevná i přidělená DHCP)
  • Jméno sdílené proměnné nepřesahuje 16 znaků
  • Výměnný XML soubor nepřesahuje 1500 B (velikost a strukturu souboru je
    možné ověřit na adrese http://a.b.c.d/cgi-bin/device.xml

 

Praktický jednoduchý příklad, který jsem vyzkoušel:

Na iDo č.1 s uložným názvem „zdroj“ (IP adresa: 192.168.1.125) jsem napsal, uložil a spustil následující program:

prog(

vystup1 = (in.1 || in.2),
vystup2 = (in.3 || in.4),
out.1=vystup1,
out.2=vystup2

)

Na iDo č.2 s uložným názvem „cil“ (IP adresa: 192.168.1.127) jsem napsal, uložil a spustil následující program:

prog(

zdroj.in.1:=0,
zdroj.vystup2:=0,
out.1=zdroj.in1,
out.2=zdroj.vystup2

)

 

Obrazovka webové stránky cílového iDo, které čte proměnné vstupu I1 a proměnné vystup2 ze vzdáleného zdrojového iDO

Popis funkce:

Pokud takové dvě iDo vzájemně propojíme křížovým ethernet kabelem (crossed wired UTP kabel s konektory RJ-45), pak například při sepnutí tlačítka připojeného na vstup I1 u iDo č.1 (zdroj) se přepne výstupní relé O1 na iDo č.2 (cil). Podobně, když se sepnou tlačítka na vstupem I3 nebo I4 u iDo č. 1 (zdroj), přepne se výstupní relé na iDo č.2 (cil). Takto lze z jednoho miniPLC iDo volat jakékoliv proměnné druhého iDo, ať již jde o klasické proměnné definované jako „promenna=hodnota“ nebo nastavitelné proměnné definované v programu jako „usr.promenna:=hodnota“.

Jak je z triviálního příkladu patrné, ke vzájemné síťové komunikaci není potřeba nic složitého programovat a je tak dodržena fylozofie iDo o jednoduchém programování pro každého. I když po vyřknutí pojmu vzájemná komunikace více PLC si většinou každý představí problematické zprovozňování a programování, zde je to opravdu zvládne každý.

Podpora 1-Wire snímačů vlhkosti a libovolné pojmenování

Přechozí firmwary (verze 3.xx) umožňovali připojit jen některé teplotní 1-Wire senzory Dallas, které navíc nebylo možné pojmenovat vlastním jménem, ale jen vybrat jedno z 5 přednastavených anglických názvů (Inside, outside apod.). Od firmwaru verze 4.05 je již možné nejen velké množství 1-Wire teplotních čidel Dallas, ale i univerzální snímače vlhkosti a teploty (HW RH). Od dalších verzí firmwaru již bodou podporovány i další snímače a to nejen pro měření teploty či vlhkosti, ale různé A/D převodníky a typy snímačů pro měření dalších veličin. Kompletní seznam pak vždy najdete na HW serveru na webové stránce umožňující stažení poslední verze firmwaru – momentálně je nejnovější verze 5.03 (http://hw.cz/ido-53).

Navíc je možné již v iDo v tabulce aktuálně detekovaných (připojených) snímačů každému přiřadit vlastní označení (například v mém případě byt, slunce, stin), kterým si pak konkrétní čídlo volá z uživatelem vytvořeného iDo programu (například v mém případě „tm.Byt.Temp.State“ pro zjištění aktuálního stavu porovnání aktuálně naměřené teploty se zadanými požadovanými limity).

Jednoduchý příklad připojených 3 senzorů

Pro jednoduchou praktickou ukázku jsem připojil 3 snímače, 2x pouze čidla teploty umístěné venku na sluném místě a ve stínu a 1x kombinované čidlo vlhkosti / teploty umístěného u mě v bytě.

Jak je patrné na následujícím obrázku obrazovky iDo stránky s detekovanými snímači, pojmenoval jsem si je jako Slunce, Stin, Byt. Dále jsem po potřeby následného jednoduchého monitorovacího prográmku zadal MAX a MIN limity (viz obrázek níže). V praxi pak iDo automaticky porovnává aktuálně naměřenou teplotu (měří každých 12 sekund) se zadaným limitem každého čidla a podle toho mění obsah políčka „State“ na: OK, Low, High. V iDo programu pak lze tyto stavy číst jako stav proměnné teploty „tm.nazev_cidla.Temp.State“ s vlhkosti „tm.nazev_cidla.Hum.State“ , přičemž se nepředávají zobrazené texty, ale následující číselné hodnoty:

  • Stav „OK“ = hodnota „2“
  • Stav „Low“ = hodnota „3“
  • Stav „High“ = hodnota „4“

 

Tabulka detekovaných připojených 2 snímačů snímačů teploty + 1 snímače vlhkost/teplota (viz foto)
pojmenované jako "Slunce", "Stin", "Byt" s nastavenými limitními hodnotami a

Pak například lze napsat takový to 5ti řádkový prográmek vyhodnocující stavy teploty uvedených 3 čidel a podle toho přepíná výstupní relé iDo (O1 a O2):

prog(

tepvenku = iif (tm.Slunce.Temp.State==3, 1, tepvenku),
tepvenku = iif (tm.Stin.Temp.State==3, 1, tepvenku),
tepbyt = iif (tm.Byt.Temp.State!=2,1,0),
out.1 = tepvenku,
out.2 = tepbyt

)

Praktická poznámka (vyzkoušel jsem):

Při zadávání jména a MAX a MIN linitů jednotlivým detekovaných snímačů v tabulce se nejlépe postupuje tak, že vždy myší vyberete příslušné políčko a napíšete do něj údaj, a když to už vše máte, kliknete na „Set“ a následně „Save“. Tím se vám vše zadané do iDo uloží a zprovozní. Pokud chcete vydět v tabulce aktuální naměřené hodnoty, můžete zobrazení tabulky nejlépe updatovat stiskem kliknutím na tlačítko „Save“.

 

Závěr

Novinky v oblasti komunikace a propojení několika iDo nebo v připojení snímačů jsou jen část toho, co dalšího teď nově iDo umí. Příště se podíváme na XML výstup proměnných běžícího programu a jeho použití pro jejich vizualizaci na straně uživatele.

Více podrobných informací o iDo pak najdete v pdf manuálu iDo-manual.pdf a v přehledu novinek poskytující nový firmware verze 5.03 (http://hw.cz/ido-53). MiniPLC iDo lze pak jednoduše zakoupit v internetovém obchodě HW serveru = HW shopu.

Antonín Vojáček

DOWNLOAD & Odkazy

Fotogalerie miniPLC iDo

  

  

  

  

Hodnocení článku: 

Komentáře

Zajímalo by mě, zda-li lze zvýšit počet prvků na 1-wire sběrnici, případně, lze-li ovládat 1-wire I/O prvky.

Počet 1-wire prvku je omezen softwareove, ale zatim neplanujeme podporu I/O prvku. Resp. neni problem ji pridat na zaklade realne aplikace - objednavky

Dobrý den, - uvádítě, že úpočet prwků je omezen SW, znamená to snad, že se dá za poplatek rozšířit, nebo je omezen kapacitou?

Chtěl bych se zeptat jestli neplánujete nějaký podrobnější polopatický článek včetně příkladů ohledně úpravy webového rozhraní iDo podle vlastních představ.

To by velmi zaujimalo aj mna, mam totiz s iDO velke plany, a nebudem proti ked sa niekde najde navod ako vyrobit vlastny FIRMWARE. Kludne to moze byt aj zlozite :-)

Co ty úpravy webového rozhraní iDo podle vlastních představ. Neplánujete něco o tom napsat?
Děkuji
Honza

Dobrý den.
Jsem trochu netrpělivý ale rozhodně Vás nechci honit. Jak se to má s tím článkem? Nakouknul jsem do manuálu ale vůbec z toho nejsem chytrej. Možná by to spíše chtělo psát více polopaticky protože manuály jsou většinou pro lidi kteří o tom moc neví.
Děkuji předem za odpověď.
Honza

Dobrý den.
Dnes jsem se na webu hw.cz dočetl o produktu Butler. Příjde mi to jako takové další zařízení jako je iDo s trochu jinačím ovládáním a programováním. Není to špatný počin hlavně to maticové programování.
Osobně bych ale uvítal a spíše šel cestou zdokonalování a rozšiřování SW výbavy a funkcí nebo HW doplňků již hotového iDo, které již prošlo několika fw updaty, třeba možností použití maticového programování a nebo rozšíření počtu 1Wire vstupů či externího ethernetového řešení dalších výstupů/vstupů. Aby se potom nestalo že budete mít mnoho takových podobných udělátek které však nebudou dotažené k dokonalosti.
Neberte to jako výčitku ale spíše něco jako prosbu či námět k dalšímu rozvoji iDo.

Jen ještě trochu upozornění na chybu. V článku o Butleru píšete o možnosti připojení 4 1Wire čidel a v popisu na shopu píšete o 10 1Wire čidlách.

Vyvoj iDo pokracuje (viz iDo Pro, IOmax, probiha implementace systemu IQRF pro tvorbu bezdratovych siti a rada dalsiho), ale uvedomte si, ze se jedna o diametralne odlisne zarizeni a vase srovnani je podobne, jako byste srovnaval Smarta s autobusem - oboji ma kola a vozi lidi.

iDo a to v jakemkoliv provedeni je de facto miniPLC. Tedy co si sam nenaprogramujete, tak proste nedela. Chcete sepnout vystup na zaklade teploty? Napiste si program. Chcete poslat maila? napiste si program. Pokud neumite C jste proste v koncich.

Proti tomu ma Butler primitivni ovladani. Co potrebujete, to si "naklikate". Na druhou stranu ale dela jen to co dela a nikdy vic umet nebude. Nikdy nedokaze vytvorit slozitejsi podminky, nikdy nebude parsovat XML, nikdy nebude podporovat customizaci ci jiny protokol nez HTTP a SMTP.

Butler i Ido maji zkratka odlisne zakazniky a odlisne urceni.

Dekuji za upozorneni na chybu - opraveno. Chyba vznikla omezenim poctu cidel ve vyslednem produktu

Ano ten základní rozdíl jsem pochopil. Nevím jak by to bylo reálně možné skloubit dohromady ale myslel jsem to tak že by nebylo špatné kdyby iDo mělo možnost právě takového jednoduchého ovládání jako má Butler kdyby bylo potřeba. Třeba v menu by bylo na výběr "iDo nebo Butler". Tím by jste měli dá se říci dvě zařízení v jedné krabičce a volbu co chce kdo používat by už bylo na něm samotném. HW základ by zůstal jeden a tím by se i ušetřilo na výrobě a určitě by bylo plodnější se starat o FW jednoho zařízení než dvou. Ostatně i cena obou zařízení je cca stejná. Tím by případné vylepšené iDo získalo více zákazníků byť s odlišnými potřebami.
Ale jak jsem psal - nevím jak by to bylo možné skloubit dohromady takže to berte jen jako názor.