|
Опять GPRS, SIM300D/SIM900D |
|
|
|
Nov 29 2012, 18:50
|
Местный
  
Группа: Свой
Сообщений: 294
Регистрация: 7-01-05
Пользователь №: 1 832

|
Добрый день! Давно пользовался следующей последовательностью: При загрузке 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
|
Гуру
     
Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322

|
Цитата(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.
|
|
|
|
|
Nov 30 2012, 07:17
|
Участник

Группа: Участник
Сообщений: 30
Регистрация: 14-10-10
Пользователь №: 60 149

|
1.Если проблема носит региональный характер, то попробуйте в стартовые настройки включить команду AT+CR99=0, то есть перейдите на более раннюю редакцию GPRS. Возможно, у операторов устаревшее оборудование. Такое наблюдалось. 2.Фокус с CIFSR тянется еще с SIM300. Странно, но это было обязательное средство для обеспечения устойчивого соеединения. 3. Если по смыслу у вас сеансовые соединения, то надежнее получается, по нашему опыту, если использовать CIPSHUT.
|
|
|
|
|
Nov 30 2012, 14:58
|
Местный
  
Группа: Участник
Сообщений: 251
Регистрация: 12-05-11
Из: Украина, Киев
Пользователь №: 64 947

|
Цитата(CADiLO @ Nov 30 2012, 16:28)  Скорее - нечистые электромагнитные силы  Делать антизависатель снятием питания. Либо сменить модуль на другой и сравнить работу.
|
|
|
|
|
Dec 2 2012, 08:53
|
Местный
  
Группа: Свой
Сообщений: 294
Регистрация: 7-01-05
Пользователь №: 1 832

|
Так, еще кое-что выявил. Привожу лог:
инициализация при включении питания: 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). Она помогает всегда. Дергать питание не нужно.
Аппаратных ошибок в схеме нет.
Кто что скажет?
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|