UWAGA: Strona oraz Forum Smart'ny Dom nie będzie dostępne 23 Grudnia 2024 ze względu na przenoszenie serwisu na mocniejszą maszynę.
W tym czasie polecam poświęcenie swojego czasu na pomoc partnerowi w przygotowaniu udanych Świąt 😉
Za niedogodności z góry przepraszam, admin
Witam wszystkich jeszcze raz.
Mam OH na raspberry pi 3. Dołożony interfejs RS485. Zainstalowany bindings modbus. Skonfigurowane pobieranie danych z przetwornika Lume P43 i działa:
Do tego na jednej magistrali podpięte mam 3 liczniki LE01-MR firmy F&F i w żaden sposób nie mogę uzyskać z nich odczytów.
Konfiguracja np taka:
Według dokumentacji napięcie można odczytywać z rejestru holding o numerze 305.
bezpośredni odczyt magistrali i urządzenia na rpi (z działającym oh) daje poprawny odczyt:
openhabian@openhabianpi:/home/pi/modpoll/linux_arm-eabihf $ sudo ./modpoll -b 9600 -p none -s 1 -m rtu -a 10 -r 306 -c 1 -t 4 -1 /dev/ttyAMA0 modpoll 3.9 - FieldTalk(tm) Modbus(R) Master Simulator Copyright (c) 2002-2020 proconX Pty Ltd Visit https://www.modbusdriver.com for Modbus libraries and tools. Protocol configuration: Modbus RTU, FC3 Slave configuration...: address = 10, start reference = 306, count = 1 Communication.........: /dev/ttyAMA0, 9600, 8, 1, none, t/o 1.00 s, poll rate 1000 ms Data type.............: 16-bit register, output (holding) register table -- Polling slave... [306]: 23055
Dopiszę jeszcze, że bez różnicy jest co wpiszę w parametrach Bridge poller dla tego licznika:
start=305, 306, 300, itp length=1, więcej readStart=0, 1, 305 (w cudzysłowach czy bez) readValueType= różne typy
Dostaję w logach openhab.log:
2021-02-10 10:25:35.483 [WARN ] [rt.modbus.internal.ModbusManagerImpl] - Try 1 out of 3 failed when executing request (ModbusReadRequestBlueprint@1de5e28[slaveId=10,functionCode=READ_MULTIPLE_REGISTERS,start=306,length=1,maxTries=3]). Will try again soon. Error was I/O error, so reseting the connection. Error details: net.wimpi.modbus.ModbusIOException I/O exception: IOException CRC Error in received frame: 0 bytes: [operation ID 12db37a5-f490-4b33-8e3b-beb462d49336] 2021-02-10 10:25:35.983 [WARN ] [rt.modbus.internal.ModbusManagerImpl] - Try 2 out of 3 failed when executing request (ModbusReadRequestBlueprint@1de5e28[slaveId=10,functionCode=READ_MULTIPLE_REGISTERS,start=306,length=1,maxTries=3]). Will try again soon. Error was I/O error, so reseting the connection. Error details: net.wimpi.modbus.ModbusIOException I/O exception: IOException CRC Error in received frame: 0 bytes: [operation ID 12db37a5-f490-4b33-8e3b-beb462d49336] 2021-02-10 10:25:37.006 [ERROR] [rt.modbus.internal.ModbusManagerImpl] - Last try 3 failed when executing request (ModbusReadRequestBlueprint@1de5e28[slaveId=10,functionCode=READ_MULTIPLE_REGISTERS,start=306,length=1,maxTries=3]). Aborting. Error was I/O error, so reseting the connection. Error details: net.wimpi.modbus.ModbusIOException I/O exception: IOException CRC Error in received frame: 0 bytes: [operation ID 12db37a5-f490-4b33-8e3b-beb462d49336]
Każda próba odczytania wartości z magistrali czym innym niż OH kończy się sukcesem.
OH poprostu nie odczytuje mi danych z licznika (oczywiście z pierwszego MeterMaster wartości odczytuje poprawnie)
Zamówiłem interfejs do RP taki z dwoma portami, zobaczymy czy wtedy będzie lepiej.
Nie mniej jednak, czy ktoś ma jakiś pomysł żeby zmusić OH do odczytywania wartości?
@grzesiekk jak używasz konwertera bez izolacji galwanicznej to obsłużysz tylko jeden licznik - urządzenie
@isom Używam RS485 CAN HAT - nakładka dla Raspberry Pi - Waveshare 14882.
Co to znaczy że obsłużę tylko jeden licznik? podłączone mam do magistrali w jednym czasie 4 liczniki (p43 oraz 3x le01mr) i programikiem modpoll mogę odpytywać każdy z nich. Dlaczego OH miałby tyego nie umieć i było by to uzależnione od galwanicznej seperacji?
W sumie mam już zamówiony konwerter z galwaniczną seperacją. Zobaczymy co będzie w jego przypadku. Jednak ten argument jakoś do mnie nie trafia - zwłaszcza że tak jak pisałem modpoll odczytuje to co potrzebuję.
@grzesiekk to spróbuj "programikiem" odpytać wszystkie na raz , a się przekonasz . Taka jest różnica że programikiem odpytujesz jeden licznik a w OH chcesz wszystkie cztery.
Separacja pozwala na transmisję niezależną a zwykły konwerter już nie . Nie umiem tego prościej nazwać
@isom trochę na elektronice się znam i według mnie seperacja galwaniczna w przypadku przetwornika rs485 jest po to żeby elektronikę i napięcia panujące na urządzeniach pomiarowych/sterowniczych odseparować całkowicie od PLC. jakimiś optotranzystorami, optodiodami czy optotriakami. Żeby ewentualne przepięcia nie przeszły na PLC.
Natomiast... oczywiście że odpytywanie programikiem jest robione w sposób jeden po drugim. A czy OH odpytuje wszystkie skonfigurowane urządzenia modbus JEDNOCZEŚNIE czy wrzuca je do jakiejś kolejki? Przecież P43 który mam też nie odpytuje w jednej chwili wszystkich zmiennych tylko w jakiejś kolejności.
Dzisiaj nie dam rady ale spróbuję wsadzić monitor rs485 na linię i zobaczę o co pyta programik a o co pyta OH.
Wydaje mi się że odpowiedzią na moje pytanie które postawiłem na początku było by albo poprawnienie konfiguracji (jeśli jest błąd) albo stwierdzenie że OH nie potrafi odpytywać więcej niż 1 urządzenia na jednej magistrali rs485 (a tego nie jestem pewny gdyż znalazłem w internecie na forach posty że to działa).
@grzesiekk Ja widzę tylko jedną rzecz, która może powodować problemy: w Lume masz 2 bity stopu a w liczniku 1. Jeśli port nie jest zamykany pomiędzy odczytami, to transmisja może za każdym razem mieć te same parametry (2 bity stopu) i nie zadziała. Nie da się tego ujednolicić zmieniając konfigurację któregoś urządzenia?
I spróbuj zmienić Power na np Power1, bo poller nie jest jednoznacznie przypisany do definicji urządzenia. Wydaje mi się, że wszystkie pollery w tym przypadku są przypisane do jednego urządzenia (Lume) i dlatego nie działa.
@kamikac @ "Power" - to jest grupa/zakładka w OH Paper UI. pollery jak popatrzysz mają różne nazwy.
Z tymi bitami stopu może masz rację, myślałem o tym ale zmyliło mnie że modpoll działa poprawnie.
Oczywiście że da się to ujednolicić. Spróbuję po weekendzie to zrobić. Dam znać czy zadziałało.
@kamikac dziękuje za nakierowanie na rozwiązanie.
W tych licznikach nie mogłem ustawić 8N2, ma tylko 8N1 ale za to w lumelu mogłem przestawić z 8M2 na 8N1 - i tak wszystkie urządzenia na tej magistrali korzystają z ustawień 8N1. Licznik zaczał się odpytywać, póki co jeden rejestr 🙂 Teraz tylko dołożyć kolejne rejestry i liczniki w OH.