진입과 퇴출 동작, 3kW 서버 전원 상태 머신 구현과 중복 방지 1편

이 글은 진입과 퇴출 동작, 3kW 서버 전원 상태 머신 구현과 중복 방지를 2편으로 나누어 정리한 시리즈의 1편입니다. 이번 편에서는 서버 전원 장치 상태 전이와 부수 효과 관리의 필요성, 진입 동작과 퇴출 동작의 분리와 단일 진실 공급원 원칙을 다룹니다.

3kW 서버 전원 상태 머신: 중앙 집중식 디스패치 및 진입·퇴출 동작 하드웨어 부수 효과(Side Effect) 통제 및 단일 진실 공급원(SSOT) 아키텍처 1단계: 퇴출 동작 (Exit) PWM 차단 (OFF) 보조 전원 플래그 정리 보호 타이머·ISR 중단 [실행 규칙 및 역할] • 전이 시 단 1회만 실행 • 현재 상태 자원 안전 반환 • 하드웨어 안전 상태 전환 • 비차단(Non-blocking) [대표 전담 함수] Exit_Standby() Exit_NormalRun() 2단계: 상태 전이 (Update) 지연 판정: N_delay = 50 현재 상태 ➔ 목표 상태 State_Reg = Next 전이 경로: 12개 ➔ 8개 [중앙 디스패처 원칙] • 단일 진실 공급원(SSOT) • 전이 경로별 중복 방지 • 상태 변수 원자적 갱신 • 5 ms 채터링 방지 판정 [디스패치 함수] FSM_Dispatch(Target) Exit() ➔ State ➔ Entry() 3단계: 진입 동작 (Entry) PI 적분기 리셋 (∫=0) 릴레이 투입 (ON) PWM 게이트 인에이블 [초기화 및 하드웨어] • 진입 시 단 1회만 실행 • 제어기 상태 변수 리셋 • 돌입 방지 회로 투입 • 결함 시 즉시 PWM 차단 [대표 전담 함수] Entry_SoftStart() Entry_FaultTrip() 4단계: 주기 제어 (Do) 전압·전류 피드백 연산 ADC ➔ PI ➔ PWM 제어 실시간 결함 감시 (보호) 루프 주기: Ts = 100 μs [정상 상태 주기 연산] • 매 주기(ISR) 제어 연산 • 3kW 출력 피드백 제어 • 전이 조건 이벤트 감시 • 동일 상태 재진입 생략 [주기 제어 함수] Do_NormalRun() Timer_ISR (100 μs Loop) 설계 핵심 상태 N=4 기준: 분산 전이 12개(N(N-1))의 중복 코드를 진입·퇴출 8개(2N) 전담 함수로 일원화 (SSOT) 디스패처의 엄격한 3단계 순서(퇴출 ➔ 상태 갱신 ➔ 진입)와 5 ms 지연 판정으로 제어 결함 및 스위칭 소자 파손 방지
3kW 서버 전원 장치 상태 머신의 중앙 집중식 디스패치 3단계 시퀀스와 진입 및 퇴출 동작 분리 구조를 보여줍니다.

서버 전원 장치 상태 전이와 부수 효과 관리의 필요성

3kW급 고효율 서버 전원 장치(PSU)는 클라우드 데이터 센터와 대규모 연산 서버에 무정전 직류 전력을 공급하는 핵심 전력 변환 시스템입니다. 이러한 서버 전원 장치는 고신뢰성과 무중단 연속 동작이 요구되므로 제어 펌웨어의 동작 시퀀스를 결정론적으로 제어해야 합니다. 3kW 서버 전원 장치의 운전 모드는 일반적으로 전원 인가 후 대기(Standby), 출력 전압을 완만하게 상승시키는 소프트 스타트(Soft-start), 정격 전압과 전류를 일정하게 제어하는 정상 운전(Normal Run), 그리고 과전압이나 과전류 발생 시 시스템을 보호하는 결함 차단(Fault Trip) 상태로 구분됩니다. 각 상태 간의 전이는 입력 전압 조건, 기동 명령, 출력 전압 정정 완료, 보호 감지 신호 등 다양한 이벤트에 의해 발생합니다.

이러한 상태 전이 과정에서는 단순히 소프트웨어 내부의 상태 변수를 변경하는 것에 그치지 않고, 물리적인 하드웨어를 제어하는 다양한 동작이 반드시 수반됩니다. 예를 들어 소프트 스타트 상태로 넘어갈 때는 펄스 폭 변조(PWM) 게이트 구동 신호를 활성화하고 비례적분(PI) 제어기의 적분기 항을 0으로 초기화해야 합니다. 또한 돌입 전류 방지용 릴레이를 투입하거나 타이머 인터럽트를 시작하는 동작이 필요합니다. 제어 소프트웨어 공학에서는 이러한 하드웨어 제어 작업을 상태 전이의 부수 효과(Side Effect)라고 정의합니다. 만약 상태 전이를 처리하는 개별 분기문마다 이러한 부수 효과 코드를 중복하여 작성하면 전이 경로가 추가되거나 수정될 때 특정 하드웨어 초기화나 정지 명령이 누락되는 결함이 발생합니다. 이는 스위칭 소자의 단락 사고나 시스템 오동작을 초래하므로 부수 효과를 체계적으로 관리하는 전용 아키텍처가 필수적입니다.

진입 동작과 퇴출 동작의 분리와 단일 진실 공급원 원칙

상태 머신(FSM)에서 부수 효과를 안전하게 통제하기 위한 핵심 원리는 진입 동작(Entry Action)과 퇴출 동작(Exit Action)의 명확한 분리입니다. 진입 동작은 어떠한 이전 상태에서 출발했는지와 관계없이 해당 상태로 진입하는 순간 단 한 번만 실행되는 초기화 작업입니다. 반대로 퇴출 동작은 다음 상태가 무엇인지와 관계없이 현재 상태를 벗어나는 순간 단 한 번만 실행되는 정리 작업입니다. 이를 통해 각 상태는 자신의 라이프사이클에 필요한 하드웨어 설정과 해제 책임을 스스로 온전히 담당하게 됩니다.

이러한 구조는 소프트웨어 설계의 단일 진실 공급원(Single Source of Truth, SSOT) 원칙과 단일 책임 원칙을 충족합니다. 만약 상태 전이 경로마다 부수 효과를 개별 분기문 안에서 직접 실행하도록 설계하면 관리해야 할 코드 블록이 급격히 증가합니다. 상태 머신의 총 상태 수를 N이라고 할 때, 상태 간에 발생할 수 있는 이론적인 최대 전이 경로의 수 P_max는 식 (1)과 같습니다.

Pmax=N·(N−1)(1)

반면에 진입 동작과 퇴출 동작을 상태별로 일원화하여 관리할 때 필요한 총 동작 관리 함수의 개수 F_total은 식 (2)와 같이 정의됩니다.

Ftotal=2·N(2)

3kW 서버 전원 장치에서 대기, 소프트 스타트, 정상 운전, 결함 차단의 4가지 상태(N = 4)를 운용한다고 가정할 때, 식 (1)에 따른 최대 전이 경로는 12개가 됩니다. 12개의 모든 전이 경로에 개별적으로 부수 효과 코드를 배치하면 동일한 하드웨어 설정 코드가 여러 곳에 분산되어 복사되고, 유지보수 과정에서 누락될 위험이 큽니다. 반면 식 (2)에 따라 진입 및 퇴출 동작을 분리하면 8개의 독립된 전담 함수만으로 모든 부수 효과를 완벽하게 통제할 수 있습니다. 결과적으로 코드의 중복이 원천적으로 제거되며, 새로운 상태가 추가되더라도 기존 전이 로직의 수정 없이 신규 상태의 진입 및 퇴출 함수만 작성하면 되므로 시스템의 신뢰성이 크게 향상됩니다.

다음 편에서는 이어지는 내용을 계속 설명합니다.

댓글 남기기