PLC Watchdog Timer란?|프로그램 이상을 감시하는 원리
PLC Watchdog Timer는 프로그램의 Scan Time을 감시해 CPU의 비정상적인 실행이나 무한루프 등을 감지하는 기능입니다. Watchdog Timer의 동작 원리와 오류 발생 원인, Scan Time과의 관계 및 점검방법을 알아봅니다.
PLC는 입력 상태를 확인하고 사용자 프로그램을 실행한 뒤 출력을 처리하는 Scan Cycle을 지속적으로 반복합니다.
정상적인 상태라면 하나의 Scan은 PLC의 처리 성능과 프로그램 규모에 따라 일정한 시간 안에 완료됩니다. 그런데 프로그램 오류나 과도한 연산 등으로 Scan이 정상적으로 끝나지 않는다면 어떻게 될까요?
PLC가 프로그램을 계속 처리하느라 다음 제어 단계로 넘어가지 못하면 설비 제어에도 문제가 발생할 수 있습니다.
이처럼 PLC 프로그램이 정상적인 시간 안에 실행되고 있는지를 감시하기 위해 사용하는 대표적인 기능이 Watchdog Timer입니다.
Watchdog Timer가 무엇인지부터 Scan Time과 어떤 관계가 있는지, Watchdog Error가 발생하는 대표적인 원인과 프로그램 작성 시 주의사항까지 알아보겠습니다.
PLC Watchdog Timer란 무엇일까?
PLC Watchdog Timer는 CPU가 프로그램을 정상적인 시간 범위 안에서 처리하고 있는지를 감시하는 기능입니다.
PLC는 Main Program을 한 번 실행하고 끝나는 장치가 아닙니다. 전원이 공급되고 운전 상태가 유지되는 동안 동일한 Scan Cycle을 계속 반복합니다.
예를 들어 정상 운전 중인 PLC의 Scan Time이 5ms라고 가정해 보겠습니다.
평소에는 약 5ms 전후로 프로그램 처리가 완료되는데 어느 순간 프로그램 실행에 비정상적인 문제가 발생해 하나의 Scan이 지나치게 길어진다면 CPU 입장에서는 정상적인 제어가 이루어지고 있다고 보기 어렵습니다.
이때 미리 설정된 감시시간을 이용하여 프로그램 실행시간을 확인하는 것이 Watchdog Timer의 기본적인 역할입니다.
설정된 제한시간 안에 정상적인 처리가 완료되지 않으면 PLC는 이상 상태를 판단하고 CPU 및 설정에 따라 오류를 발생시키거나 프로그램 실행을 중단하는 등의 처리를 할 수 있습니다.
구체적인 Watchdog 동작 방식과 오류 발생 후 CPU 상태는 제조사와 CPU 모델에 따라 다르므로 실제 설비에서는 해당 PLC의 매뉴얼을 확인해야 합니다.
Watchdog Timer는 왜 필요할까?
PLC는 모터, 실린더, 컨베이어, 밸브 등 실제 설비를 제어하는 데 사용됩니다.
따라서 CPU가 프로그램의 특정 부분에서 비정상적으로 오랜 시간 머무르는 상황을 그대로 방치해서는 안 됩니다.
예를 들어 프로그램 안에 잘못된 반복문이 작성되어 있다고 가정해 보겠습니다.
반복문을 빠져나오는 조건이 충족되지 않는다면 CPU는 같은 프로그램을 계속 실행할 수 있습니다.
이 경우 프로그램 아래쪽에 있는 다른 제어 명령이 정상적인 시점에 처리되지 못할 가능성이 생깁니다.
Watchdog Timer는 이러한 비정상적인 프로그램 실행을 감시해 PLC가 정상적인 Scan을 유지하지 못하는 상황을 발견하는 역할을 합니다.
즉 Watchdog Timer의 핵심 목적은 프로그램을 빠르게 만드는 것이 아니라 CPU가 정상적인 실행 흐름을 유지하고 있는지를 감시하는 데 있습니다.
PLC Scan Time과 Watchdog Timer는 어떤 관계가 있을까?
Watchdog Timer를 이해하려면 Scan Time을 함께 알아두는 것이 좋습니다.
PLC의 기본적인 동작은 개념적으로 다음과 같이 진행됩니다.
입력 처리 → 사용자 프로그램 실행 → 출력 처리 → 시스템 처리 → 다음 Scan
이 한 번의 반복 과정에 필요한 시간을 일반적으로 Scan Time이라고 합니다.
Watchdog Timer는 이러한 프로그램 처리시간이 허용된 범위를 벗어나 지나치게 길어지는지를 감시합니다.
예를 들어 Watchdog 감시시간이 200ms로 설정되어 있다고 가정해 보겠습니다.
정상적으로 10ms 정도 걸리던 프로그램이 어떤 문제로 인해 하나의 Scan을 완료하지 못하고 설정된 감시시간을 초과한다면 Watchdog 관련 오류가 발생할 수 있습니다.
여기서 중요한 것은 Scan Time이 조금 증가했다고 바로 Watchdog Error가 발생하는 것은 아니라는 점입니다.
프로그램이 정상적으로 실행되는 범위와 Watchdog의 제한시간 사이에는 차이가 있을 수 있습니다.
따라서 Watchdog 관련 오류가 발생했다면 단순히 현재 Scan Time만 확인하기보다 프로그램 구조와 Interrupt 실행시간, 반복 처리, 통신 및 CPU 부하 등을 함께 확인해야 합니다.
Watchdog Error가 발생하는 대표적인 원인
Watchdog 관련 오류가 발생했다고 해서 반드시 PLC 자체가 고장났다는 의미는 아닙니다.
프로그램 구조나 CPU 처리량 등 다양한 원인이 있을 수 있습니다.
프로그램의 무한루프
대표적인 원인은 프로그램이 특정 반복구간에서 빠져나오지 못하는 경우입니다.
반복문을 사용할 때 종료 조건을 잘못 작성하면 CPU가 동일한 연산을 계속 처리할 수 있습니다.
이 경우 Main Program의 나머지 부분이 정상적으로 실행되지 못하고 Scan Time이 크게 증가할 수 있습니다.
따라서 반복 명령을 사용할 때는 종료 조건이 모든 상황에서 정상적으로 성립할 수 있는지 확인해야 합니다.
한 번의 Scan에 지나치게 많은 연산 수행
프로그램이 정상적으로 작성되어 있어도 하나의 Scan에서 처리해야 하는 작업량이 지나치게 많으면 Scan Time이 길어질 수 있습니다.
복잡한 수학연산이나 많은 양의 데이터 처리 등을 한 Scan에 집중시키면 CPU 부하가 증가할 수 있습니다.
특히 대규모 배열이나 반복 연산을 다룰 때는 프로그램의 실행시간을 확인하는 것이 중요합니다.
Interrupt Program의 과도한 실행
Interrupt 역시 Watchdog 및 Scan Time과 연관될 수 있습니다.
Interrupt가 발생하면 PLC는 일반 프로그램의 실행 흐름을 잠시 변경하여 지정된 Interrupt Routine을 처리합니다.
그런데 Interrupt Program이 지나치게 길거나 매우 짧은 주기로 반복해서 실행된다면 Main Program이 처리될 시간이 줄어들 수 있습니다.
특히 Cyclic Interrupt의 실행주기를 필요 이상으로 짧게 설정했다면 CPU 부하가 증가할 수 있으므로 Interrupt 주기와 실제 Routine 실행시간을 함께 확인해야 합니다.
통신과 특수처리의 증가
PLC는 사용자 프로그램만 처리하는 것이 아니라 네트워크 통신이나 각종 시스템 작업도 수행할 수 있습니다.
CPU 종류와 시스템 구성에 따라 통신량이나 특수기능의 사용이 전체 처리시간에 영향을 줄 수 있습니다.
프로그램을 수정하지 않았는데 Scan Time이 달라졌다면 네트워크 구성이나 추가된 기능, 통신 데이터량 등도 함께 확인해 볼 필요가 있습니다.
Watchdog Timer 시간을 길게 설정하면 해결될까?
Watchdog Error가 자주 발생한다고 해서 감시시간을 무조건 길게 설정하는 것은 근본적인 해결방법이 아닐 수 있습니다.
예를 들어 정상적인 Scan Time이 10ms인 설비에서 프로그램 오류 때문에 실행시간이 비정상적으로 증가하고 있다고 가정해 보겠습니다.
이때 Watchdog 제한시간만 크게 늘리면 오류가 발생하는 시점은 늦출 수 있지만 프로그램 자체의 문제는 그대로 남아 있을 수 있습니다.
따라서 먼저 왜 Scan Time이 증가했는지 원인을 찾는 것이 중요합니다.
프로그램 변경 이후 문제가 발생했다면 새로 추가된 반복문이나 데이터 처리, Interrupt Routine 등을 확인합니다.
평상시 Scan Time과 최대 Scan Time을 확인할 수 있는 PLC라면 정상 운전 상태의 값을 기록해 두는 것도 문제를 찾는 데 도움이 됩니다.
Watchdog 설정을 변경해야 한다면 PLC 제조사의 권장사항과 실제 프로그램의 최대 실행시간을 검토한 뒤 결정하는 것이 좋습니다.
Watchdog Timer와 일반 Timer는 무엇이 다를까?
Watchdog Timer에 Timer라는 이름이 들어가기 때문에 PLC 프로그램에서 사용하는 일반 Timer 명령과 혼동할 수 있습니다.
두 기능은 목적 자체가 다릅니다.
일반 Timer는 일정 시간 동안 입력 조건이 유지되었는지 확인하거나 일정 시간이 지난 뒤 특정 동작을 실행하기 위해 사용합니다.
예를 들어 버튼을 누른 뒤 5초 후 모터를 동작시키는 제어에는 일반적인 Timer 명령을 사용할 수 있습니다.
반면 Watchdog Timer는 설비의 동작 시간을 측정하기 위한 Timer가 아니라 CPU와 프로그램의 정상적인 실행 상태를 감시하기 위한 기능입니다.
따라서 일반 Timer가 사용자 제어 로직의 일부라면 Watchdog Timer는 PLC 시스템의 프로그램 실행을 감시하는 역할에 가깝다고 이해하면 쉽습니다.
Watchdog Error가 발생했다면 무엇부터 확인할까?
Watchdog 관련 오류가 발생했다면 가장 먼저 CPU의 오류 코드와 진단정보를 확인하는 것이 좋습니다.
PLC Programming Tool이나 CPU 진단기능에서는 오류 발생 원인과 발생 시점에 관한 정보를 제공하는 경우가 있습니다.
그다음 최근 변경된 프로그램이 있는지 확인합니다.
특히 반복 명령, 데이터 연산, Interrupt Program, 통신 관련 프로그램 등을 수정한 직후 문제가 발생했다면 해당 부분을 우선 점검할 수 있습니다.
평상시보다 Scan Time이 크게 증가했는지도 확인합니다.
PLC에서 현재 Scan Time과 최대 Scan Time 등의 정보를 제공한다면 정상 운전 때의 값과 비교하면 문제 발생 지점을 찾는 데 도움이 됩니다.
프로그램이 매우 큰 경우에는 특정 연산을 여러 Scan으로 분산할 수 있는지도 검토할 수 있습니다.
다만 오류 처리방식과 진단항목은 PLC 제조사와 CPU 모델에 따라 다르므로 실제 현장에서는 해당 제품의 Programming Manual과 Error Code 정보를 기준으로 점검해야 합니다.
Watchdog Timer 프로그램 설계 시 주의할 점
Watchdog Error를 예방하려면 단순히 Watchdog 설정값만 관리하는 것이 아니라 프로그램 전체의 실행시간을 고려해야 합니다.
반복문을 사용할 때는 반드시 정상적으로 빠져나올 수 있는 종료 조건을 설계하고 한 번의 Scan에서 지나치게 많은 데이터를 처리하지 않도록 합니다.
Cyclic Interrupt처럼 일정한 주기로 실행되는 프로그램은 실행주기와 Routine의 처리시간을 함께 확인해야 합니다.
또한 Main Program과 Interrupt Program의 실행시간이 누적되었을 때 CPU에 어느 정도 부하가 발생하는지도 살펴보는 것이 좋습니다.
특히 프로그램을 수정한 뒤에는 논리적인 동작 여부만 확인하는 것보다 Scan Time이 수정 전후로 어떻게 달라졌는지까지 확인하면 프로그램 품질을 관리하는 데 도움이 됩니다.
PLC Watchdog Timer 핵심 정리
PLC Watchdog Timer는 PLC 프로그램이 정해진 시간 안에 정상적으로 처리되고 있는지를 감시하는 기능입니다.
프로그램의 무한루프나 과도한 연산, 빈번하고 긴 Interrupt 처리 등으로 실행시간이 비정상적으로 증가하면 Watchdog 관련 오류가 발생할 수 있습니다.
따라서 Watchdog Error가 발생했을 때 제한시간부터 늘리기보다는 Scan Time이 증가한 원인을 먼저 확인하는 것이 중요합니다.
특히 PLC 프로그램을 설계할 때는 정상 Scan Time뿐 아니라 최대 Scan Time과 Interrupt 실행시간, 반복 연산에 따른 CPU 부하까지 함께 고려하는 것이 좋습니다.
결국 Watchdog Timer를 이해한다는 것은 하나의 Timer 기능을 배우는 것이 아니라 PLC가 프로그램을 정상적인 시간 안에 반복 실행하고 있는지를 어떻게 감시하는지 이해하는 것이라고 할 수 있습니다.




댓글 0
첫 댓글을 남겨보세요.