PDA

Просмотр полной версии : Чем отличается Modbus RTU over Ethernet от Modbus TCP



a1exwin0
21.06.2022, 09:39
Здравствуйте.

Есть СПК107 ->RS485 -> модем RX108-L4U нужно передать данные в скада АТМ.
Использовать ModbusRTU нельзя так как скада АТМ не поддерживает этот модем.
Скачал и установил программный шлюз от Teleofis м2м24 Desktop (https://teleofis.ru/production/program/server-tcp-soedineniy-m2m24-desktop/)
На выходе шлюза получаю Modbus RTU over Ethernet.
С MasterSCADA 4D все работает, данные передаются корректно.
Но SCADA ATM не поддерживает протокол Modbus RTU over Ethernet, только Modbus TCP.

Собственно вопрос чем эти протоколы отличаются?
Или если можно ссылку на описание протокола Modbus RTU over Ethernet.

melky
21.06.2022, 09:41
Modbus RTU over Ethernet - пакеты тут повторяют полностью работу с COM портом, в TCP его уже заворачивает Scada, на выходе из шлюза это так же пакеты, аналогичные для COM порта.

Вы можете воспользоваться созданием виртуального COM порта например при помощи Tibbo VPS Manager и настроить Scada ATM в режиме работы COM порта на этот виртуальный порт, получите тот же самый Modbus RTU over TCP.

a1exwin0
21.06.2022, 09:46
Спасибо за оперативный ответ.
Попробую.

Но я боюсь что не сработает, так как SCADA ATM и шлюз м2м24 это разные компьютеры.

Хотелось бы понять как SCADA заворачивает в TCP.

melky
21.06.2022, 10:06
a1exwin0 какая разница где шлюз m2m24 ? есть IP и есть порт, который ведет на физический COM порт, вот на эти данные и настраиваете виртуальный COM порт на ПК со Scada.

Наличие заворачивание зависит от реализации, оно есть или его нет, какая разница вам как это делается, если вам надо подключить устройство?

a1exwin0
22.06.2022, 08:03
Я прошу прощения, не точно указал условия.

В моем случае я ничего не могу делать на компьютере SCADA админы не допускают :( увы.
Мне выделили терминальный сервер под m2m24 и пожелали удачи.
Я подумал, что можно написать программку которая будет между SCADA и m2m24 читать данные с порта m2m24 конвертировать пакет Modbus RTU в Modbus TCP и выкидывать его в порт для SCADA, вот.
Второй вариант установил виртуальный порт (https://infostart.ru/1c/articles/620353/) на терминалке, и там же поднял конвертер Modbus RTU в Modbus TCP (https://www.aggsoft.ru/modbus-gateway/), не завелось. Запросы от мастера(SCADA) приходят на виртуальный порт уже в формате Modbus RTU, но в ответ тишина. Может что-то таймингами.
Склоняюсь к первому варианту.

melky
22.06.2022, 09:25
Вы проверьте другой системой чтение от своего конвертера, отдайте эти данные админам Scada системы и пусть они дальше сами как хотят так и заводят данные.
Scada полагаю является мастером опроса, и даже если она вдруг слейв, то если в ней не настроен опрос вы никогда и ничего не добьетесь....

Ваша задача, настроить опрос RTU, конвертировать его в TCP (устройство таки слейв) и выдать карту регистров для тех, кто владеет Scada системой, подтвердив работу например при помощи других программ...

melky
22.06.2022, 09:27
Простите это примерно выглядит так, вам дали права на управление автомобилем, но сам автомобиль вам не дали...

a1exwin0
22.06.2022, 11:24
Простите это примерно выглядит так, вам дали права на управление автомобилем, но сам автомобиль вам не дали...

Согласен с Вами абсолютно.

Да, скада является мастером.
Почитал про формат протоколов modbus RTU и TCP, в принципе понял что во что и как конвертируется, остался один вопрос.
В пакете modbus TCP первое поле заголовка идентификатор транзакции, при конвертации запроса мастера в RTU я его теряю, соответственно ответ слейва его не содержит, где его взять для обратной конвертации? Вопрос где его берут платные программы конвертации, ведь как то берут.

Буду думать.:confused:
Спасибо за помощь

melky
22.06.2022, 11:37
a1exwin0 , если Scada мастер, то вы им можете выдать только карту регистров и дальше они сами... по другому никак... да даже если была слейв, все равно настраивать им..

Забейте на ID транзакции, по опыту только одно устройство попалось, которое требовало счетчика ID транзакций, остальные устройства вполне переваривали постоянные нули...

их не берут, их программируют :)

Валенок
23.06.2022, 09:21
На выходе шлюза получаю Modbus RTU over Ethernet...
Но SCADA ATM не поддерживает протокол Modbus RTU over Ethernet, только Modbus TCP.
Может еще конвертер модбас over tcp/модбас-tcp пильнуть/поискать ?



...идентификатор транзакции, при конвертации запроса мастера в RTU я его теряю, соответственно ответ слейва его не содержит, где его взять для обратной конвертации? ..
При конверте ответа по rtu в ответ по модбас-tcp обязаны вложить тот ide который был в модбас-tcp запросе. А что там было - не модбас-tcp-сервера проблема.

melky
23.06.2022, 09:36
Может еще конвертер модбас over tcp/модбас-tcp пильнуть/поискать ?

за деньги есть такое, вот бесплатных не видел...

a1exwin0
27.06.2022, 09:40
Всем спасибо за помощь, разобрался,
написал TCP сервер который с одного порта читает данные от скады АТМ в modbus TCP переводит в modbus RTU и пишет в другой порт (М2М24) и соответственно обратно, такой себе прокси с конвертацией.
Поле ID transaction подставляю 0, подсмотрел у MasterScada там тоже 0.
Осталось причесать код и засунуть его в виндовый сервис.