【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

相关文章

MybatisPlus service接口功能介绍

《MybatisPlusservice接口功能介绍》:本文主要介绍MybatisPlusservice接口功能介绍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录Service接口基本用法进阶用法总结:Lambda方法Service接口基本用法MyBATisP

MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)

《MySQL复杂SQL之多表联查/子查询详细介绍(最新整理)》掌握多表联查(INNERJOIN,LEFTJOIN,RIGHTJOIN,FULLJOIN)和子查询(标量、列、行、表子查询、相关/非相关、... 目录第一部分:多表联查 (JOIN Operations)1. 连接的类型 (JOIN Types)

java中BigDecimal里面的subtract函数介绍及实现方法

《java中BigDecimal里面的subtract函数介绍及实现方法》在Java中实现减法操作需要根据数据类型选择不同方法,主要分为数值型减法和字符串减法两种场景,本文给大家介绍java中BigD... 目录Java中BigDecimal里面的subtract函数的意思?一、数值型减法(高精度计算)1.

Pytorch介绍与安装过程

《Pytorch介绍与安装过程》PyTorch因其直观的设计、卓越的灵活性以及强大的动态计算图功能,迅速在学术界和工业界获得了广泛认可,成为当前深度学习研究和开发的主流工具之一,本文给大家介绍Pyto... 目录1、Pytorch介绍1.1、核心理念1.2、核心组件与功能1.3、适用场景与优势总结1.4、优

Java实现本地缓存的常用方案介绍

《Java实现本地缓存的常用方案介绍》本地缓存的代表技术主要有HashMap,GuavaCache,Caffeine和Encahche,这篇文章主要来和大家聊聊java利用这些技术分别实现本地缓存的方... 目录本地缓存实现方式HashMapConcurrentHashMapGuava CacheCaffe

Spring Security介绍及配置实现代码

《SpringSecurity介绍及配置实现代码》SpringSecurity是一个功能强大的Java安全框架,它提供了全面的安全认证(Authentication)和授权(Authorizatio... 目录简介Spring Security配置配置实现代码简介Spring Security是一个功能强

JSR-107缓存规范介绍

《JSR-107缓存规范介绍》JSR是JavaSpecificationRequests的缩写,意思是Java规范提案,下面给大家介绍JSR-107缓存规范的相关知识,感兴趣的朋友一起看看吧... 目录1.什么是jsR-1072.应用调用缓存图示3.JSR-107规范使用4.Spring 缓存机制缓存是每一

Java中 instanceof 的用法详细介绍

《Java中instanceof的用法详细介绍》在Java中,instanceof是一个二元运算符(类型比较操作符),用于检查一个对象是否是某个特定类、接口的实例,或者是否是其子类的实例,这篇文章... 目录引言基本语法基本作用1. 检查对象是否是指定类的实例2. 检查对象是否是子类的实例3. 检查对象是否

什么是ReFS 文件系统? ntfs和refs的优缺点区别介绍

《什么是ReFS文件系统?ntfs和refs的优缺点区别介绍》最近有用户在Win11Insider的安装界面中发现,可以使用ReFS来格式化硬盘,这是不是意味着,ReFS有望在未来成为W... 数十年以来,Windows 系统一直将 NTFS 作为「内置硬盘」的默认文件系统。不过近些年来,微软还在研发一款名

C#使用StackExchange.Redis实现分布式锁的两种方式介绍

《C#使用StackExchange.Redis实现分布式锁的两种方式介绍》分布式锁在集群的架构中发挥着重要的作用,:本文主要介绍C#使用StackExchange.Redis实现分布式锁的... 目录自定义分布式锁获取锁释放锁自动续期StackExchange.Redis分布式锁获取锁释放锁自动续期分布式