В регистры D2000 и D2002 записываю с компьютера по протоколу ModbusRTU поправочные 32-х разрядные коэффициенты с плавающей точкой A и B.
Данные АЦП помещаю в регистр D0. Здесь пока всё работает. На всякий случай для проверки операцию FLT выполняю в других регистрах (D190, D192), но это уберу.
Дальше надо выполнить такую поправку: 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, но таких констант не использую.
Помогите, несколько дней борюсь с это проблемой.
Помогите разобраться в числах с плавающей точкой.
Re: Помогите разобраться в числах с плавающей точкой.
Где смотрите то содержание ячеек ? В monitor table или просто онлайн - во всяком случае в симуляторе все нормально.
- Вложения
-
- Screenshot_3.png (8.15 КБ) 1387 просмотров
Re: Помогите разобраться в числах с плавающей точкой.
Посмотрите онлайн что у вас реально записывает РС в контроллер в регистры D2000 D2002
- Вложения
-
- Screenshot_4.png (9.59 КБ) 1385 просмотров
Re: Помогите разобраться в числах с плавающей точкой.
Вся проблема оказалась до банальности простой: при передаче по Modbus RTU 32-х битных чисел порядок следования байт отличается от общепринятого: допустим, следует передать число 0х89ABCDEF. Обычно байты передаются последовательно: 0x89, 0xAB, 0xCD, 0xEF, реже бывает так: 0xEF, 0xCD, 0xAB, 0x89. Здесь же почему-то передача осуществляется так: 0xAB,0x89, 0xEF, 0xCD, т.е. сначала старший, затем младший байты младшего регистра, а после этого младший и затем старший байты старшего регистра.
Интересно теперь разобраться - это "прикол" Modbus-а или при объединении регистров старшая часть числа помещается в регистр с более высоким адресом...
Интересно теперь разобраться - это "прикол" Modbus-а или при объединении регистров старшая часть числа помещается в регистр с более высоким адресом...
Re: Помогите разобраться в числах с плавающей точкой.
Спасибо отозвавшимся за помощь.
Онлайн посмотреть не удавалось. Стоит версия WPLSoft 2.40 и она явно "не дружит" с DVP28SV2 или переходником USB/COM (5 секунд и зависает)...
Онлайн посмотреть не удавалось. Стоит версия WPLSoft 2.40 и она явно "не дружит" с DVP28SV2 или переходником USB/COM (5 секунд и зависает)...
Re: Помогите разобраться в числах с плавающей точкой.
С таким контроллером пора уже и на isp переходить.
А ещё есть встроенная функция масштабирования данных: Sclp.
А ещё есть встроенная функция масштабирования данных: Sclp.
Re: Помогите разобраться в числах с плавающей точкой.
Это правильный ответ.переходником USB/COM (5 секунд и зависает)...
WPLSoft поддерживает все ПЛК серии DVP.