# KAMSTRUP\_MULTICAL\_XX3\_DEFAULT

## `KAMSTRUP_MULTICAL_XX3_DEFAULT` (FB)

FUNCTION\_BLOCK KAMSTRUP\_MULTICAL\_XX3\_DEFAULT

### Guidelines - Software creation

The following function codes (FC) are supported: 3, 4, 8, 16, 43, 65 and 66\
\
This function block can be used with the following communication modules:\
\\

1. HC-003-67: Modbus-RTU with pulse inputs In-A and In-B (slot 1) or In-A2 and In-B2 (slot 2)\\
2. HC-003-82: Modbus-TCP with pulse 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\
\
Data is read according to the 'Default' profile (Default datagram = xx-yy-300)\
\
Unused registers contain the following contents depending on data type:\
\
1\) Signed integer (16 bit): 0x00000000\
2\) Integer (32 bit): 0xFFFFFFFF\
3\) Signed integer (32 bit): 0x7FFFFFFF\
4\) Float (32 bit): 0x4F800000\
\
Calibration of the temperature sensors must be performed on the device; however, no adjustment is possible via Modbus.\
\
Modbus addresses 1 - 247 can be set using appropriate Kamstrup tools.\
\
Measured values - Adjustment: Class ???\
\
\\

InOut:

| Scope       | Name                    | Type                                    | Initial                                          | Comment                                                                                                                                                       |
| ----------- | ----------------------- | --------------------------------------- | ------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Input       | `xEn`                   | `BOOL`                                  | TRUE                                             | Enable / disable of communication ( TRUE = enabled )                                                                                                          |
| Input       | `byUnitId`              | `BYTE`                                  | 1                                                | Device address ( 1 .. 247 )                                                                                                                                   |
| Input       | `xUpdateActual`         | `BOOL`                                  | FALSE                                            | <p>Update of actual values ( on each rising edge<br>)</p>                                                                                                     |
| Input       | `xUpdateConfig`         | `BOOL`                                  | FALSE                                            | <p>Update of configuration (on every rising<br>edge) (write and read access)</p>                                                                              |
| Input       | `xUpdateInfo`           | `BOOL`                                  | FALSE                                            | <p>Update of information ( on each rising<br>edge )</p>                                                                                                       |
| Input       | `xResError`             | `BOOL`                                  | FALSE                                            | <p>Reinitialization of the outputs ‘eErrorCodeCom’ and<br>‘xErrorCodeDev’ to the error-free state (on every<br>rising edge)</p>                               |
| Inout       | `ModbusClient`          | `ModbusClientBase`                      |                                                  | Client of the device                                                                                                                                          |
| Output      | `rVolFlowV1`            | `REAL`                                  | 0.0                                              | Measured quantity 'Current volumetric flow V1'                                                                                                                |
| Output      | `eUnitVolFlowV1`        | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Current volumetric flow V1'                                                                                                    |
| Output      | `rVolFlowV2`            | `REAL`                                  | 0.0                                              | Measured quantity 'Current volumetric flow V2'                                                                                                                |
| Output      | `eUnitVolFlowV2`        | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Current volumetric flow V2'                                                                                                    |
| Output      | `rPower`                | `REAL`                                  | 0.0                                              | Measured quantity 'Current power'                                                                                                                             |
| Output      | `eUnitPower`            | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Current power'                                                                                                                 |
| Output      | `rT1`                   | `REAL`                                  | 0.0                                              | Measured quantity 'Current temperature T1'                                                                                                                    |
| Output      | `eUnitT1`               | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Current temperature T1'                                                                                                        |
| Output      | `rT2`                   | `REAL`                                  | 0.0                                              | Measured quantity 'Current temperature T2'                                                                                                                    |
| Output      | `eUnitT2`               | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Current temperature T2'                                                                                                        |
| Output      | `rT3`                   | `REAL`                                  | 0.0                                              | Measured quantity 'Current temperature T3'                                                                                                                    |
| Output      | `eUnitT3`               | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Current temperature T3'                                                                                                        |
| Output      | `rT4`                   | `REAL`                                  | 0.0                                              | Measured quantity 'Current temperature T4'                                                                                                                    |
| Output      | `eUnitT4`               | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Current temperature T4'                                                                                                        |
| Output      | `rDeltaT1_T2`           | `REAL`                                  | 0.0                                              | Measured quantity 'Current temperature difference T1-T2'                                                                                                      |
| Output      | `eUnitDeltaT1_T2`       | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Current temperature difference T1-T2'                                                                                          |
| Output      | `rPowerP1`              | `REAL`                                  | 0.0                                              | Measured quantity 'Current power P1'                                                                                                                          |
| Output      | `eUnitPowerP1`          | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Current power P1'                                                                                                              |
| Output      | `rPowerP2`              | `REAL`                                  | 0.0                                              | Measured quantity 'Current power P2'                                                                                                                          |
| Output      | `eUnitPowerP2`          | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Current power P2'                                                                                                              |
| Output      | `rHeatEnergyE1`         | `REAL`                                  | 0.0                                              | Measured quantity 'Current heat energy E1'                                                                                                                    |
| Output      | `eUnitHeatEnergyE1`     | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Current heat energy E1'                                                                                                        |
| Output      | `rHeatEnergyE2`         | `REAL`                                  | 0.0                                              | Measured quantity 'Current heat energy E2'                                                                                                                    |
| Output      | `eUnitHeatEnergyE2`     | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Current heat energy E2'                                                                                                        |
| Output      | `rCoolingEnergyE3`      | `REAL`                                  | 0.0                                              | Measured quantity 'Current cooling energy E3'                                                                                                                 |
| Output      | `eUnitCoolingEnergyE3`  | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Current cooling energy E3'                                                                                                     |
| Output      | `rInletEnergyE4`        | `REAL`                                  | 0.0                                              | Measured quantity 'Current energy at inlet E4'                                                                                                                |
| Output      | `eUnitInletEnergyE4`    | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Current energy at inlet E4'                                                                                                    |
| Output      | `rOutletEnergyE5`       | `REAL`                                  | 0.0                                              | Measured quantity 'Current energy at outlet E5'                                                                                                               |
| Output      | `eUnitOutletEnergyE5`   | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Current energy at outlet E5'                                                                                                   |
| Output      | `rVolumeV1`             | `REAL`                                  | 0.0                                              | Measured quantity 'Cumulative volume V1'                                                                                                                      |
| Output      | `eUnitVolumeV1`         | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Cumulative volume V1'                                                                                                          |
| Output      | `rVolumeV2`             | `REAL`                                  | 0.0                                              | Measured quantity 'Cumulative volume V2'                                                                                                                      |
| Output      | `eUnitVolumeV2`         | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Cumulative volume V2'                                                                                                          |
| Output      | `rPulseInputA1`         | `REAL`                                  | 0.0                                              | Measured quantity 'Cumulative pulse count input A1'                                                                                                           |
| Output      | `eUnitPulseInputA1`     | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Cumulative pulse count input A1'                                                                                               |
| Output      | `rPulseInputB1`         | `REAL`                                  | 0.0                                              | Measured quantity 'Cumulative pulse count input B1'                                                                                                           |
| Output      | `eUnitPulseInputB1`     | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Cumulative pulse count input B1'                                                                                               |
| Output      | `rPulseInputA2`         | `REAL`                                  | 0.0                                              | Measured quantity 'Cumulative pulse count input A2'                                                                                                           |
| Output      | `eUnitPulseInputA2`     | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Cumulative pulse count input A2'                                                                                               |
| Output      | `rPulseInputB2`         | `REAL`                                  | 0.0                                              | Measured quantity 'Cumulative pulse count input B2'                                                                                                           |
| Output      | `eUnitPulseInputB2`     | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Cumulative pulse count input B2'                                                                                               |
| Output      | `rMassM1`               | `REAL`                                  | 0.0                                              | Measured quantity 'Cumulative total mass M1'                                                                                                                  |
| Output      | `eUnitMassM1`           | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Cumulative total mass M1'                                                                                                      |
| Output      | `rMassM2`               | `REAL`                                  | 0.0                                              | Measured quantity 'Cumulative total mass M2'                                                                                                                  |
| Output      | `eUnitMassM2`           | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS | KAMSTRUP\_MULTICAL\_XX3\_DEFAULT\_UNITS.No\_unit | Unit of the measured quantity 'Cumulative total mass M2'                                                                                                      |
| Output      | `dwOperatingHours`      | `DWORD`                                 | 0                                                | Operating hours                                                                                                                                               |
| Output      | `dwErrorHours`          | `DWORD`                                 | 0                                                | Operating hours with active error                                                                                                                             |
| Output      | `dwDate`                | `DWORD`                                 | 0                                                | Date in format YY.MM.DD                                                                                                                                       |
| Output      | `dwTime`                | `DWORD`                                 | 0                                                | Time in 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>Indicates whether sensor calibration must be performed in the device<br>(TRUE = calibration required in device, FALSE = calibration in<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 active device errors (<br>error bits 0 - 15 )</p>                                                                             |
| Output      | `stErrorCodeDev_2`      | `STRING`                                | ‘’                                               | <p>String 2 with the numbers of 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 affected by the input<br>‘xUpdateInfo’</p>                                                                               |
| Input Const | `tTimeUpdateConfig`     | `TIME`                                  | TIME#0ms                                         | <p>Update interval for the processes affected by the input<br>‘xUpdateConfig’</p>                                                                             |
| Input Const | `tTimeUpdateActual`     | `TIME`                                  | TIME#3s0ms                                       | <p>Update interval for the processes affected by the input<br>‘xUpdateActual’</p>                                                                             |
