FP_END_SCAN

有条件结束

在当前程序位置结束程序代码的当前扫描。

参数

输入

EN (BOOL)

如果为TRUE,将执行指令

输出

ENO (BOOL)

设置为TRUE(如果指令已成功处理)

标注

  • 当执行条件变为TRUE时,程序将终止扫描并开始I/O处理。然后,程序返回到第一个地址。

  • 在子例行程序或中断程序等子程序中无法执行此指令。仅在主程序区域中使用FP_END_SCAN指令。

  • 两个或多个FP_END_SCAN指令可在主程序内使用。

  • 当使用下列指令之一时必须小心,这些指令通过检测执行条件(触发器)的上升沿而被执行。

    • DF(上升沿差分)

    • CT(计数器)的计数输入

    • F118_UDC(升值/降值计数器)的计数输入

    • SR(移位寄存器)的移位输入

    • F119_LRSR(左/右移位寄存器)的移位输入

    • P型指令的差分执行(由P和编号指定,例如P20_ADD

示例

任务池

POU头Copy code to clipboard

所有用于编程此函数的输入和输出变量已在POU头中声明。 所有编程语言使用相同的POU头。

	VAR
		bEndCurrentScan: BOOL:=FALSE;
		iCounterExecuted: INT:=0;
		iCounterNotExecuted: INT:=0;
	END_VAR

LD本体Copy code to clipboard

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 4 ;
        NETWORK_BODY
B(B_F,FP_INC!,,20,0,26,4,,?DEN?Dd?Ad?AENO);
B(B_VARIN,,iCounterExecuted,18,2,20,4,);
L(1,2,20,2);
L(1,0,1,4);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 3 ;
        NETWORK_BODY
B(B_F,FP_END_SCAN!,,19,0,27,3,,?DEN?AENO);
B(B_CONTACT,,bEndCurrentScan,6,1,8,3,);
L(1,2,6,2);
L(8,2,19,2);
L(1,0,1,3);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 4 ;
        NETWORK_BODY
B(B_F,FP_INC!,,20,0,26,4,,?DEN?Dd?Ad?AENO);
B(B_VARIN,,iCounterNotExecuted,18,2,20,4,);
L(1,2,20,2);
L(1,0,1,4);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

示例 Program_2

ST本体Copy code to clipboard

FP_INC(d := iCounterExecuted);
If (bEndCurrentScan) then
    FP_END_SCAN();
End_if;
FP_INC(d := iCounterNotExecuted);

最后更新日期: 2023-11-07此页面上的反馈松下热线