Используем протокол ModBus с Arduino

Об этом проекте.

Modbus — стандартный протокол последовательной связи. В настоящее время стал общедоступным средством подключения промышленных электронных устройств. В Modbus RTU и Modbus ASCII интерфейс RS485 используется как физический уровень. Этот интерфейс можно использовать Arduino как Slave (а с некоторыми ограничениями и как Master) в приложениях Modbus. В качестве последовательной связи будем использовать плату RS422/RS485 Shield. Она предназначена для использования с Arduino UNO и другими совместимыми платами, такими как Arduino 101, STM Nucleo и т. д. Плата имеет гальваническую развязку между шиной RS485 и Arduino. Без такой изоляции возможно повреждение Arduino или неисправность устройства из-за больших расстояний шины RS485. Кроме того, имеется возможность подключить и полнодуплексный интерфейс — RS422.

Цель этой статьи — показать, как создать простое ведомое устройство Modbus на основе Arduino UNO. Будем использовать ПК в качестве мастера Modbus.

Демонстрация

Инструменты и материалы

  • Плата Arduino UNO
  • Плата RS485 Shield for Arduino
  • Любой USB-RS485-Адаптер для присоединения к ПК

Дополнительно:

  • Монтажная платаd
  • Кнопка
  • Светодиод красного цвета
  • Резистор 220 Ом
  • Резистор 10 кОм
  • Соединительные провода

Схема соединений для RS485


Схема очень проста. Необходимо просто подключить линии А и В адаптера USB-RS485 с такими же линиями платы. Линии Z и Y не используются в нашем случае. Для больших расстояний рекомендуется использовать витую пару.

Подключение Arduino (опция)

Рекомендуется добавить светодиод и кнопку для Arduino, чтобы увидеть некоторые эффекты связи Modbus. Это необязательно, но визуально будет лучше.

Монтажная плата, соединенная с Arduino UNO + RS485

Установка DIP-переключателей

Плата RS422/RS485 выполнена с тремя группами DIP-переключателей. Нужно установить эти DIP-переключатели для Modbus, как показано на рисунке ниже.

  • Группа 1: 1-Off 2-On 3-On 4-Off
  • Группа 2: 1-Off 2-Off 3-On 4-ON
  • Группа 3: 1-Off или On * 2-Off 3-Off 4-Off

* В зависимости от положения платы RS422/RS485 в сети Modbus нужно включить или выключить оконечный резистор. Переключите резистор в положение On только в том случае, если плата находится на конце шины. Во всех остальных случаях выключите оконечный резистор

Положение DIP-переключателей

Настройки перемычек

На плате есть 3 группы перемычек. Очень важно правильно выставить перемычку JP1, отвечающую за напряжение питания. Arduino UNO работает с напряжением 5V. Поэтому нужно установить JP1 на 5V (а для плат с питанием 3.3V, например, Arduino 101, в положение 3.3V).

Кроме того, установите перемычки для портов связи в верхнем левом углу, как показано на рисунке выше. Внутренний UART на портах 0 и 1 будет подключен в этом случае к интерфейсу RS485 платы.

И последнее, но не менее важное, необходимо установить перемычку для управляющего порта RX/TX. Мы не используем эту перемычку, потому что настроено автоматическое переключение RX/TX.

Установите программное обеспечение Modbus Tester на ПК

В нашем случае будем использовать ПК в качестве мастера Modbus. Вам нужно скачать Modbustester. После скачивания распакуйте zip-архив в новый каталог на вашем жестком диске. Откройте программное обеспечение и измените отмеченные поля, как показано на рисунке ниже. Вам необходимо подключить USB-RS485-адаптер к ПК. Выберите правильный COM-порт для этого адаптера в Modbustester.

Программное обеспечение Arduino

Загрузите прошивку в среду разработки Arduino для компиляции и программирования платы.

Пришло время проверить вашу работу!

Вы можете нажать кнопку «Read» в Modbustester. Эта команда будет читать 8 байтов памяти нашего нового ведомого устройства. В адресе 400008 вы можете найти статус кнопки. Адрес 400001 — 400006 содержит значения портов ADC.

С помощью кнопки «Write» вы можете управлять регистрами в подключенном устройстве. Вы можете записать 0 или 1 по адресу 400007, чтобы включить или выключить светодиод.

Код прошивки

Схема подключения для тестирования

Подписка
Уведомлять, если есть
guest

2 комментариев
oldest
newest
Inline Feedbacks
View all comments
dayhixida
dayhixida
4 лет назад

Хорошая статья!