发表于:2005/2/25 13:31:00
#0楼
STEP7中好象没有象S7-200里的带记忆功能的定时器(TONR),只看到一个TI-S7文件夹里有一个FC81写着是TONR,但是打开看了却是一头雾水,里面还要用到上一次扫描周期,所以不会用。我自己试着写了一个功能块:
FUNCTION_BLOCK FB80
TITLE =带记忆功能的定时器
//
AUTHOR : Shyer
NAME : TONR
VERSION : 2.0
VAR_INPUT
En : BOOL ; //使能定时信号
Rst : BOOL ; //复位信号
Pv : S5TIME ; //设定值(S5TIME格式)
T_NO : TIMER ; //定时器号
END_VAR
VAR_OUTPUT
Out : BOOL ; //输出
END_VAR
VAR
En_Edge : BOOL ;
Interrupt_Flag : BOOL ;
Ren_BCD : WORD ;
END_VAR
BEGIN
NETWORK
TITLE =
A #Rst;
R #T_NO;
R #Interrupt_Flag;
R #Out;
JC EXIT;
A #En;
FN #En_Edge;
S #Interrupt_Flag;
JCN _001;
LC #T_NO;
T #Ren_BCD;
_001: L #Pv;
A #Interrupt_Flag;
JCN _002;
L #Ren_BCD;
_002: A #En;
SD #T_NO;
A #T_NO;
S #Out;
EXIT: SET ;
SAVE ;
CLR ;
END_FUNCTION_BLOCK
FUNCTION_BLOCK FB80
TITLE =带记忆功能的定时器
//
AUTHOR : Shyer
NAME : TONR
VERSION : 2.0
VAR_INPUT
En : BOOL ; //使能定时信号
Rst : BOOL ; //复位信号
Pv : S5TIME ; //设定值(S5TIME格式)
T_NO : TIMER ; //定时器号
END_VAR
VAR_OUTPUT
Out : BOOL ; //输出
END_VAR
VAR
En_Edge : BOOL ;
Interrupt_Flag : BOOL ;
Ren_BCD : WORD ;
END_VAR
BEGIN
NETWORK
TITLE =
A #Rst;
R #T_NO;
R #Interrupt_Flag;
R #Out;
JC EXIT;
A #En;
FN #En_Edge;
S #Interrupt_Flag;
JCN _001;
LC #T_NO;
T #Ren_BCD;
_001: L #Pv;
A #Interrupt_Flag;
JCN _002;
L #Ren_BCD;
_002: A #En;
SD #T_NO;
A #T_NO;
S #Out;
EXIT: SET ;
SAVE ;
CLR ;
END_FUNCTION_BLOCK