Я делаю примерно так:
Owen1.jpg
Код:
function_block Edit
    
    var_input
        inValue : real;                 // Входное значение параметра
        delta : real;                   // Дельта при изменении
        btnUp, btnDn, btnOK : bool;     // Кнопки
    end_var
    
    var_output 
        nPar : udint;                   // Номер текущего параметра
        outValue : real;                // Выходное значение параметра
        bSave : bool;                   // Сигнал на запись в параметр
    end_var
    
    var 
        rtUp, rtDn, rtOK: SYS.RTRIG;    // Фиксация нажатия кнопок
        bMode : bool;                   // Переключатель параметр/значение
    end_var
    
    outValue := inValue;
    
    rtUp(I:=btnUp);
    if rtUp.Q then
        if bMode then
            outValue := outValue + delta;   // Инкремент значения
        else
            nPar := nPar + 1;               // Инкремент номера параметра
        end_if
    end_if
    
    rtDn(I:=btnDn);
    if rtDn.Q then
        if bMode then
            outValue := outValue - delta;   // Декремент значения
        else
            nPar := nPar - 1;               // Декремент номера параметра
        end_if
    end_if
     
    rtOK(I:=btnOK);
    if rtOK.Q then
        if bMode then bsave := true; end_if  // Фиксируем значение перед сменой режима
        bMode := not bMode;                  // Меняем режим
    else
        bSave := false;
    end_if

end_function_block