本发明涉及嵌入式应用领域,特别涉及一种确定电池在车联网中的地址的方法及系统。
背景技术:
随着新能源汽车的普及,对电池管理提出了新的要求,而在电池应用中最有应用前景的电池换电结构脱颖而出。所谓换电结构就是在新能源汽车上装载的电池电量不足时,更换新的电池。
由于电池的检测装置都设置在电池中,因此更换电池意味着更换检测装置,这使得检测装置与汽车上的控制装置会随时脱离或对接,此时就需要一种能够保证汽车上的控制装置能够随时与电池的检测装置对接的机制。汽车上的控制装置称为主控制器或主设备,电池上的检测装置称为从控制器或从设备或子设备。
在换电结构中,电池采用分布式管理,电池内部的信息会不断被读取。现有技术中采用can网络通信,而can网络通信采用can2.0b技术,每个电池中的从控制器都采用支持can2.0b协议的数字芯片进行通信。can2.0b协议采用29位数据位id加1字节数据长度加不大于8字节的数据帧组成。
在实际使用过程中,can网络包括8至15个子设备节点和一个主设备节点。当can网络初始建立时,主设备要广播消息,查询子设备的地址,然后子设备进行响应,从而建立连接。
电池本身的唯一身份识别号(id)是12字节,这个长度是根据实际应用和拓展给出的最小长度12*8=96位。由于现有技术中can2.0协议本身只支持29位数据id传输,而高5位属于仲裁位,不能用于分配只能用于管理,这样剩下24位。如果使用剩下的24位定义电池的唯一的id,必然会存在电池id号重复的问题,导致在can网络中无法正常通信。
因此,can2.0协议的24位不足以满足实际应用和拓展需求,限制了电池的分布式管理。
技术实现要素:
根据本发明实施例提供的技术方案解决的技术问题是如何有效进行电池分布式管理。
根据本发明实施例提供的一种确定电池在车联网中的地址的方法,包括:
通过扫描电动车的电池的条形码,得到所述电池的条形码数据,并发送至后台服务器;
所述后台服务器在收到的所述电动车的电池的条形码数据后,按照预定策略,为所述电动车的电池分配适于车联网通信的唯一的通信地址;
所述后台服务器将所述电池的条形码数据和适用于车联网通信的唯一的通信地址发送给所述电动车,以便所述电动车利用所述电池的适于车联网通信的唯一的通信地址,进行数据通信。
优选地,所述后台服务器按照预定策略,为所述电动车的电池分配适于车联网通信的唯一的通信地址的步骤包括:
所述后台服务器为所述电动车的电池随机分配适于车联网通信的唯一的通信地址;或者
所述后台服务器对收到的所述电动车的电池的条形码数据进行排序,并按照排序结果依次为所述电动车的电池分配适于车联网通信的唯一的通信地址;或者
所述后台服务器将所述电动车的电池的条形码数据转换为适于车联网通信的唯一的通信地址,并分配给所述电池。
优选地,在所述电动车利用所述电池的适于车联网通信的唯一的通信地址,进行数据通信之前,进一步包括:
所述电动车的主控制器接收所述后台服务器发送的所述电池的条形码数据和适用于车联网通信的唯一的通信地址;
所述主控制器生成携带所述电池的条形码数据和适用于车联网通信的唯一的通信地址的广播消息,并发送至can网络;
所述can网络中相应电池的从控制器根据所述广播消息中的条形码数据,确定所述广播消息中的通信地址是否是其通信地址。
优选地,所述can网络中相应电池的从控制器根据所述广播消息中的条形码数据,确定所述广播消息中的通信地址是否是其通信地址的步骤包括:
所述can网络中相应电池的从控制器将所述广播消息中的条形码数据与其自身保存的电池的条形码数据进行比较;
若一致,则将所述广播消息中的适用于车联网通信的唯一的通信地址确定为其通信地址。
优选地,所述电动车利用所述电池的适于车联网通信的唯一的通信地址,进行数据通信的步骤包括:
所述电动车的主控制器通过相应电池的通信地址,查询所述相应电池,并得到所述相应电池的电池状态信息。
根据本发明实施例提供的一种确定电池在车联网中的地址的系统,包括:
电动车,用于通过扫描电动车的电池的条形码,得到所述电池的条形码数据,并发送至后台服务器;
后台服务器,用于在收到的所述电动车的电池的条形码数据后,按照预定策略,为所述电动车的电池分配适于车联网通信的唯一的通信地址,并将所述电池的条形码数据和适用于车联网通信的唯一的通信地址发送给所述电动车,以便所述电动车利用所述电池的适于车联网通信的唯一的通信地址,进行数据通信。
优选地,所述后台服务器为所述电动车的电池随机分配适于车联网通信的唯一的通信地址,或者,对收到的所述电动车的电池的条形码数据进行排序,并按照排序结果依次为所述电动车的电池分配适于车联网通信的唯一的通信地址,或者,将所述电动车的电池的条形码数据转换为适于车联网通信的唯一的通信地址,并分配给所述电池。
优选地,所述电动车包括:
主控制器,用于在利用所述电池的适于车联网通信的唯一的通信地址,进行数据通信之前,接收所述后台服务器发送的所述电池的条形码数据和适用于车联网通信的唯一的通信地址,并生成携带所述电池的条形码数据和适用于车联网通信的唯一的通信地址的广播消息,发送至can网络各电池的从控制器;
从控制器,用于根据所述广播消息中的条形码数据,确定所述广播消息中的通信地址是否是其通信地址。
优选地,所述从控制器将所述广播消息中的条形码数据与其自身保存的电池的条形码数据进行比较,若一致,则将所述广播消息中的适用于车联网通信的唯一的通信地址确定为其通信地址。
优选地,所述主控制器通过相应电池的通信地址,查询所述电池,并得到所述电池的从控制器采集的电池状态信息。
本发明实施例提供的技术方案具有如下有益效果:
本发明实施例对进入每个can网络的子设备重新进行地址分配,有利于电池分布式管理和通信效率提升。
附图说明
图1是本发明实施例提供的确定电池在车联网中的地址的方法框图;
图2是本发明实施例提供的确定电池在车联网中的地址的系统结构框图;
图3是本发明实施例提供的确定电池在车联网中的地址的方法网络拓扑图;
图4是本发明实施例提供的电池卸载流程图;
图5是本发明实施例提供的地址分配流程图;
图6是can总线通讯协议seaj3919can2.0数据帧格式示意图;
图7是saej1939pdu定义的数据帧格式示意图;
图8是本发明实施例提供的改进的saej1939pdu的数据帧格式示意图;
图9是本发明实施例提供的总体协议示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行详细说明,应当理解,以下所说明的优选实施例仅用于说明和解释本发明,并不用于限定本发明。
图1是本发明实施例提供的确定电池在车联网中的地址的方法框图,如图1所示,步骤包括:
步骤s101:通过扫描电动车的电池的条形码,得到所述电池的条形码数据,并发送至后台服务器。
电池壳体外部具有表征电池身份信息的条形码,通过条码枪扫描条形码,得到12字节的条形码数据,发送给后台服务器。
在发送12字节的条形码数据的同时,发送所述电动车的车牌号。
步骤s102:所述后台服务器在收到的所述电动车的电池的条形码数据后,按照预定策略,为所述电动车的电池分配适于车联网通信的唯一的通信地址。
按照预定策略,为所述电动车的电池分配适于车联网通信的唯一的通信地址的方式包括但不限于以下三种:
(1)所述后台服务器为所述电动车的电池随机分配适于车联网通信的唯一的通信地址;
(2)所述后台服务器对收到的所述电动车的电池的条形码数据进行排序,并按照排序结果依次为所述电动车的电池分配适于车联网通信的唯一的通信地址;
(3)所述后台服务器将所述电动车的电池的条形码数据转换为适于车联网通信的唯一的通信地址,并分配给所述电池。
步骤s103:所述后台服务器将所述电池的条形码数据和适用于车联网通信的唯一的通信地址发送给所述电动车,以便所述电动车利用所述电池的适于车联网通信的唯一的通信地址,进行数据通信。
后台服务器根据车牌号,通过gprs等方式向该电动车的车载云处理单元发送电池的条形码数据和适用于车联网通信的唯一的通信地址,并由该电动车的车载云处理单元将该电池的条形码数据和通信地址转发给该电动车的主控制器。
主控制器生成携带所述电池的条形码数据和适用于车联网通信的唯一的通信地址的广播消息,并发送给从控制器。需要说明的是,若主控制器和从控制器通过can总线连接,则将广播消息发送至can网络,若主控制器和从控制器通过低频无线连接,则将广播消息发送至无线网络。以主控制器和从控制器通过can总线连接为例,can网络中相应电池的从控制器根据所述广播消息中的条形码数据,确定所述广播消息中的通信地址是否是其通信地址,具体的说,电池的从控制器将所述广播消息中的条形码数据与其自身保存的电池的条形码数据进行比较,若一致,则将所述广播消息中的适用于车联网通信的唯一的通信地址确定为其通信地址。这样,电动车的主控制器通过相应电池的通信地址,即可查询该电池,并得到该电池的电池状态信息。
本领域普通技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,该程序在执行时,包括步骤s101至步骤s103。其中,所述的存储介质可以为rom/ram、磁碟、光盘等。
图2是本发明实施例提供的确定电池在车联网中的地址的系统结构框图,如图2所示,包括电动车和后台服务器。
电动车,用于通过扫描电动车的电池的条形码,得到所述电池的条形码数据,并发送至后台服务器;
后台服务器,用于在收到的所述电动车的电池的条形码数据后,按照预定策略,为所述电动车的电池分配适于车联网通信的唯一的通信地址,并将所述电池的条形码数据和适用于车联网通信的唯一的通信地址发送给所述电动车,以便所述电动车利用所述电池的适于车联网通信的唯一的通信地址,进行数据通信。
其中,所述电动车包括:
主控制器,用于在利用所述电池的适于车联网通信的唯一的通信地址,进行数据通信之前,接收所述后台服务器发送的所述电池的条形码数据和适用于车联网通信的唯一的通信地址,并生成携带所述电池的条形码数据和适用于车联网通信的唯一的通信地址的广播消息,发送至can网络各电池的从控制器;
从控制器,用于根据所述广播消息中的条形码数据,确定所述广播消息中的通信地址是否是其通信地址,具体地说,将所述广播消息中的条形码数据与其自身保存的电池的条形码数据进行比较,若一致,则将所述广播消息中的适用于车联网通信的唯一的通信地址确定为其通信地址,以便主控制器通过该通信地址,查询其采集的电池状态信息。
本发明实施例通过车联网后台服务器对进入到每一个can网络的子设备(即从控制器)重新进行地址分配,以达到新的应用目的。具体操作为,首先主设备(即主控制器)根据后台服务器命令发出can消息广播将子设备信息从自己的通信列表中剔除,完成电池卸载。新电池盒体外部会有电池身份信息id条码,通过条码枪,将12字节数据信息扫出发给后台服务器,然后后台服务器根据汽车信息,将刚刚扫描到的id发给该车主控制器。
图3是本发明实施例提供的确定电池在车联网中的地址的方法网络拓扑图,如图3所示,包括:
云端服务器,即后台服务器,负责电池设备的通信地址分配,电池id信息的收集。
icu,是车载云处理单元,主要负责与后台进行gprs无线通信和数据交互。
主控制器,负责收集子设备所在电池的状态信息,同时与icu采用can网络连接,将收集到的数据上报给云端服务器。
子控制器(即子设备),其带有数据采集模块,负责将电池状态信息收集通过can网络上报给主控制器。
电池上的条形码,即是子控制器自身的电池身份信息id条码,长度为12字节。
图3中的虚线内的设备都安装在汽车上。
所述工作流程如下:
通过条码枪扫描电池壳体外部的条形码,得到12字节的条形码数据,发送给云端服务器;
云端服务器将车牌号与原电池(即待充电的电池,更换前的电池)的条形码数据的绑定关系解除,并将车牌号与扫描的新电池(充满电的电池,更换后的电池)的条形码数据绑定;
云端服务器根据新电池的条形码数据,以随机分配等方式为该新电池分配1字节的用于车联网通信的唯一的通信地址;
云端服务器根据车牌号,找到相应电动车的icu,并通过移动网络将电池更换命令发送给该icu,由该icu将电池更换命令转发给主控制器,该电池更换命令中包含该新电池的条形码数据和通信地址;
主控制器根据电池更换命令,删除包含原有电池的条形码数据和通信地址的原有子设备(即从控制器)信息列表,并建立包含新电池的条形码数据和通信地址的新子设备信息列表;
主控制器生成包含该新子设备信息列表的地址更新广播消息,并通过can网络发送给每个从控制器;
每个从控制器将其保存的电池的条形码数据和新子设备信息列表中的条形码数据匹配,若一致,说明新子设备信息列表中该条形码数据对应的通信地址为该从控制器或该电池的通信地址。
从控制器实时采集电池状态信息;
主控制器根据每个电池的通信地址,对相应电池进行轮询,得到其采集的电池状态信息,并经由icu将所述电池状态信息发送至云端服务器。
图4是本发明实施例提供的电池卸载流程图,首先后台服务器将电池更换命令通过gprs网络发送给icu,icu收到命令后,通知主控制器发出电池更换can消息广播,同时主控制器将原有的子设备信息列表从自己的通信列表中剔除,完成电池卸载过程。子设备的数量根据车型的不同而不同。在出厂时,子设备的数量会根据车型写到主控制器中。如图4所示,具体步骤包括:
步骤s201:开始流程后,后台发送电池卸载命令(即电池更换命令)。
步骤s202:icu接收电池卸载命令,并将其转发给主控制器。
步骤s203:主控制器接收电池卸载命令。
步骤s204:主控制器清除原有的子设备信息列表。
步骤s205:主控制器发出广播(地址更新广播),结束流程。
图5是本发明实施例提供的地址分配流程图,新电池上车,新电池盒体外部会有电池身份信息id条码(即条形码),通过条码枪,将12字节数据信息(即条形码数据)和车牌号发给后台服务器,然后后台服务器根据车牌号找到相应的icu,通过gprs下发电池id信息(即条形码数据)给该电动车。主机收到电池id后,通过can消息发送地址更新广播,只有收到电池id信息与自己的地址信息(即id信息)一致的子设备才能对该广播消息进行应答,同时接受主控制器分配的1字节新地址。以此类推,直到所有子设备都收到新的通信地址,结束地址更新广播。如图5所示,步骤包括:
步骤s301:开始流程后,后台服务器发送包含电池id的电池装载命令。
步骤s302:icu收到该命令,将该命令转发给主控制器。
步骤s303:主控制器收到该命令,通过解析该命令,得到其中的电池id。
步骤s304:主控制器将该电池id加入到广播列表。
步骤s305:主设备发出地址变更广播。
步骤s306:判断是否所有子设备均完成地址变更,若是,则结束流程,否则返回步骤s305。
图6是can总线通讯协议seaj3919can2.0数据帧格式示意图,图7是saej1939pdu定义的数据帧格式示意图,本发明实施例参考saej1939,将主设备和子设备通讯协议的数据帧格式进行改进,具体如图8所示的改进的saej1939pdu的数据帧格式示意图,其中:
p:为三位优先级,根据实际情况确定,目前暂时使用3(0b011),4(0b100)来表示主机或从机的优先发送次序。需要说明的是,因为can2.0b协议中规定的4字节id是29位,说明会有高3位不能在总线上发送,所以高三位补0,因此后面出现的0x0d的字节,即0b00001101代表十六进制0x0d。
edf、df:为扩展选项,根据主机发送和接收的不同会被置1或0,来区分发送方向。
数据1、2、3:用来做功能区或地址使用,具体地,数据1用于命令控制字,数据2用于主设备地址,数据3用于从设备地址。
数据区:用于传输数据,具体地,数据区第一个字节用于子命令码,第二个字节为设置内容,第三到八个字节用于电池id填充。
以一个具体的通信过程为例,假设电池1的电池id(即电池1的条形码数据)为0x112233445566778899000102,分配的can网络地址id(即电池1的通信地址)为0x01。后台首先通过空口发送报文给icu,告知icu电池1的电池id对应的can网络地址id,icu将电池1的电池id对应的can网络地址id转发给主控制器,主控制器收到后,向网络广播消息。
主机(即主控制器)发送以下二帧:
第一帧:0x0d6001ff080x020x010x110x220x330x440x550x66
第二帧:0x0d6001ff080x030x010x770x880x990x000x010x02
帧格式说明:
0x0d6001ff0d为优先级;60为设置命令;01为主设备地址;ff为广播地址;08为后面的数据长度;0x02为电池id低六位,0x03为电池id高六位;0x01为分配的具体can网络地址;后面是电池id的数据。
子设备发送
电池1的子设备根据两个数据帧拼接得到电池id,若确认该拼接得到的id=0x112233445566778899000102与自己出厂时写在flash中的地址(即电池1的条形码数据)相同,则向主机发送确认帧,确认帧为:0x10e00101020x830x01。
帧格式说明:
10是子设备发送优先级;e0是0x60|0x80,表示确认主设备的设置命令;第一个01代表主设备地址;第二个01代表刚刚分配的地址;02是数据长度;0x83是确认收到设置地址信息;0x01是确认设置地址为0x01。
本发明实施例通过这样的方式可以分配一个最大255个通信地址的can网络子网,完全满足电池分布式应用的需求。
通信过程中的通用格式如图9所示,当进行正常通信时8字节数据区会根据id中的命令字改变内容,这样当主机重新分配好地址后,就不需要始终带着12字节电池id进行数据通信,提高了通信效率。
本发明实施例采用自定义协议,其更改can通信id地址来适应电池分布式管理。
本发明实施例在通信协议中利用车联网平台提供的相关信息,解决电池id(即条形码数据)与can地址(即后台服务器分配给电池的用于车联网通信的唯一的通信地址)的映射。
综上所述,电池本身需要唯一地址(即电池id),该唯一地址范围(例如12字节*8=96位)会大于4字节所能表示的范围,且id本身在can网络中具有如优先级,命令字等的固定意义,因此分配给电池本身的唯一地址是有限的。而由于can格式的特殊性,通信id长度只有4字节,这与12字节长的电池id产生了矛盾,为了解决这个问题,本发明通过动态映射关系,在通信时将电池id以广播方式下发给所有当前子设备(挂在主设备下的子设备是固定有线的),子设备经过2帧的筛选,组合出完整的电池id并与自身的电池id相对比,相同则对主设备进行确认,同时接受主设备的短id通信地址,即1字节的通信地址,从而有效的利用了车联网这一平台优势实现电池id与can网络地址(即1字节的通信地址)间的映射,同时提高了通信效率。
尽管上文对本发明进行了详细说明,但是本发明不限于此,本技术领域技术人员可以根据本发明的原理进行各种修改。因此,凡按照本发明原理所作的修改,都应当理解为落入本发明的保护范围。