Статьи » Разработки |
2015-10-05 в 23:13 (последнее изменение 2021-04-13 в 00:25)
Привет всем! Вот мы и дождались практической части по ModBUS. Я надеюсь, Вы прочтете сначала прошлую статью про этот протокол и узнаете чем он хорош и какая практическая польза от его использования может быть. Начнём с того, что я покажу и назову необходимые железки кроме стандартного набора ардуинщика. В первую очередь, для работы, нам нужно создать шину RS485 и подключиться к ней. В роли шины RS485 обычно используют витую пару для большей помехоустойчивости, но в примере шина 0.5 м и скорость используем 9600, так что нам побоку как помехи так и терминаторы=). В общем, шиной у нас будут стандартные соединительные провода для макетки. Для подключения ПК к шине - USB-RS485 переходничёк (на фото в разобранном виде внизу). Ардуинки же подключаем при помощи модулей, они вторые сверху. Или используя ADM485, или специализированный модуль MAX485. Все подобные схемы имеют 8 контактов, 4 из которых к ардуинке (к трём контактам), 2 к питанию и 2(A,B) - шина. Дальше на фото мы видим как проста схема подключения ADM485 к ардуинке. Следующее фото - Добавляем светодиод, которым будем баловаться. Втыкаем A и B. Цепляем отдельное питание для модуля - Конечное устройство готово. Теперь нам нужно скачать и установить библиотеку qModbus Master. Выставляем правильный порт, и скорость 9600. Код
void io_poll() { //первый бит первого регистра на ногу ledPin.
digitalWrite( ledPin, bitRead( au16data[0], 0 )); } Эта функция у нас вызывается из loop, в ней мы обрабатываем наш массив регистров, к которому имеет доступ мастер. Сейчас мы делаем только одно - берём из первого регистра первый бит и пихаем его в ledPin. Если в приложении открыть bus monitor и в нём нажать start, то можно посмотреть, что конкретно шлётся и что приходит в ответ. По аналогии, можно выставить или считать любой пин, задействовать АЦП и ШИМ, управлять сервоприводами. Тема модбаса на этом далеко не закрыта, и в одной из следующих статей мы напишем полноценную универсальную прошивку для конечных устройств на базе Arduino. Про ModBus https://ru.wikipedia.org/wiki/Modbus Исходники: Код
/* #include "ModbusRtu.h" //Задаём ведомому адрес, последовательный порт, выход управления TX // массив данных modbus void setup() { void io_setup() { void loop() { void io_poll() { Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте. Так же у нас есть Telegram канал. Вам понравился наш материал? Поделитесь с коллегами! Просмотров: 12774. Оценка статьи: 5.0 из 5. Уже оценило 3 читателя |
Всего комментариев: 1 | ||
|