Научная статья на тему 'Синхронизация времени в сенсорных сетях'

Синхронизация времени в сенсорных сетях Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
236
33
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СЕНСОРНЫЕ СЕТИ / СИНХРОНИЗАЦИЯ ЧАСОВ / SENSOR NETWORKS / TIME SYNCHRONIZATION

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Недев Максим Димитрович

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

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Недев Максим Димитрович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Time synchronization in sensor networks

The paper analyzes the problems of time synchronization in sensor networks, reviewing current approaches. The paper also describes how two crystall oscillators can be used to provide both high precision time mechanism and relatively low energy consumption. Moreover, the paper presents method for sensor nodes' clock skew correction.

Текст научной работы на тему «Синхронизация времени в сенсорных сетях»

ISSN 2079-3316 ПРОГРАММНЫЕ СИСТЕМЫ: ТЕОРИЯ И ПРИЛОЖЕНИЯ № 4(8), 2011, с. 71-84 УДК 004.728.3.057.4

М. Д. Недев

Синхронизация времени в сенсорных сетях

Аннотлция. В работе обсуждаются вопросы синхронизации часов узлов сенсорной сети, рассматриваются существующие подходы. Работа также описывает опробованный на практике механизм, позволяющий сократить расходы электроэнергии на работу устройства, не потеряв при этом в точности определения времени. Предлагаются методы коррекции расхождения часов устройств и учёта температурных поправок.

Ключевые слова и фразы: Сенсорные сети, синхронизация часов.

Введение

В последние годы заметно возросло внимание к такой области исследований, как сенсорные сети [1]. Сенсорная сеть состоит из большого числа сенсорных узлов, обычно оборудованных микроконтроллером, маломощным приёмопередатчиком, источником энергии, интерфейсом для связи с датчиками и приводами.

Большой интерес к изучению сенсорных сетей обусловлен широкими возможностями их применения. Разнообразие доступных датчиков и исполнительных механизмов, простота установки и сравнительно низкая стоимость делают возможным применение таких сетей во многих отраслях жизни. Сенсорные сети используются для задач мониторинга и управления различных территориально-распределённых объектов. Области их применения включают мониторинг окружающей среды [2,3], сельское хозяйство [4], производство [5].

В настоящей работе рассматриваются беспроводные сенсорные сети с автономным электропитанием узлов. Ожидаемое время работы узла сенсорной сети составляет несколько лет. Такой большой срок работы достигается за счёт импульсного характера работы сети: большую часть времени узлы находятся в режиме сверхнизкого энергопотребления (“сна”), не производя никаких действий; периодически

© М. Д. Недев, 2011

© Программные системы: теория и приложения, 2011

узлы переходят в активный режим, работают с установленными датчиками и обмениваются данными с окружающими узлами. Для проведения сеанса связи необходимо, чтобы участвующие в сеансе узлы одновременно включили свои приёмопередатчики, что требует син-хронизированности их часов. Кроме того, точное время на сенсорном узле полезно для формирования временных отметок данных, считанных с датчиков.

Рассматриваемый класс сенсорных сетей включает сети, построенные с использованием стандарта 1ЕЕЕ 802.15.4 [6], но не ограничивается ими. Под рассмотрение также подпадает любая сеть, работающая в импульсном режиме с целью жесткой экономии автономного источника электроэнергии.

1. Насколько необходима точная синхронизация?

Рассмотрим сеанс связи, показанный на рис. 1. Принимающий узел начинает прослушивание эфира лишь немного раньше, чем передающий узел начинает отправку пакета.

Рис. 1. Удачный сеанс. Узел-приёмник начинает прослушивание эфира лишь немного раньше, чем передающий узел начинает отправку пакета.

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

0

Приёмник ........ Передатчик

Время

Рис. 2. Неэффективный сеанс. Принимающий узел тратит слишком много времени на ожидание пакета.

На рис. 3 изображён неудачный сеанс: принимающий узел закончил интервал прослушивания раньше, чем передающий узел начал отправлять пакет. Синхронизация узлов нарушена, передача пакета не произошла. Необходимо принятие мер по её восстановлению.

Приёмник ......... Передатчик

Время

0

Рис. 3. Неудачный сеанс. Синхронизация узлов нарушена.

Приёмопередатчик — основной источник расхода энергии в сенсорном узле. Минимизируя время его работы, можно получить ощутимый выигрыш по экономии энергии.

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

Интервал прослушивания, мс

Рис. 4. Зависимость среднего энергопотребления от длительности интервала прослушивания. Вычислено для скорости 250 Кбит/с. Период сеансов связи равен 15 с. Энергопотребление в режиме приёма составляет 13, 2 мА, в режиме сна— 0, 02 мкА. Затраты энергии при сокращении длительности интервала прослушивания со 100 мс до 1 мс уменьшаются в ^20 раз при длине пакета 127 байт.

2. Известные решения

В работе [7] предложен простой алгоритм синхронизации часов, с помощью которого достигается точность синхронизации часов, равная 500 мс. Авторы работы принесли в жертву точность, проводя синхронизацию часов устройств как можно реже. Использование этого подхода приведёт к сильному увеличению интервала прослушивания пакета, что означает регулярную долгую работу приёмопередатчика, и, соотвественно, большой расход электроэнергии.

В исследовании, проведённом в работе [8], достигается средняя точность синхронизации часов устройств порядка 17 мкс. Эксперимент проводится на сенсорных узлах MICA, на которых установлен микроконтроллер ATMEGA103L, работающий на частоте 4 МГц.

В работе [9] тот же подход применяется на узлах Mica2, оборудованных микроконтроллером, работающем на частоте 7, 37 МГц. В среднем достигается точность порядка 20 мкс.

Предлагаемый в статье [10] алгоритм запускался на сенсорном узле Mica2. Часы устройства работают с частотой 921 КГц. Достигается средняя точность порядка 15 мкс.

Последние три описанные исследования имеют один общий недостаток — во всех них используются быстрые часы, работающие постоянно. Хоть при этом и появляется возможность достичь высокой точности синхронизации времени, но одновременно серьёзно страдает энергетическая эффективность, поскольку постоянно работающий быстрый генератор расходует сравнительно много энергии.

В некоторых распределённых системах, к примеру, в SDH [11], в качестве средства синхронизации времени используются системы глобального позиционирования GPS или Глонасс. Система GPS обеспечивает точность определения времени порядка 240 нс [12]. Однако установка GPS-модуля приведёт к значительному увеличению стоимости узла сенсорной сети, а также к росту энергопотребления узла, сводя, таким образом, на нет выигрыш от высокоточной синхронизации часов. Кроме того, устойчивая работа GPS невозможна внутри зданий, что ещё больше ограничивает возможность применения этой технологии на узлах сенсорной сети.

В сети Интернет для задач синхронизации времени успешно используется алгоритм NTP [13]. Но он плохо приспособлен к работе в условиях ограниченных коммуникационных и вычислительных возможностей узлов сенсорной сети.

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

3. Предлагаемое решение

Предлагаемый подход основывается на использовании аппаратной платформы, имеющей двое часов:

• быстрые (1 МГц), имеющие высокую стабильность (3, 3 ppm1), но и сравнительно высокое энергопотребление (около 1 мА [14]);

• медленные (32768 Гц), имеющие низкую стабильность (36 ppm) но и низкое энергопотребление (0, 01 мА).

11 ppm = 0, 0001%

Медленные часы работают постоянно и обеспечивают выход сенсорного узла из режима сна. Они тактируются от кварцевого резонатора камертонного типа. Для него характерно значительное изменение частоты в зависимости от температуры (рис. 5).

Быстрые часы в режиме сна не работают, что обеспечивает минимизацию энергопотребления. В периоды активности устройства быстрые часы используются для определения точного времени включения приёмопередатчика.

Для уменьшения скорости расхождения часов узлов каждый из узлов автономно выполняет калибровку медленных часов по быстрым и учитывает температурную поправку при расчете временных интервалов. Для устранения оставшегося расхождения при каждом сеансе связи производится синхронизация.

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

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

3.1. Учёт температурных поправок

Частота работы кварцевых резонаторов изменяется в зависимости от температуры, причём её влиянию подвержены как быстрый, так и медленный кварцевые резонаторы.

На рис. 5 и рис. 6 показаны зависимости величин изменения частот медленного и быстрого кварцевых резонаторов относительно температуры. Для медленного резонатора график построен на основе данных производителя, для быстрого резонатора данные взяты из статьи [16], так как производители, как правило, не указывают этих данных.

Температура, °С

-30 -20 -10 0 10 20 30 40 50 60 70 80

Рис. 5. Зависимость частоты медленного кварцевого резонатора от температуры [ ]. При отклонении темпера-

туры от номинальной (25° С) частота уменьшается.

Температура, °С

Рис. 6. Зависимость частоты быстрого кварцевого резонатора от температуры [16].

Поскольку быстрые часы используются для отмерения только относительно коротких временных промежутков, влиянием температуры на них можно пренебречь. Основную же часть времени узлы используют медленные часы.

Предлагается следующая процедура учёта температурных поправок, выполняющаяся регулярно (например, 1 раз в несколько секунд) и включающая в себя следующие действия:

(1) опрашивается датчик температуры;

(2) на основе его показаний и данных на рис. 5 вычисляется отклонение текущей частоты кварцевого резонатора от номинальной: d = 130008О хр, где d—искомое отклонение (в Гц), ар—изменение частоты при текущей температуре (в ppm);

(3) вычисление времени ¿1, прошедшего с предыдущего запуска процедуры (длительность интервала коррекции);

4. ч, оо *7 Л

(4) вычисление времени ¿2 = 32768—^ , прошедшего с предыдущего запуска процедуры с учётом отклонения частоты;

(5) вычисление разницы между ¿1 и ¿2: ^ = ¿2 — ¿1 и сохранение полученной величины в переменную, накапливающую поправку.

Впоследствии перед использованием показаний медленных часов необходимо добавить к ним накопленную величину поправки.

В предлагаемой процедуре температура на протяжении интервала коррекции принимается равной температуре в конце интервала коррекции. При достаточной частоте вызова процедуры этот факт не окажет сильного влияния на получаемый результат, так как температура не меняется мгновенно.

В качестве альтернативы можно упомянуть температурно-компенсированные генераторы [17], но они потребляют большее количество энергии и имеют высокую стоимость. Ещё один способ заключается в построении коррекционных таблиц по результатам калибровки каждого конкретного экземпляра кварцевого резонатора в термокамере.

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

3.2. Калибровка медленных часов по быстрым

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

Процедура предусматривает следующие действия:

(1) Отключается обычный переход устройства в режим сна. Это нужно для того чтобы быстрые часы во время калибровки не останавливались.

(2) Происходит считывание показаний медленных часов, в этот же момент снимаются показания быстрых часов.

(3) Происходит ожидание в течение относительного большого временного интервала (> 900 мс).

(4) Происходит считывание показаний медленных часов, в этот же момент снимаются показания быстрых часов.

(5) На основе полученных показаний часов, вычисляется калибровочный коэффициент: Сс = 1 + А/д , где Сс — искомый калибровочный коэффициент, A f —время, прошедшее между пунктами 2 и 4 согласно быстрым часам, A s —время, прошедшее между пунктами 2 и 4 согласно медленным часам.

Процедура производится вместо одного из долгих (> 900 мс) периодов сна устройства. Таким образом, длительное монополизирование процессора остаётся незамеченным и не мешает работе других процессов на устройстве. Полученный калибровочный коэффициент каждый раз применяется при обращении к показаниям медленных часов.

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

Калибровка проводится один раз при старте устройства, но периодически может повторяться для компенсации возможного накопления ошибки.

Были проведены эксперименты, показавшие, что откалиброванные медленные часы двух узлов расходятся со скоростью ~ 4 ppm. Таким образом, скорость расхождения практически доведена до минимально возможной (3, 3 ppm) на текущей аппаратной платформе.

3.3. Синхронизация часов

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

не удаётся бороться методом калибровки, так как и быстрый, и медленный кварцевые резонаторы, согласно паспортным данным, имеют одинаковую временную нестабильность, равную ±3 ррт/год.

Это говорит о необходимости введения метода коррекции расхождения часов во время работы устройств.

Изначальная синхронизация часов устройств достигается во время процедуры конфигурации — при подключении нового сенсорного узла к существующей сети. После этого предлагается поддерживать синхронизацию с помощью описанного ниже алгоритма.

(1) Принимающий узел во время планирования очередного сеанса связи оценивает время, через которое сеанс будет происходить. Длительность интервала прослушивания тем больше, чем больше время до следующего сеанса. Сеанс планируется таким образом, чтобы момент приёма пакета от передающего узла приходился точно на середину интервала.

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

(a) Если есть данные для отправки, то узел передаёт обычный пакет с данными.

(b) Если данных нет, то для поддержания синхронизации передаётся пакет минимальной длины (15 байт для сетей 802.15.4).

(3) Принимающий узел, используя прерывание КХ_8ТАИ,Т, сохраняет временную метку начала получения пакета (рис. 7). Пакет обрабатывается устройством как обычно. После этого вычисляется разность В между фактическим и ожидаемым временами начала получения пакета и производится сдвиг времени следующего сеанса по формуле С'а = Са + П.

Кроме того, получение В = 0 означает, что часы устройств идут с разной скоростью. Можно оценить скорость расхождения часов и использовать её при планировании времени следующего сеанса. Искомая скорость расхождения определяется формулой $ = —,

где Таупс—время, прошедшее с момента предыдущей синхронизации, знак $ показывает направление расхождения. Величина компенсации вычисляется следующим образом: = Тпеж4 х ^, где Тпез^ —время

до следующего сеанса связи.

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

Приёмник

Передатчик

Время RX START

Рис. 7. Время начала получения пакета сохраняется обработчиком прерывания КХ_8ТАИТ.

3.4. Вычисление времени очередного сеанса связи

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

При планировании сеанса по собственным часам узел учитывает:

Сс —калибровочную поправку;

Сі —температурную поправку;

Св —поправку на известное расхождение;

С а —компенсацию разности скоростей часов;

Си —запас на неустранимое расхождение часов за время, прошедшее с момента последней синхронизации.

При получении показаний медленных часов учитываются калибровочная и температурная поправки: і = і' х Сс + Сі, где і' — изначальные показания медленных часов, і—показания медленных часов с учётом поправок.

Пусть следующий сеанс связи по протоколу должен состояться через время Т. Тогда по часам устройства сеанс следует провести через время Т' = Т + С8 + С а — , причём длительность интер-

вала прослушивания сеанса связи должна быть также увеличена на . Базовая длительность интервала прослушивания Тш принимается равной удвоенной точности синхронизации.

Скорость расхождения, определяющая поправку С а, может относительно быстро меняться во время работы устройств (например, в результате изменения температуры одного из устройств). Поэтому поправка Са не применяется, если скорость расхождения была вычислена на основе данных, полученных более, чем N секунд назад, где N — параметр, назначаемый администратором сети.

Время от времени запланированный сеанс связи может не состояться, например, из-за действия мощной помехи в момент времени, выбранный для сеанса связи. В таком случае очередная синхронизация часов не произойдет, и при планировании следующего сеанса принимающий узел должен предварительно увеличить запас . Увеличение Тт также происходит, если не применялась поправка С^.

4. Реализация

Практическая реализация описанных механизмов выполняется на модулях сенсорной сети проекта Ботик-Сенсор. На текущей аппаратной платформе, имеющей двое часов, были реализованы:

• процедура калибровки медленных часов относительно быстрых;

• механизм синхронизации часов двух устройств.

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

Механизм учёта температурных поправок находится в процессе реализации.

5. Заключение

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

Описанный в статье подход к синхронизации часов узлов сенсорной сети позволяет обеспечить точность синхронизации часов 0, 5 мс при периодичности сеансов связи порядка 15 с. Обеспечивается выигрыш по энергопотреблению более чем в 800 раз по сравнению с системами, обеспечивающими синхронизацию с точностью 500 мс.

Список литературы

[1] Mottola L., Picco G. P. Programming wireless sensor networks: Fundamental concepts and state of the art // ACM Computing Surveys, 2011. 43, no. 3, p. 51 t[]

[2] Juang P., Oki H., Wang Yo., Martonosi M., Peh L.Sh. Energy-efficient computing for wildlife tracking: design tradeoffs and early experiences with ZebraNet // Proceedings of the 10th International Conference on Architectural Support for Programming Languages and Operating Systems. — San Jose, California : ACM, 2002, p. 12 ^ []

[3] Butler Z., Corke P., Peterson R. Dynamic Virtual Fences for Controlling Cows. Springer Tracts in Advanced Robotics : Springer Berlin / Heidelberg, 2006 Vol. 21, p. 513-522 t[]

[4] Zerger A., Viscarra Rossel R. A., Swain D. L. Environmental sensor networks for vegetation, animal and soil sciences // International Journal of Applied Earth Observation and Geoinformation, 2010. 12, no. 5, p. 303-316 t[]

[5] Gungor V.C., Hancke G. P. Industrial Wireless Sensor Networks: Challenges, Design Principles, and Technical Approaches // IEEE Transactions on Industrial Electronics, 2009. 56, no. 10, p. 4258-4265 t[]

[6] IEEE Standard for Information technology — Telecommunications and information exchange between systems — Local and metropolitan area networks Specific requirements — Part 15.4: Wireless Medium Access Control (MAC) and Physical Layer (PHY) Specifications for Low-Rate Wireless Personal Area Networks (LR-WPANs). New York : The Institute of Electrical and Electronics Engineers, Inc, 2003, № 802.15.4.— 679 c., http://standards.ieee. org/getieee802/download/802.15.4-2003.pdf. \[]

[7] Jana van Greunen, Rabaey J. Lightweight Time Synchronization for Sensor Networks // Proceedings of the 2nd ACM International Conference on Wireless Sensor Networks and Applications : ACM, 2003, p. 11-19

[8] Ganeriwal S., Kumar R., Srivastava M. B. Timing-sync Protocol for Sensor Networks // Proceedings of the 1st International Conference on Embedded Networked Sensor Systems. — Los Angeles, California, USA : ACM, 2003, p. 138-149 t2

[9] Maroti M., Kusy B., Simon G., Ledeczi A. The Flooding Time Synchronization Protocol // Proceedings of the 2nd International Conference on Embedded Networked Sensor Systems. — Baltimore, MD, USA : ACM, 2004, p. 39-49 ^2

[10] Sommer P., Wattenhofer R. Gradient Clock Synchronization in Wireless Sensor Networks // Proceedings of the 2009 International Conference on Information Processing in Sensor Networks. --Washington, DC, USA : IEEE Computer Society, 2009, p. 37-48 f2

[11] Turk M., Leonardis S. Synchronous digital hierarchy // Electrotechnical Review, 1996. 63, no. 3, p. 194-200 t2

[12] Kovach K. L. Global positioning system standard positioning service performance standard. 4th Edition : DoD, 2008.— 160 p., http://www.pnt.gov/public/docs/ 2008/spsps2008.pdf. ^2

[13] Mills D. L. Internet time synchronization: the network time protocol // IEEE Transactions on Communications, 1991, p. 1482-1493, http://ieeexplore.ieee. org/xpl/freeabs_all.jsp?arnumber=103043 ^2

[14] 6175L.book : Atmel, 2011.— 781 p., http://www.atmel.com/dyn/resources/ prod_documents/doc6175.pdf. ^3

[15] ABS-07-pg1, 2011, http://www.datasheets.org.uk/indexdl/Datasheets-SW5/ DSASW0096824.pdf. f5

[16] Cutting direction and frequency Temperature characteristics | Quartz Crystal / Oscillator | Products | Citizen Finetech Miyota Co.,Ltd., 2011, http://cfm. citizen.co.jp/english/product/cvo_character.html. f3.1, 6

[17] DS4000. Digitally controlled TCXO : Maxim Integrated Products, Inc., 2003.— 16 p., http://datasheets.maxim-ic.com/en/ds/DS4000.pdf. ^3.1

M. D. Nedev. Time synchronization in sensor networks.

Abstract. The paper analyzes the problems of time synchronization in sensor networks, reviewing current approaches. The paper also describes how two crystall oscillators can be used to provide both high precision time mechanism and relatively low energy consumption. Moreover, the paper presents method for sensor nodes’ clock skew correction.

Key Words and Phrases: Sensor networks, time synchronization.

Образец ссылки на статью:

М. Д. Недев. Синхронизация времени в сенсорных сетях // Программные системы: теория и приложения : электрон. научн. журн. 2011. № 4(8), с. 71-84. URL: http://psta.psiras.ru/read/psta2011_4_71-84.pdf

i Надоели баннеры? Вы всегда можете отключить рекламу.