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ę?
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ę?