Vítej, Host. Prosím přihlaš se nebo se zaregistruj.
24.04.2026, 21:53:55

Domů Nápověda Vyhledávání Přihlásit Registrovat
 
Fórum k produktům firmy ELSACO Kolín  

+  PROMOS fórum
|-+  FRED - grafické vývojové prostředí
| |-+  FRED - platforma XCom
| | |-+  Dispecink - XCOM - M-Bus zarizeni
0 uživatelů a 1 Host prohlíží toto téma. « předchozí další »
Stran: [1] Dolů Tisk
Autor Téma: Dispecink - XCOM - M-Bus zarizeni  (Přečteno 5461 krát)
anonym
člen

Příspěvků: 33



« kdy: 11.03.2010, 07:11:32 »

Budeme resit ulohu, kdy mame na jedne lince nekolik m-bus mericu a potrebujeme z nich dostavat data na centralni PC. Vybrali jsme k tomu XCOM. Rozhodujeme se, jak ulohu resit. Mate nejaka doporuceni?
Zaznamenáno
libor
moderátor+

Příspěvků: 388



« Odpověď #1 kdy: 11.03.2010, 08:31:04 »

V podstatě jsou 2 metody řešení:

1. XCOM je průchozí a veškerá komunikace se řeší v dispečinku - toto řešení má výhodu v tom, že při nějaké změně se provádí úpravy na jednom místě (centrální PC), nevýhodou jsou dlouhé doby odezvy na komunikaci (např. při rychlosti 300Bd se hravě můžete dostat na 10s na jedno zařízení)

2. XCOM řeší komunkaci s měřiči a data předává na dispečink jiným protokolem - obvykle se vyčítají měřiče s periodou 15 minut, výhodou tohoto řešení je rychlost odezvy v komunikaci s dipečinkem, za nevýhody lze považovat editaci programu ve FREDovi při úpravách na sériové lince nebo (v případě, že XCOM bude měřiče obsluhovat pouze v pravidelných intervatech) nemožnost udělat extra vyčtení, tj. že z XCOMu budu dostávat po určitou dobu (interval vyčítání dat) stejné hdonoty.

Pokud bych si měl vybrat, tak bych volil řešení číslo 2. Jednak je možné změnit aplikaci v XCOMu na dálku (přes TCP) a také některé měřiče dávají na výstup svoje data v určitých časových intervalech (právě výše zmíněných 15 minut), takže nemá ani smysl s měřiči komunikovat častěji (i vzhledem k výdrži jejich baterek). A také proto, že směrem k dispečerskému PC lze použít nějaký "lepší" protokol než je M-Bus (např. Epsnet nebo QQ) a zajistit si tak bezproblémové připojení vizualizace (Reliance, CW, TIRS apod.)
Zaznamenáno

anonym
člen

Příspěvků: 33



« Odpověď #2 kdy: 11.03.2010, 08:47:26 »

Ta druha metoda vypada lepe, takze asi pujdeme touto cestou.
Zaznamenáno
anonym
člen

Příspěvků: 33



« Odpověď #3 kdy: 11.03.2010, 12:06:36 »

Nakonec to budeme realizovat prvni metodou, ale mame jeden problem. Na te lince budou merice tepla od ruznych vyrobcu. Nektere maji klasicky m-bus protokol (hlavicka zacina 0x68) a komunikuji se sudou paritou. A pak je tam nekolik starsich modelu (hlavicka nezacina 0x68), ktere komunikuji bez parity. Jak na to? Je mozne menit nastaveni seriove linky za behu?
Zaznamenáno
libor
moderátor+

Příspěvků: 388



« Odpověď #4 kdy: 11.03.2010, 13:22:47 »

Měnit nastavení portu lze i za běhu, ale žádný z dosavadních modulů v knihovně nic takového nedělá. nejlepší cestou bude vytvoření upraveného modulu na bázi modulu Com2TCP. Přidat mu jeden parametr, tj. parametr pro druhou paritu (takže budete mít např. parametry Parity a ParityMbus) a upravíme stávající kód tak, že mezi řádky:
Kód:

trap_IoMemReadN ((arg1&0xFFFF)+0x140000,(unsigned char*)(ukdmbuffer),length);
trap_PipeWriteN(ComNr*2,(unsigned char*)ukdmbuffer,length);


vložíme test prvniho znaku (tj. typu zpravy) a podle toho nastavíme parametry komunikačního kanálu. Výsledný kód bude vypadat takto:
Kód:

trap_IoMemReadN ((arg1&0xFFFF)+0x140000,(unsigned char*)(ukdmbuffer),length);

// test, jde-li o klasickou M-bus zpravu
if (((unsigned char*)ukdmbuffer)[0] == 0x68)
trap_PortInit(ComNr, Baud, ParityMbus);
else trap_PortInit(ComNr, Baud, Parity);

trap_PipeWriteN(ComNr*2,(unsigned char*)ukdmbuffer,length);

Zaznamenáno

Stran: [1] Nahoru Tisk 
« předchozí další »
Skočit na:  


Poháněno MySQL Poháněno PHP Powered by SMF 1.1.21 | SMF © 2011, Simple Machines Validní XHTML 1.0! Validní CSS!