Рано мне еще пускаться в обсуждения и споры. Согласен по поводу быстродействия. И Ваш вариант красивее.
Попробовал сначала подать 1 на входы, потом запустил симуляцию. Вот что получилось:Вложение 74190
Вид для печати
Рано мне еще пускаться в обсуждения и споры. Согласен по поводу быстродействия. И Ваш вариант красивее.
Попробовал сначала подать 1 на входы, потом запустил симуляцию. Вот что получилось:Вложение 74190
Прошу прощения. А вот так можно?
Код:function_block Tapki //имя функционального блока.
var_input //объявление входных переменных
I1,I2,I3,I4,I5,I6,I7,I8:bool;
end_var
var_output //объявление выходных переменных
Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8: bool;
end_var
if (I1 or I2 or I3 or I4 or I5 or I6 or I7 or I8) xor
(Q1 or Q2 or Q3 or Q4 or Q5 or Q6 or Q7 or Q8) then
Q1 := I1; Q2 := I2; Q3 := I3; Q4 := I4; Q5 := I5; Q6 := I6; Q7 := I7; Q8 := I8;
end_if
end_function_block
cd32 - Шифратор. Преобразует позиционный код в двоичный код.Вложение 74196
Например при включении 7 бита, в маске M_Al=128, а cd32 выдаёт число M_Nas=7
M_Nas:=cd32(M_Al);
При возникновении нескольких фронтов (спадов) одновременно придется вводить приоритет:
Код:function_block Tapki //имя функционального блока.
var_input //объявление входных переменных
I1,I2,I3,I4,I5,I6,I7,I8:bool;
end_var
var_output //объявление выходных переменных
Q1,Q2,Q3,Q4,Q5,Q6,Q7,Q8: bool;
end_var
if (I1 or I2 or I3 or I4 or I5 or I6 or I7 or I8) xor
(Q1 or Q2 or Q3 or Q4 or Q5 or Q6 or Q7 or Q8) then
Q1 := I1; if I1 then return; end_if
Q2 := I2; if I2 then return; end_if
Q3 := I3; if I3 then return; end_if
Q4 := I4; if I4 then return; end_if
Q5 := I5; if I5 then return; end_if
Q6 := I6; if I6 then return; end_if
Q7 := I7; if I7 then return; end_if
Q8 := I8; if I8 then return; end_if
end_if
end_function_block