четверг, 6 июня 2013 г.

Кодирование ТЭМ-104

Кодирование ТЭМ-104


Пробуем снять данные со счетчика ТЭМ-104.

На счетчике 3 системы: Р-Подача, Тупиковая ГВС, Расходомер V. Вопрос такой: как определить из каких ячеек массива t необходимо выбрать данные? В описании протокола не совсем понятно, как это делается для массивов t и p?

Ответ: Температура и давление - по системам, 4 системы по 3 температуры или 3 давления соответственно. У Вас первая система, код 8 - две температуры, вторая система, код 5 - две температуры, номера температур берете из наших теплосхем, нумерация сверху вниз.

Вопрос: Я так понял температуру тупо берем из массива t[4][3]?
Где: 

t[0] - массив из 3 температур для 1 системы, 
t[1] - массив из 3 температур для 2 системы, 
t[2] - массив из 3 температур для 3 системы, 
t[3] - массив из 3 температур для 4 системы


Ответ: Да. 

4 комментария:

  1. Вопрос.
    программой 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 град. ???

    ОтветитьУдалить
  2. В разделе 4.1 есть примечание, в котором написано:
    Примечание:
    а) Все числа, занимающие более 1 байта, хранятся в памяти теплосчетчика в формате Motorola (MSB->LSB), то есть для преобразования этих чисел в формат Intel, применяемый в PC-совместимых компьютерах, необходимо поменять порядок байт на обратный;

    Очень хотелось бы попросить программистов и кодеров повнимательнее и не раз перечитывать описание протокола, там все написано и отшлифовано десятками таких же программистов. Поверхностные вопросы показывают уровень программера.

    ОтветитьУдалить
  3. Я в эти строки вчитывался несколько часов. И я не программист. И поэтому я обращаюсь за помощью. варианты простой перестановки байтов результата не принесли. 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 градуса (что соответствует действительности) без перестановки.

    ОтветитьУдалить
  4. Нет, не дает мне бог терпения, потому посмотрите ссылку http://www.h-schmidt.net/FloatConverter/IEEE754.html , там готовый аглицкий конвертор, вставьте свой код 41 B3 25 AD и посмотрите результат - 22.393396.

    ОтветитьУдалить