|
Название: Данные modbus Отправлено: vpzasu от 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,и значения не соответствуют,где ошибка? Название: Re:Данные modbus Отправлено: Дмитрий Пархоменко от 12.02.2014, 08:52:08 Судя по описанию протокола обмена ТСРВ-022, Вы спросили у прибора параметр F449159, т.е. "Тепло 1 (дробная часть) в теплосистеме 1, ГДж (ТДж)". Читайте, пожалуйста, документацию внимательнее.
Название: Re:Данные modbus Отправлено: vpzasu от 12.02.2014, 09:43:15 Судя по адресу С066 это вообще то параметр 449254(449255) а это и есть полная масса воды в канале 1,я внимательно читал.
Название: Re:Данные modbus Отправлено: Дмитрий Пархоменко от 12.02.2014, 11:29:20 Извиняюсь, Вы правы, я взял С0-06, вместо указанного Вами С0-66.
Помимо описания регистров, Вам еще нужен документ "Протокол Modbus(Стандарт данных).pdf" описывающий форматы передаваемых данных, вот ссылка на него: http://www.vzljot.ru/files/docs/145/prtkl_Modbus_standart_data.pdf Название: Re:Данные modbus Отправлено: vpzasu от 12.02.2014, 11:48:58 и его я прочитал,но всё дело в том что значения которые находятся в этом регистре изменяются при счёте,а вот преобразовать их в значение которое показывает сам прибор-нет,я не пойму в каком они формате,значение увеличивается при работающей установке,и должно быль 226552 тонн +\-20 тонн, а то, что приходит в ответ не совпадает,как бы я не конвертировал.
Название: Re:Данные modbus Отправлено: Дмитрий Пархоменко от 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 Обратите внимание что это только целая часть значения, дробная лежит рядом, считываете оба значения, их сумма и будет то что Вам нужно. |