OCPP 1.6 指令用途与请求响应报文示例
本页包含 14 个指令,展示发送方向、用途及可对照调试的完整 JSON 帧。示例按 OCPP 1.6 的请求与响应结构填写。
报文格式与使用方法
- 请求 CALL:
[2, "唯一消息ID", "指令名", {请求负载}]。 - 成功响应 CALLRESULT:
[3, "相同消息ID", {响应负载}];响应不重复指令名。 - 协议错误 CALLERROR:
[4, "相同消息ID", "错误码", "错误说明", {}]。 - 每次请求使用新的消息 ID;响应必须沿用对应请求 ID。文中的时间、设备编号、卡号和交易编号均为示例,实际调试时替换。
{}也是有效负载,不能省略。Accepted通常表示请求受理,实际交易或设备状态还需结合后续通知判断。
指令目录
- BootNotification
- Heartbeat
- Authorize
- StatusNotification
- StartTransaction
- MeterValues
- StopTransaction
- RemoteStartTransaction
- RemoteStopTransaction
- ChangeAvailability
- UnlockConnector
- Reset
- DataTransfer
- TriggerMessage
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"
}
]