/////////////// "Global".Global.BUFFER[#I]为缓存数据用数组\\\\\\\\\\\\
///////////////通过BOOL_IN上升沿,数据按号顺序存储到数组内\\\\\\\\\\\\
IF #BOOL_IN AND NOT "Tag_5" THEN
#I := #I + 1;
"Global".Global.BUFFER[#I] := #CCD_IN;
END_IF;
"Tag_5" := #BOOL_IN;
///////////////通过BOOL_OUT上升沿,读取最先进栈的数据状态输出给OUT_Y\\\
///////////////状态读取后,栈位往下移一位,刷新堆栈数据\\\\\\\\\\\\
IF #BOOL_OUT AND NOT "Tag_6" THEN
#OUT_Y := "Global".Global.BUFFER[1];
FOR #J := 2 TO 11 DO
"Global".Global.BUFFER[#J - 1] := "Global".Global.BUFFER[#J];
END_FOR;
ELSIF NOT #BOOL_OUT THEN
#OUT_Y := 0;
END_IF;
"Tag_6" := #BOOL_OUT;
/////////////// "Global".Global.BUFFER[#I]为缓存数据用数组\\\\\\\\\\\\
///////////////通过BOOL_IN上升沿,数据按号顺序存储到数组内\\\\\\\\\\\\
IF #BOOL_IN AND NOT "Tag_5" THEN
#I := #I + 1;
"Global".Global.BUFFER[#I] := #CCD_IN;
END_IF;
"Tag_5" := #BOOL_IN;
///////////////通过BOOL_OUT上升沿,读取最先进栈的数据状态输出给OUT_Y\\\
///////////////状态读取后,栈位往下移一位,刷新堆栈数据\\\\\\\\\\\\
IF #BOOL_OUT AND NOT "Tag_6" THEN
#OUT_Y := "Global".Global.BUFFER[1];
FOR #J := 2 TO 11 DO
"Global".Global.BUFFER[#J - 1] := "Global".Global.BUFFER[#J];
END_FOR;
ELSIF NOT #BOOL_OUT THEN
#OUT_Y := 0;
END_IF;
"Tag_6" := #BOOL_OUT;
IF "FirstScan" = TRUE THEN;
#i := 0;
#J := 0;
END_IF;
IF #传感器A信号=TRUE AND NOT #A脉冲信号 THEN ;
#数组A[#i] := NOT #相机信号A AND #相机信号B = TRUE;
#i := #i + 1;
END_IF;
#A脉冲信号 := #传感器A信号;
IF #传感器B信号 = TRUE AND NOT #B脉冲信号 THEN ;
#OUT := #数组A[0];
FOR #J := 1 TO 10 BY 1 DO;
#数组A[#J - 1] := #数组A[#J];
END_FOR;
END_IF;
IF #传感器B信号 = TRUE AND NOT #B脉冲信号 AND #i>0 THEN;
IF #OUT = TRUE THEN ;
#OUT_A := TRUE;
#OUT_B := FALSE;
END_IF;
IF #OUT = 0 THEN ;
#OUT_A := FALSE;
#OUT_B := TRUE;
END_IF;
#计时器启动 := TRUE;
END_IF;
#B脉冲信号 := #传感器B信号;
#IEC_Timer_0_Instance(IN :=#计时器启动 ,
PT := T#0.6S,
Q => #计时器A);
IF #计时器A = TRUE THEN;
#OUT_A := FALSE;
#OUT_B := FALSE;
#OUT := FALSE;
RESET_TIMER(#IEC_Timer_0_Instance);
#计时器启动 := FALSE;
#i := #i - 1;
END_IF;
IF "FirstScan" = TRUE THEN;
#i := 0;
#J := 0;
END_IF;
IF #传感器A信号=TRUE AND NOT #A脉冲信号 THEN ;
#数组A[#i] := NOT #相机信号A AND #相机信号B = TRUE;
#i := #i + 1;
END_IF;
#A脉冲信号 := #传感器A信号;
IF #传感器B信号 = TRUE AND NOT #B脉冲信号 THEN ;
#OUT := #数组A[0];
FOR #J := 1 TO 10 BY 1 DO;
#数组A[#J - 1] := #数组A[#J];
END_FOR;
END_IF;
IF #传感器B信号 = TRUE AND NOT #B脉冲信号 AND #i>0 THEN;
IF #OUT = TRUE THEN ;
#OUT_A := TRUE;
#OUT_B := FALSE;
END_IF;
IF #OUT = 0 THEN ;
#OUT_A := FALSE;
#OUT_B := TRUE;
END_IF;
#计时器启动 := TRUE;
END_IF;
#B脉冲信号 := #传感器B信号;
#IEC_Timer_0_Instance(IN :=#计时器启动 ,
PT := T#0.6S,
Q => #计时器A);
IF #计时器A = TRUE THEN;
#OUT_A := FALSE;
#OUT_B := FALSE;
#OUT := FALSE;
RESET_TIMER(#IEC_Timer_0_Instance);
#计时器启动 := FALSE;
#i := #i - 1;
END_IF;