Previous Page  4 / 11 Next Page
Information
Show Menu
Previous Page 4 / 11 Next Page
Page Background

С.Н. Падалко, М.Н. Терентьев

78

ISSN 0236-3933. Вестник МГТУ им. Н.Э. Баумана. Сер. Приборостроение. 2017. № 1

п р

,

1, ,

A A m j j

m

  

(1)

где

п

А

— адрес потомка;

А

р

— адрес родителя;

m —

предельное число непосред-

ственных потомков, которое может иметь один узел (модуль сети);

j —

номер

потомка в пределах пространства адресов его родителя.

Координатор имеет адрес 0, подключение к сети ему не требуется. Коорди-

натор готов к работе сразу после включения. Остальные узлы после включения

должны получить логический адрес. Отвечать на запросы подключающихся уз-

лов могут любые подключенные к сети узлы, имеющие свободные адреса для

потомков, т. е. если число уже подключенных потомков данного узла не превы-

шает

т

. Подключающемуся узлу назначается адрес, определенный по (1).

Адрес родителя

р

А

любого узла с адресом

А

, не являющегося координатором

р

1

int

,

A

А

m

 

 

(2)

где int — целая часть числа.

В общем случае маршрут передачи сообщения от

узла с адресом

SRC

А

до узла с адресом

DEST

А

состоит

из восходящей и нисходящей ветвей (рис. 2). Эти вет-

ви пересекаются в узле с адресом

,

LCP

А

являющимся

общим родителем источника и адресата наименьшего

возможного уровня. В частном случае в роли такого

узла может выступать координатор сети — узел с адре-

сом

А

0

.

При использовании приведенной схемы назначе-

ния логических адресов узлам сети маршрутизация

сообщений выполняется следующим образом. Приняв

некоторое адресованное ему сообщение по радиоканалу, узел определяет адрес

следующего в маршруте передачи узла c помощью функции

GetNext()

, возвра-

щающей на узле с адресом

A

THIS

адрес узла, на который должно быть передано

сообщение для последующей доставки на узел с адресом

A

DEST

, при условии

.

DEST THIS

A A

Код этой функции, а также функции

GetParent()

, возвращающей

адрес родителя своего аргумента, т. е. реализующей выражение (2), приведен

ниже:

/* определение адреса родителя */

unsigned int GetParent(unsigned int A)

{

return (A-1)/m; /* модуль сети m — глобальная переменная */

}

/* маршрутизация сообщения по дереву */

unsigned int GetNext(unsigned int Athis, unsigned int Adest)

{

/* пока адрес назначения больше моего адреса */

while(Adest > Athis)

Рис. 2.

Маршрут пере-

дачи сообщения