Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

[Solved] Odczyt i konwersja Modbus

Liquid_Ocelot 14 May 2020 00:59 1455 7
  • #1
    Liquid_Ocelot
    Level 9  
    Witam, potrzebuję porady czy da się coś z tym zrobić, czy w ogóle jest sens się bawić, a rozwiązanie leży na podłodze i trzeba jedynie je podnieść, mianowicie mam dość stary przelicznik (sumator), firmy Metronic, model FP-210. W moim przypadku jest on podłączony do wodomierza, wodomierz ma wyjście impulsowe, do którego podłączony jest Metronic. W taki sposób widać lokalnie jaki jest aktualny przepływ oraz sumę "nabitych" metrów sześciennych.

    Metronic ten ma port RS485, transmisja leci w ModBus ASCII, a co za tym idzie chciałbym mieć odczyt zdalny tego wskaźnika, problem leży w tym, że SCADA z której korzystam nie dogada się z Metronicem z powodu braku wsparcia dla ModBusa ASCII. Udało mi się dogadać zdalnie (na stole) z takim FP-210 poprzez program Hercules. Zapytanie o aktualny przepływ wygląda następująco:
    <ESC>81D<CR>
    Tutaj wartość 81 to adres urządzenia
    Zapytanie o wartości liczników (są dwa) wygląda tak:
    <ESC>81L<CR>
    W załącznikach wrzuciłem screeny z odpowiedziami z FP-210.
    Zaznaczona w czerwonej ramce wartość "197.8" w pliku "1_flow" to aktualny przepływ, zaś dwie ramki w pliku "2_totaliser" to wartości liczników pierwszego i drugiego ("0000130952").

    Tutaj zaczynają się schody, otóż czy jest możliwość odczytywania tych wartości co na przykład 2 minuty, przekonwertowania tych odpowiedzi w locie tak, aby otrzymać tylko to co jest zaznaczone prostokątami i końcowo wyrzucić te wartości jako rejestry w ModBus TCP do odczytania przez urządzenie nadrzędne? Mam nadzieję, że da się zrozumieć o co mi chodzi....
    Odkryłem ostatnio oprogramowanie zwane Node-Red i pomyślałem sobie, że może dałoby się zrobić tak, aby napisać program w tym Node-Red, który będzie odpowiadał za odczyt i konwersję danych ze wskaźnika (czyli będzie masterem dla FP-210), a jednocześnie wrzuci te dane (już po konwersji, jako surowe liczby) na swoje rejestry Modbusowe i będzie urządzeniem typu slave dla mojego PC, a wtedy mógłbym zrobić odczyt w SCADA po ModBus TCP.

    Mam na testy malinkę w wersji 4 oraz konwerter RS485<->USB.
    Z samym programem Node-Red już trochę popracowałem, udało mi się już odczytać inny wskaźnik po ModBus RTU. Jedynie co, to trzeba jakoś zmusić ten program do tego, aby wystawił zapytanie jako <ESC>81D<CR> oraz <ESC>81L<CR> i skonwertował do surowych liczb....
    Najlepiej, gdyby wystawił te dane jako Input Registers 64bit


    Widziałem, że są konwertery ModBus ASCII na ModBus RTU, kupiłem dwa na próbę, ale nic to nie dało i zwróciłem je z powrotem. Wymiana tych wskaźników na razie nie wchodzi w grę, ponieważ sytuacja jest jaka jest i zmusza człowieka do znalezienia możliwie najtańszego rozwiązania, do tego lokalnie musi być widoczny aktualny przepływ oraz stan liczników.

    Mam nadzieję, że opisałem mój problem w miarę klarownie, jeżeli coś dałoby się z tym zrobić, to byłbym zadowolony. Szukałem jakichś informacji w internecie, ale nikt chyba jeszcze nie spotkał się z taką zagwozdką. Może jest jeszcze inny sposób na osiągnięcie zadowalającego efektu i niepotrzebnie kombinuję?
  • #2
    Anonymous
    Level 1  
  • #3
    xury
    Automation specialist
    Jak kolega wyżej napisał uważam, że za bardzo kombinujesz.
    Ale oczywiście, jest możliwość odczytu i konwersji w node-red poprzez np. serial in/ out
    Można też pokusić się o napisanie rules w wyżej wspominanym Tasmota Polecenia Serialsend i odbieranie Serial receive.
    Generalnie prosta sprawa. Trzeba tylko odpowiednio przeparsować odbierane dane.
    https://tasmota.github.io/docs/Commands/
    Jednak też bym optował o wywalenie FP-210 i zliczanie impulsów bezpośrednio przez jakiś moduł oparty na ESP8266.
    Można potem wysłać odebrane dane poprzez mqtt do node-red, a tam to już hulaj dusza.
  • #4
    Liquid_Ocelot
    Level 9  
    Dziękuję bardzo za odpowiedzi
    Obecnie wywalenie FP-210 jest nie możliwe, takich wskaźników trochę jest u nas, za to mam kilka wolnych ESP8266, można się pokusić o zbudowanie jakiegoś układu do zliczania impuslów, jednakże dalej musi być zachowana opcja lokalnego wyświetlania stanu liczników oraz aktualnego przepływu... Myślę, że spróbuję coś sklecić z Node-Red przez opcję Serial In/Out, a jak nie, to spojrzę w stronę Tasmoty (ewentualnie w razie czego będę pisał o pomoc ;] ), a jak jeszcze nie, to zostawię temat w spokoju i będę musiał zorganizować wymianę wszystkich FP-210 na coś innego, co spełni moje oczekiwania.
  • #5
    Anonymous
    Level 1  
  • #6
    Liquid_Ocelot
    Level 9  
    Erbit wrote:
    Kolega nadal skrywa w ogromnej tajemnicy o co chodzi. A szkoda.

    Jest to wodomierz, zlicza ile metrów wody przepłynęło przez rurę, co tu dalej wyjaśniać...

    Erbit wrote:
    Używanie ESP do odczytów z FP-210 to przerost formy nad treścią no ale nie wiedząc o co chodzi trudno jest cokolwiek więcej doradzać. Być może usunięcie FP-210 jest niemożliwe z powodów formalnych. Do wspomnianego ESP można użyć wyświetlacza i Tasmota też to obsłuży, poza tym nie zapominajmy, że można te dane "gdzieś wysłać".

    Nie opłaca się dobierać wyświetlacza do ESP, koszta rosną, w takim wypadku wolę zlecić wymianę wodomierzy na takie, które obsłużą nakładkę M-Bus, np. firmy Apator i zamontować całość razem. FP-210 to bardzo stary wskaźnik, dlatego chciałbym minimalnym kosztem sprawić, aby można było odczytywać zdalnie to urządzenie, oszczędzi nam to czasu przy przeprowadzaniu odczytów tygodniowych....
  • #7
    krzbor
    Level 25  
    Jeśli RS485 ma pozostać, to najlepszym rozwiązaniem jest połączenie go do ESP8266. Na elektrodzie jest DIY Konwerter TCP-IP/RS485 ESP8266. Urządzenie to jest konwerterem, ale po zmianie programu można dorobić odczyt danych i okresową wysyłkę.
  • #8
    Liquid_Ocelot
    Level 9  
    Dziękuję wszystkim za pomoc i nic nie wnoszące posty. Napisałem na zagranicznym forum, od razu znalazły się osoby chętne do pomocy, które pomogły osiągnąć cel z tym co akurat było pod ręką.
    Zamykam temat, a moderator wedle uznania niech robi co chce z tym wątkiem.