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

Modbus Nafta и RegLab

RS-485, ProfiBUS, 4-20 mA, Wi-Fi, GSM и так далее

Модератор: Глоб.модераторы

Ответить

Автор темы
bngGLORY
здесь недавно
здесь недавно
Сообщения: 2
Зарегистрирован: 09 июл 2020, 13:27
Имя: Николай
Страна: Россия
город/регион: Омск

Modbus Nafta и RegLab

Сообщение bngGLORY »

Добрый день, форумчане!

стоит задача подружить контроллеры фирмы "нефтеавтоматика" MK-502CPU и контроллер "ПроСОФТ Системы" R500S CU 00 851 по протоколу Modbus TCP. MK502 master соответственно R500S slave. Для теста передаем значения счетчика(REAL), который считает от 0 до 1000 с шагом 10, вроде бы все хорошо, значения видим, но при передаче в момент когда счетчик досчитывает до 520, шаг становиться 8 + в соседнем регистре появляется "хвост" аля 4.5917748078995605780028770985244e-41. Сталкивался кто-то с данной проблемой? Может подскажите куда копать?

I_m
не первый раз у нас
не первый раз у нас
Сообщения: 396
Зарегистрирован: 28 сен 2022, 15:26
Имя: Андрей
Благодарил (а): 12 раз
Поблагодарили: 54 раза

Modbus Nafta и RegLab

Сообщение I_m »

bngGLORY писал(а): 30 май 2024, 09:31 Может подскажите куда копать?
Порядок слов, раз real (float), наверное. Если счётчик целочисленный, то для теста можно было бы и int/uint взять, как раз одно слово. А для real что-нибудь действительно с плавающей точкой взять, хотя бы и константу - чтобы порядок слов проверить.
Аватара пользователя

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

Modbus Nafta и RegLab

Сообщение Jackson »

bngGLORY писал(а): 30 май 2024, 09:31 по протоколу Modbus TCP. MK502 master соответственно R500S slave
Опять 25! Нет на TCP мастеров и слейвов. Есть серверы и клиенты.
bngGLORY писал(а): 30 май 2024, 09:31 но при передаче в момент когда счетчик досчитывает до 520, шаг становиться 8 + в соседнем регистре появляется "хвост" аля 4.5917748078995605780028770985244e-41. Сталкивался кто-то с данной проблемой?
Все сталкивались. Берите модбаспул и читайте нужное, наблюдайте. Скорее всего у Вас неправильный порядок слов в телеграмме. Может случиться что значение не просто float а double float, но это вряд ли - описание регистров посмотрите, раздел "типы данных". Кстати там же должны быть и примеры чтения разных значений. На крайняк можно взять сниффер и сравнить Ваш обмен данными с примерами из мануала.

В соседнем не регистре а регистрах, float - 4 байта.
По вопросам работы Форума можно обратиться по этим контактам.

pike
специалист
специалист
Сообщения: 600
Зарегистрирован: 08 авг 2008, 10:43
Имя: Щукин Андрей Александрович
Страна: Россия
город/регион: Москва
Благодарил (а): 7 раз
Поблагодарили: 63 раза

Modbus Nafta и RegLab

Сообщение pike »

В контроллерах по разному принимаются старшие и младшие байты передаваемых данных. У некоторых контроллеров это можно поменять в настройках связи/Modbus.
Если этого нет, то в библиотеке OSCAT для Codesys, который в Регуле, есть блоки SWAP_BYTE для 16 и 32 битных данных.

Для общего развития: https://ru.wikipedia.org/wiki/Порядок_байтов
Авторы ТЗ, с которыми я работаю, не имеют права жаловаться на дороги, ЖКХ, бюрократию и правительство.

Joshua
здесь недавно
здесь недавно
Сообщения: 98
Зарегистрирован: 21 мар 2023, 02:12
Имя: Владимир
Страна: РФ
город/регион: Псков
Благодарил (а): 2 раза
Поблагодарили: 21 раз

Modbus Nafta и RegLab

Сообщение Joshua »

Jackson писал(а): 07 июн 2024, 11:29 Нет на TCP мастеров и слейвов. Есть серверы и клиенты.
Чтобы окончательно всех запутать возьмём ещё "Modbus RTU over TCP". :crazy0to:

bngGLORY, вы пытаетесь прочитать REAL из одного регистра (2 байт), когда его нужно читать из двух соседних (4 байта). Скорее всего у вас ещё неявное преобразование word - int - real.
Есть полезный конвертер для проверки FLOAT, пощёлкайте для лучшего понимания.
В вашем случае вводим 520.0 - получаем 0х44020000 в HEX. Вводим 530.0 - получаем 0x44048000, проверим регистры по отдельности вводом их в поле HEX: 0x4404_0000 - это 528 (520 + 8 шаг), 0x0000_8000 - это искомое вами 4.591774807899560578002877E-41.
При проверке вещественных чисел шаг делайте с приращением дробной части, желательно чтобы и мантисса и экспонента менялись.

I_m
не первый раз у нас
не первый раз у нас
Сообщения: 396
Зарегистрирован: 28 сен 2022, 15:26
Имя: Андрей
Благодарил (а): 12 раз
Поблагодарили: 54 раза

Modbus Nafta и RegLab

Сообщение I_m »

Интересно. Думаете, что если он неделю назад даже "мяу" в ответ не сказал, то за прошедшее время что-то изменилось?
Ответить

Вернуться в «Интерфейсы, протоколы, связь»