
Сообщение от
FPavel
Доброго дня
В ФБ на ST нужно сохранить состояние между выключениями питания.
Для ФБ на FBD просто объявил бы переменную энергонезависимой.
А для ST не соображу, как быть.
Как объявить переменную в ФБ на ST энергонезависимой?
Только через внешнюю переменную
Безымянный.png
Код:
function_block functionblock1 //имя функционального блока.
// Пример функционального блока на ST, который является счетчиком и используется для прямого счета.
// Операция «прямой счет» выполняется по переднему фронту импульса на входе «U»,
// что увеличивает значение выходного сигнала «Q».
// При поступлении на вход Res логической «1», выход счетчика «Q» устанавливается в значение входа «N».
var_input //объявление входных переменных
U : bool; //входная переменная с типом данных bool
Res : bool; //входная переменная с типом данных bool
N : udint; //входная переменная для значения счетчика после сброса
Q_ : udint;
end_var
var_output //объявление выходных переменных
Q : udint; //выходная переменная с типом данных udint
end_var
var //объявление локальных переменных
CounterValue : udint; //переменная для текущего значения счетчика
RTrig : bool; //переменная для определения переднего фронта на входе «U»
end_var
CounterValue := Q_;
if Res then
CounterValue := N;
end_if
if U and not RTrig and not Res then
CounterValue := (CounterValue + 1);
RTrig := U;
end_if
if not U and RTrig then
RTrig := false;
end_if
Q := CounterValue;
end_function_block