PDA

Просмотр полной версии : Помогите преобразовать


LBM
14.04.2005, 05:14
Поставило руководство перед нами задачу сделать софт для учета отпущенных энер.ресурсов.
Подключение к Текону-17 -> разобрались.
Опрос датчиков -> понятно сделали,
Теперь конкретный пример: получить мгновенное значение с датчика ?3
посылаем команду 01 03 11, получаем ответ 84 5B 47 21 - это флоат формат,вот тут все и началось как мы его только не крутили не получается 11.4 градуса( а именно ее и показывает прога Телемост).Пробовали считывать разные показания ,они и близко рядом не стоят с тем что показывает Телемост.
Вразумите пожалуйста.

srr
14.04.2005, 08:25
Формат представления плавающих чисел в ТЭКОН 10,17 описан в документе Теплоэнергоконтроллер ТЭКОН-17. Обмен по последовательному каналу. Руководство программиста.
T10.06.59 РД
стр 56 р 6.2 Внутренний форматы данных ТЭКОН
<A HREF="http://www.kreit.ru/files/t100659rd.pdf" TARGET="_blank">www.kreit.ru/files/t100659rd.pdf</A>

LBM
14.04.2005, 09:19
srr, Есть у нас такая дока читали.
Вот мой пример согласно этой доки и разберем:
имеем 845b4721 - 1 байт (84) порядок, убираем
остается 5B4721 - 7 бит 2 байт знак числа, унас 5В это 01011101 - 7 бит равен нулю,значит число положительное. Преобразуем 5В4721 в десятичное (можно даже виндузным калькулятором) получаем 5981985 потом ставим порядок он равен 4 -&gt; 5981.985 НУ БЛИЗКО к 11.4 градуса даже не подходит.

LBM
14.04.2005, 09:30
К выше сказанному добавлю что для числа 11.4 до 11.5 должны получать с контроллера числа
XX116520 до XX118C30 судя по документации.

srr
14.04.2005, 12:36
Вы неверно интерпретирует термины &quot;нормализования мантиса&quot; и &quot;порядок&quot;.
итак число в памяти представлено так: 84 5b 47 21
Тогда 5B4721h = 5981985(dec) =10110110100011100100001 - это дробная часть числа 0.10110110100011100100001 (bin) (23разряда)
0.10110110100011100100001 (bin) = (5981985(dec)) / (2 в 23 степени) = 5981985 / 8388608 = 0,71310818195343017578125
теперь перйдем к порядку - он равен 4h=84h-80h=4(dec) следовательно результат = 0,71310818195343017578125 * (2 в степени 4) = 0,71310818195343017578125 * 16= 11,4097309112548828125

LBM
14.04.2005, 14:02
srr, точно число как раз и было 11,409 .БОЛЬШОЕ СПАСИБО - смело ставлю себе и своим сослуживцам двойку по математике.