본문으로 건너뛰기

스마트 충전(for DR) - Use Cases

주의사항

이 문서는 OCPP 2.x에 완전히 대응되지 않았습니다.

본 문서는 전력 수급 비상 등 수요반응(국민DR) 발령 시, OCPP Smart Charging 규격을 활용하여 충전기 출력을 제어(제한 또는 일시 감축)하는 절차를 정의합니다. 충전기는 CSMS로부터 수요반응 설정을 조회하고, 현장 사용자 동의 여부에 따라 수요반응 제어에 참여합니다.

수요반응 설정 조회​

충전기는 수요반응 관련 설정을 조회해야 합니다.

OCPP v1.6 GetVariables​

Request

예시
{
"vendorId": "com.skelectlink",
"messageId": "GetVariables",
"data": {
"getVariableData": [
{
"component": {
"name": "CustomDemandResponse"
},
"variable": {
"name": "DRTargetEnabled"
},
"attributeType": "Actual"
},
{
"component": {
"name": "CustomDemandResponse"
},
"variable": {
"name": "DRParticipationMode"
},
"attributeType": "Actual"
}
]
}
}

Response

예시
{
"status": "Accepted",
"data": {
"getVariableResult": [
{
"attributeType": "Actual",
"attributeValue": "true",
"component": {
"name": "CustomDemandResponse"
},
"variable": {
"name": "DRTargetEnabled"
},
"attributeStatus": "Accepted"
},
{
"attributeType": "Actual",
"attributeValue": "manual",
"component": {
"name": "CustomDemandResponse"
},
"variable": {
"name": "DRParticipationMode"
},
"attributeStatus": "Accepted"
}
]
}
}

OCPP v2.1 GetVariables​

Request

예시
[
2,
"uuid-example",
"GetVariables",
{
"getVariableData": [
{
"component": {
"name": "CustomDemandResponse"
},
"variable": {
"name": "DRTargetEnabled"
},
"attributeType": "Actual"
},
{
"component": {
"name": "CustomDemandResponse"
},
"variable": {
"name": "DRParticipationMode"
},
"attributeType": "Actual"
}
]
}
]

Response

예시
[
3,
"uuid-example",
{
"getVariableResult": [
{
"attributeType": "Actual",
"attributeValue": "true",
"component": {
"name": "CustomDemandResponse"
},
"variable": {
"name": "DRTargetEnabled"
},
"attributeStatus": "Accepted"
},
{
"attributeType": "Actual",
"attributeValue": "manual",
"component": {
"name": "CustomDemandResponse"
},
"variable": {
"name": "DRParticipationMode"
},
"attributeStatus": "Accepted"
}
]
}
]

충전 시작 시 수요반응 동의 처리​

시나리오 1: Manual 모드​

  1. 설정 확인: DRTargetEnabled=true, DRParticipationMode=manual
  2. 사용자 선택: 동의/비동의 버튼 제공
  3. 상태 전송: 사용자 선택 결과를 DemandResponse.Apply, DemandResponse.User.Agreement Measurand로 전송

시나리오 2: Auto 모드​

  1. 설정 확인: DRTargetEnabled=true, DRParticipationMode=auto
  2. 상태 전송: DemandResponse.Apply=1, DemandResponse.User.Agreement=0 전송

시나리오 3: DR 대상이 아닌 경우​

  1. 설정 확인: DRTargetEnabled=false
  2. 처리: 수요반응 관련 절차 생략, 일반 충전 진행

원격 충전 시작시 DR 적용​

수요반응이 적용되어야 하는 경우, CSMS는 RemoteStartTransaction.req 전송 시 chargingProfile을 함께 포함할 수 있습니다.

시나리오​

현재 시간이 1:40이고 수요제어가 2:00에 시작하여 3:00에 종료되는 상황에서 들어온 요청입니다.

기대 동작:

  • 1:40~2:00: 정상적으로 충전 (제한 없음)
  • 2:00~3:00: DR 전력 제어 적용 (예: 4kW 제한)
  • 3:00 이후: 자동으로 DR 제한 해제하여 원래 출력으로 복구
예시
[
2,
"uuid-example",
"RemoteStartTransaction",
{
"connectorId": 1,
"idTag": "1010010100008471",
"chargingProfile": {
"chargingProfileId": 88888,
"stackLevel": 1,
"chargingProfilePurpose": "TxProfile",
"chargingProfileKind": "Relative",
"chargingSchedule": {
"startSchedule": "2024-06-27T14:00:00Z",
"chargingRateUnit": "W",
"chargingSchedulePeriod": [
{ "startPeriod": 0, "limit": "4000" },
{ "startPeriod": 3600, "limit": "32000" }
]
}
}
}
]

적용 가이드​

  • chargingProfilePurpose는 트랜잭션에만 적용되는 TxProfile을 사용합니다.
  • chargingProfileKind는 Relative를 사용하여 startSchedule 시점을 기준으로 상대적 시간으로 제어 구간을 설정합니다.
  • startSchedule을 명시하여 프로파일 적용 시작 시점을 명확하게 지정합니다.

상태 전송 (MeterValues)​

수요반응 프로그램 참여 및 사용자 동의 상태가 변경될 때 다음 커스텀 Measurand 값을 전송해야 합니다.

MeterValues 전송​

OCPP v1.6에서는 MeterValues.req를 사용합니다.

예시
[
2,
"uuid-example",
"MeterValues",
{
"connectorId": 1,
"transactionId": 12345,
"meterValue": [
{
"timestamp": "2024-06-27T11:41:32Z",
"sampledValue": [
{
"value": "1",
"context": "Transaction.Begin",
"measurand": "DemandResponse.Apply",
"unit": "Percent"
},
{
"value": "1",
"context": "Transaction.Begin",
"measurand": "DemandResponse.User.Agreement",
"unit": "Percent"
}
]
}
]
}
]

OCPP v2.1에서는 동일한 measurand 의미를 TransactionEventRequest(eventType=Updated)의 meterValue에 포함합니다.

수요반응 제어 수신 및 처리​

수요반응 이벤트가 발생하면 CSMS는 EVSE로 스마트 충전 프로파일 설정 명령을 전송합니다.

OCPP v1.6에서는 SetChargingProfile.req를 사용합니다.

OCPP v2.1 충전기는 아래 v1.6 예시의 connectorId/csChargingProfiles 형식을 그대로 사용하지 말고, OCPP v2.1 스마트 충전 프로파일 및 EVSE 식별 모델에 맞는 SetChargingProfileRequest를 처리해야 합니다.

OCPP v1.6 - SetChargingProfile 수신​

예시
[
2,
"uuid-example",
"SetChargingProfile",
{
"connectorId": 1,
"csChargingProfiles": {
"chargingProfileId": 12345,
"stackLevel": 1,
"chargingProfilePurpose": "DemandResponse",
"chargingProfileKind": "Absolute",
"validFrom": "2024-06-27T13:00:00Z",
"validTo": "2024-06-27T14:00:00Z",
"chargingSchedule": {
"chargingRateUnit": "W",
"chargingSchedulePeriod": [
{
"startPeriod": 0,
"limit": "4000"
}
]
}
}
}
]

프로파일 적용 기술 설명​

  • OCPP 표준 수행 절차는 ChargePointMaxProfile과 동일하게 동작합니다.
  • 우선순위 적용: 기존 충전 프로파일보다 높은 우선순위로 적용
  • 충전 제어: 지정된 출력 제한(limit) 값에 따라 충전 출력 조정

수요반응 해제​

일반적으로 validFrom부터 validTo까지의 시간 동안 수요반응 제어가 적용됩니다.

그 외로 서버에서 즉시 DR을 해제하기 위해 아래와 같은 방식으로 제어합니다.

ClearChargingProfile 명령​

예시
[
2,
"uuid-example",
"ClearChargingProfile",
{
"id": 12345,
"connectorId": 1,
"chargingProfilePurpose": "DemandResponse"
}
]

예외 사항​

DR 설정 조회 실패​

  • DR 설정 조회에 실패한 경우
  • 기본값으로 DRTargetEnabled=false 처리하여 일반 충전 진행

SetChargingProfile 처리 실패​

  • 충전 프로파일 적용에 실패한 경우
  • SetChargingProfile.conf에서 status=Rejected 응답
  • CSMS에 오류 상황을 알리고 조치 대기

사용자 동의 타임아웃​

  • Manual 모드에서 사용자가 일정 시간 내 응답하지 않는 경우
  • 기본값으로 DemandResponse.User.Agreement=0 (미동의) 처리

충전 중 DR 이벤트 발생​

  • 충전 중 DR 이벤트가 발생한 경우
  • 시스템에는 데이터를 관리해야 하며, 충전 중인 건은 전력 제어 없이 일반 충전 진행 및 완료 처리

충전 중 DR 해제​

  • ClearChargingProfile 명령이 충전 중에 수신되거나 ValidTo 시간에 도달하여 전력 제어가 종료된 경우
  • 정상적으로 전력 제어는 해제하며, 즉시 DemandResponse.Apply=0를 전송합니다.(context=Other)