: email: tem@nt-rt.ru ГК "НОВЫЕ ТЕХНОЛОГИИ" является представителем Компании ТЭМ ТЕПЛОСЧЕТЧИК ТЭМ-104 ОПИСАНИЕ ПРОТОКОЛА ОБМЕНА http://tem.nt-rt.ru 2013-01-30 2013-02-12 СОДЕРЖАНИЕ 1 ОБЩАЯ СТРУКТУРА ПАКЕТА ДАННЫХ.......................................................3 2 КОМАНДЫ УСТАНОВЛЕНИЯ СВЯЗИ ...........................................................4 2.1 Идентификация устройства ......................................................................4 3 КОМАНДЫ ЧТЕНИЯ ИЗ ПАМЯТИ .................................................................5 3.1 Чтение памяти таймера 128 байт.............................................................5 3.2 Чтение памяти таймера 2К байт (команды 0F01 и 8F01#) .....................5 3.3 Чтение памяти Flash 512К байт (команды 0F03 и 8F03#).......................6 3.4 Чтение оперативной памяти (команды 0C01h и 8C01h) .........................7 3.5 Поиск записи по дате (команды 0D11# и 8D11#) ....................................8 4 СТРУКТУРА ДАННЫХ, ХРАНЯЩИХСЯ В ПАМЯТИ ТЕПЛОСЧЕТЧИКА.....9 4.1 Память таймера 2К байт ...........................................................................9 4.2 Память таймера 128 байт .......................................................................11 4.3 Оперативная память ...............................................................................12 4.4 Память Flash ............................................................................................12 5 ЗАМЕЧАНИЯ ПО РАСШИФРОВКЕ АРХИВА ..............................................13 5.1 Определение конфигурации прибора ....................................................13 5.2 Расшифровка текущих показаний теплосчетчика.................................14 5.3 Расшифровка архива ..............................................................................14 2 Теплосчетчик ТЭМ-104. Описание протокола обмена. 1 ОБЩАЯ СТРУКТУРА ПАКЕТА ДАННЫХ Посылка «ведущего» устройства (ПК, АПД и т.д.) Байт 0 Обозначение SIG Пример 55 1 ADDR 01 2 !ADDR FE 3 CGRP 0F 4 5 ] 5+LEN CMD LEN 02 02 CS Описание Признак начала пакета Сетевой адрес ведомого устройства, которому адресуется пакет Инверсное значение сетевого адреса Группа команд: 00 – команды установления связи; 0F – команды чтения памяти; Идентификатор команды Число байт посылаемых данных (0..40) Данные (если таковые есть) Контрольная сумма (дополнение до нуля)* Примечание: все значения чисел шестнадцатеричные. Ответ «ведомого» устройства (теплосчетчик, АПД) Байт 0 1 2 3 4 5 6 ] 5+LEN Обозначение SIG ADDR !ADDR CGRP CMD LEN DATA CS Пример AA 01 FE 0F 02 02 04 Описание Признак начала пакета Сетевой адрес устройства Инверсное значение сетевого адреса Группа команд Идентификатор команды Число байт посылаемых данных Контрольная сумма (дополнение до нуля) * Контрольная сумма посылаемого/принимаемого пакета рассчитывается как CS = NOT (B1+B2+B3+,+BN), где B1,BN - последовательность байт пакета, исключая байт контрольной суммы, NOT – операция побитного логического «НЕ». Начиная с версии ПО 2R.37 введен ряд дополнительных команд, предназначенных преимущественно для работы с GPRSмодемами. Далее по тексту эти команды и связанные с ними изменения в структуре запросов/ответов отмечены знаком #. Также начиная с версий ПО 2R.37 максимальное число байт запрашиваемых данных в командах чтения таймера 2K и Flash увеличено до 256 (значение 00 поля TLEN соответствует запросу 256 байт данных) Теплосчетчик ТЭМ-104. Описание протокола обмена. 3 2 КОМАНДЫ УСТАНОВЛЕНИЯ СВЯЗИ 2.1 Идентификация устройства (команда 0000) Посылка «ведущего» устройства Байт 0 Обозначение SIG Пример 55 1 ADDR 01 2 3 4 5 6 !ADDR CGRP CMD LEN CS FE 00 00 00 AB Описание Признак начала пакета Сетевой адрес ведомого устройства, которому адресуется пакет Инверсное значение сетевого адреса Группа команд Идентификация устройства Число байт посылаемых данных (0) Контрольная сумма (дополнение до нуля) Ответ «ведомого» устройства Байт 0 1 2 3 4 5 6 7 8 9 A B C D 4 Обозначение SIG ADDR !ADDR CGRP CMD LEN DATA DATA DATA DATA DATA DATA DATA CS Пример AA 01 FE 00 00 07 Описание Признак начала пакета Сетевой адрес устройства Инверсное значение сетевого адреса Группа команд Идентификатор команды Число байт посылаемых данных ‘T’ ‘E’ ‘M’ ‘-‘ ‘1’ ‘0‘ ‘4’ Контрольная сумма (дополнение до нуля) Теплосчетчик ТЭМ-104. Описание протокола обмена. 3 КОМАНДЫ ЧТЕНИЯ ИЗ ПАМЯТИ 3.1 Чтение памяти таймера 128 байт (команды 0F02 и 8F02#) Посылка «ведущего» устройства Байт 0 Обозначение SIG Пример 55 1 ADDR 01 2 3 4 5 6 7 8 !ADDR CGRP CMD LEN TADDR TLEN CS FE 0F (8F#) 02 02 00 10 Описание Признак начала пакета Сетевой адрес ведомого устройства, которому адресуется пакет Инверсное значение сетевого адреса Группа команд Чтение памяти таймера 128 Число байт посылаемых данных (2) Начальный адрес в памяти таймера 128 Длина считываемого блока данных (1..64 байт) Контрольная сумма (дополнение до нуля) Ответ «ведомого» устройства Байт 0 1 2 Обозначение SIG ADDR !ADDR 3 CGRP Пример AA 01 FE 0F (TADDR#) 4 CMD 02 (TADDR#) 5 LEN 10 6 ] 5+LEN DATA DATA CS Описание Признак начала пакета Сетевой адрес устройства Инверсное значение сетевого адреса Группа команд Для команды 8F02 равно значению TADDR из посылки «ведущего» Чтение памяти таймера 128 Для команды 8F02 равно значению TADDR из посылки «ведущего» Число байт посылаемых данных (равно полю TLEN в посылке ведущего) Данные Контрольная сумма (дополнение до нуля) 3.2 Чтение памяти таймера 2К байт (команды 0F01 и 8F01#) Посылка «ведущего» устройства Байт 0 Обозначение SIG Пример 55 1 ADDR 01 2 3 4 5 !ADDR CGRP CMD LEN FE 0F(8F#) 01 03 6 TADRH 01 7 TADRL 80 8 TLEN 40 9 CS Описание Признак начала пакета Сетевой адрес ведомого устройства, которому адресуется пакет Инверсное значение сетевого адреса Группа команд Чтение памяти таймера 2К Число байт посылаемых данных (3) Начальный адрес в памяти таймера 2K (старший байт) Начальный адрес в памяти таймера 2K (младший байт) Длина считываемого блока данных (1..64 байт, 1..256 байт для команды 8F01) Контрольная сумма (дополнение до нуля) Теплосчетчик ТЭМ-104. Описание протокола обмена. 5 Ответ «ведомого» устройства Байт 0 1 2 Обозначение SIG ADDR !ADDR 3 CGRP Пример AA 01 FE 0F (TADRH#) 4 CMD 01 (TADRL#) 5 LEN 40 6 ] 5+LEN DATA DATA CS Описание Признак начала пакета Сетевой адрес устройства Инверсное значение сетевого адреса Группа команд Для команды 8F01 равно значению TADRH из посылки «ведущего» Чтение памяти таймера 2К Для команды 8F01 равно значению TADRL из посылки «ведущего» Число байт посылаемых данных (равно полю TLEN в посылке ведущего) Данные Контрольная сумма (дополнение до нуля) 3.3 Чтение памяти Flash 512К байт (команды 0F03 и 8F03#) Посылка «ведущего» устройства Байт 0 Обозначение SIG Пример 55 1 ADDR 01 2 3 4 5 !ADDR CGRP CMD LEN FE 0F(8F#) 03 05 6 TLEN 40 7 8 9 FADR3 FADR2 FADR1 00 01 00 A FADR0 80 B CS Описание Признак начала пакета Сетевой адрес ведомого устройства, которому адресуется пакет Инверсное значение сетевого адреса Группа команд Чтение памяти Flash Число байт посылаемых данных (5) Длина считываемого блока данных (1..64 байт, 1..256 байт для команды 8F03) Начальный адрес в памяти Flash (старший байт) ] ] Начальный адрес в памяти Flash (младший байт) Контрольная сумма (дополнение до нуля) Ответ «ведомого» устройства Байт 0 1 2 Обозначение SIG ADDR !ADDR Пример AA 01 FE 3 CGRP 0F (FADR1#) 4 CMD 03 (FADR0#) 5 LEN 40 6 ] 5+LEN 6 DATA DATA CS Описание Признак начала пакета Сетевой адрес устройства Инверсное значение сетевого адреса Группа команд Для команды 8F03 равно значению FADR1 из посылки «ведущего» Идентификатор команды Для команды 8F03 равно значению FADR0 из посылки «ведущего» Число байт посылаемых данных (равно полю TLEN в посылке ведущего) Данные Контрольная сумма (дополнение до нуля) Теплосчетчик ТЭМ-104. Описание протокола обмена. 3.4 Чтение оперативной памяти (команды 0C01h и 8C01h) Посылка «ведущего» устройства Байт 0 Обозначение SIG Пример 55 1 ADDR 01 2 3 4 5 !ADDR CGRP CMD LEN FE 0С(8C#) 01 03 6 TADRH 01 7 TADRL 80 8 TLEN 40 9 CS Описание Признак начала пакета Сетевой адрес ведомого устройства, которому адресуется пакет Инверсное значение сетевого адреса Группа команд Чтение оперативной памяти Число байт посылаемых данных (3) Начальный адрес в оперативной памяти (старший байт) Начальный адрес в оперативной памяти (младший байт) Длина считываемого блока данных (1..64 байт) Контрольная сумма (дополнение до нуля) Ответ «ведомого» устройства Байт 0 1 2 Обозначение SIG ADDR !ADDR 3 CGRP Пример AA 01 FE 0C (TADRH #) 4 CMD 01 (TADRL #) 5 LEN 40 6 ] 5+LEN DATA DATA CS Описание Признак начала пакета Сетевой адрес устройства Инверсное значение сетевого адреса Группа команд Для команды 8C01 равно значению TADRH из посылки «ведущего» Чтение памяти таймера 128 Для команды 8C01 равно значению TADRL из посылки «ведущего» Число байт посылаемых данных (равно полю TLEN в посылке ведущего) Данные Контрольная сумма (дополнение до нуля) Теплосчетчик ТЭМ-104. Описание протокола обмена. 7 3.5 Поиск записи по дате (команды 0D11# и 8D11#) (Команда "Поиск записи по дате" актуальна для приборов с версиями 3А.10 и старше!) Посылка «ведущего» устройства Байт 0 Обозначение SIG Пример 55 1 ADDR 01 2 3 4 5 !ADDR CGRP CMD LEN FE 0D(8D) 11 05 6 STAT_TYPE 40 7 8 9 A B HOUR DAY MONTH YEAR CS 00 01 00 80 Описание Признак начала пакета Сетевой адрес ведомого устройства, которому адресуется пакет Инверсное значение сетевого адреса Группа команд Поиск записи Число байт посылаемых данных (5) Тип архива: 0 – часовой; 1 – суточный; 2 – месячный. Час (BCD) День (BCD) Месяц (BCD) Год (BCD) Контрольная сумма (дополнение до нуля) Ответ «ведомого» устройства Байт 0 1 2 3 4 5 6 7 8 Обозначение SIG ADDR !ADDR CGRP CMD LEN NUMH NUML CS Пример AA 01 FE 0D(8D) 11 2 Описание Признак начала пакета Сетевой адрес устройства Инверсное значение сетевого адреса Группа команд Идентификатор команды Число байт посылаемых данных Номер записи (старший байт)** Номер записи (младший байт)** Контрольная сумма (дополнение до нуля) **Примечание: в случае, если запись с заданной датой не найдена, в полях NUMH и NUML возвращается значение FFFFh 8 Теплосчетчик ТЭМ-104. Описание протокола обмена. 4 СТРУКТУРА ДАННЫХ, ХРАНЯЩИХСЯ В ПАМЯТИ ТЕПЛОСЧЕТЧИКА 4.1 Память таймера 2К байт Адрес (HEX) 0000 0001 systems type_g C C 000C type_t C 0078 007C 00С4 net_num number diam L L I[4] 00СС g_max F[4] 00DC g_pcnt_max C[4] 00E0 g_pcnt_min C[4] 00E4 0074 00F4 00F8 00FС f_max weight next_hour next_day next_month F[2] F[2] L L L 00200 SysInt_copy1 Имя Тип ** Описание число систем тип датчиков расхода: 0 - частотные 1 - импульсные тип температур в статистике: 0 - среднеарифметические 1 - средневзвешенные номер прибора в сети заводской номер прибора Диаметр условного прохода по каналам Максимальное значение расхода по системам(Gmax1)* Установленное значение Gуmax в процентах от (*). Значение Gmax рассчитывается как Gmax = Gmax1 * Gуmax * 0.01 Установленное значение Gуmin в процентах от (*). Значение Gmin рассчитывается как Gmin = Gmax1 * Gуmin * 0.005 Максимальная частота Вес импульса Адрес следующей часовой записи Адрес следующей суточной записи Адрес следующей записи на отчетную дату Структуры интеграторов по системам (см.ниже) Копия интеграторов по системам Конфигурация систем (см.ниже) Единицы измерения мм т/ч т/ч т/ч Гц л/имп. 00300 SysInt_copy2 ** 00600 SysCon ***[4] Примечания: а) Все числа, занимающие более 1 байта, хранятся в памяти теплосчетчика в формате Motorola (MSB->LSB), то есть для преобразования этих чисел в формат Intel, применяемый в PC-совместимых компьютерах, необходимо поменять порядок байт на обратный; б) Типы данных: F – float (4 байта); L – long (4 байта); I – Int (2 байта); C – Char (1 байт); BCD – число в двоично-десятичном коде. в) Для получения адреса записи (часовой, суточной или на отчетную дату) в памяти Flash, которая будет записана следующей, необходимо вычесть из соответствующего значения адреса (next_hour, next_day или next_month) 200000h(шестнадцатиричное!!!) Теплосчетчик ТЭМ-104. Описание протокола обмена. 9 **Структура SysInt (интеграторы) Смещение (HEX) Имя Тип +0000 tek_dat BCD[4] +0004 prev_dat BCD[4] +0008 l_IntV F[4] +0018 l_IntM F[4] +0028 l_IntQ F[4] +0038 h_IntV L[4] +0048 h_IntM L[4] +0058 h_IntQ L[4] +0068 TRab L +006С TNar L[4] +007C Tmin L[4] +008C Tmax L[4] +009C Tdt L[4] +00AC +00BC +00C0 +00C8 +00E0 Ttn tekerr teherr t p +00EC rshv +00FF check L[4] C[4] I[4] I[4][3] C[4][3] F[4] C Описание Время и дата записи (ЧЧ ДД ММ ГГ) Время и дата предыдущей записи (ЧЧ ДД ММ ГГ) Дробная часть интеграторов объема по каналам Дробная часть интеграторов массы по каналам Дробная часть интеграторов энергии по системам Целая часть интеграторов объема по каналам Целая часть интеграторов массы по каналам Целая часть интеграторов энергии по системам время работы прибора при поданном питании время работы систем без ошибок расход меньше минимального расход больше максимального разность температур меньше минимальной техническая неисправность Ошибки по системам Ошибки по системам Температура по системам Давление по системам Интеграторы объемного расхода по каналам Контрольная сумма * Единицы измерения м 3 т Гкал м 3 Т Гкал сек сек сек сек сек сек °C/100 МПа/100 3 м /ч * Контрольная сумма записи статистики (она же структура SysInt) ТЭМ-104 рассчитывается как простая сумма всех байт записи, кроме байта контрольной суммы. 10 Теплосчетчик ТЭМ-104. Описание протокола обмена. *** Структура SysCon (конфигурация систем, массив из 4 структур SysCon, соответствующих каждой из 4 систем теплосчетчика, хранится в памяти таймера 2К по адресу 0600) Смещение (HEX) Имя Тип +0000 SysType C +0001 Gprog C[4] +0005 Gchan C[4] +0009 Tprog C[4] +000D Tchan C[4] +0011 Pprog C[4] +0015 Pchan C[4] Описание Единицы измерения тип системы (01]0C) возможные значения типов систем: 00 - Расходомер V 01 - Расходомер M 02 - Магистраль 03 - Подача 04 - Обратка 05 - Тупиковая ГВС 06 - Подпитка НСО 07 - Подпитка источника 08 - Подача + Р 0A - Открытая 0B - ГВС с рециркуляцией 0C - Источник Расход по каналам: 0 – измеряемый; 1 ]100 – программируемый в% от Gmax Используемые каналы расхода Температура по каналам: 0 – измеряемая; 1 ]150 – программируемая в °C Используемые каналы температуры Давление по каналам: 0 – измеряемое; 1 ]16 – программируемая в МПа/10 Используемые каналы давления 4.2 Память таймера 128 байт Адрес (HEX) 0010 0012 0014 0017 0018 0019 Имя Тип t_ss t_mm t_hh t_dm t_my t_yy BCD BCD BCD BCD BCD BCD Описание Единицы измерения Текущее время (секунды) Текущее время (минуты) Текущее время (часы) Текущая дата (день) Текущая дата (месяц) Текущая дата (год) Теплосчетчик ТЭМ-104. Описание протокола обмена. 11 4.3 Оперативная память В оперативной памяти хранится ряд текущих параметров по системам, начиная с адреса 2200h (4 структуры SysPar, описанных ниже). Структура SysPar Смещение (HEX) Имя Тип +00 tmp F[4] +10 prs F[4] +20 ro F[4] +30 hent F[4] +40 rshv F[4] +50 rshm F[4] Описание Текущие значения температуры по каналам Текущие значения давления по каналам Текущие значения плотности теплоносителя Текущие значения энтальпии Текущие значения объемного расхода Текущие значения массового расхода Текущие значения мощности Ошибки Ошибки +60 pwr F[4] +70 tekerr C +72 teherr I +74 зарезервировано C[31] * - на табло теплосчетчика отображается в Гкал/час Единицы измерения °C МПа м3/ч т/ч Ккал/час* Размер структуры SysPar - 92h байт. 4.4 Память Flash В памяти Flash 512К байт хранится архив статистики, состоящий из однотипных структур SysInt (см. выше). Записи распределены в адресном пространстве памяти следующим образом: № записи 0-1535 1536-1919 1920-2047 12 Адресное пространство 00000000 – 0005FFFF 00060000 – 00076FFF 00078000 – 0007FFFF Описание Часовые записи (1536) Суточные записи (384) Записи на отчетную дату (128) Теплосчетчик ТЭМ-104. Описание протокола обмена. 5 ЗАМЕЧАНИЯ ПО РАСШИФРОВКЕ АРХИВА 5.1 Определение конфигурации прибора 5.1.1 Число систем – байт systems по адресу 0000 из памяти таймера 2К байт (далее – Т2К), может принимать значения от 1 до 4; 5.1.2 Тип каждой из систем определяется при помощи значений system_t из структур SysCon (хранятся в Т2К по адресу 0600), расшифровка значений дана в таблице; 5.1.3 Используемые в каждой из систем каналы расхода, давления и температуры определяются путем анализа соответствующих элементов массива структур SysCon (массивы Gchan, Tchan и Pchan). Количество каналов расхода (G), давления (P) и температуры (T) для различных типов систем приведено в таблице: Тип системы (HEX) 0 1 2 3 4 5 6 7 8 A B C G 1 1 1 1 1 1 1 1 2 2 2 3 P 0 1 1 2 2 2 2 2 2 3 3 3 T 0 1 1 2 2 2 2 2 2 3 3 3 Пример: значения массива Gchan 00 01 XX XX (XX - любое значение) для системы «Открытая» (код 0Ah) означают, что используются 1-й и 2-й каналы расхода; 5.1.4 Значения Gmax (метрологические) хранятся поканально, т.е. в качестве индекса массива g_max необходимо брать не номер системы, а номер соответствующего канала расхода в системе; 5.1.5 Установленные в приборе значения Gmin.уст. и Gmax уст. вычисляются следующим образом: Gmax.уст. = Gmax * G%max * 0.01, где G%max – значение элемента массива g_pcnt_max для соответствующего канала расхода и Gmin.уст. = Gmax * G%min * 0.0005, где G%min – значение элемента массива g_pcnt_min для соответствующего канала расхода; 5.1.6 Значения диаметра условного прохода dу по каналам хранятся в массиве diam; для импульсных каналов 3 и 4 значения dу берутся напрямую из элементов массива diam; для частотных каналов 1 и 2 значения определяются следующим образом: Теплосчетчик ТЭМ-104. Описание протокола обмена. 13 Значение соответствующего элемента массива diam 0 1 2 3 4 5 6 7 Фактическое значение dу, мм 15 25 32 40 50 80 100 150 5.2 Расшифровка текущих показаний теплосчетчика 5.2.1 Дата и время хранятся в памяти таймера 128 в двоичнодесятичном коде, начиная с адреса 010 (секунды) и заканчивая адресом 019 (год): Пример: цепочка шестнадцатеричных значений 33 00 15 00 14 00 02 02 03 04 расшифровывается как 14 ч. 15 мин. 33 сек. 2 марта 2004 года; 5.2.2 Значения интеграторов накопленной энергии Q, массы М и объема V рассчитываются как: Q = QH + QL, где QH и QL - значения элементов массивов h_intQ и l_intQ структуры SysInt для соответствующей системы; M = MH + ML, где MH и ML - значения элементов массивов h_intM и l_intM структуры SysInt для соответствующего канала; V = VH + VL, где VH и VL - значения элементов массивов h_intV и l_intV структуры SysInt для соответствующего канала; 5.2.3 Значения температур и давлений для соответствующих каналов по системам берутся из структур SysPar из оперативной памяти. 5.2.4 Интеграторы времени наработки (в секундах), а также времен работы прибора в нештатном режиме хранятся по системам в массивах TNar, Tmin, Tmax, Tdt, Ttn структуры SysInt; интегратор общего времени работы прибора при включенном питании хранится в переменной TRab. 5.3 Расшифровка архива 5.3.1 Дата и время создания записи хранятся в двоичнодесятичном коде, начиная со смещения 0000 (час) и заканчивая смещением 0003 (год) Пример: 08 20 03 04 – 20 марта 2004г. 08:00; 5.3.2 Дата и время, за которые производится запись, хранятся в двоично-десятичном коде, начиная со смещения 0004 (час) и заканчивая смещением 0007 (год). 14 Теплосчетчик ТЭМ-104. Описание протокола обмена. Пример: 07 20 03 04 – 20 марта 2004г. 07:00; 5.3.3 Значения интеграторов накопленной энергии Q рассчитываются следующим образом: Q = QH + QL, где QH и QL - значения элементов массивов h_intQ и l_intQ для соответствующего канала.; 5.3.4 Значения интеграторов массы и объема вычисляются аналогично п. 5.2.3; 5.3.5 Значения температур и давлений для соответствующих каналов берутся из массивов t и p соответственно; 5.3.6 Значения интеграторов времен получают аналогично п. 5.2.5; 5.3.7 Ошибки по системам за текущий час получают путем анализа значений tekerr и teherr (расшифровка значений отдельных битов приведена в таблице). tekerr Бит 0 1 2 3 4 5 6 7 Ошибка G1 < min G2 < min G3 < min G1 > max G2 > max G3 > max dt1 < min dt2 < min teherr Бит 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Ошибка тех. неиспр канала расхода 1 тех. неиспр канала расхода 2 тех. неиспр канала расхода 3 тех. неиспр канала температуры 1 тех. неиспр канала температуры 2 тех. неиспр канала температуры 3 тех. неиспр канала давления 1 тех. неиспр канала давления 2 тех. неиспр канала давления 3 реверс в первом канале реверс во втором канале выключение питания Теплосчетчик ТЭМ-104. Описание протокола обмена. 15 : email: tem@nt-rt.ru http://tem.nt-rt.ru 16 Теплосчетчик ТЭМ-104. Описание протокола обмена.