# DAIKIN\_EKMBDXB7V1\_IDU\_FC16\_2000\_2143

## `DAIKIN_EKMBDXB7V1_IDU_FC16_2000_2143` (FB)

`FUNCTION_BLOCK` DAIKIN\_EKMBDXB7V1\_IDU\_FC16\_2000\_2143

### Representation

<figure><img src="https://2592874069-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQR4vCFzt6ixgsqlR3pdR%2Fuploads%2F6I5ovGgnQNwFtfOzggEi%2FDAIKIN_EKMBDXB7V1_IDU_FC16_2000_2143.png?alt=media&#x26;token=27db0ae8-5eaa-4065-9ef5-493775aa64ff" alt=""><figcaption></figcaption></figure>

### Short description

> Change of setpoints - 1 of up to 48 Daikin indoor units
>
> Typical application: Central control of Daikin indoor units via the Daikin Modbus interface EKMBDXB7V1

#### Guidelines - Software creation

The following function codes (FC) are supported: 3, 4, 6 and 16. The following transmission rates are supported: 9600 and 19200 bit/s. For addressing, use the address specifications, not the register addresses (address = register - 1). The Modbus addresses 1 - 15 can be set directly on the DIP switches in the interface. In FC03, a maximum of 32 registers may be requested in one request telegram (deviating from the Modbus standard). In FC04, a maximum of 32 registers may be requested in one request telegram (deviating from the Modbus standard). In FC16, a maximum of 30 registers may be written in one request telegram (deviating from the Modbus standard). The following transmission parameters were tested: 19200 baud, 8-N-1. The interface supports the following exception codes: 0x81, 0x82 and 0x83. The number of control commands per indoor unit is limited to 7000/year!!! Taking the tested transmission parameters into account, the time between the end of the response telegram and the next request telegram must be at least 22.5 ms

All registers read with FC04 are always available with current values. All registers read with FC03 are only available with current values once during each restart of the gateway

\&#xNAN;**\*\*\*\*\*\*\*\*\*\*\*\*\*\*** \&#xNAN;**\* Functions \*** \&#xNAN;**\*\*\*\*\*\*\*\*\*\*\*\*\*\***

In this FB, the relevant setpoints of all up to 48 indoor units are captured and transferred (FC16: addresses 2000 - 2143) The setpoints are provided in the array `arstIndoorUnits_Setpoints_1_IN` separately for each indoor unit as a structure element. The setpoints of an indoor unit are only updated if the corresponding write/read permission is available (input `arxIndoorUnits_ReadWriteState`).

Procedure for changing a setpoint (FC06 or FC16) (see DAIKIN documentation !!!)

1. Detection of changes to the current setpoints (compare array with index `_IN` with the array with index `_OLD` compare)

If setpoint changes occur, the following further steps are required: 2) Read current actual values (FC04: addresses 2000 - 2287) (storage in the array with index `_CURRENT`) 3) Write current actual values as setpoints (FC16: addresses 2000 - 2143) (copy array with index `_CURRENT` into the array with index `_OUT` copy) 4) Write current setpoints (FC16: addresses 2000 - 2143) (array with index `_IN` into the array with index `_OUT` copy), (array with index `_IN` into the array with index `_OUT` copy)

InOut:

| Scope       | Name                                   | Type                                                                                            | Initial     | Comment                                                                                                                                                                                                                                                          |
| ----------- | -------------------------------------- | ----------------------------------------------------------------------------------------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Input       | `xEn`                                  | `BOOL`                                                                                          | TRUE        | Enable / disable communication (TRUE = enable)                                                                                                                                                                                                                   |
| Input       | `byUnitId`                             | `BYTE`                                                                                          | 0           | Address of the device (interface) (1 .. 15)                                                                                                                                                                                                                      |
| Input       | `xUpdateSetp`                          | `BOOL`                                                                                          | FALSE       | <p>Update of setpoints (on every rising edge<br>)</p>                                                                                                                                                                                                            |
| Input       | `xCheckChanges`                        | `BOOL`                                                                                          | FALSE       | <p>Detection of changes in the array<br><code>arstIndoorUnits\_Setpoint\_Values\_1\_IN</code> (with every<br>rising edge)</p>                                                                                                                                    |
| Input       | `xResError`                            | `BOOL`                                                                                          | FALSE       | <p>Reinitialization of the output <code>eErrorCodeCom</code> (with every<br>rising edge)</p>                                                                                                                                                                     |
| Input       | `arxIndoorUnits_ReadWriteState`        | <p><code>ARRAY</code> \[1 .. 4, 0 .. 15] <code>OF</code><br><code>BOOL</code></p>               |             | <p>Array with the read/write permissions of the indoor units of all groups (1-00 … 4-15)<br>1st dimension: group, 2nd dimension: number of the indoor unit<br>Array element = FALSE: no read/write permission<br>Array element = TRUE: read/write permission</p> |
| Input       | `arstIndoorUnits_Setpoint_Values_1_IN` | <p><code>ARRAY</code> \[1 .. 3, 0 .. 15] <code>OF</code><br>EKMBDXB7V1\_SETPOINT\_VALUES\_1</p> |             | <p>Array with the relevant setpoints of the indoor units of all groups (1-00 … 3-15)<br>1st dimension: group, 2nd dimension: number of the indoor unit<br>Array element = structure with the setpoints</p>                                                       |
| Input       | `xResFilterSign`                       | `BOOL`                                                                                          | FALSE       | <p>Input for resetting the filter maintenance indication on all<br>indoor units (TRUE = reset)</p>                                                                                                                                                               |
| Inout       | `ModbusClient`                         | `ModbusClientBase`                                                                              |             | Client of the device                                                                                                                                                                                                                                             |
| 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      | `xBusy`                                | `BOOL`                                                                                          |             | Communication indicator (TRUE = communication)                                                                                                                                                                                                                   |
| Input Const | `xEnFanControl`                        | `BOOL`                                                                                          | TRUE        | <p>General enable / disable of fan control for<br>all 48 indoor units (TRUE = enable)</p>                                                                                                                                                                        |
| Input Const | `tTimeCheckChanges`                    | `TIME`                                                                                          | TIME#1s0ms  | <p>Update interval for the processes influenced by the input<br><code>xCheckChanges</code> influenced</p>                                                                                                                                                        |
| Input Const | `tTimeUpdateSetp`                      | `TIME`                                                                                          | TIME#45s0ms | <p>Update interval for the processes influenced by the input<br><code>xUpdateSetp</code> influenced</p>                                                                                                                                                          |
