Показано с 1 по 10 из 10

Тема: Тип float32 в конфигураторе МСД-200

  1. #1

    По умолчанию Тип float32 в конфигураторе МСД-200

    Модуль МСД-200 архивирует переменную float из ПЛК-160. ПЛК - мастер, МСД - слэйв. Переменная в контролере принимает значения в первой колонке. В конфигураторе МСД-200, на вкладке "результат измерения", эти значения почему-то преобразуются в значения во второй колонке. В csv-файл МСД-200 пишет то, что в третьей колонке. А как сделать чтобы значения в контроллере и csv-файле были одинаковыми?
    50.0 - 50.0 - 50.0
    50.1 - 50.000389 - 50.0
    50.2 - 50.000782 - 50.0
    50.3 - 50.250195 - 50.3
    50.4 - 50.250587 - 50.3
    50.5 - 50.5 - 50.5
    50.6 - 50.500389 - 50.5

  2. #2

    По умолчанию

    Разница между ПЛК и МСД объясняется передачей данных типа Float. Для точной передачи данных используйте Int со сдвигом точки.
    Разница между МСД и картой МСД из-за округления.

  3. #3

    По умолчанию

    Ага. Попробую сделать так. Спасибо за ответ. Хотя, честно говоря, понимания не появилось.) Я посмотрел, как в контроллере записано число float - в четырёх байтах. Открыл первый попавшийся онлайн-сервис по переводу двоичных чисел во float32 по IEEE-754. Вставил свои значения и получил правильное число, как в контроллере. Непонятно, что МСД-200 округляет и зачем...

  4. #4

    По умолчанию

    Может быть Эти данные не синхронизированы? С какой периодичностью Вы передаете данные?

  5. #5

    По умолчанию

    Не понимаю вопрос "Может быть Эти данные не синхронизированы?"... С чем они не синхронизированы? Данные передаются 1 раз в минуту, на скорости 9600. Ошибок в передачах конфигуратор показывает 0%. Целая часть числа всегда правильная, дробная - как видно из моего примера - иногда правильная (50.0, 50.5), в других случаях неправильная. Разница между МСД и картой теперь стала понятна, благодаря Вашему разъяснению. То есть, как возникает третий столбец в примере - ясно. Не ясно, как появляется второй столбец. Если передать 4 байта, как они есть в контроллере, разве МСД-200 не должен их интерпретировать точно так же, согласно IEEE-754? Поясните, что Вы имеете ввиду, говоря о несинхронизации данных.

  6. #6

    По умолчанию

    Период записи в МСД у Вас 1 минута, предположение о не синхронизации снимается
    Можно ли получить проект на ПЛК и конфигурацию МСД?

  7. #7

    По умолчанию

    Весь проект выкладывать желания не было. Поэтому сделал новый, тестовый. В ПЛК 10 переменных REAL. Значения от 50.0 до 50.9. ПЛК - мастер, МСД-200 - слэйв. К моему удивлению, запись в csv-файл стала правильной. Вернулся к исходному проекту - нашёл ошибку в нумерации элементов буфера передачи в МСД-200. Так что - извините за беспокойство и спасибо за участие и ответы. Попробовал и как Вы посоветовали - передача Int, затем смещение запятой в конфигураторе. И в этом способе в файл csv записываются правильные значения. Единственное, что осталось не разъяснённым это значения на на вкладке "результат измерения". Конфигуратор МСД-200 на этой вкладке зачем-то изменяет переменные вот так (первая колонка - данные в ПЛК, вторая - в конфигураторе МСД-200):
    50 - 50
    50.1 - 50.100002
    50.2 - 50.200001
    50.3 - 50.299999
    50.4 - 50.400002
    50.5 - 50.5
    50.6 - 50.600002
    50.7 - 50.700001
    50.8 - 50.799999
    50.9 - 50.900002
    Ну, как бы, понятно, что это связано с представлением вещественных чисел. Но, ведь, я не такие значения передавал, пусть даже изменились какие-то незначащие разряды... Какому-то преобразованию числа явно подверглись... Зачем? Это слегка напрягает. Да ещё заказчику объяснять надо, что, к примеру, 50.8 и 50.799999 - одно и тоже...
    Ещё раз - спасибо за помощь.

  8. #8

    По умолчанию

    Как раз вот эти доли - и есть проблемы в передачи Float. Ведь в протоколе Modbus нет передачи такого типа данных. Именно поэтому лучше использовать INT - во-первых быстрее (т.к. передается меньше данных), во-вторых точнее.

  9. #9

    По умолчанию

    Последний пример передачи - как раз и есть передача INT со сдвигом запятой в в конфигураторе МСД-200. Передаётся INT, а значения на на вкладке "результат измерения" всё равно с малыми долями в довесок.

  10. #10

    По умолчанию

    Все же Вышлите Ваш проект мне на почту d.panteleev@owen.ru

Похожие темы

  1. Как читать Float32 по Modbus-RTU
    от servo в разделе ПЛК1хх
    Ответов: 8
    Последнее сообщение: 13.03.2019, 09:30
  2. Работа в конфигураторе ТРМ 212
    от СергейНовосиб в разделе Сервисное ПО
    Ответов: 0
    Последнее сообщение: 04.02.2016, 12:41
  3. Чтение параметров Float32 из ТР212
    от Fallout в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 29.01.2016, 11:42
  4. Получение значений float32
    от инок в разделе СПК2хх
    Ответов: 57
    Последнее сообщение: 29.11.2015, 14:34
  5. ТРМ32+ПЛК110 (FLOAT32)
    от DiMKiN в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 26.05.2011, 15:58

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •