设备运行时间累计程序,带维护功能及报警功能的基础上新增加当次运行时间功能
程序编译好后在OB1中运行
//*****************************
//运行时间累计
//程序中的M2.5为设定的系统秒信号,需要在硬件组态中配置。
//增加本次运行时间
//EBC_LW 20180118修改
//*****************************
FUNCTION_BLOCK fb13
TITLE = 'RUN_TIME'
//
// 运行时间累计
//
VERSION: '1.0'
AUTHOR: LW
NAME: RUNTIME
FAMILY: EBC
KNOW_HOW_PROTECT
// Statement Section
VAR_INPUT
RUN:BOOL;//运行状态
//SECOND:BOOL;//秒脉冲
MAINTAIN_TIME_SET:INT;//维护时间设定(小时)
REST_MAIN:BOOL;//维护标志位复位
REST:BOOL;//时间复位
END_VAR
VAR_IN_OUT
SET_FLAG:INT; //设定值的上一次的输入值
NEXT_HOUR:INT;//下一次需要维护的时间
// I/O Parameters
END_VAR
VAR_OUTPUT
//RUN_Day:INT;
RUN_Hour:INT;//运行的小时数
RUN_Minite:INT;//运行的分钟数
RUN_Sencond:INT;//运行的秒数
TIME_Hour:INT;//当次运行的小时数
TIME_Minite:INT;//当次运行的分钟数
TIME_Sencond:INT;//当次运行的秒数
MAINTAIN:BOOL;//维护标志位
END_VAR
VAR_TEMP
PN:BOOL;
RUN_PN:BOOL;
END_VAR
VAR
OLD_VAL:BOOL;//边沿检测的上一次的值
RUN_OLD:BOOL;
//FLAG:BOOL;
// Temporary Variables
//TEMP2:INT;
// Static Variables
END_VAR
//上升沿
PN:=M2.5&(NOT OLD_VAL);
OLD_VAL:=M2.5;
//下降沿
//NN:=OLD_VAL&(NOT M2.5);
//OLD_VAL:=M2.5;
//上升沿
RUN_PN:=RUN&(NOT RUN_OLD);
RUN_OLD:=RUN;
//运行时间累计
IF RUN THEN
IF PN THEN //系统时钟地址1S上升沿触发
// SECOND:=0;
RUN_Sencond:=RUN_Sencond+1;
TIME_Sencond:=TIME_Sencond+1;
IF RUN_Sencond>=60 THEN
RUN_Sencond:=0;
RUN_Minite:=RUN_Minite+1;
IF RUN_Minite>=60 THEN
RUN_Minite:=0;
RUN_Hour:=RUN_Hour+1;
END_IF;
END_IF;
IF TIME_Sencond>=60 THEN
TIME_Sencond:=0;
TIME_Minite:=TIME_Minite+1;
IF TIME_Minite>=60 THEN
TIME_Minite:=0;
TIME_Hour:=TIME_Hour+1;
END_IF;
END_IF;
END_IF;
END_IF;
//复位时间
IF REST OR RUN_Hour>=32767 THEN
REST:=0;
RUN_Sencond:=0;
RUN_Minite:=0;
RUN_Hour:=0;
NEXT_HOUR:=MAINTAIN_TIME_SET;
END_IF;
IF TIME_Hour>=32767 OR RUN_PN THEN
TIME_Sencond:=0;
TIME_Minite:=0;
TIME_Hour:=0;
END_IF;
//判断输入的设定值是否为上次设定的值不是上一次的值则重新赋值
IF SET_FLAG <>MAINTAIN_TIME_SET THEN
SET_FLAG:=MAINTAIN_TIME_SET;
NEXT_HOUR:=SET_FLAG+RUN_Hour;
END_IF;
//新的维护时间是否到达,到达后维护标志位置1
IF RUN_Hour>= NEXT_HOUR THEN
MAINTAIN:=1;
NEXT_HOUR:=NEXT_HOUR+RUN_Hour;
//MAINTAIN:=TRUE;
END_IF;
//维护标志位复位
IF REST_MAIN THEN
//REST_MAIN:=0;
MAINTAIN:=0;
END_IF;
END_FUNCTION_BLOCK
//原创程序 欢迎交流学习 QQ275578306