楼主最近还看过
无论那套DCS(和利时、浙江中控、deltv、epks)都有读取系统时间的功能块,当某台机泵启动时刻读取系统时间存储起来,当一旦停机,在停机时刻再将系统时间读取出来,做差即可。或者采用定时器或计时器都可以实现。
例1:浙江中控JX-300xp为例用ST语言编写的读取系统时间和日期的自定义功能块
FUNCTION_BLOCK FB_SYSTEMDATE(**获取系统日期**)
VAR_INPUT
YEAR_IN1:INT;
MONTH_IN2:INT;
DAY_IN3:INT;
END_VAR
VAR_OUTPUT
YEAR_R:INT;
MONTH_R:INT;
DAY_R:INT;
Q1:BOOL;
END_VAR
VAR
TEMPYEAR:INT;
TEMPMONTH:INT;
TEMPDAY:INT;
END_VAR
TEMPYEAR=YEAR();
TEMPMONTH=MONTH();
TEMPDAY=DAY();
YEAR_R=TEMPYEAR;
MONTH_R=TEMPMONTH;
DAY_R=TEMPDAY;
END_FUNCTION_BLOCK
FUNCTION_BLOCK FB_SYSTEMTIME(**获取系统时间**)
VAR_INPUT
HOUR_IN1:INT;
MINUTE_IN2:INT;
SECOND_IN3:INT;
END_VAR
VAR_OUTPUT
HOUR_R:INT;
MINUTE_R:INT;
SECOND_R:INT;
Q1:BOOL;
END_VAR
VAR
TEMPHOUR:INT;
TEMPMINUTE:INT;
TEMPSECOND:INT;
END_VAR
TEMPHOUR=HOUR();
TEMPMINUTE=MINUTE();
TEMPSECOND=SECOND();
HOUR_R=TEMPHOUR;
MINUTE_R=TEMPMINUTE;
SECOND_R=TEMPSECOND;
END_FUNCTION_BLOCK
在用TEXTCODE功能块,进行时间判断,代码如下
IF (HOUR_SYS=7 OR HOUR_SYS=16 OR HOUR_SYS=0)
AND MINUTE_SYS=49 AND SECOND_SYS=55
THEN RL1=ON;
END_IF;
例2:和利时MACS 6可用TIMER-EVENT功能块进行时间判定;
例3:和利时MACS 5可用HSRTC功能块进行时间判定