回复:SCL中如何实现time格式的值进行加减

已锁定

like_821080

  • 帖子

    336
  • 精华

    0
  • 被关注

    12

论坛等级:侠圣

注册时间:2011-12-16

普通 普通 如何晋级?

发布于 2022-07-18 14:50:16

4楼

展开查看
以下是引用askab在2022-07-18 14:36:24的发言 >

给你一个启发,定时器可以这样做

通电延时( ODT)

FUNCTION FC1 : VOID

TITLE = 'Block Title'

//

// Block Comment...

//

VERSION: '1.0'

AUTHOR: BAIKAI

NAME: T_ODT

FAMILY: baikai

know_how_protect

VAR_INPUT

//ODT   

Input_Condition:BOOL:=false;

FP_1Sec:BOOL;

reset:BOOL;

Timer_Setpoint:INT:=0;

END_VAR

VAR_IN_OUT    

   Impls_1Sec_Aux:BOOL;

END_VAR

VAR_OUTPUT

Impls_1Sec:BOOL;    

Output_Delay:BOOL:=false;

Timer_Actual:INT:=0;

END_VAR



//通电延时,不带保持

Impls_1Sec:= FP_1Sec AND (NOT Impls_1Sec_Aux); 

Impls_1Sec_Aux:= FP_1Sec;

IF NOT reset THEN

    IF (NOT Input_Condition) THEN 

    Timer_Actual:= 0; 

    Output_Delay:= 0; 

    ELSE 

    IF (Impls_1Sec  AND NOT Output_Delay)  THEN 

        Timer_Actual:= Timer_Actual +1; 

    END_IF;

     Output_Delay:= Timer_Actual >= Timer_Setpoint;

END_IF;

ELSE

    Impls_1Sec:=false;

    Timer_Actual:= 0; 

    Output_Delay:= false;

END_IF;          

END_FUNCTION


//通电延时,保持

Impls_1Sec:= FP_1Sec AND (NOT Impls_1Sec_Aux); 

Impls_1Sec_Aux:= FP_1Sec;

IF NOT reset THEN

    IF Input_Condition THEN

         Output_Aux:=1; 

    END_IF; 

    IF (NOT Output_Aux) THEN 

            Timer_Actual:=0; 

            Output_Delay:=false;

        ELSE

             IF (Impls_1Sec AND NOT Output_Delay) THEN

                 Timer_Actual:= Timer_Actual +1; 

             END_IF;  

                Output_Delay:= Timer_Actual >= Timer_Setpoint;

      END_IF; 

    ELSE

    Impls_1Sec:=false;

    Output_Aux:=false;

    Timer_Actual:= 0; 

    Output_Delay:= false;

//以上为简单思路制作,定时器。 我一般用于数组较多,就是一次做几十个同类的定时器。


这个是我后来写的

FC_Time.txt


评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54616条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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