Необходимо вычислять сумму каналов за сутки месяц и годПрицип работы
чу сумируем значения канала за 24 часа
в выходном канале накапливаются(суммируются) значения до 24 часов и передаются
в седующую FBD программу которая суммирует за МЕСЯЦ и результат передается в
седующую FBD программу которая суммирует за ГОД.
Входной канал - усредняет в течении часа!
Автономная отладка происходит нормально а при реальной работе
в блоке "И" при наступлении нулей (условие обнуления)- на блоке умножения
не прописывается ноль...
Где в программе наши ошибки?
Возможно ли реализовать поставленую задачу более проще?
Ниже 3 FBD-программы :
- Swod-KCc.frm --------------------------------------
(* ---- *)
(* *)
FUNCTION_BLOCK Swod-KCc
VAR_IN_OUT
IN2_4 : REAL;
(* -їюф ё +711 *)
SUM_3 : REAL;
(* -_їюф
*)
IB4_1 : REAL;
END_VAR
VAR_CONSTANT
END_VAR
VAR
OR_1 : REAL;
SEC_0 : REAL;
MIN_0 : REAL;
HR_0 : REAL;
MUL_2 : REAL;
MUL_4 : REAL;
END_VAR
TIME(0,SEC_0,MIN_0,HR_0);
OR_1 := OR(0,SEC_0,MIN_0,HR_0,IB4_1);
MUL_4 := MUL(0,OR_1,IN2_4);
MUL_2 := MUL(0,OR_1,SUM_3);
SUM_3 := ADD2(0,MUL_2,MUL_4);
FUNCTION_BLOCK_END
-------------------------------------------------------
- Swod-KCм.frm --------------------------------------
(* ---- *)
(* *)
FUNCTION_BLOCK Swod-KCь
VAR_IN_OUT
IN2_4 : REAL;
(* -їюф ё +711 *)
SUM_3 : REAL;
(* -_їюф
*)
END_VAR
VAR_CONSTANT
IN2_6 : REAL := 1;
END_VAR
VAR
OR_1 : REAL;
SEC_0 : REAL;
MIN_0 : REAL;
HR_0 : REAL;
MUL_2 : REAL;
DAY_5 : REAL;
MON_5 : REAL;
YR_5 : REAL;
MUL_4 : REAL;
EQ_6 : USINT;
END_VAR
TIME(0,SEC_0,MIN_0,HR_0);
DATE(0,DAY_5,MON_5,YR_5);
EQ_6 := EQ(0,DAY_5,IN2_6);
OR_1 := OR(0,SEC_0,MIN_0,HR_0,EQ_6);
MUL_4 := MUL(0,OR_1,IN2_4);
MUL_2 := MUL(0,OR_1,SUM_3);
SUM_3 := ADD2(0,MUL_2,MUL_4);
FUNCTION_BLOCK_END
-------------------------------------------------------
- Swod-KCг.frm --------------------------------------
(* ---- *)
(* *)
FUNCTION_BLOCK Swod-KCу
VAR_IN_OUT
IN2_4 : REAL;
(* -їюф ё +711 *)
SUM_3 : REAL;
(* -_їюф
*)
END_VAR
VAR_CONSTANT
IN2_6 : REAL := 1;
END_VAR
VAR
OR_1 : REAL;
SEC_0 : REAL;
MIN_0 : REAL;
HR_0 : REAL;
MUL_2 : REAL;
DAY_5 : REAL;
MON_5 : REAL;
YR_5 : REAL;
MUL_4 : REAL;
EQ_6 : USINT;
END_VAR
TIME(0,SEC_0,MIN_0,HR_0);
DATE(0,DAY_5,MON_5,YR_5);
EQ_6 := EQ(0,MON_5,IN2_6);
OR_1 := OR(0,SEC_0,MIN_0,HR_0,EQ_6);
MUL_4 := MUL(0,OR_1,IN2_4);
MUL_2 := MUL(0,OR_1,SUM_3);
SUM_3 := ADD2(0,MUL_2,MUL_4);
FUNCTION_BLOCK_END
-------------------------------------------------------