Вход

Просмотр полной версии : кто объяснит



Safron
21.09.2010, 04:13
всем привет. столкнулся с непонятным явлением.

1) zoom_(in:=weight_, in_min:=0, in_max:=100, out_min:=0, out_max:=max_extrim);
IF zoom_.out<0 THEN
weight:=0;
ELSE
weight:=zoom_.out;
END_IF
вопрос в том, что несмотря на то, что если выполняется условие zoom_.out<0, переменная weight продолжает отображаться в экспонентоциальной форме, а не становиться 0.

2) кусок из подпрограммки

tm(in:=kbrd=key_start, pt:=t#1s);
trig.clk:=tm.q
IF trig.q=TRUE THEN
flag:=TRUE;
END_IF

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

Филоненко Владислав
21.09.2010, 08:07
А подпрограмку запускаете? и
бывают моменты, когда kbrd=key_start?

Safron
21.09.2010, 23:27
1) так и zoom_.out выдаёт в экспотенциальном виде, если бы он выдавал чистый ноль согласно условиюout_min=0 не было бы вопроса, а то что-то вроде 0.5236947-002е и т.д и т.п.

2) подпрограмка запускается- выход таймера,после нажатия kbrd=key_start,
становится TRUE

tm(in:=kbrd=key_start, pt:=t#1s);
trig.clk:=tm.q; см (*Вызов триггера*)
IF trig.q=TRUE THEN
flag:=TRUE;
END_IF

Малышев Олег
22.09.2010, 10:44
Как не надо
trig.clk:=tm.q; - Это присвоение значения входной переменной
Как надо
trig(clk:=tm.q); - Это вызов триггера

Если правильно понял - вес в вашем ФБ - входная переменная, а нужно сделать выходной.

Safron
22.09.2010, 11:50
попробую с триггером как советуете

weight у меня прописана как глобальная переменная