
- •Технические характеристики интерфейса rs-485
- •Общее описание протокола Modbus rtu
- •Адресация данных в протоколе Modbus rtu
- •Контроль ошибок в протоколе Modbus rtu
- •Rtu фрейм
- •Логические ошибки
- •Стандартные коды ошибок
- •Стандартные коды функций протокола Modbus
- •0X10 Preset Multiple Registers (Установка значений в несколько регистров)
- •0X03 Read Holding Registers (Чтение значений из нескольких регистров)
- •0X06 Preset Single Register (Установка значения в один регистр)
- •0X01 Read Coil Status (Чтение значений из нескольких регистров флагов)
- •0X0f Force Multiple Coils (Запись значений в несколько регистров флагов)
- •0X05 Force Single Coil (Запись значения в один флаг регистра флагов)
- •0X50 Set date and time (Установка даты и времени)
- •Ссылки на используемые в статье источники
- •Утилиты
- •Правильная разводка сетей rs-485
- •Что такое витая пара и почему она используется?
- •Волновое сопротивление витой пары
- •Число витых пар на каждый передатчик
- •Согласующие резисторы
- •Максимальное число передатчиков и приемников в сети
- •Примеры правильных сетей
- •Один передатчик, один приемник
- •Неправильное расположение терминатора
- •Составные кабели
- •Длинные ответвители
0X06 Preset Single Register (Установка значения в один регистр)
Тип адресации 4x
Ниже приведены примеры команда ведущего устройства (таблица 3-2) и ответ ведомого (таблица 3-3):
Направление передачи |
00 адрес подчиненного устройства |
01 номер функции |
02 Адрес ст. байт |
03 Адрес мл. байт |
04 Данные ст. байт |
05 Данные мл. байт |
06 CRC мл. байт |
07 CRC ст. байт |
Master→Slave |
0x01 |
0x06 |
0x00 |
0x01 |
0xFF |
0xFF |
0xD9 |
0xBA |
Таблица 3-6. Пример установки значения в один регистр |
Направление передачи |
00 адрес подчиненного устройства |
01 номер функции |
02 Адрес ст. байт |
03 Адрес мл. байт |
04 Данные ст. байт |
05 Данные мл. байт |
06 CRC мл. байт |
07 CRC ст. байт |
Slave→Master |
0x01 |
0x06 |
0x00 |
0x01 |
0xFF |
0xFF |
0xD9 |
0xBA |
Таблица 3-7. Ответ на команду установки значения в один регистр |
0X01 Read Coil Status (Чтение значений из нескольких регистров флагов)
Тип адресации 0x
Запрос:
Состоит из адреса флага и количества считываемых флагов. Адресация флагов начинается с 0, количество флагов с 1.
Ответ:
Значение флагов передается в одном бите в поле "Данные". Трактовка флагов: 1 = ON; 0 = OFF. 0-й бит первого байта данных содержит значение флага указанного в поле "Адрес". Если запросить состояние одного флага, то в младшем бите будет возвращено значение флага, а все остальные старшие биты заполнены нулями.
Ниже приведены примеры запроса ведущего устройства (таблица 3-6) и ответ ведомого (таблица 3-7). В примере запрашивается состояние 9 флагов с адреса 1. В ответе содержится 2 байта данных, для большей ясности будем считать что все запрашиваемые флаги находятся в состоянии ON, а все остальные в состоянии OFF.
Направление передачи |
00 адрес подчиненного устройства |
01 номер функции |
02 Адрес ст. байт |
03 Адрес мл. байт |
04 Кол. флагов ст. байт |
05 Кол. флагов мл. байт |
06 CRC мл. байт |
07 CRC ст. байт |
Master→Slave |
0x01 |
0x01 |
0x00 |
0x01 |
0x00 |
0x09 |
0x |
0x |
Таблица 3-8. Пример чтения значения из одного регистра флагов |
Направление передачи |
00 адрес подчиненного устройства |
01 номер функции |
02 Количество байт |
03 Данные (флаги 0-7) |
04 Данные (флаги 8-15) |
05 CRC мл. байт |
06 CRC ст. байт |
Slave→Master |
0x01 |
0x01 |
0x02 |
0xFF |
0x01 |
0x |
0x |
Таблица 3-9. Пример ответа на запрос чтения значения из одного регистра флагов |