mr_freeman
Nov 1 2010, 18:30
Добрий день.
Была у меня задача - разработать банальный 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
Nov 1 2010, 19:02
еще год проб и ошибок, добавятся обработчики всех ответов, ошибок, проверки регистрации и т.д. и через год вопросов тут на форуме вы Сможете запустить свой трекер на 300-ке ( устаревшей) и еще более устаревшем модуле GPS...
Темболе ганять данные в Текстовом виде (( ИМХО никто уже так не делает..
Для начала пишите обработку всех ответов, в том числе и тех которых не может быть... например недавно ( 2 года работаем с модулем) появился ответ TCP CONNECTING а ПО ждало CONNECT .. в итоге полная неработоспособность...
mr_freeman
Nov 1 2010, 19:31
Вот и прошу готовый алгоритм мож. у кого-то есть? или совет конкретный, или указание на ошибку.
А по поводу того что модуль устарей - меня мало волнует т.к. уже закуплено/собрано 12 штук трекеров для собственных нужд.
А глюк вылез только один этот с пропаданием связи...
есть вариант ездить с дальнобойщиком с ноутбуком и терминалом и ждать пока вылезет ошибка, но это уже крайняя мера.
Кроме того я не верю что на этом форуме никто не разрабатывал устройства с таким модулем где требовался постоянный коннект с интернетом (удаленное управление, сигнализации, тот же трекер например)
av-master
Nov 1 2010, 20:54
разрабатывали. и конект есть, И перезапуск в случай чего предусмотрен. и целая подпрограмма отлова ошибок и записи их во флеш для анализа... и денег и времени угрохано мама негорюй. может кто и поделится. но пока , лично я не вижу смысла.
Вы для начала себе алгоритм нарисуйте. лично у нас на каждом этапе 5 попыток потом или перезапуск или Шат и переустановка соединения.
еще, как можно реже нужно перезапускать, симкарта не вечная 65000 перезапусков и все.
какой уровень сигнала перед пропаданием ? Вы проверяете его ? передаете ?
Напряжение питания ? схема включения ? паразитная запитка ? бинарные данные которые могут глюкануть модуль .... и тд...
Да и если словили конектинг, то у нас сразу клоссе и переконект, ... и так пока нормальный конект не получим (без ОК) так как в транспарантном режиме и проще и лучше работать.
mr_freeman
Nov 1 2010, 21:24
Спасибо. буду пробывать.
Да перезапуск то такое, даже если делать 4 перезапуска в день симки на 44 года хватит, а чаще врятли нужно будет.
с питанием все нормально, проблем нет, питается через DC/DC преобразователь 24/12 дальше лин. регулятор. да и не в питании дело. Схема в основном из даташита.
Я думаю может проблема в том что ответы на at+creg? и at+cgreg? не учитываются? думал, если регистрации нету, то после попытки соединения будет ошибка, дальше попытка повторного соединения и так пока регистрацию не схватит... может тут проблема?
Цитата(mr_freeman @ Nov 2 2010, 01:24)

Я думаю может проблема в том что ответы на at+creg? и at+cgreg? не учитываются? думал, если регистрации нету, то после попытки соединения будет ошибка, дальше попытка повторного соединения и так пока регистрацию не схватит... может тут проблема?
Обращаю ваше внимание на то, что наличие обеих регистраций условие для соединения необходимое, но, к сожалению, не достаточное

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

Вопрос в другом. Не приводет ли попытка соединения без регистрации к зависанию/переходу в какой-то неучтенный режим?
И, как себя ведет GPRS соединение при пропадании сети? отключается?
Попробуйте все же логить процесс обмена с модемом, а потом проанализировать
Я бы для анализа добавил сюда
AT+CSQ - уровень сигнала GSM, с учетом что значение актуально только если есть регистрация.
И еще не совсем понял зачем нужна команда AT+CGATT, если вы пользуетесь встроенным стеком.
Предварительно подозрение такое - у вас проблемы с антенной. Когда в лаборатории все делаете - станция не меняется.
А вот когда машина едет - уровень сигнала может быть хуже. Из-за каких-то глюков (не видя схемы и платы не угадаешь) модем банально теряет сеть.
Дополнительно - проблем с питанием нету?
Цитата(mr_freeman @ Nov 2 2010, 12:26)

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

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

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

И еще не совсем понял зачем нужна команда AT+CGATT, если вы пользуетесь встроенным стеком.
У меня на SIM900 встроенный стек не оживает (на AT+CIPSTART немедленно "ERROR"), если не дать AT+CGATT=1. Причем почему-то иногда, когда модуль находится просто в режиме ожидания, регистрация GPRS отваливается (а может часами держаться, как звезды встанут), пришлось +CGATT=1 влепить непосредственно перед +CIPSTART, чтобы обойти такую ситуацию.
Master of Nature
Nov 2 2010, 09:36
Цитата(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 тоже что-то не работал
Цитата(rx3apf @ Nov 2 2010, 13:21)

У меня на SIM900 встроенный стек не оживает (на AT+CIPSTART немедленно "ERROR"), если не дать AT+CGATT=1.
+1. Внешнее исполнение CGATT гораздо надежнее и на SIM300, чем внутри его стека.
Цитата(rx3apf @ Nov 2 2010, 13:21)

Причем почему-то иногда, когда модуль находится просто в режиме ожидания, регистрация GPRS отваливается (а может часами держаться, как звезды встанут),
Звездами управляет оператор, причем все операторы по-разному. Например Мегафон Северо-Запад в худшем случае будет терпеть неиспользуемую регистрацию GPRS часа четыре не больше.
Цитата(Master of Nature @ Nov 2 2010, 12:36)

Встроенный стек у СИМ900 исследовать пока не было возможности. А вот в СИМ300 использовал команду
AT+CIPCSGP=1,"<apn>" - где <apn> - точка доступа, определяемая оператором сотовой связи.
Без этого CIPSTART тоже что-то не работал

Я это тоже даю, но при этом если потом поглядеть +cgatt?, может быть 1, а может и 0. И, даже если 1, то когда дело дойдет до соединения, окажется 0, и +cipstart даст ошибку. Так что ручками, ручками...Все на одном операторе, MTC, но может часами держаться, а может через десять минут отвалиться.
mr_freeman
Nov 2 2010, 16:11
Антенны вот эти:
http://www.rcscomponents.kiev.ua/a32593.htmlна плате все просто дорожки 1.5см до SMA разъема, с обратки экран.
Питание тоже, как писал, стабильное.
Если бы была возможность вести логи, сам бы проблему решил)))
Goodefine
Nov 2 2010, 16:43
На всякий случай, водители имеют доступ к оборудованию?...
Master of Nature
Nov 2 2010, 18:56
Цитата(mr_freeman @ Nov 2 2010, 20:11)

Если бы была возможность вести логи, сам бы проблему решил)))
Связь Пропадает в одном и том же месте или в разных?
Если в одном и это недалеко - то попробуйте съездить туда и проверить там качество связи?
логи можно писать на автомате, отправить машину в рейс и пусть пишутся куда-то во внутреннюю память
А по возвращении - считать и проанализировать
mr_freeman
Nov 2 2010, 19:17
Цитата(Goodefine @ Nov 2 2010, 20:43)

На всякий случай, водители имеют доступ к оборудованию?...
Теоретически имеют, но не в этом дело... думали уже об этом...
Цитата(Master of Nature @ Nov 2 2010, 22:56)

Связь Пропадает в одном и том же месте или в разных?
Если в одном и это недалеко - то попробуйте съездить туда и проверить там качество связи?
В разных...
вот как видится кратковременная пропажа со стороны сервера... это так, для интереса.
av-master
Nov 2 2010, 19:22
А че писать в память пока нет сигнала и коннекта не сутьба ? имхо даже самые дешевые трекеры это должны уметь, хотябы несколько сотен позиций. Хотя бы в RAM.
mr_freeman
Nov 2 2010, 19:47
Я думал об этом. Да и не нужно нам было это... самый простой вариант. Кстати, коннект иногда пропадает и не появляется до перезагрузки.
av-master
Nov 2 2010, 20:31
Для первого варианта еще нормально. на 5-м варианте будет работать, как положено. но для 20 штук. было бы проще купить готовое и не париться (хотя я в это вариант не особо верю) )) А для такого девайса год разработки, проб и ошибок - это нормально. и по стоимости это дороже Выйдет чем купить готовое ( если конечно для себя и несколько штук).
Для начала просто проанализируйте уровень сигнала. Антенны у вас "Гов....ные" ( продавец кстати тоже, это я о наболевшем)) )
Добавте в данные ответ на AT+CSQ. К вашей куче данных уже не помешает... Протокольчик у Вас тоже неочень, такие пакеты слать, этож разориться можно (( у мну пакет 45 байт ключевой и потом 10-к раз изменения к нему по 8-20 байт....
Еще, перезапуск модуля с отключением питания предусмотрен ?
mr_freeman
Nov 2 2010, 20:57
Цитата(av-master @ Nov 3 2010, 00:31)

Для первого варианта еще нормально. на 5-м варианте будет работать, как положено. но для 20 штук. было бы проще купить готовое и не париться (хотя я в это вариант не особо верю) )) А для такого девайса год разработки, проб и ошибок - это нормально. и по стоимости это дороже Выйдет чем купить готовое ( если конечно для себя и несколько штук).
Для начала просто проанализируйте уровень сигнала. Антенны у вас "Гов....ные" ( продавец кстати тоже, это я о наболевшем)) )
Добавте в данные ответ на AT+CSQ. К вашей куче данных уже не помешает... Протокольчик у Вас тоже неочень, такие пакеты слать, этож разориться можно (( у мну пакет 45 байт ключевой и потом 10-к раз изменения к нему по 8-20 байт....
Еще, перезапуск модуля с отключением питания предусмотрен ?
С отключением к сожалению нет...
Возможно происходит следующее: я не учел(или не правильно учел) какой-то из ответо на +ipstatus и система ничего не делает, когда оператор отрубает соединение из-за таймаута и происходит переконнект...
Вопрос: как нужно реагировать на все ответы на команду айпистатус? (для моего случая)
Transistor
Nov 3 2010, 05:56
Цитата(mr_freeman @ Nov 2 2010, 22:57)

Вопрос: как нужно реагировать на все ответы на команду айпистатус? (для моего случая)
SIM300 seminar2009.pptпосмотрите слайд 34, там должен быть ответ.
mr_freeman
Nov 3 2010, 11:49
Цитата(Transistor @ Nov 3 2010, 09:56)

SIM300 seminar2009.pptпосмотрите слайд 34, там должен быть ответ.
Пасиб! хорошая схема!
только нету там PDP DEACT...
Хотя только в идеале. Допустим, на практике если статус IP IND висит несколько минут, то можно резетить, так как врятли по другому с него выйдет...
Хотелось бы таких нюансов узнать..
Transistor
Nov 3 2010, 13:08
Я при PDP DEACT (так же и при IP IND) делаю CIPSHUT, не знаю почему так и правильно ли это(не помню), но давно так работает, и на многих устройствах.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.