恭喜,你发布的帖子
发布于 2018-03-19 23:47:20
12楼
FUNCTION_BLOCK "DFM_Timer"
TITLE =
{ S7_m_c := 'true'; S7_read_back := 'true' }
AUTHOR : NVS_ZDC
FAMILY : UB_DFM
NAME : DFM_Time
VERSION : 0.1
VAR_INPUT
SampleTime { S7_sampletime := 'true'; S7_visible := 'false' }: REAL ;
Factor { S7_m_c := 'true'; S7_read_back := 'true' }: INT ; //0=Sec,1=Min,2=Hou,3=Day
FullStop { S7_m_c := 'true'; S7_read_back := 'true' }: BOOL ; //0=Not Stop,1=Stop
Reset { S7_contact := 'true' }: BOOL ; //Reset Timer
Start { S7_contact := 'true' }: BOOL ; //Start Timer
SP : REAL ; //Setpoint
END_VAR
VAR_OUTPUT
Time_Out { S7_m_c := 'true'; S7_contact := 'true' }: REAL ;
SP_Out : REAL ;
TimeReached { S7_contact := 'true' }: BOOL ;
Sec { S7_read_back := 'true'; S7_m_c := 'true' }: REAL ;
Min { S7_read_back := 'true'; S7_m_c := 'true' }: INT ;
Hour { S7_m_c := 'true'; S7_read_back := 'true' }: INT ;
Day { S7_m_c := 'true'; S7_read_back := 'true' }: DINT ;
END_VAR
VAR
CycleTime : INT ;
MinTimes : INT ;
TimeTemp : REAL ;
END_VAR
BEGIN
NETWORK
TITLE =
//Start Timer
A #Start;
AN( ;
A #TimeReached;
A #FullStop;
) ;
JCN N01;
L #CycleTime;
L 1;
+I ;
T #CycleTime;
N01: NOP 0;
//CycleTimes of 1 Minute
L 6.000000e+001;
L #SampleTime;
/R ;
RND ;
DTB ;
BTI ;
T #MinTimes;
//Minute
L #CycleTime;
L #MinTimes;
>=I ;
JCN N02;
L 0;
T #CycleTime;
L #Min;
L 1;
+I ;
T #Min;
N02: NOP 0;
//Second
L #CycleTime;
ITD ;
DTR ;
L #SampleTime;
*R ;
T #Sec;
//Hour
L #Min;
L 60;
>=I ;
JCN N03;
L 0;
T #Min;
L #Hour;
L 1;
+I ;
T #Hour;
N03: NOP 0;
//Day
L #Hour;
L 24;
>=I ;
JCN N04;
L 0;
T #Hour;
L #Day;
L L#1;
+D ;
T #Day;
N04: NOP 0;
A #Reset;
JCN N05;
L 0;
T #CycleTime;
T #Sec;
T #Min;
T #Hour;
L L#0;
T #Day;
R #Reset;
N05: NOP 0;
NETWORK
TITLE =
//Factor==Sec
L #Factor;
L 0;
==I ;
JCN N11;
L #Sec;
T #TimeTemp;
L #Min;
L 60;
*I ;
ITD ;
DTR ;
L #TimeTemp;
+R ;
T #TimeTemp;
L #Hour;
ITD ;
L L#3600;
*D ;
DTR ;
L #TimeTemp;
+R ;
T #TimeTemp;
L #Day;
L L#86400;
*D ;
DTR ;
L #TimeTemp;
+R ;
T #Time_Out;
N11: NOP 0;
//Factor==Min
L #Factor;
L 1;
==I ;
JCN N12;
L #Sec;
L 6.000000e+001;
/R ;
T #TimeTemp;
L #Min;
ITD ;
DTR ;
L #TimeTemp;
+R ;
T #TimeTemp;
L #Hour;
L 60;
*I ;
ITD ;
DTR ;
L #TimeTemp;
+R ;
T #TimeTemp;
L #Day;
L L#1440;
*D ;
DTR ;
L #TimeTemp;
+R ;
T #Time_Out;
N12: NOP 0;
//Factor==Hour
L #Factor;
L 2;
==I ;
JCN N13;
L #Sec;
L 3.600000e+003;
/R ;
T #TimeTemp;
L #Min;
ITD ;
DTR ;
L 6.000000e+001;
/R ;
L #TimeTemp;
+R ;
T #TimeTemp;
L #Hour;
ITD ;
DTR ;
L #TimeTemp;
+R ;
T #TimeTemp;
L #Day;
L L#24;
*D ;
DTR ;
L #TimeTemp;
+R ;
T #Time_Out;
N13: NOP 0;
//Factor==Day
L #Factor;
L 3;
==I ;
JCN N14;
L #Sec;
L 8.640000e+004;
/R ;
T #TimeTemp;
L #Min;
ITD ;
DTR ;
L 1.440000e+003;
/R ;
L #TimeTemp;
+R ;
T #TimeTemp;
L #Hour;
ITD ;
DTR ;
L 2.400000e+001;
/R ;
L #TimeTemp;
+R ;
T #TimeTemp;
L #Day;
DTR ;
L #TimeTemp;
+R ;
T #Time_Out;
N14: NOP 0;
NETWORK
TITLE =
L #Time_Out;
L #SP;
>=R ;
= #TimeReached;
L #SP;
T #SP_Out;
END_FUNCTION_BLOCK
请填写推广理由:
分享
只看
楼主