Статьи » Разработки |
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() {
Посмотрите еще эти статьи
Управляем вытяжкой на кухне пультом от телевизора на Arduino Вывод картинки на дисплей 128x64 Детектор микронаушников Ethernet shield w5100 таймер включения на веб странице Вывод различных данных на дисплей LCD 128x64 Подключение датчиков газа и дыма серии MQ к Arduino Не пропустите обновления! Подписывайтесь на нашу группу Вконтакте. Так же у нас есть Telegram канал. Вам понравился наш материал? Поделитесь с коллегами! Просмотров: 12233. Оценка статьи: 5.0 из 5. Уже оценило 3 читателя |
Всего комментариев: 1 | ||
|