PDA

Просмотр полной версии : Owen OPC Server. На одном IP нескольно адресов slave



Александр !
23.05.2024, 11:14
Хочу получить данные из прибора (modbus TCP). Прибор имеет IP и несколько адресов slave.
Настраиваю в Owen OPC Server чтение как с разных устройств - прописываю несколько устройств с одинаковым IP и разными адресами.
По одному всё работает, если опрашиваю всех, то отвечает только один.
Написал свою тестовую программу, которая для каждого опроса каждого устройства создаёт отдельное TCP подключение и после получения данных разрывает его. Так мой прибор отвечает на запросы правильно.
Можно ли настроить Owen OPC Server так, чтобы он открывал соединение, получал данные и после получения данных закрывал соединение (для каждого опроса)?

МихаилГл
23.05.2024, 11:18
Хочу получить данные из прибора (modbus TCP). Прибор имеет IP и несколько адресов slave.
Настраиваю в Owen OPC Server чтение как с разных устройств - прописываю несколько устройств с одинаковым IP и разными адресами.
По одному всё работает, если опрашиваю всех, то отвечает только один.
Написал свою тестовую программу, которая для каждого опроса каждого устройства создаёт отдельное TCP подключение и после получения данных разрывает его. Так мой прибор отвечает на запросы правильно.
Можно ли настроить Owen OPC Server так, чтобы он открывал соединение, получал данные и после получения данных закрывал соединение (для каждого опроса)?

Что значит: "если опрашиваю всех"... Опрашивать надо по-очереди...

PS Что за устройство (шлюз)?

Александр !
23.05.2024, 11:24
Я могу в настройках Owen OPC Server указать для каждого устройства "включен в работу" - нет. Если оставить в работе только одно устройство (любое), то данные приходят. Если включить в работу все устройства, то данные приходят только с одного. (очередь формирует Owen OPC Server)

melky
23.05.2024, 11:28
Вы имеете ввиду порты разные на одном IP? вроде OwenOPC так не умеет, ранее вроде была тема по данному поводу.

Александр !
23.05.2024, 11:51
75964
Нет. Адрес. Можно указать рядом с портом

МихаилГл
23.05.2024, 12:01
Вы имеете ввиду порты разные на одном IP? вроде OwenOPC так не умеет, ранее вроде была тема по данному поводу.
У меня на пк эмуляторе ModBus Slave на 1 IP на 502 порту 3 слэйв устройства... Все работает...
75967

melky
23.05.2024, 12:01
Вы же опрашиваете по TCP, то, что ПЛК просит еще адрес, для самого TCP пакета это как мертвому припарка, это нужно для ПЛК.
У вас же TCP пакеты направляются только по IP и порту, роутер понятия не имеет, что на одном порту могут находиться несколько устройств.

Посмотрите что из себя представляет вообще TCP пакет в рамках Modbus.

МихаилГл
23.05.2024, 12:06
Вы же опрашиваете по TCP, то, что ПЛК просит еще адрес, для самого TCP пакета это как мертвому припарка, это нужно для ПЛК.
У вас же TCP пакеты направляются только по IP и порту, роутер понятия не имеет, что на одном порту могут находиться несколько устройств.

Посмотрите что из себя представляет вообще TCP пакет в рамках Modbus.

Это зарезервировано под шлюзы, и работает. Ну у меня по крайней мере.

PS Хотя у меня разные регистры в каждом устройстве... С одинаковыми не пробовал...

Александр !
23.05.2024, 12:08
Получается Owen OPC Server умеет формировать такие запросы. Однако мой прибор на них не умеет отвечать. И правильно отвечает только если после каждого обмена создавать новое TCP подключение.
И сам вопрос:
Можно ли настроить Owen OPC Server так, чтобы он открывал соединение, получал данные и после получения данных закрывал соединение (для каждого опроса)?

melky
23.05.2024, 12:09
МихаилГл удивительно что вообще работает, даже на разных регистрах. так как сам TCP как бы ни сном ни духом, о том, что у вас там еще адресация самих устройств имеется. Некоторые вообще поле SlaveID в Modbus TCP игнорируют.

МихаилГл
23.05.2024, 12:12
МихаилГл удивительно что вообще работает, даже на разных регистрах. так как сам TCP как бы ни сном ни духом, о том, что у вас там еще адресация самих устройств имеется. Некоторые вообще поле SlaveID в Modbus TCP игнорируют.

У нас разработчики на дельфи сделали софт, так там тоже используется ID, и там все работает с одинаковыми адресами. Так что в modbus tcp это рабочая функция.

PS https://ipc2u.ru/articles/prostye-resheniya/modbus-tcp/ и тут он есть...

melky
23.05.2024, 12:37
я к тому, что шлюз должен понимать, какому именно устройству отправлять, получив пакет на IP + порт 502 (если все сидят на нем). то есть коммутатор сети должен быть не простым, а специально понимающий пакеты Modbus TCP. Такие есть в природе, но явно это не бытового плана.

imaex
23.05.2024, 12:40
Получается Owen OPC Server умеет формировать такие запросы.

Какие такие? Это Ваше устройство не умеет нормально работать, а не Owen OPC. Ваше устройство должно работать в режиме шлюза, транслируя приходящие запросы к устройствам с разными ID modbus, которые Вы задаёте в настройках сервера. У меня, например, есть объект, где за шлюзом в RTU более 10-ка устройств. И всё нормально работает. Одновременно с т.з. опрашивающей системы. Правда, у меня там Owen OPC нет, как и вообще никакого OPC.

Посмотрите Keepserver, он вроде как умеет закрывать соединение после каждого запроса, но это не точно.

МихаилГл
23.05.2024, 12:41
Это да... Мы только с промышленными и работаем. Только что же за устройство у ТС?...

imaex
23.05.2024, 12:43
У вас же TCP пакеты направляются только по IP и порту, роутер понятия не имеет, что на одном порту могут находиться несколько устройств.


Откуда в схеме вдруг появился роутер и почему он должен что-то знать про какие-то порты? Если в исходной своей ипостаси он вообще функционирует на сетевом уровне. Ы?

Я посмотрел - там у Вас ещё и некий "коммутатор" появился. Интеллектуальный. :facepalm:

Александр !
23.05.2024, 13:05
Какие такие? Это Ваше устройство не умеет нормально работать, а не Owen OPC. Ваше устройство должно работать в режиме шлюза, транслируя приходящие запросы к устройствам с разными ID modbus, которые Вы задаёте в настройках сервера. У меня, например, есть объект, где за шлюзом в RTU более 10-ка устройств. И всё нормально работает. Одновременно с т.з. опрашивающей системы. Правда, у меня там Owen OPC нет, как и вообще никакого OPC.

Посмотрите Keepserver, он вроде как умеет закрывать соединение после каждого запроса, но это не точно.

Если не секрет, какое устройство вы используете в качестве шлюза?

melky
23.05.2024, 13:21
imaex не обязательно роутер, может быть промышленный коммутатор, который умеет работать в сетях Modbus TCP.

Суть у автора - один IP один Порт - кто-то должен разруливать запросы к разным устройствам, у каждого из которых свои IP. Либо там вообще устройства на RS485, то этот шлюз Ethernet-RS485 (в данном случае Modbus TCP - Modbus RTU) при работе по одному порту (502) должен знать кому отправить.

вот скорее всего у автора бытовуха и он тут мается.

imaex
23.05.2024, 13:33
Если не секрет, какое устройство вы используете в качестве шлюза?

Да какой там секрет? В том конкретном случае MGate MB3170I моксовский. Кстати, я таки попробовал опрашивать устройства на том объекте через Owen OPC - всё нормально, одновременно три тега с одинаковыми адресами с трёх разных устройств.
Овеновские КТР121, если это важно. Однако, есть одна странность, связанная как раз с Owen OPC. В настройках узла можно задать либо modbus tcp, либо modbus rtu. Однако, сами устройства сидят на rtu, т.е. фактически протокол должен быть задан как modbus rtu over tcp, чего в ассортименте нет. Однако, указываю modbus tcp и всё работает. Это непонятно, для меня, по крайней мере.

ЗЫ: я затупил. Никакой странности нет modbus tcp, всё правильно. Посыпаю голову. Пеплом.

imaex
23.05.2024, 13:38
imaex не обязательно роутер, может быть промышленный коммутатор, который умеет работать в сетях Modbus TCP.


Дело в том, что мы общаемся на форуме, даже не вживую. В голову я к Вам заглянуть не могу, потому для взаимопонимания люди должны пользоваться общей терминологией и не вкладывая в неё свои выдумки. Коммутатор - это L2, если второго уровня. L3, если третьего. Modbus TCP - это уровень приложений, даже не транспорт. Сами в OSI заглянуть сможете?

Понимаете, в чём Ваша беда?

melky
23.05.2024, 15:23
imaex ну, если немного не теми терминами играюсь, уж извините. Некогда куда-то там заглядывать. MGate MB3170I - как раз и есть та железка, которая имеет один IP и один порт и зная SlaveID из пакета пересылает уже в RTU режиме.
в Овеновском варианте это МКОН вроде.

Pavel5698
23.05.2024, 16:42
Можно ли настроить Owen OPC Server так, чтобы он открывал соединение, получал данные и после получения данных закрывал соединение (для каждого опроса)?

Нет, нельзя
Owen OPC создает отдельное TCP соединение для каждого UnitID (адреса устройства). Для вашей задачи он не подходит.