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"
}
}
충전 프로파일 합성 로직
프로파일 우선순위 (높음 → 낮음)
- ChargingStationMaxProfile: 충전소 최대 용량 제한
- TxProfile: 개별 트랜잭션별 프로파일
- TxDefaultProfile: 기본 트랜잭션 프로파일
- 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)과의 연동에 핵심적인 역할을 합니다
이 메시지를 통해 복잡한 전력 관리 정책들이 실제로 어떻게 적용되는지 정확히 파악할 수 있으며, 효율적인 에너지 사용과 비용 최적화를 달성할 수 있습니다.