Problem z odczytem licznika en. el.

Aug 29, 2015 14 Replies

Muszę zrobić sobie do pewnych celów odczyt danych pomiarowych z licznika używając swoj customowy czytnik. Dla celów testowych znajomy elektryk pożyczył mi jakiś używany ale sprawny licznik. Po kilku próbach udało się z nim połączyć na 4800 bps i tylko tą prędkość licznik proponuje przy inicjalizacji. Skoro norma mówi, że inicjalizacja powinna być na 300 bps (po tym można ewentalnie zwiększyć prędkość), to dlaczego on jest zafiksowany na 4800 bps? Ale mniejsza o to. Przetestowaszy komunikację z testowym licznikiem podpiąłem się do tego docelowego i kiszka. Spróbowałem wszystkie bps od 300 do 19200 (taką max. prędkość deklaruje producent). Licznik nie odpowiada na /?!\r\n. Upewniłem się w tabeli kodów modeli czy mój na pewno ma rs485 (są też wersje z rs232), wg kodu ma. W desperacji zamieniłem miejscami linie A z B (może jest błąd w opisie zacisków) i przeskanowałem jeszcze raz po wszystkich możliwych prędkościach i nic. Skończyły mi się już pomysły, ale zanim zadzwonię do producenta w poniedziałek - może jednak coś przeoczyłem? Licznik to model AS1440 firmy Elmess.


Może Twój licznik jest w wersji z interfejsem MBUS?

jp

Ten model w zależności od wyposażenia może mieć interfejs CL0, rs232 lub rs485. Wg tabeli oznaczeń modelu ten ma mieć rs485. Na pokrywie zacisków jest legenda z ich opisem, jest para zacisków oznaczona rs485. Albo interfejs jest uwalony albo programowo zablokowany....

Tylko zasugerowałem ponieważ widywałem już liczniki (ciepła) z interfejsem RS232 i protokołem MBUS na nim, tzn fizyczny interfejs to jedno a protokół jaki na nim siedzi to może być inny.

jp

>

Wcześniej pisałeś interfejs mbus a nie protokół stąd myślałem, że masz na myśli interfejs (sprzętowy). Od producenta dostałem dokument opisujący komunikację z tym licznikiem, jedst zgodny z EN 62056-21 (61107), protokół ten sam co ten licznik testowy.

W dniu 2015-08-29 17:58, Marek pisze:

Magistrali RS485 używa się w ten sposób by można było podpiąć do niej wiele liczników... jeśli próbujesz zainicjować transmisję na tym interfejsie przy pomocy sekwencji /?!\r\n to który z wielu liczników miałby dawać odpowiedź? Jeśli odpowiedziałyby wszystkie zrobiłby się bałagan na magistrali. Licznik trzeba wskazać poprzez podanie jego adresu (np. numeru seryjnego licznika lub jego fragmentu) np. /?[numer licznika]!\r\n, ale szczegółów szukaj w opisie protokołu transmisji licznika.

pzdr mk

liczników

szczegółów

Licznik testowy, który leży w warsztacie odpowiada na sekwencję inicjującą bez podania id. Producent tego drugiego licznika z którym mam problem też twierdził, że sekwencja bez id jest prawidłowa (i tak jest w dokumentacji, która dostałem od niego, nawet jest zrzut sekwencji z terminala). Ale pomimo to Twoja sugestia może być słuszna, sprawdzę to. Dzięki.

Sekwencja bez id jest typowa dla połączenia bezpośredniego z licznikiem tj. np. przy użyciu głowicy optycznej. Więc zwróć na to uwagę czy owe zrzuty nie są z takiej właśnie sesji.

Przy połączeniu RS485 już nie jest typowa (raczej jest wyjątkowa i wymaga by na magistrali był tylko jeden licznik).

pzdr mk

No to zrozumiałe, jak ten licznik testowy wykrył, że jest sam na magistrali i odpowiedział na sekwencję bez id? Czyżbym trafił na nietypowy model (producent JM Tronik), który pracuje tylko w konfiguracji 1-1?

A czy standard niedopuszcza, że jeśli master (czytnik) wysyła sekwencje bez id to wie co robi i oznacza to, że pytanie jest do jedynego slave'a jakim jest ten licznik? Analogicznie do skip rom w

1wire.

Nie wiem jak teraz ale kiedyś jmtronik miał własny protokół. Jp

Już dawno nie miałem tego tekstu owego standardu przed swymi oczami. I tak, jeden z ważniejszych wniosków z jego lektury był taki, że w celu pozyskania konkretnych danych z konkretnego licznika jest i tak potrzebna dokumentacja tego konkretnego licznika. Owy standard jest baaardzo ogólnym zbiorem wytycznych jak taka komunikacja ma wyglądać.

Nie odpowiem Ci na Twoje pytanie jednoznacznie co standard dopuszcza a czego nie bez możliwości starannego przestudiowania tekstu standardu pod danym kątem. Jeśli mógłbym obstawiać to obstawiam, że standard milczy na ten temat, więc w sumie producent mógł sobie zrobić taki "feature" o którym wyżej piszesz jako swego rodzaju rozszerzenie. Ale wiem też, że całkiem sporo liczników wspomnianą sekwencję, jako rozpoczęcie komunikacji, zignoruje (co, obstawiam, też będzie całkowicie zgodne ze standardem).

pzdr mk

Okazało sie ze ten "problematyczny" licznik też odpowiada na /?! bez id. To że wcześniej mi nie odpowiadał wynikało z tego, że po prostu ignoruje co kilka prób string inicjujacy połączenie. Gdy np. w petli zaczne go odpytywac co 2 sekundy stringiem /?! to odpowiada kompletnie niedetermistycznie, co drugi raz, co 5, co 7, czasami dwa razy pod rząd. Dokumentacja jego protokołu nie wspomina o ograniczeniu częstości zapytań wręcz mówi że "the time between 2 succeeding signs should be lower than 1.5s" (co jest trochę dziwne, albo co innego rozumiemy przez "signs"). Pierwsze podejrzenia miałem takie, że może to problem z magistralą, może przy przełączaniu nadawanie/odbiór robi się glitch, który zakłóca komunikację i licznik odbiera przekłamany string i ignoruje go. Dodałem rezystory 680 podciągające magistralę do Vcc/GND jak to niektórzy sugerują ale to nic zupełnie nie zmieniło.... Drugie podejrzenie to takie, że być może standard wymaga "wylogowania" się po ówczesnym "zalogowaniu" stąd ignoruje wielokrotne /?! w trakcie aktywnej sesji. Ale dokumentacja wspomina tylko o zamykaniu sesji programowania przez SOH B0 ETX BCC. Z producentem na razie chyba nie ma sensu gadać, bo jak powiem że nieodpowiada za każdym razem to mam problem z magistralą i skieruje mnie na drzewo.

Moze maja na mysli znaki (characters). Moze gdy czas miedzy znakami przekroczy 1.5s, to bufor sie zeruje albo cos.

Moze za maly czas miedzy znakami tez powoduje problemy, spotkalem sie z tym w innym urzadzeniu.

Od producenta wypożyczyłem identyczny model do testów i zachowuje się normalnie. Także to jakaś osobnicza cecha tego konkretnego licznika. Być może to kwestia softu, dziwnie zachowujący się ma v9.32 a ten wypożyczony 9.36. Co ciekawe support producenta na moje oko nie ma bladego pojęcia* skąd takie dziwne zachowanie, jedyne co był w stanie zaproponować to żebym wymienił w szafie ten "dźwiny" na ten wypożyczony.

  • - może dlatego, że soft licznika i dokumentacja ma sygnatury ABB, a oni tylko to składają...

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required