0% нашли этот документ полезным (0 голосов)
6 просмотров3 страницы

Modbus Lib

Modbus — это протокол обмена данными между устройствами, работающий по модели клиент-сервер, используемый в системах автоматизации. Существует несколько видов Modbus, включая RTU, ASCII и TCP, каждый из которых имеет свои особенности и области применения. Протокол поддерживает различные функции для чтения и записи данных, а также имеет специфическую структуру запросов и адресации.

Загружено:

planalexander2
Авторское право
© All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PDF, TXT или читать онлайн в Scribd
0% нашли этот документ полезным (0 голосов)
6 просмотров3 страницы

Modbus Lib

Modbus — это протокол обмена данными между устройствами, работающий по модели клиент-сервер, используемый в системах автоматизации. Существует несколько видов Modbus, включая RTU, ASCII и TCP, каждый из которых имеет свои особенности и области применения. Протокол поддерживает различные функции для чтения и записи данных, а также имеет специфическую структуру запросов и адресации.

Загружено:

planalexander2
Авторское право
© All Rights Reserved
Мы серьезно относимся к защите прав на контент. Если вы подозреваете, что это ваш контент, заявите об этом здесь.
Доступные форматы
Скачать в формате PDF, TXT или читать онлайн в Scribd

Конспект по Modbus

1. Что такое Modbus?


Modbus — это простой протокол обмена данными между устройствами. Придуман для
ПЛК, но теперь используется в разных системах автоматизации.

 Работает по модели клиент-сервер (или мастер-слейв в RTU)


 Один главный (мастер) — управляет опросом
 Остальные (слейвы) — отвечают на запросы

2. Виды Modbus
Вид Где используется Особенности
Последовательный порт (RS-485/RS- Бинарный формат, быстрый и
Modbus RTU
232) компактный
Modbus
RS-232, RS-485 Читаемый текстовый формат
ASCII
Modbus TCP Ethernet Работает через IP, быстро и удобно

3. Основные функции Modbus (Function Codes)


Код Название Описание
01 Read Coils Чтение битов (выходов)
02 Read Discrete Inputs Чтение битов (входов)
03 Read Holding Registers Чтение регистров (параметры/данные)
04 Read Input Registers Чтение регистров (только для чтения)
05 Write Single Coil Запись одного бита (вкл/выкл)
06 Write Single Register Запись одного регистра
15 (0F) Write Multiple Coils Запись нескольких битов
16 (10) Write Multiple Registers Запись нескольких регистров

4. Типы данных в Modbus


Тип Размер Назначение
Coil 1 бит Выход (вкл/выкл)
Discrete Input 1 бит Вход (только чтение)
Holding Register 16 бит Переменная для чтения/записи
Input Register 16 бит Только чтение, например, сенсоры
5. Структура Modbus-запроса
Modbus TCP-запрос (основное):

less
КопироватьРедактировать
| MBAP Header | Function Code | Data... |

Modbus RTU-запрос (основное):

КопироватьРедактировать
| Адрес | Функция | Данные | CRC |

Пример запроса:

 Прочитать 2 регистра с адреса 0x0001


o Функция: 03 (Read Holding Registers)
o Адрес: 0x0001
o Кол-во: 0x0002

6. Примеры адресов
Адрес (логический) Название Примерный физ. адрес в запросе
0xxxx Coils Function 01, адрес 0000
1xxxx Discrete Inputs Function 02, адрес 0000
3xxxx Input Registers Function 04, адрес 0000
4xxxx Holding Registers Function 03, адрес 0000

Важно: Устройства часто используют смещение (например, логический адрес 40001 =


физический 0000)

7. Практика: как читать и писать


Чтение регистра:

 Функция: 03 (holding register)


 Адрес: 0000
 Кол-во: 1

Запись регистра:

 Функция: 06
 Адрес: 0000
 Значение: 000A (например, 10)
8. Особенности
 Big Endian порядок байт (старший байт вперёд)
 TCP-порт по умолчанию: 502
 RTU скорость: обычно 9600 или 19200 бод
 Таймауты важны — не ответит вовремя → ошибка

9. Примеры в Python
python
КопироватьРедактировать
from [Link] import ModbusTcpClient

client = ModbusTcpClient('[Link]', port=502)


[Link]()

# Чтение 2 регистров с адреса 0


result = client.read_holding_registers(0, 2, unit=1)
print([Link])

# Запись значения 100 в регистр 0


client.write_register(0, 100, unit=1)

[Link]()

🔍 Что ещё изучить:


 Как работает CRC в Modbus RTU
 Отличие between Modbus и других протоколов (CAN, OPC-UA)
 Как анализировать Modbus-трафик (Wireshark, Modbus Poll)

Вам также может понравиться