Cyclic Interrupt란?|일정한 시간마다 프로그램을 실행하는 원리
Cyclic Interrupt는 PLC에서 설정한 일정한 시간 간격마다 지정된 프로그램을 실행하는 기능입니다. 일반 Scan과의 차이부터 동작 원리, 활용 사례, 주기 설정과 프로그램 작성 시 주의사항까지 쉽게 설명합니다.
PLC 프로그램은 일반적으로 Scan Cycle에 따라 반복 실행됩니다. 입력 상태를 확인하고 사용자 프로그램을 실행한 뒤 출력을 갱신하는 과정이 계속 반복되는 방식입니다.
하지만 제어 시스템에서는 일반 Scan 주기와 관계없이 정확히 일정한 시간 간격으로 실행해야 하는 작업이 필요할 때가 있습니다.
예를 들어 10ms마다 데이터를 계산하거나 100ms마다 특정 제어값을 갱신해야 하는 경우입니다. 일반 프로그램에 타이머를 넣어 처리할 수도 있지만 Scan Time의 영향을 받기 때문에 실행 시점이 원하는 주기와 정확하게 일치하지 않을 수 있습니다.
이러한 상황에서 사용할 수 있는 기능이 **Cyclic Interrupt(주기 인터럽트)**입니다.
Cyclic Interrupt란?|일정한 시간마다 프로그램을 실행하는 원리
메타디스크립션
Cyclic Interrupt는 PLC에서 설정한 일정한 시간 간격마다 지정된 프로그램을 실행하는 기능입니다. 일반 Scan과의 차이부터 동작 원리, 활용 사례, 주기 설정과 프로그램 작성 시 주의사항까지 쉽게 설명합니다.
PLC 프로그램은 일반적으로 Scan Cycle에 따라 반복 실행됩니다. 입력 상태를 확인하고 사용자 프로그램을 실행한 뒤 출력을 갱신하는 과정이 계속 반복되는 방식입니다.
하지만 제어 시스템에서는 일반 Scan 주기와 관계없이 정확히 일정한 시간 간격으로 실행해야 하는 작업이 필요할 때가 있습니다.
예를 들어 10ms마다 데이터를 계산하거나 100ms마다 특정 제어값을 갱신해야 하는 경우입니다. 일반 프로그램에 타이머를 넣어 처리할 수도 있지만 Scan Time의 영향을 받기 때문에 실행 시점이 원하는 주기와 정확하게 일치하지 않을 수 있습니다.
이러한 상황에서 사용할 수 있는 기능이 **Cyclic Interrupt(주기 인터럽트)**입니다.
1. Cyclic Interrupt란 무엇이며 왜 사용할까?
Cyclic Interrupt는 PLC에서 미리 설정한 일정한 시간 간격마다 지정된 Interrupt Program 또는 Routine을 실행하는 기능을 말합니다.
우리말로는 주기 인터럽트 또는 정주기 인터럽트 등으로 표현할 수 있습니다.
예를 들어 PLC에서 Cyclic Interrupt 주기를 10ms로 설정했다고 가정해 보겠습니다.
PLC는 일반 프로그램을 반복해서 실행하고 있더라도 설정된 주기가 도래하면 Cyclic Interrupt와 관련된 프로그램을 실행하게 됩니다. 해당 프로그램 실행이 완료되면 다시 기존 프로그램의 실행 흐름으로 복귀합니다.
이 기능이 필요한 가장 큰 이유는 일반 Scan Time과 특정 작업의 실행주기를 분리할 수 있기 때문입니다.
PLC의 일반 프로그램은 한 번의 Scan이 끝나면 다시 다음 Scan이 시작됩니다.
그런데 Scan Time은 프로그램의 규모, 실행되는 명령, 통신 처리, CPU 상태 등 여러 조건에 영향을 받을 수 있습니다.
따라서 일반 Scan 안에서 특정 프로그램을 실행한다면 정확한 실행 간격은 전체 Scan의 영향을 받습니다.
반면 Cyclic Interrupt를 이용하면 PLC가 지원하는 범위 내에서 별도의 주기를 설정하여 특정 작업을 일정한 간격으로 실행하도록 구성할 수 있습니다.
다만 설정 가능한 최소 주기와 시간 정밀도, 실제 응답 특성은 PLC CPU와 제조사에 따라 다르므로 실제 설계에서는 해당 제품의 매뉴얼을 확인해야 합니다.
2. Cyclic Interrupt와 일반 Scan은 어떻게 다를까?
두 방식을 이해하려면 먼저 일반 Scan의 흐름을 살펴보는 것이 좋습니다.
PLC는 개념적으로 다음과 같은 과정을 반복합니다.
입력 확인 → Main Program 실행 → 출력 처리 → 시스템 처리 → 다음 Scan
예를 들어 PLC의 Scan Time이 약 8ms라고 가정해 보겠습니다.
Main Program에 특정 계산 명령을 넣으면 기본적으로 해당 명령 역시 Scan이 반복되는 과정에서 실행됩니다.
문제는 Scan Time이 항상 완전히 동일하다고 단정할 수 없다는 것입니다.
어떤 Scan에서는 8ms가 걸리고 다른 Scan에서는 9ms가 걸리는 등 프로그램 실행 조건에 따라 차이가 나타날 수 있습니다.
Cyclic Interrupt는 시간 기준으로 동작한다
Cyclic Interrupt의 핵심적인 차이는 Scan 횟수가 아니라 설정된 시간주기를 기준으로 실행된다는 것입니다.
예를 들어 Cyclic Interrupt를 100ms 주기로 설정했다면 지정된 프로그램은 일반 Scan과 별도로 해당 주기에 맞춰 실행됩니다.
개념적으로 비교하면 다음과 같습니다.
| 구분 | 일반 Scan Program | Cyclic Interrupt |
|---|---|---|
| 실행 기준 | PLC Scan Cycle | 설정된 시간주기 |
| 실행 시점 | Scan 순서에 따라 실행 | 설정 주기 도래 시 실행 |
| 반복 간격 | Scan Time의 영향 | 설정한 주기를 기준으로 실행 |
| 주요 목적 | 일반적인 순차제어 | 정주기 연산 및 처리 |
| 프로그램 구성 | 전체 설비 로직 | 시간에 민감한 작업 중심 |
따라서 단순히 반복해야 하는 작업이라고 해서 모두 Cyclic Interrupt를 사용할 필요는 없습니다.
일반적인 램프 제어, 밸브 동작, 단순 조건 판단 등은 Main Program에서도 충분히 처리할 수 있습니다.
일정한 실행주기가 제어 결과에 의미 있는 영향을 미치는 작업인지가 Cyclic Interrupt 사용 여부를 결정하는 중요한 기준입니다.
3. Cyclic Interrupt는 어떤 순서로 실행될까?
Cyclic Interrupt가 동작하는 과정을 예로 살펴보겠습니다.
PLC가 Main Program을 실행하고 있고 다음과 같은 작업이 있다고 가정해 보겠습니다.
A 작업 → B 작업 → C 작업 → D 작업
PLC가 B 작업을 실행하고 있는 동안 설정된 Cyclic Interrupt의 실행 시점이 도래할 수 있습니다.
개념적인 흐름은 다음과 같습니다.
Main Program 실행 → 설정 주기 도래 → 현재 실행 상태 보존 → Cyclic Interrupt Program 실행 → Interrupt 종료 → Main Program 복귀
즉 Cyclic Interrupt가 실행된다고 해서 Main Program을 처음부터 다시 시작하는 것은 아닙니다.
CPU는 필요한 실행 상태를 관리하고 Interrupt 처리가 완료되면 원래 프로그램으로 돌아가 남은 작업을 계속 처리합니다.
10ms Cyclic Interrupt를 예로 들면
Cyclic Interrupt 주기를 10ms로 설정했다고 가정하겠습니다.
개념적으로는 다음과 같은 시점마다 실행 대상이 됩니다.
0ms → 10ms → 20ms → 30ms → 40ms → 50ms
Main Program의 Scan Time이 이와 별도로 존재하더라도 Cyclic Interrupt는 설정된 시간주기를 기준으로 동작합니다.
다만 여기서 10ms를 설정하면 어떤 상황에서도 정확히 10.000ms마다 명령이 실행된다고 이해해서는 안 됩니다.
실제 실행에는 CPU의 Interrupt 처리 구조, 우선순위, 현재 실행 중인 명령, 다른 Interrupt 발생 여부 등에 따른 지연이나 변동이 있을 수 있습니다.
따라서 정밀한 시간제어가 필요한 시스템에서는 해당 PLC의 Interrupt 처리시간과 시간 정확도 관련 사양을 반드시 확인해야 합니다.
4. Cyclic Interrupt는 어디에 사용할까?
Cyclic Interrupt는 단순히 프로그램을 빨리 실행하기 위한 기능이 아닙니다.
핵심은 일정한 주기를 확보해야 하는 작업을 일반 Scan과 분리하는 것입니다.
일정한 주기의 연산 처리
특정 데이터를 10ms, 50ms 또는 100ms 등 일정한 주기로 계산해야 하는 경우 Cyclic Interrupt를 활용할 수 있습니다.
특히 이전 값과 현재 값의 차이를 이용하거나 시간에 따른 변화량을 계산하는 작업에서는 실행주기가 중요할 수 있습니다.
PID 제어와 같은 주기적 계산
온도, 압력, 유량 등을 일정한 주기로 계산하여 제어하는 경우에도 정해진 샘플링 주기가 중요할 수 있습니다.
PID 연산 역시 실행주기와 관련이 있기 때문에 사용하는 PLC와 제어 방식에 따라 Cyclic Interrupt를 이용해 일정한 주기로 실행하도록 설계하기도 합니다.
다만 PLC에 전용 PID 명령이나 제어 Task가 제공된다면 제조사가 권장하는 실행방법을 우선 확인하는 것이 좋습니다.
속도와 변화량 계산
센서의 측정값이 시간에 따라 얼마나 변했는지 계산하려면 기준 시간이 필요합니다.
예를 들어 일정한 시간 간격으로 위치 데이터를 읽어 이동량을 계산하면 속도를 구하는 데 활용할 수 있습니다.
실행 간격이 계속 달라진다면 같은 위치 변화량이라도 계산 결과가 달라질 수 있으므로 일정한 주기를 확보하는 것이 중요해질 수 있습니다.
일정 주기의 데이터 수집
설비 상태나 센서 데이터를 일정한 간격으로 기록해야 할 때도 활용할 수 있습니다.
예를 들어 100ms마다 특정 값을 메모리에 저장하도록 구성할 수 있습니다.
다만 대량의 데이터를 저장하거나 외부 장치로 통신하는 작업까지 Interrupt Routine에서 직접 처리하면 실행시간이 길어질 수 있습니다.
이 경우 Interrupt에서는 필요한 데이터를 버퍼에 저장하거나 플래그만 설정하고 실제 통신이나 무거운 처리는 Main Program에서 수행하도록 역할을 분리하는 방법을 고려할 수 있습니다.
5. Cyclic Interrupt 사용 시 무엇을 주의해야 할까?
Cyclic Interrupt의 주기를 짧게 설정한다고 해서 PLC의 제어 성능이 무조건 좋아지는 것은 아닙니다.
오히려 지나치게 짧은 주기는 CPU 부하를 증가시킬 수 있습니다.
Interrupt Program은 가능한 한 짧게 구성한다
Cyclic Interrupt가 실행되는 동안에는 CPU가 해당 Routine을 처리해야 합니다.
따라서 복잡한 계산이나 불필요한 반복 처리 등을 많이 넣으면 Interrupt 실행시간이 길어질 수 있습니다.
예를 들어 10ms마다 실행되는 Interrupt Routine 자체가 대부분의 시간을 사용한다면 Main Program이 실행될 시간이 부족해질 수 있습니다.
Cyclic Interrupt에는 해당 주기에 반드시 처리해야 하는 작업만 배치하는 것이 중요합니다.
실행시간보다 짧은 주기를 설정하지 않도록 한다
Interrupt Routine을 처리하는 데 필요한 시간과 설정주기의 관계도 확인해야 합니다.
Interrupt 실행이 끝나기도 전에 다음 실행 시점이 계속 도래할 정도로 주기를 짧게 설정하면 PLC에 따라 Interrupt 누락, 지연, 오류 또는 CPU 부하 증가 등의 문제가 발생할 수 있습니다.
구체적인 처리 방식은 PLC마다 다르므로 CPU 매뉴얼에서 관련 제한사항을 확인해야 합니다.
Main Program과 공유하는 데이터를 확인한다
Cyclic Interrupt와 Main Program에서 동일한 Device나 변수를 동시에 사용하는 경우에는 주의해야 합니다.
Main Program에서 데이터를 계산하는 도중 Cyclic Interrupt가 발생해 같은 값을 변경하면 예상하지 못한 결과가 발생할 수 있기 때문입니다.
따라서 두 프로그램에서 공유하는 데이터의 읽기와 쓰기 관계를 명확하게 설계해야 합니다.
일반 Timer와 Cyclic Interrupt를 구분한다
PLC 초보자가 자주 혼동하는 부분입니다.
일반 Timer는 프로그램에서 설정된 조건이 유지되는 시간을 측정하거나 일정 시간이 지난 뒤 특정 동작을 수행하는 데 주로 사용합니다.
Cyclic Interrupt는 지정된 프로그램 자체를 일정한 시간주기로 실행하기 위한 기능입니다.
따라서 1초 뒤 모터를 켜는 단순한 동작이라면 일반 Timer가 적합할 수 있습니다.
반대로 10ms마다 특정 센서값을 이용해 계산해야 한다면 Cyclic Interrupt를 검토할 수 있습니다.
두 기능은 모두 시간과 관련되어 있지만 사용 목적이 다릅니다.
Cyclic Interrupt 주기는 짧을수록 좋을까?
그렇지 않습니다.
필요 이상으로 짧은 주기를 설정하면 그만큼 Interrupt 호출 횟수가 증가합니다.
예를 들어 100ms 주기라면 1초에 약 10번 실행 대상이 되지만 1ms 주기라면 이론적으로 1초에 1,000번의 실행 시점이 발생합니다.
따라서 프로그램에 필요한 응답성과 CPU 처리능력을 함께 고려해야 합니다.
제어 대상이 100ms 정도의 변화만 확인해도 충분한데 무조건 1ms로 설정할 이유는 없습니다.
가장 짧은 주기를 찾는 것이 아니라 해당 제어에 필요한 적절한 주기를 찾는 것이 중요합니다.
Cyclic Interrupt 핵심 정리
Cyclic Interrupt는 PLC에서 설정한 일정한 시간 간격을 기준으로 특정 프로그램을 반복 실행하는 Interrupt 기능입니다.
일반 프로그램은 PLC의 Scan Cycle에 따라 실행되지만 Cyclic Interrupt는 별도로 설정한 시간주기를 기준으로 특정 Routine을 실행할 수 있다는 차이가 있습니다.
따라서 일정한 주기의 연산, 데이터 샘플링, 변화량 계산 등 실행 간격이 중요한 작업에 활용할 수 있습니다.
하지만 Cyclic Interrupt를 지나치게 짧게 설정하거나 Interrupt Routine에 많은 프로그램을 넣으면 CPU 부하와 Main Program의 Scan Time에 영향을 줄 수 있습니다.
실제 프로그램을 작성할 때는 필요한 실행주기 → Interrupt Routine 실행시간 → CPU 부하 → Main Program 영향 → Interrupt 우선순위를 함께 검토해야 합니다.
또한 제조사와 PLC CPU에 따라 Cyclic Interrupt의 명칭, 설정 가능한 주기, 우선순위 및 실행 방식이 다르므로 실제 적용 전 해당 CPU의 Programming Manual을 확인하는 것이 중요합니다.




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