Настройка gsm модема для передачи данных

Обновлено: 05.07.2024

Аббревиатура CSD расшифровывается как Circuit Switched Data - передача данных путём коммутации каналов в сети GSM. CSD-соединение очень похоже на обычный голосовой вызов, поэтому его часто называют передачей данных по голосовому каналу.

Ниже вы можете прочитать как именно организовать связь по этой технологии.

Для работы по технологии CSD все устройства должны быть предварительно настроены.

Модемы производства компании iRZ вы можете сконфигурировать с помощью программы iRZ TestModem. Остальные модемы можно настроить через терминальную программу. Статья будет состоять из двух частей, описывающих оба способа.

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

Прежде всего проверьте, что на счету SIM-карт, установленных в модемы, присутствует положительный баланс.

Убедитесь, что оператор сотовой связи подключил услугу передачи данных по CSD на обе SIM карты.
Теперь подключите настраиваемые устройства к компьютеру по интерфейсу RS232. Если такой интерфейс отсутствует, воспользуйтесь преобразователем интерфейсов USB-RS232 (или RS485 при необходимости).

Подайте питание на модемы, дождитесь регистрации модемов в сотовой сети (мигание светодиода станет кратковременным и редким).

Подготовка модемов iRZ к работе по технологии CSD, используя программу iRZ TestModem

Скачайте и установите программу iRZ TestModem для вашей версии операционной системы.
Далее запустите TestModem и выберите ваше устройство из списка.


Если вы знаете номер COM порта, то можно указать его в разделе "Параметры порта", в противном случае программа попробует обнаружить модем самостоятельно.




В разделе "Режим" выберите скорость работы интерфейса. Она должна соответствовать скорости работы оборудования, которое подключено к модему. Как правило, используется стандартная скорость 9600 bps.



Подготовка модемов iRZ к работе по технологии CSD, используя терминальную программу

Вот список AT-команд для настройки модемов:

at&f (предварительный сброс настроек)
at+ipr=9600 (скорость обмена по COM-порту)

at&d0 (игнорирование DTR)

ate0 (отключение эха)

at&w (сохранение)

at^smso (выключение)

at&f (предварительный сброс настроек)
at+ipr=9600 (скорость обмена по COM-порту)

at^scfg="GPRS/ATS0/withAttach",off

ats0=1 (автоответ после одного гудка)

at&c0 (определение DCD режима)

at&d0 (игнорирование DTR)

at+cbst=71,0,1 (перевести модем в режим приёма данных)

ate0 (отключение эха)

at&w (сохранение)

at^smso (выключение)

Запустите Terminal 1.9b, установите параметры порта на модеме, выберите COM порт, к которому он подключён и нажмите кнопку "Connect"



В поле ввода команд установите галку "+CR" и введите первую команду. Отправьте её в модем нажатием кнопки "->Send". Убедитесь в том, что модем прислал подтверждение команды — ответ "ОК".


Последовательно введите весь набор AT-команд, приведённый в таблице выше. После подачи последней команды "AT^SMSO" настройка будет закончена. Для дальнейшей работы необходимо кратковременно отключить питание от модема.

Настройка GSM модемов в программе ЛЭРС УЧЕТ

Настройка GSM модемов в программе ЛЭРС УЧЕТ

Вызов утилиты выполняется через пункт меню Сервис ► Настройка модемов или из меню Windows (кнопка Пуск).

Ознакомитесь со списком устройств, настраиваемых GSM/GPRS модемов и приборов учета, на которые может быть настроен модем.

Вызов программы для настройки GSM модемов в меню ЛЭРС УЧЕТ

Вызов программы для настройки GSM модемов в меню ЛЭРС УЧЕТ

Каталог инженерного оборудования

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

Интерфейс программы

Главное окно состоит из следующих блоков интерфейса:

  1. Подключение модема
  2. Выбор модема и его тип для настройки
  3. Протокол настройки
  4. Командная строка
  5. Информация о модеме
  6. Диаграмма с уровнем сигнала базовой станции, к которой подключился модем
  7. Диаграмма сравнения уровней сигнала со всех базовых станций
    17.11.2021 01.11.2021 13.10.2021 06.09.2021 01.08.2021

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

Стандартный GSM-модем перед подключением к прибору учёта и установкой на объект рекомендуется настроить под соответствующий тип прибора учета и характеристики GSM-сети.

Настройка диспетчерского и удаленного модемов требуется при организации опроса модемов по каналу CSD (голосовой канал передачи данных). При опросе модемов по GPRS настраивается только удаленный модем, т.к. диспетчерский не используется.

Подключение GSM-модема

Выберите COM-порт, через который выполнено подключение модема.

выбор com-порта для подключения gsm модема в лэрс учет

Выбор com-порта для подключения gsm модема

Определение подключенных com-портов в диспетчере устройств Windows

Определение подключенных com-портов в диспетчере устройств Windows

Выбрав com-порт, при необходимости, можете настроить его параметры (скорость порта, количество бит данных, контроль четности, количество стоповых бит). Параметры подключения модема включают настройки оборудования, определяющие порядок отправки и получения данных модемами.

Ручная настройка параметров com-порта для подключения модема

Ручная настройка параметров com-порта для подключения модема

Биты данных

Параметр «Биты данных» обозначает число битов в слове. Большинство систем в настоящее время использует для представления знаков восемь битов (расширенный ASCII).

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

Четность

Параметр «Четность» определяет способ, который модем использует для обнаружения ошибок.

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

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

Доступно несколько вариантов настройки четности.

ЗначениеОписание
ЧетУстановка бита четности в 0 или 1 так, чтобы общее число единичных битов было четным
НечетУстановка бита четности в 0 или 1 так, чтобы общее число единичных битов было нечетным
НетБит четности не отправляется

По умолчанию устанавливается в значение «Не проверяется».

Стоповые бит

Стоповые биты обрамляют пакеты данных в асинхронной связи.

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

Автоматическое определение параметров порта модема

Автоматическое определение параметров порта модема

Автоматическое подключение к модему лэрс

Настройка параметров модема

Выберете модель настраиваемого GSM-модема из выпадающего списка.

Выбор модели настраиваемого GSM-модема

Выбор модели настраиваемого GSM-модема

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

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

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

Настройка параметров порта прибора учета. Прошивка AT-команд

Настройка параметров порта прибора учета. Прошивка AT-команд

Настройка диспетчерского модема

Служба опроса использует диспетчерский модем для опроса точек учета.

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

GSM-модемы не хранят и не модифицируют информацию с прибора учета, а только выполняют коммуникационную функцию, т.е. передают данные в программу ЛЭРС УЧЕТ

Подключение диспетчерского модема аналогично настройкам удаленного (приборного) модема

Настройка диспетчерского модема лэрс учет

Настройка диспетчерского модема лэрс учет

Мониторинг сигнала GSM-сети

Утилита лэрс настройка модемов определит наличие sim-карты в модеме, регистрацию в сети, оператора и уровень сигнала.

Допустимый уровень сигнала gsm-сети для диспетчеризации приборов учета Недопустимый уровень сигнала gsm-сети для диспетчеризации приборов учета. Обрыв передачи данных.

Показатель уровня сигнала в сетях GSM – это RSSI (received signal strength indicator). Измеряется в дБм (dBm, децибел относительно 1 милливатта).

В мобильных телефонах на базе ОС Android, принята другая единица измерения сигнала — asu (отношение сигнал/шум в пилотном канале).

до -75 dBmуверенная или нормальная связь в зданиях
-85 … -75 dBmуверенная связь на улице и в транспорте
-95…-85 dBmсредний уровень сигнала (пограничная зона)
-105…-95 dBmнизкий уровень сигнала (прием не гарантирован)
-110…-105 dBmмин. уровень сигнала (связь на грани обрыва)

Данные об уровне сигнала в телефоне на базе Android, можно посмотреть если зайти в Настройки > О телефоне > Общая информация > Статус SIM карты.

Данные об уровне сигнала в телефоне на базе Android. Значение asu
Данные об уровне сигнала в телефоне на базе Android. Значение asu

asu не менее 10телефон может передавать голос
asu не менее 6-7 телефон может передавать данные

Используйте мониторинг сигнала в программе ЛЭРС УЧЕТ, чтобы определить подходящее расположение модема для уверенного приема и передачи сигнала.

Опытным путем с помощью монитора выберете надежного поставщика сотовой связи на ваших объектах.

Видео обзор Lers Modem Tune

Аббревиатура CSD расшифровывается как Circuit Switched Data - передача данных путём коммутации каналов в сети GSM. CSD-соединение очень похоже на обычный голосовой вызов, поэтому его часто называют передачей данных по голосовому каналу.
Ниже вы можете прочитать как именно организовать связь по этой технологии.

Для работы по технологии CSD все устройства должны быть предварительно настроены.

Модемы производства компании iRZ вы можете сконфигурировать с помощью программы iRZ TestModem. Остальные модемы можно настроить через терминальную программу. Статья будет состоять из двух частей, описывающих оба способа.

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

Прежде всего проверьте, что на счету SIM-карт, установленных в модемы, присутствует положительный баланс.

Убедитесь, что оператор сотовой связи подключил услугу передачи данных по CSD на обе SIM карты.
Теперь подключите настраиваемые устройства к компьютеру по интерфейсу RS232. Если такой интерфейс отсутствует, воспользуйтесь преобразователем интерфейсов USB-RS232. Для модемов с интерфейсом RS485 или RS422 нужен преобразователь USB-RS485/422.
Подайте питание на модемы, дождитесь регистрации модемов в сотовой сети (мигание светодиода станет кратковременным и редким).

Подготовка модемов iRZ к работе по технологии CSD, используя программу iRZ TestModem.

Скачайте и установите программу iRZ TestModem для вашей версии операционной системы.
Далее запустите TestModem и выберите ваше устройство из списка.



Если вы знаете номер COM порта, то можно указать его в разделе "Параметры порта", в противном случае программа попробует обнаружить модем самостоятельно.




Подготовка модемов iRZ к работе по технологии CSD, используя терминальную программу.

Вот список AT-команд для настройки модемов:

at&f (предварительный сброс настроек)
at+ipr=9600 (скорость обмена по COM-порту)

at&d0 (игнорирование DTR)

at+cbst=71,0,1 (перевести модем в режим приёма данных)

ate0 (отключение эха)

at&w (сохранение)

at^smso (выключение)

at&f (предварительный сброс настроек)
at+ipr=9600 (скорость обмена по COM-порту)

at^scfg="GPRS/ATS0/withAttach",off

ats0=1 (автоответ после одного гудка)

at&c0 (определение DCD режима)

at&d0 (игнорирование DTR)

at+cbst=71,0,1 (перевести модем в режим приёма данных)

ate0 (отключение эха)

at&w (сохранение)

at^smso (выключение)

Запустите Terminal 1.9b, установите параметры порта на модеме, выберите COM порт, к которому он подключён и нажмите кнопку "Connect"


В поле ввода команд установите галку "+CR" и введите первую команду. Отправьте её в модем нажатием кнопки "->Send".
Убедитесь в том, что модем прислал подтверждение команды — ответ "ОК"


Последовательно введите весь набор AT-команд, приведённый в таблице выше. После подачи последней команды "AT^SMSO" настройка будет закончена. Для дальнейшей работы необходимо кратковременно отключить питание от модема.

Как проверить работоспособность CSD соединения вы можете прочитать в этой статье:

Не так давно друг предложил мне работу, связанную с созданием прошивки для микроконтроллера, который должен был связываться с сервером при помощи GSM-модуля SIM900D. Ранее я с программированием микроконтроллеров дела не имел, да и на C программировал последний раз в студенческие времена, но любопытство перевесило и я принялся за работу. Документация по данной железке присутствует в интернете, однако хороших примеров работы с TCP/IP в коде найти не удалось. Ничего не оставалось, кроме как обложиться документацией, запастись сигаретами и чаем и приступить к лавированию между граблями. А граблей оказалось немало. Собственно, поэтому я и написал эту статью — чтобы другим было легче.

Далее будет много AT-команд, не слишком много кода и очень много букв.

Что было нужно

Требовалось написать код, который мог бы инициализировать GSM-модуль, устанавливать подключение с сервером, получать и отправлять произвольные данные, проверять состояние подключения и работать без сбоев. А также быть достаточно компактным, чтобы уместиться в ограниченной памяти микроконтроллера и оставить место для основной функциональности и еще чуть-чуть про запас.

Что получилось в итоге

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

Код требует функций/макросов для работы с последовательным портом, а также наличия функций memset и memcpy. Так что его с относительной легкостью можно перенести на другую платформу, не зацепив по пути кучу библиотек.

И как оно выглядит?

Программирование и тестирование проводилось под Windows 7. Код, полученный в результате, стал основным материалом для этой статьи. Я не стану приводить код полностью и комментировать его, а вместо этого покажу алгоритм настройки и работы с GSM-модулем.

Как работать с последовательным портом

Это достаточно просто. Под целевой микроконтроллер есть макросы для отправки/получения данных через USART, но так как отлаживать такой код проще со стационарного компьютера, мне была предоставлена связка из переходника USB<->USART и GSM-модуля. Оставалось только научиться работать с последовательным портом под Windows. Это оказалось просто. Вкратце, последовательный порт представляется в ОС обычным файлом, передача информации осуществляется функциями ReadFile и WriteFile. Нужно только установить кое-какие параметры при помощи функций SetCommTimeouts и SetCommState.

Вот как выглядит функция инициализации порта:

Как происходит общение с GSM-модулем

После того, как последовательный порт настроен, в него можно отправлять AT-команды. Первой командой должна быть последовательность "AT\r" , позволяющая модулю автоматически настроить скорость передачи по последовательному порту. Ответ, который можно получить после этого из порта, будет выглядеть как "AT\r\r\nOK\r\n" .


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

Инициализация модуля

Установка и разрыв подключений

  • index указывает порядковый номер подключения, может принимать значения от 0 до 7.
  • mode определяет протокол, который будет использоваться соединением. Может быть «TCP» или «UDP».
  • address задает адрес сервера. Если при настройке были указаны DNS-сервера, то можно использовать как IP-адрес, так и доменное имя.
  • port задает порт сервера, с которым будет устанавливаться соединение.
  • "index,ALREADY CONNECT" это значит, что подключение с заданным индексом уже установлено и стоит его поискать.
  • "index,CONNECT OK" тут все очевидно.
  • "index,CONNECT FAIL" означает, что возникли проблемы с установкой соединения.

Передача данных

Данные передаются командой "AT+CIPSEND=index,length" , где index указывает подключение, по которому нужно передать данные, а length задает длину пакета данных. Кстати, узнать MTU для каждого подключения можно при помощи команды "AT+CIPSEND=?" .

Если все хорошо, то модуль в ответ на команду выдаст приглашение ">" , после которого нужно переслать в последовательный порт данные. Как только модуль получит количество байт, равное length , он скажет что-то типа "index,SEND OK" . Вообще, можно не использовать параметр length , однако в таком случае окончание пакета данных должно быть указано явно при помощи символа 0x1A , в терминале сочетание Ctrl+Z. Для передачи произвольных данных такой вариант, очевидно, не подходит.

Как видите, передача данных — процесс не слишком сложный. Поэтому переходим к самому интересному — приему данных.

Прием данных

Так вот, принимать данные можно командой "AT+CIPRXGET=2,index,length" . Двойка означает режим приема, в данном случае байты просто высыпаются в последовательный порт. Можно также задать получение данных в виде HEX-текста, видимо, ради предотвращения конфликтов с программным управлением потоком. Мне это не потребовалось, ибо управление потоком я вообще не использую. Параметр length задает размер пакета данных, который мы желаем получить за один раз.

В ответ мы получим нечто вида "+CIPRXGET:2,index,received,excess\r\n__DATA__\r\nOK\r\n" . В поле received будет находиться количество байт, находящихся в пакете данных __DATA__ , а поле excess будет содержать количество байт, ожидающих своей очереди в буфере модуля. Так что если поле received равно нулю, можно с чистой совестью заявлять, что получать нечего. Собственно, пользуясь этим, я и реализовал неблокирующую функцию для приема данных.

В заключение

Настоятельно рекомендую перед написанием кода освоиться в AT-командах при помощи PuTTY, который прекрасно работает с последовательным портом.

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

Читайте также: