PDA

Просмотр полной версии : Опрос двух устройств на разных портах по Modbus TCP



vapik
22.02.2023, 08:09
Добрый день, коллеги.
Имеется шлюз Modbus TCP - Modbus RTU (например такой: https://icp-das.ru/products/tgw-725i).
У него можно каждый COM-порт привязать к разным портам Ethernet (например COM1 пойдет на 502, COM2 - 503).

Если в ПЛК110[M02] в конфигураторе создать Modbus(Master), а там два устройства "Universal Modbus Device", один на 502 порт, второй на 503 - будут ли эти два порта опрашиваться асинхронно? Или для этого нужно все писать через сокеты/библиотеки?

Задача шлюза - увеличить скорость опроса 2х устройств (Modbus RTU Slave) контроллером ПЛК110, разделив их на 2 разных COM порта шлюза, опрос шлюза вести по Modbus TCP.
ПЛК110 (Master) подключается к шлюзу по Ethernet (Modbus TCP).
Устройство 1 (Slave) подключается к шлюзу на COM1 RS485 (Modbus RTU)
Устройство 2 (Slave) подключается к шлюзу на COM2 RS485 (Modbus RTU)

----
UPD. Для тех, кто хочет сделать также.
Не получилось.
При добавлении нескольких UMD с одним IP адресом, но разными портами, все запросы почему-то сыпятся в первый объявленный IP и порт.
Естественно в документации об этом не написано.

Вот ответ техподдержки:

Действительно, несколько компонентов UniversalModbusDevice не могут работать с одним IP-адресом опрашиваемого устройства, пусть и с разными указанными ТСР-портами, будет работать только первый добавленный.
Используйте под данную задачу библиотеку modbus_tcp.lib - https://owen.ru/forum/showthread.php?t=32898&p=327664&viewfull=1#post327664

Валенок
22.02.2023, 08:29
первое
....

ps
кто кого опрашивает и схема неясны, соотв и цель размыта.
Какие девайсы, какие задачи и ограничения....

vapik
22.02.2023, 09:00
первое
....

ps
кто кого опрашивает и схема неясны, соотв и цель размыта.
Какие девайсы, какие задачи и ограничения....

Обновил топик:


Задача шлюза - увеличить скорость опроса 2х устройств (Modbus RTU Slave) контроллером ПЛК110, разделив их на 2 разных COM порта шлюза, опрос шлюза вести по Modbus TCP.
ПЛК110 (Master) подключается к шлюзу по Ethernet (Modbus TCP).
Устройство 1 (Slave) подключается к шлюзу на COM1 RS485 (Modbus RTU)
Устройство 2 (Slave) подключается к шлюзу на COM2 RS485 (Modbus RTU)


Т.е. если ПЛК будет опрашивать два устройства по Modbus TCP (192.168.0.10:502 и 192.168.0.10:503), то будет ли это происходить асинхронно?

Валенок
22.02.2023, 09:16
Опрашиватся будет как бы асинхронно. Но результат не будет быстрее чем при 1 слейв на rs-1 самого ПЛК, 2й на rs-2 самого ПЛК. Без шлюза.

Какие девайсы, какие задачи и ограничения....[2]

vapik
22.02.2023, 10:39
Опрашиватся будет как бы асинхронно. Но результат не будет быстрее чем при 1 слейв на rs-1 самого ПЛК, 2й на rs-2 самого ПЛК. Без шлюза.

Какие девайсы, какие задачи и ограничения....[2]

Задача - дозирование по расходомерам, подключаемых по RS485. Тут чем быстрее опросишь - тем точнее отдозируешься.
Если в линии их несколько, то один тупит - все страдают.
У меня всего одна свободная RS485 в контроллере.
Поэтому вариант асинхронности через шлюз вполне подходит.

Как сконфигурировать надо - как два мастера(1) или под одним мастером два slave (2) ?
1
66095

2
66096

kondor3000
22.02.2023, 10:58
Задача - дозирование по расходомерам, подключаемых по RS485. Тут чем быстрее опросишь - тем точнее отдозируешься.
Если в линии их несколько, то один тупит - все страдают.
У меня всего одна свободная RS485 в контроллере.
Поэтому вариант асинхронности через шлюз вполне подходит.

Как сконфигурировать надо - как два мастера(1) или под одним мастером два slave (2) ?


2 вариант, 1 мастер и 2 UMD.
Для скорости, если у вас много однотипных регистров подряд, надо использовать групповые запросы с помощью String.

Валенок
22.02.2023, 11:42
Если в линии их несколько, то один тупит - все страдают.
Бобина думаете тупит ? Проект - где ?

vapik
22.02.2023, 12:52
2 вариант, 1 мастер и 2 UMD.
Для скорости, если у вас много однотипных регистров подряд, надо использовать групповые запросы с помощью String.

Вы имеет ввиду String Input modul? Получается, если прописать в конфигураторе несколько регистров (допустим типа Int), то они не сгруппируются, а будет несколько одинарных запросов?

vapik
22.02.2023, 12:52
Бобина думаете тупит ? Проект - где ?
Определенно, она.

kondor3000
22.02.2023, 13:17
Получается, если прописать в конфигураторе несколько регистров (допустим типа Int), то они не сгруппируются, а будет несколько одинарных запросов?

Именно так, будет читать по очереди.
Для групповых запросов делается так:
Пример записи, чтения через STRING https://owen.ru/forum/showthread.php?t=22915&page=40&p=244022&viewfull=1#post244022
Пример опроса модуля МВ110-8А через STRING https://owen.ru/forum/showthread.php?t=35094#10

vapik
22.02.2023, 13:27
Именно так, будет читать по очереди.
Для групповых запросов делается так:
Пример записи, чтения через STRING https://owen.ru/forum/showthread.php?t=22915&page=40&p=244022&viewfull=1#post244022
Пример опроса модуля МВ110-8А через STRING https://owen.ru/forum/showthread.php?t=35094#10

Спасибо, хорошие примеры.

Валенок
23.02.2023, 01:16
Определенно, она.
Ну вот, материал выше внимательно почитаете, и обнаружите что бобина не причём. А то я было подумал что Брюс Ли вернулся. Которому тупит - это пара-другая дюжин мс.

vapik
19.05.2023, 05:41
UPD. Для тех, кто хочет сделать также.
Не получилось.
При добавлении нескольких UMD с одним IP адресом, но разными портами, все запросы почему-то сыпятся в первый объявленный IP и порт.
Естественно в документации об этом не написано.

Вот ответ техподдержки:

Действительно, несколько компонентов UniversalModbusDevice не могут работать с одним IP-адресом опрашиваемого устройства, пусть и с разными указанными ТСР-портами, будет работать только первый добавленный.
Используйте под данную задачу библиотеку modbus_tcp.lib - https://owen.ru/forum/showthread.php?t=32898&p=327664&viewfull=1#post327664