이 글은 인터럽트 구조 설계, 400W PMSM 서보 지터와 실행 시간 계산 시리즈의 2편입니다. 앞 편에 이어 인터럽트 지터 분석과 실시간 측정 검증, 맺음말을 설명합니다.
인터럽트 지터 분석과 실시간 측정 검증
인터럽트 지터(Jitter)는 제어 인터럽트 요청 신호가 발생한 시점부터 실제 ISR의 첫 번째 유효 명령어가 실행되기까지 소요되는 응답 지연 시간(Latency)의 시간적 편차를 의미합니다. 디지털 서보 제어기에서 지터가 과도하게 발생하면 샘플링 주기가 불규칙해져 이산화 오차가 누적되며, 이는 고주파 전류 리플 증가 및 위치 정밀도 저하로 이어질 수 있습니다.
인터럽트의 최대 지연 시간 L_max는 하드웨어 인터럽트 진입에 소요되는 컨텍스트 스위칭 시간 T_ctx, 임계 영역(Critical Section)에서의 인터럽트 비활성화 시간 T_crit, 그리고 상위 우선순위 인터럽트의 처리 시간 T_higher의 합으로 주어지며 이를 식 (4)로 정의합니다.
식 (4)에서 알 수 있듯이 속도 제어 루프의 지터는 상위 우선순위를 갖는 전류 제어 ISR의 실행 시간 변동폭에 직접적인 영향을 받습니다. 전류 제어 ISR의 최악 실행 시간 T_WCET와 최선 실행 시간 T_BCET 사이의 편차는 식 (5)와 같이 하위 속도 루프의 최대 지터 J_max를 유발합니다.
예를 들어 전류 제어 ISR 내부의 조건문 분기나 비선형 보상 알고리즘으로 인해 T_WCET가 18.5μs이고 T_BCET가 12.0μs라면, 하위 제어 루프가 겪는 최대 지터 J_max는 6.5μs에 도달합니다. 1ms 주기의 속도 루프에서는 6.5μs의 지터가 허용 범위 내에 위치할 수 있으나, 62.5μs 주기를 갖는 전류 루프 자체의 지터는 수백 나노초(ns) 이하로 엄격하게 관리해야 합니다.
실무 개발 환경에서 인터럽트 실행 시간과 지터를 정밀하게 검증하기 위해 두 가지 계측 기법을 주로 활용합니다. 첫 번째 방법은 제어기의 범용 입출력(GPIO) 핀을 ISR 진입 직후 High 상태로 토글하고 종료 직전 Low 상태로 복귀시킨 뒤, 오실로스코프로 출력 펄스의 폭과 시작 시점의 변동폭을 직접 관측하는 방식입니다. 두 번째 방법은 ARM Cortex-M 코어에 내장된 DWT(Data Watchpoint and Trace) 사이클 카운터 레지스터를 이용하여 ISR 진입과 퇴출 시점의 시스템 클록 사이클 수를 읽어 나노초 단위로 정확히 산출하는 방식입니다. 이러한 실측 과정을 통해 최악의 부하 조건에서도 ISR 실행 시간과 지터가 설계 마진을 초과하지 않는지 최종 검증합니다.
맺음말
400W급 영구자석 동기 전동기(PMSM) 서보 드라이브의 고성능 실시간 제어를 구현하기 위해서는 정교한 PWM 동기화 인터럽트 아키텍처, 계층적 우선순위 설계, 그리고 정량적 실행 시간 및 지터 마진 계산이 필수적으로 수반되어야 합니다.
본문에서 분석한 16kHz PWM 스위칭 기반의 400W 서보 제어기에서는 전류 루프 실행 시간 18.5μs, 속도 루프 45.0μs, 통신 태스크 200.0μs를 적용하여 총 36.1%의 안정적인 CPU 점유율을 도출하였습니다. 이는 실시간 제어 시스템의 허용 기준인 60%에서 70%보다 현저히 낮아 충분한 연산 여유를 확보한 결과입니다. 또한 PWM 삼각파의 정점 및 저점 동기 트리거를 통해 스위칭 노이즈가 없는 안정적인 전류 샘플링 환경을 확립하였습니다.
실무 엔지니어링 단계에서는 전역 변수 동기화를 위한 인터럽트 비활성화 임계 영역(Critical Section)을 최소한의 명령어로 제한하여 불필요한 인터럽트 지연을 억제해야 합니다. 또한 부동소수점 연산 장치(FPU)를 최대로 활용하고 분기문 실행 경로의 시간 차이를 줄여 최악 실행 시간(WCET)과 지터를 최소화하는 소프트웨어 최적화가 필요합니다. 마지막으로 GPIO 핀 토글 오실로스코프 계측 및 DWT 사이클 카운터를 활용한 실시간 검증을 반드시 병행함으로써 데드라인 초과로 인한 제어 발산 및 모터 제어 사고를 사전에 철저히 차단해야 합니다.
이 글은 앞선 내용을 몰라도 읽을 수 있게 썼습니다. 배경이 궁금하다면 이산화 방법 비교, 로봇 관절 제어기 후방 오일러와 투스틴 변환 계산을 함께 보면 도움이 됩니다: https://www.infoshirimp.co.kr/?p=185
이것으로 시리즈를 마칩니다. 앞선 편들과 함께 읽으면 전체 흐름을 파악할 수 있습니다.