Форум АО "ВЗЛЕТ"

Приборы ЗАО "Взлет" => Отдел программистов => Тема начата: 024 от 20.12.2008, 19:02:48



Название: Регистры Modbus в ТСРВ024
Отправлено: 024 от 20.12.2008, 19:02:48
Не смог получить достоверные значения параметра "Общее тепло, потребленное абонентом - в рабочем режиме, Гкал, Название в приборе - Wтс" из регистров, указанных в выложенном на сайте перечне (modbus_tsrv0241.doc). При чтении регистров C0BE, C0D6, C0EE получаю какие-то константы. Я делаю что-то не так, или перечень ошибочный?


Название: Re: Регистры Modbus в ТСРВ024
Отправлено: Dekir от 22.12.2008, 12:03:45
Значение находится в 0хC0BE 0хC0BF 0хC0С0 0хC0C1. Переменная, состоящая из 4 регистров, число повышенной точности. Запрашивать надо сразу 4 регистра в одном запросе.
Первые два регистра 0хC0BE 0хC0BF это целая часть числа в формате signed long,
вторые два 0хC0С0 0хC0C1 это дробь в формате float. Обе части имеют одинаковый знак, float находиться в пределах от -1 < float < 1.
Ихнадо сложить в одно 8 байтовое число типа double после прочтения



Название: Re: Регистры Modbus в ТСРВ024
Отправлено: 024 от 22.12.2008, 17:41:38
Спасибо огромное за быстрый и содержательный ответ. Всё получилось. :)
ЗЫ. А документ modbus_tsrv0241.doc требует серьёзной доработки, там много неясностей.


Название: Re: Регистры Modbus в ТСРВ024
Отправлено: Dekir от 23.12.2008, 11:47:51
Согласен, будем дорабатывать


Название: Re: Регистры Modbus в ТСРВ024
Отправлено: Demus от 14.04.2010, 17:46:29
По регистрам такой вопрос. Скачал документ http://www.vzljot.ru/files/docs/83/modbus_tsrv024.doc
1. Поиском по адресу 0xC0BE ищутся  2 регистра: Верхний номинальный ток, мА
ДАВЛЕНИЕ ПД1 (0) 449343
и Общее тепло, потребленное абонентом - в рабочем режиме, Гкал
ТЕПЛОСИСТЕМА ТС1 (0) 349343
2. Пробую прочитать этот регистр как советуют выше, т.е. c0be, c0bf - читаю как signed long,а 0хC0С0 0хC0C1 как float.
С целой частью понятно. Она считывается правильно. А дробная приходит в виде 2 -х 5ти значных чисел.
Что делать с этими числами?
Пришло в голову разделить 0хC0С0 на 65536 (если регистр 16ти разрядный). А 0хC0C1 неужели делить на 6553600000? Неужели такая точность в счетчике?


Название: Re: Регистры Modbus в ТСРВ024
Отправлено: Demus от 20.04.2010, 07:27:43
Есть ли живые люди на форуме? Техподдержка ведь должна быть... ???


Название: Re: Регистры Modbus в ТСРВ024
Отправлено: Dekir от 20.04.2010, 08:44:38
449343- просто float, засунутый в два  16 битных регистра по общим правилам фирмы Modicon

349343 - 4 16 битных регистра как описывалось выше. Делить ничего не надо float представлен в стандарте ANSI/IEEE 754

Все же есть на сайте http://www.vzljot.ru/files/docs/83/prtkl_Modbus_standart_data.pdf


Название: Re: Регистры Modbus в ТСРВ024
Отправлено: WATalex от 04.06.2010, 07:22:03
А еще конфига для OPC-сервера "TSRV_024.vtmpl" кривая.... очень кривая.... :P


Название: Re: Регистры Modbus в ТСРВ024
Отправлено: lbv от 04.06.2010, 12:48:01
А еще пользователи... С такими руками!...  ;D


Название: Re: Регистры Modbus в ТСРВ024
Отправлено: WATalex от 07.06.2010, 09:15:11
А еще пользователи... С такими руками!...  ;D

Если уж выкладывают конфиги к приборам и OPC-сервер на сайт для всеобщего обозрения, то хотя бы протестить все это можно предварительно, а то сидишь на объекте, интегрируешь эти приборчики и понять не можешь, почему же приходят совершенно не те данные, которые ты видишь на морде прибора, вот и приходится чужую работу выполнять, конфиги переделывать... и совершенно не в пользователях тут дело, в "корень зрить" надо...


Название: Re: Регистры Modbus в ТСРВ024
Отправлено: Wizard от 30.06.2010, 06:42:41
День добрый. Вопрос такой. Нужно получить значение объема и количества теплоты(накопляемым итогом) для трубопровода 1 и 2 теплосистемы 1. В документе modbus_tsrv_024 тип данных для них  указан, как вещественное. Указаны регистры - Объем (ТР1) - 349725, Объем (ТР2) - 349785, Тепло (ТР1) - 349717, Тепло (ТР2) - 349777. Пытался менять тип данных, но как вещественное они просто не считываются.


Название: Re: Регистры Modbus в ТСРВ024
Отправлено: lbv от 30.06.2010, 07:23:11
Формат представления этих данных, к сожалению, не указан в документации, упоминание о нем есть только в описании структуры архивов.
Указанные величины представляются в формате long+float, то есть, считывать нужно четыре регистра Modbus одним запросом, после этого старшие два регистра (с меньшим адресом) расшифровываются как длинное целое число, а следующие два регистра - как вещественное. Для получения результата эти два числа нужно сложить, как вещественные с двойной точностью.
В списке регистров такое представление можно обнаружить, если после парного регистра с описанием назначения идет парный регистр, обозначенный, как "Заглушка для 4 регистровых ModBus переменных, реально не передается". Слова "реально не передается" обозначают, что отдельно прочитать эту заглушку нельзя, допускается только пакетное чтение совместно с предыдущим значащим парным регистром.