Каталог
Зателефонуйте мені
Каталог

Modbus: що це таке і як працює? Огляд протоколу та його застосування

Modbus: що це таке і як працює? Огляд протоколу та його застосування
Автор: Andriy Savechka Опубліковано: 23.03.2025 Переглядів: 4115 Коментарів: 0

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

Що таке Modbus ?

Modbus – це один із найпопулярніших протоколів зв’язку, розроблений для обміну даними між пристроями в промислових автоматизованих системах. Його створила компанія Modicon (нині частина Schneider Electric) ще в 1979 році, і з того часу він став стандартом у сфері автоматизації. Завдяки Modbus пристрої, такі як PLC, датчики, приводи та інше керуюче обладнання, можуть легко спілкуватися через послідовні або Ethernet-мережі.

Протокол побудований за принципом "ведучий-ведений" (master-slave), де головний пристрій (зазвичай це PLC або комп’ютер) надсилає запити, а підлеглі пристрої відповідають, надаючи необхідні дані або виконуючи команди. Modbus цінується за свою простоту, надійність та відкритість, що робить його легким у впровадженні та інтеграції в різні промислові рішення.

Протокол підтримує два основних варіанти: Modbus RTU для зв’язку через послідовні інтерфейси (RS-232, RS-485) та Modbus TCP для мереж на основі Ethernet. Це дає гнучкість при роботі в різних мережевих середовищах.

Що означає Modbus?

Назва Modbus походить від поєднання слів "Modular" (модульний) і "Bus" (шина). Це підкреслює його модульну структуру та здатність передавати дані через спільну шину зв’язку.

Як працює Modbus?

Modbus базується на принципі "ведучий-ведений". Головний пристрій (зазвичай PLC, комп’ютер або HMI) надсилає запити до підлеглих пристроїв (наприклад, датчиків чи приводів), а підлеглі пристрої відповідають, надаючи необхідні дані.

Типи зв'язку Modbus

Modbus — це протокол прикладного (сьомого) рівня моделі OSI (Open Systems Interconnection model). Він не залежить від нижчих рівнів і може використовуватися разом з іншими протоколами, такими як Ethernet TCP/IP або UDP/IP, а для передавання сигналів як фізичне середовище можуть застосовуватися послідовні інтерфейси RS-232, RS-422, RS-485, оптоволокно, радіоканали тощо.

Існує кілька версій протоколу Modbus, кожна з яких призначена для різних типів мереж і вимог:

1. Modbus RTU (Remote Terminal Unit)

Однією з найпоширеніших версій Modbus є Modbus RTU, який використовується для серійного зв'язку через протоколи, такі як RS-485 або RS-232. Цей варіант особливо популярний у середовищах, де працюють на невеликі відстані. Протокол Modbus RTU відомий своєю ефективністю, високими швидкостями передачі та здатністю до перевірки помилок.

Основні характеристики Modbus RTU:

  • Перевірка помилок: Використовує CRC (Cyclic Redundancy Check) для надійного виявлення помилок.
  • Компактність: Повідомлення в Modbus RTU короткі та оптимізовані для швидкої передачі
  • Відстань зв'язку: Зазвичай використовується для відстаней до 1200 метрів через RS-485.

2. Modbus TCP (Transmission Control Protocol)

Ще однією популярною версією є Modbus TCP, який призначений для мереж на основі Ethernet. На відміну від Modbus RTU, Modbus TCP використовує протокол TCP/IP для зв’язку через локальні (LAN) або глобальні (WAN) мережі.

Структура пакетів схожа з Modbus RTU: дані також кодуються у двійковому форматі та упаковуються в звичайний TCP-пакет для передачі через IP-мережі. Перевірка цілісності, що використовується в Modbus RTU, не застосовується, оскільки TCP уже має власний механізм контролю цілісності.

Основні характеристики Modbus TCP:

  • Зв'язок через Ethernet: Використовує високу швидкість Ethernet-мереж для швидшої передачі даних.
  • Масштабованість: Ідеальний для великих систем і мереж з великою кількістю підключених пристроїв.
  • Порт Modbus TCP: За замовчуванням Modbus TCP працює на порту 502, що забезпечує сумісність з різними системами.

3. Modbus ASCII

Дані кодуються символами з таблиці ASCII та передаються у шістнадцятковому форматі. Початок кожного пакета позначається символом двокрапки, а кінець — символами повернення каретки та переносу рядка.

Основні характеристики Modbus ASCII:

  • Легкість сприйняття: ASCII-символи роблять дані легко зрозумілими для людини.
  • Повільніша швидкість: Менш ефективний за RTU, особливо при роботі з великими обсягами даних.

Структура фрейму Modbus

Структура фрейму на прикладі Modbus RTU  включає кілька ключових полів, кожне з яких має своє призначення для забезпечення коректної комунікації між пристроями. Першим полем є адреса пристрою, яка вказує на адресу слейва (діапазон від 1 до 247). Далі йде функціональний код, що визначає тип операції, наприклад, читання чи запис даних. Наступне поле — дані, яке містить фактичні дані запиту або відповіді. Завершує фрейм CRC — контрольна сума для перевірки цілісності переданих даних. Усі ці поля працюють разом, забезпечуючи правильну обробку та передачу інформації між Modbus-мастером і слейвом. 

Візуалізація структури фрейму Modbus RTU у вигляді таблиці:

Поле Адреса пристрою Код функції Дані CRC
Опис Вказує на адресу слейва (діапазон від 1 до 247) Описує тип операції (наприклад, читання або запис) Містить фактичні дані запиту чи відповіді Контрольна сума для перевірки цілісності даних
Розмір (байти) 1 байт 1 байт Залежить від операції 2 байти

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

Код функції в Modbus

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

Наприклад, код функції, такий як 0x03, використовується для читання регістрів зберігання(holding registers), тоді як 0x10 використовується для запису кількох регістрів. Ці коди функцій допомагають стандартизувати комунікацію між пристроями та дозволяють виконувати широкий спектр операцій у системах промислової автоматизації.

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

Функція Опис Дія

0x01

Read Coils

Читає статус котушок (бінарні дані, 0 або 1) з підлеглого пристрою.

0x02

Read Discrete Inputs

Читає статус дискретних входів (включено/вимкнено) з підлеглого пристрою.

0x03

Read Holding Registers

Читає вміст регістрів зберігання (16-бітні значення).

0x04

Read Input Registers

Читає регістри введення (16-бітні значення для вхідних пристроїв).

0x05

Write Single Coil

Записує одну котушку (бінарний вихід, вкл/вимк) до підлеглого пристрою.

0x06

Write Single Register

Записує один регістр зберігання до підлеглого пристрою.

0x0F

Write Multiple Coils

Записує кілька котушок до підлеглого пристрою.

0x10

Write Multiple Registers

Записує кілька регістрів зберігання до підлеглого пристрою.

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

Діапазон регістрів

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

Тип регістру Діапазон адрес (десятковий) Діапазон адрес (шістнадцятковий)
Coils 1 - 9999 0x0000 - 0x270F
Discrete Inputs 10001 - 19999 0x270F - 0x4E1F
Holding Registers 40001 - 49999 0x9C40 - 0xC2FF
Input Registers 30001 - 39999 0x7530 - 0x9C3F

Пояснення:

  • Coils (адреси 1–9999) використовуються для керування бітами, як виходи (наприклад, для включення/вимкнення пристроїв).
  • Discrete Inputs (адреси 10001–19999) використовуються для зчитування бітових значень від входів.
  • Holding Registers (адреси 40001–49999) використовуються для зберігання налаштувань або вимірюваних значень (16-бітних).
  • Input Registers (адреси 30001–39999) використовуються для зчитування значень з датчиків (також 16-бітні).

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

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

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

У документації деяких виробників, особливо для старих пристроїв, адреси регістрів можуть бути вказані в інших форматах, де адресація починається не з нуля, а перша цифра адреси визначає тип регістра. Наприклад, Input Register з адресою 0 може бути записаний як 30001, а Holding Register — як 40001.
У таких випадках у пакетах даних слід передавати адреси у стандартному форматі Modbus, незалежно від способу їх представлення в документації. Для отримання правильного адреса достатньо відняти зміщення, яке відповідає типу регістра.
Деякі програмні пакети мають вбудовану функцію автоматичної корекції адрес.

Приклад комунікації

Приклад запиту на зчитування holding registers:

  1. Адреса пристрою: 1
  2. Функціональний код: 0x03 (читання holding registers)
  3. Адреса початку: 0x0000
  4. Кількість регістрів: 0x0002 (2 регістри)

Розрахунок CRC для запиту:

  • Запит у шістнадцятковому форматі без CRC:
    01 03 00 00 00 02

  • Після розрахунку CRC для запиту отримуємо: 0xC40B.

Структура запиту:

Поле Адреса пристрою Функціональний код Адреса початку Кількість регістрів CRC
Значення 0x01 0x03 0x0000 0x0002 0xC40B

Структура відповіді:

  1. Адреса пристрою: 1
  2. Функціональний код: 0x03 (читання holding registers)
  3. Кількість байт: 0x04 (4 байти для 2 регістрів)
  4. Дані: 0x0001 0x0002

Розрахунок CRC для відповіді:

  • Відповідь у шістнадцятковому форматі без CRC:
    01 03 04 00 01 00 02

  • CRC після розрахунку: 0xD5C6

Структура відповіді:

Поле Адреса пристрою Функціональний код Кількість байт Дані CRC
Значення 0x01 0x03 0x04 0x0001 0x0002 0xD5C6

Modbus RTU vs TCP: Який вибрати?

Вибір між Modbus RTU та Modbus TCP залежить від кількох факторів, таких як тип фізичного зєднання, відстань, швидкість і масштабованість застосунку.

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

Переваги та недоліки Modbus

Переваги Modbus:

Простота реалізації, діагностики та налагодження
Використання стандартних інтерфейсів (RS-232, RS-485, Ethernet) робить Modbus зручним як для розробників, так і для користувачів обладнання. На відміну від конкурентних протоколів, таких як Profibus і CAN, для реалізації Modbus не потрібні спеціальні мікросхеми.

Швидке впровадження
На розгортання першого рішення на основі Modbus потрібно всього кілька днів, тоді як деякі інші промислові протоколи можуть вимагати місяців підготовки.

Невибагливість до ресурсів
Modbus був розроблений ще за часів 8-бітних процесорів і не має високих вимог до CPU чи RAM. Він легко реалізується на будь-якій операційній системі та не потребує складного обладнання.

Надійність і точність передавання даних
Завдяки вбудованій підтримці CRC (Cyclic Redundancy Check) та LRC (Longitudinal Redundancy Check) забезпечується висока точність виявлення помилок у переданих даних.

Універсальність і відкритість
Modbus вважається де-факто стандартом у сфері промислової автоматизації. Більшість АСУ ТП мають драйвери для роботи з цим протоколом. Завдяки єдиному стандарту обладнання різних виробників може взаємодіяти без труднощів.

Недоліки Modbus:

Modbus не є протоколом реального часу
Протокол Modbus не має жорстких механізмів гарантованої затримки або пріоритетності повідомлень, тому він не підходить для систем, де потрібна миттєва реакція на події (наприклад, у високошвидкісному керуванні двигунами або робототехніці).
Оскільки Master опитує Slave у порядку черги, час відповіді може змінюватися залежно від кількості пристроїв у мережі, швидкості зв’язку та обсягу даних.
Для жорстких реальногочасових систем краще використовувати EtherCAT, Profinet RT або CANopen.

Відсутність вбудованої автентифікації та шифрування
Передані дані не захищені, тому в мережах Modbus TCP потрібно налаштовувати VPN-тунелі. Для цього протоколу було розроблено розширення Modbus Security (з підтримкою TLS), але воно поки що не набуло широкого поширення.

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

Обмежений набір типів даних
У Modbus визначені лише два основних типи даних:

  • біти (дискретні сигнали)

  • 16-бітні регістри

Для передачі рядків, чисел з плаваючою комою тощо різні виробники використовували власні підходи, що призвело до несумісності між пристроями.

Обмеження моделі Master-Slave
Modbus використовує модель "ведучий — ведений" (Master-Slave), де обмін даними відбувається лише за ініціативою Master (ведучого пристрою). Це створює такі проблеми:

  • Slave (ведений пристрій) не може самостійно передати дані Master'у, потрібно чекати опитування.

  • Slave не може визначити втрату зв’язку з Master'ом.

  • Slave-пристрої не можуть обмінюватися даними між собою без участі Master'а.

Відсутність підтримки Multi-Master для RS-232/RS-485
На відміну від Profibus чи CAN, протокол Modbus не підтримує одночасну роботу кількох Master'ів.

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

Для чого використовується Modbus?

Modbus застосовується в різних сферах, де важлива надійна комунікація. Ось деякі з найпоширеніших застосувань Modbus:

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

  2. Автоматизація будівель
    У автоматизації будівель Modbus використовується для з'єднання систем HVAC (опалення, вентиляція та кондиціонування повітря), освітлення, охоронних систем та пристроїв енергетичного менеджменту. Протокол Modbus забезпечує комунікацію між цими системами, сприяючи більш ефективному управлінню будівлею.

  3. Системи енергетичного менеджменту
    У "розумних мережах" Modbus допомагає моніторити та контролювати споживання енергії. Modbus RTU та Modbus TCP збирають дані з аналізаторів мережі або лічильників, а потім ці дані використовуються для управління системами розподілу енергії.

  4. Управління водопостачанням і водовідведенням
    Modbus забезпечує комунікацію між датчиками, насосами та контролерами на станціях очищення води та водовідведення, забезпечуючи безперебійне функціонування цих систем.

Як перевірити зв’язок: корисний софт

Теоретичні знання про структуру кадрів Modbus — це лише половина справи. На практиці інженер часто стикається з питанням: «Чому немає зв’язку з контролером?». Щоб не гадати, чи проблема в кабелі, чи в налаштуваннях порту, чи в самому пристрої, існують перевірені часом утиліти. Вони дозволяють швидко «пінганути» мережу, перевірити відповіді від датчиків або зімітувати роботу пристрою, якого ще немає в наявності. Нижче декілька програм якими я особисто користуюся.

Rilheva modbus poll

Rilheva Modbus Poll — це проста й зручна утиліта для роботи з пристроями по протоколу Modbus. По суті, це інструмент для тестування, діагностики та налагодження Modbus-пристроїв (ПЛК, лічильників, частотників, датчиків тощо).

Що вміє

  • Працює з Modbus RTU (COM-порт) та Modbus TCP/IP
  • Читання та запис:
    • Coils
    • Discrete Inputs
    • Holding Registers
    • Input Registers
  • Підтримка стандартних функцій Modbus (01, 02, 03, 04, 05, 06, 15, 16)
  • Опитування регістрів у реальному часі
  • Відображення даних у різних форматах:
    • Int / UInt
    • Hex
    • Float (32-bit)
    • Float (64-bit)
  • Гнучкі налаштування таймінгів, ID пристрою, швидкості, парності тощо

Modbus Master

Modbus Master — це програмний інструмент для роботи з пристроями по протоколу Modbus, який виконує роль Master та дозволяє напряму взаємодіяти зі Slave-пристроями. Програма вміє підключатися по Modbus RTU та Modbus TCP/IP, читати й записувати Coils, Discrete Inputs, Holding та Input регістри, працювати зі стандартними функціональними кодами Modbus і відображати дані в різних форматах (цілі числа, Hex, Float).

Також програма підтримує ручне та циклічне опитування пристроїв, налаштування ID, таймінгів і параметрів з’єднання, що робить її зручною для діагностики, тестування та налагодження Modbus-обміну перед інтеграцією в PLC, HMI або SCADA-системи.

Хоча за специфікацією Modbus адреси можуть лежати в діапазоні від 1 до 247 і програма дозволяє виставити будь-яку адресу з цього діапазону, майте на увазі, що в програмі є баг — фактично вона працює лише з адресами від 1 до 127.

QModMaster

QModMaster — це один із найкращих безкоштовних інструментів із відкритим кодом (Open Source) для роботи з Modbus. Він побудований на базі графічної бібліотеки Qt та використовує потужний бекенд libmodbus, що робить його доступним не лише для Windows, а й для Linux.

Основні можливості:

  • Кросплатформність: Працює на Windows та Linux (що особливо важливо для розробників вбудованих систем та користувачів Raspberry Pi).
  • Підтримка режимів: Повноцінна робота з Modbus RTU (Serial) та Modbus TCP.
  • Моніторинг шини (Bus Monitor): Вбудоване вікно, яке показує «сирі» байти запитів та відповідей у форматі Hex. Це допомагає зрозуміти, як саме формується кадр протоколу.
  • Візуалізація даних: Підтримує різні формати відображення: Binary, Uint16, Int16, Uint32, Int32 та Float.
  • Масштабованість: Дозволяє налаштовувати Slave ID, адресу першого регістру, кількість регістрів та швидкість опитування (Scan Rate).

Переваги:

  • Повністю безкоштовна: Немає обмежень за часом роботи чи кількістю відкритих регістрів.
  • Відкритий код: Розробники можуть вивчати вихідний код програми, щоб зрозуміти принципи реалізації протоколу.
  • Простота: Не потребує встановлення (є portable-версії), що зручно для швидкої перевірки на різних комп'ютерах.

Це мій топ-3 інструментів для роботи з протоколом. Вибір конкретної програми залежить від вашого завдання, але маючи цей набір під рукою, ви зможете діагностувати та налаштувати практично будь-яку Modbus-мережу, незалежно від її складності.

Висновок

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

Незважаючи на стандартизацію, слід враховувати, що деякі виробники можуть мати відхилення у реалізації протоколу, зокрема в адресації регістрів та підтримці функціональних кодів. Тому при розгортанні систем Modbus важливо уважно вивчати документацію до обладнання та ретельно тестувати взаємодію між пристроями.

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

Коментарі

Додайте коментар...

Ім'я
E-mail (Не буде опублікований)
Ваш коментар
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Схожі статті

Авторизація
Немаєте акаунта? Реєстрація
Забыли пароль?
E-mail
Введите e-mail Вашей учетной записи, чтобы получить пароль.
Введите корректно e-mail!
viber-chatЧат «А2М» в Viber telegram-chatЧат «А2М» в Telegram
Telegram QR
💬 Актуальні ціни
завжди під рукою