发布于 2013-12-05 12:16:11
2楼
我自己写了一个,但发现有错误,求大侠指点改正
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:WORD;
current_time_cal:WORD;
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]:=(sp_year_state);
sp_time_AT[1]:=(sp_month_state);
sp_time_AT[2]:=(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:=WORD_TO_INT(sp_time_cal)-WORD_TO_INT(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