Кодирование ТЭМ-104
Пробуем снять данные со счетчика ТЭМ-104.
На счетчике 3 системы: Р-Подача, Тупиковая ГВС, Расходомер V. Вопрос такой: как определить из каких ячеек массива t необходимо выбрать данные? В описании протокола не совсем понятно, как это делается для массивов t и p?
Ответ: Температура и давление - по системам, 4 системы по 3 температуры или 3 давления соответственно. У Вас первая система, код 8 - две температуры, вторая система, код 5 - две температуры, номера температур берете из наших теплосхем, нумерация сверху вниз.
Где:
t[0] - массив из 3 температур для 1 системы,
t[1] - массив из 3 температур для 2 системы,
t[2] - массив из 3 температур для 3 системы,
t[3] - массив из 3 температур для 4 системы
Вопрос.
ОтветитьУдалитьпрограммой TesmaStat считываю данные из счетчика ТЭМ-104. смотрю за пересылкой по монитору порта.
запрос уходит в виде:
55 00 FF 0C 01 03 22 00 80 F9
соответственно ответ:
AA 01 FE 0C 01 80 41 B3 25 AD 41 AC 04 C2 00 00
и далее.
4 байта 41 B3 25 AD есть значение температуры первого канала для первой системы.
Как происходит преобразование что на выходе результат 22,39 град. ???
В разделе 4.1 есть примечание, в котором написано:
ОтветитьУдалитьПримечание:
а) Все числа, занимающие более 1 байта, хранятся в памяти теплосчетчика в формате Motorola (MSB->LSB), то есть для преобразования этих чисел в формат Intel, применяемый в PC-совместимых компьютерах, необходимо поменять порядок байт на обратный;
Очень хотелось бы попросить программистов и кодеров повнимательнее и не раз перечитывать описание протокола, там все написано и отшлифовано десятками таких же программистов. Поверхностные вопросы показывают уровень программера.
Я в эти строки вчитывался несколько часов. И я не программист. И поэтому я обращаюсь за помощью. варианты простой перестановки байтов результата не принесли. AD 25 B3 41 ???
ОтветитьУдалитьИ ещё при обращении к структуре SysInt начиная с адреса 02 С8 лежит массив температур по системам. ДВУХ байтовые данные на одно значение. И там перемена местами байт приводит к неверному результату.
вот запрос: 55 00 FF 0F 01 03 02 C0 40 96
и ответ:
AA 01 FE 0F 01 40 00 00 00 00 00 00 00 00 08 7D
08 19 00 00 11 D2 11 C7 03 E8 00 00 00 00 00 00
00 00 00 00 00 00 5A 32 00 5A 32 28 00 00 00 00
00 00 00 00 00 00 00 00 00 00 1A 00 00 00 00 00
00 00 00 00 00 03 5D
И естественно 08 7D = 21,73 градуса (что соответствует действительности) без перестановки.
Нет, не дает мне бог терпения, потому посмотрите ссылку http://www.h-schmidt.net/FloatConverter/IEEE754.html , там готовый аглицкий конвертор, вставьте свой код 41 B3 25 AD и посмотрите результат - 22.393396.
ОтветитьУдалить