[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 |
Контрольная сумма | — |
Нет обратных ссылок на эту запись.
Leave a comment