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

+  Форум АО "ВЗЛЕТ"
|-+  Приборы ЗАО "Взлет"
| |-+  Отдел программистов
| | |-+  Данные modbus
0 Пользователей и 1 Гость смотрят эту тему. « предыдущая тема следующая тема »
Страниц: [1] Печать
Автор Тема: Данные modbus  (Прочитано 9053 раз)
vpzasu
Пользователь
**

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

Сообщений: 8


« : 11.02.2014, 04:45:51 »

Здравствуйте.
При запросе по rs-485 modbus, в прибор ТСРВ-022 отправляем следующее сообщение 02 03 С0 66 00 04 (контрольная сумма),получаем следующий ответ от прибора 02 03 72 93 117 64 104 33. Подскажите пожалуйста,что он отвечает,адрес функция и кол-во байт понятно,не могу понять остальное,я запрашиваю массу воды в канале 1,и значения не соответствуют,где ошибка?
Записан
Дмитрий Пархоменко
Global Moderator
*****

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

Сообщений: 1697



« Ответ #1 : 12.02.2014, 08:52:08 »

Судя по описанию протокола обмена ТСРВ-022, Вы спросили у прибора параметр F449159, т.е. "Тепло 1 (дробная часть) в теплосистеме 1, ГДж (ТДж)". Читайте, пожалуйста, документацию внимательнее.
Записан
vpzasu
Пользователь
**

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

Сообщений: 8


« Ответ #2 : 12.02.2014, 09:43:15 »

Судя по адресу С066  это вообще то параметр 449254(449255) а это и есть полная масса воды в канале 1,я внимательно читал.
Записан
Дмитрий Пархоменко
Global Moderator
*****

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

Сообщений: 1697



« Ответ #3 : 12.02.2014, 11:29:20 »

Извиняюсь, Вы правы, я взял С0-06, вместо указанного Вами С0-66.

Помимо описания регистров, Вам еще нужен документ "Протокол Modbus(Стандарт данных).pdf" описывающий форматы передаваемых данных, вот ссылка на него: http://www.vzljot.ru/files/docs/145/prtkl_Modbus_standart_data.pdf
Записан
vpzasu
Пользователь
**

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

Сообщений: 8


« Ответ #4 : 12.02.2014, 11:48:58 »

и его я прочитал,но всё дело в том что значения которые находятся в этом регистре изменяются при счёте,а вот преобразовать их в значение которое показывает сам прибор-нет,я не пойму в каком они формате,значение увеличивается при работающей установке,и должно быль 226552 тонн +\-20 тонн, а то, что приходит в ответ не совпадает,как бы я не конвертировал.
Записан
Дмитрий Пархоменко
Global Moderator
*****

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

Сообщений: 1697



« Ответ #5 : 12.02.2014, 13:03:44 »

Стандарт IEEE 754.
У вас есть ответ  - "72 93 117 64" что есть 0x485D7540, преобразовать это во float очень просто, вот пример на VC++:

unsigned __int32 dwValue = 0x485D7540;
float flValue = *((float *)&dwValue);

Результат: 226773.00

Обратите внимание что это только целая часть значения, дробная лежит рядом, считываете оба значения, их сумма и будет то что Вам нужно.
Записан
Страниц: [1] Печать 
« предыдущая тема следующая тема »
Перейти в:  


Войти

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