1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Weintek cMT Modbus Server + S7-1200 Client - Проблема float

Модератор: специалисты Weintek

Ответить
Аватара пользователя

Автор темы
Sergei_22
здесь недавно
здесь недавно
Сообщения: 13
Зарегистрирован: 20 окт 2019, 16:55
Имя: Сергей
Страна: Россия
город/регион: Новосибирск
Благодарил (а): 5 раз

Weintek cMT Modbus Server + S7-1200 Client - Проблема float

Сообщение Sergei_22 »

Доброе время суток уважаемые форумчане!

Подскажите пж может кто сталкивался с проблемой следующей:
Исходные данные
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 :o
А2 := 499.0 на панели это значение 496.001 :o
А3 := 115.435 на панели это значение 115.000 :o
А4 := 100.0 на панели это значение 100.001 :o
А5 := 999.9 на панели это значение 996.001 :o
Не могу понять почему данные так криво отображаются. Игрался с форматами данных настраиваемые но счастья там не произошло, пробовал использовать только один FLOAT - так же происходит различие (между тем что отправляется и отображается).

Буду оч рад идеям предложениям/решениям, куда и где можно копать по данной проблеме передачи float. :ges_help:
У вас нет необходимых прав для просмотра вложений в этом сообщении.

ogorsv
завсегдатай
завсегдатай
Сообщения: 578
Зарегистрирован: 02 дек 2015, 06:57
Имя: Огородников Сергей
Страна: РФ
Благодарил (а): 121 раз
Поблагодарили: 103 раза

Weintek cMT Modbus Server + S7-1200 Client - Проблема float

Сообщение ogorsv »

Добрый день!

1. Попробуйте в формате отображения оставить 1 знак справа или даже 0 - что поменяется?
2. Вы не написали, в какие именно LW панели идёт запись. Попробуйте писать только в чётные адреса - что поменяется?
3. Тут уже советовали обновлять EBPro - тоже на заметку
4. Если ничего не получается из перечисленного выше - пересмотрите формат. Передавайте, например, INT/DINT, в десятых/сотых/тысячных долях, а в панели формат после запятой используйте нужный

Да, самое главное - проверьте в бинарном виде в ПЛК передаваемое значение и то, что пришло в панель так же в бинарном.
Анализ двух значений может натолкнуть на правильные мысли
СВ
Аватара пользователя

Jackson
администратор
администратор
Сообщения: 17589
Зарегистрирован: 17 июн 2008, 16:01
Имя: Евгений свет Брониславович
Страна: Россия
город/регион: Санкт-Петербург
Благодарил (а): 825 раз
Поблагодарили: 1653 раза

Weintek cMT Modbus Server + S7-1200 Client - Проблема float

Сообщение Jackson »

Sergei_22 писал(а): 23 сен 2023, 08:17 Буду оч рад идеям предложениям/решениям, куда и где можно копать по данной проблеме передачи float.
Можно устранить очень просто. Передавать в INT или SHORT и в панели масштабировать только при отображении, если требуется. Если количество знаков после десятичной точки во всех значениях одинаково, то и коэф.масштабирования тоже будет одинаков и тогда всё упрощается. А если значения интересны вообще целочисленные - то вовсе незачем использовать float.

В нескольких контроллерах видел это: значения передаются именно в INT или SHORT, без десятичной точки - именно для того чтобы избежать подобных проблем, что с успехом и достигается.
По вопросам работы Форума можно обратиться по этим контактам.
Ответить

Вернуться в «WEINTEK (операторские панели)»