Volcano EC vts z wy...
 
Powiadomienia
Wyczyść wszystko

Volcano EC vts z wyjściem RS485 ModBUS RTU jakiś pomysł na podłączone do OH

145 Wpisów
4 Użytkownicy
0 Reactions
10.8 K Wyświetleń
(@kamikac)
Wpisów: 226
Pomocny
 

@szpila86 Jak pisałem pisz do VTS lub instalatora o aktualną dokumentację.

 
Dodane : 31/01/2021 12:16 am
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@kamikac

Pisałem w wtorek do przedstawiciela w Polsce - Kraków. 

Czekam na odpowiedź jak nie będzie to będę dzwonił. 

 
Dodane : 31/01/2021 7:24 am
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

Tak na gorąco odpowiedź prosto od producenta. Polska nie miała ochoty lub wiedzy. 

 

 
Dodane : 01/02/2021 2:01 pm
(@kamikac)
Wpisów: 226
Pomocny
 

@szpila86 Tak na gorąco to pod adresem 1 wartość 960 wydawała mi się prędkością transmisji 9600bps i miałem rację 🙂 Ty też miałeś rację, że 9, 10 i 11 to aktualna godzina.

 
Dodane : 01/02/2021 3:24 pm
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

Jak to jest... 

MB_ADDR_POWER_ON_OFF    2   0x0002.  1

MB_ADDR_SLAVE_ADDR          2   0x0002.  1

.. . Które poprawne? 

Poza tym jakieś 10% się nie zgadza z pdf

 
Dodane : 01/02/2021 9:01 pm
(@kamikac)
Wpisów: 226
Pomocny
 

@szpila86 Ten pierwszy to wyjście bitowe, a ten drugi to 16-bitowy rejestr. Wejścia, wyjścia i rejestry są w różnych przestrzeniach adresowych i zapisuje/odczytuje się je różnymi funkcjami. To trochę jak różnica pomiędzy włącznikiem (wejście bitowe), lampą (wyjście bitowe), a nastawioną jasnością na ściemniaczu lampy (rejestr). Do czego innego służą, inaczej się je obsługuje, ale wszystkie są w jednym urządzeniu.

https://en.wikipedia.org/wiki/Modbus

Podaj przykład odczytanej danej z adresem, zobaczymy, co się nie zgadza.

 
Dodane : 01/02/2021 11:13 pm
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@kamikac

OK rozumiem. Myślałem że to wspólny rejestr in/out. 

Coil, Status, Register - nic nie wyświetlają w komórkach tzn tylko 0 a skoro sterownik jest włączony to choć raz powinna być 1

 
Dodane : 02/02/2021 6:43 am
(@kamikac)
Wpisów: 226
Pomocny
 

@szpila86 Niektóre urządzenia nie pozwalają odczytać więcej niż określona dla urządzenia ilość rejestrów naraz (np mój rekuperator zgłasza bład, gdy próbuję odczytać więcej niż 32 rejestry) lub gdy próbuje się dokonać odczytu rejestru, który nie jest zaimplementowany lub jest tylko do zapisu.

Sprawdź, czy wartość 0 nie wynika z błędu wyrzuconego przez Volcano spowodowanego błędnymi parametrami polecenia MODBUS.

Jakieś postępy?

 

 
Dodane : 04/02/2021 10:58 pm
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@kamikac

Na wyłączonym panelu

Jedynie co ruszyłem dalej to tak jak mówisz ograniczyłem odczyt do 5 komórek i wtedy w status komórka 0=1 a w register 0=1000.

Na włączonym panelu

Coils +2=1, status i register same 0

Czasem nie mogę zmienić żadnej wartości ale jak się uda to w coils komórka +2=0 wyłącz panel =1 włącz panel 😉

 
Dodane : 05/02/2021 6:31 am
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

 

2.2input reg

Ok udało się mi znaleźć chwilkę i coś ruszyć ;D

things:

Bridge modbus:tcp:localhostTCP [ host="192.168.86.200", port=4196, id=4 ] {

Bridge poller coils [ start=2, length=2, refresh=1000, type="coil" ] {
        // Włącz/wyłącz panel.
        Thing data VoPower [ readStart="2", readValueType="bit", writeStart="2", writeValueType="bit", writeType="coil" ]
    }

 Bridge poller inputRegisters [ start=2, length=4, refresh=1000, type="input" ] {
	//Aktualna temp
        Thing data VoTemp [ readStart="1", readValueType="float32" ]
     }

}

Items:

Switch       VoPower         "Garaz Volcano [%d]"                { channel="modbus:data:localhostTCP:coils:VoPower:switch" }
Number       VoTemp          "Temp w garazu [%.1f °C]"           { channel="modbus:data:localhostTCP:inputRegisters:VoTemp:number" }

sitemaps:

Switch item=VoPower 
Default item=VoTemp 

Itak włącz/wyłącz panel działa a odczyt aktualnej temp nie (zamiast temp wyświetla tylko -)

Macie jakiś pomysł?

 
Dodane : 14/02/2021 5:23 pm
(@kamikac)
Wpisów: 226
Pomocny
 

@szpila86 Wszystko jest w instrukcji:

  • MB_ADDR_ZONE_TEMPERATURE_ACTUAL zajmuje jedną komórkę, czyli 16 bitów
  • Wartość temperatury otrzymuje się według wzoru:
T measured = ( MB_ADDR_ZONE_TEMPERATURE_ACTUAL / 100)[°C]

czyli odczytujemy wartość 16bitową całkowitą. Zamień float32 na int16 i jesteś w domu (tzn. jeszcze musisz sobie to podzielić przez 100, ale wartość powinna się wyświetlić)

Sorki, że dopiero teraz, ale przeniesienie wszystkich usług i skryptów na RPi4 trochę mnie zajmuje i jeszcze naprawiałem rekuperator, bo padł.

 
Dodane : 17/02/2021 11:14 pm
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@kamikac

Właśnie też tak myślałem i sprawdzałem 8 16 i 32. Czytałem jedną komórkę jak i 2.

Zdalnie zmieniłem na int16 start=1

Restart OH nic nie dał restart całego serwera z OH też nic ciągle -oC

Spokojnie rozumiem brak czasu sam jestem często w wyjazdach. 

 
Dodane : 18/02/2021 6:57 am
(@kamikac)
Wpisów: 226
Pomocny
 

@szpila86 Jaby dalej nie działało zapodaj loga.

 
Dodane : 18/02/2021 11:28 pm
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@kamikac

Hej  podobny problem jest z innymi komórkami przy odczycie ;/

Hehe myślałem że mam małe wymagania.....włącz/wyłącz sprawdź i ustaw temp.... a tu niespodzianka 😀

09:23:54.848 [WARN ] [ort.modbus.internal.ModbusManagerImpl] - Try 1 out of 3 failed when executing request (ModbusReadRequestBlueprint@63a68a23[slaveId=4,functionCode=READ_INPUT_REGISTERS,start=1,length=4,maxTries=3]). Will try again soon. Error was: net.wimpi.modbus.ModbusSlaveException Error Code = 3 [operation ID fd6c6e7d-9dbc-4e26-a511-f12266bcb399]
09:23:54.934 [WARN ] [ort.modbus.internal.ModbusManagerImpl] - Try 2 out of 3 failed when executing request (ModbusReadRequestBlueprint@63a68a23[slaveId=4,functionCode=READ_INPUT_REGISTERS,start=1,length=4,maxTries=3]). Will try again soon. Error was: net.wimpi.modbus.ModbusSlaveException Error Code = 3 [operation ID fd6c6e7d-9dbc-4e26-a511-f12266bcb399]
09:23:55.020 [ERROR] [ort.modbus.internal.ModbusManagerImpl] - Last try 3 failed when executing request (ModbusReadRequestBlueprint@63a68a23[slaveId=4,functionCode=READ_INPUT_REGISTERS,start=1,length=4,maxTries=3]). Aborting. Error was: net.wimpi.modbus.ModbusSlaveException Error Code = 3 [operation ID fd6c6e7d-9dbc-4e26-a511-f12266bcb399]
 
Dodane : 20/02/2021 9:27 am
(@kamikac)
Wpisów: 226
Pomocny
 

@szpila86 Wszystko działa prawidłowo - Volcano ma tylko 2 rejestry Input, a Ty próbujesz czytać 4, więc zwraca błąd, bo nie ma tych rejestrów. I numeracja jest od zera, a nie od 1.

Bridge poller inputRegisters [ start=0, length=2, refresh=1000, type="input" ] {
	//Aktualna temp
        Thing data VoTemp [ readStart="0", readValueType="int16" ]
     }
 
Dodane : 20/02/2021 10:42 am
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@kamikac

 

OK wiec już gdzie błędy robię ;(

więc Sratr zaczyna się od 0 nie nie ma przesunięcia, a lenght to ilość komórek a nie znaków z komórki do odczytania oraz readStart też się zaczyna od 0 bez przesunięcia?

 

Teraz kwestia dzielenia wyniku to przez rules czy jakiś skrypt lepiej?

 
Dodane : 20/02/2021 1:38 pm
(@kamikac)
Wpisów: 226
Pomocny
 

@szpila86 W OH2 i OH3 w pollerze wpisujesz adres pierwszego rejestru i ilość rejestrów do odczytania. Potem w data podajesz konkretny adres z podanego wyżej zakresu (jeśli podasz spoza zakresu, to otrzymasz błąd). I tutaj adres zależy również od tego, jaki typ danych masz do odczytania.

Jeśli czytasz dane 16-bitowe (np int16) to jest najłatwiejszy przypadek czyli jeden adres = jedna dana.

Jeśli czytasz dane 32-bitowe (np float32) to jedna dana zajmuje 2 adresy, czyli podajesz adres pierwszej komórki x, a odczytywane są dwie: ta, którą podałeś (x) i następna (x+1) jako jeden 32-bitowy wynik. Następna dana ma adres x+2

Przy odczycie danych 8-bitowych (np. int8) może być tak, że dwie dane są upakowane pod jednym adresem, wtedy definiujesz 2x data: dla pierwszej danej wpisujesz w ReadStart x.0 i dla drugiej x.1

Tu masz gotowy przykład z readTransform w JS https://www.smartnydom.pl/forum/openhab/fatek-modbus-openhabv3/#post-18039

Musisz tylko w readTransform zmienić 10 na 100 i po sprawie,

 
Dodane : 20/02/2021 4:08 pm
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@kamikac

Dzięki proste i lekkie 😉

Jak poprawnie powinno coś takiego wyglądać?

Slider item=VoTempZad label="Temperatura"  minValue=VoTempMin maxValue=VoTempMax step=1 { channel="modbus:data:localhostTCP:holding:VoTempZad:number" }
 
Dodane : 21/02/2021 3:40 pm
(@kamikac)
Wpisów: 226
Pomocny
 

@szpila86 Pomieszałeś. W sitemapie wpisujesz:

Slider item=VoTempZad  minValue=15 maxValue=28 step=1

A w items:

Number:Temperature item=VoTempZad label="Temperatura [%d %unit%]"  { channel="modbus:data:localhostTCP:holding:VoTempZad:number" }

Natomiast do ustawiania temperatury uważam, że lepiej sprawdzi się Setpoint, bo jest dokładniejszy.

 
Dodane : 21/02/2021 8:31 pm
(@szpila86)
Wpisów: 363
Weteran Patron Strony Donator 2K22, Donator 2K23, Donator 2K24
Autor tematu
 

@kamikac

OK ale nadal mam z ręki wpisany max i min a nie pobrane z nastaw sterownika.

Skąd taki zapis? polecenie powoduje błąd

Number:Temperature item=VoTempZad

W zasadzie może być i setpoint.

 

 
Dodane : 21/02/2021 8:47 pm
Strona 7 / 8
Udostępnij: