Modbus Функції - Блог Домашнього Програміста

У цій статті я розповім які функції в протоколі Modbus і який формат вони використовують. Спочатку будуть показані функції формату для Modbus RTU. Наприкінці статті я покажу різницю у форматі для Modbus TCP та Modbus ASCII.

Невелика примітка. Усі приклади команд будуть дані у шістнадцятковому вигляді без приставки 0х. Наприклад, 05 означає 0х05, а 0А означає 0х0А (10 у десятковій системі). Всі байт йдуть зліва на право (найлівіший – перший байт, найправіший – останній байт).

Окремо буде показано формат запиту та формат відповіді. А також будуть наведені конкретні приклади.

Список команд:

Читання стану COIL регістру

Приклад команди:

Байти даних у відповіді зберігають значення з молодшого біта до старшого.

Реєстр 20 –> байт #3, біт #0

Реєстр 21 –> байт #3, біт #1

Реєстр 22 –> байт #3, біт #2

Реєстр 27 –> байт #3, біт #7

Також у байті #7 нам потрібно зберегти значення тільки для 5 регістрів. Тому ми використовуємо лише 5 молодших бітів, а старші 3, які не використовуються, встановлюємо 0.

Читання CONTACT регістру

Приклад команди:

Байти даних у відповіді зберігають значення з молодшого біта до старшого.

Реєстр 10197 –> байт #3, біт #0

Реєстр 10198 –> байт #3, біт #1

Реєстр 10199 –> байт #3, біт #2

Реєстр 10204 –> байт #3, біт #7

Також у байті #5 нам потрібно зберегти значення тільки для 6 регістрів. Тому ми використовуємо лише 6 молодших бітів, а старші 2, які не використовуються, встановлюємо 0.

Читання HOLDING регістру