Jste zde

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

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 mohly 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í o 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 to opravdu zvládne každý.

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

Přechozí firmwary (verze 3.xx) umožňovaly 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 pro 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čů teploty + 1 snímače vlhkost/teplota (viz foto)
pojmenované jako "Slunce", "Stin", "Byt" s nastavenými limitními hodnotami

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 limitů 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 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: