Страница 1 из 1

2 16bit регистра преобразовать во float

СообщениеДобавлено: 06 дек 2017, 17:45
xenonci
Добрый день
Опрашиваю прибор (Lumel N14) с панели mTV100
Вкратце - надо преобразовать 2 последовательных 16 bit регистра полученных от прибора по modbus rtu в 32bit float число.
По инструкции на прибор: "Биты в 16-ти битных регистрах нумеруются от младшего к старшему b0-b15". Перестановка регистров местами в макросе не помогла собрать число.
Опрос прибора по modbus zero based. Чтение регистров с 7000 функцией 4х_MAX_2W. Регистры с 7500 - вообще не читаются. С 4000-чного читаются функцией 4х_MAX_1W правильно (см. вложение - вырезка из инструкции)
Изображение

Re: 2 16bit регистра преобразовать во float

СообщениеДобавлено: 07 дек 2017, 05:09
Владимир_Я
Попробуйте макросом
Код: Выделить всё
unsigned short mas[2]
GetDataEx(mas[0], "Lumel ", 3x, 7000, 2)
SetData(mas[0], "Local HMI", LW, 0, 2)


И вывести значение на объект NUMERIC по адресу LW-0 формата 32 float

Re: 2 16bit регистра преобразовать во float

СообщениеДобавлено: 07 дек 2017, 10:29
xenonci
Так уже пробовал - не получилось. Попробую через 5х:

Изображение

Re: 2 16bit регистра преобразовать во float

СообщениеДобавлено: 07 дек 2017, 11:29
Владимир_Я
Точно, должно получится. 3x это эквивалент функции 4, а для вашего прибора нужна 3 функция а это команды 4x или 5x.

Re: 2 16bit регистра преобразовать во float

СообщениеДобавлено: 07 дек 2017, 12:48
xenonci
Благодарю Владимир!
Помог ваш измененный макрос:

Изображение

Что получилось. Чтение напряжения по фазе А:

Изображение

Re: 2 16bit регистра преобразовать во float

СообщениеДобавлено: 08 дек 2017, 04:54
Владимир_Я
А через 5x не получилось? Вроде написано что это та же 4x только с автоматической перестановкой младшего и старшего регистров.

Re: 2 16bit регистра преобразовать во float

СообщениеДобавлено: 03 янв 2018, 20:03
xenonci
Через 5х и перестановкой слов в настройках связи по Modbus не получилось.