(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Организация TCP/IP стека для МК на основе embedded module Tibbo

Источник: habrahabr

В данной обзорной статье речь пойдет об организации TCP/IP стека в вашем проекте на основе встраиваемых модулей от Tibbo Technology.

В большинстве случаев разработчики работают со своим МК через последовательный порт. Это не всегда удобно. Часто возникает задача "общаться" с устройством удаленно через TCP/IP стек. Проблема поднимается не впервые. Например, вот здесь  эта задача озвучена и решена с достаточно подробным описанием. В приведенной ссылке даже есть фото и краткое упоминание о модуле Tibbo EM100. Дело в том, что наша компания является официальным представителем Tibbo Technology в РФ. Поэтому немного обидно, что о нашем продукте упомянули вскользь, не раскрыв полного функционала и возможностей продукта. Я прекрасно знаю эту оранжевую коробочку под названием EM100, которая выпускается уже более 10 лет и которая используется на многих объектах наших бескрайних просторов. Но уже много воды утекло с момента релиза данного модуля. Попробуем создать TCP/IP стек для устройства на основе модуля Tibbo, параллельно рассмотрев возможности продукта.

Создание TCP/IP стека.

Для решения данной задачи нам понадобяться:

  • Embedded module Tibbo
  • Бесплатная прошивка с открытыми исходниками Serial Over Ip
  • Бесплатная утилита Device Explorer(в составе TIDE)
  • Бесплатный набор утилит Tibbo Device Server ToolKit (TDST)

Embedded Modules (EM) - это небольшие интеллектуальные модули, которые имеют собственный микропроцессор, минимально-необходимую обвязку для быстрого старта, различные встроенные протоколы. Как правило, в EM запущена собственная операционная система, которая не предназначена для общения с человеком. Цель использования EM - это в максимально короткие сроки и с минимальными затратами организовать тот или иной функционал в устройстве.

Семейство продукции Embedded modules от Tibbo Technology - это достаточно мощные модули, на которых уже реализованы физический уровень интерфейса 10/100 BaseT, организована полноценная работа со стеком протоколов TCP/IP, имеется от 1 до 4 последовательных портов UART на CMOS уровне (TTL совместимый). В продаже существуют модификации модулей с интегрированным разъемом Ethernet и без него. Для подключения последнего требуются внешние разъем и трансформаторы или разъем со встроенными трансформаторами. Размеры модулей варьируются, но в целом они не превышают (или превышают незначительно) разъем RJ45.

Я выбрал модель EM1206+RJ203, краткие характеристики:

  • Основан на высокопроизводительном 88МГц ASIC (T1000) контроллере.
  • 100BaseT со встроенной трансформаторной развязкой (при использовании RJ203).
  • До 1024КБ flash-памяти под прошивку, приложения и данные.
  • 2КБ EEPROM для хранения данных.
  • Часы реального времени (RTC)..
  • До 17 линий ввода/вывода общего назначения (включая 8 линий прерываний).
  • Линии контроля двух внешних светодиода состояния.
  • 4 встроенных светодиода:
  • зелезный и красный светодиоды состояния;
  • зеленый и желтый светодиоды статуса Ethernet.
  • Программно-контролируемый встроенный PLL.
  • Надежные схемы сброса питания.
  • Питание: 230мА @ 3.3В (100BaseT режим, PLL включен).
  • Размеры: 33.2x18.1x5.5мм.

Для полноценной и качественной работы с модулем, на плате необходимо предусмотреть: подачу стабилизированного питания (3.3В), микросхему сброса (желательно), в случае, если розетка Ethernet не реализована, распаять соответствующий разъем.

Последовательный порт, необходимо завести на контроллер вашего устройства. Как я писал выше, на модуле EM1206 реализован CMOS уровень (TTL совместимый), так что линии Rx/Tx можно подключать к ножкам МК напрямую.

Удобное ПО для работы

В программной части все еще проще. Запускаем Device Explorer, который автоматически обнаруживает модуль в сети (средствами посылки UDP broadcast запросов), заливаем прошивку. Процесс занимает не более 1 минуты.

Запускаем DS Manager, который позволяет задать параметры как последовательного интерфейса, так и параметры хоста:

Краткие характеристики прошивки Serial Over IP:

  • Полно- и полудуплексные режимы последовательного порта.
  • Доступные режимы: сервер, клиент и сервер/клиент.
  • Множество других опций для соединений последовательного порта и ethernet.
  • 8КБ на каждый буффер приема/передачи (в каждом направлении по одному буферу).
  • Конфигурация хранится в EEPROM.
  • Детальная индикация состояния через светодиоды.
  • Настройка через RS232 или ethernet (UDP команды, Telnet).
  • Удаленный контроль всех линий ввода/вывода (включая RTS, CTS, DTR и DSR).
  • "On-the-fly" комманды для конфигурации последовательного порта.
  • "Модемные" команды через RS232 для управления сетевым соединением.
  • Прямое управление ADSL модемом.
  • Поддержка UDP, TCP, ARP, ICMP (ping), DHCP, PPPoE, LCP протоколов.
  • Встроенный веб-интерфейс управления.

Теперь наше устройство прозрачно пробрасывает поток данных в сеть Ethernet и обратно. На удаленной машине можно установить драйвер виртуального COM порта.

Опционально, при использовании внешнего модуля расширения GA1000, устройства Tibbo позволяют передавать данные по беспроводному протоколу передачи данных WiFi (802.11 b/g). GA1000 элементарно подключается к контроллеру, через утилиту DS Manager можно настроить параметры подключения к точке доступа.

Помимо стандартных режимов работы в локальной сети, в embedded модулях Tibbo реализован объект, позволяющий автоматически подключаться к провайдеру по технологии PPPoE, что позволяет использовать устройство, как клиент, для подключения к удаленным серверам по всему миру. 

И это все? А где же интеллект, где же логика?

Embedded modules Tibbo являются свободно программируемыми, при этом процесс отладки и загрузки приложений осуществляется через сеть Ethernet. Программирование осуществляется на объектно-ориентированных событийных языках Tibbo Basic и Tibbo C. Для кодирования используется среда разработки от производителя Tibbo IDE. На устройствах запущена операционная система TiOS, которая обрабатывает приложение, написанное пользователем и скомпилированное в мнемокоды в режиме интерпретации. Модули имеют на борту линии ввода/вывода общего назначения (GPIO), что позволяет использовать embedded module как микроконтроллер.

На большинстве моделей реализован веб-сервер, который позволяет пользователю запрограммировать веб-интерфейс управления. На некоторых моделях реализованы часы реального времени RTC.
Таким образом, функционал модуля определяется только разработчиком. Если не достаточно прошивки SoI, откройте исходники и добавьте то, что нужно. Или с нуля создайте собственный проект. Например, реализовав протокол вашего контроллера и подцепив к проекту OPC Server (от Tibbo), устройство можно подключить к SCADA системе, а используя программную библиотеку AggreGate Agent появляется возможность подключения устройства к AggreGate Server.

Давайте рассмотрим простенький пример: необходимо сравнить полученный параметр от МК с константой, и если параметр превысил значение, передать предупреждение на сервер. Элементарно:
Инициализируем последовательный порт:

sub on_sys_init ser.num=0 'выбираем первый последовательный порт ser.rxbuffrq(4) 'Резервируем 4*256-16=1008 байт под буфер прием последовательного порта ser.txbuffrq(4) 'Резервируем 4*256-16=1008 байт под буфер передачи последовательного порта ..... sys.buffalloc 'Зарезервируем выделенные буферы памяти. ser.num=0 ser.flowcontrol=DISABLED 'Выключаем управление потоком ser.baudrate=12 'ser.div9600/(38400/9600) устанавливаем скорость 38400 ser.enabled=YES 'Включаем порт ....... end sub

Инициализируем сокет:

sub on_sys_init ..... sock.num=0 sock.rxbuffrq(4) sock.txbuffrq(4) ..... sys.buffalloc sock.num=0 sock.protocol=PL_SOCK_PROTOCOL_TCP sock.localportlist="2000,3000" sock.inconmode=PL_SOCK_INCONMODE_ANY_IP_ANY_PORT sock.targetip="192.168.1.100" sock.targetport="1001" end sub

Получим данные, сравним и отправим на сервер критическое событие:
sub on_ser_data_arrival 'Событие. Активируется при появлении данных на последовательном интерфейсе. dim s as string s = ser.getdata(ser.rxlen) If val(s) > Critical_value then sock.num = 0 sock.connect sock.setdata("Внимание! Превышение параметра: "+s) sock.send end if end sub

Как видно, программирование совсем не сложное.

Если вам не хочется возиться с распайкой, можно использовать готовые отладочные платы, например, EM500EV:

Достаточно подключить шлейф на интерфейсный разъем и вы получаете тот же функционал, что и при встраиваемом решении.

Замена МК на Tibbo embedded module.

Если в вашем проекте не требуется мгновенных реакций, то Tibbo EM можно использовать как главный микроконтроллер вашего устройства. Модули создавались для максимально удобной работы с ними. Свободное программирование на высокоуровневых языках Tibbo Basic и Tibbo C позволят сократить время на разработку прошивки в разы. Как пример, можно рассмотреть создание собственного контроллера доступа с реле для управления замками или подключения внешней сигнализации, веб-сервером, последовательными портами, беспроводной связью WiFi, клавиатурой и дисплеем (принципиальные схемы можно скачать здесь):

\

Последовательные порты могут использоваться для подключения считывателей RFID или магнитных карт. Реле служат для управления замками. Нужно открыть дверь? Для этого необходимо активировать реле. Из принципиальной схемы мы видим, что реле у нас "висит" на линии DTR0 (или GPIO5), нужно активировать эту линию:

.... io.num = PL_IO_NUM_5 io.enabled = YES io.state = LOW ....

Наконец, если вам интересно создание собственных устройств автоматизации, посмотрите обзор аппаратной платформы автоматизации TPS от Tibbo.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Обсудить материал в конференции Microsoft »
Обсудить материал в конференции Дизайн, графика, обработка изображений »
Написать редактору 
 Рекомендовать » Дата публикации: 23.12.2013 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft Visual Studio Professional 2017 Russian Academic OLP 1License NoLevel
Microsoft SQL Server Standard Core 2017 Sngl OLP 2Licenses NoLevel CoreLic Qualified
Microsoft Visual Studio Professional w/MSDN AllLng Software Assurance OLP 1 License No Level Qualified
Microsoft Office 365 Бизнес премиум. Подписка на 1 рабочее место на 1 год
Microsoft Visual Studio Professional w/MSDN AllLng License/Software Assurance Pack OLP 1 License No Level Qualified
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Реестр Windows. Секреты работы на компьютере
Программирование в AutoCAD
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Пишу программы на заказ профессионально (2279)
Пишу программы на заказ на языках Pascal (численные методы, списки, деревья, прерывания) под...
 
Ищу программиста для написания программы (19)
Ищу программиста ,владеющего Вижуал Бэйсик и программированием в Экселе, для написания...
 
Corel. Сохранение файла в старом формате. (26)
у меня есть горящий вопрос по Корелу и никто мне не может дать на него ответ. Я работаю в...
 
Настройка меню "Пуск" Windows 7 при помощи реестра (3)
Скажите пожалуйста, а как можно закрепить ярлыки программ с помощью твиков реестра в левой части...
 
Ищу программиста PYTHON (1)
Ищу программиста для написание программ python 3 + библиотека tkinter Есть данные в БД...
 
 
 



    
rambler's top100 Rambler's Top100