面向大规模实时并发的充电设施数据传输控制方法
2014-11-20黎曦田建伟刘金漆文辉
黎曦,田建伟,刘金,漆文辉
(国网湖南省电力公司电力科学研究院,湖南长沙410007)
为解决电动汽车的能源供给,配套的集中式充换电设施也相继建成,截止2011年,中国已建成电动汽车充电站314座,电动汽车交流充电桩超过1.6万个。根据电动汽车科技发展“十二五”规划〔1〕,到2015年全国将建成由40万个充电桩、2 000个充换电站构成的网络化供电体系。
为保证充换电设施提供可靠稳定的能源供给服务,需要通过监控系统对其充电过程进行有序控制和管理〔2-3〕。根据充电机电池管理系统通讯协议的国家标准〔4〕,整车蓄电池组充电过程中,监控服务器每秒需要解析处理大约1 500个CAN协议帧,对于一座拥有50台直流充电机的大型充电站,考虑到充电机同时工作,监控系统每秒最多需要处理近8万个充电机报文。随着充电站建设规模的不断扩大,监控服务器的并发处理数据量将更加庞大,监控系统中充电机数据传输控制这一关键技术亟需研究解决。
1 数据传输控制模型
充电设施数据传输控制模型的主要任务是通过协议转化以及大数据并发控制算法,实现对大规模充电站中,充电机上行数据的实时采集、解析和组装,以及对监控客户端下行控制命令的及时下发。
传输逻辑结构如图1所示,由充电机、CAN协议转换设备、通讯服务器,监控客户端等几部分组成。通讯服务器为该系统的核心部分,负责维护与CAN协议转换器的下行socket连接和与客户端的上行socket连接,负责数据帧的传输控制和解析处理。嵌入式数据库则将通讯服务器内存中的非当前数据转存到历史数据库。客户端通过调用与通讯服务器的API接口读取蓄电池和充电机的实时数据,通过历史数据库查询非实时数据。
图1 充电站数据传输的逻辑结构图
该系统中的数据主要分为2类:控制命令和监控数据。用户下发的充电机启动和停止、GPS对时等控制命令经过通讯服务器组装为CAN数据帧,再通过协议转化器下发到充电机。监控数据包括蓄电池基本信息、蓄电池电压、蓄电池温和蓄电池状态灯电动汽车的BMS数据,以及充电机状态、充电机电压电流等充电机本身的状态数据,这些数据通过主动周期性发送的方式,经由协议转化器打包成以太网协议帧后,传输至通讯服务器。通讯服务器再按照不同的数据类型,调用不同的处理线程和队列把数据帧解析成监控客户端能够理解的应用层数据。
该传输控制方法与现有监控系统技术相比,优点在于:通过多线程调度方法解决了大型充电站中数据传输的实行性和并发性问题;加入实时数据库技术,提高数据处理效率和系统健壮性。
2 数据传输及处理方法
大型充电站中,通讯服务器每秒需要解析、转发和重组的CAN数据帧达到上万个。受到成本等因数的限制,很难通过提高硬件配置来提升系统处理能力。所以,实现数据实时处理的关键在于研究大规模数据的并发控制方法。文中针对大型充电站充电设施数据实时采集和控制难点,研究和设计了基于多队列多线程的充换电设施监控数据采集和传输方法。该方法的思路:针对CAN协议数据单元特点,设计CAN协议应用层的数据子模型,该模型可以实现不同优先级和不同数据量的CAN数据帧可靠传输;根据监控实时性的要求,采用基于socket API的以太网数据传输子模型,将BMS数据、计费数据和充电机状态数据实时显示到客户端;在数据子模型的基础上,设计数据并发采集和处理方法,该方法采用多队列和多线程技术,并运用线程同步技术实现异步并发地处理大流量的CAN数据帧,有效解决了数据共享冲突问题。
2.1 数据通讯模型
1)CAN数据帧通讯模型
每个CAN数据帧包含1个协议数据单元(PDU)。协议数据单元由7部分组成,分别是优先级 (P),保留位 (R),数据页 (DP),PDU格式 (PF),特定PDU(PS),源地址 (SA)和数据域 (DATA)。PDU被封装在1个或多个CAN数据帧中,通过物理介质传送到其它网络设备,PDU域见表1。协议数据单元的优先级位、保留位,数据页位 (8位)和PDU格式域 (8位)和组扩展域 (8位)组成参数组编号 (PGN),用来标识CAN数据帧的数据域属于哪个参数组。
表1 文件传输数据帧格式定义
根据协议数据单元的传输特点,把充电设施监控数据分为4类:命令帧、单包数据帧、多包数据帧和链接管理帧。
命令帧:从监控计算机向特定目标地址充电机或全局目标地址发送命令的数据帧。主要包括:充电机紧急停止充电命令 (PGN:0051H),充电机启动充电命令 (PGN:0452H),充电机终止充电命令 (PGN:0453H),系统对时命令 (PGN:0454H)。充电设施收到的监控计算机下发的命令,充电机应使用确认帧ACK(PGN:00E8H)给予肯定或否定的回答。
单包数据帧:数据长度不超过8个字节的数据帧。主要包括:充电机充电状态1(PGN:1830H),充电机充电状态2(PGN:1831H),充电机事件 (PGN:1833H),蓄电池充电状态1(PGN:1808H),蓄电池充电状态 2(PGN:1809H),蓄电池充电状态3(PGN:180AH)。单包数据帧采用主动发送的方式,由充电设施周期性(一般为2 s)发送到通讯服务器。
多包数据帧:数据长度超过8个字节的数据帧。主要包括:蓄电池基本信息 (PGN:18F1H),蓄电池温度数据 (PGN:180CH),蓄电池模块/单体电压 (PGN:180BH),计费信息 (PGN:180DH)。多包数据采用充电设施主动请求,链接管理帧控制的方式,实现数据的可靠传输。
链接管理帧:这类数据帧用于在多包传输中建立和关闭连接,以及控制数据流,从而保证数据的可靠传输。链接管理帧 (TP.CM,PGN:1BECH)根据数据域中控制字节 (第1个字节)的值,分为请求发送帧 (TP.CM_RTS)、准备发送帧(TP.CM_CTS)、数据传送帧 (TP.DT)和确认帧(TP.CM_EndofMsgAck)4种。TP.CM_RTS的控制字节编号为16,第2个和第3个字节为将要传输的消息的大小,第4个字节为将要传输消息的包数,第6—8个字节为消息的参数组编号。TP.CM_CTS的控制字节编号为17,第2个字节为可接受的数据数据包数,第2个字节为下一个要接受的数据包编号,第6—8个字节为消息的参数组编号。TP.DT为多包消息传送中的单个数据包,第1个字节为编号,第2—8个字节为数据。TP.CM_EndofMsgAck控制字节编号为19,第2个和第3个字节为收到消息的大小,第6—8个字节为消息的参数组编号。如图2以蓄电池基本信息为例,说明了多包传输控制过程。
图2 多包传输控制过程
充电机向通讯服务器发出请求传输3包 (20个字节)的蓄电池基本信息,通讯服务器回复可以接收前2包;充电机发送前2包后,通讯服务器由于丢失了第2包,要求重发,充电机重新发送第2包;通讯服务器成功接收到第2包后,充电机发送第3包;接收到第3包数据后,通讯服务器向充电机发送确认帧,已成功接收3包20个字节数据。
2)应用层通讯模型
建立上行socket,处理客户端的数据请求和控制命令的传输。根据客户端请求数量,为每个客户端请求建立一个独立的socket对象,数据传输完成后自动释放该对象。同时为降低多socket带来的负载,引入了超时机制,在收到请求报文后开启1个计时器,一定时间内如果没有得到报文的确认帧,则直接清除和释放该socket对象。应用层socket API通讯连接过程如图3。
图3 应用层socket API通讯连接过程
2.2 多队列和多线程的数据处理方法
算法有3类队列:接收/发送队列、缓冲队列Ⅰ和缓冲队列Ⅱ。接收/发送队列在内存中设置接收和发送2个帧队列,用于存放收到和需要发送的CAN数据帧。为了能够对CAN数据帧接收和发送实现流量控制,这2个队列采用支持多线程读写互斥的循环队列。结构如图4所示,当接收队列有空闲单元时,CAN数据帧单元可以入队,队列满时则暂停接收CAN数据帧;当发送队列有空闲单元时,需要发送的CAN数据帧直接入队,队列满时,则在缓冲队列Ⅰ中排队等待。接收和发送线程使用信号量机制实现对循环队列读写的互斥访问。通过循环对列可以实现对CAN数据帧接收和发送的流量控制,达到滑动窗口的效果。
图4 基于多队列和多线程的数据处理方法
根据通讯规约,CAN数据帧包含蓄电池基本信息、蓄电池电压、蓄电池温度、充电机状态等监控信息。为了实现数据帧的快速解析,按照数据包类型,分发线程将不同的数据包发送到不同的缓冲队列Ⅰ中,等待数据解析线程的处理。缓冲队列Ⅰ支持多线程互斥读写的带头结点的FIFO链表,存放的是CAN协议格式数据帧,主要起到缓冲的作用。缓冲队列Ⅱ中存放的是按照类型组装后的数据结构,供请求发送线程读取,同样采用的是支持互斥访问的FIFO链表。通过两级缓冲队列不仅可以实现CAN数据帧的流量控制,同时可以提高系统处理CAN数据帧的速度和效率。
3 结论
从充电机监控数据处理方法入手,基于多线程和多队列技术提出了一种大规模实时并发传输控制方法,设计并实现了整个电动汽车充电站数据传输控制系统,从而确保了数据处理的实时性。该方法具有以下优点:采用多线程和多级缓冲机制进行数据数据处理,有效提高了数据处理实时性;根据CAN协议数据单元特点对CAN数据报文进行了区分,并利用不同处理线程进行解析,有效提高了数据处理效率;依据实际情况自定义了CAN数据报文优先级,并利用不同处理线程进行处理,有效保证了重要数据处理的实时性。
〔1〕张文亮,武斌,李武峰,等.我国纯电动汽车的发展方向及能源供给模式的探讨〔J〕.电网技术,2009,33(4):1-5.
〔2〕李竞成.电动汽车智能充电站研究与开发〔D〕.杭州:浙江大学,2006,8-9.
〔3〕王健,姜久春.电动汽车充电站信息管理系统的设计与实现〔J〕.微计算机信息,2006,22(5-3):16-17.
〔4〕王勇,崔晓丹,闫涛,等.基于CAN和RS 485的电动汽车充电机控制系统〔J〕.机械与电子,2008,8:27-30.