Askoma
ASKOMA AG | Industriestrasse 1 | CH-4922 Bützberg | Switzerland | Hotline +41 62 958 70 99 | support@askoma.com

ASKOHEAT+   MODBUS

askoheat
© 2020 Askoma AG Screw-in heaters and flange heaters for heating industrial ​and heating water with photovoltaic
Einschraubheizkörper und Flanschheizkörper zur Erwärmung von ​Brauch- ​und Heizungswasser mit Photovoltaik

Functional Describtion and Modbus Register

Version 1.15 - 11.11.2021

Table of Contents

Firmware Releases (Roadmap)

Five Steps for Successful Implementation

Modbus Registers

Firmware Releases (Roadmap)

Version Date Summary
2.0.1 until 07/2019 Prerelease (prototype)
2.0.2 08/2019 Prerelease (prototype with some corrections)
2.2.1 06.09.2019 First official customer release on Olimex hardware with new modbus-registers
2.2.2 18.09.2019 Emergency Mode changed from switch to button and Extended Block added with STATUS
2.3.1 28.10.2019 Power to heat regulation by setpoint preset value
3.0.1 05.11.2019 First customer release on new ASKOHEAT+ hardware (within 0-10V, modbus TCP, legionella protection)
3.0.2 01.12.2019 Heater load value only if current flow is detected
3.1.1 02.04.2020 Configuration can be setted using the integrated ASKOHEAT+ configuration websites
3.1.2 17.04.2020 Implemntation of HTTP-JSON interface
4.0.1 05.05.2020 Update via Webinterface
4.0.2 14.05.2020 Implementation of MODBUS RTU communiction
4.0.3 26.08.2020 Auto Restart if connection to energymanager lost -> AUTO_HEATER_OFF_SETTING
4.0.4 18.09.2020 New local Website
4.1.1 01.12.2020 Use Analog Input as special input, temperature controlled heating, low tariff option
4.2.1 10.03.2021 Supports SMA SEMP and Feedin Control
4.2.7 15.05.2021 Support ethernet static IP address (without modbus relevant changes)
4.3.0 29.08.2021 Supports SEMEC Home (without modbus relevant changes)
4.3.x actual Bug fixing and minor chnanges

Back to Table of Contents


Overview of Functions

Actuator controls

ASKOHEAT+ is an actuator consisting of three switchable heating elements. By combination 7 steps are possible. In conjunction with the ASKOWALL, the pump is automatically switched on when the heating elements are activated.

The heating elements are controlled by the following input signals:

  1. Manual thermostat, not via electronic evaluation, independently regulates (and limits) the set temperature.
  2. Analog input: 0-10 volt signal (switches power corresponding to input signal)
    Up to eight threshold values can be assigned to heating level and temperature.
  3. Digital input: Heat pump request (switches to full power)
  4. ASKOHEAT+ Push button: toggles emergency mode on / off (on switches to full power)
  5. (Modbus) Heater Step 0-7 (switches power in 7 steps)
  6. (Modbus) Load Setpoint Value: poitive 0-max. watt (ASKOHEAT switches the power automatically)
  7. NOW AVAILABLE: (Modbus) Feedin Value: Regulation use case Power to Heat: Grid feed-in of produced (e.g. solar) energy (represented by negative values as feed-in values to the EVU) is reduced by thermal storage with the ASKOHEAT+ through automatic selection of the optimum power level. If the value is positive, the ASKOHEAT+ switches off automatically.
  8. (HTTP-JSON) Control the ASKOHEAT+ via the Modbus registers using the JSON format
  9. Electronic thermostat with individual setting possibility for each control input
  10. Heating during low tariff period
  11. NEW: Supports SMA Sunny Home Manager 2.0 via SEMP: If enabled the ASKOHEAT+ will connected automatically with the Sunny Home Manager and will be listed with its three heaters.

Sensors

  1. Temperature Sensor 0: PT1000 integrated in ASKOHEAT+
  2. Temperature Sensor 1: optional external PT1000
  3. Temperature Sensor 2: optional external PT1000
  4. Temperature Sensor 3: optional external PT1000
  5. Temperature Sensor 4: optional external PT1000
  6. Temperature Sensor 5: not implemented yet (future use)
  7. Simple Current Flow Sensor: Current flow is measured via an integrated sensor. If the temperature limiter or the thermostat has been deactivated, this can be detected via it. The sensor does not provide an exact measured value, therefore only a flag is output.

Saftey and Cost Prevention

  1. Safety temperature limiter switches off independently when the protective temperature is exceeded.
  2. Legionella protection: In intervals (daily, weekly, fortnightly, monthly) the boiler is heated to a temperature (50-65°C) to kill legionella. The heating time is limited to 240 minutes.
  3. Monitoring of the temperature sensors. In case of a malfunction (e.g. cable break or accidental disconnection), errors are output (see register {502} MODBUS_VAL_TEMPERATURE_STATUS).
    Note: If the error is to be cleared, i.e. the ASKOHEAT+ should forget that the temperature sensor(s) was (were) connected, then this can be done with the command {213} MODBUS_VAL_TEMPERATURE_STATUS MODBUS_CMD_CLEAR_TEMP_SENSOR_ERROR or via the web browser with /CLEAR TEMP ERROR or by pressing the Emergency Mode button for at least 30 seconds until the LED error display stops).
  4. Auto Heater Off: after 24 hours (this value can be adjust with {503} MODBUS_CON_AUTO_HEATER_OFF_MINUTES) of continuous operation, the ASKOHEAT+ switches off automatically until the control value is changed again.
  5. Emergency mode will switches off after 24 hours (this value can be adjust with {503} MODBUS_CON_AUTO_HEATER_OFF_MINUTES)
  6. Modbus Fail Save: Auto Heater Off also occurs if the master (e.g. Energy Manager) does not send any data to the ASKOHEAT+ for more than 60 seconds.
  7. Monitoring of the relay switching cycles: Switch-on hysteresis of typ. 5 seconds, counting of the switching cycles.
  8. Load Feedin Mode: Bias and activation delay prevent unnecessary load peaks or switching cycles that are too short.

Further Features

  1. Device status retrievable via a Modbus word register
  2. The current switching step or heating load can be read out via the corresponding registers. If in Register {502} MODBUS_CON_INPUT_SETTING bit 1 (Heater Load value only if current flows) is setted, the value is zero if the safety temperature limiter or the thermostat switched off.
  3. All important functions and parameters can be configured via Modbus.
  4. For installation and local support a simple effective webbrowser interface is implemented.
  5. Via HTTP-JSON all Modbus registers can be accessed and all settings can be made via HTTP-JSON.
  6. Automatic functions for time-dependent temperature-controlled heating (minimum temperature and low tariff).
  7. NEW: Use of an Askoma Smart Meter via Modbus RTU (the ASKOHEAT+ must then be operated in Master Mode). The heating element then uses the excess energy reported by the smart meter (= feed) to heat the boiler within the set temperature. (Use Case Power To Heat without Energy Manager). The simple use case does not support data logging and cannot take priorities into account.

Using Modbus TCP

  1. Modbus TCP is served via the standard port 502.
  2. The ASKOHEAT+ is the Modbus server whose registers are described here.
  3. Currently up to 8 client connections can be served simultaneously.
  4. Basically, there can be multiple socket connections per client ip.
  5. Data is updated every second. Therefore we do not recommend faster polling cycles.
  6. Note: The connection between ASKOHEAT+ and an external client is considered interrupted after 5000 milliseconds. After an interruption of 60 seconds, registers MODBUS_CMD_SET_HEATER_STEP and MODBUS_CMD_LOAD_SETPOINT_VALUE and MODBUS_CMD_LOAD_FEEDIN_VALUE are deleted for security reasons.

Back to Table of Contents


Status LEDs

NOTE: With firmware 4.1.1 the LED status display changes. It is now reduced to the essential.

TOP LED: Heater Status

**Color** **On** Command**Flashing**
Red Error, for further information open the local webpages of ASKOHEAT+
Blue Communication over ethernet (MODBUS TCP, RTU, webbrowser or HTTP-JSON (e.g. Energy Manager) within last 5 seconds
White Identify for 20 seconds or Emergency Mode toggles on or off / very fast flashing at start and stop update

MIDDLE LED: Heater Connectivity

**Color** **On** Command**Flashing**
Red Error LAN (Ethernet) communication
Yellow Data communication over LAN (Ethernet)
Green LAN (Ethernet) connected to a switch, hub or router
Blue WLAN (Wifi) connected (optional and is not implemented in this firmware) ASKOHEAT+ is running without LAN connection, e.g. using only analog input

BOTTOM LED: Heater Mode

**Color** **On** Command**Flashing**
Yellow Heater relais are active, but without current flow (switch-off by thermostat)
Green Heater is active with current flow
Blue Emergency Mode is active
White Identify for 20 seconds or Emergency Mode toggles on or off / very fast flashing at start and stop update

Back to Table of Contents


Five Steps for Successful Implementation

STEP 1: Connection ASKOHEAT+ with local network router and find out its ip-address. In most cases askoheat-eth/ or askoheat.local/ will work.

STEP 2: Determine the IP address via the router. The ASKOHEAT+ is called ASKOHEAT-ETH. To identify an ASKOHEAT LEDs flashes for 20 seconds via the Command askoheat-eth/identify or askoheat.local/identify

STEP 3: Enter in a browser of a device connected to the network askoheat-eth/ or askoheat.local/

STEP 4: Connect your modbus client with the ASKOHEAT+

STEP 5: Useful modbus registers:

Settings for Modbus RTU

Back to Table of Contents


Modbus Registers

1. Short Data Block1 - Address 100…1092 - read only

For minimal implementations the essential values are summarized here. Historically, these have already been available in first generation devices and ensure backward compatibility.

#define (JSON, C++, Python, …) Modbus Address Data Description Vers.
MODBUS_IREG_TEMP1 100 1 word / uint16 / 0-100 °celcius temperature of sensor 1, optional external PT10003 2.0.1
MODBUS_IREG_TEMP2 102 1 word / uint16 / 0-100 °celcius temperature of sensor 2, optional external PT10004 2.0.1
MODBUS_IREG_TEMP3 104 1 word / uint16 / 0-100 °celcius temperature of sensor 3, optional external PT10005 2.0.1
MODBUS_IREG_TEMP4 106 1 word / uint16 / 0-100 °celcius temperature of sensor 4, optional external PT10006 2.0.1
MODBUS_IREG_EMG 108 1 word / byte / 0 = off, 255 = on emergency mode7 2.0.1
MODBUS_IREG_STATUS 109 1 word / uint16 / flags read status of ASKOHEAT+, to switch heaters on or off use register 200 8 2.2.1
MODBUS_IREG_HEATER_LOAD 110 1 word / uint16 / 250-30000 watt actual electrical heater load 2.3.1
MODBUS_IREG_RESERVED 111 1 word / uint16 / tbd reserved for future features tbd
Summary block: [12] words / [24] bytes

Back to Table of Contents


2a. Command Block - Address 200…202 - read/write

The commands are used to control the performance of ASKOHEAT+. Three options are available.

#define (JSON, C++, Python, …) Modbus Address Data Description Vers.
MODBUS_CMD_SET_HEATER_STEP 200 1 word / byte / flags switch heaters on / off 2.0.1
MODBUS_CMD_LOAD_SETPOINT_VALUE 201 1 word / signed int16 / 250-30000 watt Load setpoint for automatic setting of the optimum power level of the ASKOHEAT+. 2.3.1
MODBUS_CMD_LOAD_FEEDIN_VALUE 202 1 word / signed int16 / -30000..30000 watt Use Case Power to Heat: negative values activate thermal storage, ASKOHEAT+ automatically switches to the correct level.* 4.2.1

MODBUS_CMD_SET_HEATER_STEP

low byte:

Important Notes

Back to Table of Contents


2b. Commands - Adress 210…213 - write only

These commands are helpful for service and support or during setup.

#define (JSON, C++, Python, …) Modbus Address Data Description Vers.
MODBUS_CMD_RESET 210 1 word rebooting of ASKOHEAT+ 3.0.1
MODBUS_CMD_RECONFIG 211 1 word return to factory setting, user must make network setting again 3.0.1
MODBUS_CMD_IDENTIFY 212 1 word all LED flashes for 20 seconds for identification purposes 3.0.1
MODBUS_CMD_CLEAR_TEMP_SENSOR_ERROR 213 1 word Clears rememberd temperature sensors after any temperature sensor error 3.0.1

Back to Table of Contents


3. Energymanager Block - Address 300…336 - read/write for selected registers

This register set is useful for use by energy managers. All important values are contained in one block. This reduces the implementation effort, as only one data set has to be loaded. Three registers can be read and written. These are implemented as Holding Registers as well as Input Registers.

#define (JSON, C++, Python, …) Modbus Address Data Description Vers.
MODBUS_EMA_ID 300…315 16 words / char[32]9 / text string read only - serial number (same as MODBUS_PAR_ID) 3.1.1
MODBUS_EMA_STATUS 316 1 word / uint16 / flags read only - read status of ASKOHEAT+ (same as MODBUS_VAL_STATUS) 3.1.1
MODBUS_EMA_HEATER_LOAD 317 1 word / uint16 / 250-30000 watt read only - actual electrical heater load (same as MODBUS_VAL_HEATER_LOAD) 3.1.1
MODBUS_EMA_SET_HEATER_STEP 318 1 word / byte / flags read and write - switch heaters on / off (same as MODBUS_CMD_SET_HEATER_STEP) 3.1.1
MODBUS_EMA_LOAD_SETPOINT_VALUE 319 1 word / signed int16 / 250-30000 watt read and write - Load setpoint for automatic setting of the optimum power level of the ASKOHEAT+. (same as MODBUS_CMD_LOAD_SETPOINT_VALUE) 3.1.1
MODBUS_EMA_LOAD_FEEDIN_VALUE 320 1 word / signed int16 / -30000..30000 watt read and write - Use Case Power to Heat: negative values activate thermal storage, ASKOHEAT+ automatically switches to the correct level. (same as MODBUS_CMD_LOAD_FEEDIN_VALUE) 4.2.1
MODBUS_EMA_EMERGENCY_MODE 321 1 word / byte / 0 = off, 255 = on read only - emergency mode[1.7] (same as MODBUS_IREG_EMG) 3.1.1
MODBUS_EMA_HEAT_PUMP_REQUEST 322 1 word / byte / 0 = off, 255 = on read only - indicates digital input of signal heat pump request 3.1.1
MODBUS_EMA_ANALOG_INPUT_FLOAT 323 2 words / float32 / floating Point volt read only - analog input 0-10V (same as MODBUS_EXT_ANALOG_INPUT_FLOAT) 3.1.1
MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR0 325 2 words / float32 / floating point °celcius read only - temperature of sensor 0, integrated in ASKOHEAT+ PT1000 (same as MODBUS_EXT_TEMPERATURE_FLOAT_SENSOR0) 3.1.1
MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR1 327 2 words / float32 / floating point °celcius read only - temperature of sensor 1, optional external PT1000 (same as MODBUS_EXT_TEMPERATURE_FLOAT_SENSOR1) 3.1.1
MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR2 329 2 words / float32 / floating point °celcius read only - temperature of sensor 2, optional external PT1000 (same as MODBUS_EXT_TEMPERATURE_FLOAT_SENSOR2) 3.1.1
MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR3 331 2 words / float32 / floating point °celcius read only - temperature of sensor 3, optional external PT1000 (same as MODBUS_EXT_TEMPERATURE_FLOAT_SENSOR3) 3.1.1
MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR4 333 2 words / float32 / floating point °celcius read only - temperature of sensor 4, optional external PT1000 (same as MODBUS_EXT_TEMPERATURE_FLOAT_SENSOR4) 3.1.1
MODBUS_EMA_TEMPERATURE_FLOAT_SENSOR5 335 2 words / float32 / floating point °celcius read only - temperature of sensor 5, this sensor is not implemented yet 3.1.1
Summary block: [37] words / [74] bytes

Back to Table of Contents


4. Parameter Block10 - Address 400…449 - read only

Parameters are information about the device configuration, serial number and versions that is permanently stored in the device.

#define (JSON, C++, Python, …) Modbus Address Data Description Vers.
MODBUS_PAR_ID 400…415 16 words / char[32][3.1] / text string serial number 2.2.1
MODBUS_PAR_TYPE 416 1 word / byte11 / flags type of ASKOHEAT+ 3.0.1
MODBUS_PAR_HEATER1_POWER 417 1 word / uint16 / 250-10000 watt electrical power 2.3.1
MODBUS_PAR_HEATER2_POWER 418 1 word / uint16 / 250-10000 watt electrical power 2.3.1
MODBUS_PAR_HEATER3_POWER 419 1 word / uint16 / 250-10000 watt electrical power 2.3.1
MODBUS_PAR_ARTICLE_NUMBER 420…427 8 words / char[16] / text string manufactor article number 3.0.1
MODBUS_PAR_ARTICLE_NAME 428…443 16 words / char[32\ / text string article description* 3.0.1
MODBUS_PAR_SOFTWARE_VERSION 444…446 3 words / char[6] / text string (eg. 1.2.3) software release number 2.2.1
MODBUS_PAR_HARDWARE_VERSION 447…449 3 words / char[6] / text string type and version of hardware 3.0.1
Summary block: [50] words / [100] bytes

MODBUS_PAR_TYPE

Back to Table of Contents


5. Configuration Block12 - Address 500…545 - read/write

This is the configuration area. Here the behavior of ASKOHEAT+ is adjusted to the individual requirements. Typically, only settings for legionella protection are necessary. In some cases, adjustments to the inputs can be useful. When used in a ASKOWALL, the pump run-on time can be adapted to the local conditions. With the info string an individual device tag can be assigned.

#define (JSON, C++, Python, …) Modbus Address Data Description Vers.
MODBUS_CON_RELAY_SEC_COUNT 500 1 word / uint16 / 0-16 seconds switch on inhibit of relays (factory setting is 5 seconds) 2.2.1
MODBUS_CON_PUMP_SEC_COUNT 501 1 word / uint16 / 0-240 seconds pump follow-up time after switching off any heater (factory setting is 30 seconds) 2.2.1
MODBUS_CON_INPUT_SETTING 502 1 word / byte / flags use of inputs (analog input 0-10V, heat pump request, emergency mode, setpoint value or feedin values L1…L3 2.2.1
MODBUS_CON_AUTO_HEATER_OFF_MINUTES 503 1 word / uint16 / 2-10080 minutes cost prevention and safety function: time until the heater switches off automatically read 2.2.1 write 3.0.1
MODBUS_CON_AUTO_HEATER_OFF_SETTING 504 1 word / byte / flags setting of auto off function for cost prevention and safety read 2.2.1 write 3.0.1
MODBUS_CON_CASCADE_PRIO 505 1 word / byte / 0-255 prioritization for cascade control tbd
MODBUS_CON_HEATBUFFER_TYPE 506 1 word / byte / flags type of heatbuffer in which ASKOHEAT+ is installed tbd
MODBUS_CON_HEATBUFFER_VOLUME 507 1 word / uint16 / 0-1000 litres heat storage volume tbd
MODBUS_CON_HEATER_POSITION 508 1 word / byte / flags Installation position of ASKOHEAT+ (ASKOWALL ©, middle or bottom of boiler) 4.1.1
MODBUS_CON_LEGIO_SETTING 509 1 word / uint16 / flags setting of legionella protection 3.0.1
MODBUS_CON_LEGIO_TEMPERATURE 510 1 word / byte / 50-65 heat up temperature for legionella protection 3.0.1
MODBUS_CON_LEGIO_HEATUP_MINUTES 511 1 word / unit16 / 0-1440 heat up time for legionella protection (default 240) 4.1.0
MODBUS_CON_LEGIO_ACTIV_TIME 512…515 4 words / char[8] / text string preferred start time for legionella protection, if necessary if pv energy is available, eg. „12:00 AM" 4.1.7
MODBUS_CON_WATER_HARDNESS 516…519 4 words / char[8] / text string typical water hardness, for example „32 °fH", „hart", °14 dH" tbd
MODBUS_CON_HOUSETYPE 520 1 word / byte / flags kind of building tbd
MODBUS_CON_HOUSEHOLD_MEMBERS 521 1 word / byte / 1-255 number of household members tbd
MODBUS_CON_INFOSTRING 522…537 16 words / char[32] / text string free useable infostring 2.3.1
MODBUS_CON_ADVANCED_SETTING 538 1 word / byte / flags used for future advanced functions tbd
MODBUS_CON_LOAD_FEEDIN_DELAY 539 1 word / uint16 / 0-120 seconds switch-on delay time (seconds) in load feedin mode 4.2.1
MODBUS_CON_LOAD_FEEDIN_BIAS 540 1 word / uint16 / 0-10000 watt bias level = basic energy level in feedin mode 4.2.1
MODBUS_CON_TIMEZONE_BIAS 540 1 word / signed int16 / -12 to 12 timezone for real time clock 4.1.0
MODBUS_CON_SUMMERTIME_BIAS 540 1 word / signed int16 / 0 or 1 summertime (1 hour offset) 4.1.0
MODBUS_CON_RESERVED 543…545 3 words / tbd reserved for future features tbd
MODBUS_CON_RTU_BAUDRATE 546…548 3 words / char[6] / text string Modbus RTU baudrate as text string (default 19200) 4.0.2
MODBUS_CON_RTU_SETTING 549 1 words /char[6] / uint16 / flags Modbus RTU settings 4.0.2
MODBUS_CON_RTU_SLAVE_ID 550 1 word / byte (0 - 240) Modbus RTU slave ID of ASKOHEAT+ or slave ID of connected energy meter (default 99) 4.0.2
MODBUS_CON_RTU_ENERGY_METER_TYPE 551 1 word / byte Modbus RTU type of connected energy meter 4.0.2
MODBUS_CON_LOW_TARIFF_START_TIME_HOUR 552 1 word / byte (0 - 23) Low tariff start time hour 4.1.0
MODBUS_CON_LOW_TARIFF_START_TIME_MINUTE 553 1 word / byte (0 - 59) Low tariff start time minute 4.1.0
MODBUS_CON_LOW_TARIFF_END_TIME_HOUR 554 1 word / byte (0 - 23) Low tariff end time hour 4.1.0
MODBUS_CON_LOW_TARIFF_END_TIME_MINUTE 555 1 word / byte (0 - 59) Low tariff end time minute 4.1.0
MODBUS_CON_ANALOG_IN_HYSTERESIS 556+557 2 words / float32 / floating point volt Hystersis voltage (after the threshold value has been reached, it must be undercut by at least the hysteresis value) 4.1.0
MODBUS_CON_ANALOG_IN_0_THRESHOLD 558+559 2 words / float32 / floating point volt Threshold 0 voltage (this value must be reached to activte the heater step value, until the temperature is reached) 4.1.0
MODBUS_CON_ANALOG_IN_0_THRESHOLD_STEP 560 1 word / byte (0 - 7) Threshold 0 Heater step, if threshold value is reached 4.1.0
MODBUS_CON_ANALOG_IN_0_THRESHOLD_TEMP 561 1 word / byte (0 - 95) °celcius Threshold 0 temperature limit - used if temperature control is activated 4.1.0
MODBUS_CON_ANALOG_IN_1_THRESHOLD 562+563 2 words / float32 / floating point volt Threshold 1 voltage 4.1.0
MODBUS_CON_ANALOG_IN_1_THRESHOLD_STEP 564 1 word / byte (0 - 7) Threshold 1 Heater step 4.1.0
MODBUS_CON_ANALOG_IN_1_THRESHOLD_TEMP 565 1 word / byte (0 - 95) °celcius Threshold 1 temperature limit 4.1.0
MODBUS_CON_ANALOG_IN_2_THRESHOLD 566+567 2 words / float32 / floating point volt Threshold 2 voltage 4.1.0
MODBUS_CON_ANALOG_IN_2_THRESHOLD_STEP 568 1 word / byte (0 - 7) Threshold 2 Heater step 4.1.0
MODBUS_CON_ANALOG_IN_2_THRESHOLD_TEMP 569 1 word / byte (0 - 95) °celcius Threshold 2 temperature limit 4.1.0
MODBUS_CON_ANALOG_IN_3_THRESHOLD 570+571 2 words / float32 / floating point volt Threshold 3 voltage 4.1.0
MODBUS_CON_ANALOG_IN_3_THRESHOLD_STEP 572 1 word / byte (0 - 7) Threshold 3 Heater step 4.1.0
MODBUS_CON_ANALOG_IN_3_THRESHOLD_TEMP 573 1 word / byte (0 - 95) °celcius Threshold 3 temperature limit 4.1.0
MODBUS_CON_ANALOG_IN_4_THRESHOLD 574+575 2 words / float32 / floating point volt Threshold 4 voltage 4.1.0
MODBUS_CON_ANALOG_IN_4_THRESHOLD_STEP 576 1 word / byte (0 - 7) Threshold 4 Heater step 4.1.0
MODBUS_CON_ANALOG_IN_4_THRESHOLD_TEMP 577 1 word / byte (0 - 95) °celcius Threshold 4 temperature limit 4.1.0
MODBUS_CON_ANALOG_IN_5_THRESHOLD 578+579 2 words / float32 / floating point volt Threshold 5 voltage 4.1.0
MODBUS_CON_ANALOG_IN_5_THRESHOLD_STEP 580 1 word / byte (0 - 7) Threshold 5 Heater step 4.1.0
MODBUS_CON_ANALOG_IN_5_THRESHOLD_TEMP 581 1 word / byte (0 - 95) °celcius Threshold 5 temperature limit 4.1.0
MODBUS_CON_ANALOG_IN_6_THRESHOLD 582+583 2 words / float32 / floating point volt Threshold 6 voltage 4.1.0
MODBUS_CON_ANALOG_IN_6_THRESHOLD_STEP 584 1 word / byte (0 - 7) Threshold 6 Heater step 4.1.0
MODBUS_CON_ANALOG_IN_6_THRESHOLD_TEMP 585 1 word / byte (0 - 95) °celcius Threshold 6 temperature limit 4.1.0
MODBUS_CON_ANALOG_IN_7_THRESHOLD 586+587 2 words / float32 / floating point volt Threshold 7 voltage 4.1.0
MODBUS_CON_ANALOG_IN_7_THRESHOLD_STEP 588 1 word / byte (0 - 7) Threshold 7 Heater step 4.1.0
MODBUS_CON_ANALOG_IN_7_THRESHOLD_TEMP 589 1 word / byte (0 - 95) °celcius Threshold 7 temperature limit 4.1.0
MODBUS_CON_HEAT_PUMP_REQUEST_OFF_STEP 590 1 word / byte (0 - 7) Heater step if digital input (Heat Pump Request) is open (logic on) 4.1.0
MODBUS_CON_HEAT_PUMP_REQUEST_ON_STEP 591 1 word / byte (0 - 7) Heater step if digital input (Heat Pump Request) is closed (logic on) 4.1.0
MODBUS_CON_EMERGENCY_MODE_ON_STEP 592 1 word / byte (0 - 7) Heater step if emergency mode is active 4.1.0
MODBUS_CON_TEMPERATURE_HYSTERESIS 593 1 word / byte (0 - 95) °celcius Temperature Hystersis, if temperature control is activated 4.1.0
MODBUS_CON_TEMPERATURE_SETTING 594 1 word / byte / flags Selection of temperature sensors for temperature monitoring 4.1.0
MODBUS_CON_TEMPERATURE_MINIMUM 595 1 word / byte (0 - 95) °celcius Temperature limit used to hold minimal temperature 4.1.0
MODBUS_CON_TEMPERATURE_SET_HEATER_STEP 596 1 word / byte (0 - 95) °celcius Temperature limit if controlled by Set Heater Step 4.1.0
MODBUS_CON_TEMPERATURE_LOAD_SETPOINT 597 1 word / byte (0 - 95) °celcius Temperature limit if controlled by Load Setpoint or Load Feedin respectively SMA SEMP or SENEC.Home 4.1.0
MODBUS_CON_TEMPERATURE_LOW_TARIFF 598 1 word / byte (0 - 95) °celcius Temperature limit if low tariff mode is active 4.1.0
MODBUS_CON_TEMPERATURE_HEAT_PUMP_REQUEST 599 1 word / byte (0 - 95) °celcius Temperature limit if controlled by Heat Pump Request (digial input) or Emergency Mode 4.1.0
Summuary block: [100] words / [200] bytes
MODBUS_CON_INPUT_SETTING

high byte:

low byte:

MODBUS_CON_AUTO_HEATER_OFF_SETTING
MODBUS_CON_HEATBUFFER_TYPE
MODBUS_CON_HEATER_POSITION
MODBUS_CON_LEGIO_SETTING

high byte:

low byte:

MODBUS_CON_HOUSETYPE
MODBUS_CON_ADVANCED_SETTING
MODBUS_CON_RTU_BAUDRATE

valid values

MODBUS_CON_RTU_SETTING

high byte:

low byte:

MODBUS_CON_RTU_ENERGY_METER_TYPE

Supported energy meter:

** MODBUS_CON_TEMPERATURE_SETTING**

low byte:

Back to Table of Contents


6. Data Values Block - Address 600…646 - read only

All relevant information about operating times, current measured values, status flags and internal counter are listed here. Many of the registers are output for information only.

#define (JSON, C++, Python, …) Modbus Address Data Description Vers.
MODBUS_VAL_OPERATING_TIME 600+601 2 words / array[4][5.11] / dd:hh:mm operation hour counter of ASKOHEAT+ 2.2.1
MODBUS_VAL_OPERATING_HEATER1 602+603 2 words / array[4] / dd:hh:mm operation hour counter of heater 1 2.2.1
MODBUS_VAL_OPERATING_HEATER2 604+605 2 words / array[4] / dd:hh:mm operation hour counter of heater 2 2.2.1
MODBUS_VAL_OPERATING_HEATER3 606+607 2 words / array[4] / dd:hh:mm operation hour counter of heater 3 2.2.1
MODBUS_VAL_OPERATING_PUMP 608+609 2 words / array[4] / dd:hh:mm operation hour counter of pump 2.2.1
MODBUS_VAL_OPERATING_VALVE 610+611 2 words / array[4] / dd:hh:mm operation hour counter of valve (not implemented yet) 2.2.1
MODBUS_VAL_RELAY1_COUNT 612+613 2 words / int32 / 0-100.000 number of heater 1 relay (1) on switchings 2.2.1
MODBUS_VAL_RELAY2_COUNT 614+615 2 words / int32 / 0-100.000 number of heater 2 relay (2) on switchings 2.2.1
MODBUS_VAL_RELAY3_COUNT 616+617 2 words / int32 / 0-100.000 number of heater 3 relay (3) on switchings 2.2.1
MODBUS_VAL_RELAY4_COUNT 618+619 2 words / int32 / 0-100.000 number of pump relay (4) on switchings 2.2.1
MODBUS_VAL_RELAY5_COUNT 620+621 2 words / int32 / 0-100.000 number of valve relay (5) on switchings 2.2.1
MODBUS_VAL_RELAY_COUNTDOWN 622 1 word / uint16 / unsigned integer debug information only, if value > 0 then heater relays on protection (count down) is active 2.2.1
MODBUS_VAL_PUMP_COUNTDOWN 623 1 word / uint16 / unsigned integer debug information only, if value > 0 then pump relay follow-up time (count down) is active 2.2.1
MODBUS_VAL_STATUS 624 1 word / uint16 / flags read status of ASKOHEAT+, to switch heaters on or off use register 200 13 2.2.1
MODBUS_VAL_HEATER_LOAD 625 1 word / uint16 / 250-30000 watt actual electrical heater load 2.3.1
MODBUS_VAL_ACTUAL_CONTROL_INPUT 626 1 word / byte / flags status of legionella protection 4.1.0
MODBUS_VAL_LEGIO_STATUS 627 1 word / byte / flags status of legionella protection 3.0.1
MODBUS_VAL_LEGIO_OPERATING 628+629 2 words / array[4][5.17] / dd:hh:mm minute counter since last active legionella protection activation 3.0.1
MODBUS_VAL_LEGIO_COUNTDOWN 630 1 word / uint16 / unsinged integer countdown timer if legionella protection is active (seconds plateau time) 3.0.1
MODBUS_VAL_ERROR_STATUS 631 1 word / uint16 / flags error status flags temperature sensor fails can be cleared by using MODBUS_CMD_CLEAR_TEMP_SENSOR_ERROR 2.2.1
MODBUS_VAL_TEMPERATURE_STATUS 632 1 word / byte / flags temperature sensor flags, installed sensors will be rembembered until they are cleard by using MODBUS_CMD_CLEAR_TEMP_SENSOR_ERROR 2.2.1
MODBUS_VAL_TEMPERATURE_SENSOR5 633 1 word / uint16 / 0-100 °celcius temperature of sensor 5, this sensor is not implemented yet 2.2.1
MODBUS_VAL_TEMPERATURE_SENSOR4 634 1 word / uint16 / 0-100 °celcius temperature of sensor 4, optional external PT1000 2.2.1
MODBUS_VAL_TEMPERATURE_SENSOR3 635 1 word / uint16 / 0-100 °celcius temperature of sensor 3, optional external PT1000 2.2.1
MODBUS_VAL_TEMPERATURE_SENSOR2 636 1 word / uint16 / 0-100 °celcius temperature of sensor 2, optional external PT1000 2.2.1
MODBUS_VAL_TEMPERATURE_SENSOR1 637 1 word / uint16 / 0-100 °celcius temperature of sensor 1, optional external PT1000 2.2.1
MODBUS_VAL_TEMPERATURE_SENSOR0 638 1 word / uint16 / 0-100 °celcius temperature of sensor 0, integrated in ASKOHEAT+ PT1000 2.2.1
MODBUS_VAL_ANALOG_INPUT_STEP 639 1 word / byte / 0-7 calculated heater step based on analog input 0-10V signal 2.2.1
MODBUS_VAL_ACTUAL_TEMPERATURE_LIMIT 640 1 words / uint16 / 0-99 Actual used temperature limit, based on the actual valid control input 4.1.0
MODBUS_VAL_AUTO_HEATER_OFF_COUNTDOWN 641+642 2 / int32 / 0-1440 minutes countdown time until auto switch off heaters 2.2.1
MODBUS_VAL_EMERGENCY_OFF_COUNTDOWN 643+644 2 / int32 / 0-1440 minutes countdown time until emergency mode will switched off 3.1.1
MODBUS_VAL_BOOT_COUNT 645+646 2 words / int32 / 0-100.000 number of valve bootings of ASKOHEAT+ 4.0.4
MODBUS_VAL_OPERATING_SET_HEATER_STEP 647+648 2 words / array[4] / dd:hh:mm operation hour counter of Set Heat Step 4.1.1
MODBUS_VAL_OPERATING_LOAD_SETPOINT 649+650 2 words / array[4] / dd:hh:mm operation hour counter of Load Setpoint 4.1.1
MODBUS_VAL_OPERATION_LOAD_FEEDIN 651+652 2 words / array[4] / dd:hh:mm operation hour counter of Load Feedin 4.1.1
MODBUS_VAL_OPERATION_HEAT_PUMP_REQUEST 653+654 2 words / array[4] / dd:hh:mm operation hour counter of Heat Pump Request 4.1.1
MODBUS_VAL_OPERATION_ANALOG_IN 655+656 2 words / array[4] / dd:hh:mm operation hour counter of Analog Input 4.1.1
MODBUS_VAL_OPERATION_EMERGENCY_MODE 657+658 2 words / array[4] / dd:hh:mm operation hour counter of Emergency Mode 4.1.1
MODBUS_VAL_OPERATION_LEGIO 659+660 2 words / array[4] / dd:hh:mm operation hour counter of Legionella Protection 4.1.1
MODBUS_VAL_OPERATION_LOW_TARIFF 661+662 2 words / array[4] / dd:hh:mm operation hour counter of Low Tariff Mode 4.1.1
MODBUS_VAL_OPERATION_MINIMAL_TEMP 663+664 2 words / array[4] / dd:hh:mm operation hour counter of Hold Minimal Temperature Mode 4.1.1
MODBUS_VAL_OPERATING_HEATER_STEP_1 665+666 2 words / array[4] / dd:hh:mm operation hour counter of Heater Step 1 4.1.1
MODBUS_VAL_OPERATING_HEATER_STEP_2 667+668 2 words / array[4] / dd:hh:mm operation hour counter of Heater Step 2 4.1.1
MODBUS_VAL_OPERATING_HEATER_STEP_3 669+670 2 words / array[4] / dd:hh:mm operation hour counter of Heater Step 3 4.1.1
MODBUS_VAL_OPERATING_HEATER_STEP_4 671+672 2 words / array[4] / dd:hh:mm operation hour counter of Heater Step 4 4.1.1
MODBUS_VAL_OPERATING_HEATER_STEP_5 673+674 2 words / array[4] / dd:hh:mm operation hour counter of Heater Step 5 4.1.1
MODBUS_VAL_OPERATING_HEATER_STEP_6 675+676 2 words / array[4] / dd:hh:mm operation hour counter of Heater Step 6 4.1.1
MODBUS_VAL_OPERATING_HEATER_STEP_7 677+678 2 words / array[4] / dd:hh:mm operation hour counter of Heater Step 7 4.1.1
MODBUS_VAL_SET_HEATER_STEP_COUNT 679+680 2 words / int32 / 0-100.000 number of Set Heater Step usage 4.1.1
MODBUS_VAL_LOAD_SETPOINT_COUNT 681+682 2 words / int32 / 0-100.000 number of Load Setpoint usage 4.1.1
MODBUS_VAL_LOAD_FEEDIN_COUNT 683+684 2 words / int32 / 0-100.000 number of Load Feedin usage 4.1.1
MODBUS_VAL_HEAT_PUMP_REQUEST_COUNT 685+686 2 words / int32 / 0-100.000 number of Heat Pump Request usage 4.1.1
MODBUS_VAL_ANALOG_IN_COUNT 687+688 2 words / int32 / 0-100.000 number of Analog Input usage 4.1.1
MODBUS_VAL_EMERGENCY_MODE_COUNT 689+690 2 words / int32 / 0-100.000 number of Emergency Mode usage 4.1.1
MODBUS_VAL_LEGIO_COUNT 691+692 2 words / int32 / 0-100.000 number of Legionella Protection usage 4.1.1
MODBUS_VAL_LOW_TARIFF_COUNT 693+694 2 words / int32 / 0-100.000 number of Low Tariff Mode usage 4.1.1
MODBUS_VAL_MINIMAL_TEMP_COUNT 695+696 2 words / int32 / 0-100.000 number of Hold Minimal Temperature usage 4.1.1
MODBUS_VAL_MAX_TEMPERATURE 697 1 word / byte (0 - 255) °celcius Highest measured temperature 4.1.1
Summary block: [98] words / [196] bytes
MODBUS_VAL_STATUS and MODBUS_IREG_STATUS

high byte:

low byte:

MODBUS_VAL_ACTUAL_CONTROL_INPUT

high byte:

low byte:

MODBUS_VAL_LEGIO_STATUS

low byte:

MODBUS_VAL_ERROR_STATUS

high byte:

low byte:

MODBUS_VAL_TEMPERATURE_STATUS

high byte:

low byte:

Back to Table of Contents


7. Extended Values Block - Address 700…758 - read only

Additional values are listed in this block, e.g. temperature values as floating point. In normal applications these registers are not needed.

#define (JSON, C++, Python, …) Modbus Address Data Description Vers.
MODBUS_EXT_STATUS 700 1 word / uint16 / flags read status of ASKOHEAT+, to switch heaters on or off use register 200 [5.2] 2.2.1
MODBUS_EXT_HEATER_LOAD 701 1 word / int16 / 250-30000 watt actual electrical heater load 2.3.1
MODBUS_EXT_RESERVED 702 1 word / int16 / tbd reserved for future features tbd
MODBUS_EXT_LEGIO_STATUS 703 1 word / byte / flags status of legionella protection 3.0.1
MODBUS_EXT_TEMPERATURE_FLOAT_SENSOR5 704+705 2 words / float32 / floating point °celcius temperature of sensor 5, this sensor is not implemented yet 2.2.1
MODBUS_EXT_TEMPERATURE_FLOAT_SENSOR4 706+707 2 words / float32 / floating point °celcius temperature of sensor 4, optional external PT1000 2.2.1
MODBUS_EXT_TEMPERATURE_FLOAT_SENSOR3 708+709 2 words / float32 / floating point °celcius temperature of sensor 3, optional external PT1000 2.2.1
MODBUS_EXT_TEMPERATURE_FLOAT_SENSOR2 710+711 2 words / float32 / floating point °celcius temperature of sensor 2, optional external PT1000 2.2.1
MODBUS_EXT_TEMPERATURE_FLOAT_SENSOR1 712+713 2 words / float32 / floating point °celcius temperature of sensor 1, optional external PT1000 2.2.1
MODBUS_EXT_TEMPERATURE_FLOAT_SENSOR0 714+715 2 words / float32 / floating point °celcius temperature of sensor 0, integrated in ASKOHEAT+ PT1000 2.2.1
MODBUS_EXT_ANALOG_INPUT_FLOAT 716 2 words / float32 / floating Point volt analog input 0-10V 2.2.1
MODBUS_EXT_LOAD_SETPOINT_VALUE 718 1 word / signed int16 / 250-30000 watt Load setpoint for automatic setting of the optimum power level of the ASKOHEAT+. 2.3.1
MODBUS_EXT_LOAD_FEEDIN_VALUE 719 1 word / signed int16 / -30000..30000 watt Use Case Power to Heat: negative values activate thermal storage, ASKOHEAT+ automatically switches to the correct level. 4.2.1
MODBUS_EXT_RESERVE1 720…744 5 / char[10] / text string reserved for future use 2.2.1
MODBUS_EXT_MILLIS 725+726 2 / int32 / 0-4.294.967.295 debug information only (RTOS milliseconds) 2.2.1
MODBUS_EXT_RESERVE2 727…742 16 / char[32] / text string reserved for future use 2.2.1
MODBUS_EXT_RESERVE3 743…758 16 / char[32] / text string reserved for future use 2.2.1
Summary block: [59] words / [118] byes

Back to Table of Contents


  1. registers are downward compatible with older ASKOHEAT versions - this block is very short with most important informations  

  2. address register in decimal  

  3. same as register 637 MODBUS_VAL_TEMPERATURE_SENSOR1 

  4. same as register 636 MODBUS_VAL_TEMPERATURE_SENSOR2 

  5. same as register 635 MODBUS_VAL_TEMPERATURE_SENSOR3 

  6. same as register 634 MODBUS_VAL_TEMPERATURE_SENSOR4 

  7. see status flag low byte bit7 in register 624 MODBUS_VAL_STATUS 

  8. read register 624, for setting use register 200 

  9. char[n] is a zero terminated string formed from low and high byte of an array of words 

  10. parameters are (pre)set at the factory 

  11. byte is the lowbyte of a word 

  12. value is can be configured within the ASKOHEAT+ hosted webserver in configuration mode 

  13. read register 624, for setting use register 200