Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Опять GPRS
Форум разработчиков электроники ELECTRONIX.ru > Интерфейсы > Форумы по интерфейсам > Сотовая связь и ее приложения
Firer
Добрый день!
Давно пользовался следующей последовательностью:
При загрузке
AT+CIPCSGP=1,"apn","un","pw"
AT+CGATT?
если 0 то подача
AT+CGATT=1

затем при соединении:
AT+CIPSHUT
и
AT+CIPSTART="TCP","ip" (для старого sim300 ip без кавычек)

и далее после получения CONNECT и пары секунд
AT+CIPSEND=длина
ожидание > и отправка пакета.

Но оказалось что в некоторых регионах России модули отказываются соединяться по GPRS (периодически, либо вообще).
Все перевернул, причин не нашел.
Запросил в МТ-Систем Москва, сказали что соединяться нужно по другому алгоритму:

тогда тут скорее всего дело вот в чем. Когда подключаетесь к серверу проделывайте такой путь:
CREG?
CGATT? (если 0, то подать CGATT=1, если 1 то идти дальше) - нельзя подавать CGATT=1 когда он уже и так 1.
CSTT
CIICR
CIFSR - обязательно, принудительно запросите IP
CIPSTART

Затем завершаем соединение по AT+CIPCLOSE

Реализовал. первое соединение - работает.
При всех повторных - на +CSTT валится ERROR
Какую команду надо подать? CIPSHUT ?

Также у меня есть подозрение что на 115200 модуль не успевает работать и при загрузке от сети пропускает символы идущие подряд (размер буфера тут похоже не влияет т.к. даже команду длиной около 20 символов не воспринимает). Контроль RTS/CTS не помогает. Установка задержек по 1мс между байтами лечит ситуацию пропадания ответов на команды и молчания. Кто на какой скорости с модулем работает?
_Артём_
Цитата(Firer @ Nov 29 2012, 20:50) *
AT+CIPSHUT
и
AT+CIPSTART="TCP","ip" (для старого sim300 ip без кавычек)


CIPSTART

Затем завершаем соединение по AT+CIPCLOSE

+CIPSHUT мне кажется явно лишней при установлении соединения, да и в других многих случаях.
Для закрытия сокета +CIPCLOSE хватает.
А +CIPSHUT только для "сброса" зависшего GPRS - иногда помогает.

Цитата(Firer @ Nov 29 2012, 20:50) *
CIFSR - обязательно, принудительно запросите IP

Интересная мысль.

Цитата(Firer @ Nov 29 2012, 20:50) *
Также у меня есть подозрение что на 115200 модуль не успевает работать и при загрузке от сети пропускает символы идущие подряд (размер буфера тут похоже не влияет т.к. даже команду длиной около 20 символов не воспринимает). Контроль RTS/CTS не помогает. Установка задержек по 1мс между байтами лечит ситуацию пропадания ответов на команды и молчания. Кто на какой скорости с модулем работает?


На 115200 simcom может работать и без RTS-CTS.
Почему-то (уже не помню почему) перед посылкой пакета у меня шлётся команда
Цитата
AT+IPR=115200 ; или другая нужная скорость

Работает без проблем. И на sim300 и на sim900.
box415
1.Если проблема носит региональный характер, то попробуйте в стартовые настройки включить команду AT+CR99=0, то есть перейдите на более раннюю редакцию GPRS. Возможно, у операторов устаревшее оборудование. Такое наблюдалось.
2.Фокус с CIFSR тянется еще с SIM300. Странно, но это было обязательное средство для обеспечения устойчивого соеединения.
3. Если по смыслу у вас сеансовые соединения, то надежнее получается, по нашему опыту, если использовать CIPSHUT.
Firer
Уважаемые, правда ли что на 115200 без RTS/CTS у всех ок?
Контроллеры какие? Частота?
На AVR у меня может все и ок, а вот на STM32 72МГц уже пропадает.
Я думаю может просто очень плотно идут байты, а SIM чуть подгрузится сетью и пропускает байтик. Очень похоже на такое поведение.
Slonofil
А DMA не спасёт "отца русской демократии"? Задать break character - и в путь!
Firer
Да решений то много, это я справлюсь, спасибо.
Главное понять - у кого-то еще были прецеденты?
Или почему-то только у меня. Если так то может быть причина то и на в том о чем я думаю.
megajohn
Цитата(_Артём_ @ Nov 30 2012, 00:58) *
А +CIPSHUT только для "сброса" зависшего GPRS - иногда помогает.


а в других "иногда" питание пересбрасывают, или что ?
Alechek
Цитата(megajohn @ Nov 30 2012, 17:57) *
а в других "иногда" питание пересбрасывают, или что ?

Это самое надежное. Остальное все танцы с бубном.
_Артём_
Цитата(megajohn @ Nov 30 2012, 13:57) *
а в других "иногда" питание пересбрасывают, или что ?

Именно. Самый надёжный способ.
Firer
Нигде в железе не сделано сброса питания. Это прошлый век мне кажется.
Мертво ничего не зависает. Все в худшем случае вывожу удержанием Resetа.
Хотя конечно с такими кривостями в настройках соединения...
CADiLO
К сожалению есть моменты когда может намертво повиснуть. И тут даже не модуль будет виноват.
Например в Харькове есть несколько "черных дыр" где затыкаются любые модули и мобилки.
Все что там удалось определить это то что сигнал неожиданно нарастает до максимума и происходит потеря регистрации с сотой.
После этого что устройства, что мобилки - только отключать. Но 5 метров в сторону - и этого эффекта нет.
Firer
Там наверное НЛО летают. И как это заказчикам объяснить?
CADiLO
Скорее - нечистые электромагнитные силы sm.gif
Делать антизависатель снятием питания.
Aleksandr_q
Цитата(CADiLO @ Nov 30 2012, 16:28) *
Скорее - нечистые электромагнитные силы sm.gif
Делать антизависатель снятием питания.


Либо сменить модуль на другой и сравнить работу.
CADiLO
Не переживайте - в Харькове в этих местах тестировали пятерых производителей - результат одинаков.

Firer
Так, еще кое-что выявил. Привожу лог:

инициализация при включении питания:
Call Ready
ATE0

OK
ATQ0

OK
ATV1

OK
AT+IPR=115200

OK
AT&W

OK
AT+CPIN?

+CPIN: READY

OK
AT+GMM

SIMCOM_SIM300D

OK
AT+CMGF=1

OK
AT+CSCS="GSM"

OK
AT+CSAS

OK
AT+CDNSORIP=0

OK
AT+CIPHEAD=1

OK
AT+CIPSPRT=1

OK
AT+CIPMODE=0

OK
AT+CIPATS=0

OK
AT+CIPSCONT

OK
AT+GSN

356895032445705

OK
AT+CIPCSGP=1,"m2m.beeline.ru","beeline","beeline"

OK

обмен раз в 4 минуты:

AT

OK
AT+CREG?

+CREG: 0,1

OK
AT+CGATT?

+CGATT: 1

OK
AT+CSQ

+CSQ: 17,0

OK
AT+CMGR=1

OK
AT+CSTT="m2m.beeline.ru","beeline","beeline"

OK
AT+CIICR

OK
AT+CIFSR

10.251.2.106
AT+CIPSTART="TCP","xx.xxx.xxx.xxx",xxxxx

OK

CONNECT OK
AT+CIPSEND=34

<отправляемые данные 34байта>

SEND OK
+IPD26:<принятые данные>
AT+CIPSEND=16

CLOSED
AT+CIPSHUT

SHUT OK

так все нормально работает-работает, но вдруг:

AT

OK
AT+CREG?

+CREG: 0,1

OK
AT+CGATT?

+CGATT: 1

OK
AT+CMGR=10

OK
AT+CSTT="m2m.beeline.ru","beeline","beeline"

OK
AT+CIICR

OK
AT+CIFSR

10.251.99.223
AT+CIPSTART="TCP","xx.xxx.xxx.xxx",xxxxx

OK

CONNECT OK
AT+CIPSEND=34
<отправляемые данные 34 байта>
до сервера эти данные не доходят.
долго ждем от модуля подтверждения ответа (2мин), вместо него приходит:
CLOSED

CLOSED
AT+CIPCLOSE

ERROR
AT+CIPSHUT

SHUT OK

и все, сколько повторных попыток не делается (ip динамический видно каждый раз разный выдается) ситуация повторяется.

Спасает только полная программная перезагрузка модуля (удержание POWERKEY). Она помогает всегда. Дергать питание не нужно.

Аппаратных ошибок в схеме нет.

Кто что скажет?
Alt.F4
Цитата
AT+CMGR=10
Зачем это здесь?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.