Ну, вот так можно
Код: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