Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
27.04.2024, 11:23:27
 
Начало Помощь Поиск Войти Регистрация
Новости: Форум обновлен

+  Форум АО "ВЗЛЕТ"
|-+  Приборы ЗАО "Взлет"
| |-+  Отдел программистов
| | |-+  Вопрос по размещению данных ModBus
0 Пользователей и 1 Гость смотрят эту тему. « предыдущая тема следующая тема »
Страниц: [1] Печать
Автор Тема: Вопрос по размещению данных ModBus  (Прочитано 11395 раз)
Leonid
Гость
« : 06.08.2009, 20:59:11 »

Добрый вечер!
Разрабатываю свою программу для опроса тепловычислителей ТСРВ-023, 022, 020 с использованием протокола ModBus. Интересует, как расположены данные в ответных сообщениях, т.е. для всех типов данных значения располагаются начиная со старшего байта к младшему (как должно быть по протоколу ModBus), или же так, как они храняться в памяти (начиная с младшего байта)?
К примеру, читаю 03 функцией регистр типа float, нужно ли мне "переворачивать" байты данных ответного сообщения? Или же достаточно привести установленный на начало данных указатель типа float и разадресовать?
float Val = *((float *)(& buf[x+n]));
Записан
Денис Пономарев
Global Moderator
*****

Харизма: 6
Офлайн Офлайн

Сообщений: 74



« Ответ #1 : 06.08.2009, 21:30:09 »

Рекомендуем ознакомиться с документом
http://www.vzljot.ru/files/docs/83/prtkl_Modbus_standart_data.pdf

Так же можно ознакомиться с http://www.vzljot.ru/soft-download/3/
Там есть доки и демки на С, VB и DELPHI
Записан
Leonid
Гость
« Ответ #2 : 07.08.2009, 09:02:10 »

Большое спасибо! Ответ более чем исчерпывающий!
Записан
Leonid
Гость
« Ответ #3 : 11.08.2009, 13:00:10 »

Добрый день!

Возник еще один вопрос: есть два регистра типа float, первый означает целую часть, второй дробную. Поясните, как собрать два значения в одно (т.к. я понимаю, что float уже дробное). Возможно ли привести такое значение просто к float, хоть и с потерей точности?
Записан
Денис Пономарев
Global Moderator
*****

Харизма: 6
Офлайн Офлайн

Сообщений: 74



« Ответ #4 : 11.08.2009, 13:26:21 »

Как правило в наших приборах первый регистр идет 32-битный в виде целого, и следом 32-битный вещественный. То есть после получения их надо сложить, получив вещественное.
Записан
lbv
Гость
« Ответ #5 : 11.08.2009, 14:05:46 »

Это в последних приборах, раньше были два float. Их нужно просто сложить.
Записан
Bull
Гость
« Ответ #6 : 07.10.2009, 18:06:04 »

Здравствуйте!
Интересуюсь,  где найти список Modbus регистров прибора КПИ-010В?
в частности его модулей IMR,USI,IPT?
На сайте не обнаружил, может плохо искал, подскажите.
Для написания поверочных программ.
Спасибо.
Записан
Dekir
Administrator
*****

Харизма: 35
Офлайн Офлайн

Сообщений: 339


Принимаем Ваши пожелания 7 дней в неделю 24 часа


« Ответ #7 : 08.10.2009, 08:09:06 »

Это закрытая информация
Записан
Страниц: [1] Печать 
« предыдущая тема следующая тема »
Перейти в:  


Войти

© 1990—2016, АО «Взлет».
Все права защищены.
Контактная информация
Powered by SMF 1.1.13 | SMF © 2006-2011, Simple Machines LLC
Материалы, размещенные на сайте, охраняются законодательством об авторском праве. Перепечатка материалов допускается только со ссылкой на сайт.