Ну, вот так можно
Код:function_block Flowmeter //имя функционального блока.
var_input //объявление входных переменных
i_Imp: bool; //переменная считывания переднего фронта импульса
i_ImpMass: real; //переменна цены импульса
i_Flow: real; //Общий поток
i_FlowYear: real; //Годовой поток
i_FlowMonth: real; //Поток за месяц
i_FlowDay: real; //Поток за день
i_FlowHour: real; //Поток за час
i_nowYear: udint; //Текущий год
i_nowMonth: udint; //Текущий месяц
i_nowDay: udint; //Текущий день
i_nowHour: udint; //Текущий час
i_nowMinute: udint; //Текущая минута
i_nowSecond: udint; //Текущая секунда
in_Time: udint;
end_var
var_output //объявление выходных переменных
Flow: real;
FlowDay: real;
FlowHour: real;
FlowMonth: real;
FlowYear: real;
ImpMass: real;
out_Time: udint;
end_var
var //объявление локальных переменных
l_Flow: real;
l_FlowDay: real;
l_FlowHour: real;
l_FlowMonth: real;
l_FlowYear: real;
l_year: udint;
l_month: udint;
l_day: udint;
l_hour: udint;
l_minute: udint;
l_second: udint;
l_impMass: real;
end_var
l_year := in_Time mod 100;
l_month := (in_Time / 100) mod 100;
l_day := (in_Time / 10000) mod 100;
l_hour := in_Time / 1000000;
l_Flow := i_Flow;
l_FlowYear := i_FlowYear;
l_FlowMonth := i_FlowMonth;
l_FlowDay := i_FlowDay;
l_FlowHour := i_FlowHour;
l_impMass:= i_ImpMass;
if i_Imp then
l_flow := l_Flow + ((1 / 1000) * i_ImpMass);
l_FlowDay := l_FlowDay + ((1 / 1000) * i_ImpMass);
l_FlowHour := l_FlowHour + ((1 / 1000) * i_ImpMass);
l_FlowMonth := l_FlowMonth + ((1 / 1000) * i_ImpMass);
l_FlowYear := l_FlowYear + ((1 / 1000) * i_ImpMass);
end_if
if i_nowDay <> l_day then
l_FlowDay := 0;
end_if
if i_nowHour <> l_hour then
l_FlowHour := 0;
end_if
if i_nowMonth <> l_month then
l_FlowMonth := 0;
end_if
if i_nowYear <> l_year then
l_FlowYear := 0;
end_if
ImpMass := l_impMass;
Flow := l_Flow;
FlowHour := l_FlowHour;
FlowDay := l_FlowDay;
FlowMonth := l_FlowMonth;
FlowYear := l_FlowYear;
out_Time := i_nowHour * 1000000 + i_nowDay * 10000 + i_nowMonth * 100 + i_nowYear;
end_function_block