【OCPP】ocpp1.6协议第4.2章节BootNotification的介绍及翻译

2024-06-04 22:28

本文主要是介绍【OCPP】ocpp1.6协议第4.2章节BootNotification的介绍及翻译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

4.2、BootNotification-概述

Boot Notification 消息

BootNotification 请求消息

BootNotification 响应消息

使用场景

触发 BootNotification 的条件

实现示例

构建请求消息

发送请求并处理响应

小结

4.2、BootNotification-原文译文

4.2.1、被中央系统接受之前的交易


4.2、BootNotification-概述

OCPP 1.6 协议的第 4.2 章 “Boot Notification” 主要讲述了充电站启动时向中央系统(Central System)发送启动通知(Boot Notification)进行注册和初始化的过程。这是充电站与中央系统建立通信和进行后续操作的第一步。

Boot Notification 消息

BootNotification 是充电站启动时发送给中央系统的一个消息,用于报告充电站的状态和基本信息。此消息用于通知中央系统充电站已经启动,并请求进行初始化和注册。

BootNotification 请求消息

请求消息包含充电站的基本信息,如供应商、电站型号、固件版本等。典型的消息格式如下:

{ "chargePointVendor": "string", "chargePointModel": "string", "chargePointSerialNumber": "string", "chargeBoxSerialNumber": "string", "firmwareVersion": "string", "iccid": "string", "imsi": "string", "meterType": "string", "meterSerialNumber": "string" }
  • chargePointVendor: 供应商名称。

  • chargePointModel: 充电站型号。

  • chargePointSerialNumber: 充电站的序列号。

  • chargeBoxSerialNumber: 充电箱的序列号(如果适用)。

  • firmwareVersion: 固件版本。

  • iccid: 集成电路卡识别码(ICCID),用于标识 SIM 卡。

  • imsi: 国际移动用户识别码(IMSI),用于标识移动用户。

  • meterType: 电表类型。

  • meterSerialNumber: 电表序列号。

BootNotification 响应消息

中央系统在收到 BootNotification 消息后,会返回一个响应消息,确认接收到启动通知并向充电站提供配置参数。响应消息的典型格式如下:

{ "status": "string", "currentTime": "string", "interval": 300 }
  • status: 注册状态,可能值包括:

    • Accepted: 充电站注册成功,中央系统接受该充电站。

    • Pending: 充电站需要等待,注册请求待处理。

    • Rejected: 充电站注册失败,中央系统拒绝该充电站。

  • currentTime: 中央系统的当前时间(ISO 8601 格式)。

  • interval: 充电站应在下一次进行心跳请求的时间间隔(秒为单位)。

使用场景

  1. 充电站启动

当充电站首次启动或重新启动时,会立即向中央系统发送 BootNotification 消息。这有助于中央系统了解充电设备已经上线并准备好进行操作。

  1. 网络连接恢复

如果充电站由于网络问题与中央系统失去连接,当网络连接恢复时,充电站应重新发送 BootNotification 消息,以重新注册并同步状态。

触发 BootNotification 的条件

  • 首次启动:充电站首次启动时。

  • 重启后:充电站重新启动后。

  • 网络恢复:修复网络连接问题后。

实现示例

以下是使用 JavaScript 实现的示例,展示了如何构建和发送 BootNotification 请求,并处理响应。

构建请求消息
const bootNotificationRequest = { chargePointVendor: "VendorName", chargePointModel: "Model123", chargePointSerialNumber: "SN12345678", chargeBoxSerialNumber: "CBSN12345678", firmwareVersion: "1.0.0", iccid: "8912345678901234567", imsi: "123456789012345", meterType: "MeterType1", meterSerialNumber: "MSN12345678" };
发送请求并处理响应
// 假设 websocket 已经连接至中央系统 webSocket.send(JSON.stringify({ action: "BootNotification", payload: bootNotificationRequest })); webSocket.onmessage = (event) => { const response = JSON.parse(event.data); if (response.action === "BootNotification") { const { status, currentTime, interval } = response.payload; if (status === "Accepted") { console.log(`BootNotification Accepted. Server time: ${currentTime}. Next heartbeat interval: ${interval} seconds.`); // 设置心跳间隔定时器 setInterval(sendHeartbeat, interval * 1000); } else if (status === "Pending") { console.log("BootNotification Pending. Waiting for further instructions."); } else { console.error("BootNotification Rejected. Please check configurations."); } } }; function sendHeartbeat() { webSocket.send(JSON.stringify({ action: "Heartbeat" })); }

小结

OCPP 1.6 协议的第 4.2 章 "Boot Notification" 详细描述了充电站启动时如何向中央系统发送启动通知。通过 BootNotification 消息,充电站可以向中央系统报告其状态和基本信息,并接收初始化参数。这一步确保了充电站与中央系统之间的通信正常,使得后续的操作和管理得以顺利进行。

4.2、BootNotification-原文译文

启动后,充电桩应向中央系统发送请求,其中包含有关其配置的信息(例如版本、供应商等)。 中央系统应做出响应,表明它是否会接受充电桩。

充电桩应在每次启动或重新启动时发送 BootNotification.req PDU。在物理开机/重启和成功完成 BootNotification 之间(中央系统返回“已接受”或“待定”),充电桩不得向中央系统发送任何其他请求。这包括之前仍存在于充电桩中的缓存消息。

当中央系统以“Accepted”状态响应 BootNotification.conf 时,充电桩将根据响应 PDU 的间隔调整心跳间隔,并且建议将其内部时钟与所提供的中央系统的当前时间同步。如果中央系统返回 Accepted 以外的内容,则间隔字段的值指示发送下一个 BootNotification 请求之前的最短等待时间。如果该间隔值为零,则充电桩会自行选择等待间隔,以避免请求淹没中央系统。充电桩不应提前发送 BootNotification.req,除非使用 TriggerMessage.req 请求这样做。

如果中央系统返回“Rejected”状态,则在上述重试间隔到期之前,充电桩不得向中央系统发送任何 OCPP 消息。在此期间,中央系统可能无法再访问充电桩。例如,它可以关闭其通信通道或关闭其通信硬件。中央系统也可以关闭通信通道,例如以释放系统资源。当被拒绝时,充电桩不得响应任何中央系统发起的消息。中央系统不应该启动任何

中央系统还可以返回Pending注册状态,以表明它希望在中央系统接受充电桩之前检索或设置有关充电桩的某些信息。如果中央系统返回Pending状态,则充电桩或中央系统不应关闭通信通道。中央系统可以发送请求消息以从充电桩检索信息或更改其配置。充电桩应该响应这些消息。充电桩不得向中央系统发送请求消息,除非中央系统通过 TriggerMessage.req 请求指示它这样做。

当处于Pending状态时,不允许以下中央系统启动的消息:RemoteStartTransaction.req 和 RemoteStopTransaction.req

4.2.1、被中央系统接受之前的交易

充电桩运营商可以选择配置充电桩以在充电桩被中央系统接受之前接受交易。想要实施这种行为的各方应该意识到,这些交易是否可以交付到中央系统是不确定的。

重新启动后(例如由于远程重置命令、断电、固件更新、软件错误等),充电桩必须再次联系中央系统并应发送 BootNotification 请求。如果充电桩无法从中央系统接收 BootNotification.conf,并且没有已正确预设的内置非易失性实时时钟硬件,则充电桩可能没有有效的日期/时间设置,从而导致以后无法确定交易的日期/时间。

也可能出现这样的情况(例如,由于配置错误),中央系统在较长一段时间内或无限期地指示“Accepted”以外的状态。

如果充电桩之前从未被中央系统接受(使用当前的连接设置、URL 等),通常建议拒绝该充电桩的所有充电服务,因为用户无法通过身份验证,并且运行的事务可能与配置冲突流程。

这篇关于【OCPP】ocpp1.6协议第4.2章节BootNotification的介绍及翻译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/1031291

相关文章

Pytest多环境切换的常见方法介绍

《Pytest多环境切换的常见方法介绍》Pytest作为自动化测试的主力框架,如何实现本地、测试、预发、生产环境的灵活切换,本文总结了通过pytest框架实现自由环境切换的几种方法,大家可以根据需要进... 目录1.pytest-base-url2.hooks函数3.yml和fixture结论你是否也遇到过

Nginx中配置HTTP/2协议的详细指南

《Nginx中配置HTTP/2协议的详细指南》HTTP/2是HTTP协议的下一代版本,旨在提高性能、减少延迟并优化现代网络环境中的通信效率,本文将为大家介绍Nginx配置HTTP/2协议想详细步骤,需... 目录一、HTTP/2 协议概述1.HTTP/22. HTTP/2 的核心特性3. HTTP/2 的优

关于WebSocket协议状态码解析

《关于WebSocket协议状态码解析》:本文主要介绍关于WebSocket协议状态码的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录WebSocket协议状态码解析1. 引言2. WebSocket协议状态码概述3. WebSocket协议状态码详解3

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

JAVA SE包装类和泛型详细介绍及说明方法

《JAVASE包装类和泛型详细介绍及说明方法》:本文主要介绍JAVASE包装类和泛型的相关资料,包括基本数据类型与包装类的对应关系,以及装箱和拆箱的概念,并重点讲解了自动装箱和自动拆箱的机制,文... 目录1. 包装类1.1 基本数据类型和对应的包装类1.2 装箱和拆箱1.3 自动装箱和自动拆箱2. 泛型2

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb