发布于 2015-01-26 00:44:31
7楼
这位坛友,把程序改一下试试:
FUNCTION "Ramp signal processing" : VOID
TITLE =
VERSION : 0.1
VAR_INPUT
Siganl_Input : BOOL ;
STRT : BOOL ; //Start the reset timers
_Time : TIME ; //Sampling period
_TST : WORD ; //The sampling time "s"
END_VAR
VAR_OUTPUT
OUT : WORD ; //The stacked addition value
END_VAR
VAR_TEMP
Contr : STRUCT
Rise_time_trigger : BOOL ; //上升沿触发
Fall_time_trigger : BOOL ; //下降时间触发
Siganl_Input : BOOL ; //信号输入
t1sd : BOOL ; //t1赋值
PT1 : WORD ; //Plus the value of 1
END_STRUCT ;
END_VAR
BEGIN
NETWORK
TITLE =
//信号预处理
A #Siganl_Input;
= #Contr.Rise_time_trigger;
AN #Siganl_Input;
= #Contr.Fall_time_trigger;
NETWORK
TITLE =
//采样周期
A #Contr.Rise_time_trigger;
FR "SD";
A #STRT;
L #_Time; //值域0~999
L W#16#x000 //x=0或1或2或3
OW
SD "SD";
A #Contr.t1sd;
R "SD";
A "SD";
= #Contr.t1sd;
LC "SD";
T #Contr.PT1;
NETWORK
TITLE =
L #Contr.PT1;
L #_TST;
+I ;
T #OUT;
END_FUNCTION
x是时基,取决于时钟的大小:
小于 9.99s,基值为10ms,x=0
小于 99.9s,基值为100ms,x=1
小于999s,基值为1s, x=2
小于9990s,基值为10s, x=3
人的生命似洪水在奔流,不遇着岛屿、暗礁,难以激起美丽的浪花。