
From the grid operator through an aggregator and the charging network’s back office to the charger and the car: who sends what to whom, and the interconnection rules at the end.
Utility or grid operator
Sends grid-code settings, power limits, prices and events
Utility to back office
Aggregator or charging operator’s back office
Builds a timeline from the utility’s events and sends OCPP messages
Back office to charger
Charger
Holds the limits; in DC it holds the inverter
Charger to car
Car
Linked to the charger by ISO 15118-20 or CHAdeMO
Interconnection layer
Under the whole chain sits the rule set for anything that can feed power into the grid. It attaches to the inverter, which is in the charger for DC and in the car for AC.OCPP 2.1 Part 2: Part R, chapter 1 and sections 2.2 to 2.3, pp. 540-542
IEEE 1547 and 1547.1
The interconnection and interoperability standard for distributed energy resources, and the tests that show equipment conforms. The 2018 edition is active, with a revision project open on interoperability and information exchange.
IEEE 1547-2018: Catalogue page; IEEE 1547.1-2020 catalogue pageUL 1741
The certification standard for inverters, converters and interconnection equipment. For interactive equipment it is used with IEEE 1547 and 1547.1.
UL 1741: Scope, sections 1.1 and 1.2SAE J3072
Secondary sources: the SAE catalogue could not be opened.
For the car’s own inverter in US AC V2G. The CPUC describes it as the AC standard for the car, equivalent to IEEE 1547-2018 and UL 1741 SB, and says a revised edition was published on 10 June 2024.
CPUC VGI forum, 2025: Slide 5OCPP 2.1: The back office to charger link, now with discharge
Back office to charger
The specification, a free download, was read where cited.
Edition 2, 2025-12-03 (Edition 1 released 2025-01-23). Approved as IEC 63584-210.
OCPP is the open protocol between a charging station and its charging station management system.OCA: OCPP: Introduction
setpointlimitdischargeLimitOCPP 2.1 Part 2: Part Q, section 2.1, p. 500RejectedInvalidScheduleOCPP 2.1 Part 2: Part Q, section 2.5, p. 506 (requirements V2X.03 to V2X.05)SetDERControlGetDERControlClearDERControlNotifyDERAlarmNotifyEVChargingNeedsRequestOCPP 2.1 Part 2: Part R, section 2.6, p. 543; section 3.33, pp. 689-690Central setpointCentralSetpointThe back office sets it
The back office sets the setpoint. With a dynamic profile it can change the setpoint in the middle of a period with an update message, without sending a new profile.
UpdateDynamicScheduleRequestOCPP 2.1 Part 2: Part Q, section 2.2, p. 501The mode is set per schedule period, so different hours can run different modes; an unplanned change needs a new profile. Bidirectional operation requires a transaction or default transaction profile.TxProfileTxDefaultProfileOCPP 2.1 Part 2: Part Q, section 2.3, p. 505; use case Q05 prerequisites, p. 520
One quantity is written two ways in two links of the chain. OCPP 2.1 signs it: each schedule period has a setpoint that is positive to charge and negative to discharge, held within a limit that is positive only and a discharge limit that is negative only. ISO 15118-20, one link down, does not use a sign: direction is a named choice between Charge and Discharge in the power delivery request, and the limits come as separate maximum charge and maximum discharge fields. Its schema allows a negative number but does not say what one means. The sources describe no translation rule between the two; the one sign convention they show is Josev’s, an open-source implementation, which reads a negative last entry in the car’s power profile as Discharge.
The chain above that is longer than it looks, and the key fact is who is missing from it. OCPP 2.1 assumes the utility does not talk to stations or cars directly. The charging operator acts as the aggregator: it takes the utility’s controls, schedules them and passes them to the stations over OCPP. The IEA says commercial aggregators mostly run those back offices as a packaged service. The diagram therefore has no line from the utility to the car, and a chip on each link opens what that protocol carries.
On the utility side OCPP prescribes nothing. It names IEC 61850, mostly in Europe and Asia, and IEEE 2030.5, mostly in the USA, and notes that DNP3 and SunSpec Modbus are also listed. In California the IEEE 2030.5 profile is CSIP, which requires a defined set of grid functions of a smart inverter, from ride-through to volt-var, but says nothing about electric vehicles. OpenADR sits a layer above: it sends programme objectives, prices and events to systems that decide for themselves how to respond, and an aggregator can be a client of the utility and a server for its own fleet.
The link between the back office and the charger is where OCPP 2.1 differs most from 2.0.1. The earlier release has smart charging only: a text search of its specification finds no discharge or bidirectional use beyond a single parenthetical. The new one adds an operation mode to each schedule period, and the eight modes decide who sets the number: the back office, an outside system such as a site energy management system, or the charger itself from the grid frequency or the building’s meter. A mode can change from one period to the next.
At the last link a car speaks ISO 15118-20 or CHAdeMO. For CHAdeMO the page shows what one open-source charger-side implementation reads: a discharge-compatible bit in a status frame from each side, and four further frames for discharge limits, capability and estimates. That is a reading of code, not of the specification, and which CHAdeMO version first added discharge is not stated. In AC the inverter is in the car, which OCPP cannot reach directly. ISO 15118-20 Amendment 1 adds a service with two architectures to carry grid-code settings to it.
Under the whole chain sit the interconnection rules, which attach to the inverter wherever it is. IEEE 1547 and its test standard 1547.1 are the base, UL 1741 is how inverters are certified against them, and SAE J3072 is the US standard for a car’s own inverter, described here from the CPUC’s account because SAE’s catalogue could not be opened.
OCPP 2.1 Part 2 OCPP 2.1 Part 2: Specification, 803 pages. Edition 2, 2025-12-03; CC BY-ND 4.0 (in the free download set).
ISO 15118-20 common messages (XSD) V2G_CI_CommonMessages.xsd, ISO’s openly published schema. Ed. 1, last modified 2021-10-12.
The schema carries no annotations: no units, no message order and no service numbers.
ISO 15118-20 common types (XSD) V2G_CI_CommonTypes.xsd, ISO’s openly published schema. Ed. 1, last modified 2021-10-12.
The schema carries no annotations: no units, no message order and no service numbers.
Josev Open-source ISO 15118 implementation in Python (SwitchEV iso15118): the order of the messages in a session. Version 0.31.2, commit 1d29f53982d3, 2026-10-13.
One implementation’s state machine, not ISO text.
IEA: vehicle-to-grid technology IEA, “Vehicle-to-grid technology” (part of Global EV Outlook 2026). 2026-05-20, CC BY 4.0.
CSIP 2.1 Common Smart Inverter Profile: IEEE 2030.5 Implementation Guide for Smart Inverters (CSIP Working Group). Version 2.1, March 2018.
OpenADR on DER and V2G OpenADR Alliance, “DER, V2G, and how it relates to OpenADR”. As fetched 2026-10-24; mentions a February 2026 white paper.
The Alliance describing its own role.
OpenADR FAQ OpenADR Alliance, FAQ. As fetched 2026-10-24.
OCPP 2.0.1 Part 2 OCPP 2.0.1 Part 2: Specification, 491 pages. Edition 4, 2025-12-03; CC BY-ND 4.0 (in the free download set).
Battery-Emulator Open-source battery emulator, CHAdeMO “V2X mode” (CHADEMO-BATTERY.h and .cpp). Commit 7d03ad5d07a5, 2026-10-23.
One project’s reading of the protocol, not the specification.
CHAdeMO protocol CHAdeMO Association, protocol development page. As fetched 2026-10-24; version numbers read from the image file names.
The Association describing its own protocol.
IEEE 1547-2018 IEEE 1547-2018, Interconnection and Interoperability of Distributed Energy Resources with Associated Electric Power Systems Interfaces (catalogue page). Approved 2018-02-15, published 2018-04-06, active; amendment 1547a-2020; revision project P1547 open.
IEEE 1547.1-2020 IEEE 1547.1-2020, the test procedures that confirm equipment conforms to IEEE 1547 (catalogue page). Approved 2020-03-05, published 2020-05-21, active; amendment P1547.1a proposed.
UL 1741 UL Standards & Engagement catalogue entry for UL 1741. Edition 3, published 2021-09-28, last revised 2026-08-14.
Scope text only; the catalogue page does not show the text of the supplements.
CPUC VGI forum, 2025 CPUC Energy Division, “Vehicle-Grid Integration Forum: Interconnection”, 8 slides. 2025-04-16.
A regulator’s slide deck; it calls its own dates approximate. It is also where the SAE J3072 facts on this page come from, since the SAE catalogue could not be opened.
OpenADR 3 OpenADR Alliance, OpenADR 3 Introduction and Certification Program. As fetched 2026-10-24.
The OpenADR 3 specification itself sits behind an email form and was not read.
OCA: OCPP Open Charge Alliance, Open Charge Point Protocol page. As fetched 2026-10-24.
OCPP 2.1 Part 0 OCPP 2.1 Part 0: Introduction. Edition 2, 2025-12-03; CC BY-ND 4.0 (in the free download set).
OCA: OCPP 2.1 released Open Charge Alliance news, “OCPP 2.1 is now available!”. 2025-01-23.
ISO 15118-20 ISO 15118-20:2022, Part 20: 2nd generation network layer and application layer requirements. Ed. 1, 2022-04 (catalogue abstract).
ISO 15118-20 DC messages (XSD) V2G_CI_DC.xsd, ISO’s openly published schema. Ed. 1, last modified 2021-08-23.
The schema carries no annotations: no units, no message order and no service numbers.
furdog/chademo Open-source CHAdeMO charger implementation (furdog/chademo). Commit d3c33bf83c7825e19cd856f40bededfb1da9ab24, 2026-05-25.
One project’s code, searched for discharge; not the specification. It is the second open-source project in the dossier’s chademoOpen reading.
Everything here is paraphrased from the pinned sources, not quoted. The SAE entries rest on secondary sources, because SAE’s own catalogue could not be opened; an industry body’s reading is labelled as one. Anything illustrative is labelled as such. Where a source is silent the page says so instead of filling the gap.