Помогите разобраться в числах с плавающей точкой.

Ответить
shyub
Сообщения: 34
Зарегистрирован: 04 июл 2014, 17:02

Помогите разобраться в числах с плавающей точкой.

Сообщение shyub »

В регистры D2000 и D2002 записываю с компьютера по протоколу ModbusRTU поправочные 32-х разрядные коэффициенты с плавающей точкой A и B.
Данные АЦП помещаю в регистр D0. Здесь пока всё работает. На всякий случай для проверки операцию FLT выполняю в других регистрах (D190, D192), но это уберу.
12.06.png
12.06.png (3.21 КБ) 1394 просмотра
Дальше надо выполнить такую поправку: Y=(X-A)*B (3-я и 4-я строки). Результат помещаю в D24.
Смотрю данные (АЦП даёт около 80), после FLT вообще в D192 получается значение 2.31e-41 (0x000042A2) - ни под один существующий формат не подходит.
С форматом чисел с плавающей точкой разбирался (такой же как в С и Паскале): знак, 8 бит экспонента и 23 бита мантиса.
Коэффициент A задаю 0,0 (0x00000000) а B=1,0 (0x3F800000).
Читал в другой теме, что DVP может не работать при использовании констант типа F1.23, но таких констант не использую.
Помогите, несколько дней борюсь с это проблемой.

Xenonci
Сообщения: 139
Зарегистрирован: 28 июн 2013, 21:02
Откуда: Липецк

Re: Помогите разобраться в числах с плавающей точкой.

Сообщение Xenonci »

Где смотрите то содержание ячеек ? В monitor table или просто онлайн - во всяком случае в симуляторе все нормально.
Вложения
Screenshot_3.png
Screenshot_3.png (8.15 КБ) 1387 просмотров

Xenonci
Сообщения: 139
Зарегистрирован: 28 июн 2013, 21:02
Откуда: Липецк

Re: Помогите разобраться в числах с плавающей точкой.

Сообщение Xenonci »

Посмотрите онлайн что у вас реально записывает РС в контроллер в регистры D2000 D2002
Вложения
Screenshot_4.png
Screenshot_4.png (9.59 КБ) 1385 просмотров

shyub
Сообщения: 34
Зарегистрирован: 04 июл 2014, 17:02

Re: Помогите разобраться в числах с плавающей точкой.

Сообщение shyub »

Вся проблема оказалась до банальности простой: при передаче по Modbus RTU 32-х битных чисел порядок следования байт отличается от общепринятого: допустим, следует передать число 0х89ABCDEF. Обычно байты передаются последовательно: 0x89, 0xAB, 0xCD, 0xEF, реже бывает так: 0xEF, 0xCD, 0xAB, 0x89. Здесь же почему-то передача осуществляется так: 0xAB,0x89, 0xEF, 0xCD, т.е. сначала старший, затем младший байты младшего регистра, а после этого младший и затем старший байты старшего регистра.
Интересно теперь разобраться - это "прикол" Modbus-а или при объединении регистров старшая часть числа помещается в регистр с более высоким адресом...

shyub
Сообщения: 34
Зарегистрирован: 04 июл 2014, 17:02

Re: Помогите разобраться в числах с плавающей точкой.

Сообщение shyub »

Спасибо отозвавшимся за помощь.
Онлайн посмотреть не удавалось. Стоит версия WPLSoft 2.40 и она явно "не дружит" с DVP28SV2 или переходником USB/COM (5 секунд и зависает)...

bayk
Сообщения: 887
Зарегистрирован: 30 май 2015, 21:20

Re: Помогите разобраться в числах с плавающей точкой.

Сообщение bayk »

С таким контроллером пора уже и на isp переходить.
А ещё есть встроенная функция масштабирования данных: Sclp.

pkl
Сообщения: 1468
Зарегистрирован: 23 ноя 2010, 10:08

Re: Помогите разобраться в числах с плавающей точкой.

Сообщение pkl »

переходником USB/COM (5 секунд и зависает)...
Это правильный ответ.
WPLSoft поддерживает все ПЛК серии DVP.

Ответить