Потеря точности при чтении Float32 в Modbus-драйвере
Переменная типа REAL (4 байта) в CDS 2.3 и памяти ПЛК имеет значение 10.68 (например).
При чтении Holdings Register с типом данных Float32 в тег SimpLight тип
single (double) значение равно 10.625.
Параллельное чтение ОРС сервером Lectus (да и любыми другими Modbus-серверами) дает значение 10.68.
Почему происходит потеря точности? Запись в эту переменную из монитора SimpLight не всегда дает эффект, если не изменять значение существенно, например 10.75, или 10.88. А если ввести 11.22 - значение запишется, но в контроллере будет 11.08, например.
Ошибка обработки 4-байтных чисел с плавающей точкой? Как исправить? Нет никакого желания все готовые теги в редакторе каналов переделывать на ОРС сервер.
Как Вы оцениваете обслуживание, которое получили?
Оценка удовлетворенности от Сергей Королев 7 лет назад
Добавьте комментарий о качестве обслуживания (необязательно):
День добрый.
Интересная проблема, потери точности не должно быть. Давайте будем разбираться в причинах. Если можно пришлите свой проект на simp@simplight.ru.