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

Название : Связь по Modbus RTU

 aLLexn :

25.5.16 11:45
 Добрый день!
Возник вопрос по связи с теплосчетчиком ВИСТ по Modbus
Изучив документацию, в которой расписаны все адреса данных в теплосчетчике попытался считать с него информацию, с помощью стороннего OPC сервера.
Вопрос такой, 1. Как считать сетевой номер прибора?
по документации, написан адрес блока - 0 и размер блок - 99 байт, далее идет таблица со смещением, в которой, сетевой адрес прибора - это смещение на 95. Верно ли я понимаю, что это смещение относительно адреса 0?
При этом адрес прибора равен 2, а в этой ячейке лежит 256. При смене сетевого адреса в приборе, цифра 256 никак не изменяется? Можете ли подсказать пример работы с этими смещениями?

При это получить текущие занчения температур получается спокойно.!

Второй вопрос в получении архивных данных. Здесь на форуме читал, что они начинаются с 1000 регистра (Input Registers), однако там лежит тоже какая то ахинея.

Если есть возможность, или кто сталкивался, объясните суть этого смещения.
Спасибо!

 CH :

25.5.16 20:03
 Здравствуйте.
Вычитывать модбасом отдельные данные из блока настроечных параметров ВИСТа, конечно, неудобно. Данные расположены так, что не кратны 2-м (размер регистра протокола модбас). Но давайте прикинем.
1. Размер всего блока 99 РЕГИСТРОВ (не байтов). Это просто уточнение.
2. Чтение значения двухбайтного параметра из этого блока, при условии, что блок начинается с адреса 0000 и известно СМЕЩЕНИЕ параметра от начала блока в байтах, было бы простым ЧТЕНИЕМ РЕГИСТРА МОДБАС С АДРЕСА (СМЕЩЕНИЕ/2)... если бы смещение параметра было кратно 2. Однако в данном случае оно не кратно. Первый из двух байтов параметра "сетевой номер" расположен со смещением 95 байт от начала блока.
3. Учтём также, что значение сетевого адреса модбас гарантированно влазит в 1 байт. То есть нас интересует только младший байт двухбайтного значения, расположенный, в силу big-endian архитектуры прибора по смещению 96. То есть этот значащий байт можно считать как значение модбас-регистра с адресом (96/2) = 48. При этом первый байт регистра будет содержать нужное нам значение, а второй - мусор, кусок следующего параметра.
4. Остаётся отфильтровать излишек. В данном конкретном случае в этом излишке вообще-то будет ноль (см. описание след. параметра).
Так что применительно к данному конкретному случаю получается, что модбас-регистр с адресом 48 содержит адрес прибора в чистом виде, но только младшим байтом вперёд.
))

 aLLexn :

9.6.16 13:09
 Цитата:

CH пишет:
Здравствуйте.
Вычитывать модбасом отдельные данные из блока настроечных параметров ВИСТа, конечно, неудобно. Данные расположены так, что не кратны 2-м (размер регистра протокола модбас). Но давайте прикинем.
1. Размер всего блока 99 РЕГИСТРОВ (не байтов). Это просто уточнение.
2. Чтение значения двухбайтного параметра из этого блока, при условии, что блок начинается с адреса 0000 и известно СМЕЩЕНИЕ параметра от начала блока в байтах, было бы простым ЧТЕНИЕМ РЕГИСТРА МОДБАС С АДРЕСА (СМЕЩЕНИЕ/2)... если бы смещение параметра было кратно 2. Однако в данном случае оно не кратно. Первый из двух байтов параметра "сетевой номер" расположен со смещением 95 байт от начала блока.
3. Учтём также, что значение сетевого адреса модбас гарантированно влазит в 1 байт. То есть нас интересует только младший байт двухбайтного значения, расположенный, в силу big-endian архитектуры прибора по смещению 96. То есть этот значащий байт можно считать как значение модбас-регистра с адресом (96/2) = 48. При этом первый байт регистра будет содержать нужное нам значение, а второй - мусор, кусок следующего параметра.
4. Остаётся отфильтровать излишек. В данном конкретном случае в этом излишке вообще-то будет ноль (см. описание след. параметра).
Так что применительно к данному конкретному случаю получается, что модбас-регистр с адресом 48 содержит адрес прибора в чистом виде, но только младшим байтом вперёд.
))




Спасибо за ответ! С этим разобрался, все данные получил, ошибочно полагал, что смещение именно регистровое, а не по байтам.
Получил все данные о приборе.

Появился вопрос, может ли кто либо из ваших специалистов по удаленной помочь с выгрузкой суточного и месячного архива?

как я понял из форума, архив системы начинается с 4096 адреса и читается функцией 04. однако получить адекватные данные пока не удается.

 CH :

9.6.16 15:21
 Крайне желательно использовать для чтения архива файловые функции OPC, это снимет множество неудобных моментов. Если ваш инструментарий их не поддерживает - ну что же, тогда нужно постараться. )
Мы сами не пользуемся фукцией 4 для чтения архива, поэтому полноценной помощью вас едва ли обеспечим. На конкретные вопросы ответим всегда - можете направлять их на нашу софтверную почту (negasoft@ - см. контакты), чтобы не флудить на форуме.

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

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