PDA

Просмотр полной версии : AT command



JoSaint
06.04.2011, 12:18
IF output1 THEN
enable_to_send:=TRUE;
END_IF;
r_trig2(clk:=enable_to_send);
IF enable_to_send THEN
WHILE NOT(cmd_ok_ok) DO
SendReceive(enable:=r_trig2.Q , port_num:=0 , cmd_str:='AT$R');
IF (SendReceive.k_receive_byte>0) THEN
answer_ok:=SendReceive.received_answer;
col_symb_ok:= FIND( answer_ok, 'OK' );
IF (col_symb_ok=6) THEN
cmd_ok_ok:=TRUE;
ELSE
cmd_ok_ok:=FALSE;
END_IF;
END_IF;
END_WHILE;
enable_to_send:=FALSE;
END_IF;

Что тут военного почему ПЛК виснет???

Дмитрий Артюховский
06.04.2011, 13:28
в сканирующих контроллерах нельзя ждать событие в цикле

JoSaint
06.04.2011, 15:29
просьба есть рассказать поподробнее или если есть ссылка где можно почитать об этом! заранее спасибо

lara197a
06.04.2011, 19:33
Контроллер понимает такое зацикливание, как зависание и перегружается.
Иногда это применяют намеренно, для перезагрузки ПЛК.

swerder
07.04.2011, 10:07
JoSaint у вас в цикле while do идет ожидание чего-то там, которое скорее всего просто затягивается на очень длительный срок и выхода из этого цикла в течении 1сек (по умолчанию) нет - зависание, перезагрузка