基于OCPP 1.6的充电站与充电站管理系统通讯实现

描述

作者:杜明明,崔立堃,冯绪永,王承祥 引 言

随着纯电动汽车迅速发展,充电桩的发展也呈快速的发展趋势。2015 年《电动汽车充电基础设施发展规划(2015—2020 年)》指出了明确的发展目标,2020 年初充电桩被正式纳入新基建,有望迎来新一轮增长[1]。目前,国家电网、南方电网、TELD、奥地利集团和其他许多国内充电设备制造商和运营商大多都是以 104 通讯协议为基础,并且各个制造商和运营商经过对该协议进行一定程度的筛选和修改后,使该协议变为“半开放”的状态进行开发使用,这样形成的封闭协议代表了它的私有性,如果没有相对应的接口和网关,就无法和其他产品互相通讯。OCPP(Open Charge Point Protocol,开放充电通讯协议)是一个免费提供的开放标准,是一种通用的开放通讯协议,它用于解决私营充电网络带来的挑战[1⁃3],它使供应商和网络运营商能够相互混合以及互相匹配可互操作性的软件和硬件。统一的标准可防止各种协调问题,因此对于整个电动汽车市场都是一个优势。运用当前在工业应用中占有不可替代作用的 Linux下的 Ubuntu 操作系统[4⁃6]实现了 OCPP 特定的功能,并经验证各个功能均可以达到良好的交互,证明了为解决两端之间通讯的开放性提供了一种方法,拟为后续汽车充电桩的发展模式和管理方式提供一种可行性的交互框架。

1 OCPP 1.6及系统模型

1.1 OCPP 1.6

OCPP 为 CS(充电站)与任何 CSMS(充电站管理系统)间提供一种统一的通讯方案。这个协议构架支持任何充电服务供应商的 CSMS 与所有的 CS 点互相连接[7]。目前,OCPP已经成为欧洲和美国部分地区充电网络通讯领域事实上的开放标准协议,有 50多个国家的充电网络运营商和服务提供商依靠OCPP管理成千上万个充电站。

OCPP 1.6 版本是截止目前比较完善的一个版本,它是在已成功实施多年的 1.5 版本的基础之上制定的,并且 OCA(开放充电联盟)已经针对 1.6 版本规划出了一个官方的认证体系。OCPP 1.6 引入了一些新功能,包括智能充电,并在支持 SOAP 格式之后开始支持基于Web Sockets 的 JSON 应用格式[8]。JSON 格式具有简洁和清晰的层次结构,易于开发者编写、阅读和检查,也易于机器解析和生成,传输速度快等特点,因此 JSON 格式正迅速成为Web上最流行的数据交换格式之一[9⁃10]。图1对比了两个版本的异同,表明 OCPP 1.6 版本比 OCPP1.5版本改善和增加了更多的功能。

1.2 基于 OCPP充电站和充电站管理系统模型

在 OCPP中,CS作为电动汽车充电的物理系统,一个CS 可以有一个或者多个 EVSE(电动汽车供应设备)。在协议里面,电动汽车被认为是充电站的一部分,在同一时间,可以为一辆电动汽车提供能源。图 2 中的连接器就是通常所说的能在 CS 上独立操作和管理的电源插座,简言之,就是对应于单个物理连接器。在某些情况下,电动汽车可能有多个物理插座类型和连接器,以方便不同类型的车辆(例如四轮电动汽车和电动摩托车),这个设置被称为三层模型[11],如图 2所示。

基于通讯目的的充电基础设施并不是强制性地加到物理硬件设备上,例如,EVSE 可能会被集成到一个CS上面,这样看起来只是设备的一部分。

2 充电站管理系统运行环境搭建

2.1 Steve服务器搭建流程

在 OCPP 1.6 版本中,OCPP 作为 CS 和 CSMS 之间通讯的一种协议。在进行 OCPP 中特定功能实现时,要同充电站管理系统进行交互,进而验证所开发的功能是否遵循 OCPP 协议的要求,同样验证其功能的实现是否达到标准。

采用 Steve 版本的充电站管理系统,它完全是遵照OCPP 进行开发的,并且是比较稳定的一个系统。两端通过 Web Socket 方式进行信息交互,CSMS 作为 WebSocket 服务器端,CS 作为 Web Socket 客户端[11],其总体流程如图 3所示。

Web Socket协议是一个标准的通信协议,用于服务器向客户发送内容,而不需要客户要求的标准通信协议;在克服请求超时问题方面,也发挥了最重要的作用,例如,它允许消息来回传递,同时保持连接持续开放[12]。

Web Socket 协议是基于 HTML5 提供的一种在单个TCP 连接上进行全双工通信的协议,该协议本质上为通信双方提供了一个基于 TCP 连接的双向通道,所以能够高效地在双向通道中实时互相发送信息[12]。如图 3 所示,在搭建 Steve 服务器时,所用到的技术主要利用数据库 管 理 系 统 MySQL 进 行 数 据 的 访 问 和 管 理[13],利 用Apache⁃Maven、JDK 等工具进行环境运行维护。

2.2 克隆管理系统及运行

搭建的环境最后要为服务器的完好运行服务。目前,对应于 OCPP 1.6 版本的服务器的最稳定版本是Steve⁃3.4.3版本,通过在 git@github.com:RWTH⁃i5⁃IDSG/steve.git 上运用 Git 工具来获取 Steve⁃3.4.3 版本,该服务器是独立运行的,并不需要 Java Servlet 容器或者 Web服务器(例如 Apache⁃Tomcat),故选用 Steve 作为充电站管理系统服务器[14]。对服务器进行数据库的配置、本地到服务器的 IP 地址的设置等,根据终端运行成功后所生成的 URL:http://127.0.0.1:8080/ steve/manager/ home在 Google⁃Chrome 浏览器打开,进入到服务器的登录界面,证明服务器端能正常运行,为客户端功能的验证奠定了基础,如图 4所示。

3 OCPP 特定功能实现

3.1 通过 RFID 授权充电站功能

在电动汽车司机可以启动或停止电动汽车充电之前,第一步要做的就是要对 CS 进行授权操作,在 OCPP 1.6中,支持用 RFID 进行授权操作。当司机要开始或停止给电动汽车充电时,出示 RFID 卡,然后 CS 会将授权请求发送给 CSMS 即充电站管理系统,收到请求后 CSMS即会响应授权请求,该响应消息会反映 idToken 是否被CSMS 接收,idToken 是一种用于授权的标识符。CS 将授权请求发送到 CSMS 以请求授权,收到授权请求后,CSMS 会 以“ 授 权 响 应 ”进 行 响 应 ,该 响 应 消 息 指 示idToken是否被 CSMS接收,如图 5所示。

3.2 启动通知功能

该功能的目的就是使 CS 能够在 CSMS 上进行注册并提供正确的状态信息。在 CS启动后,首先向 CSMS发送启动通知请求,提供配置信息如供应商、版本等基本信息,在 CSMS收到来自 CS发送的请求后,CSMS应响应指示是否接收 CS。当 CSMS 响应启动请求时,CS 将调整心跳间隔,根据间隔来同步它的内部时钟与提供的CSMS 的当前时间。CS 信息主要包括:序列号,供应商特定的设备标识符;型号,定义设备型号;供应商名称,标识供应商(不一定以唯一的方式);固件版本,其中包含 CS 的固件版本等一些关于 CS 的一些基本信息。详细信息如图 6所示。

3.3 通过 CSMS对 CS的授权

该功能用例是通过 CSMS 服务器生成的 idToken 可以在 CS上启动充电会话,通过使用应用程序向 CSMS发送启动请求,CSMS 会确定一个 idToken 并且可以生成一个唯一的 ID 来用作充电的 idToken,接着 CSMS 会向CS 发送一个带有 idToken 的启动充电请求,然后 CS 会发送一个开始充电响应,接受充电请求。具体功能实现流程如图 7所示。

3.4 心跳功能

该功能模块的目的是让 CSMS 实时知道 CS 的状态仍然是在连接中,CS 在一个可配置的时间间隔后发送一个心跳。CS 会向 CSMS 发送一个心跳请求来确保CSMS 知道 CS 仍然处于活动状态,CSMS 一旦收到心跳请求后,会响应一个心跳响应,响应 CSMS 的当前时间,同样也可以使用该时间来同步其内部时钟。

4 功能测试

4.1 验证两端的连接状态

对于使用 OCPP⁃J 的 CS 和 CSMS 之间的连接,CSMS充当 Web Socket服务器,而充电点充当 Web Socket客户端。要启动 Web Socket 连接,CS 需要一个 URL 进行连接。此后,文中 URL 称为“连接 URL”,连接 URL 特定于某 个 CS。充 电 点 的 连 接 URL 包 含 CS 标 识(文 中NO001),以便 CSMS 知道 Web Socket 连接属于哪个 CS。首先由客户端向服务器端发送一个 HTTP 请求,即 WebSocket 连接起始于一个 HTTP 请求,该请求头中会包含“Upgrade:Web Socket”,这表明浏览器端请求将会通过HTTP协议升级到 Web Socket协议[15]。

使用 OCPP⁃J端点 URL为:

“ws://127.0.0.1:8080/steve/websocket/Central System Service /NO001”

下面是 OCPP ⁃ J 连接握手打开 HTTP 请求的状态代码:

Requestheader=GET / steve / websocket / CentralSystemService /NO001 HTTP/1.1

Upgrade:web socket

Connection:Upgrade

Sec⁃Web Socket⁃Protocol:ocpp1.6

Host:127.0.0.1:8080

Sec⁃Web Socket⁃Key:yyEwurPSLFnpKLI0z7uxww==

Sec⁃Web Socket⁃Version:13.

在此连接过程中,CS 的唯一标识为“NO001”,故请求 的 路 径 为 :“/steve / websocket / CentralSystem Service /NO001”。

4.2 验证功能

通过在终端上模拟 RFID 对 CS 进行授权,发送心跳以及充电等请求,在 Ubuntu 终端上会显示发送成功的界面,直接能说明可以进行良好的通讯以及进行功能上的响应,如图 8所示。

启动通知功能是应用比较频繁的一个功能,在正常情况下,从终端发送一条启动通知请求后,通过 CSMS的授权功能实现,其功能的实现是在服务器端进行CS标识符的锁定,如“NO001”,此标识符是唯一的,其在服务管理端成功授权的界面如图 9所示。

在终端运行经过编译后的心跳功能可执行文件,CSMS 会收到心跳请求,心跳功能的主要目的就是让CSMS 知道 CS 一直处于活动状态,执行充电请求时,后台管理系统同样会响应,通过搭建的 Steve 服务器,结合OCPP 中所涉及的功能块的工作原理,最后成功地实现了功能,并且可以很好地进行工作。图 10 展示了后台管理系统的响应信息。

5 结 论

本文基于 OCPP 通讯协议,在 Linux 下的 Ubuntu 操作系统上运用各种项目构建工具和技术分别搭建了充电站客户端运行框架和后台管理系统框架,对所涉及的授权充电、启动通知、心跳等特定功能进行了研究和实现。最后结合 Steve 服务器进行通讯,验证了两端能进行可靠、实时、快速地通讯,表明 OCPP 协议作为开放性的通讯协议能正常地进行通讯,本文所提通讯框架成功运 用 了 OCPP 协 议 ,并 为 未 来 充 电 桩 通 讯 协 议 应 用OCPP提供了一种可行性的通讯框架。

审核编辑:郭婷

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 相关推荐

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分