tak jsem zase přemýšlel, a ještě bych potřeboval poradit:
Cíl zařízení: Slave zařízení, budou něco řídit a Master zařízení bude monitorovat stavy a měnit parametry. Slave zařízení 8bit nebo ARM Cortex M0, master zařízení ARM Cortex M0 nebo nějaký board s ARMem+Linux
Myšlenka: na každém Slave zařízení si staticky alokovat pamět (např pole bytů), všechny proměnné namapovat do tohoto pole. Obdobně to udělat i na Master zařízení ale vícekrát pro každý Slave. Když to shrnu, tak každé zařízení bude pracovat s proměnnými, které se budou namapovány v poli.
A teď zrovna přemýšlím, jak ty “pole” mezi Master a Slave zařízením synchronizovat. Když to přeženu 32 zařízení, Slave RAM 16KB, vzdálenost do 200m asi i do 100m.
Napadlo mě:
-
přetáhnout celé pole v kuse- ale jelikož bude RS485 udělaná s UARTU a pokud se nepletu tak to je max 115200Bd (cca 14KB/s) tak to bych měl možná na MASTERU aktuální informace tak 2x za minutu v tom nejhorším případě, když pominu to že by to bylo pomalé, tak by to bylo asi i neefektivní…to mi příjde tak vhodné na začátku, kdy se zařízení zapne
-
na MATER i SLAVE zařízeních mít frontu s požadavkama co se změnilo a postupně to vyřizovat, ale podle mě by to chtělo nějaký mechanismus, který by poznal že se změnila hodnota proměnné a na základě toho přidal požadavek do fronty…a tohle právě vůbec netuším jak udělat…jedině snad mít nějakou specialní funkci pro zápis dat, která by kontrolovala jestli, došlo ke změně nebo ne a když tak by se rovnou vytvořil požadavek na synchroniaci
-
všechny zařízení budou MASTER, data do paměti budu zapisovat přes speciální funkci, která vyhodnotí jestli se data změnila nebo ne a v případě že ano, tak zařízení zahájí komunikaci a pošle aktualizující paket konkrétnímu zařízení, tohle mi příjde jednoduché na obsluhu, ale nejhorší na komunikační protokol
máte někdo nějaká tipy a rady?