Skocz do zawartości

ESP - IDF odczyt licznika energii za pomocą MODBUS RTU


_LM_

Pomocna odpowiedź

5 godzin temu, ethanak napisał:

Kiedyś musiałem poprawić jakis kod gdzie nie tylko komentarze, ale i wszystkie nazwy były po turecku

To gorzej niż kooperacyjne zmienne pomocnicze (obliczeniowe) typu d, a, t itp. które fajnie się sprawują w krótkich funkcjach. 

Link do komentarza
Share on other sites

1 godzinę temu, rafal220 napisał:

gorzej niż kooperacyjne zmienne pomocnicze (obliczeniowe) typu d, a, t

Wybacz... ale co Ty wiesz o kooperacyjnym programowaniu w C/C++?

Link do komentarza
Share on other sites

40 minut temu, ethanak napisał:

Wybacz... ale co Ty wiesz o kooperacyjnym programowaniu w C/C++?

Pisałem o zmiennych kooperacyjnych. Czyli takich których nazwy możesz do woli powtarzać w funkcjach. Przyśpiesza to analizę tego co się dzieje w funkcjach. Uważam, że nielogicznym jest wymyślanie egzotycznych nazw do wszystkich zmiennych we wszystkim. 

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

@ethanak Tak wiem. A jak się inaczej mówi na zmienną lokalną której nawa powtarza się w n funkcjach np. "a" chociaż w różnych funkcjach pełni różną rolę?  Używasz jej tylko do samych działań w funkcjach. Lokalna zmienna kooperacyjna? 

Link do komentarza
Share on other sites

Zmienna lokalna nie istnieje poza funkcją. Mam nadzieję że wiesz co to przestrzeń nazw a jak nie to najwyższy czas się dowiedzieć - choćby po to, aby nie śmiecić w wątkach dotyczących tematów których nue rozumiesz.

A jak Twoja funkcja przekroczy pierwszy tysiąc instrukcji to wtedy pogadamy na temat nazw.

Link do komentarza
Share on other sites

4 minuty temu, ethanak napisał:

A jak Twoja funkcja przekroczy pierwszy tysiąc instrukcji to wtedy pogadamy na temat nazw.

w poradniku czytałem, aby nie tworzyć drugich funkcji, tylko o ile to możliwe jak najkrótsze funkcje, albo dzieląc dłuższe funkcje na mniejsze. Zgodnie z tymi zaleceniami nie powinno się tworzyć aż tak długich funkcji na 1000 linijek kodu. 

6 minut temu, ethanak napisał:

Zmienna lokalna nie istnieje poza funkcją

Dlatego daje to fizyczną możliwość stosowania tzw. dubli takich samych nazw zmiennych które nazwałem kooperacyjnymi albo obliczeniowymi czy też pomocniczymi. To jest taki typ zmiennych dla których wymyślanie azjatyckich nazw jest po prostu bez sensu. 

No dobra starczy tego offtopu. 

 

Link do komentarza
Share on other sites

36 minut temu, rafal220 napisał:

No dobra starczy tego offtopu.

Jestem tego samego zdania 

Link do komentarza
Share on other sites

@_LM_ szkoda że późno przeczytałem, kilka miesięcy temu robiłem modbus RTU na USB CDC ACM. Co prawda na STM ale, też zdałem sobie sprawę że biblioteki są zbyt przekombinowane. 

U mnie skończyło się to na przeczytaniu jak działa najpierw modbus ASCII, a później RTU. Ramka danych jest bardzo prosta do wypełnienia, ewentualnie policzenie CRC może być trudniejsze. Później obsługa kilku kodów funkcji i zrobione. Ta strona była przy tym bardzo pomocna https://ozeki.hu/p_5878-mobdbus-function-code-3-read-multiple-holding-registers.html

  • Pomogłeś! 1
Link do komentarza
Share on other sites

(edytowany)

@Gieneq dzięki, link się przyda 🙂 ogólnie komunikację uruchomiłem. Mam jeszcze problem z konfiguracją deskryptora gdyż żeby nie wpisywać każdego cida osobno chcę pogrupować parametry. Np: trzy pierwsze rekordy to napięcia poszczególnych faz, następne - prądy itd. To się odczytuje na co wskazują dane z analizatora stanów logicznych. Problem jest z dostępem do tych danych z poziomu funkcji. Jak nic nie wymyślę w rozsądnym czasie to będę dopytywał dalej co z tym zrobić 

Edytowano przez _LM_
Link do komentarza
Share on other sites

(edytowany)

Trochę się z tego worklog robi 😄 poniżej kolejne odczyty
 

[No.: 4  ]********************************
VALUE: 0  238.835693   	// U L1 - N (V)
VALUE: 1  0.000000		// U L2 - N (V) 
VALUE: 2  0.000000		// U L3 - N (V)
VALUE: 3  0.543229     	// I L1		(A)
VALUE: 4  0.000000     	// I L2		(A)
VALUE: 5  0.000000		// I L3		(A)
VALUE: 6  100.351387   	// P L1		(W)
VALUE: 7  0.000000		// P L2		(W)
VALUE: 8  0.000000		// P L3		(W)
VALUE: 9  129.742355	// S L1		(VA)	
VALUE: 10  0.000000		// S L2		(VA)
VALUE: 11  0.000000		// S L3		(VA)

Podłączona ładowarka i lutownica transformatorowa 100W Zostaje opakować wyniki w jakiś strawny format (JSON?) i wysłać w świat 🙂

Edytowano przez _LM_
  • Lubię! 1
Link do komentarza
Share on other sites

Dzisiaj dostałem nowe zadanie: odczyt parametrów kompensatora mocy biernej. Choć tam jest dostępny CAN może łatwiej by było skorzystać 🤔

Link do komentarza
Share on other sites

(edytowany)

Ogólnie problem z MODBUS to, to że mimo iż jest standard, to ilu producentów tyle jego implementacji. Każdy robi to praktycznie po swojemu. Czasami programowanie to 5 minut, innym razem rozgryzienie co miał producent na myśli to 2 godziny. Tak naprawdę wszystko rozbija się o to jak dobra mamy dokumentacje od producenta.

Niby tylko standardowy MODBUS, a ile opcji.

47757002_Nibymodbus.thumb.jpg.8490c0f11a53cf7002d147a14cf8340c.jpg

Edytowano przez BlackJack
  • Lubię! 2
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.