OCPP 1.6 指令用途与请求响应报文示例

本页包含 14 个指令,展示发送方向、用途及可对照调试的完整 JSON 帧。示例按 OCPP 1.6 的请求与响应结构填写。

报文格式与使用方法

  • 请求 CALL:[2, "唯一消息ID", "指令名", {请求负载}]。
  • 成功响应 CALLRESULT:[3, "相同消息ID", {响应负载}];响应不重复指令名。
  • 协议错误 CALLERROR:[4, "相同消息ID", "错误码", "错误说明", {}]。
  • 每次请求使用新的消息 ID;响应必须沿用对应请求 ID。文中的时间、设备编号、卡号和交易编号均为示例,实际调试时替换。
  • {} 也是有效负载,不能省略。Accepted 通常表示请求受理,实际交易或设备状态还需结合后续通知判断。

指令目录

BootNotification

发送方向: 充电站 → 服务端。

指令用途: 设备启动后注册厂商、型号等信息。Accepted 表示注册成功,interval 为心跳间隔(秒)。Rejected 或 Pending 时不应直接开始交易。

请求:

[
  2,
  "ocpp16-001",
  "BootNotification",
  {
    "chargePointVendor": "devTest",
    "chargePointModel": "QA",
    "firmwareVersion": "1.0"
  }
]

响应(由接收请求的一方返回):

[
  3,
  "ocpp16-001",
  {
    "status": "Accepted",
    "currentTime": "2026-11-08T08:00:00Z",
    "interval": 60
  }
]

Heartbeat

发送方向: 充电站 → 服务端。

指令用途: 心跳保活并获取服务端当前时间。请求负载为空对象,响应中的 currentTime 用于校时。

请求:

[
  2,
  "ocpp16-002",
  "Heartbeat",
  {}
]

响应(由接收请求的一方返回):

[
  3,
  "ocpp16-002",
  {
    "currentTime": "2026-11-08T08:00:00Z"
  }
]

Authorize

发送方向: 充电站 → 服务端。

指令用途: 在开始充电前检查 idTag 是否允许使用。应检查 idTagInfo.status;Blocked 等状态表示不能按成功授权继续。

请求:

[
  2,
  "ocpp16-003",
  "Authorize",
  {
    "idTag": "QA-TAG"
  }
]

响应(由接收请求的一方返回):

[
  3,
  "ocpp16-003",
  {
    "idTagInfo": {
      "status": "Accepted"
    }
  }
]

StatusNotification

发送方向: 充电站 → 服务端。

指令用途: 上报连接器当前状态与错误码。本例 connectorId=1 可用且无故障;空响应表示消息已收到。

请求:

[
  2,
  "ocpp16-004",
  "StatusNotification",
  {
    "connectorId": 1,
    "errorCode": "NoError",
    "status": "Available",
    "timestamp": "2026-11-08T08:00:00Z"
  }
]

响应(由接收请求的一方返回):

[
  3,
  "ocpp16-004",
  {}
]

StartTransaction

发送方向: 充电站 → 服务端。

指令用途: 通知服务端开始交易并上传起始电表读数。保存响应分配的整数 transactionId,用于后续计量和结束交易。

请求:

[
  2,
  "ocpp16-005",
  "StartTransaction",
  {
    "connectorId": 1,
    "idTag": "QA-TAG",
    "meterStart": 1000,
    "timestamp": "2026-11-08T08:00:00Z"
  }
]

响应(由接收请求的一方返回):

[
  3,
  "ocpp16-005",
  {
    "transactionId": 101,
    "idTagInfo": {
      "status": "Accepted"
    }
  }
]

MeterValues

发送方向: 充电站 → 服务端。

指令用途: 上传连接器计量采样。本例累计电量为 1000 Wh;交易内发送时使用 StartTransaction 返回的 transactionId。

请求:

[
  2,
  "ocpp16-006",
  "MeterValues",
  {
    "connectorId": 1,
    "transactionId": 101,
    "meterValue": [
      {
        "timestamp": "2026-11-08T08:00:00Z",
        "sampledValue": [
          {
            "value": "1000",
            "measurand": "Energy.Active.Import.Register",
            "unit": "Wh"
          }
        ]
      }
    ]
  }
]

响应(由接收请求的一方返回):

[
  3,
  "ocpp16-006",
  {}
]

StopTransaction

发送方向: 充电站 → 服务端。

指令用途: 结束已有交易并上传最终电表读数。本例读数 1100 Wh,与起始值之差为 100 Wh;transactionId 必须匹配开始交易响应。

请求:

[
  2,
  "ocpp16-007",
  "StopTransaction",
  {
    "transactionId": 101,
    "timestamp": "2026-11-08T08:10:00Z",
    "meterStop": 1100,
    "idTag": "QA-TAG",
    "reason": "Local"
  }
]

响应(由接收请求的一方返回):

[
  3,
  "ocpp16-007",
  {}
]

RemoteStartTransaction

发送方向: 服务端 → 充电站。

指令用途: 服务端请求指定连接器使用 idTag 开始充电。Accepted 是命令受理,实际交易还需设备发送 StartTransaction 确认。

请求:

[
  2,
  "ocpp16-008",
  "RemoteStartTransaction",
  {
    "connectorId": 1,
    "idTag": "QA-TAG"
  }
]

响应(由接收请求的一方返回):

[
  3,
  "ocpp16-008",
  {
    "status": "Accepted"
  }
]

RemoteStopTransaction

发送方向: 服务端 → 充电站。

指令用途: 服务端请求停止指定交易。设备受理后应发送 StopTransaction;不能只用 Accepted 判断交易已经结束。

请求:

[
  2,
  "ocpp16-009",
  "RemoteStopTransaction",
  {
    "transactionId": 101
  }
]

响应(由接收请求的一方返回):

[
  3,
  "ocpp16-009",
  {
    "status": "Accepted"
  }
]

ChangeAvailability

发送方向: 服务端 → 充电站。

指令用途: 将连接器设置为可运行或不可运行。connectorId=0 表示整个充电桩;本例停用连接器 1,实际状态通过 StatusNotification 上报。

请求:

[
  2,
  "ocpp16-010",
  "ChangeAvailability",
  {
    "connectorId": 1,
    "type": "Inoperative"
  }
]

响应(由接收请求的一方返回):

[
  3,
  "ocpp16-010",
  {
    "status": "Accepted"
  }
]

UnlockConnector

发送方向: 服务端 → 充电站。

指令用途: 服务端请求解锁连接器。响应 status=Unlocked 表示解锁成功,失败时需要检查其他状态。

请求:

[
  2,
  "ocpp16-011",
  "UnlockConnector",
  {
    "connectorId": 1
  }
]

响应(由接收请求的一方返回):

[
  3,
  "ocpp16-011",
  {
    "status": "Unlocked"
  }
]

Reset

发送方向: 服务端 → 充电站。

指令用途: 请求充电桩重启。Soft 为软重启,Hard 为硬重启;Accepted 表示受理,重连注册后再确认设备恢复。

请求:

[
  2,
  "ocpp16-012",
  "Reset",
  {
    "type": "Soft"
  }
]

响应(由接收请求的一方返回):

[
  3,
  "ocpp16-012",
  {
    "status": "Accepted"
  }
]

DataTransfer

发送方向: 双向(本例:充电站 → 服务端)。

指令用途: 传输厂商自定义数据。vendorId 标识厂商,messageId 标识业务类型;Accepted 仅表示该扩展请求已被接受。

请求:

[
  2,
  "ocpp16-013",
  "DataTransfer",
  {
    "vendorId": "devTest",
    "messageId": "GetChargeInstruction",
    "data": ""
  }
]

响应(由接收请求的一方返回):

[
  3,
  "ocpp16-013",
  {
    "status": "Accepted"
  }
]

TriggerMessage

发送方向: 服务端 → 充电站。

指令用途: 要求设备主动补发指定消息。本例触发 Heartbeat;Accepted 后还应收到设备独立发起的 Heartbeat CALL。

请求:

[
  2,
  "ocpp16-014",
  "TriggerMessage",
  {
    "requestedMessage": "Heartbeat"
  }
]

响应(由接收请求的一方返回):

[
  3,
  "ocpp16-014",
  {
    "status": "Accepted"
  }
]