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

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

Strona 7 / 8
kamiKAC
(@kamikac)
Majster

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

OdpowiedzCytuj
Dodane : 31/01/2021 12:16 am
szpila86
(@szpila86)
Majster

@kamikac

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

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

OdpowiedzCytuj
Autor tematu Dodane : 31/01/2021 7:24 am
szpila86
(@szpila86)
Majster

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

 

OdpowiedzCytuj
Autor tematu Dodane : 01/02/2021 2:01 pm
kamiKAC
(@kamikac)
Majster

@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.

OdpowiedzCytuj
Dodane : 01/02/2021 3:24 pm
szpila86
(@szpila86)
Majster

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

OdpowiedzCytuj
Autor tematu Dodane : 01/02/2021 9:01 pm
kamiKAC
(@kamikac)
Majster

@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.

OdpowiedzCytuj
Dodane : 01/02/2021 11:13 pm
szpila86
(@szpila86)
Majster

@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

OdpowiedzCytuj
Autor tematu Dodane : 02/02/2021 6:43 am
kamiKAC
(@kamikac)
Majster

@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?

 

OdpowiedzCytuj
Dodane : 04/02/2021 10:58 pm
szpila86
(@szpila86)
Majster

@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 😉

OdpowiedzCytuj
Autor tematu Dodane : 05/02/2021 6:31 am
szpila86
(@szpila86)
Majster

 

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ł?

OdpowiedzCytuj
Autor tematu Dodane : 14/02/2021 5:23 pm
kamiKAC
(@kamikac)
Majster

@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ł.

OdpowiedzCytuj
Dodane : 17/02/2021 11:14 pm
szpila86
(@szpila86)
Majster

@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. 

OdpowiedzCytuj
Autor tematu Dodane : 18/02/2021 6:57 am
kamiKAC
(@kamikac)
Majster

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

OdpowiedzCytuj
Dodane : 18/02/2021 11:28 pm
szpila86
(@szpila86)
Majster

@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]
OdpowiedzCytuj
Autor tematu Dodane : 20/02/2021 9:27 am
kamiKAC
(@kamikac)
Majster

@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" ]
     }
OdpowiedzCytuj
Dodane : 20/02/2021 10:42 am
szpila86
(@szpila86)
Majster

@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?

OdpowiedzCytuj
Autor tematu Dodane : 20/02/2021 1:38 pm
kamiKAC
(@kamikac)
Majster

@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,

OdpowiedzCytuj
Dodane : 20/02/2021 4:08 pm
szpila86
(@szpila86)
Majster

@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" }
OdpowiedzCytuj
Autor tematu Dodane : 21/02/2021 3:40 pm
kamiKAC
(@kamikac)
Majster

@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.

OdpowiedzCytuj
Dodane : 21/02/2021 8:31 pm
szpila86
(@szpila86)
Majster

@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.

 

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