- 上升沿
//pulse generate
IF #my_singal AND NOT #pulse_bool THEN
;
END_IF;
#pulse_bool := #my_singal;
- 数值记忆,记录当数值变化时事件
//memory,my_order由外部主动触发
IF #my_order <> #memory_order THEN
;
END_IF;
#memory_order := #my_order;
- 清数据之前先转存
//transfer data before clear
IF #my_singal AND NOT #pulse_bool THEN
#Tmp_data_set := #my_data_set;
#my_data_set := #null_data_set;
END_IF;
#pulse_bool := #my_singal;
- 手动做一个GRAPH顺控管理器
//初始化
IF #H_Collection.Button_StepMode THEN
#H_Collection.Button_ContinuousMode := FALSE;
END_IF;
IF NOT #In_home THEN
#H_Collection.StationByPass := FALSE;
END_IF;
//连续模式
IF #H_Collection.Button_ContinuousMode AND (NOT #H_Collection.Button_StepMode) AND
(NOT #H_Collection.StationByPass) THEN
IF #In_Mode.AutoMode AND #In_home AND 0 = #InOut_NextStep THEN
#InOut_NextStep := 10;
END_IF;
IF (NOT #In_Mode.AlarmMode) AND (NOT #In_Mode.StopMode) AND #In_Mode.AutoMode THEN
#InOut_CurrentStep := #InOut_NextStep;
ELSE
#InOut_CurrentStep := #InOut_CurrentStep;
END_IF;
IF #In_Mode.ManualMode THEN
#InOut_CurrentStep := 0;
#InOut_NextStep := 0;
END_IF;
END_IF;
//单步模式
IF #H_Collection.Button_StepMode AND (NOT #H_Collection.StationByPass) THEN
IF #In_Mode.AutoMode AND #In_home AND 0 = #InOut_NextStep THEN
#InOut_NextStep := 10;
END_IF;
IF (NOT #In_Mode.AlarmMode) AND (NOT #In_Mode.StopMode) AND #In_Mode.AutoMode AND NOT #st_Pluse[0] AND #H_Collection.Button_NextStep THEN
#InOut_CurrentStep := #InOut_NextStep;
ELSIF #In_Mode.AlarmMode OR #In_Mode.StopMode THEN
#InOut_CurrentStep := #InOut_CurrentStep;
END_IF;
#st_Pluse[0] := #H_Collection.Button_NextStep;
IF #In_Mode.ManualMode THEN
#InOut_CurrentStep := 0;
#InOut_NextStep := 0;
END_IF;
END_IF;
//工位屏蔽
IF #H_Collection.StationByPass AND #In_home THEN
#InOut_CurrentStep := 0;
#InOut_NextStep := 0;
END_IF;
使用顺控器方法:
Call Graph_Manager;//如上代码,填好接口
CASE #currentstep OF
10:
;
#nextstep:=20;
20:
;
#nextstep:=30;
30:
...
#nextstep:=0;
END_CASE;
- 利用定时器做一个脉冲发生器(这个和扫描周期特性没啥关系)
//此处周期为2S,可以用time变量把定时器时间接口化
REGION 脉冲发生器
IF (NOT #statVoh) AND (NOT #statVol) THEN
#statVoh := true;
END_IF;
#on_time(IN := #statVoh,
PT := t#1s);
IF #on_time.Q THEN
#statVoh := false;
#statVol := true;
END_IF;
#off_time(IN := #statVol,
PT := t#1s);
IF #off_time.Q THEN
#statVoh := true;
#statVol := FALSE;
END_IF;
END_REGION
标签:END,技巧,扫描,Collection,NextStep,CurrentStep,PLC,Mode,InOut
From: https://www.cnblogs.com/xiacuncun/p/18168819