Май 11 2010

Протокол Modbus в устройствах на базе микроконтроллеров. Введение.

Протокол Modbus находит широкое применение в устройствах промышленной автоматики, давая возможность организовывать удалённый сбор данных и управление с помощью операторских панелей и SCADA-систем, а также подключать к вашему устройству различные модули расширения. В статье рассматривается применение устройств с протоколом Modbus, а также простейшая реализация протокола в микроконтроллерном устройстве.

Рис. 1. Операторская панель Weintek MT6070TV и промышленный контроллер ICP-DAS i-7188EGD. Передача данных происходит по протоколу Modbus.

Статья не является переводом официального стандарта Modbus, в ней рассматриваются практические вопросы применения протокола.

Введение

Можно выделить следующие разновидности протокола: Modbus RTU, Modbus ASCII и Modbus TCP. Первые две разновидности протокола как правило имеют в качестве  физической основы линию RS-485, а Modbus TCP работает в сети Ethernet.

Не рассматривая пока устройство протокола подробно, остановимся на его некоторых важнейших особенностях. В сети на протоколах RTU и ASCII (здесь и далее будем называть так Modbus RTU и Modbus ASCIIсоответственно) есть одно ведущее устройство (master), остальные устройства являются ведомыми (slave). Каждый ведомый имеет адрес. Адрес может находится в диапазоне 1-255, нулевого адреса быть не может. Обмен данными всегда инициирует ведущий, запрашивая данные от ведомых либо отдавая им команды. Посылка ведущего называется запросом (query). Приняв запрос, ведомое устройство посылает ответ (response). Адрес ведомого содержится в запросе, ответ на запрос обязателен для ведомого. Таким образом, транзакция протокола состоит из запроса и ответа.

В сети не могут быть два ведущих устройства. Линии RS-485 не имеют защиты от коллизий сети, то есть два устройства не должны начинать передачу одновременно, это приведёт к перегрузке выходов драйверов RS-485. Именно поэтому так важно соблюдать порядок передачи данных (запрос ведущего-ответ ведомого). Ведомых устройств теоретически может быть до 255, однако практически это количество ограничено нагрузочной способностью драйверов линии RS-485. В наихудшем случае эта нагрузочная способность не ниже 32 устройств на одной линии.

Если требуется организовать передачу данных только между двумя устройствами, одно из которых является ведущим, а другое — ведомым, возможно применение в качестве физической среды протокола RS-232.

Протоколом предусматриваются широковещательнве (broadcast) посылки, адресованные сразу всем устройствам сети. Именно для таких посылок зарезервирован нулевой адрес, но они применяются редко и в данной статье не рассматриваются.

Отличие протоколаModbus  TCP состоит в том, что ведущих устройств в сети может быть несколько, так как  в сетях Ethernet допустимы коллизии. В ряде случаев это может быть очень удобно, и ниже будут рассмотрены такие случаи.

Разновидности протокола Modbus не ограничиваются вышеперечисленными, существует, например, разновидность Modbus UDP, однако они не будут рассматриваться в данной статье в силу их малой распространённости.

Ссылки

English

Главный сайт — http://www.modbus.org/tech.php

Описание протоколов RTU и ASCII приведены в документе Modicon Modbus Protocol Reference Guide, который можно найти, например, здесь: http://www.modbustools.com/PI_MBUS_300.pdf.

На русском языке

Статья в Википедии http://ru.wikipedia.org/wiki/Modbus. Там же можно найти другие ссылки по протоколу Modbus, как на русском, так и на английском языке.

Заключение

После ознакомления с документацией на протокол создаётся впечатление, что он чрезвычайно сложен и его реализация в разрабатываемом устройстве является очень трудоёмкой задачей. Однако в дальнейшем станет ясно, что эта задача не так уж сложна.

Продолжение следует.

Владимир Татарчевский