技术论坛

 设备运行时间累计(默认约三年)可修改时间更长

返回主题列表
作者 主题
柳叶飘飘
侠圣

经验值: 2484
发帖数: 95
精华帖: 7
楼主    2016-12-27 21:48:44
主题:设备运行时间累计(默认约三年)可修改时间更长

程序简要:可记录设备的运行时间,并可以设置维护时间,维护时间到后发出一个报警信号并可以复位。

程序需要放在OB1中运行,且CPU时钟存储设置为2

//*****************************

//运行时间累计

//程序中的M2.5为设定的系统秒信号,需要在硬件组态中配置。

//EBC_LW 20160617

//*****************************


FUNCTION_BLOCK FB4

TITLE = 'RUN_TIME'

//

// 运行时间累计

//

VERSION: '1.0'

AUTHOR: EBC_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;//运行的秒数

     MAINTAIN:BOOL;//维护标志位


END_VAR



VAR_TEMP

PN:BOOL;

GE_PN:BOOL;

END_VAR

VAR

OLD_VAL:BOOL;//边沿检测的上一次的值

 //FLAG:BOOL;

    // Temporary Variables

OLD_GE_VAL:BOOL;//边沿检测上一次的值

//TEMP2:INT;

    // Static Variables

GE_VAL:BOOL;

END_VAR

//上升沿

PN:=M2.5&(NOT OLD_VAL);

OLD_VAL:=M2.5;

//下降沿

//NN:=OLD_VAL&(NOT M2.5);

//OLD_VAL:=M2.5;




//运行时间累计

IF RUN THEN

    IF PN THEN  //系统时钟地址1S上升沿触发

       // SECOND:=0;

        RUN_Sencond:=RUN_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;

    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 SET_FLAG <>MAINTAIN_TIME_SET THEN

   SET_FLAG:=MAINTAIN_TIME_SET;

   NEXT_HOUR:=SET_FLAG+RUN_Hour;

END_IF;


//新的维护时间是否到达,到达后产生一个标志位

IF RUN_Hour>= NEXT_HOUR THEN

    GE_VAL:=1;

ELSE

    GE_VAL:=0;

   //MAINTAIN:=TRUE;

   

END_IF;

//当维护时间标志位到达上升沿检测


GE_PN:=GE_VAL & (NOT OLD_GE_VAL);

OLD_GE_VAL:=GE_VAL;


IF GE_PN THEN

    MAINTAIN:=1;

    NEXT_HOUR:=SET_FLAG+RUN_Hour;

  END_IF;


//维护标志位复位

IF  REST_MAIN THEN

    //REST_MAIN:=0;

    MAINTAIN:=0;

END_IF;


     

END_FUNCTION_BLOCK

//原创程序请多交流 QQ 275578306

努力赚钱 养家糊口
愿我能
至圣

经验值: 17943
发帖数: 2974
精华帖: 7
1楼    2016-12-27 21:51:40
主题:回复:设备运行时间累计(默认约三年)可修改时间更长

使用SFC2、SFC3和SFC4不就可以了吗?

RENHQ
至圣

经验值: 68539
发帖数: 12105
精华帖: 59
2楼    2016-12-27 22:14:30
主题:回复:设备运行时间累计(默认约三年)可修改时间更长

高手驾到啊

以后SCL的问题得向您请教哈

Q群:https://jq.qq.com/?k=9BDuEgf6
月雨风云
至圣

经验值: 10626
发帖数: 2355
精华帖: 10
3楼    2016-12-27 22:15:44
主题:回复:设备运行时间累计(默认约三年)可修改时间更长

这可是个好东西,前几天还有朋友在找这方面的案例,这下无心插柳柳成荫了,分享的不错。

学无止境
Mr S
侠圣

经验值: 3723
发帖数: 486
精华帖: 1
4楼    2017-01-19 14:21:32
主题:回复:设备运行时间累计(默认约三年)可修改时间更长

高手,好贴。

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