背景技术
随着汽车电子技术的飞速发展,汽车上电气化的部件越来越多。而为简化汽车电器部件之间的连接以及提高系统的可靠性,车载总线技术也得到了应用和发展。而不同的总线,根据其成本和应用领域在车辆中得到不同的应用,如CAN(英文全称:Controller Area Network,中文全称:控制器局域网络)总线应用于动力、车身控制系统方面;MOST(英文全称:Media Oriented SystemTransport,中文全称:面向媒体的系统传输)总线应用于信息娱乐系统方面;LIN(英文全称:Local Interconnect Network,中文全称:局域通信网)总线以其低端的成本和简单的机制应用于较为低端的局域控制。
LIN通信采用主从方式进行通信,如图1所示,一个LIN网络由唯一的主节点1(Master)和若干从节点2(Slave)组成,主节点1通过发出控制命令,控制各从节点的ECU(英文全称:Electronic Control Unit,中文全称:电子控制单元)与所连接的传感器或执行部件之间的通信。该主节点1作为网关与CAN总线连接。
主节点1与各从节点2之间的通信通过设置在主节点1上的调度表控制的通信机制实现。如图2中所示,上述调度表规定了LIN网络里面每个节点的通信顺序以及通信周期,在LIN通信的调度表设计中,一般采用周期调度的方式实现通信。调度表设计首先根据LIN网络中节点个数(如以N个节点为例)定义出每个节点的通信周期,现有的通信周期为一固定通信时间Tslot,所述固定通信时间Tslot为常量,每个节点的固定通信时间Tslot的值是一致的,然后将所有节点的固定通信时间Tslot相加便可计算出整个调度表的调度周期Tschedule。设计完成调度表后,调度表便以软件代码的形式固定在主节点的内部软件中。当进行LIN通信的时候,LIN的主节点根据设计好的调度表进行调度,各个节点通信便按照调度表定义的时间和顺序进行,从而实现LIN网络上各个节点的通信。
然而,主节点内部的软件代码一般由供应商写入,该预先设定的固定通信时间Tslot在实际的节点通信匹配中未必满足各个节点通信所需要的实时性,此时,便需要对预先设计的调度表的每个节点的固定通信时间Tslot进行修改,以满足实现节点功能所需要的实时性。
在现有LIN通信调度设置方法中,存在通过修改主节点内部的软件代码以修改其调度周期Tschedule的方式,但这种方式仍存在问题,如果对调度周期Tschedule进行修改的次数较多,则每次都要进行软件代码的修改,将使得其节点通信周期修改时间长,同时修改完成后还需要对修改后的软件代码进行测试,然后再进行通信匹配。这样修改调度周期的方式存在修改过程复杂、代码更改频繁、工作重复量大等问题,将延长整个LIN网络的开发周期。
实施例
为使阅读者更易于理解本发明,先对LIN网络做简单介绍。LIN总线是一种面向汽车低端分布式应用的低成本、低速度的串行通讯总线,由此形成的通信网络称为LIN网络。如图1所示,LIN网络一般作为CAN网络的下层网络,是CAN总线的补充,适用于对总线性能要求不高的车身系统等,如车门、车窗、灯光等智能传感器、执行器的连接和控制。LIN网络由唯一的主节点1和若干从节点2组成,由主节点1控制对传输介质的访问,从节点2只是应答主节点1的命令,不需要仲裁和冲突管理机制。LIN总线的节点数一般不能超过16个,否则,节点增加将会减少网络阻抗,导致环境条件变差。从图1中可看出,主节点1也作为LIN网络与上层CAN网络连接的网关,负责与CAN网络的通信。主节点1和从节点2中均设有ECU、收发器、稳压电源等,收发器与LIN总线连接,用于实现各节点与LIN之间的通信,在主节点1中,一般还设有CAN总线接口,通过该CAN总线接口与CAN总线连接,因此可作为网关实现LIN总线与CAN总线之间的通信。
如图3中所示,假设共有4个节点,其中包括1个主节点1(Master),3个从节点2(Slave)。在主节点1中设有调度表,该调度表规定了LIN网络里面每个节点的通信顺序以及通信时间(或称通信周期)。如图4所示,LIN网络里主节点1(Master)根据调度表来发送报文的报头,从节点2(slave)根据收到报头进行响应,将数据填进主节点1发送的报头后面的数据场中,组成完整的LIN报文,从而实现通信。进度表有助于保证总线不出现过载的情况,是保证信号定期传输的核心组件。
主节点1是控制网络中各节点通信的节点,一个LIN网络上的通讯总是由主节点任务所发起的,在主节点1上可执行主节点任务和从节点任务,可控制整个总线网络和协议;所谓的主节点任务指在主节点1上运行的,用于控制总线上所有的通信,负责报文的进度表、发送报头的任务。所谓从节点任务指从节点2从事的任务;但主节点1也会执行从节点任务。一般主节点任务包括定义传输速率,发送同步间隙、同步场、标识符场、监控并通过检查校验和验证数据的有效性等。而节点接收来自主节点任务的标识符,根据该标识符决定做什么,比如接收收据、发送数据或者什么都不做。
在LIN总线上发送的信息,有长度可选的固定格式。每个报文帧都包括2、4或8个字节的数据以及3个字节的控制、安全信息(同步场、标识符场和校验场)。通过主节点1控制单元中的从节点任务,数据可以被主节点1控制单元发送到任何从节点2控制单元。相应的主节点1标识符可以触发从节点-从节点通信。
为便于理解,下面对报文帧进行更详细的解释说明。一般报头包含同步间隙、同步场和标识符场;一般响应包括数据场和校验和场构成;报文帧之间有帧间间隔分隔;报头与响应之间有帧内响应空间分隔;同步间隙用来标识报文的开始,由主节点1发送;使得所有的从节点任务和总线时钟信号同步。同步场包含了时钟的同步信息,格式为0x55,表现为8个位定时中有5个下降沿(隐性到显性的跳变)。标识符场定义了报文的内容和长度,包括6个标识符位和2个标识符奇偶校验位,且在标识符位中定义了数据场的数据长度。
工作时,主节点1采集本地各控制开关的状态并接受CAN总线上的远程信息,据此产生控制指令,并将指令转换为LIN报文帧通过LIN网络发送给相应从节点2,从节点2接收到与自己相关的报文帧后,对报文帧进行拆封、解读,然后根据获得的指令控制相应的执行器动作,从而实现对各部件的控制。同时,在需要时从节点2分别将其控制部件所处状态反馈给主节点1,主节点1再将该状态信息通过CAN总线发送给其他控制单元。
如前述背景技术中提到,若采用传统方式,由于其将每个节点的通信周期设置为固定通信时间Tslot固定在主节点1的内部软件代码中,导致每次都需要采用修改软件代码的方式才能实现调度表调度周期的修改,使得修改过程复杂、代码更改频繁,且每次都要进行大量的重复工作。为此,需要对其修改方法进行优化,下面将给出具体的优化后的调度周期修改方案。
如图6所示流程图,本例公开了一种LIN通信调度设置方法,包括如下步骤:
步骤S1:在LIN网络主节点上,将LIN网络中各个节点的通信周期设置为变量,并在所述主节点上配置诊断配置服务;
步骤S2:当需要修改LIN通信调度的调度周期时,通过所述诊断配置服务修改所述各个节点的通信周期;
步骤S3:根据修改后的所述各个节点的通信周期,获得修改后的所述LIN通信调度的调度周期,以便所述主节点根据修改后的所述调度周期进行调度。
根据LIN协议的规定,每个节点的通信周期是一致的,即相同的。各节点的通信周期叠加即可获得调度表的调度周期Tschedule,即调度表的调度周期Tschedule是这样一个参数,根据节点的通信周期叠加获得。每个节点只能占用一个通信周期,因而不能通过修改节点个数的方式达到修改调度表的调度周期Tschedule的目的。若要修改调度表的调度周期Tschedule,只能对各节点的通信周期进行修改。如图2、图3中所示,所述节点的通信周期包括主节点1发送的报头时间、所述从节点2的响应时间及系统误差时间。
所述步骤S1中“在LIN网络主节点上,将LIN网络中各个节点的通信周期设置为变量”具体为:在所述LIN网络中主节点1中,将所述通信周期设置为可修改参数:可变通信时间Vslot,将所述可变通信时间Vslot以变量形式存储在主节点的EEPROM(英文名称:Electrically Erasable Programmable Read-OnlyMemory,中文名称:电可擦可编程只读存储器)中。
所述“并在所述主节点上配置诊断配置服务”具体并在所述主节点1的软件代码中,加入所述诊断配置服务的代码,运行该代码即可实现该诊断配置服务的功能。
设置该可变通信时间Vslot为变量时,一般在主节点1的软件代码开发过程中将其存储在EEPROM中,并在主节点1的软件代码开发过程中加入所述诊断配置服务的代码。
优选地,在主节点1的调度表开发过程中,预先将调度表中设置的可变通信时间Vslot赋予一默认值,使得整个调度表完整,能够被主节点1用来调度实现LIN通信。
所谓的诊断配置服务为ISO14229标准(统一诊断服务)中定义的诊断配置服务功能。集成诊断配置服务后,便支持通过诊断命令配置时间参数功能,以实现对节点通信周期的修改。该ISO14229标准中定义的服务包括很多,比如清故障信息(Clear Diagnostic Information,代码$14)、读故障码信息(Read DTCInformation,代码$19)、根据标识符写数据(Write Data By Identifier,代码$2E)等等。如下表1所示,本例所述的诊断配置服务为根据标识符写数据,如表1中所示,DID为诊断标识符(Diagnostic Identifier)的缩写,表中所列举数值$0100是十六进制表示的2个字节(byte)数值,仅仅为举例所用,其它2个字节的数值均可使用,如$0101,$1100等。不同的数值表示不同的变量,本例中用$0100表示变量可变通信时间Vslot。该数据定义中0x00-0xFF表示该变量Vslot可赋值的范围。表示该变量的参数值可以在十六进制表示的00-FF的范围内变化。
表1诊断配置服务代码表
所述步骤S2具体为:“当需要修改LIN通信调度的调度周期时”具体为:当发现主节点1的调度表的调度周期不满足实际通信需要时(即其调度周期不满足通信的实时性时,或者描述为当前的所述可变通信时间Vslot不满足LIN网络通信时间的要求时),此时即需要修改所述调度表的调度周期。比如,假设当前的可变通信时间Vslot设置为50ms(毫秒),结果发现经该LIN总线控制的车窗玻璃并未按照发出的控制命令实时下降,而是经过了若干延时后,该车窗玻璃才下降,这样即表示在LIN通信过程中,其调度周期过长,需要进行修改,比如需要将其可变通信时间修改为25ms,才满足该LIN通信的实际需求。
如图5所示,当发现需要修改其调度周期时,所述主节点1通过CAN总线外接故障诊断设备3;通过所述故障诊断设备3向主节点1发送参数配置命令;
所述主节点1接收所述参数配置命令,然后通过集成在所述主节点1中的诊断配置服务的代码修改所述可变通信时间Vslot。
因为该参数配置命令需要对可变通信时间Vslot进行修改,因此,所述参数配置命令包括对应所述可变通信时间Vslot的诊断标识符及所述可变通信时间Vslot将修改的目标参数值。
所述的参数配置命令的代码格式具体为042E YY YY xx AA AA AA,其中,04为有效数据长度,2E为根据标识符写数据,YY YY为对应所述可变通信时间Vslot的诊断标识符,xx为所述可变通信时间Vslot将修改的目标参数值,AAAA AA为填充数据,所谓填充数据指当需要修改的目标参数值不够长,导致还存在空余字节时,采用该填充数据填充所述空余字节,以使该代码完整的无意义数据。比如,通过所述故障诊断设备3向主节点1中写入代码042E0100xx AAAA AA,即表示将通过根据标识符写数据的方式实现数据的写入,其中诊断标识符为0100(代表可变通信时间Vslot),其需要修改的参数为xx(对应可变通信时间Vslot的目标参数值)。该xx的值由上述表1中的数据定义给出。通过此条命令,便可以修改可变通信时间Vslot的目标参数值,从而修改整个调度表的调度周期。
该步骤S3具体为:设LIN网络中节点个数为N,则修改后的所述LIN通信调度的调度周期Tshedule=N*Vslot。比如,如图5所示,假设包括主节点1在内,共有4个节点,则N等于4,当根据需要将各节点的可变通信时间Vslot设置为25ms,则调度表的调度周期Tschedule为100ms。
步骤S1的主要作用是将通信周期将原来的常量设置为变量,使各节点的通信周期可通过赋值的方式进行修改,使得后续需要修改各节点的通信周期和调度表的调度周期Tschedule时,无需每次都对主节点1内部的软件代码进行修改、测试等。同时,由于在该主节点1内配置了诊断配置服务,提供了通过该诊断配置服务修改参数的功能。步骤S2则根据需要,当需要对其通信周期进行修改时,则可通过集成在主节点1中的诊断配置服务修改节点的通信周期。步骤S3则通过将各节点的通信周期叠加的方式,获得调度表的调度周期。
综上,采用本例提供的LIN通信调度设置方法,由于在主节点内将各个节点的通信周期设置为变量存储在EEPROM内,并在其中配置诊断配置服务。因此当后续需要对调度表的调度周期进行修改时,无需修改软件代码,只需通过外接故障诊断设备,通过该故障诊断设备向主节点发送参数配置命令,即可修改各节点的通信周期,进而实现调度表的调度周期修改。调度周期的修改更加简单,易于实现,无需频繁修改代码,防止了大量重复工作的出现。大大减少通过修改代码来实现调度表调度周期的更改所带来大量的修改、测试工作,缩短了整个LIN网络开发的周期时间,以便适应不同试验场景、不同车型或是不同车载零部件配置的需要。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。