[PLC] 상태 머신 방식 시퀀스 구현 - 보완사항
이 글은 이전 포스팅을 먼저 참조하셔야 이해하기 수월합니다.
위의 예에서는 초기 상태에서 시작 버튼을 누른 경우, 0단계에서 1단계로 전환합니다. 1단계에서는 밸브를 열고 2단계로 전환하기 전에 밸브 개방 피드백을 기다립니다.
만약 시퀀스를 시작하기 전에 밸브가 이미 열려 있다고 가정해 보겠습니다. 이제 시퀀스를 시작하고 1단계에 도달하면 X001 조건이 true이기 때문에 2단계로 바로 전환됩니다. 즉, 0단계에서 2단계로 바로 전환되는 것을 볼 수 있습니다. 이러한 현상을 해결하기 위해 프로그램을 아래와 같은 형태로 변경합니다.
위 래더에서 D10에 정수 10을 넣고 있습니다. 정수 10은 0.1ms 주기 타이머의 세팅값으로 들어가서 1초의 타임아웃을 설정하는데 사용될 것입니다. 즉, 위 래더는 스텝 1의 타임아웃을 1초로 설정하게 됩니다. 설정된 타임아웃 값은 아래와 같은 래더로 활용할 수 있습니다.
스텝별로 D10에 다른 정수값을 할당하면, 스텝별 다른 타임아웃을 적용할 수 있습니다. T10 타이머의 접점을 활용하면 타임아웃 발생여부를 확인할 수 있게 됩니다.
끝.
[PLC] 상태 머신(State Machine) 방식으로 시퀀스 구현하기
상태 머신으로 구현한 PLC 시퀀스의 가장 기본적인 형태에서는, 하나 이상의 조건이 충족되면 단계 시퀀스가 한 단계에서 다음 단계로 전환됩니다.
상태 머신으로 구현한 PLC 시퀀스의 가장 기본적인 형태에서는, 하나 이상의 조건이 충족되면 단계 시퀀스가 한 단계에서 다음 단계로 전환됩니다.
위의 예에서는 초기 상태에서 시작 버튼을 누른 경우, 0단계에서 1단계로 전환합니다. 1단계에서는 밸브를 열고 2단계로 전환하기 전에 밸브 개방 피드백을 기다립니다.
만약 시퀀스를 시작하기 전에 밸브가 이미 열려 있다고 가정해 보겠습니다. 이제 시퀀스를 시작하고 1단계에 도달하면 X001 조건이 true이기 때문에 2단계로 바로 전환됩니다. 즉, 0단계에서 2단계로 바로 전환되는 것을 볼 수 있습니다. 이러한 현상을 해결하기 위해 프로그램을 아래와 같은 형태로 변경합니다.
1단계에 들어갈 때 밸브가 이미 열려 있더라도 M0 비트가 다시 리셋될 때까지 기다려야 하기 때문에 2단계로 전환하기 전에 한 스캔 주기 동안 1단계에 계속 머물게 됩니다.
이것을 모든 단계에 적용하면 스텝을 여러 단계 건너뛰는 현상을 해결할 수 있습니다.
프로그램이 정상적으로 동작한다고 가정할 때, 각 스텝에서 기대되는 처리시간이 있을 것입니다. 만약 각 스텝에서 지연이 발생한다면 프로그램은 해당 스텝에서 빠져나오지 못하고 장비가 멈추어 있을 것입니다. 이런 경우 알람 처리를 할 수 있도록 프로그램 구조를 변경해 보겠습니다.
프로그램이 정상적으로 동작한다고 가정할 때, 각 스텝에서 기대되는 처리시간이 있을 것입니다. 만약 각 스텝에서 지연이 발생한다면 프로그램은 해당 스텝에서 빠져나오지 못하고 장비가 멈추어 있을 것입니다. 이런 경우 알람 처리를 할 수 있도록 프로그램 구조를 변경해 보겠습니다.
위 래더에서 D10에 정수 10을 넣고 있습니다. 정수 10은 0.1ms 주기 타이머의 세팅값으로 들어가서 1초의 타임아웃을 설정하는데 사용될 것입니다. 즉, 위 래더는 스텝 1의 타임아웃을 1초로 설정하게 됩니다. 설정된 타임아웃 값은 아래와 같은 래더로 활용할 수 있습니다.
스텝별로 D10에 다른 정수값을 할당하면, 스텝별 다른 타임아웃을 적용할 수 있습니다. T10 타이머의 접점을 활용하면 타임아웃 발생여부를 확인할 수 있게 됩니다.
끝.
댓글
댓글 쓰기