[PLC] 상태 머신 방식 시퀀스 구현 - 보완사항

이 글은 이전 포스팅을 먼저 참조하셔야 이해하기 수월합니다.
[PLC] 상태 머신(State Machine) 방식으로 시퀀스 구현하기


상태 머신으로 구현한 PLC 시퀀스의 가장 기본적인 형태에서는, 하나 이상의 조건이 충족되면 단계 시퀀스가 한 단계에서 다음 단계로 전환됩니다. 

위의 예에서는 초기 상태에서 시작 버튼을 누른 경우, 0단계에서 1단계로 전환합니다. 1단계에서는 밸브를 열고 2단계로 전환하기 전에 밸브 개방 피드백을 기다립니다.

만약 시퀀스를 시작하기 전에 밸브가 이미 열려 있다고 가정해 보겠습니다. 이제 시퀀스를 시작하고 1단계에 도달하면 X001 조건이 true이기 때문에 2단계로 바로 전환됩니다. 즉, 0단계에서 2단계로 바로 전환되는 것을 볼 수 있습니다. 이러한 현상을 해결하기 위해 프로그램을 아래와 같은 형태로 변경합니다.

1단계에 들어갈 때 스텝변경 비트 M0를 설정합니다. 스텝변경 비트 M0 구문은 모든 스텝 구문 초기에 기술되어야 하며, 마지막 스탭 래더 이후에 이 스텝변경 비트를 리셋해야 합니다.

1단계에 들어갈 때 밸브가 이미 열려 있더라도 M0 비트가 다시 리셋될 때까지 기다려야 하기 때문에 2단계로 전환하기 전에 한 스캔 주기 동안 1단계에 계속 머물게 됩니다.

이것을 모든 단계에 적용하면 스텝을 여러 단계 건너뛰는 현상을 해결할 수 있습니다.

프로그램이 정상적으로 동작한다고 가정할 때, 각 스텝에서 기대되는 처리시간이 있을 것입니다. 만약 각 스텝에서 지연이 발생한다면 프로그램은 해당 스텝에서 빠져나오지 못하고 장비가 멈추어 있을 것입니다. 이런 경우 알람 처리를 할 수 있도록 프로그램 구조를 변경해 보겠습니다.


위 래더에서 D10에 정수 10을 넣고 있습니다. 정수 10은 0.1ms 주기 타이머의 세팅값으로 들어가서 1초의 타임아웃을 설정하는데 사용될 것입니다. 즉, 위 래더는 스텝 1의 타임아웃을 1초로 설정하게 됩니다. 설정된 타임아웃 값은 아래와 같은 래더로 활용할 수 있습니다.


스텝별로 D10에 다른 정수값을 할당하면, 스텝별 다른 타임아웃을 적용할 수 있습니다. T10 타이머의 접점을 활용하면 타임아웃 발생여부를 확인할 수 있게 됩니다.

끝.

댓글

이 블로그의 인기 게시물

[PLC] PLC 아날로그 입출력 기본

전력(kW) 계산하기 (직류, 교류 단상, 교류 삼상)

공압 속도 제어: 미터인 vs 미터아웃

[PLC] 채터링 현상과 입력 필터

제너 다이오드에 저항을 연결하는 이유

[python] 파이썬 pyplot 2차원 그래프 샘플 코드

[PLC] 래더 다이어그램과 PLC

공압회로 기호

[PLC] PLC 입출력 타입 - 싱크 & 소스 (Sink & Source)

3선 결선식 센서의 타입 PNP, NPN