TGViewer
Codesys 3.5 Обучение программированию. Codesys 3.5 Обучение программированию. @codesys4 · 277 subscribers
Post #173 58
🔌 MODBUS С НУЛЯ
Часть 2/3. Регистры и функциональные коды

В первой части мы разобрали принцип обмена Modbus.

Теперь перейдём к самому важному — данным.

━━━━━━━━━━━━━━━━━━

🔹 Четыре области данных

В модели Modbus предусмотрены четыре типа объектов.

1️⃣ Coils

Дискретные значения, доступные для чтения и записи.

Размер одного значения — 1 бит.

Например:

0 = Выключено
1 = Включено


Могут использоваться для команд и дискретных состояний.

2️⃣ Discrete Inputs

Дискретные значения только для чтения через соответствующие функции Modbus.

Например:

• состояние датчика;
• концевой выключатель;
• сигнал готовности.

3️⃣ Input Registers

16-битные регистры для чтения.

Например:

• измеренная температура;
• давление;
• ток двигателя.

4️⃣ Holding Registers

16-битные регистры, которые поддерживают чтение и запись средствами Modbus.

Например:

• уставка частоты;
• параметры устройства;
• команды;
• технологические значения.

Фактические права доступа зависят от реализации устройства.

━━━━━━━━━━━━━━━━━━

🔢 Что означают 0xxxx, 1xxxx, 3xxxx, 4xxxx?

В документации часто встречается традиционная нотация:

0xxxx — Coils
1xxxx — Discrete Inputs
3xxxx — Input Registers
4xxxx — Holding Registers


Например:

00001
10001
30001
40001


Это обозначения областей данных.

Но цифра 4 в обозначении 40001 не передаётся как часть адреса регистра.

Тип области определяется функциональным кодом.

━━━━━━━━━━━━━━━━━━

⚠️ Почему 40001 может означать адрес 0?

Это один из самых частых вопросов начинающих.

В традиционной нотации:

40001 — первый Holding Register
40002 — второй
40003 — третий


Но в запросе Modbus используется адрес внутри области.

При нулевой адресации:

40001 → 0
40002 → 1
40003 → 2


Некоторые программы отображают адреса начиная с единицы.

Поэтому всегда проверяйте, какую адресацию использует программа настройки и документация устройства.

━━━━━━━━━━━━━━━━━━

🔧 Функциональные коды

Функциональный код сообщает серверу, какую операцию необходимо выполнить.

Основные функции:

FC01 — Read Coils
FC02 — Read Discrete Inputs
FC03 — Read Holding Registers
FC04 — Read Input Registers

FC05 — Write Single Coil
FC06 — Write Single Register

FC15 — Write Multiple Coils
FC16 — Write Multiple Registers


Например:

FC03 — чтение Holding Registers.

FC06 — запись одного Holding Register.

FC16 — запись нескольких Holding Registers.

━━━━━━━━━━━━━━━━━━

🧠 Практический пример

Допустим, в документации частотного преобразователя указано:

Register: 40010
Description: Frequency
Type: UINT16
Scale: 0.01


Для чтения используем:

Function: FC03
Address: 9
Quantity: 1


Адрес 9 соответствует регистру 40010 при нулевой адресации.

Получили:

RAW = 2500


Переводим в физическую величину:

2500 × 0.01 = 25.00 Hz


Таким образом, регистр содержит целое число, а масштабирование выполняется в программе.

━━━━━━━━━━━━━━━━━━

💡 Главное

Чтобы правильно прочитать значение по Modbus, необходимо знать:

• тип области данных;
• функциональный код;
• адрес регистра;
• количество регистров;
• формат значения;
• коэффициент масштабирования.

➡️ В следующей части: разберём устройство запросов Modbus RTU и TCP, а также типичные ошибки связи.

#Modbus #CODESYS #ОВЕН #ПЛК #АСУТП
More from @codesys4
  1. Oct 17, 2026⚡ MODBUS — ГЕРОЙ СЕТИ! 🎸🔥 Кто сказал, что промышленная автоматизация — это скучно? 😎 🎬…
  2. Oct 17, 2026photo post
  3. Oct 17, 2026🧠 РАЗБОР КОДА: MODBUS 🔌 Сможете правильно определить адрес регистра? Представьте, что вы…
  4. Oct 17, 2026🔌 MODBUS С НУЛЯ Часть 3/3. Запросы, ответы и диагностика Теперь посмотрим, что происходит…
  5. Oct 17, 2026🔌 MODBUS С НУЛЯ Часть 1/3. Как устройства обмениваются данными? Представьте промышленную…
  6. Oct 17, 2026🔌 MODBUS С НУЛЯ — разбираемся вместе! Работаете с ПЛК ОВЕН, CODESYS или промышленным обор…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →