Повідомлення створено: 26. 04. 2013 [14:31]
|
irplanet
Евгений Калмыков
Автор теми
Зареєстрован(а) с: 26.04.2013
Повідомлення: 16
|
Доброго времени суток. Разворачиваем в компании проект на OpenScada. Существует проблемма не решенная на сегодняшний день.
Контролллеры на объектах занимаются посылкой данных на OpenScad-у, т.е. OpenScada у нас Modbus TCP Server (клиентом она тоже является, но проблемма именно в Modbus-серверной части). Цепочка передачи:
Контроллер (Modbus RTU) ---> Moxa MGate MB3170 (Modbus TCP) ---> OpenScada
OpenScada не то что бы совсем не принимает данные, ОНА НЕ КОРРЕКТНО ОТПРАВЛЯЕТ ОТВЕТЫ конвертеру (RTU/TCP), по крайней мере получается, что так считает сам конвертер. Т.е. фактически данные в OpenScad-у записываются и значения постоянно обновляются, только вот конвертеру приходит в ответ что то не то, он в свою очередь не передает в RTU контроллеру, что мол типо сообщение не отправлено. Контроллер считает, что пересылки данных не произошло и инициализирует повторную передачу, и история повторяется. :bang:
Пробовали читать регистры таким же путем из OpenScad-ы, не получается.
Поставили Modbus Server на машине под WinXP, и рассылку с контроллеров заворачивали на неё. Такая связка работает.
Прошлись по этим разным машинам WireShark-ом чтобы проанализировать трафик. Смотрим картинки прикрепленные.
На скринах видно, что пересылка пакетов отличается., а именно на Виндовой машине сразу после отправки TCP пакета контроллером (10.50.1.58) Modbus Server (10.50.1.51) пересылает сразу в ответ сообщение контроллеру. А вот когда Openscada общается с контроллером, она отправляет перед пакетом с данными какой-то технический ??? пакет. Не совсем понятно откуда ноги растут.
И вот еще для примера скрин с пакетами, когда Modbus Pool-ом (из 10.50.1.51) пробую записать регистры в OpenScad-у (10.50.1.54). В результате данные записываются, но вот сам Modbus Pool через раз говорит, что "ошибка записи", но всетаки хоть как то пишет.
Вот такая хрень товарищи. Есть мысли какие-нибудь, знатоки-гуру?
Вкладений файл
|
Повідомлення створено: 26. 04. 2013 [15:49]
|
roman
Roman Savochenko
Moderator Contributor Developer
Зареєстрован(а) с: 12.12.2007
Повідомлення: 3750
|
"irplanet" wrote:
Контролллеры на объектах занимаются посылкой данных на OpenScad-у, т.е. OpenScada у нас Modbus TCP Server (клиентом она тоже является, но проблемма именно в Modbus-серверной части). Цепочка передачи:
Контроллер (Modbus RTU) ---> Moxa MGate MB3170 (Modbus TCP) ---> OpenScada
OpenScada не то что бы совсем не принимает данные, ОНА НЕ КОРРЕКТНО ОТПРАВЛЯЕТ ОТВЕТЫ конвертеру (RTU/TCP), по крайней мере получается, что так считает сам конвертер.
Давайте начнём немного с сомнений, а именно:
- Осмысливаем факт того, что в приложениях ModBus/RTU/ASCII/TCP OpenSCADA давно и беспроблемно работает во множестве случаев.
- Если у Вас есть сомнения то открываем исходники и убеждаемся, что там всё нормально.
- OpenSCADA можно завязать на опрос через ModBus на саму себя, что кстати показывает, что там нет никаких проблем с этим. Эту возможность DemoDB можете использовать у себя для проверки!
Что касается MGate то у меня есть подозрение, что он работает через специальный драйвер на Linux, где возможны проблемы.
Возможна также некорректная конфигурация узла или транспорта, например, у узла стоит отвечать RTU или TCP фиксировано.
"irplanet" wrote:
На скринах видно, что пересылка пакетов отличается., а именно на Виндовой машине сразу после отправки TCP пакета контроллером (10.50.1.58) Modbus Server (10.50.1.51) пересылает сразу в ответ сообщение контроллеру. А вот когда Openscada общается с контроллером, она отправляет перед пакетом с данными какой-то технический ??? пакет. Не совсем понятно откуда ноги растут.
OpenSCADA ничего специфичного не отправляет, см в исходники!
Learn, learn and learn better than work, work and work.
|