Взлет и модбас |
|
|
Гость_Max2114_*
|
25.1.2013, 15:46
|
Guest Forum

|
Пытаюсь считать данные с теплосчетчика ТСРВ-034 (Взлет) при помощи контроллера по протоколу модбас. Пока что ничего не выходит. Посоветовался с техподдержкой взлета - говорят что я делаю все так, как и надо... Может кто уже с подобым сталкивался?
|
|
|
|
|
25.1.2013, 19:09
|
труЪ-митолизд
Группа: Banned
Сообщений: 1138
Регистрация: 4.2.2010
Пользователь №: 45863

|
Цитата(Max2114 @ 25.1.2013, 16:46)  Пытаюсь считать данные с теплосчетчика ТСРВ-034 (Взлет) при помощи контроллера по протоколу модбас. Пока что ничего не выходит. Посоветовался с техподдержкой взлета - говорят что я делаю все так, как и надо... Может кто уже с подобым сталкивался? Из взлёта читал матбас  с ТСРВ024 и УСРВ510. Что конкретно у Вас не получается?
|
|
|
|
Гость_Max2114_*
|
25.1.2013, 19:31
|
Guest Forum

|
Цитата(йцукен @ 25.1.2013, 19:09)  Из взлёта читал матбас  с ТСРВ024 и УСРВ510. Что конкретно у Вас не получается? пытаюсь считать температуру (в техподдержке сказали что это 4-ая функция чтения переменная типа float, адрес переменной 49222). На запрос теплосчетчтки отвечает, но приходят нули. Пробовал другие адреса - порой "ересь" приходит, порой нули... пробовал для интереса чиать с дареса 49221 и 49223 - вообще не отвечает, мастер фиксирует неответы.
|
|
|
|
|
25.1.2013, 19:50
|
труЪ-митолизд
Группа: Banned
Сообщений: 1138
Регистрация: 4.2.2010
Пользователь №: 45863

|
Цитата(Max2114 @ 25.1.2013, 20:31)  пытаюсь считать Чем?
|
|
|
|
Гость_Max2114_*
|
25.1.2013, 19:53
|
Guest Forum

|
Цитата(йцукен @ 25.1.2013, 19:50)  Чем?  Пока пытался контроллером SMH2Gi... могу завтра попытаться панелькой вайнтек, скадой ТМ6, опс-севрером, модсканом... 90% что с таким же адресом результат будет тот же.
|
|
|
|
|
25.1.2013, 20:11
|
труЪ-митолизд
Группа: Banned
Сообщений: 1138
Регистрация: 4.2.2010
Пользователь №: 45863

|
Цитата(Max2114 @ 25.1.2013, 19:53)  Пока пытался контроллером SMH2Gi.. Скачайте вот эту программу: Modbus Tester 2.0.5Цитата Программа тестер устройств MODBUS. Поддерживаются функции 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x0F, 0x10. Измеряет скорость обмена, анализирует синтаксис пакетов, подробный дамп пакетов, сохраняемые списки комманд Modbus, дружелюбный интерфейс. Режимы RTU и ASCII. RTU/ASCII по TCP/IP. Freeware. http://www.agrostroy.ru/index.php?page=4Лично у меня, ну не помню, чтоб хоть раз получилось без неё с новой железякой разобраться...
|
|
|
|
Гость_Max2114_*
|
25.1.2013, 20:14
|
Guest Forum

|
Спасибо, попробую!
|
|
|
|
|
26.1.2013, 12:13
|
Группа: Участники форума
Сообщений: 286
Регистрация: 10.4.2010
Пользователь №: 51667

|
Имел похожие проблемы с ТМ6 и ТСРВ-024М. Там повышенная точность, поэтому нужно считывать не один регистр , а два и потом их преобразовывать в один. Второй в принципе не сильно нужен, но если его не считывать вместе с первым, то Взлет выдает нули или ошибку связи.
|
|
|
|
Гость_Max2114_*
|
26.1.2013, 15:53
|
Guest Forum

|
Цитата(Demus @ 26.1.2013, 13:13)  Имел похожие проблемы с ТМ6 и ТСРВ-024М. Там повышенная точность, поэтому нужно считывать не один регистр , а два и потом их преобразовывать в один. Второй в принципе не сильно нужен, но если его не считывать вместе с первым, то Взлет выдает нули или ошибку связи. Сегодня пробовал все, что только можно. Пока итог такой: 1. При помощи ТМ6 - счиал аднные без проблем. 2. При помощи модбастестера - считать float переменные не получилось. Инт-овые прочитал, а флоатовские - в ответ приходит какая-то хрень 3. При помощи SMH2Gi - в ответ приходят нули 4. При помощи панели Weintek - пробую считать переменную типа float (4 байта) - приходят нули, если заменить тип переменной на 32-х битный челочисленнный - приходит какое-то число. Мучаюсь дальше...
|
|
|
|
|
27.1.2013, 11:28
|
труЪ-митолизд
Группа: Banned
Сообщений: 1138
Регистрация: 4.2.2010
Пользователь №: 45863

|
Цитата(Max2114 @ 26.1.2013, 15:53)  Инт-овые прочитал, а флоатовские - в ответ приходит какая-то хрень Какая именно? Предполагаю, что "какая-то хрень" - это традиционный для Взлёта обратный порядок битов в float.
|
|
|
|
|
27.1.2013, 12:35
|
Группа: Участники форума
Сообщений: 4886
Регистрация: 20.9.2006
Пользователь №: 4070

|
Цитата(йцукен @ 25.1.2013, 21:11)  Скачайте вот эту программу: Modbus Tester 2.0.5 Танунафиг, любой сниффер подойдет, портмонитор какой-нить, к примеру... Там скорее всего надо подразобраться с типом переменной - может быть не float, а uint; как только будет видно содержимое "отклика", можно будет прикинуть, как этот отклик декодировать... И, скорее всего, не 8, и не 32-битный регистр, а 16 бит, или 2х16 в uint; впрочем надо глянуть, что оттуда вылазит...
Сообщение отредактировал BROMBA - 27.1.2013, 12:44
|
|
|
|
|
27.1.2013, 13:18
|
труЪ-митолизд
Группа: Banned
Сообщений: 1138
Регистрация: 4.2.2010
Пользователь №: 45863

|
Цитата(BROMBA @ 27.1.2013, 13:35)  Танунафиг, любой сниффер подойдет, портмонитор какой-нить, к примеру... Танунафиг
|
|
|
|
|
27.1.2013, 13:50
|
Группа: Участники форума
Сообщений: 387
Регистрация: 8.12.2006
Из: Нижний Новгород
Пользователь №: 5106

|
Цитата(йцукен @ 27.1.2013, 13:18)  Танунафиг  ПЕРЕВЕДИ  . В общем, ждем положительных результатов и отчета...
|
|
|
|
|
27.1.2013, 13:57
|
труЪ-митолизд
Группа: Banned
Сообщений: 1138
Регистрация: 4.2.2010
Пользователь №: 45863

|
Цитата(Andrey_V @ 27.1.2013, 14:50)  ПЕРЕВЕДИ  Я сообщения уважаемого BROMBА сам со словарём читаю...
Сообщение отредактировал йцукен - 27.1.2013, 13:58
|
|
|
|
|
27.1.2013, 14:55
|
Группа: Участники форума
Сообщений: 4886
Регистрация: 20.9.2006
Пользователь №: 4070

|
Цитата(йцукен @ 27.1.2013, 13:57)  Я сообщения уважаемого BROMBА сам со словарём читаю...  Угу, без файного словныка ниц ние бендзе...
|
|
|
|
Гость_Max2114_*
|
27.1.2013, 14:56
|
Guest Forum

|
Цитата(BROMBA @ 27.1.2013, 13:35)  Танунафиг, любой сниффер подойдет, портмонитор какой-нить, к примеру... Там скорее всего надо подразобраться с типом переменной - может быть не float, а uint; как только будет видно содержимое "отклика", можно будет прикинуть, как этот отклик декодировать... И, скорее всего, не 8, и не 32-битный регистр, а 16 бит, или 2х16 в uint; впрочем надо глянуть, что оттуда вылазит... Там переменная типа Float, 32-х битная. По документации - старшиие два байта - читаемый адрес, младшие два байта - адрес+1. Пробовал читать переменную типа LONG (32-х битный int) - получал какое-то значение, птылася его перевести поменяв местами старший и младший байты - получал чушь. Т.е. какое-то значение получал, но оно не соответсвовало тому, что должно было прийти. Самое интересное - при помощи TraceMode6 процедура получения данных заняла минуты 3-5, не больше - с первого раза все заработало. Модбастестер писал что-то "невнятное" вместо значения. Сейчас не помню уже что (что-то типа "ххххххх4F/2F" - хххх - какое-то слово, первод его не посмотрел, не до того было). Менял адреса запроса - ответ был абсолютно одинаоковым (т.е. теплосчетчик отвечал, но овтет был всегда одинаков.. имею в виду код ответа). Перменный типа INT считываются более-менее корректно и панелью и контроллером и модбастестером. А вот флоат считался пока только при помощи ТМ6. Я реши уже забить на это - у меня запасные датчики есть, поставлю их на ввод и подключу к контроллеру. А с тепосчетчика данные все-равно буду читать взлетовоской прогой. PS у меня "ощущения" такие, что взлету не нравится запрос и он отвечает нулями. Видимо в ТМ6 как-то подрпавили запросы чтобы теплосчетчик ему корректно отвечал.
Сообщение отредактировал Max2114 - 27.1.2013, 15:01
|
|
|
|
|
27.1.2013, 15:13
|
Группа: Участники форума
Сообщений: 4886
Регистрация: 20.9.2006
Пользователь №: 4070

|
Цитата(Max2114 @ 27.1.2013, 15:56)  Там переменная типа Float, 32-х битная. По документации - старшиие два байта - читаемый адрес, младшие два байта - адрес+1. Пробовал читать переменную типа LONG (32-х битный int) - получал какое-то значение, птылася его перевести поменяв местами старший и младший байты - получал чушь. Т.е. какое-то значение получал, но оно не соответсвовало тому, что должно было прийти. Самое интересное - при помощи TraceMode6 процедура получения данных заняла минуты 3-5, не больше - с первого раза все заработало. ..... PS у меня "ощущения" такие, что взлету не нарвится запрос и он отвечает нулями. Видимо в ТМ6 как-то подрпавили запросы чтобы теплосчетчик ему корректно отвечал. Вот-вот. Может быть, запрос сформулирован некорректно - если, к примеру, засылается команда "read single holding register", усторойство отдаёт значение этого регистра, невзирая, что там "лежит"; если же засылается команда "read multiply registers", то устройство отдаст содержимое регистров, и разбирайтесь, мол с этим дальше, как хотите. В Трейсмоде есть какая-никакая автоматическая "распознавалка", то есть, если указывать, какую собственно, float Вы хотите видеть, Трейсмода Вам это самое и покажет; В ТМ6, возможно, процедуру запроса/декодирования и подправили, это науке неизвестно. Кстате, в документации на разные устройства и софт, имеет место быть различная трактовка типов переменных - одни говорят - long, другие - uint; float тоже может быть одинарной и двойной точности... К примеру, если читать из овенского МВА8 по стандартному овенскому протоколу - отдаёт float одинарной точности, если использовать modbus-rtu, отдаёт uint с устанавливаемой десятичной точкой... Содержимое регисторв одно, а в различных протоколах отображается по-разному...
Сообщение отредактировал BROMBA - 27.1.2013, 15:22
|
|
|
|
|
27.1.2013, 15:14
|
труЪ-митолизд
Группа: Banned
Сообщений: 1138
Регистрация: 4.2.2010
Пользователь №: 45863

|
Цитата(Max2114 @ 27.1.2013, 14:56)  Видимо в ТМ6 как-то подрпавили запросы чтобы теплосчетчик ему корректно отвечал. А у ТМ6 есть собственный драйвер под ТСРВ-034? Или Вы стандартным матбасовским опрашиваете? Цитата(BROMBA @ 27.1.2013, 14:55)  Угу, без файного словныка ниц ние бендзе...  У меня нет словоря чтоб понять Вас.
|
|
|
|
|
27.1.2013, 15:22
|
труЪ-митолизд
Группа: Banned
Сообщений: 1138
Регистрация: 4.2.2010
Пользователь №: 45863

|
Цитата(Max2114 @ 27.1.2013, 14:56)  PS у меня "ощущения" такие, что взлету не нравится запрос и он отвечает нулями. Видимо в ТМ6 как-то подрпавили запросы чтобы теплосчетчик ему корректно отвечал. Надо будет потроллить ТСРВ034, пока время есть свободное... Может пригодиться...
|
|
|
|
Гость_Max2114_*
|
27.1.2013, 15:27
|
Guest Forum

|
Цитата(йцукен @ 27.1.2013, 16:14)  А у ТМ6 есть собственный драйвер под ТСРВ-034? Или Вы стандартным матбасовским опрашиваете? Стандартным модбасовским
|
|
|
|
|
27.1.2013, 15:31
|
труЪ-митолизд
Группа: Banned
Сообщений: 1138
Регистрация: 4.2.2010
Пользователь №: 45863

|
Цитата(Max2114 @ 27.1.2013, 16:27)  Стандартным модбасовским Тогда как они могли чё-то там подправить? Или содержимое ответа анализируют, и включают нужный алгоритм обработки? Молодцы, если так... Заинтересовали, возьму сей прибор у друзей, помучить...
Сообщение отредактировал йцукен - 27.1.2013, 15:33
|
|
|
|
Гость_Max2114_*
|
27.1.2013, 15:31
|
Guest Forum

|
Цитата(BROMBA @ 27.1.2013, 16:13)  Вот-вот. Может быть, запрос сформулирован некорректно - если, к примеру, засылается команда "read single holding register", усторойство отдаёт значение этого регистра, невзирая, что там "лежит"; если же засылается команда "read multiply registers", то устройство отдаст содержимое регистров, и разбирайтесь, мол с этим дальше, как хотите. В Трейсмоде есть какая-никакая автоматическая "распознавалка", то есть, если указывать, какую собственно, float Вы хотите видеть, Трейсмода Вам это самое и покажет; В ТМ6, возможно, процедуру запроса/декодирования и подправили, это науке неизвестно. Кстате, в документации на разные устройства и софт, имеет место быть различная трактовка типов переменных - одни говорят - long, другие - uint; float тоже может быть одинарной и двойной точности... К примеру, если читать из овенского МВА8 по стандартному овенскому протоколу - отдаёт float одинарной точности, если использовать modbus-rtu, отдаёт uint с устанавливаемой десятичной точкой... Содержимое регисторв одно, а в различных протоколах отображается по-разному... В описалове на взлет написано что флоат - четырех байтовый. И что поддерживается как функция чтения "read multiply registers" так и "read single registers". А вот в модбастестере действительно не понятно сколько байт он запрашивает и типа Float там вообще нет. При помощи панели и при помощи ПЛК я запрашиваю как раз 32-х битный флоат. И ничего не выходит. Если бы старйший и младший бат были бы поменяни местами, то приходило бы хоть что-то в экспотенциальном виде невразумиетльное. А так он нули отвечает.
|
|
|
|
|
27.1.2013, 15:32
|
Группа: Участники форума
Сообщений: 4886
Регистрация: 20.9.2006
Пользователь №: 4070

|
Цитата(йцукен @ 27.1.2013, 16:22)  Надо будет потроллить ТСРВ034, пока время есть свободное... Может пригодиться...  Кстате, MULTICAL® 601 троллить не доводилось? Когда понадобилось читать значения расхода для частотника, мы когда-то, не заморачиваясь, воткнули опционно-стандартный аналоговый выход... но, времени на пытки и издевательства катастрофически нехватает, а в скором времени, возможно, надо будет массово подключать к существующим сеткам, ибо у заказчика в одном месте уже засвербело...
|
|
|
|
Гость_Max2114_*
|
27.1.2013, 15:33
|
Guest Forum

|
Цитата(йцукен @ 27.1.2013, 16:31)  Тогда как они могли чё-то там подправить? Или содержимое ответа анализируют, и включают нужный алгооритм обработки? Молодцы, если так... Заинтересовали, возьму сей прибор у друзей, помучить...  Я так думаю, что подправили. У них на форуме несколько лет назад люди писали что не могут данные со взлета по модбасу считать.. возможно тогда они что-то и добавили... надо будет им в понедельник позвонить и попробовать "попытать" на эту тему...
|
|
|
|
|
27.1.2013, 15:41
|
труЪ-митолизд
Группа: Banned
Сообщений: 1138
Регистрация: 4.2.2010
Пользователь №: 45863

|
Цитата(BROMBA @ 27.1.2013, 16:32)  Кстате, MULTICAL® 601 троллить не доводилось? Неа... "Мультиговно" пока удавалось обходить стороной...
|
|
|
|
|
27.1.2013, 16:37
|
Группа: Участники форума
Сообщений: 286
Регистрация: 10.4.2010
Пользователь №: 51667

|
Это я и писал им (трейсмодовцам) несколько лет назад на форуме. Слежу активно за ТМ. Вроде по поводу взлетов не было новостей.
Автор, можете описать в ТМ какой источник-приемник выбирали, какой тип канала привязывали. На экране какой формат отображения ставили? И дайте уже цифры той аброкадабры побайтово которую получаете не в ТМ и какому значению должна соответствовать.
Сообщение отредактировал Demus - 27.1.2013, 16:38
|
|
|
|
Гость_Max2114_*
|
27.1.2013, 17:42
|
Guest Forum

|
Цитата(Demus @ 27.1.2013, 17:37)  Это я и писал им (трейсмодовцам) несколько лет назад на форуме. Слежу активно за ТМ. Вроде по поводу взлетов не было новостей.
Автор, можете описать в ТМ какой источник-приемник выбирали, какой тип канала привязывали. На экране какой формат отображения ставили? И дайте уже цифры той аброкадабры побайтово которую получаете не в ТМ и какому значению должна соответствовать. В ТМ6 в источниках-приемниках использовал группу Modbus, переменную типа "Rin_Float(4)" считал для пробы два адреса c046 и c048 (в десятичном виде 49222 и 49224). На экарне создал аргументы с типом Real. Источники-прииемники перетщил в RTM. Создал в RTM нужный ком-порт с правильными настройками. Перетащил экран в RTM, привязал к аргументам получившиеся два канала со счетчика. Поставил на экране два объекта типа "Текст", привязал их к двум аргументам, задал в настройках отображения типа Float. Скомпилировал, запустил под МРВ. Все с первого раза заработало. PS Небольшая поправка - сначала я считал одну температуру. Она сразу заработала. После считал вторую. Сравнил с показаниями в теплосчетчике - все совпадало вплоть до сотых. PPS аброкадабру из цифр при чтении 32-х битного целочисленного числа привести не могу, так как сейчас не на объекте и я еще нигде не записал. На вскидку было число 32501672 (что-то типа того). По идее соответсвовать оно должно было значению 70-68 градусов по Цельсию. Но оно не менялось совсем (а во время работы у меня температура "плавала", так как я паралельно с котлами баловался).
Сообщение отредактировал Max2114 - 27.1.2013, 17:45
|
|
|
|
|
29.1.2013, 7:20
|
Группа: Участники форума
Сообщений: 26
Регистрация: 22.7.2011
Пользователь №: 116272

|
ТМ автоматом проставляет нужное количество регистров в запросе от начального адреса в зависимости от типа канала, к которому привязан описатель. Если запросили 3-й или 4-й функцией значение для канала float, то он не один регистр запросит у прибора, а два, чтобы во float конвертнуть.
Кстати, сам лично на практике работал со взлетами и в ТМ6 и сейчас работаю в своей скаде, там есть свои нюансы, не только в протокольной части, но Взлеты еще и капризны по настройкам канала связи.
Сообщение отредактировал Romer - 29.1.2013, 7:24
|
|
|
|
|
28.2.2013, 18:16
|
труЪ-митолизд
Группа: Banned
Сообщений: 1138
Регистрация: 4.2.2010
Пользователь №: 45863

|
Цитата(йцукен @ 27.1.2013, 16:31)  Заинтересовали, возьму сей прибор у друзей, помучить...  Короче, докладываю.  Сегодня дошли до него руки. Без особого труда получил показания с прибора ВЗЛЁТ ТСРВ-034 на дисплей контроллера SMH-2G. Вся процедура заняла примерно 3 часа рабочего времени вместе с изучением документации, поиском решений и пайкой шнуров. Выявлены следующие особенности чтения переменных из ВЗЛЁТ ТСРВ-034: 1. На запрос числа float он отвечает долго. В 200 мс не укладывается точно. Я поставил тайм-аут 1 сек, хотя, возможно, он отвечает и быстрее, позже проверю. 2. Читать температуру нужно с адресов (hex): С000 - канал 1 С002 - канал 2 С004 - канал 3 По документации взлёта она именуется как "преобразованная температура" и именно она отображается на его дисплее и, скорее всего, пишется в архив (нужно проверить). 3. Читать в SMH-2G нужно переменную long, а затем преобразовывать её в переменную real при помощи макроса, выложенного неким Arsiе на форуме стигматикса: http://forum.segnetics.com/showthread.php?t=461, установив значение 1 на входе "Mode".
Сообщение отредактировал йцукен - 28.2.2013, 18:18
|
|
|
|
Гость_Max2114_*
|
1.3.2013, 5:34
|
Guest Forum

|
Цитата(йцукен @ 28.2.2013, 19:16)  Короче, докладываю.  Сегодня дошли до него руки. Без особого труда получил показания с прибора ВЗЛЁТ ТСРВ-034 на дисплей контроллера SMH-2G. Вся процедура заняла примерно 3 часа рабочего времени вместе с изучением документации, поиском решений и пайкой шнуров. Выявлены следующие особенности чтения переменных из ВЗЛЁТ ТСРВ-034: 1. На запрос числа float он отвечает долго. В 200 мс не укладывается точно. Я поставил тайм-аут 1 сек, хотя, возможно, он отвечает и быстрее, позже проверю. 2. Читать температуру нужно с адресов (hex): С000 - канал 1 С002 - канал 2 С004 - канал 3 По документации взлёта она именуется как "преобразованная температура" и именно она отображается на его дисплее и, скорее всего, пишется в архив (нужно проверить). 3. Читать в SMH-2G нужно переменную long, а затем преобразовывать её в переменную real при помощи макроса, выложенного неким Arsiе на форуме стигматикса: http://forum.segnetics.com/showthread.php?t=461, установив значение 1 на входе "Mode". А какой тип переменных брали? R(in)? PS Некий Arise - это разработчик конструктора и техподдержка сегнетикса  (если что)
Сообщение отредактировал Max2114 - 1.3.2013, 5:53
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
Реклама
ООО «Арктика групп» ИНН: 7713634274
ООО "Русич" ИНН 9721068883 / ЕРИД 2VtzqvMjLF8
ООО «УНИСПЛИТ» ИНН: 6453155081 erid:2VtzqxXgvJi
Реклама: ООО «СибСтронг» | ИНН 6670013662 | ERID: 2VtzqwyM2dc
Последние сообщения Форума
|