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

Тема: Чтение FLOAT по Modbus

  1. #1

    Question Чтение FLOAT по Modbus

    Здравствуйте

    Имеется ТРМ-138.
    Читаю регистры 3 и 4 (соответственно - младшее и старшее слово вещественного числа по измеренному значению).
    Почему-то не получается обратно собрать два слова в вещественное число. Получается ерунда.
    Местами менял Эффекта нет.

    Подскажите пожалуйста, в чем тут хитрость?
    Буду признателен за пример кода на любом языке.

    Заранее спасибо!

  2. #2

    По умолчанию

    Вы сначала покажите как делаете, потом, возможно, кто-то укажет на вашу ошибку

  3. #3
    Пользователь
    Регистрация
    28.08.2008
    Адрес
    23..93..123
    Сообщений
    1,688

    По умолчанию

    Буду признателен за пример кода на любом языке...
    https://ftp.owen.ru/CoDeSys3/11_Docu...odbus_v3.2.pdf

  4. #4

    По умолчанию

    Чем читаете и как? Проверьте, что адресация у вас совпадает, может вы с единицы их считаете и считываются 2 и 3 регистр вместо 3 и 4.

  5. #5

    По умолчанию

    Цитата Сообщение от IvPoed Посмотреть сообщение
    Подскажите пожалуйста, в чем тут хитрость?
    Буду признателен за пример кода на любом языке.
    Заранее спасибо!
    Тут пример функции, меняя входы и выходы, можно собирать, разбирать (переставлять) регистры и байты в любом типе переменных.
    Можно переделать на ФБ - если нужно разобрать на 2-4 части.
    https://owen.ru/forum/showthread.php?t=37645&page=3#30
    Последний раз редактировалось kondor3000; 16.04.2024 в 17:38.

  6. #6

    По умолчанию

    Делаю запрос в адрес ТРМ-138:
    08 04 00 03 00 02 81 52

    Адрес - 8, читаю командой 04 регистры начиная с 03 в количестве 2-х штук, т.е. как раз 3 и 4.
    По документации в них содержится младшее и старшее слово вещественного числа измеренного параметра.

    Получаю в ответ:
    08 04 04 41 9D 9F 35 4E B1

    Последние два байта - CRC16.
    Слово 1 = 419D
    Слово 2 = 9F35

    Дальше пытаюсь объединить их (использую Делфи), например так:
    MakeLong(Слово1, Слово2)

    Получаю хрень

  7. #7

    По умолчанию

    Цитата Сообщение от IvPoed Посмотреть сообщение
    Слово 1 = 419D
    Слово 2 = 9F35
    Получаю хрень
    Слово 1 = 419D, это 16797 в DEC
    Слово 2 = 9F35, это 40757 в DEC
    При сборке получаем, если регистры переставлены -3.838251e-020, если регистры правильно, то 19.70274 Скрин 1 Сборка REAL.jpg
    Последний раз редактировалось kondor3000; 15.04.2024 в 21:33.

  8. #8
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    8,242

    По умолчанию

    Может проще из первого регистра читать, там в INT-е, в смысле, ничего и тасовать не надо!

    ТРМ138_5.PNG
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  9. #9

    По умолчанию

    Цитата Сообщение от IvPoed Посмотреть сообщение
    Делаю запрос в адрес ТРМ-138:
    Дальше пытаюсь объединить их (использую Делфи), например так:
    MakeLong(Слово1, Слово2)

    Получаю хрень
    Вам же float надо а не long.

  10. #10

    По умолчанию

    Все, разобрался.
    В делфи есть побайтовый доступ. Примерно так:

    var r: single;
    r.Bytes[3] := $41;
    r.Bytes[2] := $9d;
    r.Bytes[1] := $9f;
    r.Bytes[0] := $35;

    Всё работает. Порядок получается обратный.

Похожие темы

  1. ПР200 modbus float
    от pruwait в разделе Среда программирования OWEN Logic
    Ответов: 5
    Последнее сообщение: 25.07.2023, 17:40
  2. Ответов: 1
    Последнее сообщение: 26.06.2017, 10:54
  3. формат Float в Modbus TCP
    от Alex_Kos в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 09.10.2011, 22:31
  4. Передача float через Modbus-slave
    от semmi в разделе ПЛК1хх
    Ответов: 5
    Последнее сообщение: 13.12.2010, 13:56
  5. Чтение переменных Float
    от Dima_31 в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 26.03.2010, 15:24

Метки этой темы

Ваши права

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