Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: sim300d глючит инет - алгоритм подключения
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
mr_freeman
Добрий день.

Была у меня задача - разработать банальный GPS трекер.
Разработал на основе SIM300D+itrax300

В общем проблема в том что на столе пока все лежит устойчиво работает хоть неделю, а как на машины поставили, так где-то раз в день пропадает связь с трекером на время от 20 минут до пары часов. Это в городе. Как машина едет за город так связь может пропасть на пол дня, иногда вообще до перегрузки трекера. Я думаю это как-то связано с пропаданием сети.
Естественно посмотреть терминалом лог связи МК-СИМ300 во время таких глюков не могу.

Скорее всего у меня не правильный алгоритм GPRS соединения, так как найти пример не в даташите ни на форумах не смог.
Может кто поделится алгоритмом, или подскажет как правильно держать GPRS подключение всегда открытым. То есть при включении питания/пропадании сети пытатся соединятся с интернетом... короче что б при любых условия было соединение с интернетом.

Заранее спасибо.


ЗЫ: у меня все реализовано относительно команды ipstatus, но вот как правильно реагировать на все значения я не нашел.
если ответ: INITIAL или GPRSACT или IP START или IP CONFIG то коннектимся:
at+creg?
at+cgreg?
at+cgatt=1
at+cipcsgp=1 бла бла
at+cstt
at+ciicr
Ок
at+cifsr

(Вопрос: обязательно ли учитывать ответы на каждую команду(у меня учитывается только ответ ОК на at+ciicr) или можно при неудаче соединения пытаться снова???)

Если IP STATUS или IP CLOSE конектимся к серверу:
at+cipstart=ТСП, адрес, порт
ждем CONNECT OK
at+cipsend=164
/ Данные/
at+cipclose

если при опросе ipstatusсом ответ CONNECTING или CONNECT OK (не закрывается долго соединение) или IP START или IP CONFIG повторяется большое количство раз подряд - тогда резет.

если ответ PDP DEACT или IP IND - резет сразу



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

Вот и прошу Вашей помощи...
av-master
еще год проб и ошибок, добавятся обработчики всех ответов, ошибок, проверки регистрации и т.д. и через год вопросов тут на форуме вы Сможете запустить свой трекер на 300-ке ( устаревшей) и еще более устаревшем модуле GPS...
Темболе ганять данные в Текстовом виде (( ИМХО никто уже так не делает..

Для начала пишите обработку всех ответов, в том числе и тех которых не может быть... например недавно ( 2 года работаем с модулем) появился ответ TCP CONNECTING а ПО ждало CONNECT .. в итоге полная неработоспособность...
mr_freeman
Вот и прошу готовый алгоритм мож. у кого-то есть? или совет конкретный, или указание на ошибку.
А по поводу того что модуль устарей - меня мало волнует т.к. уже закуплено/собрано 12 штук трекеров для собственных нужд.
А глюк вылез только один этот с пропаданием связи...
есть вариант ездить с дальнобойщиком с ноутбуком и терминалом и ждать пока вылезет ошибка, но это уже крайняя мера.
Кроме того я не верю что на этом форуме никто не разрабатывал устройства с таким модулем где требовался постоянный коннект с интернетом (удаленное управление, сигнализации, тот же трекер например)
av-master
разрабатывали. и конект есть, И перезапуск в случай чего предусмотрен. и целая подпрограмма отлова ошибок и записи их во флеш для анализа... и денег и времени угрохано мама негорюй. может кто и поделится. но пока , лично я не вижу смысла.
Вы для начала себе алгоритм нарисуйте. лично у нас на каждом этапе 5 попыток потом или перезапуск или Шат и переустановка соединения.
еще, как можно реже нужно перезапускать, симкарта не вечная 65000 перезапусков и все.
какой уровень сигнала перед пропаданием ? Вы проверяете его ? передаете ?
Напряжение питания ? схема включения ? паразитная запитка ? бинарные данные которые могут глюкануть модуль .... и тд...
Да и если словили конектинг, то у нас сразу клоссе и переконект, ... и так пока нормальный конект не получим (без ОК) так как в транспарантном режиме и проще и лучше работать.
mr_freeman
Спасибо. буду пробывать.
Да перезапуск то такое, даже если делать 4 перезапуска в день симки на 44 года хватит, а чаще врятли нужно будет.
с питанием все нормально, проблем нет, питается через DC/DC преобразователь 24/12 дальше лин. регулятор. да и не в питании дело. Схема в основном из даташита.
Я думаю может проблема в том что ответы на at+creg? и at+cgreg? не учитываются? думал, если регистрации нету, то после попытки соединения будет ошибка, дальше попытка повторного соединения и так пока регистрацию не схватит... может тут проблема?

box415
Цитата(mr_freeman @ Nov 2 2010, 01:24) *
Я думаю может проблема в том что ответы на at+creg? и at+cgreg? не учитываются? думал, если регистрации нету, то после попытки соединения будет ошибка, дальше попытка повторного соединения и так пока регистрацию не схватит... может тут проблема?

Обращаю ваше внимание на то, что наличие обеих регистраций условие для соединения необходимое, но, к сожалению, не достаточное crying.gif При плохой связи модуль может устойчиво находиться в состоянии, когда подтверждает регистрации, но не в состоянии установить и поддерживать соединение. Единственный выход в этом случае - выполнить рестарт. Возможно при повторном согласовании условий приема/передачи будут выбраны другие параметры, более подходящие для текущей обстановки.
mr_freeman
Вопрос в другом. Не приводет ли попытка соединения без регистрации к зависанию/переходу в какой-то неучтенный режим?
И, как себя ведет GPRS соединение при пропадании сети? отключается?
Master of Nature
Цитата(mr_freeman @ Nov 2 2010, 12:26) *
Вопрос в другом. Не приводет ли попытка соединения без регистрации к зависанию/переходу в какой-то неучтенный режим?
И, как себя ведет GPRS соединение при пропадании сети? отключается?

Попробуйте все же логить процесс обмена с модемом, а потом проанализировать
Я бы для анализа добавил сюда
AT+CSQ - уровень сигнала GSM, с учетом что значение актуально только если есть регистрация.

И еще не совсем понял зачем нужна команда AT+CGATT, если вы пользуетесь встроенным стеком.

Предварительно подозрение такое - у вас проблемы с антенной. Когда в лаборатории все делаете - станция не меняется.
А вот когда машина едет - уровень сигнала может быть хуже. Из-за каких-то глюков (не видя схемы и платы не угадаешь) модем банально теряет сеть.
Дополнительно - проблем с питанием нету?

Цитата(mr_freeman @ Nov 2 2010, 12:26) *
Вопрос в другом. Не приводет ли попытка соединения без регистрации к зависанию/переходу в какой-то неучтенный режим?
И, как себя ведет GPRS соединение при пропадании сети? отключается?
При пропадании сети GPRS естественно разрывается.
box415
Цитата(mr_freeman @ Nov 2 2010, 12:26) *
Вопрос в другом. Не приводет ли попытка соединения без регистрации к зависанию/переходу в какой-то неучтенный режим?

Нет скорее всего не приведет, т.к. ситуация для ПО модуля очень простая.
Цитата(mr_freeman @ Nov 2 2010, 12:26) *
И, как себя ведет GPRS соединение при пропадании сети? отключается?

А вот здесь многообразие вариантов неисчислимо. Вам уже намекали, что здравым будет алгоритм - "при малейшем отклонении - все по-новой" Я бы еще добавил, что поскольку у вас ситуация ограниченная (всего несколько десятков эксплуатируемых устройств), то стоит начать с проверки антенного хозяйства. Антенны должны быть в вашем случае обязательно двухдиапазонными, правильно смонтированными и с минимальной длиной кабеля. Все проблемы и нетестированное многообразие поведения модуля начинается при ухудшении условий связи. Обычно сразу начинают лечить алгоритм, а на антенное хозяйство не обращают внимание, а зря.
rx3apf
Цитата(Master of Nature @ Nov 2 2010, 11:42) *
И еще не совсем понял зачем нужна команда AT+CGATT, если вы пользуетесь встроенным стеком.

У меня на SIM900 встроенный стек не оживает (на AT+CIPSTART немедленно "ERROR"), если не дать AT+CGATT=1. Причем почему-то иногда, когда модуль находится просто в режиме ожидания, регистрация GPRS отваливается (а может часами держаться, как звезды встанут), пришлось +CGATT=1 влепить непосредственно перед +CIPSTART, чтобы обойти такую ситуацию.
Master of Nature
Цитата(rx3apf @ Nov 2 2010, 13:21) *
У меня на SIM900 встроенный стек не оживает (на AT+CIPSTART немедленно "ERROR"), если не дать AT+CGATT=1. Причем почему-то иногда, когда модуль находится просто в режиме ожидания, регистрация GPRS отваливается (а может часами держаться, как звезды встанут), пришлось +CGATT=1 влепить непосредственно перед +CIPSTART, чтобы обойти такую ситуацию.
Встроенный стек у СИМ900 исследовать пока не было возможности. А вот в СИМ300 использовал команду
AT+CIPCSGP=1,"<apn>" - где <apn> - точка доступа, определяемая оператором сотовой связи.
Без этого CIPSTART тоже что-то не работал smile.gif
box415
Цитата(rx3apf @ Nov 2 2010, 13:21) *
У меня на SIM900 встроенный стек не оживает (на AT+CIPSTART немедленно "ERROR"), если не дать AT+CGATT=1.

+1. Внешнее исполнение CGATT гораздо надежнее и на SIM300, чем внутри его стека.
Цитата(rx3apf @ Nov 2 2010, 13:21) *
Причем почему-то иногда, когда модуль находится просто в режиме ожидания, регистрация GPRS отваливается (а может часами держаться, как звезды встанут),


Звездами управляет оператор, причем все операторы по-разному. Например Мегафон Северо-Запад в худшем случае будет терпеть неиспользуемую регистрацию GPRS часа четыре не больше.
rx3apf
Цитата(Master of Nature @ Nov 2 2010, 12:36) *
Встроенный стек у СИМ900 исследовать пока не было возможности. А вот в СИМ300 использовал команду
AT+CIPCSGP=1,"<apn>" - где <apn> - точка доступа, определяемая оператором сотовой связи.
Без этого CIPSTART тоже что-то не работал smile.gif

Я это тоже даю, но при этом если потом поглядеть +cgatt?, может быть 1, а может и 0. И, даже если 1, то когда дело дойдет до соединения, окажется 0, и +cipstart даст ошибку. Так что ручками, ручками...Все на одном операторе, MTC, но может часами держаться, а может через десять минут отвалиться.
mr_freeman
Антенны вот эти: http://www.rcscomponents.kiev.ua/a32593.html
на плате все просто дорожки 1.5см до SMA разъема, с обратки экран.
Питание тоже, как писал, стабильное.

Если бы была возможность вести логи, сам бы проблему решил)))
Goodefine
На всякий случай, водители имеют доступ к оборудованию?...
Master of Nature
Цитата(mr_freeman @ Nov 2 2010, 20:11) *
Если бы была возможность вести логи, сам бы проблему решил)))
Связь Пропадает в одном и том же месте или в разных?
Если в одном и это недалеко - то попробуйте съездить туда и проверить там качество связи?

логи можно писать на автомате, отправить машину в рейс и пусть пишутся куда-то во внутреннюю память
А по возвращении - считать и проанализировать
mr_freeman
Цитата(Goodefine @ Nov 2 2010, 20:43) *
На всякий случай, водители имеют доступ к оборудованию?...


Теоретически имеют, но не в этом дело... думали уже об этом...

Цитата(Master of Nature @ Nov 2 2010, 22:56) *
Связь Пропадает в одном и том же месте или в разных?
Если в одном и это недалеко - то попробуйте съездить туда и проверить там качество связи?


В разных...

вот как видится кратковременная пропажа со стороны сервера... это так, для интереса.
av-master
А че писать в память пока нет сигнала и коннекта не сутьба ? имхо даже самые дешевые трекеры это должны уметь, хотябы несколько сотен позиций. Хотя бы в RAM.
mr_freeman
Я думал об этом. Да и не нужно нам было это... самый простой вариант. Кстати, коннект иногда пропадает и не появляется до перезагрузки.
av-master
Для первого варианта еще нормально. на 5-м варианте будет работать, как положено. но для 20 штук. было бы проще купить готовое и не париться (хотя я в это вариант не особо верю) )) А для такого девайса год разработки, проб и ошибок - это нормально. и по стоимости это дороже Выйдет чем купить готовое ( если конечно для себя и несколько штук).

Для начала просто проанализируйте уровень сигнала. Антенны у вас "Гов....ные" ( продавец кстати тоже, это я о наболевшем)) )
Добавте в данные ответ на AT+CSQ. К вашей куче данных уже не помешает... Протокольчик у Вас тоже неочень, такие пакеты слать, этож разориться можно (( у мну пакет 45 байт ключевой и потом 10-к раз изменения к нему по 8-20 байт....

Еще, перезапуск модуля с отключением питания предусмотрен ?
mr_freeman
Цитата(av-master @ Nov 3 2010, 00:31) *
Для первого варианта еще нормально. на 5-м варианте будет работать, как положено. но для 20 штук. было бы проще купить готовое и не париться (хотя я в это вариант не особо верю) )) А для такого девайса год разработки, проб и ошибок - это нормально. и по стоимости это дороже Выйдет чем купить готовое ( если конечно для себя и несколько штук).

Для начала просто проанализируйте уровень сигнала. Антенны у вас "Гов....ные" ( продавец кстати тоже, это я о наболевшем)) )
Добавте в данные ответ на AT+CSQ. К вашей куче данных уже не помешает... Протокольчик у Вас тоже неочень, такие пакеты слать, этож разориться можно (( у мну пакет 45 байт ключевой и потом 10-к раз изменения к нему по 8-20 байт....

Еще, перезапуск модуля с отключением питания предусмотрен ?


С отключением к сожалению нет...

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

Вопрос: как нужно реагировать на все ответы на команду айпистатус? (для моего случая)
Transistor
Цитата(mr_freeman @ Nov 2 2010, 22:57) *
Вопрос: как нужно реагировать на все ответы на команду айпистатус? (для моего случая)

SIM300 seminar2009.ppt
посмотрите слайд 34, там должен быть ответ.
mr_freeman
Цитата(Transistor @ Nov 3 2010, 09:56) *
SIM300 seminar2009.ppt
посмотрите слайд 34, там должен быть ответ.


Пасиб! хорошая схема!
только нету там PDP DEACT...

Хотя только в идеале. Допустим, на практике если статус IP IND висит несколько минут, то можно резетить, так как врятли по другому с него выйдет...
Хотелось бы таких нюансов узнать..
Transistor
Я при PDP DEACT (так же и при IP IND) делаю CIPSHUT, не знаю почему так и правильно ли это(не помню), но давно так работает, и на многих устройствах.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.