> For the complete documentation index, see [llms.txt](https://support.powerio.com/hub/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://support.powerio.com/hub/codesys-hvac/en/hvac-modbus-library/functionblocks/kamstrup/kamstrup_multical_xx3_default.md).

# KAMSTRUP\_MULTICAL\_XX3\_DEFAULT

## `KAMSTRUP_MULTICAL_XX3_DEFAULT` (FB)

`FUNCTION_BLOCK` KAMSTRUP\_MULTICAL\_XX3\_DEFAULT

### Representation

<figure><img src="/files/6c2f16960348a26e80c1ab018875c29ffc473261" alt=""><figcaption></figcaption></figure>

### Guidelines - Software creation

The following function codes (FC) are supported: 3, 4, 8, 16, 43, 65 and 66

This function block can be used when employing the following communication modules:

1. HC-003-67: Modbus RTU with meter inputs In-A and In-B (slot 1) or In-A2 and In-B2 (slot 2)
2. HC-003-82: Modbus TCP with meter inputs In-A and In-B (slot 1) or In-A2 and In-B2 (slot 2)

These modules can be used in the following meters:

1\) MULTICAL 403 2) MULTICAL 603 3) MULTICAL 803

The data is read according to the profile `Default` read (default datagram = xx-yy-300)

Unused registers contain the following contents depending on the data type:

1\) Signed integer (16 bit): 0x00000000 2) Integer (32 bit): 0xFFFFFFFF 3) Signed integer (32 bit): 0x7FFFFFFF 4) Float (32 bit): 0x4F800000

The calibration of the temperature sensors must be carried out in the device; however, no adjustment is possible via Modbus.

The Modbus addresses 1 - 247 can be set using suitable Kamstrup tools.

Measured values - adjustment: Class ???

InOut:

| Scope       | Name                    | Type                                    | Initial                                          | Comment                                                                                                                                                             |
| ----------- | ----------------------- | --------------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Input       | `xEn`                   | `BOOL`                                  | TRUE                                             | Enable / disable communication (TRUE = enable)                                                                                                                      |
| Input       | `byUnitId`              | `BYTE`                                  | 1                                                | Device address (1 .. 247)                                                                                                                                           |
| Input       | `xUpdateActual`         | `BOOL`                                  | FALSE                                            | <p>Update of actual values (on every rising edge<br>)</p>                                                                                                           |
| Input       | `xUpdateConfig`         | `BOOL`                                  | FALSE                                            | Configuration update (on every rising edge) (write and read access)                                                                                                 |
| Input       | `xUpdateInfo`           | `BOOL`                                  | FALSE                                            | Update of the information (on every rising edge)                                                                                                                    |
| Input       | `xResError`             | `BOOL`                                  | FALSE                                            | <p>Reinitialization of the outputs <code>eErrorCodeCom</code> or<br><code>xErrorCodeDev</code> to the fault-free state (on every rising edge)</p>                   |
| Inout       | `ModbusClient`          | `ModbusClientBase`                      |                                                  | Client of the device                                                                                                                                                |
| Output      | `rVolFlowV1`            | `REAL`                                  | 0.0                                              | Measured value 'Current volume flow V1'                                                                                                                             |
| Output      | `eUnitVolFlowV1`        | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Current volume flow V1'                                                                                                                 |
| Output      | `rVolFlowV2`            | `REAL`                                  | 0.0                                              | Measured value 'Current volume flow V2'                                                                                                                             |
| Output      | `eUnitVolFlowV2`        | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Current volume flow V2'                                                                                                                 |
| Output      | `rPower`                | `REAL`                                  | 0.0                                              | Measured value 'Current power'                                                                                                                                      |
| Output      | `eUnitPower`            | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Current power'                                                                                                                          |
| Output      | `rT1`                   | `REAL`                                  | 0.0                                              | Measured value 'Current temperature T1'                                                                                                                             |
| Output      | `eUnitT1`               | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Current temperature T1'                                                                                                                 |
| Output      | `rT2`                   | `REAL`                                  | 0.0                                              | Measured value 'Current temperature T2'                                                                                                                             |
| Output      | `eUnitT2`               | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Current temperature T2'                                                                                                                 |
| Output      | `rT3`                   | `REAL`                                  | 0.0                                              | Measured value 'Current temperature T3'                                                                                                                             |
| Output      | `eUnitT3`               | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Current temperature T3'                                                                                                                 |
| Output      | `rT4`                   | `REAL`                                  | 0.0                                              | Measured value 'Current temperature T4'                                                                                                                             |
| Output      | `eUnitT4`               | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Current temperature T4'                                                                                                                 |
| Output      | `rDeltaT1_T2`           | `REAL`                                  | 0.0                                              | Measured value 'Current temperature difference T1-T2'                                                                                                               |
| Output      | `eUnitDeltaT1_T2`       | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Current temperature difference T1-T2'                                                                                                   |
| Output      | `rPowerP1`              | `REAL`                                  | 0.0                                              | Measured value 'Current power P1'                                                                                                                                   |
| Output      | `eUnitPowerP1`          | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Current power P1'                                                                                                                       |
| Output      | `rPowerP2`              | `REAL`                                  | 0.0                                              | Measured value 'Current power P2'                                                                                                                                   |
| Output      | `eUnitPowerP2`          | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Current power P2'                                                                                                                       |
| Output      | `rHeatEnergyE1`         | `REAL`                                  | 0.0                                              | Measured value 'Current heat energy E1'                                                                                                                             |
| Output      | `eUnitHeatEnergyE1`     | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Current heat energy E1'                                                                                                                 |
| Output      | `rHeatEnergyE2`         | `REAL`                                  | 0.0                                              | Measured value 'Current heat energy E2'                                                                                                                             |
| Output      | `eUnitHeatEnergyE2`     | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Current heat energy E2'                                                                                                                 |
| Output      | `rCoolingEnergyE3`      | `REAL`                                  | 0.0                                              | Measured value 'Current cooling energy E3'                                                                                                                          |
| Output      | `eUnitCoolingEnergyE3`  | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Current cooling energy E3'                                                                                                              |
| Output      | `rInletEnergyE4`        | `REAL`                                  | 0.0                                              | Measured value 'Current energy at input E4'                                                                                                                         |
| Output      | `eUnitInletEnergyE4`    | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Current energy at input E4'                                                                                                             |
| Output      | `rOutletEnergyE5`       | `REAL`                                  | 0.0                                              | Measured value 'Current energy at output E5'                                                                                                                        |
| Output      | `eUnitOutletEnergyE5`   | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Current energy at output E5'                                                                                                            |
| Output      | `rVolumeV1`             | `REAL`                                  | 0.0                                              | Measured value 'Cumulative volume V1'                                                                                                                               |
| Output      | `eUnitVolumeV1`         | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Cumulative volume V1'                                                                                                                   |
| Output      | `rVolumeV2`             | `REAL`                                  | 0.0                                              | Measured value 'Cumulative volume V2'                                                                                                                               |
| Output      | `eUnitVolumeV2`         | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Cumulative volume V2'                                                                                                                   |
| Output      | `rPulseInputA1`         | `REAL`                                  | 0.0                                              | Measured value 'Cumulative pulse count input A1'                                                                                                                    |
| Output      | `eUnitPulseInputA1`     | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Cumulative pulse count input A1'                                                                                                        |
| Output      | `rPulseInputB1`         | `REAL`                                  | 0.0                                              | Measured value 'Cumulative pulse count input B1'                                                                                                                    |
| Output      | `eUnitPulseInputB1`     | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Cumulative pulse count input B1'                                                                                                        |
| Output      | `rPulseInputA2`         | `REAL`                                  | 0.0                                              | Measured value 'Cumulative pulse count input A2'                                                                                                                    |
| Output      | `eUnitPulseInputA2`     | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Cumulative pulse count input A2'                                                                                                        |
| Output      | `rPulseInputB2`         | `REAL`                                  | 0.0                                              | Measured value 'Cumulative pulse count input B2'                                                                                                                    |
| Output      | `eUnitPulseInputB2`     | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Cumulative pulse count input B2'                                                                                                        |
| Output      | `rMassM1`               | `REAL`                                  | 0.0                                              | Measured value 'Cumulative total mass M1'                                                                                                                           |
| Output      | `eUnitMassM1`           | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Cumulative total mass M1'                                                                                                               |
| Output      | `rMassM2`               | `REAL`                                  | 0.0                                              | Measured value 'Cumulative total mass M2'                                                                                                                           |
| Output      | `eUnitMassM2`           | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured value 'Cumulative total mass M2'                                                                                                               |
| Output      | `dwOperatingHours`      | `DWORD`                                 | 0                                                | Operating hours                                                                                                                                                     |
| Output      | `dwErrorHours`          | `DWORD`                                 | 0                                                | Operating hours with active fault                                                                                                                                   |
| Output      | `dwDate`                | `DWORD`                                 | 0                                                | Date in the format YY.MM.DD                                                                                                                                         |
| Output      | `dwTime`                | `DWORD`                                 | 0                                                | Time in the format HH.MM.SS                                                                                                                                         |
| Output      | `sSerialNum`            | `STRING`                                | ''                                               | Serial number                                                                                                                                                       |
| Output      | `dwMeterType`           | `DWORD`                                 | 0                                                | Device type and firmware version                                                                                                                                    |
| Output      | `dwMainSubType`         | `DWORD`                                 | 0                                                | Device main version and subversion                                                                                                                                  |
| Output      | `dwFirmwareVer`         | `DWORD`                                 | 0                                                | Firmware version                                                                                                                                                    |
| Output      | `xSensorOffsetInDevice` | `BOOL`                                  | FALSE                                            | <p>Indication of whether the sensors must be calibrated in the device<br>(TRUE = calibration in the device required, FALSE = calibration in the<br>FB required)</p> |
| Output      | `xAlarm`                | `BOOL`                                  | FALSE                                            | Collective fault (TRUE = fault)                                                                                                                                     |
| Output      | `xAlarmCom`             | `BOOL`                                  | FALSE                                            | Collective fault - communication (TRUE = fault)                                                                                                                     |
| Output      | `eErrorCodeCom`         | ModbusErrorCode                         |                                                  | Error code - communication (0 = no error)                                                                                                                           |
| Output      | `stErrorCodeDev_1`      | `STRING`                                | ''                                               | <p>String 1 with the numbers of the active device errors (<br>error bits 0 - 15)</p>                                                                                |
| Output      | `stErrorCodeDev_2`      | `STRING`                                | ''                                               | <p>String 2 with the numbers of the active device errors (<br>error bits 16 - 31)</p>                                                                               |
| Output      | `xBusy`                 | `BOOL`                                  | FALSE                                            | Communication indicator (TRUE = communication)                                                                                                                      |
| Input Const | `tTimeUpdateInfo`       | `TIME`                                  | TIME#0ms                                         | <p>Update interval for the processes influenced by the input<br><code>xUpdateInfo</code> influenced</p>                                                             |
| Input Const | `tTimeUpdateConfig`     | `TIME`                                  | TIME#0ms                                         | <p>Update interval for the processes influenced by the input<br><code>xUpdateConfig</code> influenced</p>                                                           |
| Input Const | `tTimeUpdateActual`     | `TIME`                                  | TIME#3s0ms                                       | <p>Update interval for the processes influenced by the input<br><code>xUpdateActual</code> influenced</p>                                                           |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://support.powerio.com/hub/codesys-hvac/en/hvac-modbus-library/functionblocks/kamstrup/kamstrup_multical_xx3_default.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
