Communication Sequences Examples¶
This section provides step-by-step message examples demonstrating the full lifecycle of a vehicle charging process.
Activity Flow Overview¶
- Provisioning and Connection Establishment
- Initial Charging Request
- Vehicle Arrival
- Start of Charging
- Active Charging Phase
- Updated Departure Time
- End of Charging
- Vehicle Departure
- Offline Behavior
Setup¶
The following scenario is used throughout the examples:
Scenario: Vehicle ID
VIN12345678901234, Max Charging Power = 150 kW, Battery Capacity = 330 kWh.
Each message follows the structure:
[MessageType, Source, PresystemId, TimeStamp, MessageId, MessageAction, Payload]
1 Provisioning and Connection Establishment¶
The CMS provides the upstream system with depot and station information upon initial connection.
sequenceDiagram
participant Vehicle
participant CS as "Charging Station"
participant CMS as "ChargeManagement System"
participant DMS as "Depot Management / ITCS"
CMS-->>CMS: Provisioning()
DMS-->>DMS: Provisioning()
CS->>CS: PowerUp()
CS->>CMS: BootNotificationReq()
CMS-->>CS: BootNotificationResp()
CMS->>DMS: BootNotification.req()
DMS-->>CMS: BootNotification.conf()
CMS->>DMS: ProvideChargingInformation.req()
DMS-->>CMS: ProvideChargingInformation.conf()
Note over CMS, DMS: ProvideChargingInformation Example 1
Example 1
Request:[1, "CMS", "uri://Customer1/Presystem1", "2020-07-17T08:30:00Z", "728ba441-4fd6-4b8b-9680-ea4018c2cd2e", "ProvideChargingInformation", {
"depotInfoList": [
{
"depotId": "uri://Customer1/Depot1",
"name": "depot1",
"chargingStationInfoList": [
{
"chargingStationId": "uri://Customer1/Depot1/CS1",
"chargingStationStatus": "Available",
"chargingPointInfoList": [
{"chargingPointId": "uri://Customer1/Depot1/CS1/CP1", "chargingPointStatus": "Available", "presentPower": 0, "energyMeterReading": 888000},
{"chargingPointId": "uri://Customer1/Depot1/CS1/CP2", "chargingPointStatus": "Available", "presentPower": 0, "energyMeterReading": 999000}
]
}
]
}
]
}]
[2, "BMS", "uri://Customer1/Presystem1", "2020-07-17T08:30:01Z", "51a3e975-c0f0-417c-8625-f4f3220376ce", "ProvideChargingInformation", {}]
2 Initial Charging Request¶
The upstream system sends a charging request for vehicle VIN12345678901234.
sequenceDiagram
participant Vehicle
participant CS as "Charging Station"
participant CMS as "ChargeManagement System"
participant DMS as "Depot Management / ITCS"
DMS->>CMS: ProvideChargingRequests.req()
CMS-->>DMS: ProvideChargingRequests.conf()
Note over CMS, DMS: ProvideChargingRequests Example 1
CMS->>DMS: ProvideChargingInformation.req()
DMS-->>CMS: ProvideChargingInformation.conf()
Note over CMS, DMS: ProvideChargingInformation Example 2
Example 2
Request:[1, "BMS", "uri://Customer1/Presystem1", "2020-07-17T08:38:00Z", "baf4ad01-d220-4430-a3eb-b31e4999720e", "ProvideChargingRequests", {
"chargingRequestList": [
{
"chargingPointId": "uri://Customer1/Depot1/CS1/CP1",
"vehicleId": "VIN12345678901234",
"chargingRequestId": "uri://Customer1/Presystem1/Depot1/CR1",
"priority": 1,
"chargingInstruction": "Normal",
"chargingRequestData": {
"expectedArrivalTimeAtChargingPoint": "2020-07-17T09:30:00Z",
"expectedSocAtArrival": 22,
"minTargetSoc": 85,
"maxTargetSoc": 90,
"requestedTimeForDeparture": "2020-07-17T11:00:00Z"
}
}
]
}]
[2, "CMS", "uri://Customer1/Presystem1", "2020-07-17T08:38:01Z", "baf4ad01-d220-4430-a3eb-b31e4999720e", "ProvideChargingRequests", {}]
3 Vehicle Arrival¶
CMS reports that the vehicle has arrived and is preparing to charge.
sequenceDiagram
participant Vehicle
participant CS as "Charging Station"
participant CMS as "ChargeManagement System"
participant DMS as "Depot Management / ITCS"
Vehicle->>CS: Plug connected()
CS->>CMS: StatusNotificationReq(occupied)
CMS-->>CS: StatusNotificationResp()
CMS->>DMS: ProvideChargingInformation.req()
DMS-->>CMS: ProvideChargingInformation.conf()
Note over CMS, DMS: ProvideChargingInformation Example 3
Example 3
Request:[1, "CMS", "uri://Customer1/Presystem1", "2020-07-17T09:29:47Z", "88081f2b-be27-4a0e-9bab-8009e7ab0cf1", "ProvideChargingInformation", {
"depotInfoList": [
{
"depotId": "uri://Customer1/Depot1",
"name": "depot1",
"chargingStationInfoList": [
{
"chargingStationId": "uri://Customer1/Depot1/CS1",
"chargingStationStatus": "Available",
"chargingPointInfoList": [
{
"chargingPointId": "uri://Customer1/Depot1/CS1/CP1",
"chargingPointStatus": "Occupied",
"presentPower": 0,
"energyMeterReading": 888000,
"chargingProcessInfo": {
"presystemId": "uri://Customer1/Presystem1",
"chargingRequestId": "uri://Customer1/Presystem1/Depot1/CR1",
"chargingProcessId": "uri://Customer1/CPR1",
"processStatus": "Preparing",
"startTime": "2020-07-17T09:29:47Z"
}
}
]
}
]
}
]
}]
[2, "BMS", "uri://Customer1/Presystem1", "2020-07-17T09:29:48Z", "88081f2b-be27-4a0e-9bab-8009e7ab0cf1", "ProvideChargingInformation", {}]
4 Start of Charging¶
CMS reports the start of the charging process with vehicle info and electric data.
sequenceDiagram
participant Vehicle
participant CS as "Charging Station"
participant CMS as "ChargeManagement System"
participant DMS as "Depot Management / ITCS"
Vehicle->>CS: Plug connected()
CS->>CMS: StartTransactionReq()
CMS-->>CS: StartTransactionResp()
CMS->>DMS: ProvideChargingInformation.req()
DMS-->>CMS: ProvideChargingInformation.conf()
Note over CMS, DMS: ProvideChargingInformation Example 4
Example 4
Request:[1, "CMS", "uri://Customer1/Presystem1", "2020-07-17T09:31:47Z", "51e9599a-7e8f-4d8d-8880-d8eff52e349a", "ProvideChargingInformation", {
"depotInfoList": [
{
"depotId": "uri://Customer1/Depot1",
"name": "depot1",
"chargingStationInfoList": [
{
"chargingStationId": "uri://Customer1/Depot1/CS1",
"chargingStationStatus": "Available",
"chargingPointInfoList": [
{
"chargingPointId": "uri://Customer1/Depot1/CS1/CP1",
"chargingPointStatus": "Occupied",
"presentPower": 0,
"energyMeterReading": 888000,
"vehicleInfo": {
"vehicleId": "VIN12345678901234",
"vehicleChargingStatus": "ReadyToCharge"
},
"chargingProcessInfo": {
"processStatus": "Preparing",
"startTime": "2020-07-17T09:29:47Z"
}
}
]
}
]
}
]
}]
[2, "BMS", "uri://Customer1/Presystem1", "2020-07-17T09:31:48Z", "51e9599a-7e8f-4d8d-8880-d8eff52e349a", "ProvideChargingInformation", {}]
5 Active Charging Phase¶
During charging, CMS reports ongoing progress, including SoC and power values.
sequenceDiagram
participant Vehicle
participant CS as "Charging Station"
participant CMS as "ChargeManagement System"
participant DMS as "Depot Management / ITCS"
Vehicle->>CS: Start Power Transfer()
loop Charging Loop
Vehicle->>CMS: Optional VDV261 Req()
CMS-->>Vehicle: Optional VDV261 Resp()
CS->>CMS: TransactionEventReq(updated)
CMS-->>CS: TransactionEventResp()
CMS->>DMS: ProvideChargingInformation.req()
DMS-->>CMS: ProvideChargingInformation.conf()
Note over CMS, DMS: ProvideChargingInformation Example 5
end
NOTE: The Value-Added-Service communication VDV261 is asynchronous to OCPP. It is an optional part of the sequence and may not be implemented.
Example 5
During this phase, many ProvideChargingInformation messages are sent. The following example message is sent after approximately one hour. Request:[1, "CMS", "uri://Customer1/Presystem1", "2020-07-17T10:31:47Z", "1fb0360c-5608-4a91-9965-cfcba09b163e", "ProvideChargingInformation", {
"depotInfoList": [
{
"depotId": "uri://Customer1/Depot1",
"chargingStationInfoList": [
{
"chargingStationId": "uri://Customer1/Depot1/CS1",
"chargingStationStatus": "Available",
"chargingPointInfoList": [
{
"chargingPointId": "uri://Customer1/Depot1/CS1/CP1",
"chargingPointStatus": "Occupied",
"presentPower": 150,
"energyMeterReading": 1038000,
"vehicleInfo": {
"vehicleId": "VIN12345678901234",
"tractionBatteryInfo": {"stateOfCharge": 67},
"vehicleChargingStatus": "Charging"
},
"chargingProcessInfo": {
"processStatus": "Charging",
"electricData": {
"chargingCurrent": 200,
"chargingVoltage": 750,
"chargingPower": 150
}
}
}
]
}
]
}
]
}]
[2, "BMS", "uri://Customer1/Presystem1", "2020-07-17T10:31:48Z", "1fb0360c-5608-4a91-9965-cfcba09b163e", "ProvideChargingInformation", {}]
6 Updated Departure Time (+30 min)¶
Upstream modifies the charging request to postpone departure.
sequenceDiagram
participant Vehicle
participant CS as "Charging Station"
participant CMS as "ChargeManagement System"
participant DMS as "Depot Management / ITCS"
Vehicle->>CS: Start Power Transfer()
loop Charging Loop
Vehicle->>CMS: Optional VDV261 Req()
CMS-->>Vehicle: Optional VDV261 Resp()
CS->>CMS: TransactionEventReq(updated)
CMS-->>CS: TransactionEventResp()
CMS->>DMS: ProvideChargingInformation.req()
DMS-->>CMS: ProvideChargingInformation.conf()
Note over CMS, DMS: ProvideChargingInformation Example 5
opt Renegotiation
DMS->>CMS: ProvideChargingRequests.req()
CMS-->>DMS: ProvideChargingRequests.conf()
Note over CMS, DMS: ProvideChargingRequests Example 2
CMS->>CS: SetChargingProfileRequest()
CS-->>CMS: SetChargingProfileResp()
CS->>Vehicle: Start Renegotiation()
CMS->>DMS: ProvideChargingInformation.req()
DMS-->>CMS: ProvideChargingInformation.conf()
Note over CMS, DMS: ProvideChargingInformation Example 6
end
end
Example 6
Request:[1, "CMS", "uri://Customer1/Presystem1", "2020-07-17T10:32:47Z", "7beebb5d-3941-4d63-a65b-3e24dca01b0f", "ProvideChargingRequests", {
"chargingRequestList": [
{
"chargingRequestId": "uri://Customer1/Presystem1/Depot1/CR1",
"chargingInstruction": "Changed",
"chargingRequestData": {
"requestedTimeForDeparture": "2020-07-17T11:30:00Z"
}
}
]
}]
[2, "DMS", "uri://Customer1/Presystem1", "2020-07-17T10:32:48Z", "7beebb5d-3941-4d63-a65b-3e24dca01b0f", "ProvideChargingRequests", {}]
7 End of Charging¶
CMS reports completion of charging.
sequenceDiagram
participant Vehicle
participant CS as "Charging Station"
participant CMS as "ChargeManagement System"
participant DMS as "Depot Management / ITCS"
Vehicle->>CS: Stop Power Transfer()
CS->>CMS: TransactionEventReq(Ended)
CMS-->>CS: TransactionEventResp()
CMS->>DMS: ProvideChargingInformation.req()
DMS-->>CMS: ProvideChargingInformation.conf()
Note over CMS, DMS: ProvideChargingInformation Example 7
Example 7
Request:[1, "CMS", "uri://Customer1/Presystem1", "2020-07-17T11:30:00Z", "60c03f4a-4844-49a6-84a1-acc4224cf90f", "ProvideChargingInformation", {
"depotInfoList": [
{
"depotId": "uri://Customer1/Depot1",
"chargingStationInfoList": [
{
"chargingStationId": "uri://Customer1/Depot1/CS1",
"chargingPointInfoList": [
{
"chargingPointId": "uri://Customer1/Depot1/CS1/CP1",
"chargingPointStatus": "Occupied",
"energyMeterReading": 1113000,
"vehicleInfo": {"vehicleChargingStatus": "ReadyToCharge"},
"chargingProcessInfo": {"processStatus": "Finishing"}
}
]
}
]
}
]
}]
[2, "BMS", "uri://Customer1/Presystem1", "2020-07-17T11:30:01Z", "60c03f4a-4844-49a6-84a1-acc4224cf90f", "ProvideChargingInformation", {}]
8 Vehicle Departure¶
CMS reports that the vehicle has departed and the point is available again.
sequenceDiagram
participant Vehicle
participant CS as "Charging Station"
participant CMS as "ChargeManagement System"
participant DMS as "Depot Management / ITCS"
Vehicle->>CS: Plug disconnected()
CS->>CMS: StatusNotificationReq(Available)
CMS-->>CS: StatusNotificationResp()
CMS->>DMS: ProvideChargingInformation.req()
DMS-->>CMS: ProvideChargingInformation.conf()
Note over CMS, DMS: ProvideChargingInformation Example 8
Example 8
Request:[1, "CMS", "uri://Customer1/Presystem1", "2020-07-17T11:31:00Z", "c61f868a-d1d1-4cf6-936c-f22f25b607d9", "ProvideChargingInformation", {
"depotInfoList": [
{
"depotId": "uri://Customer1/Depot1",
"chargingStationInfoList": [
{
"chargingStationId": "uri://Customer1/Depot1/CS1",
"chargingPointInfoList": [
{"chargingPointId": "uri://Customer1/Depot1/CS1/CP1", "chargingPointStatus": "Available", "presentPower": 0, "energyMeterReading": 888000},
{"chargingPointId": "uri://Customer1/Depot1/CS1/CP2", "chargingPointStatus": "Available", "presentPower": 0, "energyMeterReading": 999000}
]
}
]
}
]
}]
[2, "BMS", "uri://Customer1/Presystem1", "2020-07-17T11:31:01Z", "c61f868a-d1d1-4cf6-936c-f22f25b607d9", "ProvideChargingInformation", {}]
9 Offline Behavior¶
sequenceDiagram
participant CMS as "ChargeManagement System"
participant DMS as "Depot Management / ITCS"
CMS->>DMS: ProvideChargingInformation.req()
DMS-->>CMS: ProvideChargingInformation.conf()
alt Offline Behavior
Note over CMS: CMS is offline.
Note over DMS: Wait for CMS to be online again to reconnect.
else
Note over DMS: DMS/ITCS is Offline.
Note over CMS: Wait for DMS/ITCS to reconnect.
end
Note over CMS: CMS is online.
Note over DMS: DMS/ITCS is online.
DMS->>CMS: BootNotification.req()
CMS-->>DMS: BootNotification.conf()
If either system goes offline:
- CMS failure: Upstream retries reconnection periodically.
- Upstream failure: CMS waits for reconnection.
NOTE: No historical data is replayed after recovery.
Recovery sequence:
BootNotification.req/BootNotification.confProvideChargingInformation.reqProvideChargingRequests.req