Некоторые особенности GSM/GPRS-модулей Telit
Компания Telit Communications S.p.A. хорошо известна на отечественном M2M-рынке, и прежде всего благодаря популярной линейке GSM/GPRS-модулей серий GC и GE, широко использующихся многими российскими производителями электроники. Новая серия GL865/GL868, появившаяся во второй половине 2010 г., предназначена для еще более широкой экспансии на российский рынок GSM/GPRS благодаря своему форм-фактору (краевой монтаж), традиционно широкому набору стандартных функций, высокому качеству, а также весьма низкой цене.
Вся продукция Telit снабжается качественной документацией, что делает разработку конечных изделий внятной и предсказуемой процедурой. Не является исключением и модуль GL868-DUAL (рис. 1). Несмотря на то, что модуль не предназначен для европейского рынка и информации о нем на официальном сайте компании не слишком много, вся необходимая документация имеется на интернет-ресурсах дистрибьюторов.
Вместе с тем, помимо стандартного функционала GSM/GPRS-модулей, подробно описанного в документации [3], разработчики Telit постоянно внедряют новые возможности, причем сами новые функции в модулях появляются раньше, чем в официальной документации. Это необходимо, во-первых, для того, чтобы убедиться, что недокументированные возможности не мешают выполнению стандартных функций, а во-вторых, информация о новинках дозированно передается потребителям, заинтересованным в новых функциях, для подтверждения безошибочной работы.
В рамках данной статьи, с разрешения компании Telit Communications S.p.A., будут раскрыты некоторые новые функции, присущие модулю GL868-DUAL. Следует отметить, что большинство приведенных команд будет работать и в других GSM/GPRS-модулях Telit, но с новейшими версиями прошивок. А в GL868-DUAL все приведенные возможности заложены изначально.
Увеличение вероятности приема входящих вызовов во время передачи данных по GPRS
Модуль GL868-DUAL, как и практически все другие GSM/GPRS-модули любых производителей, поддерживает класс B. Это означает, что одновременно пакетная передача данных по каналу GPRS и голосовой вызов невозможны. В случае если идет пакетная передача данных и модуль инициирует голосовой вызов, пакетная передача приостанавливается на время вызова. Другое дело, когда поступает входящий вызов. Если в этот момент идет активная передача информации, входящий вызов, скорее всего, будет пропущен. Не углубляясь в стандарты 3GPP, это можно объяснить тем, что при активной передаче данных по GPRS модуль класса B не может обеспечить прослушивание пейджинга от сети и, соответственно, принять вызов.
Компания Telit в модуле GL868-DUAL решила эту проблему. Команда #PKTTXPAGING позволяет увеличить вероятность приема входящих вызовов вплоть до 95% за счет внедрения «окон» в непрерывный поток данных, обеспечивающих прослушивание пейджинга. Платой за это является некоторое уменьшение скорости передачи данных, тем большее, чем выше заданная вероятность приема входящего вызова. В таблице 1 приведены параметры команды #PKTTXPAGING.
#PKTTXPAGING — управление GSM-пейджингом | |
AT# PKTTXPAGING = [<mode>] | Команда используется для управления режимом GSM-пейджинга; <mode> — параметр, описывающий режим GSM-пейджинга: «0» — GSM-пейджинг не прослушивается (значение по умолчанию); «1» — GSM-пейджинг прослушивается максимально часто (гарантируется прием около 95% входящих вызовов во время GPRS-сессии); «2» — GSM-пейджинг прослушивается периодически (гарантируется прием около 70% входящих вызовов во время GPRS-сессии); «3» — GSM-пейджинг прослушивается периодически (гарантируется прием около 60% входящих вызовов во время GPRS-сессии). |
AT# PKTTXPAGING? | Возвращается текущее значение параметра: #PKTTXPAGING: <mode>. |
AT# PKTTXPAGING =? | Возвращается диапазон допустимых значений аргумента <mode>. |
Декодирование DTMF-сигналов
Несмотря на бурное развитие сервисов пакетной передачи данных в сетях GSM, многие потребители встраиваемых модулей, особенно связанные с системами безопасности, до сих пор используют голосовой канал для передачи двухтональных последовательностей (DTMF). Раньше для декодирования DTMF использовался аппаратный декодер — специализированная микросхема, устанавливаемая в аналоговый тракт модуля. Теперь, благодаря модулю GL868-DUAL, от использования декодера можно отказаться: его функции выполняются специальной командой #DTMF. Описание команды приведено в таблице 2, на рис. 2 показан пример приема DTMF-последовательности.
#DTMF — управление декодированием DTMF-сигналов | |
AT#DTMF=<mode> | Команда включает/выключает встроенный DTMF-декодер; <mode> — параметр: «0» — декодер выключен (значение по умолчанию); «1» — декодер включен. |
AT#DTMF? | Возвращается текущее значение параметра: #DTMF: <mode>. |
AT# DTMF =? | Возвращается диапазон допустимых значений аргумента <mode>. |
Примечание: Использование этой функции требует режима AT#CPUMODE=1. Длительность тона должна быть не менее 50 мс. Значение, заданное командой, не сохраняется в памяти и сбрасывается при выключении или перезапуске модуля. При включенной функции декодирования DTMF-функции записи и воспроизведения звуковых фрагментов недоступны.
Расширенный мониторинг сети GSM
Команда #CSURV и ранее позволяла GSM/GPRS-модулям Telit вести расширенный мониторинг частотных каналов GSM (подробно применение этой команды описано в [1]). Новая же функция позволяет принудительно изменить список частотных каналов, на которых работает модуль. Благодаря этому появляется возможность получить такой важный параметр, как TA (time advance), и вычислить расстояние не только до одной базовой станции (БС), но и до всех доступных. Это позволит обеспечить точность позиционирования в городских условиях, сопоставимую с системами спутниковой навигации (GPS/ГЛОНАСС), и в ряде случаев вообще отказаться от применения отдельных навигационных модулей. Причем способ переключения на другую обслуживающую базовую станцию выбран щадящий: модуль при этом не нарушает алгоритмов выбора БС, заданных в стандартах 3GPP. Команда #EQCELL позволяет сымитировать уменьшение уровня сигнала в заданном частотном канале. Благодаря такому подходу модуль автоматически выбирает в качестве основной другую БС и потребитель может получить значение TA. Так может быть сделано несколько итераций для обеспечения наилучшей точности при триангуляции. Следует отметить, что для получения корректного значения TA модуль должен инициировать передачу информации через новый канал, например передачей SMS-сообщения, USSD-запроса или совершением вызова. В последнем случае необязательно установление соединения, достаточно убедиться, что вызов инициирован. Для мониторинга этого состояния рекомендуется использовать команду #ECAM [3]. Описание команды #EQCELL приведено в таблице 3.
#EQCELL — Equalize Cell | |
AT#EQCELL? | Запрос текущего значения параметров команды: AT#EQCELL?#EQCELL: 0 OK или AT#EQCELL? #EQCELL: 1,10,20, #EQCELL: 1,516,-20 OK |
AT#EQCELL=<mode>[,<arfcn>,<val>] | Команда задает режим работы; параметр <mode>: «1» — установка; «0» — сброс всех ранее установленных параметров; <arfcn> — частотный канал (ARFCN), значение (0–1023); ARFCN должно соответствовать выбранному частотному диапазону; <val> — значение вносимого затухания или усиления от –60 до 60 дБ. Каждая команда задает одно значения для одного канала, все они сохраняются в списке. Команда с нулевым аргументом сбрасывает весь список: AT#EQCELL=0 AT#EQCELL=1,10,20, AT#EQCELL=1,516,-20 |
AT#EQCELL=? | Возвращается диапазон допустимых значений аргументов. Диапазон ARFCN зависит от выбранного частотного диапазона (см. AT#BND). Для #BND=0. AT#EQCELL=? #EQCELL: (0,1),(0-124,975-1023,512-885),(-60-60) OK |
Пониженное энергопотребление в зонах со слабым сигналом
Согласно стандартам 3GPP, GSM/GPRS-модуль автоматически регулирует свою выходную мощность в зависимости от команд, получаемых от сети, а также от уровня входного сигнала БС. Алгоритм этот довольно сложный, описан в [2], смежных стандартах и выходит за рамки данной статьи. Тем не менее существует ряд тонкостей в реализации обязательных требований, благодаря которым в ряде случаев возможно существенно снизить энергопотребление модуля. Наиболее типичный случай — поведение модуля в случае резкого снижения уровня принимаемого сигнала. На рис. 3 показана временная диаграмма уровня принимаемого сигнала (Rx), а также мощностей передаваемого сигнала для большинства модулей других производителей (Tx1, показано синим) и Telit (Tx2, показано красным). Как видно из диаграммы, уровень принимаемого сигнала существенно упал, что характерно, например, для въезда в тоннель (для автомобиля) либо входа в лифт (если GSM-модуль применяется в персональном трекере). Подавляющее большинство модулей GSM при этом увеличивают излучаемую мощность до максимума и постепенно снижают ее до значений, обеспечивающих устойчивую работу в новых условиях. Такой алгоритм не может не отразиться на энергопотреблении: оно существенно вырастает на время, необходимое для адаптации к новому уровню Rx. Модули же Telit используют принципиально иной алгоритм — мощность увеличивается не скачком, а плавно, соответственно, энергопотребление возрастает не столь значительно. По некоторым оценкам, применение модулей Telit позволяет увеличить время работы изделия от батареи практически в два раза.
Помимо вышеуказанного, имеется еще один механизм снижения энергопотребления. Речь идет о временном интервале между попытками перерегистрации в сети в случае потери сигнала. По умолчанию попытки перерегистрации производятся каждые 5 с, причем в этом режиме передатчик модуля всегда работает на максимальной мощности. Однако в некоторых случаях нет необходимости столь часто включать модуль на передачу, например если заведомо известно, что в ближайшее время сеть не будет доступна. Команда #NWSCANTMR позволяет увеличить время перерегистрации в сети с 5 до 3600 с включительно, что также благоприятно скажется на энергопотреблении модуля. #NWSCANTMR имеет только один параметр, как раз и задающий тайм-аут перерегистрации в сети.
Протокол RS-485
В то время как все рассмотренные выше функции уже внедрены в модули Telit и используются многими потребителями, технические специалисты итальянской компании реализуют новые уникальные возможности.
Одной из новейших разработок является поддержка промышленного стандарта RS-485. Дополнительно к имеющимся сигналам последовательного порта реализован сигнал RE/DE, предназначенный для управления трансивером RS-485 (рис. 4). Указанная функция позволит внедрять модули Telit в промышленные системы сбора и передачи информации.
На рис. 5 приведена временная диаграмма сигналов TX и DE. Последний при этом может быть выведен на любой из портов ввода/вывода (GPIO), имеющийся в модуле. Верхняя диаграмма — это TX, нижняя — DE.
Описание команды #RS485, позволяющей управлять передачей данных по этому протоколу, приведено в таблице 4.
#RS485 — конфигурирование RS-485 | |
AT#RS485=<enable> [,<gpio>] |
Команда разрешает/запрещает частичную эмуляцию стандарта RS485 с использованием выбранного порта ввода/вывода. Параметр <enable>: «0» — запретить эмуляцию; 1 — разрешить эмуляцию. Примечание: Если параметр <gpio> не задан, используется порт 1. <gpio> — номер порта для эмуляции: допустимы значения от «1» до максимального номера порта (зависит от модуля). Примечание: Если <enable>=0, значение <gpio> не важно. |
AT#RS485? | Проверка статуса эмуляции в формате #RS485: <enable>,<gpio>. |
AT#RS485=? | Возвращается диапазон допустимых значений аргументов <enable> и <gpio>. |
Заключение
В рамках статьи были рассмотрены лишь некоторые функции GSM/GPRS-модулей Telit, информацию по которым трудно найти в открытых источниках. Вместе с тем это всего лишь малая часть богатейшего функционала, в основном подробно задокументированного и широко используемого потребителями по всему миру. Вся открытая документация имеется как на веб-сайте производителя, так и у его официальных дилеров.
- Рудневский А. В. Определение местоположения по базовым станциям в сетях GSM // Беспроводные технологии. 2010. № 3.
- ETSI EN 301 503 V8.4.1 (2000-10) Digital cellular telecommunications system (Phase 2+); Mobile radio interface layer 3 specification; Radio Resource Control Protocol (GSM 04.18 version 8.4.1 Release 1999).
- Telit AT Commands Reference Guide. 80000ST10025a. Rev. 12. 09.09.2011.
- Telit GL868-DUAL Hardware User_Guide. Rev. 0.
- http://www.telit.com