Posts tagged ‘Data Transmission’

Протокол CanOpen

Недавно перед нами встала необходимость объединить несколько устройств в CAN сеть. Одно из устройств было реализовано на базе чипа от Beck и программировалось из CodeSys, другое на базе ARM контроллера, а главным устройством в сети должен был быть персональный компьютер с UNIX подобной ОС на борту. После изучения существующих промышленных протоколов я остановился на CanOpen. Этот протокол оказался очень гибким, он позволяет настроить различные режимы работы сети. Но главное CanOpen поддерживается в CodeSys и существует реализация на C под персональные компьютеры и контроллеры. В этой статье я расскажу, что такое CanOpen и как его запустить на персональном компьютере, используя библиотеку от http://www.canfestival.org.
Читать полностью »

Comment

Радиомодули rfm12b

При разработке навигационной системы мобильного робота нам были необходимы беспроводные радио модули. Сначала мы попробовали радио модули tr24. Но оказалось, что они передают на слишком малое расстояние. Следующими радио модулями, которые мы попробовали стали rfm12. Для работы с ними существует бесплатная библиотека для AVR. В этой статье я опишу как использовать эти радио модули и опишу наш опыт их использования.
Читать полностью »

Comment

ModBus RTU & PC

При создании программы, управляющей исполнительными механизмами робота TurboT и собирающей данные с его всех датчиков мне предстояло написать на C++ классы устройств: сервис платы(плата сбора данных), платы для управления двигателями ... проблема была в том, что в 2011 году все разработанные нами платы были переведены на стандартный протокол обмена ModBus. Мне предстояло либо написать код для мастера самостоятельно, либо использовать готовый код если он существует и устраивает меня... Я избрал второй вариант =). Библиотеку для реализации этого протокола можно скачать с сайта разработчика libmodbus.org. Библиотека написана на С и по заявлению разработчика библиотеки она поддерживает следующие операционные системы: Linux, Mac OS X, FreeBSD, QNX and Windows. На момент написания статьи библиотека представлена в двух версиях 2.0.3(stable) и 2.9.2/2.9.3(unstable). Хочу заметить, что интерфейсы старой и новой версий библиотеки сильно отличаются и автор рекомендует использовать более свежую версию, пусть еще и не до конца стабильную. Для большого количества задач все ее нестабильности не будут заметны. Я использовал версию библиотеки 2.9.2 в операционной системе opensuse 11.3, в качестве среды разработки я использовал IDE Qt Creator.

Читать полностью »

Комментарии (10)

Радиомодули TR24A.

Итак, предлагаю поставить жирную точку в деле освоения этих радиомодулей. В рунете много обсуждений на эту тему, несмотря на все многообразие участников до сих пор качественный код и схема соединения этого модуля с контроллером мною не была обнаружена. Исключение может составлять лишь код, написанный эмбедером A9d из Украины, к сожалению не представившемся. Признаюсь, это один из образцов документации, о том как работает модуль я понял (правда до сих пор не до конца) именно отсюда.  Я его выложу здесь. Немного кода оттуда использовано у меня в проекте. Кстати, слышал, что A9D работал над протоколом, но пока не обнаружил это в сети.

Почему именно он? Читать полностью »

Комментарии (38)

Serial port & boost

com-portПри разработке роботов регулярно нужно общаться с кучей внешних устройств, старый добрый COM-port не раз выручал разработчиков и заслуженно занимает почетное место среди портов передачи данных. Он нашел широкое распространение в самых разных областях и сейчас есть во многих современных компьютерах. Часто для разработки своих устройств или отладки работы устройств сторонних производителей приходиться работать с этим портом. Существует множество различных программ для работы с ним, в которых можно отправлять и принимать данные, выставляя настройки, вести простенькую отладку и тестирование, но что делать если необходимо написать свое приложение использующее этот порт? Какие средства существуют и что использовать? Этому и посвящена эта статья.
Существует замечательная библиотека, написанная на С++, ее название boost. Библиотека негласно является уже почти стандартом языка и содержит кучу полезного. Одно из ключевых преимуществ библиотеки - ее кроссплатформенность. Представьте, код работающий с "железом", можно легко скомпилировать как в Windows так и различных Linux системах. Это дает огромное преимущество этому инструменту по сравнению с платформенно зависимыми библиотеками.

Установку библиотеки я упущу - информации на эту тему хватает.

Для использования библиотеки необходимо подключить заголовочные файлы:

#include "boost/asio.hpp"

В make file необходимо подключить следующие библиотеки: Читать полностью »

1 комментарий

ModBus AVR. Стандарт против протоколов-самоделок.

Передо мной встала задача организации обмена данными между ведущим устройством и подчиненными, построенными на базе контроллеров AVR ATmega (16,32,162,128).
Большинство встраиваемых систем обмениваются данными с внешними устройствами. На великих просторах рунета очень много «полезных» советов, о том, как организовать обмен данными. Как правило, такие рекомендации сопровождаются советами типа: ….назначьте ID устройства, введите коды команд, ширину пакета данных, стартовые и стоповые байты. Особо продвинутые предлагают проверку контрольной суммы и прочие прелести, а зачастую на месте таких тем разгорается скандал о том, какая скорость обмена лучше и как сэкономить 10 рублей, сделав преобразователь UART-RS232 на 2х транзисторах. Здесь этого не будет! Основная мысль проста: найди стандарт передачи данных, то есть надежный протокол, поддерживаемый большим спектром программного обеспечения и пригодный к различным аппаратным платформам: UART, ZigBee и прочее. И таким является ModBus. По секрету скажу, есть случаи, когда ModBus не удовлетворяет потребностям, и, как правило, это связано с быстродействием протокола. В данной статье не будет рассмотрен ModBus TCP.
Modbus был разработан компанией Modicon (в настоящее время принадлежит Schneider Electric) для использования в её контроллерах с программируемой логикой. Впервые спецификация протокола была опубликована в 1979 году Адаптированное к пониманию описание пакета протокола: Читать полностью »

Комментарии (4)