# OPPERMANN\_MSX\_MOD\_I\_80\_XX\_X\_XXX

## `OPPERMANN_MSX_MOD_I_80_XX_X_XXX` (FB)

`FUNCTION_BLOCK` OPPERMANN\_MSX\_MOD\_I\_80\_XX\_X\_XXX

### Representation

<figure><img src="https://2592874069-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FQR4vCFzt6ixgsqlR3pdR%2Fuploads%2FSP6jd14BFyYSumGc8Xbe%2FHVACModbus.OPPERMANN_MSX_MOD_I_80_XX_X_XXX_0.png?alt=media&#x26;token=f0af459b-4b5a-4a40-9c93-ff1ac7dd6ced" alt=""><figcaption></figcaption></figure>

### General

> This is a multisensor transmitter for installation in ventilation ducts

> MS3: without VOC sensor MS4: with VOC sensor (optional)

> AI: analogue input module (optional) `DO`: relay output module (optional)

> D-NFC: with NFC display (optional): without NFC display

> The Modbus interface and other parameters are configured via NFC and app when a display is present (variant 1). The Modbus interface and other parameters are configured via buttons when a display is present (variant 2).

> A terminating resistor (120 ohms) can be enabled / disabled.

> The Modbus interface is parameterized as follows without any further settings:

> RTU 9600 baud 8 data bits even parity 1 stop bit device address = 1 polling >= 500ms

> It can be parameterized via Modbus (registers 80 - 82) (device address, baud rate and parity). However, this is not implemented in this function block.

> Registers 19, 20, 64, 65 and 66 may only be written with FC06.

> All changes to the parameter settings are immediately made in RAM (not power-fail safe). Permanent storage requires saving to EEPROM (register 85 = 1).

> > The device then restarts automatically; Modbus communication is possible again only after approx. 15 s.

> The NFC display has higher priority during parameterization than the parameter settings via Modbus. As soon as the NFC display is reconnected, the parameter settings are adopted from the display.

> Only the temperature sensor and the sensor for relative humidity can be calibrated via Modbus. No calibration option is provided for the CO2 sensor or the optional VOC sensor.

> The function of the analogue outputs is defined in registers 5 - 7 (9 = writable via registers 56 - 58). The current setpoints of the analogue outputs are defined in registers 56 - 58. The current setpoints of the MIN/MAX limits of the analogue outputs are defined in registers 44 - 50. The current function of the analogue outputs is read from registers 21 - 23. The current actual values of the analogue outputs are read from registers 5 - 7.

> The current actual values of the analogue inputs are read from registers 53 - 54.

> The state of the relay depends on the output (= control variable) of a two-point controller.

> Up to four measured values can be used as the control variable (selection via register 41). Up to four measured values can be used as the setpoint variable (selection via register 40). The setpoint variable is limited by adjustable limit values (minimum via register 43, maximum via register 42). The controller action can be set in register 37 (0 = inverted, 1 = direct). The switching hysteresis of the controller can be set in register 36 (in percent of the setpoint variable). The current state of the relay is read from register 24 (0 = relay has not pulled in, 1 = relay has pulled in). In direct action `Direct` the relay pulls in if the control variable falls below the setpoint variable by the switching hysteresis. In `Direct` the relay drops out if the control variable exceeds the setpoint variable by the switching hysteresis.

InOut:

| Scope       | Name                     | Type                                                                      | Initial                                                                           | Comment                                                                                                                                                                                           |
| ----------- | ------------------------ | ------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Input       | `xEn`                    | `BOOL`                                                                    | TRUE                                                                              | Enable / disable communication (TRUE = enable)                                                                                                                                                    |
| Input       | `byUnitId`               | `BYTE`                                                                    | 0                                                                                 | Device address (1 .. 127)                                                                                                                                                                         |
| Input       | `xUpdateActual`          | `BOOL`                                                                    | FALSE                                                                             | <p>Updating the actual values (at every rising edge<br>) (range: operation)</p>                                                                                                                   |
| Input       | `xUpdateSetp`            | `BOOL`                                                                    | FALSE                                                                             | <p>Update of setpoints (on every rising edge<br>)</p>                                                                                                                                             |
| Input       | `xUpdateConfigWrite`     | `BOOL`                                                                    | FALSE                                                                             | <p>Configuration update (write access) (<br>with every rising edge)</p>                                                                                                                           |
| Input       | `rAO1_Man_Perc`          | `REAL`                                                                    | 0.0                                                                               | <p>Setpoint at analogue output 1 in manual operation in percent<br>(eAO1\_Config\_Select = MANUAL\_OUTPUT) (0.0 - 100.0%<br>corresponds to 1.0 - 10.0V)</p>                                       |
| Input       | `rAO2_Man_Perc`          | `REAL`                                                                    | 0.0                                                                               | <p>Setpoint at analogue output 2 in manual operation in percent<br>(eAO2\_Config\_Select = MANUAL\_OUTPUT) (0.0 - 100.0%<br>corresponds to 1.0 - 10.0V)</p>                                       |
| Input       | `rAO3_Man_Perc`          | `REAL`                                                                    | 0.0                                                                               | <p>Setpoint at analogue output 3 in manual operation in percent<br>(eAO3\_Config\_Select = MANUAL\_OUTPUT) (0.0 - 100.0%<br>corresponds to 1.0 - 10.0V)</p>                                       |
| Input       | `xCal_CO2_400`           | `BOOL`                                                                    | FALSE                                                                             | <p>Input to trigger calibration of the CO2 sensor to<br>400.0 ppm (at every rising edge)</p>                                                                                                      |
| Input       | `wCO2_ABC_Time`          | `WORD`                                                                    | 7                                                                                 | <p>Cycle time period for the automatic adjustment of the lowest<br>CO2 actual value to the 400 ppm reference (0 = disabled, 1<br>- 15 = time period in days)</p>                                  |
| Input       | `xStoreParamEEPROM`      | `BOOL`                                                                    | FALSE                                                                             | <p>Input to trigger the storage of all parameters in the<br>EEPROM (at every rising edge)</p>                                                                                                     |
| Input       | `xResError`              | `BOOL`                                                                    | FALSE                                                                             | <p>Reinitialization of the output <code>eErrorCodeCom</code> (with every<br>rising edge)</p>                                                                                                      |
| Inout       | `ModbusClient`           | `ModbusClientBase`                                                        |                                                                                   | Client of the device                                                                                                                                                                              |
| Output      | `rTemp`                  | `REAL`                                                                    |                                                                                   | Temperature in XX.X degrees Celsius                                                                                                                                                               |
| Output      | `rTemp_Average`          | `REAL`                                                                    |                                                                                   | Time-averaged temperature in XX.X degrees Celsius                                                                                                                                                 |
| Output      | `rRH`                    | `REAL`                                                                    |                                                                                   | Relative humidity in XX.X percent                                                                                                                                                                 |
| Output      | `rRH_Average`            | `REAL`                                                                    |                                                                                   | Time-averaged relative humidity in XX.X percent                                                                                                                                                   |
| Output      | `rDewPointTemp`          | `REAL`                                                                    |                                                                                   | Dew point - temperature in XX.X degrees Celsius                                                                                                                                                   |
| Output      | `rCO2`                   | `REAL`                                                                    |                                                                                   | CO2 concentration in XXXX ppm                                                                                                                                                                     |
| Output      | `rCO2_Average`           | `REAL`                                                                    |                                                                                   | Time-averaged CO2 concentration in XXXX ppm                                                                                                                                                       |
| Output      | `rVOC`                   | `REAL`                                                                    |                                                                                   | <p>VOC index in XXX index points (0 = good quality, 500 =<br>poor quality)</p>                                                                                                                    |
| Output      | `rVOC_Average`           | `REAL`                                                                    |                                                                                   | <p>Time-averaged VOC index in XXX index points (0 =<br>good quality, 500 = poor quality)</p>                                                                                                      |
| Output      | `rAO1_Perc`              | `REAL`                                                                    |                                                                                   | <p>Actual value at analogue output 1 in percent (0.0 - 100.0%<br>corresponds to 1.0 - 10.0V)</p>                                                                                                  |
| Output      | `rAO2_Perc`              | `REAL`                                                                    |                                                                                   | <p>Actual value at analogue output 2 in percent (0.0 - 100.0%<br>corresponds to 1.0 - 10.0V)</p>                                                                                                  |
| Output      | `rAO3_Perc`              | `REAL`                                                                    |                                                                                   | <p>Actual value at analogue output 3 in percent (0.0 - 100.0%<br>corresponds to 1.0 - 10.0V)</p>                                                                                                  |
| Output      | `eAO1_Config`            | OPPERMANN\_MSX\_MOD\_I\_80\_XX\_X\_XXX\_ANALOG\_OUTPUTS\_CONFIG           |                                                                                   | <p>Configuration of analogue output 1 (9 = writable via<br><code>rAO1\_Man</code>)</p>                                                                                                            |
| Output      | `eAO2_Config`            | OPPERMANN\_MSX\_MOD\_I\_80\_XX\_X\_XXX\_ANALOG\_OUTPUTS\_CONFIG           |                                                                                   | <p>Configuration of analogue output 2 (9 = writable via<br><code>rAO2\_Man</code>)</p>                                                                                                            |
| Output      | `eAO3_Config`            | OPPERMANN\_MSX\_MOD\_I\_80\_XX\_X\_XXX\_ANALOG\_OUTPUTS\_CONFIG           |                                                                                   | <p>Configuration of analogue output 3 (9 = writable via<br><code>rAO3\_Man</code>)</p>                                                                                                            |
| Output      | `xDO1`                   | `BOOL`                                                                    |                                                                                   | <p>State of relay DO1 (FALSE = relay not active, TRUE =<br>relay active) (optional)</p>                                                                                                           |
| Output      | `rAI1_Perc`              | `REAL`                                                                    |                                                                                   | <p>Actual value at analogue input 1 in percent (0.0 - 100.0%<br>corresponds to 1.0 - 10.0V) (optional)</p>                                                                                        |
| Output      | `rAI2_Perc`              | `REAL`                                                                    |                                                                                   | <p>Actual value at analogue input 2 in percent (0.0 - 100.0%<br>corresponds to 1.0 - 10.0V) (optional)</p>                                                                                        |
| Output      | `xSensorOffsetInDevice`  | `BOOL`                                                                    |                                                                                   | <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`                                                                    |                                                                                   | Collective fault (TRUE = fault)                                                                                                                                                                   |
| Output      | `xAlarmCom`              | `BOOL`                                                                    |                                                                                   | Collective fault - communication (TRUE = fault)                                                                                                                                                   |
| Output      | `eErrorCodeCom`          | ModbusErrorCode                                                           |                                                                                   | Error code - communication (0 = no error)                                                                                                                                                         |
| Output      | `xBusy`                  | `BOOL`                                                                    |                                                                                   | Communication indicator (TRUE = communication)                                                                                                                                                    |
| Input Const | `rDO1_Setp_Max`          | `REAL`                                                                    | 2000.0                                                                            | <p>Absolute maximum value of the setpoint of the two-point controller for<br>the relay output DO1 (depending on the selection of the<br>control variable <code>eDO1\_ControlVarSelect</code>)</p> |
| Input Const | `rDO1_Setp_Min`          | `REAL`                                                                    | 0.0                                                                               | <p>Absolute minimum value of the setpoint of the two-point controller for<br>the relay output DO1 (depending on the selection of the<br>control variable <code>eDO1\_ControlVarSelect</code>)</p> |
| Input Const | `eDO1_ControlVarSelect`  | OPPERMANN\_MSX\_MOD\_I\_80\_XX\_X\_XXX\_DO1\_CONTROL\_VARIABLE\_SELECTION | OPPERMANN\_MSX\_MOD\_I\_80\_XX\_X\_XXX\_DO1\_CONTROL\_VARIABLE\_SELECTION.CO2     | <p>Selection of the control variable of the two-point controller for the relay<br>output DO1</p>                                                                                                  |
| Input Const | `rDO1_Setp`              | `REAL`                                                                    | 800.0                                                                             | <p>Setpoint of the two-point controller for the relay output DO1 (<br>depending on the selection of the control variable<br><code>eDO1\_ControlVarSelect</code>)</p>                              |
| Input Const | `eDO1_DirecOfAction`     | OPPERMANN\_MSX\_MOD\_I\_80\_XX\_X\_XXX\_DO1\_DIRECTION\_OF\_ACTION        | OPPERMANN\_MSX\_MOD\_I\_80\_XX\_X\_XXX\_DO1\_DIRECTION\_OF\_ACTION.DIRECT\_ACTION | Direction of action of the two-point controller for the relay output DO1                                                                                                                          |
| Input Const | `rDO1_Hysteres`          | `REAL`                                                                    | 10.0                                                                              | <p>Hysteresis of the two-point controller for the relay output DO1 (<br>in percent of the setpoint <code>rDO1\_Setp</code>)</p>                                                                   |
| Input Const | `xEn_DO_Option`          | `BOOL`                                                                    | FALSE                                                                             | <p>Enable / disable the option ‘1 relay module! (<br>potential-free changeover contact) (TRUE = enable)</p>                                                                                       |
| Input Const | `xEn_AI_Option`          | `BOOL`                                                                    | FALSE                                                                             | <p>Enable / disable the option ‘2 analogue inputs’ (1.0 -<br>10.0V) (TRUE = enable)</p>                                                                                                           |
| Input Const | `tTimeAverageCalc`       | `TIME`                                                                    | TIME#20s0ms                                                                       | <p>Time constant for calculating the averages or for<br>executing the controller functions (5 - 122 s)</p>                                                                                        |
| Input Const | `xEnAutoStoreEEPROM`     | `BOOL`                                                                    | FALSE                                                                             | <p>Enable / disable the automatic storage of all<br>setpoints / parameters in the EEPROM (FALSE: only via input<br>‘xStoreParamEEPROM, TRUE = automatic)</p>                                      |
| Input Const | `rVOC_Max_AOX`           | `REAL`                                                                    | 499.0                                                                             | <p>VOC actual value that forms the maximum value of the<br>linear characteristic at the analogue output (generates 100.0% = 10.0V) (0.0 -<br>500.0)</p>                                           |
| Input Const | `rCO2_Max_AOX`           | `REAL`                                                                    | 2000.0                                                                            | <p>CO2 actual value that forms the maximum value of the<br>linear characteristic at the analogue output (generates 100.0% = 10.0V) (0.0 -<br>5000.0)</p>                                          |
| Input Const | `rCO2_Min_AOX`           | `REAL`                                                                    | 0.0                                                                               | <p>CO2 actual value that forms the minimum value of the<br>linear characteristic at the analogue output (generates 0.0% = 1.0V) (0.0 -<br>5000.0)</p>                                             |
| Input Const | `rRH_Max_AOX`            | `REAL`                                                                    | 95.0                                                                              | <p>Humidity actual value that forms the maximum value of the<br>linear characteristic at the analogue output (generates 100.0% = 10.0V) (0.0 -<br>100.0)</p>                                      |
| Input Const | `rRH_Min_AOX`            | `REAL`                                                                    | 0.0                                                                               | <p>Humidity actual value that forms the minimum value of the<br>linear characteristic at the analogue output (generates 0.0% = 1.0V) (0.0 -<br>100.0)</p>                                         |
| Input Const | `rTemp_Max_AOX`          | `REAL`                                                                    | 50.0                                                                              | <p>Temperature actual value that forms the maximum value of the<br>linear characteristic at the analogue output (generates 100.0% = 10.0V) (-25.0<br>- 50.0)</p>                                  |
| Input Const | `rTemp_Min_AOX`          | `REAL`                                                                    | -25.0                                                                             | <p>Temperature actual value that forms the minimum value of the<br>linear characteristic at the analogue output (generates 0.0% = 1.0V) (-25.0 -<br>50.0)</p>                                     |
| Input Const | `rRH_Offset`             | `REAL`                                                                    | 0.0                                                                               | <p>Constant measured-value offset for the transmitted humidity -<br>actual value (+/- 20.0% RH)</p>                                                                                               |
| Input Const | `rTemp_Offset`           | `REAL`                                                                    | 0.0                                                                               | <p>Constant measured-value offset for the transmitted temperature<br>- actual value (+/- 20.0 degrees Celsius)</p>                                                                                |
| Input Const | `eAO3_Config_Select`     | OPPERMANN\_MSX\_MOD\_I\_80\_XX\_X\_XXX\_ANALOG\_OUTPUTS\_CONFIG           | OPPERMANN\_MSX\_MOD\_I\_80\_XX\_X\_XXX\_ANALOG\_OUTPUTS\_CONFIG.MANUAL\_OUTPUT    | <p>Influence: outputs: rTemp, rTemp\_Average<br>Configuration of analogue output 3 (9 = writable via <code>rAO3\_Man</code>)</p>                                                                  |
| Input Const | `eAO2_Config_Select`     | OPPERMANN\_MSX\_MOD\_I\_80\_XX\_X\_XXX\_ANALOG\_OUTPUTS\_CONFIG           | OPPERMANN\_MSX\_MOD\_I\_80\_XX\_X\_XXX\_ANALOG\_OUTPUTS\_CONFIG.MANUAL\_OUTPUT    | <p>Configuration of analogue output 2 (9 = writable via<br><code>rAO2\_Man</code>)</p>                                                                                                            |
| Input Const | `eAO1_Config_Select`     | OPPERMANN\_MSX\_MOD\_I\_80\_XX\_X\_XXX\_ANALOG\_OUTPUTS\_CONFIG           | OPPERMANN\_MSX\_MOD\_I\_80\_XX\_X\_XXX\_ANALOG\_OUTPUTS\_CONFIG.MANUAL\_OUTPUT    | <p>Configuration of analogue output 1 (9 = writable via<br><code>rAO1\_Man</code>)</p>                                                                                                            |
| Input Const | `tTimeUpdateConfigWrite` | `TIME`                                                                    | TIME#0ms                                                                          | <p>Update interval for the processes influenced by the input<br><code>xUpdateConfigWrite</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>                                                                                           |
| Input Const | `tTimeUpdateActual`      | `TIME`                                                                    | TIME#3s0ms                                                                        | <p>Update interval for the processes influenced by the input<br><code>xUpdateActual</code> influenced</p>                                                                                         |
