Записки программиста Программирование и не только

29Окт/120

[Modbus] Функции 01-06

Скопирую себе описание функций протокола Modbus. Оригинал взят на сайте plc24.ru

Для начала функции

  • 01 Чтение статуса выходов
  • 02 Чтение статуса входов
  • 03 Read Holding Registers
  • 04 Read Input Registers
  • 05 Force Single Coil
  • 06 Preset Single Register

01 Чтение статуса выходов
ОПИСАНИЕ
Читает статуса ON/OFF дискретных выходов в подчиненном.

ЗАПРОС
Запрос содержит адрес начального выхода и количество выходов для чтения. Выхода адресуются начиная с нуля: выхода 1-16 адресуются как 0-15.

Ниже приведен пример запроса на чтение выходов 20-56 с подчиненного устройства 17.

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 01
Начальный адрес Hi 00
Начальный адрес Lo 13
Количество Hi 00
Количество Lo 25
Контрольная сумма (CRC или LRC)

ОТВЕТ
Статус выходов в ответном сообщении передается как один выход на бит.

Если возвращаемое количество выходов не кратно восьми, то оставшиеся биты в последнем байте сообщения будут установлены в 0. Счетчик байт содержит количество байт передаваемых в поле данных.

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 01
Счетчик байт 05
Данные(Выхода 27-20) CD
Данные(Выхода 35-28) 6B
Данные(Выхода 43-36) B2
Данные(Выхода 51-44) 0E
Данные(Выхода 56-52) 1B
Контрольная сумма (CRC или LRC)

02 Чтение статуса входов
ОПИСАНИЕ
Чтение ON/OFF состояния дискретных входов (ссылка 1Х) в пдчиненном.

ЗАПРОС
Запрос содержит номер начального входа и количество входов для чтения. Входа адресуются начиная с 0.

Ниже приведен пример запроса на чтение входов 10197-10218 с подчиненного устройства 17.

Запрос

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 02
Начальный адрес ст. 00
Начальный адрес мл. C4
Кол-во входов ст. 00
Кол-во входов мл. 16
Контрольная сумма

ОТВЕТ
Статус входов в ответном сообщении передается как один выход на бит.

Если возвращаемое количество входов не кратно восьми, то оставшиеся биты в последнем байте сообщения будут установлены в 0. Счетчик байт содержит количество байт передаваемых в поле данных.

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 02
Счетчик байт 05
Данные(Входы 10204-10197) AC
Данные(Входы 10212-10205) DB
Данные(Входы 10218-10213) 35
Контрольная сумма (CRC или LRC)

03 Read Holding Registers
ОПИСАНИЕ
Чтение двоичного содержания регистров (ссылка 4Х) в подчиненном.

ЗАПРОС
Сообщение запроса специфицирует начальный регистр и количество регистров для чтения. Регистры адресуются начина с 0: регистры 1-16 адресуются как 0-15.

Ниже приведен пример чтения регистров 40108-40110 с подчиненного устройства 17.

Запрос

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 03
Начальный адрес ст. 00
Начальный адрес мл. 6B
Кол-во регистров ст. 00
Кол-во регистров мл. 03
Контрольная сумма

ОТВЕТ
Данные регистров в ответе передаются как два бйта на регистр. Для каждого регистра, первый байт содержит старшие биты второй байт содержит младшие биты.

За одно обращение может считываться 125 регистров для контроллеров 984-Х8Х (984-685 и т.д.), и 32 регистра для других контроллеров. Ответ дается когда все данные укомплектованы.

Это пример ответа на запрос представленный выше:

Ответ

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 03
Счетчик байт 06
Данные (регистр 40108) ст. 02
Данные (регистр 40108) мл. 2B
Данные (регистр 40109) ст. 00
Данные (регистр 40109) мл. 00
Данные (регистр 40110) ст. 00
Данные (регистр 40110) мл. 64
Контрольная сумма

04 Read Input Registers
СОДЕРЖАНИЕ
Чтение двоичного содержания входных регистров (ссылка 3Х) в подчиненном.

ЗАПРОС
Запрос содержит номер начального регистра и количество регистров для чтения.

Ниже приведен пример запроса для чтения регистра 30009 с подчиненного устройства 17.

Запрос

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 04
Начальный адрес ст. 00
Начальный адрес мл. 6B
Кол-во регистров ст. 00
Кол-во регистров мл. 03
Контрольная сумма

ОТВЕТ
Данные регистров в ответе передаются как два бйта на регистр. Для каждого регистра, первый байт содержит старшие биты второй байт содержит младшие биты.

За одно обращение может считываться 125 регистров для контроллеров 984-Х8Х (984-685 и т.д.), и 32 регистра для других контроллеров. Ответ дается когда все данные укомплектованы.

Это пример ответа на запрос представленный выше:

Ответ

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 04
Счетчик байт 02
Данные (регистр 30009) ст. 00
Данные (регистр 30009) мл. 2A
Контрольная сумма

05 Force Single Coil
ОПИСАНИЕ
Установка единичного выхода (ссылка 1Х) в ON или OFF. При широковещательной передаче функция устанавливает все выходы с данным адресом во всех подчиненных контроллерах.

ЗАМЕЧАНИЕ
Функция может пересекаться с установкой защиты памяти и установкой недоступности выходов.

ЗАПРОС
Запрос содержит номер выхода для установки. Выходы адресуются начиная с 0. Выход 1 адресуется как 0.

Состояние, в которое необходимо установить выход (ON/OFF) описывается в поле данных. Величина FF00 Hex — ON. Величина 0000 — OFF. Любое другое число неверно и не влияет на выход.

В приведенном ниже примере устанавливается выход 173 в состояние ON в подчиненном устройстве 17.

Запрос

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 05
Адрес выхода мл. 00
Адрес выхода ст. AC
Данные ст. FF
Данные мл. 00
Контрольная сумма

ОТВЕТ
Нормальный ответ повторяет запрос.

Ответ

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 05
Адрес выхода мл. 00
Адрес выхода ст. AC
Данные ст. FF
Данные мл. 00
Контрольная сумма

06 Preset Single Register
ОПИСАНИЕ
Записывает величину в единичный регистр (ссылка 4Х). При щироковезательной передаче на всех подчиненных устройствах устанавливается один и тот же регистр.

ЗАМЕЧАНИЕ
Функция может пересекаться с установленной защитой памяти.

ЗАПРОС
Запрос содержит ссылку на регистр, который необходимо установить. Регистры адресуются с 0.

Величина, в которую необходимо установить регистр передается в поле данных. Контроллеры M84 и 484 используют 10-ти битную величину, старшие шесть бит заполняются 0. Все другие контроллерыиспользуют 16 бит.

В приведенном ниже примере в регистр 40002 записывается величина 0003 Hex в подчиненном устройстве 17.

Запрос

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 06
Адрес регистра мл. 00
Адрес регистра ст. 01
Данные ст. 00
Данные мл. 03
Контрольная сумма

ОТВЕТ
Нормальный ответ повторяет запрос.

Ответ

Имя поля Пример(Hex)
Адрес подчиненного 11
Функция 06
Адрес регистра мл. 00
Адрес регистра ст. 01
Данные ст. 00
Данные мл. 03
Контрольная сумма
Комментарии (0) Пинги (0)

Пока нет комментариев.


Leave a comment

Нет обратных ссылок на эту запись.