设备运行时间累计程序增加当此运行时间功能

已锁定

柳叶飘飘

  • 帖子

    95
  • 精华

    7
  • 被关注

    195

论坛等级:侠圣

注册时间:2016-12-08

黄金 黄金 如何晋级?

设备运行时间累计程序增加当此运行时间功能

3747

5

2018-01-20 11:30:05

 设备运行时间累计程序,带维护功能及报警功能的基础上新增加当次运行时间功能

程序编译好后在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

设备运行时间累计程序增加当此运行时间功能 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54765条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。