Доброе время суток уважаемые форумчане!
Подскажите пж может кто сталкивался с проблемой следующей:
Исходные данные
Weintek cMT2158 панель настроенная как Modbus Server (TCP) + контроллер S71215C (Modbus TCP Client)
Постоянно записываем данные с контроллера в панель cMT2158.
Передается 24 WORD значения. Проверялось на ОРС MODBUS SERVER - коннект хороший данные отлично пишет.
Но как прогрузил тестовый проект на Weintek, подключил к ПЛК - связь установилась хорошо (ошибок на стороне S7-1200 нет.) Данные которые передаются отправляются нормально без задержек. В основном в проекте Weintek используются LW_bit и LW (16 signed) адресация. Но есть несколько 32битных float (давление, температура) которые передаются с S7-1200.
Данные отображаются на панели но есть одна странность которую не могу понять где копать....
допустим отправляю S7-1200 переменную А1 := 500.0 на панели это значение 500.001
А2 := 499.0 на панели это значение 496.001
А3 := 115.435 на панели это значение 115.000
А4 := 100.0 на панели это значение 100.001
А5 := 999.9 на панели это значение 996.001
Не могу понять почему данные так криво отображаются. Игрался с форматами данных настраиваемые но счастья там не произошло, пробовал использовать только один FLOAT - так же происходит различие (между тем что отправляется и отображается).
Буду оч рад идеям предложениям/решениям, куда и где можно копать по данной проблеме передачи float.
- Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
- Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
- Не надо писать свой вопрос в первую попавшуюся тему - всегда лучше создать новую тему.
- За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения. Непонятно? - Читать здесь.
- Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
- Перед тем как что-то написать - читать здесь, а затем здесь и здесь.
- Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.
Weintek cMT Modbus Server + S7-1200 Client - Проблема float
Модераторы: Глоб.модераторы, специалисты Weintek
-
- здесь недавно
- Сообщения: 13
- Зарегистрирован: 20 окт 2019, 16:55
- Имя: Сергей
- Страна: Россия
- город/регион: Новосибирск
- Благодарил (а): 5 раз
Weintek cMT Modbus Server + S7-1200 Client - Проблема float
У вас нет необходимых прав для просмотра вложений в этом сообщении.
-
- специалист
- Сообщения: 642
- Зарегистрирован: 02 дек 2015, 06:57
- Имя: Огородников Сергей
- Страна: РФ
- Благодарил (а): 136 раз
- Поблагодарили: 111 раз
Weintek cMT Modbus Server + S7-1200 Client - Проблема float
Добрый день!
1. Попробуйте в формате отображения оставить 1 знак справа или даже 0 - что поменяется?
2. Вы не написали, в какие именно LW панели идёт запись. Попробуйте писать только в чётные адреса - что поменяется?
3. Тут уже советовали обновлять EBPro - тоже на заметку
4. Если ничего не получается из перечисленного выше - пересмотрите формат. Передавайте, например, INT/DINT, в десятых/сотых/тысячных долях, а в панели формат после запятой используйте нужный
Да, самое главное - проверьте в бинарном виде в ПЛК передаваемое значение и то, что пришло в панель так же в бинарном.
Анализ двух значений может натолкнуть на правильные мысли
1. Попробуйте в формате отображения оставить 1 знак справа или даже 0 - что поменяется?
2. Вы не написали, в какие именно LW панели идёт запись. Попробуйте писать только в чётные адреса - что поменяется?
3. Тут уже советовали обновлять EBPro - тоже на заметку
4. Если ничего не получается из перечисленного выше - пересмотрите формат. Передавайте, например, INT/DINT, в десятых/сотых/тысячных долях, а в панели формат после запятой используйте нужный
Да, самое главное - проверьте в бинарном виде в ПЛК передаваемое значение и то, что пришло в панель так же в бинарном.
Анализ двух значений может натолкнуть на правильные мысли
СВ
-
- администратор
- Сообщения: 18749
- Зарегистрирован: 17 июн 2008, 16:01
- Имя: Евгений свет Брониславович
- Страна: Россия
- город/регион: Санкт-Петербург
- Благодарил (а): 973 раза
- Поблагодарили: 1852 раза
Weintek cMT Modbus Server + S7-1200 Client - Проблема float
Можно устранить очень просто. Передавать в INT или SHORT и в панели масштабировать только при отображении, если требуется. Если количество знаков после десятичной точки во всех значениях одинаково, то и коэф.масштабирования тоже будет одинаков и тогда всё упрощается. А если значения интересны вообще целочисленные - то вовсе незачем использовать float.
В нескольких контроллерах видел это: значения передаются именно в INT или SHORT, без десятичной точки - именно для того чтобы избежать подобных проблем, что с успехом и достигается.
По вопросам работы Форума можно обратиться по этим контактам.