基于LabVIEW的电池管理系统与充电机通信协议测试

最新更新时间:2014-01-09来源: 21IC关键字:LabVIEW  电池管理系统 手机看文章 扫描二维码
随时随地手机看文章

随着近年来电动汽车行业如火如荼的发展,电动汽车技术相关的各种标准也相继推出,其中包括了《电动汽车非车载传导式充电机与电池管理系统之间的通信协议》(GB/T 27930-2011)。该协议是基于CAN应用层协议SAE J1939,J1939 是目前在国内汽车行业中应用广泛的CAN总线应用层协议。只有电池管理系统与充电机之间的正常数据交互才能保证电动汽车进行高效、安全的充电。因此,电池管理系统与充电机通信协议测试是电池管理系统测试的一个必不可少的项目。

本课题来源于北方车辆研究所电池管理系统测试平台项目。美国国家仪器NI PXI CAN采集卡以及LabVIEW为模拟充电机与BMS通信提供了良好的软硬件环境。

LabVIEW是美国国家仪器推出的一种程序开发环境,图形化语言使其与其他的代码类型语言相比之下更为方便直观。以计算机作为运行环境的LabVIEW,充分利用了计算机无可比拟的硬件优势,具有强大的数据处理能力。开发者可以很容易实现多线程编程,极大降低了软件开发的难度。LabVIEW的前面板提供了丰富的类似传统仪器的控件,开发者可以很方便的创建用户界面。

本文重点在于如何用LabVIEW实现SAE J1939多帧传输机制,完成超过8 B 报文的接收重组、拆分发送。以及如何实时判断通信过程出现的错误、指出错误类型、定位错误发生的阶段。

1 SAE J1939 协议

J1939 协议是基于CAN 2.0B 制定的,协议对物理层、数据链路层、网路层以及应用层都进行了相关的规定。本文针对数据链路层的规定进行简单介绍。

1.1 协议数据单元(PDU)

J1939 将CAN 2.0B 的29 位标识符ID 划分为六部分,每部分都代表不同的含义,包括优先级(P)、保留位(R)、数据页(DP)、PDU格式(PF)、特定PDU(PS)、源地址(SA),见表1.

 

 

根据CAN 2.0 总线的仲裁机制,标识符值越小,CAN帧优先级越高,J1939把这一权利赋予了标识符最高三位(P)。R、DP通常为0.SA代表了该帧数据的发送节点的地址,CAN 网络中每个设备都分配了惟一的SA.在介绍PF 与PS之前有必要先介绍下参数组编号(PGN)的概念。每个PGN代表着惟一的参数组(可以包含一个或多个参数),当参数组的数据域大于8 B时,需要遵循J1939的多帧传输机制。PGN 由R、DP、PF 以及PS 组成,见表2.从表2 中可以看出PDU2 格式报文没有目标地址,此类报文只能发送给全局地址。由于PS作为PDU2 格式参数组编号的一部分,因此PDU2 比PDU1能定义更多的参数组编号。

 

 

1.2 多帧传输机制

CAN 2.0B 数据域最多有8 B,而在J1939协议中当一个参数组编号(PGN)所对应的数据超过8 B时,规定了一种多帧传输机制,发送者按此机制拆分发送,接收者按此机制接收重组,因此一个参数组编号所对应的数据最多可以为1 785 B.点对点未发生错误的多帧传输机制如图1 所示,J1939 对传输过程出现错误的情况也规定了相应的处理机制,在此不作介绍。

TP.CM_RTS、TP.CM_CTS、TP.DT、TP.EndofMsgACK均为J1939特定功能报文,其参数组编号也由J1939规定,因此这些参数组编号不能再被用户定义。TP.CM_RTS为消息发送者发送的请求发送帧,由此开始建立多帧传输链接,其数据域包括了此次发送的消息全部字节数、全部数据包数(TP.DT 帧数)以及该消息的参数组编号等信息。接收者根据自己的接收能力,发送准备发送帧TP.CM_CTS,通知发送者下次可发送的数据包数、下一个要发送的数据包编号以及消息的参数组编号。发送者根据接收者的要求开始发送数据包TP.DT,数据包的数据域第一字节代表了该包号,因此一个数据包最多包含消息的7 B.

 

 

这个过程循环进行,直至接收者接收到全部数据包后发送消息结束应答帧TP.EndofMsgACK代表着这次多帧传输的结束。若发送的消息是全局消息,则所有接收者不应有任何应答,整个传输过程如图2所示。

 

 

2 基于LabVIEW实现J1939 协议平台

2.1 硬件接口

利用NI PXI-8513 CAN 接口板卡实现该系统的硬件接口。NI已为开发者提供了该板卡的底层驱动,可以很方便对CAN节点参数进行配置以及接收和发送符合CAN 2.0的消息帧,然而对于多帧传输机制还需开发者自行设计。由于J1939 协议涉及发送者与接收者的应答,因此在基于LabVIEW开发J1939同时也利用C语言开发基于飞思卡尔单片机的电池管理系统中使用的J1939 协议,两者相辅相成,并且利用VECTOR CANoe软件监视总线,以保证程序开发的顺利进行。

2.2 软件实现

利用LabVIEW多线程编程以及生产者消费者结构实现J1939协议。分别为未拆分的发送报文、已拆分发送报文、未重组的接收报文、已重组的接收报文建立队列。创建已重组报文读取线程,已重组报文出队列用于应用层协议。创建接收报文处理线程,用于按多帧传输机制处理接收到的CAN 2.0数据帧,程序流程图如图3所示,经过目的地址过滤报文后,利用条件结构按照报文参数组编号进行分类处理,在计算参数组编号时要注意PDU1与PDU2格式的区别,主要分为以下几种情况:

数据小于7 B的正常数据报文:直接入已处理接收报文队列供应用层使用;请求发送帧TP.CM_RTS:由于两个节点之间同一时间最多只能有一个发送和一个接收的多帧传输链接,若这时已有一个接收链接,则需要发送放弃链接帧TP.ABORT告知发送者,若无接收链接,创建新的接收状态机并插入接收状态机数组。接收状态机为一个数据簇,包含了参数组编号、下一个接收数据包编号、数据包总数、当前已接收字节数、字节总数、以及已接收字节数组。之后应发送准备发送帧TP.CM_CTS 通知发送者发送数据包,同时应开始计时,若发送者响应时间超过规定时间,应发送放弃帧TP.ABORT;准备发送帧TP.CM_CTS:此报文为接收者对发送报文的应答,此次发送状态机已建立,搜索相应状态机,根据准备发送帧要求拆分数据创建数据包TP.DT;数据包TP.DT:搜索相应的接收状态机并核对是否与目前状态机相符,如果相符则对数据进行重组存入状态机的接收字节数组,若不符则发送该参数组编号的放弃链接帧,最后判断多帧传输是否结束,并根据是否为全局报文决定是否发送完成链接帧;完成链接帧TP.EndofMsgACK:表示相应的多帧发送链接已完成,删除相应的发送状态机。广播公告消息TP.

CM_BAM:收到全局消息的请求链接帧,只需建立相应的接收状态机,等待接收数据包,而不需要任何的应答。

 

发送报文均先入未拆分发送报文队列;创建未拆分发送报文处理线程,用于按多帧传输机制处理发送报文,程序流程图如图4所示,若发送报文数据超过8 B则需要通过多帧传输机制拆分发送。

 

 

2.3 J1939平台应用效果

定义电池管理系统BMS和LabVIEW的J1939协议地址分别为244和86.首先由BMS发送PGN为256的9 B报文给LabVIEW,CANoe监视到总线时序如图5所示。

 

 

由第一帧ID可以看出源地址为0xF4(244),目的地址为0×56(86),PGN为0xEC00,因此该帧为链接管理帧TP.CM,并且Data 域控制字节(第1 字节)为0×10,综上该帧为BMS 发送给LabVIEW 的请求发送帧,并由Data域可以看出此次报文共有0×09字节(第2,3字节),数据包共有0×02 包(第4 字节),PGN 为0×0100(第6,7,8 字节)。同理第二帧为LabVIEW发送的准备发送帧,通知BMS 从第0×01 包(第3 字节)开始发送0×02(第2 字节)包数据包。待接收到BMS发送的两帧TP.DT,LabVIEW发送TP.EndofMsgACK 代表此次多帧传输完成。Lab-VIEW接收重组后的数据如图6所示。

 

 

同理分析LabVIEW 作为发送节点的情况,总线时序图如图7所示,LabVIEW拆分前的发送数据如图8所示。综上分析,利用LabVIEW 开发平台很好地实现了J1939协议。

 

 

 

 

3 通信协议测试软件的开发

通信协议将整个通信分为多个阶段:充电握手阶段、充电参数配置阶段、充电阶段、充电结束阶段。每个通信阶段均涉及充电机与BMS 的信息交互,每次信息交互均有超时限制。为了实现对通信协议进行测试,不仅要模拟充电机与BMS 进行通信,还要实时监测通信的状态,判断通信过程是否出错并解析BMS 发送的信息。测试软件主要测试通信阶段出现的时序错乱以及信息交互超时这两种错误。

在已开发J1939协议基础上进行测试软件的开发,J1939协议提供了两个接口:需要发送报文直接入未处理发送报文队列、已处理接收报文出队列供应用层使用。通信阶段改变利用LabVIEW 状态机结构来实现。

创建充电机接收状态、充电机发送状态两个数据簇,记录接收报文是否已被接收、发送报文是否已被发送以及发送的时间。利用单独程序线程通过这两个数据簇实时判断是否有错误发生。

应用效果如图9所示,为了试验是否能准确测试出错误类型,有意将BMS 程序设置为不发送电池充电需求报文,测试软件指示超时类型代码为5,即电池充电需求报文超时,接收错误类型主要为通信顺序出错。通过对每个接收超时类型以及顺序出错类型进行测试,结果表明能很好地实现对通信协议进行测试。

 

 

4 结语

在LabVIEW开发平台上,利用其强大的数据处理能力以及丰富实用的程序结构实现了J1939协议,在此基础上开发电动汽车非车载传导式充电机与电池管理系统之间的通信协议测试软件,不仅可以辅助BMS的程序开发,还可以作为BMS测试平台的部分功能评价BMS合格与否。通过与BMS进行通信,并利用CANoe对总线进行监视,试验结果表明该测试软件可以实现J1939协议,能完成多帧传输机制,并且可以测试出通信协议中出现的通信流程错乱以及通信超时错误,可以满足要求。

关键字:LabVIEW  电池管理系统 编辑:探路者 引用地址:基于LabVIEW的电池管理系统与充电机通信协议测试

上一篇:基于ARIMA与Elman神经网络的风速组合预测模型
下一篇:基于LCL型滤波器的光伏并网逆变器的设计方案

推荐阅读最新更新时间:2023-10-12 22:33

油料电导率仪自动检定的方法
  1.LabVIEW编程原理及GPIB接口   1.LabVIEW编程原理   LabVIEW软件采用可视化编程语言进行编程。该软件采用了大量的模块化编程工具以及数据流显示和程序流显示,使编程和调试过程非常方便直观。在开放的LabVIEW软件环境下,控制软件与测量设备的链接变得简单。另外,LabVIEW软件还具有大量的数学运算工具,有很好的界面设计和丰富的显示方式。   1.2GPIB接口   GPIB接口是一种并行接口总线,该总线具有数据传送速度快、有效数据率高、驱动能力和抗干扰能力强的优点。通信距离可以达到20m,总线可以挂接15台仪器或设备,最高传输速率可以达到8MB/s。   2.油料电导率仪自动检定原理   采
[测试测量]
油料电导率仪自动检定的方法
基于LabVIEW的热舒服测试系统
0 引 言   在暖通空调范围,随着测试技艺的生长及测试要求的不时提高,一些具有与计算机直接通讯功用的高精度温湿度测试仪表曾经在科研和工程中被普遍运用。但是关于整个测试系统而言,单个仪器本身存在一些限定:仪器本身只好显示某一时间点的数据,无法看到参数的及时改变趋向;仪器本身缺乏数据处置才干,而某些测试场所须要不一样测量仪表所测参数举行计算而得出有使用价值的分析目标,比如PMV(预测平均评价)、PPD(预测不满意百分比);受仪器本身记忆卡内存的限定,仪器只好存储有限量个数据。与此同时,各个品牌的仪表与计算机通讯的方式不完全类似,有RS 232串行通讯、GPIB总线通讯等。因而,如何把这些仪表整合到同一个平台上,开发一个功用强悍的综合
[测试测量]
基于<font color='red'>LabVIEW</font>的热舒服测试系统
基于虚拟仪器的ARINC429总线信号仿真和测试方案
  ARINC429总线是美国航空无线电公司(ARINC)制定的航空数字总线传输标准,定义了航空电子设备和系统之间相互通信的一种规范。随着国内航空业的发展,ARINC429总线的应用日益广泛,已推广到许多航空设备中。与此同时在许多航空机载设备的检测维修中出现了大量对429信号的检测需求。这就使得对429信号的仿真和测试显得十分关键。本文使用目前市场上技术成熟的基于PCI接口的429收发板卡,以LabWindows/CVI作为软件开发环境,设计实现了对429信号的仿真和测试,达到了使用个人电脑完成429信号检测任务的目的。   ARINC429总线简介  ARINC429协议规定使用双绞屏蔽线以串行方式传输数字数据信息,
[测试测量]
基于虚拟仪器的ARINC429总线信号仿真和测试方案
介绍LabVIEW无线传感器网络(WSN)模块先锋
概览 无线通信技术得益于其自由灵活、分布式能力、及低成本等优势,其应用无处不在。无线传感器网络(WSNs)逐渐成为下一波无线技术,支持在大面积的实体系统中实现分布式测量。通过WSNs,您可以更高效地分析从雨林、河流三角洲到桥梁、建筑的健康及安全。WSN由空间分布的测量设备组成,通过传感器来监测物理及环境条件。除了众多无线测量节点,WSN系统还包括网关,用于收集数据并提供与PC或嵌入式控制器主机应用程序的连接。 为了有效使用这项潜力巨大的技术,首先必须克服相关问题所带来的挑战,如配置及管理数据采集、有效分析采集数据、存储数据用于进一步分析、将数据显示于用户端的有效方法。工程师和科学家在过去20年内通过NI LabVIEW
[测试测量]
基于STM32的电池管理系统触摸屏设计方案
  引 言   电动车一直以清洁环保而备受关注,加上能源危机加剧、油价不断上涨,电动车也越来越受到用户的青睐。电动车一般采用锂电池供电,由多个单体电池串联成电池组作为动力电源。但由于各个串联单体电池特性不能保证完全一致,因此相同的电流下充电放电速度也会不同,如果不进行均衡干预,电池寿命会大大缩短,因此需要实时监控各个单体电池的状态、总电压、总电流,根据状态适时进行电池充放电均衡,并且充放电均衡时,均衡状态也要实时进行检测,所以就有了电动车电池能量管理系统(EMS)。实践证明EMS可以有效延长电动车电池使用寿命,是电动车中十分重要的管理系统。   EMS主要包括:信息采集模块、充放电均衡模块、信息集中处理模块以及显示模块。
[单片机]
基于STM32的<font color='red'>电池管理系统</font>触摸屏设计方案
LABVIEW深入探索之MDB数据库写入速度问题。
近日在LABVIEW的群中,看到几次讨论利用队列把采集的数据写入到数据库的问题,讨论非常热烈,但是他们忽略了一个重要的问题,就是数据库的最大写入速度的问题。 一旦你每秒采样数超过一定限度时,无论你采用何种编程方式,如何优化你的程序,在超过一定限度后,都是不可能实现的,在这种情况下,讨论如何解决就毫无意义了。 队列主要有三方面的用途,并行、解除耦合和解决忙先不均。在高速采集时,队列只是起到了并行的作用。由于采集的速度远大于数据库的写入速度,这种情况下,使用数据库本身就是一个错误的选择,是不可能实现的。 下面我利用LABVIEW本身的数据库例程,稍微改动一下,测试数据库的写入速度。LABVIEW数据工具包提供三种不同的写
[测试测量]
<font color='red'>LABVIEW</font>深入探索之MDB数据库写入速度问题。
EQC的电池拆解和储运信息
前言:在 奔驰 发布的《动力蓄电池拆卸信息表》这里面既有 EQC 电池的一些细节信息,也有奔驰对于电池拆解和储存中一些要求,这两项内容都很有价值,我们一起来看看。 01 动力电池 的拆解信息 首先来看看 MSD 的事情(断开高压),如下图所示,EQC 有两种断开高压的办法,高压短路装置和备用高压断路装置,通常规定只在无法够到发动机舱中的高压断路装置时(一般是给消防人员使用的),才可剪断备用高压断路装置。 图 1 EQC 的断路装置 这套工具是通过适配器来辅助整个螺栓拆解后的支撑 图 2 电池适配器 因为这个电池包没有系统性的拆解过,所以从布局来看只有一个爆炸图,所以除了模组以外,其他的部件
[汽车电子]
EQC的电池拆解和储运信息
Labview自己创建的子VI调用
子VI的创建与调用说起来比较抽象,但是真正看过怎么实现之后至少会觉得在技能操作上并不难。 创建后的子VI一般是一个功能块儿,相当于C语言或者Python中的函数。而对创建的子VI进行调用,在功能类比上也就相当于调用自己写的一个函数。 功能相关的操作一般是在程序框图部分进行操作,而输入与显示的部分一般会涉及到前面板的操作,这是学习Labview总结出来一点小小的技巧。 示例: 创建新的VI,切换到程序框图,选择前面提到的那个创建好的子VI放到程序框图如下: 如同函数对功能的抽象,子VI也是对功能的一个抽象。创建的子VI放置到程序框图中之后显示比较简洁。继续实现以下功能: 前
[测试测量]
<font color='red'>Labview</font>自己创建的子VI调用
小广播
最新电源管理文章
换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved