发布于 2013-12-05 15:57:48
5楼
这次修改后,编译没错误,但是。。。。功能没实现
FUNCTION_BLOCK FB200
VAR_INPUT
enable:BOOL;
current_time:DATE_AND_TIME;
sp_year:INT;
sp_month:INT;
sp_day:INT;
days_to_remind:INT;
END_VAR
VAR
sp_time:DATE_AND_TIME;
sp_year_state:INT;
sp_month_state:INT;
sp_day_state:INT;
sp_time_cal:DATE;
current_time_cal:DATE;
sp_time_AT AT sp_time:ARRAY[0..7] OF BYTE;
END_VAR
VAR_OUTPUT
days_left:INT;
days_over:INT;
start_remind:BOOL;
have_over:BOOL;
END_VAR
BEGIN
sp_year_state:=sp_year;
sp_month_state:=sp_month;
sp_day_state:=sp_day;
sp_time_AT[0]:=DINT_TO_BYTE(INT_TO_DINT(sp_year_state));
sp_time_AT[1]:=DINT_TO_BYTE(INT_TO_DINT(sp_month_state));
sp_time_AT[2]:=DINT_TO_BYTE(INT_TO_DINT(sp_day_state));
current_time_cal:=DT_DATE(IN :=current_time
); // IN: DATE_AND_TIME
// DATE
sp_time_cal:=DT_DATE(IN :=sp_time // IN: DATE_AND_TIME
); // DATE
days_left:=DINT_TO_INT(DATE_TO_DINT(sp_time_cal))-DINT_TO_INT(DATE_TO_DINT(current_time_cal));
IF days_left<0 THEN
days_over:=days_left*(-1);
have_over:=true;
END_IF;
IF days_left<=days_to_remind THEN
start_remind:=true;
END_IF;
END_FUNCTION_BLOCK