|
SIM900: если модуль завис, Как определить что модуль завис |
|
|
|
Oct 16 2011, 11:41
|
Частый гость
 
Группа: Участник
Сообщений: 134
Регистрация: 12-08-11
Пользователь №: 66 701

|
Цитата(MKdemiurg @ Oct 16 2011, 14:40)  Используйте аппаратный таймер... Если в течении 5-6 секунд не пришёл ОК - ребут модема или повторение запроса( хотя если документированый ОК не пришёл - то это точно висяк и спасёт только ребут). Я так делаю. На каждую команду 5 сек ожидаение ОК( на самом деле приходит моментально и таймер останавливается - но вдруг). CREG? CGREG - делаю опрос с интервалом 2 секунды до 20 раз пока не приходит +CREG: 0,1 . Превышен лимит опроса - ребут модема. Вообщем в любом случае отловите зависон. Т.е. идеально на каждую команду проверка ответа - тогда висяки не страшны. Ну и ограничить кол-во перезагрузок 2-3 штуки. Спасибо, логика понятна. Сейчас правил код - сделал не через аппаратный таймер, а через декремент двухбайтовой переменной в процедуре ожидания от модема ОК. Рассчитал двухбайтовое значение - сколько будет до "0" через 3 сек, вношу перед посылкой АТ, затем запускаю процедуру чтения в цикле приемного буфера с уменьшением двухбайтовой переменной. Выход из процедуры с флажком= 1, если ОК- дождадись, флажок=0 если двухбайтовая переменная обнулилась, до поступления ОК. Дальше рестарт модему, если флажок=0 Проверил - так работает. С аппаратным таймером у меня не получится в данном проекте сделать, так как его обнуление нужно отлавливать через прерывание, а у меня они уже задействованы спец. образом. На момент работы с модемом - отключены. Но я уже прикинул как сделаю в след. проекте на аппаратном таймере.
|
|
|
|
|
Oct 16 2011, 20:09
|
Участник

Группа: Участник
Сообщений: 62
Регистрация: 7-12-06
Пользователь №: 23 250

|
Цитата(GeGeL @ Oct 16 2011, 10:06)  В этих 8 из 10 случаев регистрация в сети появляется, но жпрс не поднимается? Или нет и регистрации? Если последнее, то возможно, есть недокументированные команды из расширенного инженерного меню, позволяющие принудительно перерегистрировать в сети по IMEI (получить новый TIMSI). Тогда нет необходимости дергать питание. Уточните у Эдуарда. В 8 из 10 случаев CREG неизменно выдает 0,1, а CGREG выдает 0,0, на команду AT+CGATT=1 получаю ответ ERROR. То есть регистрация есть, а GPRS нет. При этом если ребутнуть модем - появляется и GPRS тоже. Вот мне бы как раз команду принудительной разрегистрации или повторной регистрации в сети. Это бы могло помочь.
|
|
|
|
|
Oct 16 2011, 21:05
|
Ортодокс
  
Группа: Свой
Сообщений: 219
Регистрация: 26-10-07
Из: Смела, Украина
Пользователь №: 31 775

|
Цитата(Konstantin Ilichev @ Oct 16 2011, 23:09)  Вот мне бы как раз команду принудительной разрегистрации или повторной регистрации в сети. Это бы могло помочь. См. AT+COPS
|
|
|
|
|
Oct 17 2011, 08:16
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 19-04-07
Пользователь №: 27 182

|
Цитата(Konstantin Ilichev @ Oct 16 2011, 22:09)  В 8 из 10 случаев CREG неизменно выдает 0,1, а CGREG выдает 0,0, на команду AT+CGATT=1 получаю ответ ERROR. То есть регистрация есть, а GPRS нет. При этом если ребутнуть модем - появляется и GPRS тоже. Вот мне бы как раз команду принудительной разрегистрации или повторной регистрации в сети. Это бы могло помочь. А после того как приходит PDP DEACT AT+CIPSHUT делаете?
|
|
|
|
|
Oct 17 2011, 09:19
|
Участник

Группа: Участник
Сообщений: 62
Регистрация: 7-12-06
Пользователь №: 23 250

|
Цитата(Aurochs @ Oct 17 2011, 01:05)  См. AT+COPS Пробовал AT+COPS=1,0,"Beeline", и еще AT+COPS=4,0,"Beeline". Никак не реагирует, на AT+COPS? выдает 0 (автоматический режим). Цитата(xMw @ Oct 17 2011, 12:16)  А после того как приходит PDP DEACT AT+CIPSHUT делаете? По приходу PDP DEACT ничего не делаю вообще. AT+CIPSHUT делаю в двух случаях: 1) при подключении GPRS, если на AT+CIPSTATUS отвечает не INITIAL; 2) при установлении TCP-соединения, если на AT+CIPSTATUS отвечает не INITIAL, не STATUS и не CLOSED. Всё по даташиту.
|
|
|
|
|
Oct 17 2011, 10:26
|

Местный
  
Группа: Свой
Сообщений: 387
Регистрация: 20-12-06
Из: Obninsk
Пользователь №: 23 719

|
Цитата(Konstantin Ilichev @ Oct 17 2011, 13:19)  По приходу PDP DEACT ничего не делаю вообще. Ну и зря. Делаем cipshut и открываем сессию заново. Как правило со второго раза соединяется ок.
|
|
|
|
|
Oct 17 2011, 10:34
|
Местный
  
Группа: Участник
Сообщений: 301
Регистрация: 22-07-09
Пользователь №: 51 470

|
Цитата(MKdemiurg @ Oct 17 2011, 13:24)  Хм...а если не проверять cipstatus? Я вот проверяю CGREG, CGATT и если на CIICR приходит PDP DEACT - делаю рестарт. Просто что конкретно даст AT+CIPSTATUS в плане проверки ? Ничего путевого не даст. Еще с незапамятных времен приколотил на эту кривую команду. CGATT и CIICR - с головой хватает.
|
|
|
|
|
Oct 17 2011, 10:59
|
Участник

Группа: Участник
Сообщений: 62
Регистрация: 7-12-06
Пользователь №: 23 250

|
Цитата(MKdemiurg @ Oct 17 2011, 14:24)  Хм...а если не проверять cipstatus? Я вот проверяю CGREG, CGATT и если на CIICR приходит PDP DEACT - делаю рестарт. Просто что конкретно даст AT+CIPSTATUS в плане проверки ? Я на CIPSTATUS не жалуюсь, загвоздка не в нем, а в том, что при выполнении CGATT=1 получаю сразу ERROR. Я тут CIPSTATUS даже и не вызываю нигде. Если CGATT=1 ответит ОК, то тогда уже IPSTATUS, но там дальше всё нормально. Еще раз: проблема в том, что если появился GPRS, то модем сам его не обнаруживает, на CGATT=1 выдает ERROR, и помогает только перезагрузка с отключением питания модема. Наши поставщики щас ищут, какой командой можно пнуть модем, чтобы он без рестарта поискал GPRS. Цитата(KAlex @ Oct 17 2011, 14:26)  Ну и зря. Делаем cipshut и открываем сессию заново. Как правило со второго раза соединяется ок. Именно так, как только появляются новые данные на отправку, я делаю CIPSEND, получаю ERROR, иду на закрытие TCP-соединения, дальше дается CIPSHUT и при попытке CIPSTART получаю ERROR, то есть со второго раза не соединяется, и дальше так и не соединяется сколько ни пытается. Через паузу иду на закрытие GPRS и пытаюсь подключить GPRS снова, но на CGATT=1 получаю стабильно ERROR. Найти GPRS помогает только сброс модема по PWRKEY и питанию. Цитата(butthead2 @ Oct 17 2011, 14:34)  Ничего путевого не даст. Еще с незапамятных времен приколотил на эту кривую команду. CGATT и CIICR - с головой хватает. Если GPRS есть, то CGATT и CIICR проходят чудесно. Если его нет, то на CGATT=1 уже получаем ERROR. Вот щас выкинул вообще вызов CIPSTATUS из алгоритма, загнал опять в то же состояние - проблема та же. CIPSTATUS не влияет.
|
|
|
|
|
Oct 17 2011, 16:13
|
Местный
  
Группа: Свой
Сообщений: 403
Регистрация: 29-04-11
Из: Украина
Пользователь №: 64 682

|
Цитата(Konstantin Ilichev @ Oct 17 2011, 00:09)  В 8 из 10 случаев CREG неизменно выдает 0,1, а CGREG выдает 0,0, на команду AT+CGATT=1 получаю ответ ERROR. То есть регистрация есть, а GPRS нет. При этом если ребутнуть модем - появляется и GPRS тоже. Вот мне бы как раз команду принудительной разрегистрации или повторной регистрации в сети. Это бы могло помочь. Обратите внимание на предисторию этой ситуации: я так понял, возникает при переводе работающей симки оператором из состояния "Запасы" в состояние "Работа". Очень похожая ситуация возникает при игре с клоном симки: при включенном оригинале включаем клон, делаем исходящий звонок и затем клон тушим. При этом оригинал в сети (по CREG), но жпрс поднять не можем. Связано с тем, что клон затребовал другой TMSI, и прописанный в оригинале устарел. Попробуйте: 1. Доходят ли в таком состоянии входящие звонки на модем? 2. Сделать исходящий звонок (возможно, с первого раза не получится) и затем пробовать жпрс; 3. Ну и опять же, попробовать перерегистрацию в сети каким-либо образом (скорее всего, то, что Вы пробовали, не возымело эффекта, т.к. собственно, перерегистрации и не было - сеть оставлась та же).
|
|
|
|
|
Oct 18 2011, 06:43
|
Участник

Группа: Участник
Сообщений: 62
Регистрация: 7-12-06
Пользователь №: 23 250

|
Цитата(GeGeL @ Oct 17 2011, 20:13)  Обратите внимание на предисторию этой ситуации: я так понял, возникает при переводе работающей симки оператором из состояния "Запасы" в состояние "Работа". Очень похожая ситуация возникает при игре с клоном симки: при включенном оригинале включаем клон, делаем исходящий звонок и затем клон тушим. При этом оригинал в сети (по CREG), но жпрс поднять не можем. Связано с тем, что клон затребовал другой TMSI, и прописанный в оригинале устарел. Да, очень похоже. По CREG я тоже получаю 0,1. Цитата(GeGeL @ Oct 17 2011, 20:13)  Попробуйте: 1. Доходят ли в таком состоянии входящие звонки на модем? Сим-карта не поддерживает вх/исх звонков (только m2m). Попробую сделать в такой ситуации сброс модема по PWRKEY и по питанию с повтором не чаще 20 минут.
|
|
|
|
|
Oct 18 2011, 07:24
|
Участник

Группа: Участник
Сообщений: 62
Регистрация: 7-12-06
Пользователь №: 23 250

|
Цитата(GeGeL @ Oct 18 2011, 11:02)  Будет возможность, попробуйте все ж ради хохмы ATD Мне кажется, что статус исходящих по идее будет проверяться уже после регистрационных моментов. Суть такова: мы пытаемся инициировать сеанс устаревшим TMSI. По идее, сеть не может распознать абонента и в ответ инициирует идентификацию пи IMSI и пропишет в симку новый TMSI, и только потом даст отлуп на исходящий согласно тарифного плана. Но т.к. перерегистрация уже произойдет, то жпрс может подключиться после этого. Проверили следующим образом. Ввели модем в описанное выше состояние, симка в режиме "Активирована", на CGATT=1 выдает ERROR. Далее делаем звонок ATDxxxxxx, небольшая пауза, NO CARRIER. Далее пробуем CGATT=1 - ERROR. Пробовали звонки на разные номера, делать IPSHUT, CGATT=0, разные комбинации - сдвигов нет, к сожалению, GPRS не подключается, помогает только полный сброс.
|
|
|
|
|
Oct 20 2011, 08:40
|

Местный
  
Группа: Свой
Сообщений: 387
Регистрация: 20-12-06
Из: Obninsk
Пользователь №: 23 719

|
Цитата(Konstantin Ilichev @ Oct 17 2011, 14:59)  Именно так, как только появляются новые данные на отправку, я делаю CIPSEND, получаю ERROR, иду на закрытие TCP-соединения, дальше дается CIPSHUT и при попытке CIPSTART получаю ERROR, то есть со второго раза не соединяется, и дальше так и не соединяется сколько ни пытается. Через паузу иду на закрытие GPRS и пытаюсь подключить GPRS снова, но на CGATT=1 получаю стабильно ERROR. Найти GPRS помогает только сброс модема по PWRKEY и питанию. Как часто появляются данные? Может ТСР закрывается по таймауту? Тогда тут болезнь модуля на закрытие сессии проявляется. Китайцы проинформированы, ждем исправлений.
|
|
|
|
|
Aug 13 2014, 07:03
|
Группа: Новичок
Сообщений: 7
Регистрация: 13-08-14
Пользователь №: 82 535

|
Добрый день! Подскажите пожалуйста, в случае зависания sim900 на пине STATUS будет присутствувать высокий уровень?
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|