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
i tym sposobem OH zrobił papa :/
Pół godziny mędze się nad przywróceniem systemu....szczęście garbatego...
Udało się mój OH chyba prosi o świeżą instalację jeszcze w tym roku ;(
log błędy w komunikacji
Try 1 out of 3 failed when executing request (ModbusWriteRegisterRequestBlueprint [slaveId=1, reference=1, registers=ModbusRegisterArray(02000100), maxTries=3, getFunctionCode()=WRITE_MULTIPLE_REGISTERS]). 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 b281ae64-78f3-4dfd-8fe0-787c45479812]
Nie ogarniam co robię źle, wydaje mi się że wszystko jest ok a nie działa.
Żeby nie stać w miejscu zabrałem się za część wykonawczą.
Opisy na przekaźnikach do zmiany, nieco porządku w przewodach do tego przetwornice 24/12v i można zamykać obudowę.
Obsługa na 16bitowych rejestrach śmiga a na 32 jak proponowałeś ni w ząb.
Jak masz jeszcze siłę i chęci to skrobnij co robię źle.
@szpila86 Nieststy wpuściłem Cie w maliny z tym 32-bitowym podejściem - zapis 2 rejestrów wykorzystuje FC16, a ten moduł przekaźnikowy obsługuje tylko FC06. Można to obejść definiując writeTransform z JSONem jak kilka postów temu. W JSONie umieścić najpierw wyłączenie jednego przekaźnika a następnie załączenie drugiego (FC06).
No właśnie mi nie pasowało ale maliny smaczne xd
Kończy mi się drukować podstawa przetwornicy i składam skrzynkę.
Za to wspomniałeś coś o prezentacji postępu rolety. Masz to zrobione? Z pół roku temu sporo czasu zmarnowałem na to i było źle lub fatalnie 🤣
@szpila86 U mnie roletami zarządza PLC. Z OH idzie tylko sygnał UP lub DOWN (2 bity) oraz STOP (zerowanie tych bitów) a zwrotnie pozycja rolety. W Tasmocie można zarządzać roletami, ale musiałbyś mieć inny moduł przekaźników :/
A skrzynka ładna 🙂
U mnie PLC sterowało bezpośrednio PK od rolet a przyciski od oświetlenia po dłuższym przytrzymaniu dodatkowo mogły sterować góra dół.
Teraz przeszedłem na modbus raz żeby poćwiczyć konfigurację tego typu modułów (w przyszłości będę chciał dołożyć dwie szt do czeluści piwnic ;)), dwa zwolnić przewód sterowniczy który będzie potrzebny do innych celów na rzecz skrętki dla modbus i trzy odzyskam 8 wyjść w PLC.
Liczę że te skromne funkcje które miałem przerzucę teraz z PLC na OH i modbus.
Nie chcę eksperymentować z niespodziankami shelly tuya i innymi chińskimi modami esp. Pół roku temu musiałem wpuścić do domu taką tuyę i wymieniłem w niej po miesiącu esp co ciekawe układ który tam był oryginalnie miał inne oznaczenia kolory itp żeby stważać pozory bycia czymś innym niż esp. Potem padł tranzystor wykonawczy który steruje taśmą LED 5cm i obecnie z Tuya został tylko układ zasilający.
Co do pozycji zaawansowany sterownik rolety ma funkcje góra/dół i po zabraniu zasilania stop, a jesli chodzi o info zwrotne to jest bardzo nieśmiały i milczy.
Znając czas ruchu w górę i w dół nie można by uderzyć w ten sposób? Nie jest to super dokłądne ale zawsze i dorobić zerowanie w pozycji w GMP?
var Number currentPosition = 0 // Zmienna przechowująca symulowaną pozycję var Number upTime = 24000 // Czas ruchu w górę (24 sekundy) var Number downTime = 21000 // Czas ruchu w dół (21 sekundy) rule "Rolety jadalnia" when Item RolJad received command then switch(receivedCommand) { case UP: { // Rozpocznij ruch w górę, zaktualizuj pozycję na podstawie czasu currentPosition = Math.min(currentPosition + 1, 100) // Aktualizuj pozycję w elemencie Rollershutter RolJad.sendCommand(currentPosition) // Ustaw timer, aby po pewnym czasie zatrzymać ruch createTimer(now.plusMillis(upTime), [ | currentPosition = 0 RolJad.sendCommand(currentPosition) ]) } case STOP: { // Zatrzymaj ruch, nie zmieniaj pozycji // Zatrzymaj również wszelkie trwające timery currentPosition = 0 RolJad.sendCommand(currentPosition) timers.forEach[timer | timer.cancel] } case DOWN: { // Rozpocznij ruch w dół, zaktualizuj pozycję na podstawie czasu currentPosition = Math.max(currentPosition - 1, 0) // Aktualizuj pozycję w elemencie Rollershutter RolJad.sendCommand(currentPosition) // Ustaw timer, aby po pewnym czasie zatrzymać ruch createTimer(now.plusMillis(downTime), [ | currentPosition = 0 RolJad.sendCommand(currentPosition) ]) } default : { // Inne przypadki } } end
i inna wersja
// Poniższe czasy ruchu w górę i w dół dla każdej rolety val upTimes = newHashMap( "RolJad" -> 24000, "RolDzi" -> 22000, "RolSyp" -> 25000, "RolDzie" -> 23000, "RolPrac1" -> 26000, "RolPrac2" -> 21000 ) val downTimes = newHashMap( "RolJad" -> 21000, "RolDzi" -> 23000, "RolSyp" -> 22000, "RolDzie" -> 24000, "RolPrac1" -> 21000, "RolPrac2" -> 25000 ) rule "Simulate Roller Position - RolDzie" when Item RolDzie received command // Oczekuj zmian na elemencie Roleta Dzieci then val rollerItem = RolDzie val currentPosition = rollerItem.state as Number val selectedUpTime = upTimes.get("RolDzie") val selectedDownTime = downTimes.get("RolDzie") switch(receivedCommand) { // reszta kodu... } end
Setpoint item=RolJad label="Roleta Jadalnia [%d %%]" minValue=0 maxValue=100 step=10 Setpoint item=RolDzi label="Roleta Dzieci [%d %%]" minValue=0 maxValue=100 step=10 Setpoint item=RolSyp label="Roleta Sypialnia [%d %%]" minValue=0 maxValue=100 step=10 Setpoint item=RolDzie label="Roleta Salon [%d %%]" minValue=0 maxValue=100 step=10
Myślisz że miałoby to rację bytu?
A skrzynka ładna 🙂 - Dziękuję nie jest to pro ale działa i w razie zgonu funkcje PK i żył opisane (a niech tyle mają łatwiej ;p)
@szpila86 Wydaje mi się, że to nie zadziała, bo:
- musiałbyś uaktualniać stan rolety w trakcie ruchu (np Timerem), na razie sprawdzasz tylko, czy dotarła do końca;
- uaktualnienie stanu rolety nie przez sendCommand, tylko raczej postUpdate;
- tu jest skrypt, który powinien robic to co chcesz (jeden dla wszystkich rolet) https://community.openhab.org/t/position-estimator-for-shutters/119493/6
W OH4 jest specjalny profil dla rolet bez informacji o pozycji - sam ją oblicza: https://www.openhab.org/addons/transformations/rollershutterposition/
A PLC nie potrafi obsłużyć tych przekaźników po MODBUSie i obliczyć ich pozycji?
Pozdrawiam
Wiesz nie zastanawiałem się nap połączeniem z PLC. Może i byłoby lepiej w końcu lepsza niezawodność niż OH, ale czy Fatek obliczy położenie to nie wiem, nie próbowałem czegoś takiego.
Wracam do domu dopiero z końcem tyg ale może przez teamviewer coś się uda podziałać 😉
Ustawiam port 4 na parametry płyki 9600 8N1
Wrzucam marker M1962 dla enable funkcji 150. Modbus Master. port 4, R1000, R3000
Tabela Modbus ID1 odczyt, size 8, Master Start adres R100, Slave Start adres 300001 lub 400001
Karta stanu rejesrtrów R0-R7 wszystkie 0 nie ważne jaki stan jest obecnie na płytce.
Itak myślę garaż ma PLC Fatek ID1 z katrą sieciową Dom PLC Fatek ID2 z kartą sieciową, Garaż sterownik ogrzewania z konwerteram MB/eth ID4, obecne PK z konwerterem MB/eth ID1 <- powinien być konflikt? bo go nie widzę, Licznik energii z konwerterem MB/eth ID1
każdy konwerter ma swój adres IP więc konfliktów nie ma/ nie widzę ale za to karta stanu martwa, jak ustawiam port karty sieciowej fateka to ona pracuje na 307200 8E1 i jest to pobierane z automatu z karty a w programie do konfig karty nie ma możliwości ustawiania.
@szpila86 Z fatekiem Ci nie pomogę, ale teoretycznie nie ma konfliktów, bo to różne IP. Ale czy nie jesteś podpięty jednocześnie przez OH, a konwerter ETH/MODBUS obsługuje tylko jedno połączenie?
Doczekałem się przyszedł moduł wejść cyfrowych z Ali 😉
Podłączyłem na pewniaka obok modułu z PK nadałem inne ID i komunikacja z PK padła (prawdopodobnie dlatego że PK ma ID4 a DI ma ID1 i próbuje na siłę łączyć się z pierwszym ID z brzegu a resztę zlewa)
Bridge modbus:tcp:DI "DI Bridge" [ host="192.168.86.201", port=4196, id=1] { Bridge poller DIStrych "DIS" [ start=1, length=16, refresh=1000, type="holding" ] { Thing data DI1 "DI1" [ readStart="1", readValueType="int16", writeStart="1", writeValueType="int16", writeType="holding" ] Thing data DI2 "DI2" [ readStart="2", readValueType="int16", writeStart="2", writeValueType="int16", writeType="holding" ] Thing data DI3 "DI3" [ readStart="3", readValueType="int16", writeStart="3", writeValueType="int16", writeType="holding" ] Thing data DI4 "DI4" [ readStart="4", readValueType="int16", writeStart="4", writeValueType="int16", writeType="holding" ] Thing data DI5 "DI5" [ readStart="5", readValueType="int16", writeStart="5", writeValueType="int16", writeType="holding" ] Thing data DI6 "DI6" [ readStart="6", readValueType="int16", writeStart="6", writeValueType="int16", writeType="holding" ] Thing data DI7 "DI7" [ readStart="7", readValueType="int16", writeStart="7", writeValueType="int16", writeType="holding" ] Thing data DI8 "DI8" [ readStart="8", readValueType="int16", writeStart="8", writeValueType="int16", writeType="holding" ] Thing data DI9 "DI9" [ readStart="9", readValueType="int16", writeStart="9", writeValueType="int16", writeType="holding" ] Thing data DI10 "DI10" [ readStart="10", readValueType="int16", writeStart="10", writeValueType="int16", writeType="holding" ] Thing data DI11 "DI11" [ readStart="11", readValueType="int16", writeStart="11", writeValueType="int16", writeType="holding" ] Thing data DI12 "DI12" [ readStart="12", readValueType="int16", writeStart="12", writeValueType="int16", writeType="holding" ] Thing data DI13 "DI13" [ readStart="13", readValueType="int16", writeStart="13", writeValueType="int16", writeType="holding" ] Thing data DI14 "DI14" [ readStart="14", readValueType="int16", writeStart="14", writeValueType="int16", writeType="holding" ] Thing data DI15 "DI15" [ readStart="15", readValueType="int16", writeStart="15", writeValueType="int16", writeType="holding" ] Thing data DI16 "DI16" [ readStart="16", readValueType="int16", writeStart="16", writeValueType="int16", writeType="holding" ] } }
Contact DI1S "DI 1" {channel="modbus:data:DI:DIStrych:DI1:contact"} Contact DI2S "DI 2" {channel="modbus:data:DI:DIStrych:DI2:contact"} Contact DI3S "DI 3" {channel="modbus:data:DI:DIStrych:DI3:contact"} Contact DI4S "DI 4" {channel="modbus:data:DI:DIStrych:DI4:contact"} Contact DI5S "DI 5" {channel="modbus:data:DI:DIStrych:DI5:contact"} Contact DI6S "DI 6" {channel="modbus:data:DI:DIStrych:DI6:contact"} Contact DI7S "DI 7" {channel="modbus:data:DI:DIStrych:DI7:contact"} Contact DI8S "DI 8" {channel="modbus:data:DI:DIStrych:DI8:contact"} Contact DI9S "DI 9" {channel="modbus:data:DI:DIStrych:DI9:contact"} Contact DI10S "DI 10" {channel="modbus:data:DI:DIStrych:DI10:contact"} Contact DI11S "DI 11" {channel="modbus:data:DI:DIStrych:DI11:contact"} Contact DI12S "DI 12" {channel="modbus:data:DI:DIStrych:DI12:contact"} Contact DI13S "DI 13" {channel="modbus:data:DI:DIStrych:DI13:contact"} Contact DI14S "DI 14" {channel="modbus:data:DI:DIStrych:DI14:contact"} Contact DI15S "DI 15" {channel="modbus:data:DI:DIStrych:DI15:contact"} Contact DI16S "DI 16" {channel="modbus:data:DI:DIStrych:DI16:contact"}
Odczyt też nie ma szału bo nie widzi stanu wejść.
Na konwerterze włączyłem nawet na test "Włącz obsługę wielu hostów" i nic nie zmieniło.
https://pl.aliexpress.com/item/1005003367166902.html?gatewayAdapt=glo2pol
Człowiek się trochę przespał i teraz tak sterowanie wyjściem rejestr od 1 do 16 a czytamy od 129.
Czyli próbujemy...
Bridge modbus:tcp:DIO "DIO Bridge" [ host="192.168.86.201", port=4196, id=7] { Bridge poller DIStrych "DIS" [ start=129, length=16, refresh=1000, type="holding" ] { Thing data DI1 "DI1" [ readStart="129", readValueType="int16", writeStart="129", writeValueType="int16", writeType="holding" ] Thing data DI2 "DI2" [ readStart="130", readValueType="int16", writeStart="130", writeValueType="int16", writeType="holding" ] Thing data DI3 "DI3" [ readStart="131", readValueType="int16", writeStart="131", writeValueType="int16", writeType="holding" ] Thing data DI4 "DI4" [ readStart="132", readValueType="int16", writeStart="132", writeValueType="int16", writeType="holding" ] Thing data DI5 "DI5" [ readStart="133", readValueType="int16", writeStart="133", writeValueType="int16", writeType="holding" ] Thing data DI6 "DI6" [ readStart="134", readValueType="int16", writeStart="134", writeValueType="int16", writeType="holding" ] Thing data DI7 "DI7" [ readStart="135", readValueType="int16", writeStart="135", writeValueType="int16", writeType="holding" ] Thing data DI8 "DI8" [ readStart="136", readValueType="int16", writeStart="136", writeValueType="int16", writeType="holding" ] Thing data DI9 "DI9" [ readStart="137", readValueType="int16", writeStart="137", writeValueType="int16", writeType="holding" ] Thing data DI10 "DI10" [ readStart="138", readValueType="int16", writeStart="138", writeValueType="int16", writeType="holding" ] Thing data DI11 "DI11" [ readStart="139", readValueType="int16", writeStart="139", writeValueType="int16", writeType="holding" ] Thing data DI12 "DI12" [ readStart="140", readValueType="int16", writeStart="140", writeValueType="int16", writeType="holding" ] Thing data DI13 "DI13" [ readStart="141", readValueType="int16", writeStart="141", writeValueType="int16", writeType="holding" ] Thing data DI14 "DI14" [ readStart="142", readValueType="int16", writeStart="142", writeValueType="int16", writeType="holding" ] Thing data DI15 "DI15" [ readStart="143", readValueType="int16", writeStart="143", writeValueType="int16", writeType="holding" ] Thing data DI16 "DI16" [ readStart="144", readValueType="int16", writeStart="144", writeValueType="int16", writeType="holding" ] } Bridge poller DOStrych "DOS" [ start=1, length=16, refresh=1000, type="holding" ] { Thing data DO1 "DO1" [ readStart="1", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="1", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ] Thing data DO2 "DO2" [ readStart="2", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="2", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ] Thing data DO3 "DO3" [ readStart="3", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="3", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ] Thing data DO4 "DO4" [ readStart="4", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="4", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ] Thing data DO5 "DO5" [ readStart="5", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="5", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ] Thing data DO6 "DO6" [ readStart="6", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="6", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ] Thing data DO7 "DO7" [ readStart="7", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="7", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ] Thing data DO8 "DO8" [ readStart="8", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="8", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ] Thing data DO9 "DO9" [ readStart="9", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="9", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ] Thing data DO10 "DO10" [ readStart="10", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="10", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ] Thing data DO11 "DO11" [ readStart="11", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="11", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ] Thing data DO12 "DO12" [ readStart="12", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="12", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ] Thing data DO13 "DO13" [ readStart="13", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="13", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ] Thing data DO14 "DO14" [ readStart="14", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="14", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ] Thing data DO15 "DO15" [ readStart="15", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="15", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ] Thing data DO16 "DO16" [ readStart="16", readValueType="int16", readTransform="JS(Read16relay.js)", writeStart="16", writeValueType="int16", writeTransform="JS(Write16relay.js)", writeType="holding" ] } }
Switch DO1S "DO 1" {channel="modbus:data:DIO:DOStrych:DO1:switch"} Switch DO2S "DO 2" {channel="modbus:data:DIO:DOStrych:DO2:switch"} Switch DO3S "DO 3" {channel="modbus:data:DIO:DOStrych:DO3:switch"} Switch DO4S "DO 4" {channel="modbus:data:DIO:DOStrych:DO4:switch"} Switch DO5S "DO 5" {channel="modbus:data:DIO:DOStrych:DO5:switch"} Switch DO6S "DO 6" {channel="modbus:data:DIO:DOStrych:DO6:switch"} Switch DO7S "DO 7" {channel="modbus:data:DIO:DOStrych:DO7:switch"} Switch DO8S "DO 8" {channel="modbus:data:DIO:DOStrych:DO8:switch"} Switch DO9S "DO 9" {channel="modbus:data:DIO:DOStrych:DO9:switch"} Switch DO10S "DO 10" {channel="modbus:data:DIO:DOStrych:DO10:switch"} Switch DO11S "DO 11" {channel="modbus:data:DIO:DOStrych:DO11:switch"} Switch DO12S "DO 12" {channel="modbus:data:DIO:DOStrych:DO12:switch"} Switch DO13S "DO 13" {channel="modbus:data:DIO:DOStrych:DO13:switch"} Switch DO14S "DO 14" {channel="modbus:data:DIO:DOStrych:DO14:switch"} Switch DO15S "DO 15" {channel="modbus:data:DIO:DOStrych:DO15:switch"} Switch DO16S "DO 16" {channel="modbus:data:DIO:DOStrych:DO16:switch"} Contact DI1S "DI 1" {channel="modbus:data:DIO:DIStrych:DI1:contact"} Contact DI2S "DI 2" {channel="modbus:data:DIO:DIStrych:DI2:contact"} Contact DI3S "DI 3" {channel="modbus:data:DIO:DIStrych:DI3:contact"} Contact DI4S "DI 4" {channel="modbus:data:DIO:DIStrych:DI4:contact"} Contact DI5S "DI 5" {channel="modbus:data:DIO:DIStrych:DI5:contact"} Contact DI6S "DI 6" {channel="modbus:data:DIO:DIStrych:DI6:contact"} Contact DI7S "DI 7" {channel="modbus:data:DIO:DIStrych:DI7:contact"} Contact DI8S "DI 8" {channel="modbus:data:DIO:DIStrych:DI8:contact"} Contact DI9S "DI 9" {channel="modbus:data:DIO:DIStrych:DI9:contact"} Contact DI10S "DI 10" {channel="modbus:data:DIO:DIStrych:DI10:contact"} Contact DI11S "DI 11" {channel="modbus:data:DIO:DIStrych:DI11:contact"} Contact DI12S "DI 12" {channel="modbus:data:DIO:DIStrych:DI12:contact"} Contact DI13S "DI 13" {channel="modbus:data:DIO:DIStrych:DI13:contact"} Contact DI14S "DI 14" {channel="modbus:data:DIO:DIStrych:DI14:contact"} Contact DI15S "DI 15" {channel="modbus:data:DIO:DIStrych:DI15:contact"} Contact DI16S "DI 16" {channel="modbus:data:DIO:DIStrych:DI16:contact"}
I pozostaje tylko jakiś "konflikt" na magistrali.
Komunikuje się tylko z urządzeniem o niższym ID
Po dłuższym sprawdzaniu okazuje się że nie ma znaczenie ID. Konwerter ( https://www.waveshare.com/rs485-to-eth-b.htm ) nie powinien stanowić problemu. Komunikuje się przez niego tylko z modułem przekaźnikowym (ID3) teraz dodałem 2 moduł (ID7). Nie ważne czy 2 moduł ma ID wyższe czy niższe od pierwszego i tak pierwszy przestaje się komunikować, a zaczyna 2. Komunikacja z 2 modułem odczyt 16 wejść działa poprawnie oraz sterowanie 16 wyjściami z drobnym lagiem też ok. Błąd polega na:
Konwerter:
Status OK
Most:
COMMUNICATION_ERROR Error with read: org.openhab.core.io.transport.modbus.internal.ModbusSlaveIOExceptionImpl: Modbus IO Error with cause=ModbusIOException, EOF=false, message='I/O exception: SocketTimeoutException Read timed out', cause2=null
PK1:
BRIDGE_OFFLINE No online bridge
Log:
Try 1 out of 3 failed when executing request (ModbusReadRequestBlueprint [slaveId=3, functionCode=READ_MULTIPLE_REGISTERS, start=1, length=16, 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 3928683b-92f4-438a-bb88-ef0c8173c6c7]
Rezystory terminujące przy każdym urządzeniu nic nie dają, spięcie GND miedzy modułami też nic.
Czy jest jakaś dziwna ewentualność że przez konwerter mogę gadać tylko z jednym modułem?! Głupie by to było.
Dziwna sprawa. Nie spotkałem się z podobną sytuacją. Ma ktoś pomysł?
@szpila86 Pokaż definicje obu mostów TCP, nie musisz wrzucać wszystkich linijek Thing.
Bridge modbus:tcp:Przekazniki "Przekaźniki Bridge" [ host="192.168.86.201", port=4196, id=3] { Bridge poller PkStrych "PKS" [ start=1, length=16, refresh=500, type="holding" ] Bridge modbus:tcp:DIO "DIO Bridge" [ host="192.168.86.201", port=4196, id=7] { Bridge poller DIStrych "DIS" [ start=129, length=16, refresh=1100, type="holding" ]
Nie neguję ale osobno mosty działają....
@szpila86 A masz tak skonfigurowane jak w tym przykładzie?
Jak to wygląda w przypadku próby komunikacji z urzadzeniami za pośrednictwem konwertera z innego softu niż OH?
Czy magistrala jest podłączona jak w przykładzie?
Jaka wersję OH masz zainstalowaną?
Yyy zestresowałes mnie 😱🫣
Wklejone prosto z pliku.
Patrzę i nie widzę problemu.
Oddzielnie działają razem nie konfliktu nie widzę czas też był taki sam i nic nie zmieniło....
Dobrze że paznokci nie mam bo bym już obrgryzal z nerwów przy lokciach
@szpila86 Ja w pliku też nie widze błędów, ale jak tak czytam dokumentacje w tym miejscu to się zastanawiam, czy nie powinno być
Bridge modbus:tcp:Przekazniki "Przekaźniki Bridge" [ host="192.168.86.201", port=4196, id=3, rtuEncoded=true] { Bridge poller PkStrych "PKS" [ start=1, length=16, refresh=500, type="holding" ]
bo mamy tu przejściówke z MODBUS TCP <-> MODBUS RTU.
Zresztą w przykładzie z poprzedniego posta podawali, że zmieniając tryb przejściówki na MODBUS TCP Protocol port automatycznie zmienia się na 502, a Ty masz inny.
A masz tak skonfigurowane jak w tym przykładzie? -> przesyłam w załączniku
Jak to wygląda w przypadku próby komunikacji z urzadzeniami za pośrednictwem konwertera z innego softu niż OH? -> indywidualnie testowałem razem podłączonych albo nie pamiętam albo nie
Czy magistrala jest podłączona jak w przykładzie? -> Tak ale połączenie tu jest pomijalne, za krótkie odcinki magistrali nawet terminatory nie powinny być potrzebne.
Jaka wersję OH masz zainstalowaną? -> 3.2.0.1