BEKO TECHNOLOGIES METPOINT VFS TI / TM Modbus register map
Also covers METPOINT VFS TI 220, METPOINT VFS TI 220 X, METPOINT VFS TI 400, METPOINT VFS TI 400 X, METPOINT VFS TM 20, METPOINT VFS TM 25, METPOINT VFS TM 50
Thermal mass flow meter for compressed air and gases, Modbus RTU (RS485)
- Official
- 93 registers
- Modbus RTU
- Revision 1 · 2026-11-09
Official: Written from the manufacturer's documentation, but not tested on a device yet. Check the map against the manufacturer's documentation before you write to a live device. Tested it? Report a test.
Communication
- Protocol
- Modbus RTU
- Unit ID
- 247
- Serial
- 19200 8E1 · 19200 baud, 8 data bits, even parity, 1 stop bit
- Byte / word order
- ABCD · bytes big-endian, words high first
- Addresses
- 0-based
Connection values are defaults: the device may be configured differently.
Map
- Registers
- 35 holding registers, 58 input registers
- Groups
- 11
- Translation tables
- 14
- Revision
- 1 · 2026-11-09
- Added
- ()
- File
- maps/beko-technologies/metpoint-vfs.mbmap.json · 21 KB · history
- SHA-256
- beef8d93db505042e15e1721c454afd116bf048e9e7a53f15cf9347a78dc286e
- Manufacturer
- beko-technologies.com
Sources and notes
- METPOINT VFS TI / TM, Original installation and service instructions (10-447) · version 00.02, 2025-03-31 Chapter 4.6, Modbus settings
Source: BEKO TECHNOLOGIES, METPOINT VFS TI / TM, Original installation and service instructions 10-447, version 00.02, 31 March 2025
- The manual gives the addresses without saying whether they are 0- or 1-based. The one example it gives (holding register 0x07D0 is decimal 2000) is a wire address, so they are given here as 0-based. If a read fails, try address_base 1.
- Defaults from the manual: 19200 baud, 8 data bits, even parity, 1 stop bit, slave address 247. When the address is changed it can be 1 to 246.
- Byte order is ABCD for floats and 32-bit integers (big-endian words). Each float takes two registers.
- The manual lists the 4.6.3 table as Read Input Registers (0x04) and the 4.6.6 table as Write Multiple Holding Registers (0x10). The holding registers are given as RW; the manual does not say they can be read back with 0x03.
- Input and holding registers use the same numbers for different things (3222, 3400 to 3406): they are separate address spaces.
- Error flags: register 3200 holds all flags as a bit field (the manual numbers the bits 1 to 16, here 0 to 15). Registers 3201 to 3216 repeat each flag as a register; the manual lists no Error9 flag.
- In the manual's unit lists for registers 3400 and 3701, value 4 is printed as l/h, the same as value 2. It is most likely l/s.
- Changing the interface parameters is a three step write: 0xAC1D to register 5010, the parameter word to register 2000, then 0xBA5E to register 5020; restart the device afterwards.
- The device also answers Read Device Identification (0x2B / 0x0E) with the vendor, product code, software version and serial number as text; this is not a register, so it is not in the map.
- Written from the manufacturer's document; not tested on a device.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| IR | 1701 | uint16 | R | ||||
| IR | 3200 | bool bit 0 | R | Bit 1 of the error flags word (Error1 flag) | |||
| IR | 3200 | bool bit 1 | R | Bit 2 of the error flags word (Error2 flag) | |||
| IR | 3200 | bool bit 2 | R | Bit 3 of the error flags word (Error3 flag) | |||
| IR | 3200 | bool bit 3 | R | Bit 4 of the error flags word (Error4 flag) | |||
| IR | 3200 | bool bit 4 | R | Bit 5 of the error flags word (Error5 flag) | |||
| IR | 3200 | bool bit 5 | R | Bit 6 of the error flags word (Error6 flag) | |||
| IR | 3200 | bool bit 6 | R | Bit 7 of the error flags word (Error7 flag) | |||
| IR | 3200 | bool bit 7 | R | Bit 8 of the error flags word (Error8 flag) | |||
| IR | 3200 | bool bit 9 | R | Bit 10 of the error flags word (Error10 flag) | |||
| IR | 3200 | bool bit 10 | R | Bit 11 of the error flags word (Error11 flag) | |||
| IR | 3200 | bool bit 11 | R | Bit 12 of the error flags word (Error12 flag) | |||
| IR | 3200 | bool bit 12 | R | Bit 13 of the error flags word (Error13 flag) | |||
| IR | 3200 | bool bit 13 | R | Bit 14 of the error flags word (Error14 flag) | |||
| IR | 3200 | bool bit 14 | R | Bit 15 of the error flags word (Error15 flag) | |||
| IR | 3200 | bool bit 15 | R | Bit 16 of the error flags word (Error16 flag) | |||
| IR | 3201 | uint16 | R | Code flash fault | |||
| IR | 3202 | uint16 | R | Configuration fault | |||
| IR | 3203 | uint16 | R | Product not adjusted | |||
| IR | 3204 | uint16 | R | Hardware fault | |||
| IR | 3205 | uint16 | R | Hardware fault, sensor memory | |||
| IR | 3206 | uint16 | R | Hardware fault, bridge DAC | |||
| IR | 3207 | uint16 | R | Hardware fault, current loop DAC | |||
| IR | 3208 | uint16 | R | Hardware fault, sensor RGS, RHZ or bridge | |||
| IR | 3210 | uint16 | R | Invalid offset value for bridge DAC | |||
| IR | 3211 | uint16 | R | TOF fault | |||
| IR | 3212 | uint16 | R | Sensor immersion depth fault | |||
| IR | 3213 | uint16 | R | Excess value warning | |||
| IR | 3214 | uint16 | R | Excess value error | |||
| IR | 3215 | uint16 | R | Gas temperature warning | |||
| IR | 3216 | uint16 | R | Gas temperature error | |||
| IR | 3222 | uint16 | R | Identification signal | |||
| IR | 3300 | uint16 | R | h | Time left until the next calibration | ||
| IR | 3400 | float32 ABCD | R | m³/h | |||
| IR | 3402 | float32 ABCD | R | m³/min | |||
| IR | 3404 | float32 ABCD | R | l/h | |||
| IR | 3406 | float32 ABCD | R | l/min | |||
| IR | 3408 | float32 ABCD | R | l/s | |||
| IR | 3410 | float32 ABCD | R | cfm | |||
| IR | 3412 | float32 ABCD | R | cfh | |||
| IR | 3414 | float32 ABCD | R | kg/h | |||
| IR | 3416 | float32 ABCD | R | kg/min | |||
| IR | 3418 | float32 ABCD | R | kg/s | |||
| IR | 3420 | float32 ABCD | R | g/s | |||
| IR | 3422 | float32 ABCD | R | g/min | |||
| IR | 3424 | float32 ABCD | R | t/h | |||
| IR | 3426 | float32 ABCD | R | lbs/s | |||
| IR | 3428 | float32 ABCD | R | lbs/min | |||
| IR | 3430 | float32 ABCD | R | lbs/h | |||
| IR | 3432 | float32 ABCD | R | m/s | |||
| IR | 3434 | float32 ABCD | R | fpm | |||
| IR | 3436 | float32 ABCD | R | °C | |||
| IR | 3438 | float32 ABCD | R | °F | |||
| IR | 3444 | uint32 ABCD | R | m³ | Consumption | ||
| IR | 3446 | uint32 ABCD | R | l | Consumption | ||
| IR | 3448 | uint32 ABCD | R | kg | Consumption | ||
| IR | 3450 | uint32 ABCD | R | cf | Consumption | ||
| IR | 3452 | uint32 ABCD | R | lb | Consumption | ||
| HR | 2030 | uint16 | RW | Bus termination at the end of a daisy chain | |||
| HR | 3218 | float32 ABCD | RW | User-defined reference condition; unit in register 3226 | |||
| HR | 3220 | float32 ABCD | RW | User-defined reference condition; unit in register 3227 | |||
| HR | 3222 | float32 ABCD | RW | Unit in register 3228 | |||
| HR | 3224 | float32 ABCD | RW | Low flow cut-off value; unit in register 3229 | |||
| HR | 3226 | uint16 | RW | ||||
| HR | 3227 | uint16 | RW | ||||
| HR | 3228 | uint16 | RW | ||||
| HR | 3229 | uint16 | RW | ||||
| HR | 3301 | uint16 | RW | h | |||
| HR | 3302 | uint16 | RW | h | How long before the end of the recalibration interval the notice is given | ||
| HR | 3400 | uint16 | RW | Value sent on the 4 to 20 mA output | |||
| HR | 3401 | uint16 | RW | ||||
| HR | 3402 | float32 ABCD | RW | ||||
| HR | 3404 | float32 ABCD | RW | ||||
| HR | 3406 | float32 ABCD | RW | mA | |||
| HR | 3600 | uint32 ABCD | RW | Preset value of the consumption counter; unit in register 3602 | |||
| HR | 3602 | uint16 | RW | ||||
| HR | 3700 | uint16 | RW | ||||
| HR | 3701 | uint16 | RW | Value that triggers the alarm | |||
| HR | 3702 | uint16 | RW | ||||
| HR | 3703 | uint16 | RW | ||||
| HR | 3704 | float32 ABCD | RW | ||||
| HR | 3706 | float32 ABCD | RW | ||||
| HR | 3708 | float32 ABCD | RW | ||||
| HR | 3711 | uint16 | RW | Consumption value that is sent as pulses | |||
| HR | 3712 | float32 ABCD | RW | Consumption that one pulse stands for | |||
| HR | 3851 | uint16 | RW | ||||
| HR | 3852 | uint16 | RW | ||||
| HR | 3853 | uint16 | RW | ||||
| HR | 3854 | uint16 | RW | ||||
| HR | 3855 | uint16 | RW | ||||
| HR | 5010 | uint16 | W | Write 0xAC1D (44061) here before writing register 2000 | |||
| HR | 2000 | uint16 | W | High byte: baud rate, parity and stop bits (enum interface_serial); low byte: slave address 1 to 246. Example: 0x070A is 19200 baud, even parity, 1 stop bit, address 10 | |||
| HR | 5020 | uint16 | W | Write 0xBA5E (47710) to store the interface parameters; they take effect about 10 s after a restart |
No registers match
Try part of the name, an address (decimal or 0x hex) or clear the filters.
Help improve this map
- I tested it on a deviceReport whether it worked, even if you did not write the map.
- Suggest a correctionEdit the file on GitHub; it opens a pull request.
- Report a problemA wrong address, type, scale or byte order.
- Read the formatWhat each key of the file means (SPEC.md).