/  Архив форума
   /  Оборудование производства НПО "Тепловизор"
/  Чтение архивов 2й теплосистемы

Форум : Оборудование производства НПО "Тепловизор"

Название : Чтение архивов 2й теплосистемы

© NegaSoft co., 2005
http://www.teplovizor.ru

URL этой темы
http://www.teplovizor.ru/forum/viewtopic.php?topic_id=627&forum=1


 reF2JkoNN :

27.5.19 08:16
 Добрый день,
Текущие параметры и архивы по 1й т/с и текущие параметры по 2й т/с считались без проблем. Во 2й т/с только один параметр - объем по 1му трубопроводу.
Для считывания архивов по 2й т/с, чтобы получить номер регистра начала заголовка архивного файла считал значения регистров 0x292 - 0x20ВС и 0x293 - 0x6000 (как описано в этой теме). Регистр начала заголовка архивного файла получился 0x2000. Попытался получить значение объема нарастающим итогом по 1му трубопроводу 2й т/с из регистров 0x200B, 0x200C - там значение не соответствует тому, что выводится на т/счетчике.
В регистре 0x293 лежит значение 0x6000. Младший байт значения (0x00) - это младшая часть номера регистра начала заголовка архивного файла 2й т/с, а старший байт(0x60) - это младший байт набора архивируемых параметров 2й т/с (стр.8 документа "ВИС.Т-НС, протокол Modbus"). Т.е. архивируются параметры "Масса №2" и "Масса №3", а нужен параметр "Объем №1". Если архивировать параметры "Объем №1" и "Время наработки", то в регистре 0x293 должно быть значение 0x0300.
Прошу сообщить верны ли мои утверждения или где-то ошибаюсь?

 CH :

27.5.19 12:03
 Здравствуйте.
Всё даже хуже, чем кажется. ) Попытаюсь охватить проблему умозрительно - на практике никто этим не замимался.

Формат представления чисел в приборе - старшим байтом вперёд. И если из регистров 0x292/3 вами считана последовательность байтов 0x20BC6000, то 0xBC60 и будет адресом начала заголовка второго архива.
При этом, это отнюдь не адрес 16-битного регистра, а адрес байта в адресном пространстве прибора.
Смещение в регистрах от начала архивной области получим вычитая из данного числа 0x1000 (смещение архива в памяти) и поделив пополам (переход к 16-бит регистрам).
К этому регистровому смещению не забываем добавить базовый регистровый адрес архива 0x1000.
Итого, адрес регистра начала заголовка = 0x1000 + ((0xBC60 - 0x1000) / 2).
Кажется, так.

 reF2JkoNN :

29.5.19 07:10
 Спасибо. Буду пробовать.