PROMOS fórum

FRED - grafické vývojové prostředí => FRED - platforma PL2 (CCPU) => Téma založeno: libor 14.05.2013, 11:56:29



Název: CCPU-03 a JSD600
Přispěvatel: libor 14.05.2013, 11:56:29
Mám měřič tepla JSD600 (http://www.smartbrno.cz/produkty/jsd.html), který by mě komunikovat protokolem Modbus, ale nedaří se mi z něj vyčíst hodnoty. Poradíte?



Dotaz zaslaný mailem (viz výzva (http://forum.elsaco.cz/index.php?topic=13.msg112#msg112)).


Název: Re: CCPU-03 a JSD600
Přispěvatel: libor 14.05.2013, 12:10:54
Měřič tepla JSD600 komunikuje buď protokolem, který nazývají Modbus ale není Modbusem (částečně z něj vychází, ale jinak není s Modbusem kompatibilní) nebo zkráceným protokolem, který je potvrzovaný.

V příloze je projekt, který pomocí modulů SerialComm vyčítá z měřiče JSD600 všechny hodnoty, které jsou ve zkráceném protokolu dostupné (postupně po 4 hodnotách). Komunikace probíhá po RS-485 (COM1 na CCPU-03), rychlostí 9600Bd/8bitů/žádná parita, adresa měřiče je nastavena na univerzální hodnotu 241. Dvojice modulů SerialComm jsou tam z důvodu potvrzování paketů (CCPU-03 vyšle dotaz, JSD600 mu potvrdí příjem hodnotou 0x06 a vzápětí odešle i data, tento paket musí CCPU-03 opět potvrdit honotou 0x06, kterou vysílá vždy druhý SerialComm z dvojice).

Hodnoty posílané měřičem jsou 4bajtové float hodnoty, které modul SerialComm neumí přímo zpracovávat, takže výsledek musí být před další použitím zpracován přes nějaké float hradlo (v projektu Aplus).

CCPU-03 tak vyšle 5x stejný dotaz, aby postupně zobrazilo všech 20 hodnot, které se protokolem dají vyčíst. U přenosu nelze kontrolovat CRC, protože to by nyní (verze FW 3.032) znamenalo úpravu FW.