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

А +CIPSHUT только для "сброса" зависшего GPRS - иногда помогает.
а в других "иногда" питание пересбрасывают, или что ?
Alechek
Nov 30 2012, 12:33
Цитата(megajohn @ Nov 30 2012, 17:57)

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

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

Делать антизависатель снятием питания.
Aleksandr_q
Nov 30 2012, 14:58
Цитата(CADiLO @ Nov 30 2012, 16:28)

Скорее - нечистые электромагнитные силы

Делать антизависатель снятием питания.
Либо сменить модуль на другой и сравнить работу.
CADiLO
Nov 30 2012, 15:45
Не переживайте - в Харькове в этих местах тестировали пятерых производителей - результат одинаков.
Так, еще кое-что выявил. Привожу лог:
инициализация при включении питания:
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). Она помогает всегда. Дергать питание не нужно.
Аппаратных ошибок в схеме нет.
Кто что скажет?
Цитата
AT+CMGR=10
Зачем это здесь?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.