реклама на сайте
подробности

 
 
> Если нет ответа на команду, что делать?
Rash
сообщение Oct 5 2017, 08:29
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231



Добрый день.
Есть несколько вопросов относительно правильной последовательности при общении AT командами с SIM800R?

1. В SIM800R была передана AT команда, но на неё нет ответа или пришел ошибочный (битый) ответ. Что делать по истечению определённого таймаута? Какое это должно быть время (хотя бы для команд независимых от сети)?

Предполагаю, что если нет ответа, то необходимо послать эту команду ещё раз, например через 1..5 секунд. Но этот метод не эффективный, т.к. на самом деле модуль задумывается (это уже выяснили почему) и даёт ответ потом на две команды подряд. Например:

Код
AT        // Проверка связи и ждём 2 секунды ответа
AT        // ответа нет, истёк таймаут, посылаю ещё раз
OK        // ответа на 1-ую команду AT

AT+CBC    // Запрос напряжения АКБ, т.к. я получил OK на предыдущую команду

OK        // ответа на 2-ую команду AT  [b]!!! Тут происходит коллизия[/b]

+CBC: 0,92,4136    // Ответ напряжения АКБ
OK            // Ответ OK для запроса напряжения АКБ


В данном примере коллизию можно обойти т.к. я жду конкретный ответ для обработки +CBC

Но вот вариант с вклиниванием передачи данных, например по BT, смещает мой обработчик. Можно дописать ещё различных условий, но не считай, что так работать правильно.

Код
AT        // Проверка связи и ждём 2 секунды ответа
AT        // ответа нет, истёк таймаут, посылаю ещё раз
OK        // ответа на 1-ую команду AT

+BTSPPDATA: 1,16,SIMCOMSPPFORAPP    // Пришли данные по BT

AT+CBC    // Запрос напряжения АКБ, т.к. я получил OK на предыдущую команду

OK        // ответа на 2-ую команду AT  [b]!!! Тут происходит коллизия[/b]

AT+BTSPPSEND=1,11    // Запрос на передачу по BT, т.к. я получил OK на предыдущую команду

+CBC: 0,92,4136    // Ответ напряжения АКБ
OK                // Ответ OK для запроса напряжения АКБ

> SPP APP OK        // Передаю по BT, т.к. я получил OK на предыдущую команду
SEND OK            // Подтверждение передачи


2. Другой вариант - установить таймаут ожидания где-то 60 секунд, на любую команду (независимую от оператора) и если нет ответа, перегружать модуль.

Подскажите, кто как делал и какие есть рекомендации от производителя?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
CADiLO
сообщение Oct 5 2017, 12:29
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 6 023
Регистрация: 26-08-05
Из: Днепр
Пользователь №: 7 988



Вы так и не поняли.

>>> Жду ответ, если в течении 2-х секунд

Таймауты в даташите для некоторых команд указаны, но там есть специфика выполнения.

Остальные - ждать не 2 секунды и не придуманное время, а ДО ОТВЕТА.
Если ответа нет никакого, значит или модуль вас не понял или что-то забыли отправить - тут только копать что в обмене не так.

Если это не устраивает, то пишите свой софт для модулей где можно будет строчить командами по вашему желанию.

В свое время Телит описал эту ситуацию с временами - данный текст на 90% справедлив для модулей любого производителя.

Every command issued to the modules returns a result response if response codes are enabled (default). The time needed to process the given command and return the response varies from
command to command and may depend also from the network on which the command may interact. As a result every command is provided with a proper timeout time, if this time elapses without any
result from the operation, then an ERROR response can be reported as if the operation was not successful and the operation is anyway terminated. The timeout time is quite short for commands that imply
only internal set up commands, but may be very long for command that interact with the network (or even a set of Networks). The default timeout is 100 ms for all the commands that have no interaction
with the network or upper software layers. In the table below are listed all the commands whose timeout differs from the default 100 ms and their effective timeout is reported:


Command Time-Out (Seconds)
+CBST 0.2
+CR 0.2
+CRC 0.2
+CRLP 0.2
+CSCS 0.2
+CEER 5
+CGMI 5
+CGMM 5
+CGMR 5
+CGSN 20
+CIMI 20
+CNUM 20
+CREG 5
+COPS 180
+CLCK 180
+CPWD 180
+CLIP 180
+CLIR 180
+CCFC 180
+CCWA 20
+CHLD 20
+CUSD 180
+CAOC 20
+CSSN 20
+CLCC 20
+CPAS 5
+CPIN 20
+CSQ 5
+CPBS 5
+CPBF 20
+CPBW 20
+CALM 5
+CRSL 5
+CLVL 5
+CMUT 5
+CACM 20
+CAMM 20
+CPUC 20
+CMEE 5
+VTS 20
+GMI 5
+GMM 5
+GMR 5
+GSN 20
I3 5
I4 5
I5 5
+CSMS 5
+CPMS 5
+CMGF 5
+CSCA 20
+CSMP 5
+CSDH 5
+CSAS 5
+CRES 5
+CNMI 5
+CMGS 180 / 5 for prompt”>”
+CMSS 180
+CMGW 5 / 5 for prompt”>”
+CMGD 5
+CMGR 5
+CMGL 5
+CGACT 180
+CGATT 180
+CGDATA 20
+CGDCONT 20
+CGPADDR 20
+CGQMIN 20
+CGQREQ 20

The chain Command -> Response shall always be respected and a new command must not be issued before the module has terminated all the sending of its response result code (whatever it may be).
This applies especially to applications that “sense” the OK text and therefore may send the next command before the complete code <CR><LF>OK<CR><LF> is sent by the module.
It is advisable anyway to wait for at least 20ms between the end of the reception of the response and the issue of the next AT command. If the response codes are disabled and therefore the module
does not report any response to the command, then at least the 20ms pause time shall be respected. During command mode, due to hardware limitations, under severe CPU load the serial port can loose
some characters if placed in autobauding at high speeds. Therefore if you encounter this problem fix the baud rate with +IPR command.


--------------------
Не можна втрачати надію. Не можна здаватися до останньої миті. Можливо саме вона, остання мить, принесе весну, яка стане початком нового життя.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Rash   Если нет ответа на команду, что делать?   Oct 5 2017, 08:29
- - CADiLO   А ведь это описано в документации Установить фик...   Oct 5 2017, 09:08
- - Rash   Скорость фиксированная 9600 кбит/сек (было и 11520...   Oct 5 2017, 11:02
- - CADiLO   Странно... Чтобы модуль на АТ не ответил.... Теоре...   Oct 5 2017, 11:46
- - Rash   Модуль на AT команду отвечает. И отвечает 2 раза. ...   Oct 5 2017, 12:22
- - Rash   Ув. CADiLO, скажите, что из приведенных Вами цитат...   Oct 5 2017, 13:00
- - CADiLO   Почему у меня больше чем за десяток лет работы с м...   Oct 5 2017, 13:10
- - Rash   Я просто предусматриваю такую возможность, что мож...   Oct 5 2017, 13:28
- - CADiLO   Все предусмотреть невозможно Одесситы лет 8 назад...   Oct 5 2017, 13:40
- - Rash   Я ж думаю одесситы в следующей версии добавили воз...   Oct 5 2017, 14:02
|- - Short Circuit   хм.. Я тоже периодически проверяю кроме регистраци...   Oct 6 2017, 04:39
- - Mysteo   Что-то у вас правда в схеме наворочено, работал с ...   Oct 6 2017, 05:22
- - Rash   Я уже ранее писал, такое бывает не всегда и может ...   Oct 6 2017, 06:03
- - gerber   Судя по всему, у вас включен какой-то Hardware Flo...   Oct 6 2017, 06:21
- - Rash   Кроме скорости ничего в параметрах порта не менял,...   Oct 6 2017, 06:27
- - CADiLO   Может где лишнюю подтяжку на UART поставили? Пока...   Oct 6 2017, 06:31
- - Rash   Схему загрузил Цепи идущие на мк STM32 GSM_PWRKEY ...   Oct 6 2017, 07:04
- - Mysteo   Уберите резистор R64 и вроде будет счастье на лин...   Oct 6 2017, 07:05
- - CADiLO   Ну как бы да, в даташите нет этих резисторов. Возм...   Oct 6 2017, 08:40
- - Rash   понял, спасибо, ближе к вечеру уберу резисторы R64...   Oct 6 2017, 09:03
- - CADiLO   >>>>Забыл указать, на схеме он не нари...   Oct 6 2017, 09:32
- - Rash   Удалил резистор R64 на линии TXD отчасти помогло. ...   Oct 7 2017, 16:23
|- - abi   Проверьте как настроен режим управления потоком в ...   Oct 9 2017, 13:41
- - Alex311   Здравствуйте, извините может не в ту тему пишу... ...   Oct 9 2017, 13:07
- - Rash   Команда передаётся по линии TX. Первый ответ по RX...   Oct 9 2017, 13:55
- - Rash   Запрос -ответ КодAT+IFC? +IFC: 0,0 что означае...   Oct 9 2017, 15:03
|- - jcxz   Цитата(Rash @ Oct 9 2017, 18:03) Запрос -...   Oct 10 2017, 08:39
- - Mysteo   Попробуйте использовать переходник USB - UART и че...   Oct 10 2017, 08:22
- - Rash   Mysteo, в чём может быть логическая ошибка ПО, есл...   Oct 10 2017, 12:11
- - Rash   Добавлю ещё одно интересное наблюдение. В ожидании...   Oct 10 2017, 14:13
- - Rash   И ещё неприятный подарок от модуля, на скорости 11...   Oct 11 2017, 08:35
- - CADiLO   Хоть и считается что RTOS в модуле многозадачная, ...   Oct 11 2017, 09:38
- - Rash   Я с Вами согласен, что приоритет для GSM стетка. Н...   Oct 11 2017, 11:06
- - CADiLO   RE: Если нет ответа на команду, что делать?   Oct 11 2017, 11:21
- - Rash   Проверил в терминалке, результат точно такой же. Д...   Oct 11 2017, 14:57
- - CADiLO   Попробую на выходные покрутить в цикле вашу инициа...   Oct 11 2017, 17:29
- - Rash   Вечером вообще всё лишнее отключил. Запитал от лаб...   Oct 11 2017, 19:43
- - ArtemKAD   А че выдает по AT+GMR и AT&V ?   Oct 12 2017, 05:25
- - Rash   После включения КодAT+GMR Revision:1418B07SIM...   Oct 12 2017, 06:18
- - CADiLO   СТОП!!! +IPR: 0 Скорость стоит в авт...   Oct 12 2017, 06:51
- - Rash   Я на это тоже обратил внимание. Но когда читаю ско...   Oct 12 2017, 07:07
- - CADiLO   Странно..... >>> Подключил FT232RL (I/O ...   Oct 12 2017, 07:42
- - Rash   FT232RL подключал сейчас, потом делители стоят, ка...   Oct 12 2017, 08:03
- - ArtemKAD   Странно. Помимо раздела DEFAULT PROFILE должны быт...   Oct 12 2017, 11:32
- - Rash   ArtemKAD, Отредактировал предыдущий пост с командо...   Oct 12 2017, 11:53
- - CADiLO   Я сначала тоже думал на автозасыпание, но не склад...   Oct 12 2017, 12:28
- - abi   Попробуйте погонять в цикле другую команду, к прим...   Oct 12 2017, 14:42
- - Rash   Скорость зафиксирована. На команду GMM поведение т...   Oct 12 2017, 15:51


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th August 2025 - 08:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01417 секунд с 7
ELECTRONIX ©2004-2016