Bosch Rexroth Smart Flex Effector Modbus register map
Also covers SFE
Smart Flex Effector with pose and acceleration readout and a motor lock, over Modbus RTU
- Official
- 74 registers
- Modbus RTU
- Revision 1 · 2026-10-18
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
- 1
- Serial
- 9600 8E1 · 9600 baud, 8 data bits, even parity, 1 stop bit defaults
- 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
- 50 holding registers, 24 input registers
- Groups
- 9
- Translation tables
- 12
- Revision
- 1 · 2026-10-18
- Added
- ()
- File
- maps/bosch-rexroth/smart-flex-effector.mbmap.json · 18 KB · history
- SHA-256
- 98c2c2132034737847e0f50d694c4f712f0a116f8e185577a06aed0ce4808f8e
- Manufacturer
- boschrexroth.com
Sources and notes
- Modbus Documentation - Smart Flex Effector (sfe_customer_documentation.html), firmware 1.41.0 · 2023-05-24
Source: Bosch Rexroth Smart Flex Effector Modbus Documentation, firmware version 1.41.0 (updated 2023-05-24)
- Input registers are read-only (function 04); holding registers are read and write (function 03, 06, 16, 23); write-only holding registers are actions that do something when 1 is written. Function 20 (read file record, for the error log and logger data) and function 43 (read device identification) are not register reads and are not mapped.
- Multi-register values are big-endian with the high word first (UINT32 2974880010 is [45393, 4362]); floats are IEEE 754 in two registers. The manual shows 'BOOL' registers as 0 or 1.
- The device identification (function 43) objects are: 0 vendor name, 1 serial number, 2 firmware version, 3 vendor URL, 4 product name, 5 model name, 128 bootloader version.
- Writes can be refused without a Modbus exception: the cause (wrong mode, storage protection against frequent EEPROM writes, invalid value, processing error) is then in 'Last command status' (input 51). A rejected value also discards the other registers of the same Write Multiple Registers frame.
- Only quality threshold set 0 is listed; there are ten sets of 12 floats (24 registers) from 1010 to 1249. The 36 RGB LED registers at 1262 to 1369 (3 per LED) and the logger data and error log records are described in the manual.
- The manual gives no factory serial format (data bits, parity, stop bits) or default address and baud rate; baud rates 9600, 38400, 115200 and 921600 are accepted. Set the connection to match the device. The motor timeout and velocity units are not stated in the manual.
- The documentation is for firmware 1.41.0. The Modbus RTU interface only answers when 'Protocol mode' is MODBUS; the device also speaks a text protocol.
| Area | Address | Name | Type | Access | Unit | Scale | Description |
|---|---|---|---|---|---|---|---|
| IR | 0 | float32 ABCD | R | mm | Deflection of the adapter plate | ||
| IR | 2 | float32 ABCD | R | mm | Deflection of the adapter plate | ||
| IR | 4 | float32 ABCD | R | mm | Deflection of the adapter plate | ||
| IR | 6 | float32 ABCD | R | ° | Rotation of the adapter plate | ||
| IR | 8 | float32 ABCD | R | ° | Rotation of the adapter plate | ||
| IR | 10 | float32 ABCD | R | ° | Rotation of the adapter plate | ||
| IR | 12 | uint16 | R | ms | Time needed to calculate the deflection | ||
| IR | 13 | uint16 | R | ||||
| IR | 26 | uint16 | R | ||||
| IR | 27 | float32 ABCD | R | g | 1 g = 9.81 m/s2 | ||
| IR | 29 | float32 ABCD | R | g | 1 g = 9.81 m/s2 | ||
| IR | 31 | float32 ABCD | R | g | 1 g = 9.81 m/s2 | ||
| IR | 33 | float32 ABCD | R | g | Corrected by the acceleration due to gravity | ||
| IR | 35 | uint16 | R | Pose values within the quality thresholds (quality mode on) | |||
| IR | 36 | uint16 | R | ||||
| IR | 37 | uint64 ABCD | R | ms | Based on the system up time | ||
| IR | 41 | uint16 | R | Number of records in the logger data | |||
| IR | 42 | uint64 ABCD | R | ms | |||
| IR | 46 | float32 ABCD | R | °C | |||
| IR | 48 | uint32 ABCD | R | Total lock/unlock operations | |||
| IR | 50 | uint16 | R | 0 to 100 errors in the error log | |||
| IR | 51 | uint16 | R | ||||
| IR | 4000 | uint32 ABCD | R | ||||
| IR | 4002 | float32 ABCD | R | m | Total distance moved by deflection | ||
| HR | 1000 | uint16 | RW | Read Motor current lock state to check that it was reached | |||
| HR | 1001 | uint16 | RW | Non-persistent; used while the temporary flag is set; changing it recalculates the temporary timeout | |||
| HR | 1002 | uint16 | RW | ||||
| HR | 1003 | uint16 | RW | Non-persistent lock/unlock timeout used while the temporary timeout flag is set | |||
| HR | 1004 | uint16 | RW | ||||
| HR | 1005 | uint16 | RW | Persistent; changing it recalculates the motor timeout | |||
| HR | 1006 | uint16 | RW | Persistent lock timeout used by default | |||
| HR | 1007 | uint16 | RW | ||||
| HR | 1008 | uint16 | RW | ||||
| HR | 1009 | uint16 | RW | Which of the ten threshold sets is in use | |||
| HR | 1010 | float32 ABCD | RW | mm | Set 0 of 10; set s starts at 1010 + 24 x s | ||
| HR | 1012 | float32 ABCD | RW | mm | Set 0 of 10; set s starts at 1010 + 24 x s | ||
| HR | 1014 | float32 ABCD | RW | mm | Set 0 of 10; set s starts at 1010 + 24 x s | ||
| HR | 1016 | float32 ABCD | RW | ° | Set 0 of 10; set s starts at 1010 + 24 x s | ||
| HR | 1018 | float32 ABCD | RW | ° | Set 0 of 10; set s starts at 1010 + 24 x s | ||
| HR | 1020 | float32 ABCD | RW | ° | Set 0 of 10; set s starts at 1010 + 24 x s | ||
| HR | 1022 | float32 ABCD | RW | mm | Set 0 of 10; set s starts at 1010 + 24 x s | ||
| HR | 1024 | float32 ABCD | RW | mm | Set 0 of 10; set s starts at 1010 + 24 x s | ||
| HR | 1026 | float32 ABCD | RW | mm | Set 0 of 10; set s starts at 1010 + 24 x s | ||
| HR | 1028 | float32 ABCD | RW | ° | Set 0 of 10; set s starts at 1010 + 24 x s | ||
| HR | 1030 | float32 ABCD | RW | ° | Set 0 of 10; set s starts at 1010 + 24 x s | ||
| HR | 1032 | float32 ABCD | RW | ° | Set 0 of 10; set s starts at 1010 + 24 x s | ||
| HR | 1250 | uint16 | W | Action: triggers a quality check when the quality mode is QUALITY_TRIGGER | |||
| HR | 1251 | uint16 | W | Action: resets the quality check result | |||
| HR | 1252 | uint16 | RW | Pin function | |||
| HR | 1253 | uint16 | RW | Pin function | |||
| HR | 1254 | uint16 | RW | Pin function; pin 2 accepts only LOCK, QUALITY_TRIGGER, OFF, INPUT and LOGGER_TRIGGER | |||
| HR | 1255 | uint16 | RW | Logical level of the pin (high = 1) | |||
| HR | 1256 | uint16 | RW | Logical level of the pin (high = 1) | |||
| HR | 1257 | uint16 | RW | Logical level of the pin (high = 1) | |||
| HR | 1258 | uint16 | RW | ||||
| HR | 1259 | uint16 | W | Sets all LEDs and switches the LED mode to CUSTOM | |||
| HR | 1260 | uint16 | W | Sets all LEDs and switches the LED mode to CUSTOM | |||
| HR | 1261 | uint16 | W | Sets all LEDs and switches the LED mode to CUSTOM | |||
| HR | 1370 | uint16 | RW | ms | Recording interval in steps of 5 ms | ||
| HR | 1371 | uint16 | RW | ||||
| HR | 1372 | uint16 | RW | 1 = stop when the maximum count is reached | |||
| HR | 1373 | uint16 | RW | ||||
| HR | 1374 | uint16 | RW | Records kept from before the trigger; below the maximum count | |||
| HR | 1375 | uint16 | W | Action | |||
| HR | 1376 | uint16 | W | Action | |||
| HR | 1377 | uint16 | RW | Moving average length; 0 = off | |||
| HR | 1378 | uint32 ABCD | RW | ||||
| HR | 1380 | uint16 | W | Action | |||
| HR | 1381 | uint16 | RW | Response delay in pause characters; the time depends on the baud rate | |||
| HR | 1382 | uint16 | RW | Temperature compensation; keep on for an accurate pose | |||
| HR | 1383 | uint16 | W | Action: sets the pose to zero in the locked state; only with compensation off | |||
| HR | 1384 | uint16 | RW | ||||
| HR | 1385 | uint16 | W | Action: restores the default settings | |||
| HR | 1386 | uint16 | RW |
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).