Нет ошибки. При симуляции считает правильно. 2.4.334.0
Возможно в составе чего-то большего не так симулятор считает, но один блок на холсте без ошибок.
if reset OR first_run then - так короче, переменные и так булевы.
Вид для печати
Нет ошибки. При симуляции считает правильно. 2.4.334.0
Возможно в составе чего-то большего не так симулятор считает, но один блок на холсте без ошибок.
if reset OR first_run then - так короче, переменные и так булевы.
Зачем так категорично ? https://ru.wikipedia.org/wiki/%D0%A4...B0%D0%BB%D0%B0
Слова могут иметь несколько значений, в зависимости от контекста! Например: во время ВОВ был Волховский фронт, явно, фронт здесь в другом значении!
Речь была о фронтах эл. сигнала (импульса), а ссылка была на военные действия. При этом есть конкретное понятие (ссылку дал) , да и учили нас давно так.
ФБ для конвертации BCD формата панелей, HEX в DEC и обратно DEC в HEX, пришлось переделать из функций, для приёма времени из панели ИП320.
Время там в шестнадцатиричной системе, да ещё и совмещено год с месяцем, день с часами, минуты с секундами.
В панелях СП307, СП310 время тоже передаётся в BCD формате, только отдельными регистрами.
Чтобы их разделить функции не достаточно. На скрине 2308 (год 23, месяц 08) принимается как 8968 Вложение 69715
Код:function_block HEX_DEC // Конвертация из Шестнадцатиричной в Десятичную
var_input
x: udint;
end_var
var_output //объявление выходных переменных
Q,Q1,Q2 : udint;
end_var
Q := x/4096 MOD 16*1000+x/256 MOD 16*100+x/16 MOD 16*10+x MOD 16;
Q1:=Q/100; Q2:=Q-Q1*100;
end_function_block
Код:function_block DEC_HEX // Конвертация из Десятичной в Шестнадцатиричную
var_input
x: udint;
end_va
var_output //объявление выходных переменных
Q,Q1,Q2 : udint;
end_var
var
a,b,c,d: udint;
end_var
a:=x/1000; b:=(x-a*1000)/100; c:=(x-a*1000-b*100)/10; d:=x-a*1000-b*100-c*10;
Q := a*4096 + b*256+c*16+d; Q1:=Q/100; Q2:=Q-Q1*100;
end_function_block