Цитата Сообщение от 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