Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
22.11.2017, 08:46:55
 
Начало Помощь Поиск Войти Регистрация
Новости: Форум обновлен

+  Форум АО "ВЗЛЕТ"
|-+  Приборы ЗАО "Взлет"
| |-+  Отдел программистов
| | |-+  Регистры Modbus в ТСРВ024
0 Пользователей и 1 Гость смотрят эту тему. « предыдущая тема следующая тема »
Страниц: [1] Печать
Автор Тема: Регистры Modbus в ТСРВ024  (Прочитано 8175 раз)
024
Гость
« : 20.12.2008, 19:02:48 »

Не смог получить достоверные значения параметра "Общее тепло, потребленное абонентом - в рабочем режиме, Гкал, Название в приборе - Wтс" из регистров, указанных в выложенном на сайте перечне (modbus_tsrv0241.doc). При чтении регистров C0BE, C0D6, C0EE получаю какие-то константы. Я делаю что-то не так, или перечень ошибочный?
Записан
Dekir
Administrator
*****

Харизма: 35
Офлайн Офлайн

Сообщений: 343


Принимаем Ваши пожелания 7 дней в неделю 24 часа


« Ответ #1 : 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 после прочтения

Записан
024
Гость
« Ответ #2 : 22.12.2008, 17:41:38 »

Спасибо огромное за быстрый и содержательный ответ. Всё получилось. Smiley
ЗЫ. А документ modbus_tsrv0241.doc требует серьёзной доработки, там много неясностей.
Записан
Dekir
Administrator
*****

Харизма: 35
Офлайн Офлайн

Сообщений: 343


Принимаем Ваши пожелания 7 дней в неделю 24 часа


« Ответ #3 : 23.12.2008, 11:47:51 »

Согласен, будем дорабатывать
Записан
Demus
Пользователь
**

Харизма: 0
Офлайн Офлайн

Сообщений: 17


« Ответ #4 : 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? Неужели такая точность в счетчике?
Записан
Demus
Пользователь
**

Харизма: 0
Офлайн Офлайн

Сообщений: 17


« Ответ #5 : 20.04.2010, 07:27:43 »

Есть ли живые люди на форуме? Техподдержка ведь должна быть... Huh?
Записан
Dekir
Administrator
*****

Харизма: 35
Офлайн Офлайн

Сообщений: 343


Принимаем Ваши пожелания 7 дней в неделю 24 часа


« Ответ #6 : 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
Записан
WATalex
Гость
« Ответ #7 : 04.06.2010, 07:22:03 »

А еще конфига для OPC-сервера "TSRV_024.vtmpl" кривая.... очень кривая.... Tongue
Записан
lbv
Надо подумать...
Наш человек
***

Харизма: 8
Офлайн Офлайн

Сообщений: 197


« Ответ #8 : 04.06.2010, 12:48:01 »

А еще пользователи... С такими руками!...  Grin
Записан
WATalex
Гость
« Ответ #9 : 07.06.2010, 09:15:11 »

А еще пользователи... С такими руками!...  Grin

Если уж выкладывают конфиги к приборам и OPC-сервер на сайт для всеобщего обозрения, то хотя бы протестить все это можно предварительно, а то сидишь на объекте, интегрируешь эти приборчики и понять не можешь, почему же приходят совершенно не те данные, которые ты видишь на морде прибора, вот и приходится чужую работу выполнять, конфиги переделывать... и совершенно не в пользователях тут дело, в "корень зрить" надо...
Записан
Wizard
Гость
« Ответ #10 : 30.06.2010, 06:42:41 »

День добрый. Вопрос такой. Нужно получить значение объема и количества теплоты(накопляемым итогом) для трубопровода 1 и 2 теплосистемы 1. В документе modbus_tsrv_024 тип данных для них  указан, как вещественное. Указаны регистры - Объем (ТР1) - 349725, Объем (ТР2) - 349785, Тепло (ТР1) - 349717, Тепло (ТР2) - 349777. Пытался менять тип данных, но как вещественное они просто не считываются.
Записан
lbv
Надо подумать...
Наш человек
***

Харизма: 8
Офлайн Офлайн

Сообщений: 197


« Ответ #11 : 30.06.2010, 07:23:11 »

Формат представления этих данных, к сожалению, не указан в документации, упоминание о нем есть только в описании структуры архивов.
Указанные величины представляются в формате long+float, то есть, считывать нужно четыре регистра Modbus одним запросом, после этого старшие два регистра (с меньшим адресом) расшифровываются как длинное целое число, а следующие два регистра - как вещественное. Для получения результата эти два числа нужно сложить, как вещественные с двойной точностью.
В списке регистров такое представление можно обнаружить, если после парного регистра с описанием назначения идет парный регистр, обозначенный, как "Заглушка для 4 регистровых ModBus переменных, реально не передается". Слова "реально не передается" обозначают, что отдельно прочитать эту заглушку нельзя, допускается только пакетное чтение совместно с предыдущим значащим парным регистром.
Записан
Страниц: [1] Печать 
« предыдущая тема следующая тема »
Перейти в:  


Войти

© 1990—2016, АО «Взлет».
Все права защищены.
Контактная информация
Powered by SMF 1.1.13 | SMF © 2006-2011, Simple Machines LLC
Материалы, размещенные на сайте, охраняются законодательством об авторском праве. Перепечатка материалов допускается только со ссылкой на сайт.