Беспроводные сенсорные сети: эмуляция работы

Часть 4

М.В.Сергиевский, С.Н.Сыроежкин

Эмулятор TOSSIM

Принципы работы TOSSIM

Сетевая и радиомодели

Средства связи с внешними приложениями

Приложение TinyViz

Использование эмулятора TOSSIM

 

Беспроводные сенсорные сети (БСС) состоят из микрокомпьютеров — мотов, снабженных сенсорными датчиками и приемопередающими устройствами, работающими в радиодиапазоне. Питание мота осуществляется от небольшой батареи. Моты применяются для сбора и первичной обработки сенсорных данных, которые они передают друг другу. Структура сенсорной сети формируется автоматически таким образом, чтобы в конечном счете все сенсорные данные были переданы в корпоративную сеть для дальнейшей обработки. Как уже отмечалось (см. КомпьютерПресс № 8’2008), разработка программного обеспечения для мотов осуществляется с помощью специальных средств, таких как операционная система TinyOS и язык программирования NesC. Компилируются написанные приложения посредством специальных программ — кросскомпиляторов на обычных ПК, а затем загружаются на беспроводные узлы. Для полноценного тестирования ПО, разработанного для БСС, нужна сеть, содержащая большое количество сенсорных узлов. Развертывание такой сети связано с серьезными затратами. Выходом из положения является использование специальных программ-эмуляторов. Рассмотрим эмулятор TOSSIM (TinyOS SIMulator), разработанный в рамках одного проекта c TinyOS и входящий в стандартный набор инструментальных средств разработки приложений для этой операционной системы (www.tinyos.net).

Эмулятор TOSSIM

Как и в большинстве других ОС, в TinyOS основным управляющим механизмом является событие. Событие сигнализирует о получении показаний сенсора, о поступлении пакета данных по беспроводной связи, о срабатывании таймера или о завершении вычислений. Обработка аппаратного события лежит в основе всех операций в TinyOS. Таким образом, для моделирования работы узлов БСС необходимо уметь имитировать происходящие на них аппаратные события. Таким образом, основная задача TOSSIM — эмуляция событий для БСС, моты которой работают под управлением TinyOS. TOSSIM устанавливается на обычный ПК вместе с набором инструментальных средств, необходимых для создания, компиляции, установки и отладки приложений для БСС. Работа с этими инструментами осуществляется с помощью командного интерфейса, характерного для ОС UNIX.

Приведем общие характеристики эмулятора TOSSIM:

  • масштабируемость — эмулятор может моделировать работу как отдельных мотов, так и огромных сетей, состоящих из нескольких тысяч узлов;
  • полнота — эмулятор в состоянии моделировать различные схемы взаимодействия элементов БСС, причем не только алгоритмы и сетевые протоколы, но и изменяющуюся структуру сенсорной сети;
  • точность — эмулятор может представлять поведение сети с необходимой точностью. Определение точного времени наступления событий важно как для анализа, так и для тестирования приложений для БСС;
  • достоверность — эмулятор реализует адекватный переход от моделируемой к реальной среде выполнения приложения, предоставляя разработчику возможность тестировать код, который предназначен для реального оборудования.

В состав эмулятора TOSSIM (рис. 1) входят следующие элементы:

средство встраивания самого тестируемого приложения TinyOS в структуру эмулятора;

  • очередь событий;
  • набор программных компонентов, которые заменяют соответствующие аппаратные компоненты реальных мотов;
  • механизмы описания моделей радиоканалов и аналого-цифровых преобразователей (ADC);
  • средства связи, предоставляющие возможность внешним программам взаимодействовать с эмулятором.

 

Рис. 1. Архитектура эмулятора TOSSIM

Принципы работы TOSSIM

Средство встраивания приложения TinyOS в структуру эмулятора позволяет моделировать работу приложений, написанных для реальных мотов. Компилятор, входящий в состав TOSSIM, заменяет несколько низкоуровневых компонентов приложения, которые взаимодействуют с аппаратными ресурсами мота, компонентами, взаимодействующими с программными реализациями этих устройств в эмуляторе. Благодаря этому эмулятор выполняет тот же код, что и реальные сенсорные узлы.

TOSSIM преобразует прерывания компьютера в события эмулятора и выстраивает их в очередь; эта очередь событий эмулятора управляет выполнением приложения TinyOS для отдельного моделируемого мота. Другими словами, сгенерированное событие эмулятора в очереди является заменителем аппаратного прерывания для моделируемого мота. Возникающее событие вызывает обработчик прерывания, который посылает сигналы событиям и вызывает команды TinyOS, имитируя то, что происходит в реальных мотах. Эти события и команды TinyOS запускают задачи и инициируют дальнейшую генерацию событий эмулятора.

Для определения момента наступления события в TOSSIM используются внутренние часы, работающие с тактовой частотой 4 МГц. Каждое событие происходит строго в свое время, выполняется немедленно и связано с определенным мотом. Поскольку на всех мотах выполняется одинаковая программа, при моделировании возможна искусственная синхронизация их работы. Для предотвращения подобной ситуации эмулятор запускает программу на каждом моделируемом моте с некоторой задержкой.

В TOSSIM переменные, описывающие компоненты мота (а они одни и те же для всех мотов), представляются в виде массивов. Элементом такого массива является переменная отдельного моделируемого узла, индекс которого равен индексу этого элемента в массиве. Когда ядро эмулятора обрабатывает событие, в глобальную переменную-состояние устанавливается индекс мота, работающего в текущий момент. Этот индекс используется для выборки из массивов данных тех элементов, которые относятся к активному узлу.

В таблице представлен отрывок кода TinyOS, результирующий код на языке C и код для эмулятора.

Сетевая и радиомодели

TOSSIM использует очень простую, но невероятно мощную модель беспроводной сети. Сеть представляется в виде ориентированного графа, в котором каждая вершина — беспроводной узел и каждой дуге между узлами поставлено в соответствие некоторое значение — вероятность ошибки. Каждый узел имеет локальную переменную, куда заносится то, что принимается им по радиоканалу. Такая модель позволяет проводить тестирование в условиях, когда вероятность ошибки при передаче данных равна нулю, моделировать скрытые ограничения (например, для узлов a, b, c существует связь (a, b) и (b, c), но нет связи (a, c)), а также множество различных проблем, которые случаются при передаче (не найден начальный символ, нарушена целостность данных и т.п.).

Эмулятор TOSSIM предоставляет разработчикам TinyOS механизмы для выбора точности и сложности радиомодели. Радиомодель основана на описанной выше сетевой модели, причем вероятность ошибки при передаче сообщения мотом u моту v необязательно равна вероятности при обратной передаче. Такой подход позволяет моделировать асимметричные связи. Вероятности ошибок могут быть заданы разработчиком и могут изменяться в процессе моделирования. В случае возникновения ошибки значение передаваемого бита инвертируется.

В эмулятор заранее встроены две радиомодели. В соответствии с первой каждый мот сможет передавать сообщения любому другому по радиоканалу без ошибки. Эта простая модель полезна для тестирования радиопротоколов в условиях отсутствия многозвенной передачи данных. В соответствии со второй моделью сеть представляется неориентированным графом с нулевыми вероятностями ошибок передачи, что необходимо для тестирования радиопротоколов при многозвенной передаче.

Средства связи с внешними приложениями

Несмотря на широкие возможности эмулятора TOSSIM, может возникнуть необходимость в изменении его функциональности. Для этого в нем предусмотрены средства связи с внешними приложениями, которые позволяют управлять процессом моделирования и наблюдать за моделью, подключаясь к эмулятору через протокол TCP/IP. Для взаимодействия с внешними приложениями используются механизмы, которые лежат в основе взаимодействия компонентов в TinyOS: команды, события и интерфейсы (см. КомпьютерПресс № 8’2008). Примерами событий, посылаемых внешнему приложению, могут быть отладочные сообщения, которые разработчик добавил в код TinyOS, или содержимое пакета, полученного активным мотом по радиоканалу. При помощи вызова команд внешние приложения могут изменять структуру БСС и условия ее моделирования, например задавая необходимую радиомодель.

Важно отметить, что инструкции, относящиеся непосредственно к TOSSIM, которые разработчик вносит в код приложения TinyOS, при компиляции приложения для реальных мотов удаляются.

Приложение TinyViz

Полезным примером, демонстрирующим возможности средств связи TOSSIM с внешними приложениями, является TinyViz. Это приложение реализует написанный на языке программирования Java графический интерфейс, облегчающий работу с эмулятором. TinyViz представляет моделируемую сеть в графическом виде, а также позволяет управлять процессом моделирования при помощи меню. Например, можно задавать показания сенсоров на мотах и вероятность ошибок при передаче данных. TinyViz предоставляет разработчикам возможность присоединять новые плагины через специальный интерфейс и таким образом вводить свои механизмы управления эмулятором. На рис. 2 приведен скриншот приложения TinyViz.

 

Рис. 2. Скриншот TinyViz

Использование эмулятора TOSSIM

После знакомства с TOSSIM рассмотрим несколько базовых операций, которые могут выполняться при моделировании разрабатываемого приложения.

Как уже было сказано, TOSSIM устанавливается на обычный ПК вместе с набором образующих среду разработки инструментальных средств, которые можно скачать с сайта www.tinyos.net. Управление инструментальными средствами производится через командный интерфейс, характерный для ОС UNIX. То есть для успешного освоения среды разработки, в частности эмулятора TOSSIM, необходимо знание ОС UNIX хотя бы на уровне пользователя.

Писать приложения TinyOS можно в любом текстовом редакторе, строка в котором оканчивается одним символом LF, как принято в ОС UNIX. Компиляция написанного кода производится с помощью команды make, параметром для которой служит имя платформы (mica, mica2, iris, pc и т.п.). Для работы команды make необходимо создать файл с инструкциями makefile, что является отдельной и весьма нетривиальной задачей. Но для начала можно воспользоваться уже написанным файлом инструкций, который находится в каталоге /opt/tinyos-2.x/apps/.

Итак, команда

make pc,

вызванная из каталога, содержащего исходный файл приложения и файл инструкций, создаст исполняемый файл (main.exe) для выполнения приложения в среде эмулятора. Чтобы запустить процесс моделирования, нужно воспользоваться командой:

./main [опции] <количество_мотов_в_сети>

Список опций доступен в соответствующем разделе справочной системы.

Для остановки TOSSIM можно использовать комбинацию клавиш Ctrl+C. По умолчанию при моделировании на экран выводятся все сообщения эмулятора, однако, как правило, это затрудняет работу. Для фильтрации сообщений предусмотрена глобальная переменная dbg, список допустимых значений которой можно найти в справочной системе.

Работу приложения можно смоделировать и с использованием графического интерфейса эмулятора TinyViz. Сначала TinyViz необходимо скомпилировать, для чего следует выполнить команду make из каталога /opt/tinyos-2.x/tools/java/net/tinyos/sim.

После компиляции появится файл-скрипт tinyviz, с помощью которого и запускается моделирование с визуализацией. Например, две команды:

export dbg=usr1

и

./tinyviz -run ./main.exe 30

запустят графическое моделирование БСС, состоящей из 30 мотов, на каждом из которых выполняется приложение main.exe.

 

В начало В начало

КомпьютерПресс 11'2008


Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует