Основные сведения об интерфейсе RS-485
Интерфейс RS-485 подразумевает использование исключительно топологии типа «шина» (топологии типа «звезда» и «кольцо» не описаны в стандарте).
В сети может присутствовать только одно Master-устройство, которое отсылает запросы и принимает ответы от подчиненных Slave-устройств. Slave-устройства не могут являться инициаторами обмена.
Число Slave-устройств в сегменте сети не должно превышать 32. Сегменты могут быть соединены повторителями (например, ОВЕН АС5), но следует учитывать, что так как опрос всех устройств происходит последовательно, то время одного полного цикла опроса может значительно увеличиться. Общее ограничение числа Slave-устройств в сети для протокола Modbus – 247.
На первом и последнем устройстве в сети рекомендуется устанавливать согласующий резистор (терминатор) с сопротивлением 120 Ом.
Для линий связи RS-485 необходимо использовать экранированный кабель с витой парой, предназначенный для промышленного интерфейса RS-485 с волновым сопротивлением 120 Ом (например, КИПЭВ). Экран кабеля должен быть соединен с функциональной землей только в одной точке.
Некоторые устройства имеют встроенные резисторы подтяжки интерфейса RS-485. Информация и рекомендации по их использованию приведены в руководстве по эксплуатации на соответствующие приборы.
Основные сведения о протоколе Modbus
Modbus – открытый коммуникационный протокол, основанный на архитектуре Master-Slave (ведущий-ведомый). Спецификация протокола доступна на сайте Modbus Organization.
Master (мастер, ведущее устройство) является инициатором обмена и может считывать и записывать данные в Slave-устройства.
Slave (слэйв, подчиненное устройство) отвечает на запросы Master-устройства, но не может самостоятельно инициировать обмен.
Существуют две основные реализации протокола:
Modbus Serial для передачи данных с использованием последовательных интерфейсов RS-232/RS-485
Modbus TCP для передачи данных через сети TCP/IP.
Если для работы используют протокол Modbus RTU с интерфейсом RS-232/RS-485, то в сети может присутствовать только одно Master-устройство и несколько (до 247) Slave-устройств. Адрес 0 используется для широковещательной рассылки (команд записи, которую получат все Slave-устройства).
У протокола Modbus TCP нет явного ограничения на количество Master- и Slave-устройств. Кроме того, устройство может одновременно выполнять функции Master и Slave.
Запрос Master-устройства к Slave-устройству содержит следующие данные:
Slave ID (адрес Slave-устройства);
Код функции, применяемой к Slave-устройству;
Данные – адрес первого регистра и их количество (в случае записи – также записываемые значения);
Контрольная сумма.
Ответ Slave-устройства имеет схожую структуру.
Запрос Master-устройства представляет собой обращение к одной из областей памяти Slave-устройства с помощью определенной функции. Область памяти характеризуется типом хранящихся в ней значений (биты/регистры) и типом доступа (только чтение/чтение и запись). Стандарт Modbus определяет четыре области памяти.
Области данных протокола Modbus
Область данных | Обозначение | Тип данных | Тип доступа |
---|---|---|---|
Coils (Регистры флагов) | 0x | BOOL | Чтение/запись |
Discrete Inputs (Дискретные входы) | 1x | BOOL | Только чтение |
Input Registers (Регистры ввода) | 3x | WORD | Только чтение |
Holding Registers (Регистры хранения) | 4x | WORD | Чтение/запись |
Каждая область памяти состоит из определенного (зависящего от конкретного устройства) количества ячеек. Каждая ячейка имеет уникальный адрес. Для конфигурируемых устройств (таких как ТРМ, ПЧВ и т. д.) производитель предоставляет карту регистров, в которой содержится информация об адресах и типах параметров устройства. Для программируемых устройств пользователь формирует такую карту самостоятельно с помощью среды разработки. Существуют устройства, в которых сочетаются оба рассмотренных случая – у их карты регистров есть фиксированная часть, которую пользователь может дополнить в соответствии со своей задачей (но адреса ячеек не должны пересекаться).

Функция определяет операцию (чтение/запись) и область памяти, в которой эта операция будет выполняться. Ниже приведен список наиболее часто используемых функций.
Основные функции протокола Modbus
Код функции | Имя функции | Команда |
---|---|---|
1 (0x01) | Read Coil Status | Чтение значений из регистров флагов |
2 (0x02) | Read Discrete Inputs | Чтение значений из дискретных входов |
3 (0x03) | Read Holding Registers | Чтение значений из регистров хранения |
4 (0x04) | Read Input Registers | Чтение значений из регистров ввода |
5 (0x05) | Write Single Coil | Запись значения в один регистр флага |
6 (0x06) | Write Single Register | Запись значения в один регистр хранения |
15 (0x0F) | Write Multiple Coils | Запись значений в несколько регистров флагов |
16 (0x10) | Write Multiple Registers | Запись значений в несколько регистров хранения |

Запрос к Slave-устройству может быть одиночным или групповым.
При одиночном запросе Master-устройство считывает каждый из параметров Slave-устройства отдельной командой. При групповом опросе Master-устройство считывает одной командой сразу несколько параметров, адреса которых в карте регистров расположены строго последовательно и не имеют разрывов.
Групповой опрос позволяет уменьшить трафик в сети и время, затрачиваемое на опрос устройства, но в некоторых случаях его нельзя применять (или можно, но с ограничениями) из-за индивидуальных особенностей устройства.
