Phlagman
Junior Member / Новичок
Участник № / Member № 4893
отправлено / posted
доброго времени суток! есть беспроводной шлюз Emerson 1420 и пара датчиков, шлюз настроен правильно, датчики работают. Протокол ModBus сконфигурирован правильно, через веб интерфейс настроены регистры 30001, 30003, 30005 - показывает давление/температуру с датчиков (32 bit float ), 30007 - показвает версию устройства (8 bit unsigned int).
в modscan32 эти значения видны..
счачал с оф сайта тестовые примеры по подключению к Трейс Мод по этому протоколу(*http://adastra.ru/files/support/tm6/free/projects/t...pb_modbustcp.zip), (в них собственно поменял только IP адрес), но они не работают... пробовал менять адреса , тоже безрезультатно..
в итоге на шлюзе оставил только один регистр 30001 в котором находится версия устройства (8 bit unsigned int) (значение равно 3, это можно посмотеть как через веб интерфейс так и в modscan32)
собственно как делал: 1 создал простой проект 2 в Источниках создал Группу ModBus 3 создал компонент Rout_Word(3)#1 4 с свойствах компонента Номер порта 0х0 Адрес 0х1 Канал 0х1 (пробовал ставить и 0х0 не помогло) Тип протокола TCP/IP Направление Input Формат Дискрет ip адрес 192.168.1.10 (адрес шлюза) 5 перетаскиваю этот компонент в Каналы 6 в свойствах Экран создаю переменную и связываю ее с каналом 7 создаю текстовое поле и перетаскиваю на него переменную связанную сканалом
сохраняю, запускаю и в итоге в текстовом поле значение 0 , что я только уже не делал..
подскажите пожалуйста как считать информацию с этого шлюза по протоколу ModBus TCP в Trace Mode 6.07 ???
отправлено / posted
1. Уверены ли Вы, указанные Вами адреса переменных должны считываться функцией 3 Modbus? Часто такие адреса относятся к регистрам Input и считываются функцией 4 Modbus.
2. Есть ли у Вас возможность получить подтверждение того, что коннект к контроллеру осуществлен? Разместите в папке узла RTM файл конфигурирования запуска TMcom_xx.cnf следующего содержания
DEBUG=400 END_OF_CNF <пустая строка>
В папке узла должен генерироваться профайлерный протокол с дополнительной информацией о сетевых процедурах и ошибках.
Если Вы не сможете использовать эту информацию для диагностики, присылайте нам проект, протокол профайлеров и файл tm6_log.txt из папки узла.
Сообщения / Posts 17344 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Phlagman
Junior Member / Новичок
Участник № / Member № 4893
отправлено / posted
переделал проект на вункцию 4
(21:55:39) INF_LOAD:Starting... Primer_modbus_TCP_0 (21:55:39) INF_RTM:Detected NT5.RTM 5.1 (21:55:39) ._.:Base TRACE MODE 6 Profiler ver. 6.07.0 (21:55:39) INF_LOAD:Load Channels = 2 (21:55:39) INF_LOAD:Templates=1 (21:55:39) INF_LOAD:Objects = 3 (21:55:39) INF_RTM:Timer=0.055s CalcLoop=550ms (21:55:39) INF_RTM:start time is 0 s (21:55:41) INF_RTM:ModeSwitch e15=0000 e18=0000 e20=0000 [0] (21:55:41) INF_RTM:mode=2(Work) e15=00 e18=00 e20=00 [0-0] (21:55:41) WRN_DDE:Не удается связать службу диспетчера общих баз данных (DSDM) (21:55:41) INF_RTM:ModBus-IN Rin_Word(4)#1 : IP=192.168.1.10 UNIT=1 CMD=4 CH=0001 Q=0 (21:55:41) INF_RTM:Idle period = 1100 (21:55:43) INF_TCP:connect to 192.168.1.10 (21:55:43) ERR_TCP:ModBus recieve wrong ident Rin_Word(4)#1 (21:55:44) ERR_TCP:ModBus recieve wrong ident Rin_Word(4)#1 (21:55:44) ERR_TCP:ModBus send err=10053 Rin_Word(4)#1 (21:55:49) INF_TCP:connect to 192.168.1.10 (21:55:49) ERR_TCP:ModBus recieve wrong ident Rin_Word(4)#1 (21:55:49) INF_RTM:stoping... (21:55:49) INF_RTM:mode=5(Stop) e15=00 e18=00 e20=00 [0-0] (21:55:49) INF_TCP:TCP_Unit=1 AvrSpeed=0(0) (21:55:49) INF_TCP:TCP_Loop =0(0)(0) (21:55:49) INF_RTM:stop time is 1.438 s (21:55:49) INF_RTM:number of calculation = 11 (21:55:49) ._.:END OF WORK
нашел про ошибку 10053 - Software caused connection abort. An established connection was aborted by the software in your host machine, possibly due to a data transmission time-out or protocol error.
отправлено / posted
Для того чтобы надежно распознавать ответы разных контроллеров по протоколу Modbus TCP все их транзакции нумеруются. SLAVE Modbus TCP обязан в ответе передать номер транзакции, на которую он отвечает. Ваш контроллер не возвращает номер транзакции. Можно предположить, что эта опция в нем отключена, поскольку контроллеры фирмы Emerson, с которыми мы работали ранее, эту функцию отрабатывали.
Если Вам не удастся настроить контроллер правильно, можно отключитьв МРВ проверку номера транзакции, если в файл конфигурирования ввести дополнительный ключ:
Phlagman
Junior Member / Новичок
Участник № / Member № 4893
отправлено / posted
я отправил письмо на адрес hotline@adastra.ru с темой "Emerson 1420 и Modbus TCP (проект и скриншоты)"
Сообщения / Posts 10 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Phlagman
Junior Member / Новичок
Участник № / Member № 4893
отправлено / posted
проблема осталась..
скачал программу Lectus ModBus OPC сервер, настроел на контроллер (ip адрес, функция чтения 4), создал переменную типа float, адрес переменной 0 hex (по этому адресу в контроллере в регистре 30001 находится показания с датчика с плавающей точкой), запустил OPC сервер, показания с контроллера приходят нормально.
скачал программу Modbusscan32 подключился к контроллеру данные приходят без проблем подключение стандартное modbus tcp, ip адрес контроллера, и функция чтения 4
далее реализовывал в ТМ все выводил в на экран в текстовые поля
1) в ТМ в источниках и приемниках создал группу MODBUS и компонент RinFloat(4) и настроил его на соответствующий ip адрес и канал (0х0)
2) также создал группу OPC и компонент OPC сервер и настроил его на этуже переменную но с источника Lectus ModBus OPC
также пробовал в эмуляторе mtcpServerEmulator создавал переменную и настраивал на нее ТМ как пункте 1),ТМ с эмулятора данные получает нормально.
в итоге напрямую из ТМ связь с контроллером организовать неполучилось, в чем может быть пролема?
письмо с проектом и скриншотами выслал на hotline@adastra.ru с темой "Emerson 1420 и Modbus TCP (проект и скриншоты)"
Сообщения / Posts 10 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Phlagman
Junior Member / Новичок
Участник № / Member № 4893
отправлено / posted
т.е. получается сторонние программы безпроблем подключаются к контроллеру со стандартными настройками ModBus TCP, а как это сдеть в ТМ я не пойму
Сообщения / Posts 10 | Из / From: Россия
| IP / IP: IP адрес / IP address |
отправлено / posted
Получили Ваше письмо. 1. Компонент RinFloat(4) надо привязывать к каналу Float, а не HEX16. 2. Пока не ясно почему не получается считать значение. Чтобы определить причину, нужно воспользоваться программой-снифером (например, Ethereal). С ее помощью можно увидеть различия запроса, посылаемого с OPC-сервера и с Trace Mode. Вышлите на hotline3@adastra.ru скриншоты программы, в которых будет виден кадр запроса и ответа от TM и от OPC-сервера.
Сообщения / Posts 17344 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Phlagman
Junior Member / Новичок
Участник № / Member № 4893
отправлено / posted
Извините за задержку с ответом. Выявленная на Вашем проекте проблема была локализована ранее и ликвидирована в новом релизе. Релиз 6.07.7 выложен на сайт. Вы можете обновить имеющиеся у Вас продукты.
Сообщения / Posts 17344 | Из / From: Россия
| IP / IP: IP адрес / IP address |
Phlagman
Junior Member / Новичок
Участник № / Member № 4893
отправлено / posted
скачал и установил новый релиз, теперь хоть что-то начало отображаться, НО значения не соответствуют показания датчика (то очень большое преимущественно целое число, через несколько сек 0, потом опять число). скриншоты работы профайлера, modbus32, веб интерфейса контроллера, и сам проект отправил на hotline3@adastra.ru
Сообщения / Posts 10 | Из / From: Россия
| IP / IP: IP адрес / IP address |