Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 12

Тема: модем пм-01 иногда не отвечает

  1. #1

    По умолчанию модем пм-01 иногда не отвечает

    Здраствуйте!

    Использую 25 контроллеров ПЛК-100-24 PL + модемов ПМ-01-24.АВ.
    В программе в контроллере используется вот такой псевдоцикл:
    1. AT+CREG?
    2. AT+CGATT=1
    3. AT+CIPHEAD=1
    4. AT+CIPCSGP=1. "you_apn", "you_login", "you_password"
    5. AT+CDNSORIP=0
    6. AT+CIPSTART="TCP", "you_ip", "you_port"
    7. Основной цикл, в котором все крутится.

    Режим эха отключен, скорость 9600, RS-485

    Для некоторых модемов (2 или 3) замечено следйщее.

    При включении питания контроллера (когда обрабатываем метку 1) или при выходе из освновоно цикла на метку 1 модем:
    - в ответ на команду AT+CREG? честно видит отправленное количество байтов (9 с учетом $R)
    - при считывании из буфера - ничего не происходит, возвращает 0. Задавал паузу аж до 10 секунд
    - при использовании AT+CIPSHUT правильно отправляется 11 байтов (с учетом $R)
    - в ответ же пустота.

    И вот получается, что контролер стучит модему команды без отановки, команды уходят - и ничего не приходит.
    Что делать, какие идеи?

    ЗЫ: Открытие порта происходит нормально, если бы не работал - ничего не было бы отправлено.
    + на остальных (работающих) контроллерах модемах работает один и то же программый код.
    Последний раз редактировалось grayeddy; 05.07.2010 в 15:54.

  2. #2

    По умолчанию

    Кусок кода, на всяки случай добавил SysComClose(0) - порт по любому откроется.
    По метке 1 в str_1 Ничего нет.
    Могло ли повлиять отстутствие SysComClose(0) - пока не понял, не могу проверить, нет под рукой оборудования.

    PS. Если руками стучать в гипертерминале AT+CREG?, предварительно связашись с модемом - то все ОК.

    -----------------------------------------------------

    FUNCTION ReadFromBuf : STRING
    VAR_INPUT
    END_VAR
    VAR
    buf: ARRAY[0..255] OF BYTE;
    i, count: DWORD;
    a_char: POINTER TO STRING;
    str: STRING(255);
    END_VAR

    str := '';
    count := SysComRead(0, ADR(buf), 256, 0);
    IF count > 0 THEN
    FOR i := 0 TO count - 1 DO
    a_char := ADR(buf[i]);
    str := CONCAT(str, LEFT(a_char^, 1));
    END_FOR
    END_IF
    ReadFromBuf := str;

    -----------------------------------------

    CASE init_stage OF
    0:

    str_1 := '';
    str_2 := '';
    str_3 := '';
    str_4 := '';
    str_5 := '';
    str_6 := '';
    rcvStrTest := '';

    FirstInit();
    CheckTabel();
    CheckStatus(FALSE);
    CheckLight();

    g_source := 1;
    port_opened := FALSE;
    port_init := FALSE;
    SysComClose(0); (* 05.07.2010 <------ добавил, пока не проверил*)

    IF NOT port_opened THEN
    com_handle := SysComOpen(0);
    IF com_handle <> 16#FFFFFFFF THEN
    port_init := TRUE;
    ELSE
    SysComClose(0);
    com_handle := SysComOpen(0);
    port_init := TRUE;
    END_IF

    IF port_init THEN
    com_set.Port := 0;
    com_set.dwBaudRate := 9600;
    com_set.byParity := 0;
    com_set.dwTimeout := 0;
    com_set.byStopBits := 0;
    com_set.dwBufferSize := 0;
    com_set.dwScan := 0;
    res := SysComSetSettings(0, ADR(com_set));
    (* успешно открыли *)
    IF NOT res THEN
    port_opened := TRUE;
    (* Регистрация в сети *)
    str := 'AT+CREG?$R';
    i := SysComWrite(0, ADR(str), LEN(str), 0);
    timer(IN := TRUE, PT := t#5s);
    init_stage := 1;
    END_IF
    END_IF
    END_IF


    1: (* подключение модема к сервису GPRS *)
    CheckLight();
    timer(IN := TRUE);
    IF NOT timer.Q THEN
    timer(IN := FALSE);
    str_1 := ReadFromBuf();
    IF str_1 <> '' THEN
    IF FIND(str_1, '+CREG: 0,1') <> 0 THEN
    str := 'AT+CGATT=1$R';
    i := SysComWrite(0, ADR(str), LEN(str), 0);
    timer(IN := TRUE, PT := t#5s);
    init_stage := 2;
    ELSE
    init_stage := 0;
    END_IF
    ELSE
    init_stage := 0;
    END_IF
    END_IF
    Последний раз редактировалось grayeddy; 05.07.2010 в 17:16.

  3. #3

    По умолчанию

    Проблема остается. 5 модемов из 25 регулярно сваливаются, остальные работают.
    Замечено, что не работает TxD - индикатор на панели модема, показывающий передачу от модема (тут прямая связь с первым постом, это означает что на модем приходят команды, видно но RxD, в ответ же ничего. Странно, модем всегда должен отвечать).
    Лечится радикальным способом - выключить и включить питание модема.
    Такой вопрос - это не может обусловлено помехами? В качестве связи по RS-485 используется витая пара.

  4. #4

    По умолчанию

    после того как вы выкл-вкл питание до какого момента модемы работают нормально?
    во избежание помех: соберите схемку с проблемными модемами на столе и сравните.
    "ОВЕН"
    тел.: (495) 221-60-64 доб. 1224
    e-mail: i.karetkin@owen.ru

  5. #5

    По умолчанию

    > после того как вы выкл-вкл питание до какого момента модемы работают нормально?

    не могу однозначно сказать.бывает, что час, день, два дня или неделю. закономерности не выявил.
    тест связи идет две недели.

    > во избежание помех: соберите схемку с проблемными модемами на столе и сравните.

    у нас уже собраны в ящики, расстояние между модемом и контроллером - около 10 см. сами ящики стоят на трансформаторных подстанциях. это может повлять?

  6. #6

    По умолчанию

    Сами ящики заземлены.
    Тогда вопрос - в каких случаях возможно "затыкание" TxD (или) RxD?
    Какие могут варианты?

  7. #7

    По умолчанию

    вскрыл корпус модема, нашел Sim300dz S2-10119b-f00d
    на Sim300 помимо этого указаны S/n + IMEI.
    последний номер продублирован на корпусе модема?
    можно ли узнать номер версии прошивки SIM-300, указав IMEI?
    Последний раз редактировалось grayeddy; 15.07.2010 в 13:36.

  8. #8

    По умолчанию

    про версию прошивки затем и спрашиваю, что, как насколько мне известно, если использовались старые версии прошивики Sim300 - модули иногда зависали, что только снятием и включением питания можно было вернуть их к работе.
    проблема в том, что дергание питания было не предусмотрено изначально. да, это ошибка, но хотелось бы обойтись на данный момент малой кровью.

  9. #9

    По умолчанию

    Здравствуйте. Безусловно помехи влиять могут, но ответ в виде Error еще никто не отменял.
    Свободных реле для перезапуска по питанию у вас нет? или щиты уже эксплуатируются?
    "ОВЕН"
    тел.: (495) 221-60-64 доб. 1224
    e-mail: i.karetkin@owen.ru

  10. #10

    По умолчанию

    решили, что будем перезапускать питание модема по команде контроллера (и програмной логики).
    хотелось бы узнать, как реализовано у других - тоже дергают питание модема через контроллер или все таки полагаются целиком на модем?
    щиты тестируются пока. все упирается в надежность связи.

    и все же, можно узнать номер прошивки у сима в модеме? я навел справки - до 12 версии был такой косяк у сим300 - потеря связи и зависания.
    и получится ли прошить (чисто гипотетически) при наличии соотвествующего оборудования?
    Последний раз редактировалось grayeddy; 16.07.2010 в 13:14.

Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •