셋/리셋
펑션블록 SR(셋/리셋)을 사용하면 출력을 설정하고 초기화할 수 있습니다.
입력
셋
S1의 각 상승 엣지마다 출력 Q1이 설정됩니다.
리셋(R)
S1이 설정된 경우를 제외하고는 R에서 검색된 각 상승 엣지마다 출력 Q1이 초기화됩니다(시간 차트 참조).
출력
입력에 따라 설정 또는 리셋
S1에서 상승 엣지가 검색되면 설정됩니다.
R에서 상승 엣지가 검색되고 S1이 설정되지 않으면 초기화됩니다.
두 입력(S1 및 R)에서 모두 상승 엣지가 검색되면 설정됩니다.
초기화되면 Q1의 상태는 항상 0(리셋)입니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 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;