PDA

Просмотр полной версии : Float разделить по битам на числа



sekerin
21.04.2025, 15:11
Добрый день.
я по modbus считываю значение float
и мне необходимо преобразовать ее по следующей формуле

83310

не могу понять как мне разделить подобным образом значение числа в owen logic

melky
21.04.2025, 15:13
Вопрос а нафига ? ПР понимает IEEE754 из коробки. Взяли float, при необходимости умножили на 10 и перевели в INT.

1exan
21.04.2025, 15:16
Добрый день.
я по modbus считываю значение float
и мне необходимо преобразовать ее по следующей формуле

не могу понять как мне разделить подобным образом значение числа в owen logic

А зачем необходимо его преобразовывать - считывается неверное значение?

sekerin
21.04.2025, 15:23
да пока считывает неверное. может не так считываю

sekerin
21.04.2025, 15:32
Вопрос а нафига ? ПР понимает IEEE754 из коробки. Взяли float, при необходимости умножили на 10 и перевели в INT.

можете обьяснить пожалуйста, не понимаю что нужно сделать
я считываю адрес 4112 тип флоат, функция чтения 04 как в инструкции
считывает непонятные значения. и я не понимаю что нужно сделать

melky
21.04.2025, 15:37
переставить регистры, байты, или байты с регистрами. Там в мастере ПР это настраивается.
Если ПР слейв, попробуйте переставить регистры но у себя в Scada или чем вы читаете. На Slave эти галочки не действуют.

petera
21.04.2025, 15:39
можете обьяснить пожалуйста, не понимаю что нужно сделать
я считываю адрес 4112 тип флоат, функция чтения 04 как в инструкции
считывает непонятные значения. и я не понимаю что нужно сделать

Переставить байты или регистры местами в настройках мастера

sekerin
21.04.2025, 16:20
Переставить байты или регистры местами в настройках мастера

да я поставил галочку старшим регистром вперед и нормально стало читать
только так и не понимаю как это работает

imaex
21.04.2025, 16:53
Да вот так и работает. В modbus нет никаких float, есть регистры. 32-хбитное float занимает два регистра, 4 байта. Поэтому в регистрах modbus float может храниться в 4-х видах:

порядок байт:
1 0 3 2
3 2 1 0
0 1 2 3
2 3 0 1

Чаще всего используются первые два представления, поэтому обычно достаточно порядок слов поменять. Но, тут уж как повезёт.

Короче, "запомнытэ эта, дэты, панят эта нэвазможна!"

sekerin
21.04.2025, 17:46
Да вот так и работает. В modbus нет никаких float, есть регистры. 32-хбитное float занимает два регистра, 4 байта. Поэтому в регистрах modbus float может храниться в 4-х видах:

порядок байт:
1 0 3 2
3 2 1 0
0 1 2 3
2 3 0 1

Чаще всего используются первые два представления, поэтому обычно достаточно порядок слов поменять. Но, тут уж как повезёт.

Короче, "запомнытэ эта, дэты, панят эта нэвазможна!"

понял) так и буду действовать