Konwerter na usb komunikuje się z licznikiem bez problemu.
Sprawdzałem też na innym konwerterze którego używam i na pewno komunikuje się po modbus ale też bez sukcesu...
Czy próbie łączenia się bez wiązania mam też błędy ale jakby licznik się nie komunikował z konwerterem. Konwerter odpowiada na zapytanie OH miganiem portu ale chyba nic nie odczytuje. Może jest jakieś przesunięcie numeracji portów lub coś..
Początek tabeli licznika
Obecne ustawienia mostu
Bridge modbus:tcp:LicznikkWh [ host="192.168.86.199", port=4196, id=1, rtuEncoded="true", enableDiscovery="true", connectMaxTries=3 ] { Bridge poller coils [ start=13, length=4, refresh=300, type="coil" ] { Thing data LicznikSn [ readStart="13", readValueType="bit" ] } }
Sprawdzałem też odczyty innych rejestrów bez powodzenia
Błędy z konsoli
09:21:05.546 [WARN ] [ort.modbus.internal.ModbusManagerImpl] - Try 1 out of 3 failed when executing request (ModbusReadRequestBlueprint [slaveId=1, functionCode=READ_COILS, start=13, length=4, maxTries=3]). Will try again soon. Error was I/O error, so resetting the connection. Error details: net.wimpi.modbus.ModbusIOException I/O exception: SocketTimeoutException Read timed out [operation ID e883d668-8338-421b-ab65-b0c55efb3d5a]
Konfiguracja obecnego konwertera
Próbowałeś odczytać licznik przez konwerter za pośrednictwem zewnętrznego programu?
@jaketherake Dzięki za odzew 😉
próbowałem ModbusViewer obsługuje TCP i RTU.
Próbowałem wszystkich 4 typów rejestrów przy odczycie i nic
Konfiguracja
Może coś pomoże taka ściagawka z grentona
pokaż odczyt licznika przez konwerter USB-RS485
Dlaczego float32?
To działa
things
Bridge modbus:tcp:LicznikkWh [ host="192.168.86.199", port=4196, id=1] { Bridge poller holding [ start=0, length=53, refresh=3000, type="holding" ] { Thing data NapiecieL1 [ readStart="14", readValueType="float32", writeStart="14", writeValueType="float32", writeType="holding" ] Thing data NapiecieL2 [ readStart="16", readValueType="float32", writeStart="16", writeValueType="float32", writeType="holding" ] Thing data NapiecieL3 [ readStart="18", readValueType="float32", writeStart="18", writeValueType="float32", writeType="holding" ] Thing data Hz [ readStart="20", readValueType="float32", writeStart="20", writeValueType="float32", writeType="holding" ] Thing data PradL1 [ readStart="22", readValueType="float32", writeStart="22", writeValueType="float32", writeType="holding" ] Thing data PradL2 [ readStart="24", readValueType="float32", writeStart="24", writeValueType="float32", writeType="holding" ] Thing data PradL3 [ readStart="26", readValueType="float32", writeStart="26", writeValueType="float32", writeType="holding" ] Thing data mCzynna [ readStart="28", readValueType="float32", writeStart="28", writeValueType="float32", writeType="holding" ] Thing data mCzynnaL1 [ readStart="30", readValueType="float32", writeStart="30", writeValueType="float32", writeType="holding" ] Thing data mCzynnaL2 [ readStart="32", readValueType="float32", writeStart="32", writeValueType="float32", writeType="holding" ] Thing data mCzynnaL3 [ readStart="34", readValueType="float32", writeStart="34", writeValueType="float32", writeType="holding" ] Thing data mBierna [ readStart="36", readValueType="float32", writeStart="36", writeValueType="float32", writeType="holding" ] Thing data mPozorna [ readStart="44", readValueType="float32", writeStart="44", writeValueType="float32", writeType="holding" ] Thing data mWspolczynnik [ readStart="52", readValueType="float32", writeStart="52", writeValueType="float32", writeType="holding" ] }
Number NapiecieL1 "Napięcie [%.1f V]" { channel="modbus:data:LicznikkWh:holding:NapiecieL1:number" } Number NapiecieL2 "Napięcie [%.1f V]" { channel="modbus:data:LicznikkWh:holding:NapiecieL2:number" } Number NapiecieL3 "Napięcie [%.1f V]" { channel="modbus:data:LicznikkWh:holding:NapiecieL3:number" } Number Hz "Częstotliwość [%.1f Hz]" { channel="modbus:data:LicznikkWh:holding:Hz:number" } Number PradL1 "Prąd [%.1f A]" { channel="modbus:data:LicznikkWh:holding:PradL1:number" } Number PradL2 "Prąd [%.1f A]" { channel="modbus:data:LicznikkWh:holding:PradL2:number" } Number PradL3 "Prąd [%.1f A]" { channel="modbus:data:LicznikkWh:holding:PradL3:number" } Number mCzynna "Moc [%.1f kW]" { channel="modbus:data:LicznikkWh:holding:mCzynna:number" } Number mCzynnaL1 "Moc [%.1f kW]" { channel="modbus:data:LicznikkWh:holding:mCzynnaL1:number" } Number mCzynnaL2 "Moc [%.1f kW]" { channel="modbus:data:LicznikkWh:holding:mCzynnaL2:number" } Number mCzynnaL3 "Moc [%.1f kW]" { channel="modbus:data:LicznikkWh:holding:mCzynnaL3:number" } Number mBierna "Moc [%.1f Var]" { channel="modbus:data:LicznikkWh:holding:mBierna:number" } Number mPozorna "Moc [%.1f VA]" { channel="modbus:data:LicznikkWh:holding:mPozorna:number" } Number mWspolczynnik "Moc [%.1f cos φ]" { channel="modbus:data:LicznikkWh:holding:mWspolczynnik:number" }
sitemap
Frame label="kWh" { Group label="L1" item=NapiecieL1 { Default item=NapiecieL1 Default item=PradL1 Default item=mCzynnaL1 } Group label="L2" item=NapiecieL2 { Default item=NapiecieL2 Default item=PradL2 Default item=mCzynnaL2 } Group label="L3" item=NapiecieL3 { Default item=NapiecieL3 Default item=PradL3 Default item=mCzynnaL3 } Default item=Hz Default item=mCzynna Default item=mBierna Default item=mPozorna Default item=mWspolczynnik
Muszę jeszcze rozczytać różnice między np moc całkowiat a moc pobrana itp 😉
zgodnie z instrukcją taki jest typ zmiennych w tabeli licznika 🙂
energia czynna,bierna,pozorna to są standardowo float'y, tam mogą być bardzo duże liczby
bieżące odczyty parametrów sieci to 16 bit wystarczy, ale pewniej prościej im było zrobić wszystko na float
Znalazłem jeszcze jeden i chyba ostatni błąd
W logach nie ma problemu a przez stronę UI zgłasza błąd konfiguracji
Out-of-bounds: Poller is reading from index 0 to 52 (inclusive) but this thing configured to read 'float32' starting from element 52. Exceeds polled data bounds.
Co tu może być źle ?
Thing data mWspolczynnik [ readStart="52", readValueType="float32", writeStart="52", writeValueType="float32", writeType="holding" ]
Things
Bridge poller holding1 [ start=0, length=54, refresh=1000, type="holding" ] { Thing data mWspolczynnik [ readStart="52", readValueType="float32", writeStart="52", writeValueType="float32", writeType="holding" ]
A nie próbujesz odczytać 52 bity do zmiennej 32bitowej?
52 ma niby 2 rejestry zwiększyłem zakres odczytu z 54 do 60 i chyba jest stabilnie sprawdzam
OK działa bez problemów 😀