OCPP 2.0.1 GetCompositeSchedule 메시지

 

GetCompositeSchedule 개요

GetCompositeSchedule은 중앙 시스템(CSMS)에서 충전소로 보내는 복합 충전 스케줄 조회 요청 메시지입니다. 이 메시지를 통해 CSMS는 특정 EVSE의 모든 활성 충전 프로파일들이 합성된 최종 충전 스케줄을 조회할 수 있으며, 전력 관리, 부하 분산, 요금 최적화 등의 목적으로 실제 적용될 충전 제한사항을 확인할 수 있습니다.

메시지 구조

Request (CSMS → 충전소)

{
  "duration": 7200,
  "chargingRateUnit": "W",
  "evseId": 1
}

Response (충전소 → CSMS)

{
  "status": "Accepted",
  "schedule": {
    "evseId": 1,
    "duration": 7200,
    "scheduleStart": "2024-08-20T14:30:00.000Z",
    "chargingRateUnit": "W",
    "chargingSchedulePeriod": [
      {
        "startPeriod": 0,
        "limit": 11000.0,
        "numberPhases": 3
      },
      {
        "startPeriod": 1800,
        "limit": 7400.0,
        "numberPhases": 3
      },
      {
        "startPeriod": 3600,
        "limit": 11000.0,
        "numberPhases": 3
      }
    ]
  },
  "statusInfo": {
    "reasonCode": "NoError",
    "additionalInfo": "3개의 충전 프로파일이 합성되었습니다"
  }
}

주요 필드 설명

Request 필드들

duration 필드 (필수)

필드명 필수여부 타입 설명
duration 필수 Integer 조회할 스케줄 기간 (초 단위)

chargingRateUnit 필드 (선택사항)

설명
W 와트 (전력 단위)
A 암페어 (전류 단위)

evseId 필드 (필수)

필드명 필수여부 타입 설명
evseId 필수 Integer 스케줄을 조회할 EVSE 식별자

Response 필드들

status 필드 (필수)

설명
Accepted 승인됨 - 스케줄 조회 성공
Rejected 거부됨 - 스케줄 조회 실패

schedule 필드 (선택사항)

필드명 필수여부 타입 설명
evseId 필수 Integer EVSE 식별자
duration 필수 Integer 스케줄 유효 기간 (초)
scheduleStart 필수 DateTime 스케줄 시작 시간
chargingRateUnit 필수 Enum 충전율 단위 (W 또는 A)
chargingSchedulePeriod 필수 Array 충전 스케줄 기간 배열

chargingSchedulePeriod 배열 요소

필드명 필수여부 타입 설명
startPeriod 필수 Integer 기간 시작 시간 (scheduleStart로부터 초)
limit 필수 Number 충전 제한값
numberPhases 선택사항 Integer 사용할 상(phase) 수

statusInfo 필드 (선택사항)

필드명 필수여부 타입 설명
reasonCode 선택사항 String 상태 이유 코드
additionalInfo 선택사항 String 추가 상세 정보

실제 사용 예제

예제 1: 기본 복합 스케줄 조회

// Request
{
  "duration": 3600,
  "chargingRateUnit": "W",
  "evseId": 1
}

// Response
{
  "status": "Accepted",
  "schedule": {
    "evseId": 1,
    "duration": 3600,
    "scheduleStart": "2024-08-20T14:30:00.000Z",
    "chargingRateUnit": "W",
    "chargingSchedulePeriod": [
      {
        "startPeriod": 0,
        "limit": 11000.0,
        "numberPhases": 3
      }
    ]
  },
  "statusInfo": {
    "reasonCode": "SingleProfile",
    "additionalInfo": "단일 기본 프로파일 적용됨"
  }
}

예제 2: 피크/비피크 시간대가 포함된 복합 스케줄

// Request
{
  "duration": 14400,
  "chargingRateUnit": "W",
  "evseId": 2
}

// Response
{
  "status": "Accepted",
  "schedule": {
    "evseId": 2,
    "duration": 14400,
    "scheduleStart": "2024-08-20T16:00:00.000Z",
    "chargingRateUnit": "W",
    "chargingSchedulePeriod": [
      {
        "startPeriod": 0,
        "limit": 7400.0,
        "numberPhases": 3
      },
      {
        "startPeriod": 7200,
        "limit": 3700.0,
        "numberPhases": 3
      },
      {
        "startPeriod": 10800,
        "limit": 11000.0,
        "numberPhases": 3
      }
    ]
  },
  "statusInfo": {
    "reasonCode": "MultipleProfiles",
    "additionalInfo": "TOU 요금제, 부하제어, 트랜잭션 프로파일이 합성됨"
  }
}

예제 3: 전류 단위로 조회

// Request
{
  "duration": 1800,
  "chargingRateUnit": "A",
  "evseId": 1
}

// Response
{
  "status": "Accepted",
  "schedule": {
    "evseId": 1,
    "duration": 1800,
    "scheduleStart": "2024-08-20T14:30:00.000Z",
    "chargingRateUnit": "A",
    "chargingSchedulePeriod": [
      {
        "startPeriod": 0,
        "limit": 16.0,
        "numberPhases": 3
      },
      {
        "startPeriod": 900,
        "limit": 32.0,
        "numberPhases": 3
      }
    ]
  },
  "statusInfo": {
    "reasonCode": "CurrentLimited",
    "additionalInfo": "전류 기반 충전 제어 적용됨"
  }
}

예제 4: 스케줄 없음 (활성 프로파일 없음)

// Request
{
  "duration": 3600,
  "chargingRateUnit": "W",
  "evseId": 3
}

// Response
{
  "status": "Rejected",
  "statusInfo": {
    "reasonCode": "NoActiveProfile",
    "additionalInfo": "EVSE 3에 활성화된 충전 프로파일이 없습니다"
  }
}

예제 5: 복잡한 다단계 스케줄 (스마트 그리드 연동)

// Request
{
  "duration": 21600,
  "chargingRateUnit": "W",
  "evseId": 1
}

// Response
{
  "status": "Accepted",
  "schedule": {
    "evseId": 1,
    "duration": 21600,
    "scheduleStart": "2024-08-20T18:00:00.000Z",
    "chargingRateUnit": "W",
    "chargingSchedulePeriod": [
      {
        "startPeriod": 0,
        "limit": 5000.0,
        "numberPhases": 3
      },
      {
        "startPeriod": 3600,
        "limit": 0.0,
        "numberPhases": 3
      },
      {
        "startPeriod": 5400,
        "limit": 11000.0,
        "numberPhases": 3
      },
      {
        "startPeriod": 10800,
        "limit": 7400.0,
        "numberPhases": 3
      },
      {
        "startPeriod": 18000,
        "limit": 11000.0,
        "numberPhases": 3
      }
    ]
  },
  "statusInfo": {
    "reasonCode": "SmartGridOptimized",
    "additionalInfo": "스마트그리드 신호, 요금제, 부하제어가 통합 적용됨"
  }
}

예제 6: 존재하지 않는 EVSE

// Request
{
  "duration": 3600,
  "chargingRateUnit": "W",
  "evseId": 99
}

// Response
{
  "status": "Rejected",
  "statusInfo": {
    "reasonCode": "UnknownEVSE",
    "additionalInfo": "EVSE ID 99가 존재하지 않습니다. 사용 가능한 EVSE: 1, 2, 3"
  }
}

충전 프로파일 합성 로직

프로파일 우선순위 (높음 → 낮음)

  1. ChargingStationMaxProfile: 충전소 최대 용량 제한
  2. TxProfile: 개별 트랜잭션별 프로파일
  3. TxDefaultProfile: 기본 트랜잭션 프로파일
  4. ChargingStationExternalConstraints: 외부 제약사항

합성 알고리즘

1. 모든 활성 프로파일 수집
2. 우선순위별 정렬
3. 시간대별 교집합 계산
4. 각 시간대에서 가장 제한적인 값 선택
5. 연속된 동일 값 구간 병합

예제: 3개 프로파일 합성

  • 프로파일 A (TxProfile): 0-1800초 → 11kW, 1800-3600초 → 7.4kW
  • 프로파일 B (TxDefaultProfile): 전체 기간 → 11kW
  • 프로파일 C (ExternalConstraints): 900-2700초 → 5kW

합성 결과:

  • 0-900초: 11kW (A, B 중 최소값)
  • 900-1800초: 5kW (A, B, C 중 최소값)
  • 1800-2700초: 5kW (B, C 중 최소값)
  • 2700-3600초: 7.4kW (A, B 중 최소값)

사용 시나리오

전력 관리 최적화

  • 실시간 부하 상황 확인
  • 동적 전력 배분 계획
  • 그리드 안정성 확보

요금 최적화

  • TOU 요금제 반영 확인
  • 피크 시간대 제한 검증
  • 사용자별 요금 정책 적용

시스템 모니터링

  • 설정된 프로파일 동작 확인
  • 예상 충전 시간 계산
  • 전력 사용량 예측

응답 분석 및 활용

스케줄 패턴 분석

{
  "startPeriod": 0, "limit": 11000.0,     // 최대 전력으로 시작
  "startPeriod": 1800, "limit": 7400.0,  // 30분 후 전력 감소
  "startPeriod": 3600, "limit": 0.0      // 1시간 후 충전 중단
}

전력 효율성 계산

  • 평균 충전 전력: (11kW×30분 + 7.4kW×30분) / 60분 = 9.2kW
  • 총 예상 에너지: 9.2kW × 1시간 = 9.2kWh
  • 피크 전력 비율: 11kW 구간 / 전체 구간 = 50%

충전 시간 예측

  • 고속 충전 구간: 0-30분 (11kW)
  • 중속 충전 구간: 30-60분 (7.4kW)
  • 충전 중단 구간: 60분 이후

중요 포인트

  • GetCompositeSchedule은 실제 적용될 최종 충전 제한사항을 확인하는 핵심 도구입니다
  • 여러 충전 프로파일이 동시에 적용될 때 가장 제한적인 값이 최종 스케줄에 반영됩니다
  • chargingRateUnit을 통해 전력(W) 또는 전류(A) 기반으로 스케줄을 조회할 수 있습니다
  • 스마트 그리드, TOU 요금제, 부하 관리가 통합적으로 반영된 결과를 확인할 수 있습니다
  • 실시간 전력 관리와 요금 최적화에 필수적인 정보를 제공합니다
  • 충전 시간 예측과 사용자 안내에 중요한 데이터 소스입니다
  • 프로파일 설정 오류나 충돌을 사전에 발견할 수 있습니다
  • 에너지 관리 시스템(EMS)과의 연동에 핵심적인 역할을 합니다

이 메시지를 통해 복잡한 전력 관리 정책들이 실제로 어떻게 적용되는지 정확히 파악할 수 있으며, 효율적인 에너지 사용과 비용 최적화를 달성할 수 있습니다.