Sofar G3 + chint DTSU666 - odczyt danych przez logger ModbusTCP

Przerobiłem flow, mam teraz jeden adres ip w podłączonych klientach, ale nadal dostaję timeout z gettera.

To zobacz czy każdy z osobna działa solo.

Ale mam tylko jeden getter teraz i z tego jednego dostaję timeouty

…ale kilka urządzeń!!.. pytaj tylko jedno.
Używasz ModbusFlexGetter czy ModbusGetter.
Dopóki nie zobaczę co tam wymyśliłeś nic więcej nie wskóram.

ModbusFlexGetter

pytam jedno, przed odpytaniem następnego mam 200ms opóźnienia
w załączeniu flow odpowiedzialny za odczyt urządzeń
NR - F00 - ModbusRead - 2023-05-30.json (19,3 KB)

Najpierw tylko DTSU… tylko KTX … tylko VCX. Okaże się, który nie działa i zawęzi się zakres poszukiwań.
Można spróbować wydłużyć Queue Delay do 10ms i taktowanie powyżej 10sek - teraz ustawione masz dłuższe timeouty niż sam timestamp (2sek).

Ok, będę testował,

@RobinI30 zwiększyłem odstępy między odczytami urządzeń do 400ms i jest ok, ani jednego timeout’u :slight_smile: wielkie dzięki za pomoc.

Ze względu, że nie bardzo czujesz timing to ustawione przez Ciebie czasy są niespójne.
Przy 2sek odświeżania jeździsz na brzytwie :wink: …jeśli raz coś się wyłoży, transmisja może się już nie odbudować.

Wiem że czasy są bardzo krótkie, ale przynajmniej na razie muszą takie być, steruje z NR grzałkami CWU gdy skaczą napięcia i jak na razie tylko to w miarę przyzwoicie działa. Ani gniazdka z tasmotą czy przekaźniki nadnapięciowe F&F nie działały, bo albo falownik się wyłączał albo grzałki brały masę energii i woda za szybko się grzała. Jestem na etapie budowy magazynu energii około 10kWh, oraz magazynu ciepła w postaci bufora 1000l, myślę też nad kupnem eko-oze-pv ale jest trochę drogi. Zobaczymy jak to wyjdzie.

-edit-
@RobinI30 wszystko ładnie chodziło do wczoraj :frowning:. NR przestał mi czytać sofara, przedtem gdy miałem 3 gettery, dostawałem czasem timeout, ale nigdy nie stawały odczyty, wydłużenie czasów nie pomaga. Gdy restartnę nod red chodzi przez jakiś czas i staje, ale zauważyłem dziwną zależność. Odpaliłem programik Radzia żeby sprawdzić czy to coś jest z efinem czy z samym NR. Programik radzia odczytuje sofara bez problemu co 10ms i gdy zaczynam czytać sofara nagle NR też zaczyna chodzić.

… a nie mówiłem :slight_smile:

Których czasów ? …trzeba to robić z głową. Wydłużanie timeoutów nic nie da bez regulacji częstotliwości odczytów. Pierwotny setup u Ciebie zakładał, że czytasz co 2sek z timeoutem 3sek
W efekcie dale to, że zanim zostanie obsłużony pierwszy błąd, kolejne stają się już przeterminowane a dodatkowo cały czas do kolejki dopychasz kolejne. Zdublowane (takie same) polecenia w kolejce również traktowane są jako błąd i masz efekt “kuli śnieżnej”.
Po cholerę Ci znajomość wszystkich parametrów co dwie sekundy, gdy ich zmiana następuje co kilka minut (produkcja, energia, temperatura, oporność izolacji itp…itd)? Niektórych pewnie w ogóle nie używasz i pewnie interpretacji nie rozumiesz. To co jest naprawdę ważne odczytuj częściej a inne rzadziej.

Jakiś efekt uboczny, którego wytłumaczyć za eksperymentu myślowego nie potrafię… powinno być jeszcze gorzej ponieważ pracuje dwa niesynchronizowane modbus master.

teraz przestało działać całkiem, NR nie czyta sofara chociaż radzio odczytuje
tylko co się zmieniło skoro wcześniej to chodziło i nie mam pojęcia co teraz zrobić żeby przywrócić komunikację w NR

Zacząć od początku od sofara :slight_smile: …testować i rozszerzać zakres odczytów o kolejne urządzenia.
Mogę również zdalnie przez AnyDeska.

udało mi się przywrócić komunikację, zwiększyłem w efinie bufor z 512 do 1024

czyli podzielić np adres x480 na kilka sekcji i odczytywać napięcia osobo, prądy osobno z różnym opóźnieniem?

Pokaż jeszcze raz jak to napędzasz, coś mi nie podoba gdy mówisz o opóźnieniach. (wystarczy obrazek)

Tak… podziel sobie na odczyty krytyczne i informacyjne czytane np. co min, wg stopnia ważności a nie na urządzenia.


chodzi mi o to co zakreślone
i od wczoraj mam ustawiony odczyt co 4s

Teoretycznie 2sek to “hektar” czasu dla takiej transmisji… praktycznie jak widać nie i zapychał się bufor.
Każdy z odczytów generuje różny transfer, postaraj się to tak podzielić aby ilość przesyłanych danych była w miarę równomierna. Można to w przybliżeniu oszacować po ilości quantity w funkcjach.

ok, będę to przerabiał, ale teraz zauważyłem że to opóźnienie w ogóle nie działa, ustawiłem do testów opóźnienie dla sofara na 8 sek. a odczyty nadal mam co 4s.
Mogę dodać drugi trigger i osobno odpalać odczyt dla liczników i dla sofara?

–edit–
raz działa a raz nie, mam odstęp miedzy odczytami dla sofara kilka razy 4s, a później kilka razy 8s

…bo co 4 sek uruchamiasz nowy 8mio sek delay :wink: i to się kolejkuje… praktycznie tylko pierwszy jest opóźniny o 8sek. Taki sposób powoduje wyciek pamięcie bo robi Ci się sterta oczekujący na realizację delay-ów.

Postaram zrobić Ci licznik pierścieniowy który będzie to bezkolizyjnie taktował. Przy osobnych triggerach będzie taki momnet, że się zsynchronizują i zrobi się “korek”.

super dzięki :smiley:

Zrób co potrafisz, tylko podaj mi czasy, które by cię interesowały.