充电桩出海-OCPP系列(一)

内容分享5天前发布
0 0 0

近年来充电桩出海一直备受大家关注,海外充电桩的出现也为电动汽车充电提供了更多的选择。而 OCPP 1.6 协议作为一种标准化的通信协议,为充电桩与中央系统之间的高效、安全通信提供了保障。但是我发现许多人对 OCPP 1.6 协议的接口理解还比较模糊,所以我想通过一系列的文章来详细介绍 OCPP 1.6 协议的核心接口,协助大家更好地理解和应用这一协议。
本次针对OCPP 1.6协议的部分核心接口进行详细介绍,包括充电站主动上报与请求接口、中央系统下发控制指令接口。

OCPP是什么

OCPP(Open Charge Point Protocol)是一种开放的充电点协议,用于实现电动汽车充电点与中央系统之间的通信。它定义了一系列的接口和消息格式,确保了不同厂商的充电点和中央系统之间可以正常通信和交互。说人话就是充电桩与云平台连接的通讯协议,就像国内云快充一样。

协议版本

OCPP协议历经多个版本迭代,核心版本包括OCPP 1.6、2.0及2.0.1,其技术差异主要体目前:

  • • OCPP 1.6(2015):基于SOAP/XML协议,支持远程启动充电、计费信息传输,但缺乏对智能电网集成和动态负载管理的支持。
  • • OCPP 2.0(2018):引入JSON格式及WebSocket传输协议,支持双向实时通信,新增设备管理(如固件差分更新)、智能充电(基于电网状态调整充电功率)及增强型安全机制(TLS 1.2+)。
  • • OCPP 2.0.1(2020):优化了事件通知机制(如“TransactionEvent”消息的多次触发),并明确ISO 15118-2(即插即充)的集成规范。
    目前国内出海的充电桩主要采用1.6版本,同时笔者发现这一版本也是目前海外大多数运营商支持的版本。
    同时1.6版本分为json版本和SOAP版本,国内充电桩及海外运营商大多数使用JSON格式的版本。

接口列表

充电站主动上报与请求接口

充电桩出海-OCPP系列(一)

中央系统下发控制指令接口

充电桩出海-OCPP系列(一)

部分核心接口说明

1. Authorize

充电桩出海-OCPP系列(一)

Authorize

接口描述

充电站向中央系统请求授权用户身份,以确定用户是否有权使用充电站进行充电。

消息类型

  • • Authorize.req:充电站向中央系统发送的授权请求消息。
  • • Authorize.conf:中央系统向充电站发送的授权响应消息。

字段定义

Authorize.req

字段名称字段类型基数描述 idTagIdToken1..1需要授权的用户标识

Authorize.conf

字段名称字段类型基数描述 idTagInfoIdTagInfo1..1授权状态信息

代码示例 (JSON)


    
    
    
  Authorize.req:
{
  "idTag": "1234567890"
}

Authorize.conf:
{
  "idTagInfo": {
    "status": "Accepted"
  }
}

2. BootNotification

充电桩出海-OCPP系列(一)

BootNotification

接口描述

充电站启动后向中央系统发送通知,告知中央系统其已启动并提供相关配置信息。

消息类型

  • • BootNotification.req:充电站向中央系统发送的启动通知请求消息。
  • • BootNotification.conf:中央系统向充电站发送的启动通知响应消息。

字段定义

BootNotification.req

字段名称字段类型基数描述 chargePointModelCiString20Type1..1充电站模型名称chargePointVendorCiString20Type1..1充电站供应商名称chargeBoxSerialNumberCiString25Type0..1充电站内部序列号(可选)chargePointSerialNumberCiString25Type0..1充电站序列号(可选)firmwareVersionCiString50Type0..1充电站固件版本(可选)iccidCiString20Type0..1SIM卡ICCID(可选)imsiCiString20Type0..1SIM卡IMSI(可选)meterSerialNumberCiString25Type0..1主电表序列号(可选)meterTypeCiString25Type0..1主电表类型(可选)

BootNotification.conf

字段名称字段类型基数描述 currentTimedateTime1..1中央系统当前时间intervalinteger1..1心跳间隔(秒)statusRegistrationStatus1..1注册状态

代码示例 (JSON)


    
    
    
  BootNotification.req:
{
  "chargePointModel": "ModelX",
  "chargePointVendor": "VendorY",
  "firmwareVersion": "1.0.0"
}

BootNotification.conf:
{
  "currentTime": "2024-07-23T14:30:00Z",
  "interval": 300,
  "status": "Accepted"
}

3. Heartbeat

充电桩出海-OCPP系列(一)

Heartbeat

接口描述

充电站定期向中央系统发送心跳消息,以保持连接状态并通知中央系统其仍在线。

消息类型

  • • Heartbeat.req:充电站向中央系统发送的心跳请求消息。
  • • Heartbeat.conf:中央系统向充电站发送的心跳响应消息。

字段定义

Heartbeat.req

无字段,仅用于表明心跳请求。

Heartbeat.conf

字段名称字段类型基数描述 currentTimedateTime1..1中央系统当前时间

代码示例 (JSON)

  Heartbeat.req:
{}

Heartbeat.conf:
{
  "currentTime": "2024-07-23T14:30:00Z"
}

4. MeterValues

充电桩出海-OCPP系列(一)

MeterValues

接口描述

充电站向中央系统发送计量数据,如电表读数、功率等。

消息类型

  • • MeterValues.req:充电站向中央系统发送的计量数据请求消息。
  • • MeterValues.conf:中央系统向充电站发送的计量数据响应消息。

字段定义

MeterValues.req

字段名称字段类型基数描述 connectorIdinteger1..1连接器IDtransactionIdinteger0..1交易ID(可选)meterValueMeterValue1..*计量数据

MeterValue

字段名称字段类型基数描述 timestampdateTime1..1数据的时间戳sampledValueSampledValue1..*采样值

SampledValue

字段名称字段类型基数描述 valueString1..1值contextReadingContext0..1读数上下文(可选)formatValueFormat0..1值格式(可选)measurandMeasurand0..1测量类型(可选)phasePhase0..1相位(可选)locationLocation0..1测量位置(可选)unitUnitOfMeasure0..1单位(可选)

代码示例 (JSON)


    
    
    
  MeterValues.req:
{
  "connectorId": 1,
  "transactionId": 1001,
  "meterValue": [
    {
      "timestamp": "2024-07-23T14:30:00Z",
      "sampledValue": [
        {
          "value": "123.45",
          "measurand": "Energy.Active.Import.Register",
          "unit": "Wh"
        }
      ]
    }
  ]
}

MeterValues.conf:
{}

5. StartTransaction

充电桩出海-OCPP系列(一)

StartTransaction

接口描述

充电站通知中央系统开始一个新的充电交易。

消息类型

  • • StartTransaction.req:充电站向中央系统发送的开始交易请求消息。
  • • StartTransaction.conf:中央系统向充电站发送的开始交易响应消息。

字段定义

StartTransaction.req

字段名称字段类型基数描述 connectorIdinteger1..1连接器IDidTagIdToken1..1用户标识meterStartinteger1..1开始时的电表读数(Wh)reservationIdinteger0..1预约ID(可选)timestampdateTime1..1交易开始时间

StartTransaction.conf

字段名称字段类型基数描述 idTagInfoIdTagInfo1..1用户标识信息transactionIdinteger1..1交易ID

代码示例 (JSON)


    
    
    
  StartTransaction.req:
{
  "connectorId": 1,
  "idTag": "1234567890",
  "meterStart": 1000,
  "timestamp": "2024-07-23T14:30:00Z"
}

StartTransaction.conf:
{
  "idTagInfo": {
    "status": "Accepted"
  },
  "transactionId": 1001
}

说明

  • • 基数用于描述消息中某个字段出现的次数或范围,它定义了字段在消息中的可选性或必选性。
  • 基数表明含义 1..1字段必须出现且只能出现一次(必选)。0..1字段可以出现一次,也可以不出现(可选)。1..*字段至少出现一次,可以出现多次。0..*字段可以不出现,也可以出现多次。

示例

字段名称字段类型基数(Cardinality)描述 connectorIdinteger1..1连接器ID,必须出现且只能出现一次。idTagIdToken1..1用户标识,必须出现且只能出现一次。meterStartinteger1..1开始时的电表读数(Wh),必须出现且只能出现一次。reservationIdinteger0..1预约ID,可以出现一次,也可以不出现(可选)。sampledValueSampledValue1..*采样值,至少出现一次,可以出现多次。

喜爱本文的话,欢迎点赞、在看、分享,并关注我们的同名公众号,获取更多精彩内容!

© 版权声明

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
none
暂无评论...