스마트 충전(for DR) - Use Cases
이 문서는 OCPP 2.x에 완전히 대응되지 않았습니다.
이 페이지는 OCPP Smart Charging을 활용하여 수요반응/국민DR(전력 수급 상황에 의한) 발령으로 인해 충전 출력을 제한하거나 충전을 중단하는 시스템입니다. 충전기는 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 모드
- 설정 확인:
DRTargetEnabled=true,DRParticipationMode=manual - 사용자 선택: 동의/비동의 버튼 제공
- 상태 전송: 사용자 선택 결과를
DemandResponse.Apply,DemandResponse.User.AgreementMeasurand로 전송
시나리오 2: Auto 모드
- 설정 확인:
DRTargetEnabled=true,DRParticipationMode=auto - 상태 전송:
DemandResponse.Apply=1,DemandResponse.User.Agreement=0전송
시나리오 3: DR 대상이 아닌 경우
- 설정 확인:
DRTargetEnabled=false - 처리: 수요반응 관련 절차 생략, 일반 충전 진행
원격 충전 시작시 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)