PDA

Просмотр полной версии : Выходы блоков с EN



Михаил Иванович
16.03.2012, 18:08
Можно ли блок со входом EN вставить в цепь на языке CFC так, чтобы при обнулении входа EN обнулялся результат на выходе (который не ENO)? А то получается так: блок не работает, а значение сохраняется. Это правильно? Режима вставки или настройки, чтобы обнулялось нет?

Валенок
16.03.2012, 18:12
AND'ом соберите ваш выход и ENO

capzap
16.03.2012, 18:13
продолжите схему и тот сигнал который обнуляет EN свяжите с выходным сигналом через блок AND например

Михаил Иванович
17.03.2012, 07:51
AND'ом соберите ваш выход и ENO

продолжите схему и тот сигнал который обнуляет EN свяжите с выходным сигналом через блок AND например
Господа, спасибо за участие. То, что вы говорите - понятно. Я примерно так и делаю, как вы говорите, могу даже добавить к вашим ответам, что "AND" годится только при бинарной логике, везде годится "MUL" с предварительным преобразованием типов. Но это ответ на другой вопрос:как вывернуться из этой ситуации?
Вопрос-то был в другом. На неработающем блоке ненулевой выход. Мне это представляется немного странным. Вот я и спрашивал, может быть есть какой-то режим работы "с обнулением"?
Но судя по ответам, такого режима никто не знает. Я его тоже не нашел.
Еще раз спасибо откликнувшимся.

capzap
17.03.2012, 07:59
Господа, спасибо за участие. То, что вы говорите - понятно. Я примерно так и делаю, как вы говорите, могу даже добавить к вашим ответам, что "AND" годится только при бинарной логике, везде годится "MUL" с предварительным преобразованием типов. Но это ответ на другой вопрос:как вывернуться из этой ситуации?
Вопрос-то был в другом. На неработающем блоке ненулевой выход. Мне это представляется немного странным. Вот я и спрашивал, может быть есть какой-то режим работы "с обнулением"?
Но судя по ответам, такого режима никто не знает. Я его тоже не нашел.
Еще раз спасибо откликнувшимся.

Везде годится SEL без предварительного преобразования типов :), если быть точным. И ни чего странного нет, все ФБ (а не функции) сохраняют свои состояния, даже если вообще не пользоваться связкой EN/ENO, например в условии IF Вы увидите тоже самое

Валенок
17.03.2012, 11:14
Т.к. мы с capzap отвечаем практически одинаково, на всякий случай добавлю -

На неработающем блоке ненулевой выход. Мне это представляется немного странным.
1.Выходы на ФБ выставляет сам ФБ, и если он (код) не работает (EN = false), то кто будет их обнулять ?
2.EN относиться к полному действию : передать входы, вызвать код, забрать выходы и присвоить - т.е. пока EN=false переменным на которые падают выходы можно присваивать что угодно при любом состоянии этих выходов. Но если эти выходы падают на кодосодержащие объкты (поу, операторы) - то ими принимается текущее состояние этих выходов

Эквивалент этого на ST :

ФБ1.ENO:=ФБ1.EN; (*это делает система*)
if ФБ1.EN then
ФБ1( IN := ...., OUT =>X); (*X при ФБ1.EN=false кладет на ФБ1.OUT*)
end_if

ФБ2( IN:=ФБ1.OUT ); (*ФБ2 кладет на ФБ1.EN*)

Михаил Иванович
17.03.2012, 15:25
Спасибо, будем учитывать это свойство.