一种汽车can总线车身控制系统中从站检测报文的生成方法

文档序号:7707753阅读:193来源:国知局

专利名称::一种汽车can总线车身控制系统中从站检测报文的生成方法
技术领域
:本发明涉及一种汽车CAN总线车身控制系统中从站检测报文的生成方法,尤其涉及一种基于主从式网络结构的汽车CAN总线车身控制系统中从站模块生成4全测4艮文的方法。
背景技术
:CAN(控制器局域网)总线是德国Bosch公司为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议。CAN总线具有较强的纠错能力,支持差分收发,因而适合高干扰环境,并具有较远的传输距离,目前已经成为世界汽车制造业的主体行业标准之一。由于CAN协议仅定义了OSI七层参考模型中的物理层及数据链路层规范,实际使用时还需要在CAN的基础上选择合适的应用层协议,如CAN叩en、SAEJ1939等。目前在大型汽车中应用最广泛的应用层协议是美国汽车工程协会(SAE)所定义和推广的J1939协议,它为中重型道路车辆上电子部件之间的通讯提供了标准的体系结构。近几年,我国在CAN总线汽车电子领域发展较快,国内自主研发涉及的汽车CAN总线产品越来越多,如CAN总线控制模块、CAN总线汽车仪表等。总体来看,基于主从式网络结构的、符合SAEJ1939规范的、模块化的CAN总线系统逐步成为汽车CAN总线车身控制系统的主流。由于汽车CAN总线车身控制系统所控制的I/0数量众多,逻辑关系复杂,且SAEJ1939协议本身也较为繁瑣,因此从站检测报文的生成显得尤为重要,是保证系统高效、可靠运行的必要条件。
发明内容本发明的主要目的在于提供一种汽车CAN总线车身控制系统中从站检测报文的生成方法,其可以在所述汽车CAN总线车身控制系统工作时,从站模块检测到有输入引脚外部电气量发生变化后,实时生成从站检测报文并向主站模块发送。为了达到上述目的,本发明提供了一种汽车CAN总线车身控制系统中从站检测报文的生成方法,其特征在于,所述汽车CAN总线车身控制系统工作时,从站模块检测到有输入引脚外部电气量发生变化后,通过查找已经预先建立的映射表获得对应于所述从站模块的输入引脚的CAN报文,并将该CAN报文发送至所述主站模块。优选的,所述通过查找已经预先建立的映射表获得对应于所述从站模块的输入引脚的CAN报文步骤包括通过查找已经预先建立的映射表得到所述从站模块状态发生变化的输入51脚的工作方式及其对应的单片机输入引脚状态值緩冲区存储单元号,并由此得到该输入引脚的状态值,接着找到该从站模块输入卩1脚对应于SAE939协议中的具体功能号,再根据所建立的SAEJ1939协议列表将功能号解析为具体的SAEJ1939协议通信报文值,最后将该通信报文值按照SAEJl939协议的成帧规则填充CAN报文,并发送到所述主站模块。与现有技术相比,本发明所述的汽车CAN总线车身控制系统中从站检测报文的生成方法,其可以在所述汽车CAN总线车身控制系统工作时,从站模块检测到有输入引脚外部电气量发生变化后,实时生成从站检测报文并向主站模块发送。图1是本发明所基于的汽车CAN总线车身控制系统的结构示意图;图2是本发明所述的方法包括的从站模块初始化步骤的流程图;图3是本发明所述的方法包括的从站模块初始化步骤完毕后检测报文的产生步骤的流程图。具体实施例方式本发明提供了一种应用在汽车CAN车身控制系统中的从站生成检测报文的方法。首先对汽车CAN总线车身控制系统进行说明汽车CAN总线车身控制系统包括一个主站模块和多个从站模块,所述从站模块的具体数量由车身上电气信号量的数目决定。所述主站模块具有逻辑控制、通信管理和配置从站等功能,不负责实际的输入/输出;所述从站模块具有输入信号采集、执行输出及输入/输出故障诊断等功能;所述主站模块和所述从站模块之间通过CAN总线进行通信,所述从站模块通过输入/输出接口电路与各种车载电器设备(开关、传感器、执行器等)连接。为了保证通用性,所述汽车CAN车身控制系统的从站模块的各个输入引脚或输出引脚均可以被配置成符合SAEJ939协议的任意功能。使用前,用户应该首先配置所述汽车CAN车身控制系统的控制逻辑信息,并通过配置计算机将所述控制逻辑信息下载到所述主站模块和所述从站模块里。对于输入引脚来说,所述控制逻辑信息包括该引脚的功能和工作方式。为了将抽象的SAEJ1939协议明晰地表示出来,进行如下定义(1)功能名称SAEJ1939协议中规定的某一被控汽车电器设备的(动作方式)具体名称或其输入控制设备/器件的名称;由SAEJ1939协议的某一组确定的PGN(参数组号)和功能区值可对应唯一的功能名称;(2)功能号所述汽车CAN车身控制系统为每一个功能名称设定的编号,所述主站模块和所述从站模块均使用该编号。进行上述定义后,以二维表格的形式建立一个SAEJ1939协议列表,将所有使用到的SAEJ939协议中规定的功能名称与功能号对应起来。所述功能名称所包括的PGN值与功能区值按照二进制位连接后得到SAEJ1939协议通信报文值,这样就将抽象的功能号与实际的通信报文值关联起来。为了判断所述从站模块的输入引脚上的外部电气量是否变化,应首先根据配置计算机下载到所述从站模块中的配置信息来判断各个输入引脚的工作方式,进而通过输入引脚的工作方式结合其相关的单片机输入引脚的状态值来逐个得出从站模块输入引脚的状态值,并与上次的状态值比较,如有变化,则产生相应的检测报文发送给所述主站模块。所述从站模块的输入引脚的外部电气量可以为开关量、模拟量或脉冲量;所述外部电气量的不同形式对应不同的输入接口电路,需要用到不同数目的单片才几引脚。因此还需要建立若千个存储引脚的控制逻辑信息和各种对应信息的映射表,如从站模块输入引脚状态值緩冲区存储单元与从站模块输入51脚映射表、从站模块输入引脚与从站模块单片机输入?I脚映射表、从站模块单片机输入引脚与单片机输入引脚状态值缓冲区存储单元映射表、从站模块输入引脚与工作方式映射表、从站模块输入引脚与功能号映射表、从站模块输入引脚工作方式与从站模块单片机输入?1脚映射表、从站模块输入引脚工作方式与从站模块单片机输入?1脚状态值缓冲区存储单元映射表、从站模块输入引脚状态值緩冲区存储单元与功能号映射表。上述这些映射表都在所述从站模块初始化时建立,均存放在所述从站模块的FlashROM区域中,可供所述从站模块随时访问。所述汽车CAN总线车身控制系统实际工作时,所述从站模块检测到有输入引脚外部电气量发生变化后,通过查找已经建立的上述映射表可以获得所述从站模块状态发生变化的输入引脚的工作方式及其对应的单片机输入引脚状态值缓冲区存储单元号,由此可以得到该输入引脚的状态值,接着找到该从站模块输入《1脚对应于SAEJ1939协议中的具体功能号,再根据所建立的SAEJ1939协议列表将功能号解析为具体的SAEJ1939协议通信报文值,最后将通信报文值按照SAEJ1939协议的成帧规则填充CAN报文,并发送到所述主站模块,从而达到了向主站模块及时反馈车载电器设备运行状态的目的。如图1所示,本发明所述的方法基于的汽车CAN总线车身控制系统的结构示意图。本发明所涉及的从站模块中建立的9个映射表,分别为(1)SAEJ1939协议列表每个从站模块中都要存储一个SAEJ1939协议列表,该列表中包含两部分SAEJ1939协议定义的全部功能以及汽车CAN总线系统为每个功能名称所分配的功能号。该列表反映了该两部分之间的对应关系,如表1所示。表1中的PGN值与功能区值按二进制位连接后得到SAEJ1939协议通信报文值,简称通信报文值;由于通信报文值表示一个具体的功能,因此将一个通信报文值与一个功能号相对应;表1SAEJ1939协议定义的功能PGN值功能区值功能号PGN11功能号OPGN1i功能号i6<table>tableseeoriginaldocumentpage7</column></row><table>(2)从站模块输入?1脚状态值緩冲区存储单元与从站模块输入?1脚映射表从站模块输入引脚状态值緩沖区是从站模块中的一个Flash区,该区域中包含的存储单元的数量与从站模块的输入引脚数量相等。当所述从站模块硬件设计完成后,可以根据从站模块的输入引脚数量确定该存储区域的大小。每个从站模块都建立并存储一个从站模块的输入引脚状态值緩冲区存储单元与从站模块输入引脚映射表。通过该映射表,从站模块输入引脚状态值緩沖区的每个存储单元都与唯——个从站模块输入引脚相对应,并且每个存储单元的值代表着相应从站模块输入引脚的状态值。当从站模块检测到某一输入引脚外部电气量的变化时,会更新映射表中该输入引脚所对应的存储单元的值。如果从站模块的Flash区以8位(1字节)为1个存储单元,输入引脚数量为32个,输入引脚编号为从PINO至PIN31,则从站模块输入?I脚状态值緩冲区存储单元与从站^t块输入引脚的映射关系如表2所示;表2<table>tableseeoriginaldocumentpage7</column></row><table>(3)从站模块输入可1脚与从站模块单片机输入《1脚映射表由于从站模块的输入量包括开关量、模拟量和脉冲量,不同输入量的硬件电路在结构上会有所不同,从而导致了从站模块各个输入《I脚对应的单片机输入?1脚在功能和数量上都有所不同。这就需要在单片机内部建立一个从站模块输入引脚与从站模块单片机输入引脚对应关系的映射表,如表3所示。表3从站模块输入引脚号从站模块单片机输入引脚号PIN1PORTX1PORTXiPIN2PORTY1PORTYjPIN32P0RTZ1PORTZk(4)从站模块单片机输入引脚与单片机输入?1脚状态值緩冲区存储单元映射表从站模块单片机输入引脚状态值緩沖区是从站模块中的一个Flash区,该区域中包含的存储单元数量与从站模块单片机的输入引脚数量相等。当从站模块硬件设计完成后,可以根据单片机输入引脚数量确定该存储区域的大小。每个从站模块都建立并存储一个从站模块单片机输入引脚与单片机输入引脚状态值緩冲区存储单元映射表。通过该映射表,緩沖区的每一个存储单元都与唯——个单片机输入引脚号相对应,并且每一个存储单元的值代表着相应单片机输入引脚的状态值。如果从站模块的Flash区以8位(1字节)为1个存储单元,单片机输入引脚数量为40个,单片机输入引脚编号从PORTO至PORT39,则从站模块单片机输入引脚与单片机输入引脚状态值缓冲区存储单元的映射关系如表4所示。8表4从站模块单片机输入引脚号单片机输入引脚状态(值)緩冲区存储单元号PORTO存储单元0PORT1存储单元1PORT39存4诸单元39(5)从站模块输入引脚与工作方式映射表考虑到从站模块的可扩展性和使用的灵活性,在从站模块输入引脚的硬件电路设计上尽可能的使一个引脚能够在多种方式下工作,具体表现为开关量输入引脚可以实现正控、负控和悬空三种工作方式;电压模拟量输入引脚可以配置为正控方式下的开关量输入引脚;电阻模拟量输入引脚可以配置为负控和悬空方式下的开关量输入引脚;脉冲量输入引脚可以配置为正控方式下的开关量输入引脚。实际应用中,一个具体的从站模块输入引脚工作在何种方式下是由配置计算机下载到从站模块上的配置信息决定的。因此,在从站模块中需要建立一个从站模块输入引脚与工作方式映射表,如表5所示。表5从站模块输入引脚号输入引脚工作方式PINO工作方式0PIN1工作方式1PIN31工作方式31(6)从站模块输入引脚与功能号映射表配置计算机通过主站下载给从站的配置信息同时包括从站各个引脚的功能9号。从站模块输入引脚与功能号映射关系如表6所示。表6<table>tableseeoriginaldocumentpage10</column></row><table>(7)从站模块输入引脚工作方式与从站模块单片机输入卩1脚映射表从站模块通过配置计算机下载到模块中的配置信息来判断从站模块各输入引脚的工作方式,进而通过从站模块单片机输入引脚状态值緩沖区存储单元中的值和相应从站模块输入引脚的工作方式来决定从站模块输入引脚的状态。因此,需要在从站模块中建立从站模块输入引脚工作方式与从站模块单片机输入弓1脚映射表。该表可以通过表3和表5得到,如表7所示。表7从站模块输入引脚工作方式从站模块单片机输入引脚号工作方式0P0RTX1PORTXi工作方式1P0RTY1PORTYj工作方式31PORTZ1PORTZk(8)从站模块输入引脚工作方式与从站模块单片机输入引脚状态值緩冲区存储单元映射表通过表4和表7,可以得到从站模块输入引脚工作方式与从站模块单片机输入引脚状态值緩冲区存储单元映射表,如表8所示。表8从站模块输入引脚工作方式单片机输入引脚状态(值)緩冲区存储单元号工作方式0P0RTX1对应的存储单元PORTXi对应的存储单元工作方式1P0RTY1对应的存储单元PORTYj对应的存储单元工作方式31PORTZ1对应的存储单元PORTZk对应的存储单元(9)从站模块输入引脚状态值缓沖区存储单元与功能号映射表从站模块输入引脚状态值緩冲区各存储单元的值是通过从站模块输入引脚工作方式和单片机输入引脚状态值緩沖区中存储单元的值共同决定的。根据最终得到的从站模块输入引脚状态值緩冲区各存储单元的值可以找到从站模块某一输入引脚状态对应于SAEJ1939协议中的具体功能号,因此,需要在从站模块中建立一个从站模块输入引脚状态值缓沖区存储单元与功能号映射表,该表可通过表2和表6建立,如表9所示。根据表9和表1中的信息,从站模块可生成相应的CAN报文,并发送给主站模块,从而实现了向主站模块反馈车载电器设备运行状态的目的。11表9<table>tableseeoriginaldocumentpage12</column></row><table>请参阅图2所示,其为本发明所述的方法包括的从站模块初始化步骤的流程图,包括的步骤为步骤al:从站模块上电初始化;步骤a2:建立SAEJ1939协议列表(表1);步骤a3:判断本模块是否被配置过,如果是则执行下述步骤a4,否则执行下述步骤a6;步骤a4:调用已经建立的从站模块输入引脚工作方式与从站模块单片机输入引脚状态值緩沖区存储单元映射表(表8);步骤a5:调用已经建立的从站模块输入引脚状态值緩冲区存储单元与功能号映射表(表9);步骤a6:建立从站模块输入引脚状态值緩冲区存储单元与从站模块输入引脚映射表(表2);步骤a7:建立从站模块输入引脚与从站模块单片机输入51脚映射表(表3);步骤a8:建立从站模块单片机输入引脚与单片机输入引脚状态值緩冲区存储单元映射表(表4);步骤a9:接收主站发送的用户配置信息;步骤alO:根据用户配置信息建立从站模块输入引脚与工作方式映射表(表5)和从站模块输入引脚与功能号映射表(表6);步骤all:根据已经建立的表3和表5,建立输入引脚工作方式与从站模块单片机输入引脚映射表(表7);步骤al2:根据已经建立的表4和表7,建立从站模块输入引脚工作方式与从站模块单片机输入引脚状态值緩沖区存储单元映射表(表8);步骤al3:根据已经建立的表2和表6,建立从站模块输入引脚状态值緩沖区存储单元与功能号映射表(表9);步骤al4:从站模块初始化结束。请参阅图3所示,其为本发明所述的方法包括的从站模块初始化步骤完毕后检测报文的产生步骤的流程图,包括的步骤为步骤b1:从站模块初始化结束;步骤b2:判断是否有输入引脚外部电气量的变化,如果是则执行下述步骤b3,否则返回本步骤;步骤b3:根据表8获得从站模块状态发生变化的输入引脚的工作方式及其对应的单片机输入引脚状态值緩沖区存储单元号,由此可以得到该输入引脚的状态值;步骤b4:根据表9找到该从站模块输入S1脚对应于SAEJ1939协议中的具体功能号;步骤b5:根据表1将功能号解析为具体的SAEJ1939协议通信报文值;步骤b6:将通信报文值按照SAEJ1939协议的成帧规则填充CAN报文,并发送到主站模块,最后返回步骤b2。以上说明对本发明而言只是说明性的,而非限制性的,本领域普通技术人员理解,在不脱离以下所附权利要求所限定的精神和范围的情况下,可做出许多修改,变化,或等效,但都将落入本发明的保护范围内。1权利要求1、一种汽车CAN总线车身控制系统中从站检测报文的生成方法,其特征在于,所述汽车CAN总线车身控制系统工作时,从站模块检测到有输入引脚外部电气量发生变化后,通过查找已经预先建立的映射表获得对应于所述从站模块的输入引脚的CAN报文,并将该CAN报文发送至所述主站模块。2、根据权利要求1所述的汽车CAN总线车身控制系统中从站检测报文的生成方法,其特征在于,所述通过查找已经预先建立的映射表获得对应于所述从站模块的输入引脚的CAN报文步骤包括通过查找已经预先建立的映射表得所述从站模块状态发生变化的输入引脚的工作方式及其对应的单片机输入引脚状态值緩沖区存储单元号,并由此得到该输入引脚的状态值,接着找到该从站模块输入引脚对应于SAEJ1939协议中的具体功能号,再根据所建立的SAEJ1939协议列表将功能号解析为具体的SAEJ1939协议通信报文值,最后将该通信报文值按照SAEJ1939协议的成帧规则填充CAN报文,并发送到所述主站模块。全文摘要本发明公开了一种汽车CAN总线车身控制系统中从站检测报文的生成方法,其特征在于,所述汽车CAN总线车身控制系统工作时,从站模块检测到有输入引脚外部电气量发生变化后,通过查找已经预先建立的映射表获得对应于所述从站模块的输入引脚的CAN报文,并将该CAN报文发送至所述主站模块。本发明可以在所述汽车CAN总线车身控制系统工作时,从站模块检测到有输入引脚外部电气量发生变化后,实时生成从站检测报文并向主站模块发送。文档编号H04L12/40GK101557328SQ20091013867公开日2009年10月14日申请日期2009年5月12日优先权日2009年5月12日发明者佟为明,雷卢,吴鹏程,林景波,白哲松,金显吉,陈振华申请人:陈振华;哈尔滨工业大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1