Skip to content

air-conditioner

Opis

Bloczek air-conditioner służy do integracji klimatyzatora sterowanego przez Modbus RTU po RS485. Bloczek okresowo odczytuje stan urządzenia i pozwala sterować nim z projektu logiki oraz przez powiązane urządzenie wirtualne vlogic.

Bloczek obsługuje pięć niezależnych obszarów funkcjonalnych:

  • temperaturę zadaną,
  • tryb pracy,
  • siłę nadmuchu,
  • temperaturę zmierzoną,
  • włączenie i wyłączenie urządzenia.

Każdy z tych obszarów można osobno włączyć albo wyłączyć w konfiguracji. Jeśli dany obszar jest wyłączony, bloczek nie odczytuje go z Modbusa i nie reaguje na odpowiadające mu polecenia.

Bloczek ma jedno wejście główne. Nie korzysta z wejść oznaczanych bloczkiem tag i nie udostępnia klasycznych wyjść logiki. Jego stan jest widoczny głównie przez urządzenie wirtualne powiązane z bloczkiem.

Pierwszy odczyt z urządzenia następuje około 2 sekundy po zakończeniu inicjalizacji projektu. Kolejne odczyty są wykonywane cyklicznie co refreshInterval milisekund.

Parametry konfiguracyjne

Nazwa parametru Wartość
Nazwa (name) Opcjonalna nazwa bloczka.
Model urządzenia (deviceModel) Opcjonalny tekst przekazywany do urządzenia wirtualnego jako model klimatyzatora.
Adres urządzenia (deviceAddress) Obowiązkowy adres slave Modbus z zakresu od 1 do 255.
Kolejność bajtów (endianess) Obowiązkowy sposób interpretacji danych wielobajtowych. Dozwolone wartości: LittleEndian, BigEndian, SwapBytes, SwapWords.
Interwał odświeżania (refreshInterval) Obowiązkowy czas pomiędzy kolejnymi cyklami odczytu w milisekundach. Dozwolony zakres: 1-3600000 ms.
Limit czasu odpowiedzi (responseTimeout) Obowiązkowy maksymalny czas oczekiwania na odpowiedź urządzenia w milisekundach. Dozwolony zakres: 10-60000 ms.
Konfiguracja RS485 (server) Obowiązkowy identyfikator bloczka modbus-client, z którego pobierana jest konfiguracja portu RS485.

Temperatura zadana

Nazwa parametru Wartość
Włącz temperaturę zadaną (enableReferenceTemperature) Włącza obsługę odczytu i zapisu temperatury zadanej.
Adres rejestru temperatury zadanej (referenceTemperatureRegisterAddress) Adres rejestru z zakresu 0-65535.
Kod funkcji temperatury zadanej (referenceTemperatureFunctionCode) Sposób odczytu i zapisu. Dozwolone wartości: 0x03/0x06 albo 0x03/0x10.
Typ wartości temperatury zadanej (referenceTemperatureValueType) Typ danych w rejestrze. Dla 0x03/0x06 dozwolone są tylko SIGNED_NUMBER16 i UNSIGNED_NUMBER16. Dla 0x03/0x10 dozwolone są SIGNED_NUMBER16, UNSIGNED_NUMBER16, SIGNED_NUMBER32, UNSIGNED_NUMBER32 i FLOAT.
Mnożnik/dzielnik temperatury zadanej (referenceTemperatureMultiplierDivisor) Wartość z zakresu 1-4294967295. Przy odczycie wartość z Modbusa jest dzielona przez ten parametr. Przy zapisie wartość zadana jest przez niego mnożona.
Minimalna temperatura zadana (referenceTemperatureMin) Minimalna dopuszczalna wartość temperatury. Nie może być mniejsza niż 0°C.
Maksymalna temperatura zadana (referenceTemperatureMax) Maksymalna dopuszczalna wartość temperatury. Nie może być większa niż 80°C.

Minimalna temperatura musi być mniejsza od maksymalnej. Gdy na wejście zostanie podana wartość spoza zakresu, bloczek nie zgłasza błędu użytkowego, tylko przy zapisie obcina ją do skonfigurowanego minimum albo maksimum.

Tryb pracy

Nazwa parametru Wartość
Włącz tryb pracy (enableWorkMode) Włącza obsługę odczytu i zapisu trybu pracy.
Adres rejestru trybu pracy (workModeRegisterAddress) Adres rejestru z zakresu 0-65535.
Kod funkcji trybu pracy (workModeFunctionCode) Dozwolone wartości: 0x03/0x06 albo 0x03/0x10.
Typ wartości trybu pracy (workModeValueType) Dozwolone wartości: UNSIGNED_NUMBER16 albo UNSIGNED_NUMBER32.
Wartość trybu grzania (workModeHeatingValue) Liczba zapisywana w rejestrze dla trybu grzania.
Wartość trybu chłodzenia (workModeCoolingValue) Liczba zapisywana w rejestrze dla trybu chłodzenia.
Wartość trybu automatycznego (workModeAutoValue) Liczba zapisywana w rejestrze dla trybu automatycznego.

Musi być skonfigurowane co najmniej 2 z 3 wartości: heating, cooling, auto.

Siła nadmuchu

Nazwa parametru Wartość
Włącz siłę nadmuchu (enableBlowingForce) Włącza obsługę odczytu i zapisu siły nadmuchu.
Adres rejestru siły nadmuchu (blowingForceRegisterAddress) Adres rejestru z zakresu 0-65535.
Kod funkcji siły nadmuchu (blowingForceFunctionCode) Dozwolone wartości: 0x03/0x06 albo 0x03/0x10.
Typ wartości siły nadmuchu (blowingForceValueType) Dla 0x03/0x06 dozwolone jest tylko UNSIGNED_NUMBER16. Dla 0x03/0x10 dozwolone są UNSIGNED_NUMBER16 i UNSIGNED_NUMBER32.
Minimalna intensywność nadmuchu (blowingForceMinimumIntensity) Minimalna dozwolona wartość intensywności.
Maksymalna intensywność nadmuchu (blowingForceMaximumIntensity) Maksymalna dozwolona wartość intensywności.

Minimalna intensywność musi być mniejsza od maksymalnej.

Temperatura zmierzona

Nazwa parametru Wartość
Włącz temperaturę zmierzoną (enableCurrentTemperature) Włącza odczyt temperatury zmierzonej.
Adres rejestru temperatury zmierzonej (currentTemperatureRegisterAddress) Adres rejestru z zakresu 0-65535.
Kod odczytu temperatury zmierzonej (currentTemperatureReadFunctionCode) Dozwolone wartości: 0x03 dla holding registers albo 0x04 dla input registers.
Typ wartości temperatury zmierzonej (currentTemperatureValueType) Dozwolone wartości: SIGNED_NUMBER16, UNSIGNED_NUMBER16, SIGNED_NUMBER32, UNSIGNED_NUMBER32, FLOAT.
Dzielnik temperatury zmierzonej (currentTemperatureDivisor) Wartość z zakresu 1-4294967295. Po odczycie wartość z rejestru jest dzielona przez ten parametr.

Włączenie i wyłączenie urządzenia

Nazwa parametru Wartość
Włącz sterowanie zasileniem urządzenia (enableOnOffDevice) Włącza odczyt i zapis stanu włączenia urządzenia.
Adres rejestru lub cewki (onOffDeviceRegisterAddress) Adres z zakresu 0-65535.
Kod funkcji włączania/wyłączania (onOffDeviceFunctionCode) Dozwolone wartości: 0x01/0x05, 0x03/0x06, 0x03/0x10.
Typ wartości włączania/wyłączania (onOffDeviceValueType) Dozwolone wartości: UNSIGNED_NUMBER16 albo UNSIGNED_NUMBER32.
Wartość oznaczająca stan włączony (onDeviceValue) Wartość zapisywana i rozpoznawana jako stan włączony.
Wartość oznaczająca stan wyłączony (offDeviceValue) Wartość zapisywana i rozpoznawana jako stan wyłączony.

Wartości onDeviceValue i offDeviceValue muszą się różnić. Dla trybu 0x01/0x05 mają sens wyłącznie wartości 0 i 1.

Obsługa wejścia

Bloczek ma jedno wejście główne. Obsługiwane są następujące typy danych:

  • komenda cooling z bloczka command: przełącza urządzenie w tryb chłodzenia,
  • komenda heating z bloczka command: przełącza urządzenie w tryb grzania,
  • komenda auto z bloczka command: przełącza urządzenie w tryb automatyczny,
  • komenda up z bloczka command: zwiększa siłę nadmuchu o 1,
  • komenda down z bloczka command: zmniejsza siłę nadmuchu o 1,
  • wartość logiczna true: włącza urządzenie,
  • wartość logiczna false: wyłącza urządzenie,
  • wartość liczbowa: ustawia temperaturę zadaną.

Dodatkowe zasady działania:

  • Komendy cooling, heating i auto z bloczka command działają tylko wtedy, gdy włączono obsługę trybu pracy i skonfigurowano odpowiadającą im wartość rejestrową.
  • Komendy up i down z bloczka command działają tylko wtedy, gdy włączono obsługę siły nadmuchu i bloczek zna aktualną wartość odczytaną z urządzenia.
  • up i down nigdy nie wychodzą poza skonfigurowany zakres minimalnej i maksymalnej intensywności.
  • Wartość liczbowa przekazana na wejście jest interpretowana jako temperatura zadana. Przy zapisie bloczek ogranicza ją do zakresu referenceTemperatureMin - referenceTemperatureMax.
  • Wartości niepasujące do żadnej z powyższych reguł są ignorowane.

Bloczek nie używa wejść tag.

Wyjścia bloczka

Bloczek air-conditioner nie udostępnia klasycznych wyjść logiki do dalszego łączenia w flow.

Stan klimatyzatora jest udostępniany przez powiązane urządzenie wirtualne. Urządzenie to przekazuje:

  • temperaturę zadaną,
  • dozwolony zakres temperatury zadanej,
  • tryb pracy oraz informację, które tryby są dostępne,
  • siłę nadmuchu wraz z zakresem dopuszczalnych wartości,
  • temperaturę zmierzoną,
  • stan włączenia lub wyłączenia,
  • model urządzenia.

Każda z tych wartości może mieć jeden z trzech stanów:

  • wartość poprawna,
  • wartość nieznana, gdy odczyt się nie powiódł albo urządzenie zwróciło dane spoza oczekiwanego zakresu,
  • wartość wyłączona, gdy dany obszar funkcjonalny nie został włączony w konfiguracji.

Opis statusu bloczka

Status widoczny pod bloczkiem nie pokazuje ostatnio odczytanej temperatury ani trybu pracy. Służy głównie do sygnalizowania problemów konfiguracyjnych i problemów z warstwą RS485.

Podczas normalnej pracy bloczek pozostaje w stanie Working. Błędy pojedynczych odczytów Modbus nie ustawiają osobnego komunikatu pod bloczkiem. W takiej sytuacji odpowiednia wartość w urządzeniu wirtualnym przechodzi w stan nieznany po przekroczeniu wewnętrznego limitu ponowień.

Błędy widoczne dla użytkownika

Bloczek może pokazywać następujące komunikaty błędów:

Kod błędu Opis błędu
Invalid name configuration. Parametr name ma niepoprawny format.
Invalid device model configuration. Parametr deviceModel ma niepoprawny format.
Invalid device address configuration. Parametr deviceAddress jest niepoprawny albo poza zakresem 1-255.
Invalid endianess configuration. Parametr endianess ma niedozwoloną wartość.
Invalid refresh interval configuration. Parametr refreshInterval jest niepoprawny albo poza zakresem 1-3600000 ms.
Invalid response timeout configuration. Parametr responseTimeout jest niepoprawny albo poza zakresem 10-60000 ms.
Missing RS485 configuration. Parametr server nie wskazuje poprawnego bloczka modbus-client.
Invalid enable reference temperature configuration. Parametr enableReferenceTemperature nie jest poprawną wartością logiczną.
Invalid reference temperature register address configuration. Parametr referenceTemperatureRegisterAddress jest niepoprawny albo poza zakresem 0-65535.
Invalid reference temperature function code configuration. Parametr referenceTemperatureFunctionCode ma niedozwoloną wartość.
Invalid reference temperature value type configuration. Parametr referenceTemperatureValueType jest niepoprawny albo niezgodny z wybranym kodem funkcji.
Invalid multiplier/divisor configuration. Parametr referenceTemperatureMultiplierDivisor jest niepoprawny albo poza zakresem 1-4294967295.
Invalid reference temperature minimum value. Parametr referenceTemperatureMin jest niepoprawny albo mniejszy niż 0°C.
Invalid reference temperature maximum value. Parametr referenceTemperatureMax jest niepoprawny albo większy niż 80°C.
Invalid reference temperature minimum/maximum values. Minimalna temperatura zadana nie jest mniejsza od maksymalnej.
Invalid enable work mode configuration. Parametr enableWorkMode nie jest poprawną wartością logiczną.
Invalid work mode register address configuration. Parametr workModeRegisterAddress jest niepoprawny albo poza zakresem 0-65535.
Invalid work mode function code configuration. Parametr workModeFunctionCode ma niedozwoloną wartość.
Invalid work mode value type configuration. Parametr workModeValueType ma niedozwoloną wartość.
Missing heating/cooling/auto value configuration. Skonfigurowano mniej niż dwa tryby spośród heating, cooling i auto.
Invalid enable blowing force configuration. Parametr enableBlowingForce nie jest poprawną wartością logiczną.
Invalid reference temperature register address configuration. Ten komunikat może pojawić się również przy błędnym parametrze blowingForceRegisterAddress. Mimo nazwy odnosi się wtedy do adresu rejestru siły nadmuchu.
Invalid blowing force function code configuration. Parametr blowingForceFunctionCode ma niedozwoloną wartość.
Invalid blowing force value type configuration. Parametr blowingForceValueType jest niepoprawny albo niezgodny z wybranym kodem funkcji.
Invalid blowing force minimum intensity configuration. Parametr blowingForceMinimumIntensity jest niepoprawny.
Invalid blowing force maximum intensity configuration. Parametr blowingForceMaximumIntensity jest niepoprawny.
Invalid blowing force minimum/maximum intensity configuration. Minimalna siła nadmuchu nie jest mniejsza od maksymalnej.
Invalid enable current temperature configuration. Parametr enableCurrentTemperature nie jest poprawną wartością logiczną.
Invalid current temperature register address configuration. Parametr currentTemperatureRegisterAddress jest niepoprawny albo poza zakresem 0-65535.
Invalid current temperature read function code configuration. Parametr currentTemperatureReadFunctionCode ma niedozwoloną wartość.
Invalid current temperature value type configuration. Parametr currentTemperatureValueType ma niedozwoloną wartość.
Invalid current temperature divisor configuration. Parametr currentTemperatureDivisor jest niepoprawny albo poza zakresem 1-4294967295.
Invalid enable on off device configuration. Parametr enableOnOffDevice nie jest poprawną wartością logiczną.
Invalid current temperature register address configuration. Ten komunikat może pojawić się również przy błędnym parametrze onOffDeviceRegisterAddress. Mimo nazwy odnosi się wtedy do adresu rejestru albo cewki odpowiedzialnej za włączenie i wyłączenie urządzenia.
Invalid on off device function code configuration. Parametr onOffDeviceFunctionCode ma niedozwoloną wartość.
Invalid on off device value type configuration. Parametr onOffDeviceValueType ma niedozwoloną wartość.
Invalid on device value configuration. Parametr onDeviceValue jest niepoprawny albo niezgodny z wybraną metodą zapisu.
Invalid off device value configuration. Parametr offDeviceValue jest niepoprawny albo niezgodny z wybraną metodą zapisu.
Expected different on/off device value configuration. onDeviceValue i offDeviceValue mają tę samą wartość.
RS485 setup incomplete. Runtime nie ma jeszcze kompletnej konfiguracji RS485.
RS485 port missing. W runtime nie ma dostępnego portu RS485 do komunikacji z urządzeniem.

Przykłady działania

  • Jeśli na wejście główne zostanie wysłana z bloczka command komenda cooling, bloczek zapisze do rejestru wartość skonfigurowaną w workModeCoolingValue.
  • Jeśli na wejście główne zostanie wysłana wartość true, bloczek zapisze stan włączenia zdefiniowany przez onDeviceValue.
  • Jeśli na wejście główne zostanie wysłana liczba 31, a maksymalna temperatura zadana wynosi 28, bloczek zapisze do urządzenia wartość odpowiadającą 28.
  • Jeśli aktualna siła nadmuchu wynosi 2, a na wejście zostanie wysłana z bloczka command komenda up, nowa wartość zostanie zwiększona do 3, o ile nadal mieści się w dozwolonym zakresie.
  • Jeśli odczyt temperatury zmierzonej jest włączony, ale kolejne odczyty z urządzenia kończą się niepowodzeniem, urządzenie wirtualne pokaże tę wartość jako nieznaną zamiast ostatniej błędnej odpowiedzi.