恭喜,你发布的帖子
发布于 2017-04-13 14:25:43
37楼
这个概念并不是老外自己去做,而是理解了S7系统控制
我也这样做,例如
VAR_INPUT
//ODT
Input_Condition:BOOL:=false;//允许定时器工作
FP_1Sec:BOOL; //脉冲时基为1S
reset:BOOL; //定时器复位
Timer_Setpoint:INT:=0; //设定时间 30 为30S 90为1分半 等等
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
同理可以制作其他类型定时器。利用了计数器叠加。而老外的程序是利用与OB1的扫描时间去判断。
然后做减法。
需要多少就做多少个。想说的这个不是重点,思路才是重点,外国人不比咱们中国人有多聪明。
还有大部分自动化系统程序的执行一般都在150MS内,如果S7自带的定时器够用,为何不用,简单,易读,稳定才是基本。
个人意见。
请填写推广理由:
分享
只看
楼主