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

Модератор: AND

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

Сообщение shyub » 12 июн 2018, 20:02

В регистры D2000 и D2002 записываю с компьютера по протоколу ModbusRTU поправочные 32-х разрядные коэффициенты с плавающей точкой A и B.
Данные АЦП помещаю в регистр D0. Здесь пока всё работает. На всякий случай для проверки операцию FLT выполняю в других регистрах (D190, D192), но это уберу.
12.06.png
12.06.png (3.21 KIB) Просмотров: 331

Дальше надо выполнить такую поправку: 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, но таких констант не использую.
Помогите, несколько дней борюсь с это проблемой.
shyub
 
Сообщений: 23
Зарегистрирован: 04 июл 2014, 17:02

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

Сообщение Xenonci » 12 июн 2018, 22:06

Где смотрите то содержание ячеек ? В monitor table или просто онлайн - во всяком случае в симуляторе все нормально.
Вложения
Screenshot_3.png
Screenshot_3.png (8.15 KIB) Просмотров: 324
Xenonci
 
Сообщений: 139
Зарегистрирован: 28 июн 2013, 21:02
Откуда: Липецк

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

Сообщение Xenonci » 12 июн 2018, 22:46

Посмотрите онлайн что у вас реально записывает РС в контроллер в регистры D2000 D2002
Вложения
Screenshot_4.png
Screenshot_4.png (9.59 KIB) Просмотров: 322
Xenonci
 
Сообщений: 139
Зарегистрирован: 28 июн 2013, 21:02
Откуда: Липецк

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

Сообщение shyub » 12 июн 2018, 23:11

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

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

Сообщение shyub » 12 июн 2018, 23:17

Спасибо отозвавшимся за помощь.
Онлайн посмотреть не удавалось. Стоит версия WPLSoft 2.40 и она явно "не дружит" с DVP28SV2 или переходником USB/COM (5 секунд и зависает)...
shyub
 
Сообщений: 23
Зарегистрирован: 04 июл 2014, 17:02

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

Сообщение bayk » 13 июн 2018, 00:00

С таким контроллером пора уже и на isp переходить.
А ещё есть встроенная функция масштабирования данных: Sclp.
bayk
 
Сообщений: 173
Зарегистрирован: 30 май 2015, 22:20

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

Сообщение pkl » 13 июн 2018, 08:37

переходником USB/COM (5 секунд и зависает)...
Это правильный ответ.
WPLSoft поддерживает все ПЛК серии DVP.
pkl
 
Сообщений: 805
Зарегистрирован: 23 ноя 2010, 11:08


Вернуться в Программируемые контроллеры

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1