플립플롭은 1비트의 상태를 기억하는 회로인데, CODESYS에선 RS플립플롭과 SR플립플롭 펑션블록을 지원합니다. 기본적인 사용법과 더불어 둘 사이의 차이점이 무엇인지 알아보겠습니다.
두개 모두 논리표는 동일합니다.
SR펑션블록의 ST코드 소스
Function_Block SR Var_Input S1, R : BOOL; End_Var Var_Output Q1 : BOOL; End_Var Q1 := S1 OR (Q1 AND NOT S); End_Function_Block
RS펑션블록의 ST코드 소스
Function_Block RS Var_Input S, R1 : BOOL; End_Var Var_Output Q1 : BOOL; End_Var Q1 := (Q1 OR S) AND NOT R1 End_Function_Block
동작을 확인하기 위해서 다음과 같이 Visualization을 작성했습니다.
기본적인 동작은 똑같습니다. Set신호가 들어오면 출력Q가 On상태를 유지합니다. 이후 Reset신호가 들어오면 출력Q는 Off됩니다.
Set신호와 Reset신호가 둘다 On상태일때 결과가 다릅니다. SR플립플롭 출력은 On상태를 유지하는 반면, RS플립플롭은 Off 됩니다. 즉, RS플립플롭은 Reset신호 우선입니다.