Методом перебора оказалось, что правильное значение удается получить только командой
read_float(registeraddress=22, functioncode=3, number_of_registers=2 )

И это противоречит информации из инструкции: 2. Во время передачи четырехбайтовых значений (тип Float32) старшее слово передается в
регистре с меньшим номером.
Получается, что в регистре с меньшим номеров старшее слово и вообще значение датчика только в одном регистре разместилось...