置位/复位
通过功能块SR(置位/复位)可以置位和复位输出。
输入
置位
为S1的每个上升沿置位输出Q1
复位(R)
为在R检测到的每个上升沿复位输出Q1,设置了S1时除外(参见时间图)
输出
根据输入置位或复位
如果在S1处检测到上升沿,则置位
如果在R处检测到上升沿且如果未设置S1,则复位。
如果在两个输入(S1和R)处均检测到上升沿,则置位。
初始化时,Q1始终为状态零(复位)。
所有用于编程此函数的输入和输出变量已在POU头中声明。 所有编程语言使用相同的POU头。
VAR
copy_name: SR;
set: BOOL:=FALSE;
(*output_value is set for each
rising edge at set_input,
if reset_input is not set*)
reset: BOOL:=FALSE;
(*output_value is reset for each
rising edge at reset_input*)
signal_output: BOOL:=FALSE;
END_VAR
如果设置了set(状态=TRUE),signal_output将置位。如果仅设置了reset,signal_output将reset(状态=FALSE)。如果同时设置了set和reset,signal_output将置位。
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_VAROUT,,signal_output,13,2,15,4,);
B(B_CONTACT,,set,3,1,5,3,);
B(B_CONTACT,,reset,3,3,5,5,);
B(B_FB,SR!,copy_name,8,1,13,5,,?BS1?BR?AQ1);
L(1,2,3,2);
L(1,4,3,4);
L(5,4,8,4);
L(5,2,5,3);
L(5,3,8,3);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
copy_name( SET:= set, RESET:= reset);
signal_output:= signal_output;