Сеть приборов, протокол MODBUS
Сеть приборов, протокол MODBUS
Интерфейс RS-48
Стандарт ANSI TIA/EIA-485, более известный как RS485, определяет сбалансированный способ надёжной передачи данных на длинные расстояния в условиях промышленных помех. Также стандарт определяет топологию сети и описывает способы согласования полного сопротивления линии интерфейса и предоставляет результаты лабораторных тестов.
Физически, интерфейс RS485 является дифференциальным, обеспечивает многоточечные соединения и позволяет передавать и принимать данные в обоих направлениях.
Упрощённо, сеть интерфейса RS485 представляет собой приемопередатчики, соединенные при помощи витой пары - двух скрученных проводов (см. рис. 2.1).
Рис. 2.1 Структура сети RS485 |
В основе интерфейса RS485 лежит принцип дифференциальной передачи сигнала. Суть его заключается в передаче одного сигнала по двум проводам. Причем по одному проводу (условно A) идет оригинальный сигнал, а по другому (условно B) - его инверсная копия.
Таблица 2.1 Сигналы линий (A и B) интерфейса RS485 |
Типовая разница напряжений между линиями A и B передатчика равна 3В, минимальная 1.5В, максимальная 5В.
Разница напряжений между линиями A и B на приёмнике должна быть не менее 0.2В и абсолютная разница потенциалов относительно общего провода должно быть в диапазоне (–7…+12)В.
Таким образом, между двумя проводами витой пары всегда есть разность потенциалов. Именно этой разностью потенциалов и передается сигнал. Такой способ передачи обеспечивает высокую устойчивость к синфазной помехе. Максимальная скорость связи прибора по интерфейсу RS485 может достигать нескольких Мбод. Максимальное расстояние - 1200 метров. Если необходимо организовать связь на расстоянии больше чем 1200 метров или подключить больше устройств, чем допускает нагрузочная способность передатчика - применяют специальные повторители (репитеры). Типовое правило для расчёта максимальной длины линии связи таково: произведение скорости передачи в бодах на длину в метрах должно дать результат не более чем 108.
При значительных расстояниях между устройствами, связанными по витой паре или высоких скоростях передачи начинают проявляться так называемые эффекты длинных линий. Электромагнитный сигнал имеет свойство отражаться от открытых концов линии передачи и ее ответвлений. Фронт сигнала, отразившийся от конца линии, может исказить текущий или следующий сигнал. В таких случаях нужно подавлять эффект отражения.
Существуют стандартные решения этой проблемы (R, RC - терминаторы). У любой линии связи есть такой параметр, как волновое сопротивление Zв. Оно зависит от характеристик используемого кабеля и не зависит от его длины. Для обычно применяемых в линиях связи витых пар волновое сопротивление Zв составляет (90-120) Ом. Рассмотрим варианты:
- Если на удаленном конце линии, между проводниками витой пары включить резистор с номинальным омическим сопротивлением равным волновому сопротивлению линии, то электромагнитная волна, дошедшая до ≪тупика≫ поглощается на таком резисторе. Отсюда его названия - согласующий резистор или ≪терминатор≫ . Помимо достоинств этого метода (повышение скорости, увеличение длины и подавление отражений), есть и недостатки (дополнительная нагрузка на драйверы повышает энергопотребление, остальные ответвления линии продолжают вносить искажения, драйвер приёмника находится в неоднозначном состоянии: либо режим ожидания, либо режим приёма).
- Если на удалённом конце вместо резистора установить RC цепочку R=(90-120) Ом, С=1000 пФ, то можно устранить проблему повышенного энергопотребления и проблему неопределённости драйвера приёмника (для приёмников с функциями open-line и failsafe). Но из-за постоянной времени RC цепи, максимальная скорость передачи и длинна линии будут меньшими.
Эффект отражения и необходимость правильного согласования накладывают ограничения на конфигурацию линии связи (топология сети). Линия связи должна представлять собой один кабель витой пары. К этому кабелю присоединяются все приемники и передатчики (гирлянда). Расстояние от линии до микросхем интерфейса RS485 должно быть как можно короче, так как длинные ответвления вносят рассогласование и вызывают отражения. В оба наиболее удаленных конца кабеля включают терминаторы. Калибр витой пары достаточно не более AWG24.
В случае наличия клемм заземления у приборов, логичным является их заземление. Но из-за этого возможно возникновение паразитных токов во время кратковременных высоковольтных помех. Для устранения этого эффекта необходимо применять следующую схему заземления с ограничительными резисторами.
Рис. 2.2 Структура сети RS485 с заземлением |
Следует также сказать, что к линии интерфейса все устройства подключаются через специализированные микросхемы (драйверы интерфейса RS485). Они могут быть разных производителей и с различными техническими параметрами и как следствие различной стоимости. Эти драйверы в значительной степени могут определять эксплуатационные свойства приборов: дальность передачи, количество приборов в одном участке сети и надёжность передачи.
Протокол MODBUS
MODBUS – это протокол уровня приложений (уровень 7 модели OSI), что обеспечивает связь между устройствами, соединёнными различными каналами связи и сетями.
Де-факто, MODBUS является стандартом в сетях промышленного назначения с 1979 года. Он обеспечивает связь миллионам устройств во всём мире, в том числе и через Интернет. Есть различные реализации протокола:
- Для асинхронных беспроводных, оптических и проводных каналов связи (RS-232, RS-485, RS-422)
- Для TCP/IP (порт 502) через интернет
- MODBUS-PLUS - для высокоскоростных сетей с передачей меток (high speed token passing network)
Кроме того, разнородные участки сетей могут объединяться шлюзами (специальными конверторами).
Для асинхронных последовательных каналов связи существует две реализации MODBUS-SERIAL-LINE протокола МODBUS-RTU и MODBUS-ASCII (уровень 1 и 2 модели OSI). Разница между ними заключается в способе кодировки данных, способе синхронизации фреймов, и алгоритме обеспечения целостности данных. В нашем случае, в сети RS485 обмен данными реализован посредством протокола MODBUS-RTU. Далее по тексту будем рассматривать ситуацию только в этом аспекте.
MODBUS-SERIAL-LINE протокол – это протокол типа MASTER-SLAVE (протокол запросов-ответов). Ведущий в сети (MASTER) всегда один. Каждый подчинённый (SLAVE) должен иметь уникальный номер 1-247. Адрес 0 – это широковещательный запрос, адресованный сразу всем подчинённым. Таким образом, логически в одном участке сети может быть до 248 устройств (включая MASTER). Каждый запрос содержит код функции. Под MODBUS функциями понимают определённые сервисы предоставляемые подчинёнными ведущему. Таким образом, роль клиента играет MASTER, а роль сервера, с определённым набором функций-сервисов, SLAVE.
Функции протокола MODBUS
Каждый SLAVE может содержать уникальный набор функций-сервисов, но есть и ряд стандартных функций, которые подробно описаны в документе “MODBUS Application Protocol Specification” (www.modbus.org). Также полезная информация может быть найдена в документе “MODBUS over serial line specification and implementation guide” (www.modbus.org).
Поддерживаемые нами функции (см. табл. 4.1 - 4.2).
Таблица 4.1 Стандартные функции |
Таблица 4.2 Пользовательские функции |
В более ранних версиях приборов (до 2010г) были реализованы лишь пользовательские функции, но со временем стало понятно, что для обеспечения совместного использования приборов с ПЛК (минуя ПК) необходимы и стандартные функции.
Будьте внимательны и обратите внимание на то, что стандартные функции оперируют только со словами (16-бит) и в формате big-endian, но при этом формат контрольной суммы CRC16 little-endian! Поэтому, для исключения разночтений в описании протокола MODBUS, в части порядка следования байт контрольной суммы CRC16, стоит пользоваться нехитрым правилом: правильно посчитанная контрольная сумма неповреждённого пакета (с участием 2-ух последних байт CRC16) всегда равна нулю.
Правильный запрос: CRC16 (1 104 0 0 8 0 103 195) = 0
Неверный запрос: CRC16 (1 104 0 0 8 0 195 103) <> 0
Далее в таблицах 4.3-4.7 будут представлены развёрнутые описания пользовательских функций.
Стандартные функции (см. таб. 4.1) подробно описаны в документе “MODBUS Application Protocol Specification” ( www.modbus.org ).
Таблица 4.3 Пользовательская функция 100 |
Таблица 4.4 Пользовательская функция 101 |
Таблица 4.5 Пользовательская функция 102 |
Таблица 4.6 Пользовательская функция 104 |
Таблица 4.7 Пользовательская функция 108 |
Функция 108 «Служебные команды» имеет следующие коды подфункций (см. таб. 4.8).
Подфункции, возвращающие какие-либо данные, имеют префикс GET. Подфункции, не возвращающие данных, не содержат поля данных и, при удачном выполнении, возвращаются эхом.
Таблица 4.8 Коды подфункций функции 108 |
Таблица 4.10 Пользовательская функция 109 |
Подфункции 1 и 2, возвращающие номер тома всегда возвращают 4-х байтное значение типа DWORD.
Подфункции 3 и 4, возвращающие номера страниц могут возвращать как 2-х байтные (WORD), так и 4-х байтные (DWORD) значения, в зависимости от модели прибора.
Карты распределения памяти приборов
В следующих таблицах представлены карты распределения памяти приборов. Следует отметить тот факт, что в стандартных MODBUS функциях размеры типов данных могут отличаться от типов данных пользовательских функций (в большую сторону) в случае, если размер типа данных не кратен типу WORD (2 байта).
Порядок следования байт указан в столбце Order. Обозначение BE соответствует порядку big endian, а LE – little endian.
Операции, доступные для данной переменной, указываются в последнем столбце rw (read-write). R – разрешается только чтение, W – разрешается только запись, RW – разрешается, как чтение, так и запись.
Массивы обозначены словом array, а количество элементов массив указано в квадратных скобках [n].
Таблица 5.1 Используемые типы данных |
Таблица 5.2 Карта распределения памяти ВЕХА-С |
Таблица 5.3 Карта распределения памяти ВЕХА-Т |
Таблица 5.4 Карта распределения памяти ПАРАГРАФ PL20 |
Таблица 5.5 Карта распределения памяти OMIX-P94-MX-1 |
Однофазный прибор OMIX измеряет 7 параметров качества электроэнергии, в массивах памяти (array) они расположены в следующем порядке [0]-напряжение, [1]-ток, [2] – частота, [3] – полная мощность, [4]- активная мощность, [5] – реактивная мощность, [6] – cos(Φ).
Таблица 5.6 Карта распределения памяти СПРУТ ТВ-06-RS485 |
Таблица 5.7 Карта распределения памяти СПРУТ Т-02-RS485-ТС1 |
Таблица 5.8 Карта распределения памяти СПРУТ ТВ-03-RS485 |
Таблица 5.9 Карта распределения памяти прибора ОРДИНАР |
Использованные источники информации
- Electrical Characteristics of Balanced Voltage Digital Interface Circuits, ANSI/TIA/EIA-422-B-1994, Telecommunications Industry Association, 1994
- Electrical Characteristics of Generators and Receivers for Use in Balanced Digital Multipoint Systems, ANSI/TIA/EIA-485-A-1998, Telecommunications Industry Association, 1998
- Application Guidelines for TIA/EIA-485-A, TIA/EIA Telecommunications Systems Bulletin, Telecommunications Industry Association, 1998
- A Comparison of Differential Termination Techniques, Joe Vo, National Semiconductor, Application Note AN-903
- Data Transmission Design Seminar Reference Manual, 1998, Texas Instruments, literature number SLLE01
- Data Transmission Line Circuits Data Book, 1998, Texas Instruments, literature number SLLD001
- MODBUS Application Protocol Specification
- MODBUS over serial line specification and implementation guide