恭喜,你发布的帖子
发布于 2022-08-04 13:05:37
47楼
虽然我觉得异步程序不是像楼主那样的调用法,,刚开始没理解楼主思路,后来想了下,写了一个,和楼主不同的是,电平触发。楼主也不需要藏着掖着,这个程序没必要加个密
FUNCTION_BLOCK "PulseGen"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
bIn : Bool;
tDelay : Time;
END_VAR
VAR_OUTPUT
bDone : Bool;
bBusy : Bool;
END_VAR
VAR
Ton {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME;
RTrigger {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG;
sout : Bool;
sDelay : Time;
STAT : UInt;
END_VAR
VAR CONSTANT
IDLE : UInt;
BUSY : UInt := 1;
DONE : UInt := 2;
END_VAR
BEGIN
CASE #STAT OF
#IDLE:
IF #bIn THEN
#sDelay := #tDelay;
#STAT := #BUSY;
#Ton(IN := false,
PT := #sDelay
);
END_IF;
#bDone := false;
#sout := false;
#bBusy := false;
;
#BUSY:
#bBusy := true;
#Ton(IN := true,
PT := #sDelay,
Q => #sout);
IF #sout THEN
#bBusy := false;
#bDone := #tDelay =#sDelay;
IF #bDone THEN
#STAT := #IDLE;
END_IF;
END_IF;
;
END_CASE;
//#bOut := #sout;
END_FUNCTION_BLOCK
请填写推广理由:
分享
只看
楼主