Статьи

Все, що ви боялися запитати про перетворення протоколу Modbus

  1. Чи потрібен мені спеціальний перетворювач протоколів для підключення пристроїв з послідовним інтерфейсом...
  2. Варіант 1: Хост SCADA з драйвером Modbus TCP
  3. Варіант 2: Хост SCADA з драйвером Modbus RTU - з вбудованим послідовним портом
  4. Варіант 3: Хост SCADA з драйвером Modbus RTU - без вбудованого послідовного порту
  5. Варіант 4: Хост SCADA з драйвером «Інкапсуляція Ethernet»
  6. висновок
  7. Якщо до різних послідовних портів шлюзу підключено кілька пристроїв Modbus RTU, яка повинна бути архітектура...
  8. Метод 1: Підключення послідовного порту до унікального TCP-порту
  9. Метод 2: Підключення послідовного порту до унікального IP-адресою
  10. Метод 3: Використання таблиці маршрутизації
  11. Як за допомогою одного шлюзу кілька хостів SCADA можуть отримати доступ до одних і тих же пристроїв...
  12. У мене є два робочих провідних пристрої Modbus (PLC або HMI). Як мені організувати обмін даними між ними?
  13. У мене є кілька пристроїв Modbus RTU, які потрібно опитати. Я можу використовувати кілька команд Modbus,...
  14. глосарій
  15. Віртуальний COM-порт, драйвер віртуального COM-порту
  16. прозорий шлюз
  17. Шлюз-агент

Протокол Modbus широко використовується при автоматизації виробництва, багато пристроїв підтримують протокол передачі даних Modbus RTU, який використовує послідовний інтерфейс

Протокол Modbus широко використовується при автоматизації виробництва, багато пристроїв підтримують протокол передачі даних Modbus RTU, який використовує послідовний інтерфейс. Зазвичай пристрої мають інтерфейс RS-232 або RS-485 з роз'ємом DB-9 або клемної колодкою. Пристрої Modbus RTU легко впроваджувати і недорого обслуговувати. Саме тому протокол Modbus RTU став настільки популярним. Сьогодні все більше і більше промислових пристроїв починають підтримувати стандарт Ethernet, тому що складність і масштаби мереж підвищуються. Багато системи вже працюють через Modbus TCP з використанням Ethernet, наприклад, SCADA. В результаті, виникають проблеми сполучення між протоколами Modbus RTU і Modbus TCP. Наведені нижче поширені запитання та відповіді на них покликані допомогти вам виявити і запобігти часті проблеми перетворення протоколу Modbus.

Перелік поширених запитань:

  1. Чи потрібен мені спеціальний перетворювач протоколів для підключення пристроїв з послідовним інтерфейсом Modbus RTU до мережі Ethernet? Чи достатньо сервера послідовних пристроїв?
  2. Якщо до різних послідовних портів шлюзу підключено кілька пристроїв Modbus RTU, яка повинна бути архітектура підключення TCP? Чи можна використовувати одне підключення або потрібне окреме з'єднання для кожного послідовного порту?
  3. Як за допомогою одного шлюзу кілька хостів SCADA можуть отримати доступ до одних і тих же пристроїв Modbus RTU одночасно?
  4. У мене є два робочих провідних пристрої Modbus (PLC або HMI). Як мені організувати обмін даними між ними?
  5. У мене є кілька пристроїв Modbus RTU, які потрібно опитати. Я можу використовувати кілька команд Modbus, щоб отримати дані регістрів, але це займає надто багато часу. Чи може шлюз активно отримувати дані і об'єднувати їх в єдиний реєстр, щоб я міг отримати всі дані за допомогою однієї команди Modbus?

Чи потрібен мені спеціальний перетворювач протоколів для підключення пристроїв з послідовним інтерфейсом Modbus RTU до мережі Ethernet? Чи достатньо сервера послідовних пристроїв?

Перш за все необхідно визначити, який драйвер Modbus на хості SCADA ви хочете використовувати. Існує чотири можливих варіанти:

  1. хост SCADA з драйвером Modbus TCP
  2. хост SCADA з драйвером Modbus RTU - з вбудованим послідовним портом
  3. хост SCADA з драйвером Modbus RTU - без вбудованого послідовного порту
  4. хост SCADA з драйвером «Інкапсуляція Ethernet»

Варіант 1: Хост SCADA з драйвером Modbus TCP

Для даного варіанту необхідний перетворювач протоколів. Ви можете використовувати протокол Modbus TCP для зв'язку з пристроями Modbus RTU через шлюз.

На ринку пристроїв автоматизації є багато « шлюзів Modbus », Які забезпечують підключення через Modbus TCP для ведених пристроїв Modbus TCP. Коли шлюз отримує запит Modbus TCP, він перетворює пакет в Modbus RTU і негайно посилає його до пристроїв Modbus RTU.

Коли шлюз отримує запит Modbus TCP, він перетворює пакет в Modbus RTU і негайно посилає його до пристроїв Modbus RTU

Варіант 2: Хост SCADA з драйвером Modbus RTU - з вбудованим послідовним портом

Цей варіант підходить, якщо необхідно просто підключити існуючий хост SCADA і пристрої Modbus RTU до мережі Ethernet. Якщо ваш хост SCADA обладнаний послідовним портом, то за допомогою пари шлюзів можна вирішити дану проблему.

Як показано на схемі мережі, шлюз може перетворювати пакет Modbus RTU в Modbus TCP і назад. Якщо вбудований послідовний порт відсутній, дане рішення вам не підходить, скористайтеся варіантом 3.

Якщо вбудований послідовний порт відсутній, дане рішення вам не підходить, скористайтеся варіантом 3

Варіант 3: Хост SCADA з драйвером Modbus RTU - без вбудованого послідовного порту

Якщо ви хочете користуватися наявними програмами і пристроями SCADA, але ваш хост SCADA не обладнано послідовним портом, використовуйте сервер послідовних пристроїв для створення віртуального COM-порту. Так ви зможете отримати доступ до віддалених послідовним пристроїв через сервер, причому функціональність відповідатиме реальному COM-порту.

Для створення «віртуального COM-порту» сервер послідовних пристроїв встановить драйвер віртуального COM-порту на ваш хост SCADA. Щоб активувати цей порт, встановіть сервер послідовних пристроїв в режим віртуального COM-порту. Всі дані, що передаються через нього, будуть відправлятися на віддалений послідовний порт сервера послідовних пристроїв. Так як з точки зору ОС і SCADA віртуальний COM ідентичний реальному, ви можете відправити запит Modbus RTU на нього безпосередньо.

Так як з точки зору ОС і SCADA віртуальний COM ідентичний реальному, ви можете відправити запит Modbus RTU на нього безпосередньо

Варіант 4: Хост SCADA з драйвером «Інкапсуляція Ethernet»

Якщо ваш хост SCADA не обладнано послідовним портом, а ви не хочете встановлювати драйвер віртуального COM-порту, то замість цього ви можете використовувати драйвер «Інкапсуляція Ethernet». Зверніть увагу, що програмне забезпечення SCADA має підтримувати тип з'єднання «Інкапсуляція Ethernet». Використання драйверів «Інкапсуляція Ethernet» рекомендується при наявності поглиблених знань про послідовних протоколах і протоколах TCP / IP.

Сервер послідовних пристроїв необхідно перевести в режим «Raw Socket» або «тунелювання», в якому при відправці SCADA пакетів Modbus RTU на пристрої з'єднання між хостом і сервером послідовних пристроїв здійснюється через прозорий канал TCP / IP або UDP без перетворення протоколу. Сервер послідовних пристроїв необхідно коректно налаштувати, тому що протокол Modbus RTU визначає кінець пакета на основі пауз у передачі. Якщо пакет Modbus RTU буде розділений на два або більше пакетів TCP / IP або UDP, ви можете зіткнутися з деякими проблемами. Якщо ви не можете правильно налаштувати передачу пакетів між послідовними каналами і мережами Ethernet, рекомендується використовувати варіант зі шлюзом (2) або віртуальним COM-портом (3).

Якщо ви не можете правильно налаштувати передачу пакетів між послідовними каналами і мережами Ethernet, рекомендується використовувати варіант зі шлюзом (2) або віртуальним COM-портом (3)

Хоча сервери послідовних пристроїв можна використовувати для підключення пристроїв Modbus RTU до мережі Ethernet, варіант зі шлюзом (2) найкращий і задовольняє практично всім вимогам системи. Ваш хост повинен підтримувати протокол Modbus TCP, але це рідко викликає проблеми, тому що цей протокол дуже популярний і широко поширений. Нижче описані кілька ситуацій, в яких необхідно використовувати представлений варіант зі шлюзом:

Кілька провідних пристроїв або резервування мережі

Підключення через Ethernet дозволяє не тільки користуватися віддаленим доступом, але також підтримує кілька з'єднань. Більшість шлюзів підтримують до 32 з'єднань, тобто 32 хоста SCADA можуть одночасно запитувати дані у пристроїв Modbus RTU. У даній ситуації забезпечити резервування мережі за допомогою сервера послідовних пристроїв досить складно, тому що більшість серверів не підтримує кілька провідних пристроїв, з іншого боку, використання шлюзів не викличе жодних проблем.

У даній ситуації забезпечити резервування мережі за допомогою сервера послідовних пристроїв досить складно, тому що  більшість серверів не підтримує кілька провідних пристроїв, з іншого боку, використання шлюзів не викличе жодних проблем

Одне з'єднання для декількох пристроїв Modbus RTU

Іноді необхідно використовувати одне з'єднання на хості SCADA для опитування декількох пристроїв Modbus RTU, підключених до різних послідовних портів. Шлюз є єдиним рішенням, яке може втілити такий механізм маршрутизації. Шлюзи з декількома послідовними портами можна налаштувати, щоб вони відправляли запит Modbus на відповідний послідовний порт з урахуванням унікальних ідентифікаторів ведених пристроїв.

Північ послідовних пристроїв не може впоратися з таким складним завданням.

Північ послідовних пристроїв не може впоратися з таким складним завданням

Одночасний доступ до пристрою зі старого контролера Modbus RTU і нової Modbus TCP SCADA

Хоча протокол Ethernet дозволяє легко налаштувати віддалений доступ, іноді буває необхідно зберегти існуючі локальні з'єднання з контролером або HMI. Проблема полягає в тому, послідовний порт на пристрої вже підключений до шлюзу, тому послідовний порт для підключення HMI відсутня. Для вирішення цієї проблеми деякі шлюзи обладнані функцією «Serial Redirector». Ця система дуже схожа на маршрутизатор тим, що шлюз може передавати запит між різними послідовними портами на основі ідентифікатора веденого пристрою.

висновок

Існує багато варіантів перетворення Modbus між послідовним інтерфейсом і Ethernet. Хоча в цьому випадку може використовуватися такий простий варіант як прозора передача даних між послідовними і Ethernet портами, при роботі з промисловими протоколами, наприклад, Modbus, спеціальний шлюз підходить набагато краще. Використання такого шлюзу може зажадати великих початкових інвестицій, але він забезпечує більш стабільний зв'язок в довгостроковій перспективі і здатний розпізнавати пакети Modbus для правильної обробки.

До списку питань

Якщо до різних послідовних портів шлюзу підключено кілька пристроїв Modbus RTU, яка повинна бути архітектура підключення TCP? Чи можна використовувати одне підключення або потрібне окреме з'єднання для кожного послідовного порту?

Більшість шлюзів забезпечують гнучкі настройки підключення TCP для доступу до декількох пристроїв Modbus RTU, підключених до різних послідовних портів шлюзу. Існує три різних методи, заснованих на механізмі маршрутизації:

  1. підключення послідовного порту до унікального TCP-порту
  2. підключення послідовного порту до унікального IP-адресою
  3. використання таблиці маршрутизації

Метод 1: Підключення послідовного порту до унікального TCP-порту

Найбільш популярний метод планування топології шлюзу. У конфігурації шлюзу кожен послідовний порт буде підключений до окремого TCP-порту. Наприклад, 4001 - послідовний порт 1, 4002 - послідовний порт 2 і т.д. Якщо ви хочете підключити пристрої Modbus RTU до послідовного порту 1, встановіть з'єднання Modbus TCP з 4001. Шлюз буде передавати пакети Modbus TCP між TCP-портом 4001 і послідовним портом 1.

У цій топології драйвер SCADA повинен створити кілька з'єднань Modbus TCP.

У цій топології драйвер SCADA повинен створити кілька з'єднань Modbus TCP

Метод 2: Підключення послідовного порту до унікального IP-адресою

Цей варіант дуже схожий на варіант 1, але для ідентифікації послідовних портів шлюз використовує різні IP-адреси.

Наприклад, 192.168.2.1 - до послідовного порту 1, 192.168.2.2 - до послідовного порту 2 і т.д. Якщо ви хочете підключити пристрої Modbus RTU до послідовного порту 1, встановіть з'єднання Modbus TCP з 502. Шлюз буде передавати пакети Modbus TCP між 192.168.2.1:502 і послідовним портом 1. У цій топології драйвер SCADA також повинен створити кілька з'єднань Modbus TCP. Хоча для топології потрібно кілька IP-адрес, деякі клієнти Modbus TCP дозволяють використовувати тільки TCP-порт 502. У цьому випадку варіант 1 вам не підійде, і доведеться використовувати варіант 2.

У цьому випадку варіант 1 вам не підійде, і доведеться використовувати варіант 2

Метод 3: Використання таблиці маршрутизації

У даній топології для зв'язку з декількома пристроями використовується маршрутизація. Щоб запит передавався до правильного послідовного порту, необхідно правильно налаштувати шлюз і напрямок маршрутизації. Наприклад, послідовний порт 1 обробляє всі пакети Modbus, які мають ідентифікатори ведених пристроїв від 1 до 10, послідовний порт 2 - ідентифікатори від 11 до 20 і т.д.

Оскільки в топології використовується тільки одне з'єднання, зв'язок буде повільніше, ніж варіанти 1 і 2. Проте, при наявності бюджетних і технічних обмежень одне з'єднання може виявитися підходящим варіантом, якщо забезпечується достатня продуктивність.

Примітка:

Якщо ви підключите кілька пристроїв до одного послідовного порту або прив'яже кілька послідовних портів до одного TCP-з'єднання, час опитування Modbus збільшиться. Для збільшення швидкості опитування потрібно більше TCP-з'єднань, тому необхідно враховувати можливості SCADA.

Для збільшення швидкості опитування потрібно більше TCP-з'єднань, тому необхідно враховувати можливості SCADA

До списку питань

Як за допомогою одного шлюзу кілька хостів SCADA можуть отримати доступ до одних і тих же пристроїв Modbus RTU одночасно?

Хоча шлюз може впоратися з таким завданням, пам'ятайте, що пропускна здатність послідовного порту залишається незмінною. Якщо через один послідовний порт надходить кілька запитів, може виникнути затримка, тому що шлюз обробляє більш ранні запити першими. Тому якщо ви хочете дозволити кільком провідним пристроям одночасний доступ до пристрою Modbus RTU, спочатку необхідно підібрати відповідний час опитування.

Проте, описане вище рішення не є єдиним. деякі шлюзи підтримують режим «агента», активно і постійно отримує дані від підключених пристроїв.

Оновлюються дані зберігаються у внутрішній пам'яті, яка використовується для відповіді на запити хоста. Хоча це рішення є більш швидким і ефективним, отримані дані не будуть найактуальнішими.

Наприклад, якщо один запит займає 100 мс, то 5 підключень призводить до затримки не менше 100 мс х (5-1) = 400 мс перед відправкою наступного запиту. Це означає, що цикл опитування кожного хоста SCADA повинен складати 400 мс (плюс деякий допуск).

До списку питань

У мене є два робочих провідних пристрої Modbus (PLC або HMI). Як мені організувати обмін даними між ними?

Для обміну даними між двома провідними пристроями Modbus необхідний шлюз, який може підтримувати режим ведучий пристрій-ведучий пристрій (master-master). В цьому режимі шлюз буде працювати в якості веденого пристрою для обох сторін. Одне ведучий пристрій може записувати дані у внутрішню пам'ять шлюзу, а інше - отримувати їх, тим самим забезпечуючи обмін. Залежно від використовуваного шлюзу ви можете забезпечити підтримку Modbus RTU і Modbus TCP для обох сторін або підтримку Modbus RTU для однієї і Modbus TCP - для іншої.

До списку питань

У мене є кілька пристроїв Modbus RTU, які потрібно опитати. Я можу використовувати кілька команд Modbus, щоб отримати дані регістрів, але це займає надто багато часу. Чи може шлюз активно отримувати дані і об'єднувати їх в єдиний реєстр, щоб я міг отримати всі дані за допомогою однієї команди Modbus?

Для того, щоб шлюз активно отримував дані від декількох пристроїв Modbus RTU і поміщав їх в єдиний реєстр, шлюз-агент повинен зберігати дані у внутрішній пам'яті. Шлюз також повинен по черзі опитати кожен пристрій Modbus RTU. Всі дані будуть розташовані в одному блоці у внутрішній пам'яті шлюзу, тому ви зможете отримати їх за допомогою однієї команди читання.

До списку питань

глосарій

Сервер послідовних пристроїв

Сервер послідовних пристроїв - це автономний пристрій, оснащений, як мінімум, одним портом Ethernet і одним або декількома послідовними портами. Сервери послідовних пристроїв оснащуються вбудованою мережевою операційною системою і дозволяють комп'ютерам отримати доступ до послідовних пристроїв в мережі. Вони можуть прозоро передавати дані між послідовним інтерфейсом і Ethernet, при цьому відповідно перетворюючи їх.

Сучасні сервери послідовних пристроїв також підтримують функцію «віртуального COM-порту» для комп'ютерів, у яких немає додаткового послідовного порту, перетворюючи Ethernet-з'єднання в СОМ-порт. Крім цих основних функцій, більш складні сервери можуть навіть підтримувати протокол PPP по послідовним лініях зв'язку або Telnet - в мережах Ethernet. Сервер послідовних пристроїв можна використовувати для консольного управління мережевим і серверним обладнанням (тому деякі виробники називають його «консольним») або управління віддаленими терміналами в старих банківських системах (тому іноді його називають «термінальним»).

Віртуальний COM-порт, драйвер віртуального COM-порту

Віртуальний COM-порт - це не реальний (тобто, не фізичний) COM-порт на комп'ютері. Замість цього на комп'ютер під встановлюється драйвер віртуального COM-порту, повністю емулює поведінку локального COM-порту. Драйвер керує портами на сервері послідовних пристроїв, який підключений через мережу TCP / IP. Послідовний порт на віддаленому сервері послідовних пристроїв буде функціонувати так само, як локальний COM-порт. Віртуальний COM-порт прив'язується до конкретного порту конкретного сервера послідовних пристроїв. Наприклад, COM3 - це послідовний порт 1 на віддаленому сервері послідовних пристроїв з IP-адресою 192.168.2.1. Тому при проходженні даних через цей порт вони будуть відправлені драйвером на «192.168.2.1@serial port 1» (192.168.2.1 на послідовний порт 1). Всі запити на цей віртуальний COM-порт будуть перенаправлені на «192.168.2.1@serial port 1». Оскільки нові хост-комп'ютери часто мають недостатню кількість вбудованих послідовних портів, віртуальні COM-порти є безцінним інструментом для підключення існуючого обладнання промислової автоматизації.

прозорий шлюз

прозорий шлюз - це основний метод використання шлюзу Modbus. Оскільки протоколи Modbus RTU і Modbus TCP мають той же PDU (блок даних), а різниця полягає лише в заголовку, шлюз може з легкістю передавати дані між такими пристроями. Таким чином, коли шлюз отримує пакет Modbus TCP з мережі Ethernet, він може просто замінити поле адреси відповідно до вимог Modbus RTU і відразу ж відправити пакет на послідовний порт. Коли шлюз отримує відповідь від пристрою Modbus RTU, він відповість клієнтові Modbus TCP.

Шлюз-агент

Шлюз-агент - це Інший метод использование шлюзу Modbus для передачі Даних между прилаштувати Modbus TCP и Modbus RTU. Шлюз-агент обладнань, власною внутрішньою пам'яттю для Тимчасова зберігання Даних и Безперервна опітує підключені пристрої. При отриманні запиту від драйвера SCADA шлюз використовує зберігаються у внутрішній пам'яті дані для відповіді. Тому шлюз працює в якості агента для активного опитування пристроїв. Ця функція може бути використана для перетворення протоколів, якщо:

  1. Два протоколу використовують різну структуру пакетів. Наприклад, PROFIBUS і Modbus, Ethernet / IP, PROFINET і т.д.
  2. Два протоколу використовують різний час циклів. Деякі протоколи, наприклад, PROFIBUS, PROFINET і Ethernet / IP, обмінюються даними протягом дуже коротких тимчасових циклів, в які не може вкластися прозорий шлюз.

Деякі протоколи, наприклад, PROFIBUS, PROFINET і Ethernet / IP, обмінюються даними протягом дуже коротких тимчасових циклів, в які не може вкластися прозорий шлюз

Як мені організувати обмін даними між ними?
Чи достатньо сервера послідовних пристроїв?
Якщо до різних послідовних портів шлюзу підключено кілька пристроїв Modbus RTU, яка повинна бути архітектура підключення TCP?
Чи можна використовувати одне підключення або потрібне окреме з'єднання для кожного послідовного порту?
Як за допомогою одного шлюзу кілька хостів SCADA можуть отримати доступ до одних і тих же пристроїв Modbus RTU одночасно?
Як мені організувати обмін даними між ними?
Чи може шлюз активно отримувати дані і об'єднувати їх в єдиний реєстр, щоб я міг отримати всі дані за допомогою однієї команди Modbus?
Чи потрібен мені спеціальний перетворювач протоколів для підключення пристроїв з послідовним інтерфейсом Modbus RTU до мережі Ethernet?
Чи достатньо сервера послідовних пристроїв?
Чи можна використовувати одне підключення або потрібне окреме з'єднання для кожного послідовного порту?