Modbus (автоматизація будівель)

Modbus це відкритий протокол клієнт-сервер, що дозволяє контролерам читати й записувати дані пристроїв через послідовну шину RS-485 або Ethernet.

Modbus — це відкритий протокол обміну повідомленнями, який дозволяє контролеру читати та записувати дані, що зберігаються всередині польових пристроїв. Він працює через послідовну шину RS-485, відому як Modbus RTU, або через Ethernet, відомий як Modbus TCP. Деякі інвертори фотоелектричних (PV) систем і лічильники енергії підтримують його. Наприклад, інвертор Fronius GEN24 працює з обома варіантами та передає дані від лічильника Fronius Smart Meter.

Що таке Modbus і звідки він походить?

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

У старіших документах використовуються терміни «майстер» (master) і «підлеглий» (slave). Керівництво Modbus over Serial Line досі вживає їх, тоді як специфікація прикладного протоколу використовує терміни «клієнт» і «сервер».

Як Modbus RTU працює на послідовній шині?

Modbus RTU — це послідовний варіант протоколу. Керівництво щодо послідовної лінії називає найпоширенішим дворядний інтерфейс RS-485. Режим RTU є обов'язковим для кожного пристрою, а режим ASCII — необов'язковим. Режим передачі та налаштування послідовного порту мають бути однаковими для всіх пристроїв на одній лінії.

Транзакцію завжди починає один майстер. На лінії можуть працювати до 247 підлеглих пристроїв, і кожен отримує унікальну адресу від 1 до 247. Підлеглий пристрій ніколи не надсилає дані без запиту майстра. Кожен кадр закінчується перевіркою CRC, тож приймач може відхилити пошкоджене повідомлення. Майстер, який опитує інвертор і лічильник на одному кабелі, надсилає запит, чекає на відповідь і лише після цього звертається до наступного пристрою.

Як Modbus TCP додає заголовок Ethernet?

Modbus TCP передає ті самі дані запитів і відповідей у межах з'єднання TCP/IP через зареєстрований порт 502. Кожне повідомлення починається із заголовка MBAP довжиною 7 байтів. Він містить ідентифікатор транзакції, який пов'язує запити з відповідями, ідентифікатор протоколу, що для Modbus дорівнює нулю, поле довжини та ідентифікатор пристрою. Шлюз використовує ідентифікатор пристрою, щоб звернутися до пристрою, підключеного за ним через послідовну лінію. Таблиця порівнює два варіанти.

ХарактеристикаModbus RTUModbus TCP
ТранспортПослідовна лінія, найчастіше дворядний RS-485TCP/IP через Ethernet
Адресація пристроївАдреса підлеглого пристрою від 1 до 247 на одній шиніIP-адреса та ідентифікатор пристрою за шлюзом
Перевірка помилокCRC в кінці кожного кадруПоля CRC в заголовку MBAP немає. Кадр Ethernet містить власний CRC-32
Зареєстрований портНе застосовуєтьсяTCP-порт 502
Максимальний розмір повідомлення256 байтів на послідовній лінії260 байтів через TCP

Які дані може надавати пристрій Modbus?

Специфікація визначає чотири таблиці даних. Дискретні входи та котушки зберігають окремі біти. Вхідні регістри та регістри збереження зберігають 16-бітні слова. Дискретні входи та вхідні регістри доступні лише для читання. Клієнт може записувати котушки та регістри збереження. Протокол нумерує котушки, дискретні входи та регістри з нуля. Котушки з номерами від 1 до 16 у посібнику мають адреси від 0 до 15 у мережі. Блок даних протоколу містить не більше 253 байтів, тож один запит на читання повертає обмежений блок значень.

Таблиця данихРозмірДоступ
Дискретні входиОдин бітЛише читання
КотушкиОдин бітЧитання і запис
Вхідні регістри16-бітне словоЛише читання
Регістри збереження16-бітне словоЧитання і запис

Як PV-інвертори, лічильники та теплові насоси використовують Modbus?

Керівництво Fronius GEN24 показує, як це виглядає для інвертора. Інвертор пропонує Modbus TCP через Ethernet і Modbus RTU через RS-485. Він містить блоки регістрів для даних інвертора та для даних лічильника. Підключений лічильник енергії можна опитувати через ідентифікатор пристрою Modbus, який можна налаштувати. Домашній контролер може зчитувати ці значення та використовувати їх у своїй логіці керування.

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

Чим Modbus відрізняється від BACnet і KNX?

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

ПитанняModbusBACnet
Що визначає протокол?Формат повідомлень, коди функцій і таблиці данихОб'єкти зі стандартними властивостями
Хто надає значенню зміст?Виробник пристрою, у переліку регістрівТип об'єкта та його властивості
Як пристрій описує себе?Ніяк. Це робить перелік регістрів у посібникуЙого об'єкт пристрою перелічує об'єкти та служби, які він підтримує

KNX — це третій протокол. Асоціація KNX описує його як відкритий стандарт і серед категорій проєктів вказує сімейні будинки. Система автоматизації будівлі може поєднувати кілька протоколів, а шлюз їх з'єднує. Modbus — один зі способів передати показники PV-інвертора або розумного лічильника до такої системи.

Що перевірити перед підключенням пристроїв Modbus?

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

Безпеці також варто приділити увагу. Організація Modbus публікує окремий протокол безпеки Modbus Security Protocol, який поєднує Transport Layer Security (TLS) із традиційним протоколом Modbus. Для автентифікації він використовує сертифікати X.509v3. Організація Modbus позначає документ про послідовну лінію 1996 року як застарілий, тож для будь-якої нової установки RS-485 використовуйте керівництво щодо послідовної лінії V1.02.

Часті запитання

Чи те саме Modbus, що й BACnet?
Ні. Modbus передає коди функцій і таблиці даних, а значення кожного регістра визначає виробник пристрою. BACnet описує об'єкти зі стандартними властивостями, тож пристрій сам описує свої дані в мережі.
Чому адреса регістра в моїй карті Modbus відрізняється на одиницю?
Протокол нумерує регістри та котушки (coils) з нуля, тоді як у посібниках їх часто нумерують з одиниці. Регістри з номерами від 1 до 16 у посібнику мають адреси від 0 до 15 у самому протоколі. Перш ніж вписувати адресу в контролер, прочитайте примітку про нумерацію в документації.
Чи достатньо надійний Modbus для домашньої системи енергопостачання?
Сам по собі ні. Традиційний протокол Modbus не має захисту TLS. Організація Modbus публікує Modbus Security Protocol, який поєднує TLS із протоколом і використовує сертифікати X.509v3, тому уточніть, чи підтримують це ваші пристрої.
Чи потрібен шлюз, щоб підключити пристрої Modbus RTU до Ethernet?
Так, якщо контролер має лише Ethernet, а пристрої працюють на шині RS-485. Шлюз перетворює між Modbus TCP і Modbus RTU. Ідентифікатор пристрою (unit identifier) у заголовку TCP визначає, який послідовний пристрій отримає запит.
Чи можуть фотоелектричний (PV) інвертор і лічильник енергії використовувати одне з'єднання Modbus?
Можуть, якщо обидва підтримують Modbus RTU і кожен має унікальну адресу на спільній шині RS-485. Деякі інвертори, наприклад Fronius GEN24, також зчитують підключений лічильник і передають його дані далі через власний інтерфейс Modbus. Перевірте в посібниках списки регістрів і налаштування.
Чи підтримує мій тепловий насос Modbus?
Це залежить від моделі та її контролера. Запитайте у виробника список регістрів саме вашої моделі. Якщо виробник не публікує список регістрів, плануйте інший спосіб зчитування його даних.

Джерела

  1. MODBUS Application Protocol Specification V1.1b3 · Modbus Organization · Introduction (de facto standard since 1979), 1.1 Scope (OSI level 7), data model table, 4.1 PDU and ADU sizes, coils addressed from zero
  2. MODBUS over Serial Line Specification and Implementation Guide V1.02 · Modbus.org · 2.1 Master/slave principle, 2.5 Transmission modes, RS-485 interface
  3. MODBUS Messaging on TCP/IP Implementation Guide V1.0b · Modbus Organization · 3.1.3 MBAP Header description, port 502, section on error detection
  4. Specifications and Implementation Guides · Modbus Organization · Specification list
  5. Fronius GEN24: Modbus TCP and RTU · Fronius International GmbH · Modbus TCP and RTU operating instructions
  6. The Language of BACnet: Objects, Properties and Services · BACnet Committee website, article by Bill Swan (Alerton Technologies) · Objects, Device object
  7. KNX: One standard. Every brand. Every system. · KNX Association · Home page