Я делаю примерно так:
Вложение 89038
Код: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

