通信系统 工业应用领域
本发明涉及的是一个执行数据通信的通信系统,用于例如在主设备(例如测试器这样的外部设备)和从属设备(例如发动机控制器或传输控制器之类的电子控制设备)之间的诊断。
现有技术
车辆电子学的实现在这些年来是显著的,在车辆的各个领域的车载设备,包括发动机和传动,由微处理器的应用在电子化方面得到高度发展。因此,这些车载设备的可控制性得到了极大提高,但是,相反地,这些车载设备的故障诊断却变得日益复杂。
因此,在许多车载设备上加了自诊断功能,并且除了直接改进车载设备的控制性以外,还对日益复杂的车辆系统诊断作了许多改进方法,像对车载设备和控制设备故障诊断的改进;或将系统作如下的改进:
(a)把这些车载电子设备作为从属设备,通常把这些从属设备连接到一个作为主设备的外部设备上,也就是说故障诊断测试器上,执行较高程度的故障诊断,并根据该故障诊断测试器的支持分析诊断数据;
(b)在这些车载电子控制设备中间形成一条通信路径,将这些设备中的其中一个作为主设备,其它设备作为从属设备,并且通过作为主设备的电子控制设备对所有其它的电子控制设备集中地执行故障诊断等操作。
附带指出,存在一些设备,它们执行一对一的数据传输,也就是说,其中,作为像前面(a)中的通信系统的故障诊断测试器从多个车载电子控制设备中选择一个电子控制单元(下面称为ECU1)进行测试,此外,还给ECU1发送一个请求诊断的消息;与此对应ECU1连续发送最新的数据包(大量数据)给故障诊断测试器作为对上述请求消息的响应消息,而故障诊断测试器根据这些连续发送的数据执行诊断。
例如,一个故障诊断测试器从车载电子控制设备(如发动机控制器、传动控制器等)中选择一个发动机控制设备(ECU1),并发送一个诊断用地请求消息到该发动机控制设备,响应地,发动机控制设备连续发送多个关于发动机转速和车速的最新数据包到故障诊断测试器,作为对上述请求消息的响应消息,而故障诊断测试器根据这个连续发送的数据执行诊断。
这里,在上面叙述的通信系统中,在故障诊断测试器和ECU1之间的数据通信是通过一条数据线和连接器实现的。这里,如果在执行对ECU1的操作根据从例如故障诊断测试器来的消息而起动后,上述连接器被释放的情况下,ECU1则没有设备来测定这种释放状态,因此这种状态不能被测知。
因此,ECU1错误地识别到故障诊断测试器仍然连接着,其结果是,ECU1在连接器即将断开之前继续其控制操作。也就是说,最新数据包继续被连续地发送到故障诊断测试器。
为此,在日本专利申请公开号为平3-124141中公开了一种解决该问题的通信系统设备。根据该系统,故障诊断测试器能周期地发送继续请求消息。相应地,当ECU1在完成对上述继续请求消息的接收后一预定的时间內接收一个后继的继续请求消息时,ECU1视自身仍然连接在故障诊断测试器上,并且继续上述的连续发送。反之,即使在对继续请求消息接收以后,上述预定时间过去之后仍未接收到后继的继续请求消息,则上述连接器被认为断开,停止上述继续发送。
附带指出,在上述通信系统中,分别独立地提供了从故障诊断测试器到ECU1发送请求消息的通信线和从ECU1到故障诊断测试器发送响应消息的通信线。因此,无论上述连续请求消息发送的定时如何,该继续请求消息不与从ECU1在通信线上发出的响应消息碰撞。
然而,在上述请求消息和响应消息是由同一条通信线发送的场合,当一个继续请求消息以一个合适的定时发送时,例如在上述通信系统中那样,也可能从故障诊断测试器发送一个继续请求消息,同时ECU1发送一个响应消息,依情况不同,这些消息可能在通信线上碰撞。
在这一点上,对构造以上述单一通信线实现消息交换的通信系统,国际标准ISO9141-2中规定了从完成对请求消息的发送到开始发送初始响应消息之间的自由等待时间(P2),从完成发送一个特定的响应消息到开始发送一个后继的响应消息之间的自由等待时间(P2),和从完成发送一个最后的响应消息到开始发送一个后继的请求消息之间的自由等待时间(P3)等等,旨在使各自的消息不会碰撞(见图16)。
根据该国际标准,上述时间P2规定为0到50ms或25到50ms,而上述时间P3规定为55ms到5s,也就是说,在附图16的例子中,当故障诊断测试器完成发送请求消息1之后,ECU1在不晚于50ms之后开始发送响应消息1。相应地,当完成发送响应消息1之后,ECUl在不多于50ms之后开始发送响应消息2。
另外,故障诊断测试器要确认响应消息2(在这一情况下,这是最后响应消息)已发送完毕,以及该通信路径已经处在开启状态下延续55ms或更长时间,则在不晚于5ms之后开始发送请求消息2。
然而,当试图不加改变地把上述国际标准的想法应用于一个像上述周期地从连接在一条单一通信线上的故障诊断测试器发送一个继续请求消息的通信系统时,会产生下述问题。
亦即,使用上述国际标准,在发送一个特别的响应消息后有一个后继发送的响应消息的场合,该后继响应消息的发送,在完成发送上述特别的响应消息之后的P2时间(不晚于50ms)之后开始。因此,如图17所示,当在有大量从ECU1来的响应消息时,该通信路径不管过去多少时间,也不为上述时间P3开启(不多于55ms之后),其结果是,不管过去多少时间,故障诊断测试器也不能发送一个继续请求消息。
其结果之一是产生了这样的问题,故障诊断测试器完成请求消息1的接收后不能在上述预定的时间(图17中T0)之內发送一个继续请求消息,于是ECU1错误地识别到上述连接器的连接已经断开,而在这一时间TO后,完成响应消息的发送。
另外,不只是对于像上述(a)的系统,类似地对于像上述(b)这样的系统也会发生这样的问题。
相应地,鉴于上述问题,本发明的第一个目的是提供一个通信系统,用一条单一通信线将主设备和从属设备连接起来,其中主设备构造为在通信线上发送一个请求消息,引起从从属设备连续地发送响应消息,随之,此外,主设备还要在从发送该请求消息开始的一段预定的时间內发送一个继续消息,使得从属设备的连续发送得以继续;而从属设备构造为,当接收到该请求消息或继续消息时,从属设备在从接收时开始的一段预定的时间內在通信线上连续发送消息;主设备另外能在通信线上发送继续消息而不会与在该通信线上连续发送的响应消息碰撞。
另外,甚至对于像上述叙述的、希望在ECU1正连续地发送响应消息时,通过故障诊断测试器给ECU1发送一个中止请求消息的场合,在上述国际标准中规定,该中止请求消息在从完成响应消息的发送后上述时间P3之后发送,因此,如果如上上述,不管过去多长时间,该通信路径在时间P3(至少55ms或更长)均不打开,就会产生中止消息不能发送到ECU1的问題。
另外,不只像上述(a)的系统,而且相似地,像上述(b)中的系统也会出现这种问题。
相应地,鉴于上述问题,本发明的第二个目的是提供一个通信系统,它用一条通信线将主设备和从属设备连接起来,其中主设备构造为在通信线上发送一个请求消息,引起从属设备连续发送响应消息,并且,在发送该请求消息后,也发送一个中止消息使得停止连续发送;以及从属设备构造为,在接收到请求消息时,该从属设备在从接收时起的一段预定的时间內在该通信线上连续发送响应消息,并且,在收到中止消息后,停止连续发送;另外,主设备可以在通信线上发送中止请求消息而不致与在该通信线上连续发送的响应消息碰撞。
发明公开
为达到上述第一目的,根据权利要求1的发明是一个通信系统,包括:
一个主设备(5)和一个从属设备(1),它们由一条双向传输通信线连接,其中:
该主设备构造为在通信线(3)上发送一个请求消息,引起该从属设备(1)连续发送响应消息,并且,在从发送该请求消息开始的一段预定的时间(T0)內还要发送一个继续消息,使得连续响应消息的发送得以继续;和
该从属设备构造为,当收到请求消息或继续消息后,该从属设备(1)在从接收开始的一个预定的时间(T0)內在该通信线上连续发送响应消息,其中进一步:
该从属设备构造为,在该从属设备(1)连续发送响应消息时,该从属设备(1)确认该通信线(3)持续开启一个第一空闲时间(P2’)或更长时间后,发送一个后继的响应消息;和
主设备(5)构造为在确认通信线(3)持续开启不小于第二空闲时间(P3’)之后发送继续消息,第二空闲时间(P3’)小于第一空闲时间(P2’)。
进一步,根据权利要求2的发明是一个根据权利要求1的一个通信系统,其中:
该从属设备包括:
一个判定第一空闲时间(步骤338)的设备,其判定通信线(3)是否持续开启第一空闲时间(P2’)或更长时间;和
一个发送响应消息(步骤339)的设备,它在当由该判定第一空闲时间(步骤338)的设备确认通信线开启第一空闲时间(P2’)或更长时间之后,发送后继响应消息,进一步:
主设备包括:
一个判定逝去时间(步骤219)的设备,它判定在完成发送请求消息或继续消息后逝去的时间是否不小于比预定时间(T0)短的一个预定的第二时间(T1);
一个设定一个参考值(步骤220)的设备,它在由逝去时间判定设备判定(步骤219)已过去第二预定时间(T1)或更长时间后,为判定通信线(3)的开启时间而设定一个数值为第二空闲时间(P3’)的参考值;
一个判定第二空闲时间(步骤222)的设备,它判定通信线(3)持续开启的时间是否达到参考值或更长时间;和
一个发送继续消息(步骤223)的设备,用于在判定第二空闲时间(步骤222)的设备判定通信线(3)已持续开启了参考值(P3’)或更长时间后,发送该继续消息。
进一步,根据权利要求3的发明是一个根据权利要求1的通信系统,其中:
从属设备包括:
一个判定逝去时间(步骤342)的设备,它判定在完成发送请求消息或继续消息后逝去的时间是否不小于比预定时间(T0)短的第二预定时间(T1);
一个设定参考值(步骤316)的设备,用于在逝去时间判定设备判定(步骤342)已经过去第一预定时间(T0)或更长时间之后,为判定通信线(3)的开启时间,设定一个值为第一空闲时间(P2’)的参考值;
一个判定第一空闲时间(步骤338)的设备,它判定通信线(3)持续开启的时间是否为该参考值或更长的时间;和
一个响应消息发送(步骤339)的设备,它在判定第一空闲时间的设备判定(步骤338)通信线(3)已经开启了第一空闲时间(P2’)或更长时间之后,发送后继响应消息,其中进一步:
该主设备(5)包括:
判定第二空闲时间(步骤222)的设备,它判定通信线(3)持续开启的时间是否已经达到参考值(P3’)或更长时间;和
发送继续消息(步骤223)的设备,它在由判定第二空闲时间(步骤222)的设备判定通信线(3)已经持续开启了第二空闲时间(P3’)或更长时间后,发送继续消息。
进一步,为实现上述第二目的,根据权利要求4的发明是一个通信系统,包括:
一个主设备(5)和一个从属设备(1),它们由一条双向传输通信线(3)连接,其中:
主设备(5)构造为能通过通信线(3)发送一个请求消息,引起从属设备(1)连续发送响应消息,此外,在发送该请求消息后,也能发送一个中止消息,使该连续发送中止;和
从属设备(1)构造为,当接收到请求消息时,从属设备(1)在接收后的一段预定时间(T0)內连续发送响应消息,并在接收到中止消息时,停止该连续发送,其中进一步:
从属设备(1)构造为,当在该从属设备(1)连续发送响应消息时,在确认通信线(3)已经持续开启第一空闲时间(P2’)或更长时间之后,该从属设备(1)发送一个后继的响应消息;和
主设备(5)构造为在确认通信线(3)已经持续开启不小于第二空闲时间(P3’)之后,发送中止消息;第二空闲时间(P3’)小于第一空闲时间(P2’)。
进一步,根据权利要求5的发明是根据权利要求4的一个通信系统,其中:
从属设备(1)包括:
判定第一空闲时间(步骤338)的设备,它判定通信线(3)是否已经持续开启了第一空闲时间(P2’)或更长时间;和
发送响应消息(步骤339)的设备,它在由第一空闲时间判定设备判定(步骤338)通信线(3)已经开启了第一空闲时间(P2’)或更长时间之后,发送后继响应消息,其中进一步:
主设备(5)包括:
判定第二空闲时间(步骤222)的设备,它判定通信线(3)是否已经持续开启了第二空闲时间(P3’)或更长时间; 和
发送中止消息(步骤223)的设备,它在由第二空闲时间判定设备判定通信线(3)已经持续开启了第二空闲时间(P3’)或更长时间后,发送中止消息。
进一步,根据权利要求6的发明是一个根据权利要求1到5中任何一个权利要求的通信系统,其中进一步:
该系统有多个从属设备;
主设备(5)构造为能从该多个从属设备(1和2)中选择一个所希望的从属设备(1),并且还能发送请求消息或继续消息或中止消息到这个选中的从属设备(1)上;和
所选择的从属设备(1)构造为能连续发送响应消息。
另外,上述几种设备的括号中的符号指出与特定实现设备的相应关系,这些特定设备将在后面加以叙述。
根据权利要求1中叙述的发明,主设备在通信线上发送请求消息时,当从属设备接收该请求消息时,从属设备从接收开始在一个预定时间內在通信线上连续发送响应消息。
这里,从属设备以下述方式进行该连续发送,其中当该从属设备在通信线上连续发送响应消息时,在发送一个特定的响应消息后,通信线已经持续开启了第一空闲时间或更长时间时,该从属设备发送一个后继响应消息。与此相对,主设备构造为当通信线已经开启第二空闲时间时发送继续消息,第二空闲时间小于第一空闲时间。
以这种方式,因为作为主设备发送继续消息的定时的第二空闲时间小于作为从属设备发送后继响应消息定时的第一空闲时间,因此当主设备在从发送请求消息起的一预定时间內发送继续消息时,主设备可以在从属设备发送后继响应消息之前,发送该继续消息。
因此,即使在连接主设备和从属设备的通信线是由单一线路构成的场合,主设备也能在发送请求消息后的预定时间之內在通信线上发送继续消息,而不会引起上述两种消息在该通信线上的碰撞。
另外,根据权利要求2的发明是在权利要求1中叙述的发明的一个更为特定的实施例,根据该发明,当由逝去时间判定设备判定,从主设备完成发送请求消息或继续消息之后已经过去第二预定时间或更长时间时,则主设备的参考值设定设备就将参考值设定为第二空闲时间(小于第一空闲时间)。
相应地,对于主设备,当由第二时间判定设备判定通信线已经持续开启了参考值(等于第二空闲时间)或更长时间,则继续消息发送设备发送继续消息。与此相对,对于从属设备,当由第一空闲时间判定设备判定通信线已经持续开启了第一空闲时间(大于第二空闲时间)或更长时间,则响应消息发送设备发送后继响应消息。
以这种方式,当主设备完成请求消息发送后过了第二预定时间时,主设备设定参考值为第二空闲时间,作为发送继续消息的定时,第二空闲时间小于作为从属设备发送后继响应消息定时的第一空闲时间,因此,主设备可以在从属设备发送后继响应消息前发送继续消息。
此外,根据权利要求3的发明也是在权利要求1中所述发明的更为特定的实施例,根据该发明,当由逝去时间判定设备判定,从主设备发送请求消息或继续消息后已经过了第二预定时间或更长时间时,从属设备的参考值设定装置就设定参考值为第一空闲时间(大于第二空闲时间)。
相应地,对于从属设备,当由第一空闲时间判定设备判定,通信线已经开启参考值(等于第一空闲时间)或更长时间时,响应消息发送设备发送响应消息。与此对照,对于主设备,当通信线已经持续开启第二空闲时间(小于第一空闲时间)或更长时间时,继续消息发送设备发送继续消息。
以这种方式,当主设备完成发送请求消息后过去了第一预定时间,从属设备就设定参考值为第一空闲时间,作为后继响应消息发送的定时,该时间大于作为主设备发送继续消息的定时的第二空闲时间,因此,主设备可以在从属设备发送后继响应消息之前发送继续消息。
另外,在权利要求4中叙述的发明的场合,因为作为主设备发送中止消息的定时的第二空闲时间小于作为从属设备发送后继响应消息的定时的第一空闲时间,所以主设备可以在从属设备发送后继响应消息之前发送中止消息。
因此,即使在连接主设备和从属设备的通信线是由一条单一线路构成的场合,主设备也能在该通信线上发送中止消息,而不会使上述两种消息在该通信线上互相碰撞。
另外,根据权利要求5的发明是在权利要求4中叙述的发明的一个更特定的实施例,根据该发明,对于从属设备,当由第一空闲时间判定设备判定通信线已经持续开启了第一空闲时间或更长时间时,响应消息发送设备发送后继响应消息。与此相对照,对于主设备,当由第二空闲时间判定设备判定通信线已经持续开启了第二空闲时间(小于第一空闲时间)或更长时间的话,中止消息发送设备就发送中止消息。
以这种方式,因为作为主设备发送中止消息定时的第二空闲时间小于作为从属设备发送后继响应消息定时的第一空闲时间,因此主设备就能在从属设备发送后继响应消息之前发送中止消息。
另外,在权利要求6中叙述的发明中有多个从属设备,但是主设备可以从这些多个从属设备中选择一个任意的从属设备,在主设备和该选择的从属设备之间执行数次消息交换,其方式如同在上述权利要求1到5中的发明中的那样。
附图的简要说明
图1是本发明的第一和第二实施例的总结构图;
图2是表示第一实施例的最新数据包连续发送诊断处理总流程图的时间图;
图3是表示第一实施例的最新数据包连续发送诊断处理总流程图的时间图;
图4是表示第一和第二实施例的组成几种消息的几个字节的位格式的时间图;
图5是表示第一和第二实施例的串行输入中断处理的流程图;
图6是表示第一和第二实施例在主设备方面的一个主子例程的流程图;
图7是表示第一实施例在主设备侧的主子例程的流程图;
图8是表示第一和第二实施例在从属设备侧的一个主子例程的流程图;
图9是表示第一和第二实施例在从属设备侧的一个主子例程的流程图;
图10是表示第一和第二实施例在从属设备侧的一个主子例程的流程图;
图11是表示第一实施例在从属设备侧的一个主子例程的流程图;
图12是表示第二实施例的最新数据包连续发送诊断处理总流程图的时间图;
图13是表示第二实施例的最新数据包连续发送诊断处理总流程图的时间图;
图14是表示第二实施例在主设备侧的一个主子例程的流程图;
图15是表示第二实施例在从属设备侧的主子例程的流程图;
图16是表示按照国际标准ISO9141-2的通信规程的一个时间图;
图17是表示把上述国际标准的想法应用于最新数据包连续发送处理场合下,一个通信序列的时间图。
本发明的最佳实现方式
下面参考图1到图11叙述根据在权利要求1、2或4到6中叙述的本发明的最佳实施例,在这个实施例中该发明应用于一个车辆诊断系统。
在图1中示出的本实施例的系统中,多个电子控制单元(发动机控制器1和传动控制器2等)作为从属设备安装在车辆上,与作为外装主设备的故障诊断测试器5,通过一条单一的通信线3和诊断连接器4连接。
另外,在该连接着的故障诊断测试器5和上述车载电子控制器之间使用与国际标准ISO9141-2一致的协议作为它们的通信方法。下面将详细叙述这几个单元。在这里,取发动机控制器1作为车载电子控制器的示范例来叙述其结构和功能。
发动机控制器1构造为具有CPU11、ROM12、RAM13、输入电路14、输出电路15、A/D转换电路(下面称“ADC电路”)16、通信电路17,等等。其中,通信电路17是为驱动通信线3的一个输入/输出缓冲存储器电路。
另外,主要由从像测定发动机转速的传感器(特别是曲柄角传感器)21、车速传感器22等这样的传感器的脉冲信号输出组成的传感器信号,被输入到输入电路14,由从像装备在车上不同位置的节气阀传感器23、气流表24、水温传感器25、O2传感器26等这样的传感器输出的模拟信号形成的传感器信号,被输入到ADC电路16上。
每一个这样的信号作为相应于其测定值的传感器数据存储在RAM13的一个数据区中,并由CPU11用作计算燃料喷射量和点火定时的运算值。另外,除上述数据区之外在RAM13中还为几个计数器,几个缓冲存储器和几个执行标志等辟出各自的存储器区,计数器,缓冲存储器和执行标志后面将会叙述。
另外,CPU11部分按照事先存储在ROM12中的控制程序,根据采集在RAM13中的传感器数据执行预定的计算,决定当时的燃料喷射量和点火定时,此外,还与故障诊断测试器5进行通信消息交换,(这在下面将叙述),并通过这些消息执行特定的故障诊断。
另外,由CPU11确定的燃料喷射量送给输出电路15并通过该输出电路15,和上述相应于与该测定的燃料喷射量的对应的上述信号被输出到发动机控制设备27。例如燃料喷射阀可以作为发动机控制设备27。 同时,故障诊断测试器5也有一个相似于上述电子控制器的结构,包括一个CPU、ROM、RAM、通信电路等等。相应地,当通过安装在故障诊断测试器5外表面上的控制设备5a(特别是键盘)建立了一个预定的诊断方式时,相应于该诊断方式的一个请求消息(下面将叙述)就被通过诊断连接器4送往几个电子控制器。
此外,在故障诊断测试器5上,对应于上述请求消息的响应消息的內容作为诊断结果以列表、图形等方式为测试人员显示在显示设备上(未示出)。
另外通过点火开关18从蓄电池19供给故障连接器4电源,且当故障诊断测试器5以这种方式与车载电子控制器通电时,电源通过该诊断连接器4也供给故障诊断测试器5。
在本实施例的通信系统中,故障诊断测试器5从几个上述电子控制器中选择一个,并发送一个请求消息到该选定的控制器;与此相对,上述选定的控制器连续地发送最新数据包(多个数据)到故障诊断测试器5作为相应于上述请求消息的响应消息,同时故障诊断测试器5对最新数据包连续发送进行诊断处理,这种处理是根据该连续发送的数据以对上述选定控制器进行诊断的方式的一对一的数据通信。
在图2和图3中以时间图示出最新数据包连续发送故障处理总流程图。这里叙述选择发动机控制器1作为上述选定控制器的例子。此外,采用在图4中表示的8位的NRZ(不归为零)方法作为构成几种消息的几个字节位格式,下面就会叙述。相应地,分别在其开始处接一个逻辑L(低)电平开始位,在其终止处接续一个逻辑H(高)电平终止位,以便可以确认这些字节的存在。
当操作员操作键盘5a,建立一个最新数据包方式以对发动机控制器1进行最新数据包连续发送诊断时,故障诊断测试器5发送一个请求消息1,请求连续发送最新数据包。
另外如图2中所示
- “这个消息是一个请求消息的信息($68),”
- “这个消息的送达地是发动机控制器1的信息($6A),”
- “这个消息的始发地是故障诊断测试器5的信息($F1),”
等信息溶和在该请求消息1头部的3个字节中。
另外
- “请求最新数据包定义的方式显示($A1),”
- “请求按要求设定要发送的数据包ID($01),”
- “分别请求发动机转速($0C和$FF)、车速($0D)和进入空气温度($0F)的参量ID,”
结合在随后的数据字节中,最后续有检验和(以下称CS)。
同时,从完成接收该请求消息1过后P2时间(根据本实施例为28ms),发动机控制器1开始发送一个响应消息,指明正在定义最新数据包。也就是说,从完成请求消息1的CS终止位之后的时间P2后发送上述响应消息的一个开始位。
另外,
- “这个消息是响应消息的信息($48),”
- “这个消息的送达地是故障诊断测试器5的信息($6B),”
- “这个消息的始发地是发动机控制器1的信息($10),”
等结合在该响应消息的头部3字节中。
另外
- “执行最新数据包定义的方式显示($E1),”
- “请求按要求设定要发送的数据数据包ID($01),”
- “分别指示发动机转速($0C和$FF)、车速($0D)和进入空气温度($0F)的各参量ID,”
结合在后续的数据字节中,最后续有检验和。
相应地,在完成上述响应消息接收后的时间P3(根据本实施例为55ms)之后,故障诊断测试器5发送请求消息2,请求开始最新数据包的连续发送。也就是说,在完成响应消息的CS终止位之后的时间P3之后发送上述请求消息2的一个开始位。
进一步,与上述请求消息1的头部3字节相同的数据结合在该请求消息2中的头部3字节中。
另外,
- “请求连续发送最新数据包定义的方式显示($A2),”
- “请求按要求设定要发送的数据的数据包ID($01),”
结合在后续的数据字节中,最后续有检验和。
相应地,在完成请求消息2的接收之后的时间P2’(根据本实施例为40ms)后,发动机控制器1针对该请求消息开始发送一个初始响应消息。也就是说,在从完成请求消息2的CS终止位开始过去时间P2’之后发送上述初始响应消息的一个开始位。
进一步,和上述响应消息的头部3字节相同的三个字节的数据结合在响应消息的头部3个字节中。
另外,
- “执行最新数据包连续发送的显示方式($E1),”
- 请求按要求设定要发送的数据的数据包ID($01),”
- 分别指示发动机实际转速(作为一个物理量指示4096转/分的$4000),实际车速(作为一个物理量指示100KM/分的$64)和实际进入空气温度(作为一个物理量指示20°的$3C)
结合在后续的数据字节中,最后续有检验和。
之后,发动机控制器1开启一段时间P2’,如图2中所示,且如上所述,连续发送含有发动机转速、车速和进入空气温度等最新数据的响应消息到故障诊断测试器5。
同时,从完成发送前面的请求消息过去预定时间T1(小于T0)时,故障诊断测试器5确认,在时间P3’內通信线3持续处于开启状态(通信线3在逻辑上在相同时间或更长时间內处于高电平状态),并发送继续请求消息3,如图3所示。根据本实施例,该继续请求消息3与请求消息2取为相同。另外,上述时间P3’建立为小于上述时间P2’,在本实施例中为30ms。
此外,根据本实施例,当由上述方法发送继续请求消息3之后,建立从完成发送请求消息2到完成发送继续请求消息3(取为T2)的时间小于图17中所示的时间T0。也就是说,以这种想法建立时间T1,后继的继续请求消息在上述时间T0之內发送,由于这个原因,发动机控制器1可以继续连续发送响应消息。
同时,当发动机控制器1接收到上述继续请求消息3时,发动机控制器1将一个测量上述时间T0的计数器(一个超时计数器,将在后面结合步骤317说明)清零,并重新开始上述连续发送。
另外,当操作员操作键盘5a,建立一种中止对发动机控制器1进行最新数据包连续发送诊断处理的模式时,故障诊断测试器5发送中止请求消息4,请求中止最新数据包连续发送。在这种情况下,中止请求消息4是在发动机控制机1完成对响应信息的发送后的P3’时间后发出的,这与继续请求消息3相似。
此外,相同于上述请求消息2的头部3字节的数据放在在该中止请求消息4的头部3个字节中。
相应地,
- “请求中止连续发送最新数据包的方式显示($A3),”
放在其后续一个数据字节中,最后续以一个检验和。
在接收到该中止请求消息4之后的P2时间后,发动机控制器1针对该中止请求消息4只发送一个响应消息。
另外,与上述几个响应消息头部3个字节相同的数据放在在响应消息的头部3个字节中。
相应地,
- “中止连续发送最新数据包的方式显示($E3),”
放在其后续的一个数据字节中,最后续以一个检验和。
另外,当在执行上述最新数据包连续发送诊断处理期间拆除诊断连接器的连接时,故障诊断测试器5不加改变地继续周期地发送继续请求消息,但是发动机控制器1却接收不到该继续请求消息,因为诊断控制器4已被拆除。结果是,这时停止连续发送响应消息,因为发动机控制器1在上述时间T0内接收不到后继的继续请求消息。
上面参考图2和图3叙述了根据本实施例的最新数据包连续发送诊断处理的总流程图,而在下面参考图5到图11叙述执行上述处理的特定的方法。
首先参考图5到图7叙述在故障诊断测试器5处对请求消息1到4(图2和图3)的发送处理。其中,图5是表示通过CPU一个串行输入中断功能实现的中断处理的流程图,该中断功能旨在可靠地从从属设备接收一个发送定时未知的响应消息,图6和图7是表示一个主子例程的流程图,该主子例程在每一基本循环中都被驱动。
附带指出,在每次完成接收从从属设备来的信息的一个字节时,在步骤101激活该串行输入中断功能,而在步骤102,故障诊断测试器5清除接收中断请求标志并准备接受后继字节的一个接收中断请求。相应地,在步骤103判定接收到的字节是否是该消息的第一字节,如果是确定第一字节,则在步骤104将接收到的数据存储到接收缓冲存储器(1)中。相应地,在步骤105,将接收计数器设为1,在后继步骤112,清除用于测量通信线3的开启状态的连续时间的一个空闲计数器,然后转出该中断处理。另外,该空闲计数器相应于由一个定时器(未示出)引起的每个时间中断(例如一个2ms的中断)递增1。
此外,如果步骤103判定的结果是第二字节或以后的字节,则在步骤106,接收计数器数值递增,由该数位可确定当前字节的号码。相应地,在步骤107,根据该接收计数器判定当前接收到的字节号是否超过11,超过的话,则视为异常,并在步骤108到110,设定通信出错标志,清除(l)到(m)的所有接收缓冲存储器,清除接收计数器,并转出该处理。
此外,如果在步骤107判定字节号未超过11,则把现在接收到的数据在步骤111存入接收缓冲存储器(m)中,随后,执行步骤112的处理,并转出该处理。
此外,除上述中断处理之外,故障诊断测试器5也执行图6和图7中所示的处理。
特别地说,首先在步骤201判定是否有来自键盘5a的诊断方式输入。因而,如果随即立即有操作员通过键盘操作输入的诊断方式,则在步骤201判定为“存在”, 而在其它情况判定为“不存在”。
相应地,如果在步骤201判定为“存在”,则在步骤202判定该输入诊断方式为何种方式。相应地,如果这里判定的方式是有关上述最新数据包连续发送诊断处理方式,则在步骤203判定,该方式是建立开始最新数据包连续发送的方式,还是中止该最新数据包连续发送诊断处理的方式。
如果在步骤203判定是前者,则在步骤204设定一个最新数据包正在执行标志(下面称为“正在执行标志”),它指示正在进行最新数据包连续发送诊断处理,而在随后的步骤205,设定方式(存储在RAM中)被置为A1,程序执行前进到步骤213。此外,如果在上述步骤203判定为后者,则在步骤206,上述设定方式被置为A3,程序执行前进到步骤213。
另外,如果在上述步骤201判定为“不存在”,则在步骤207,通过判定发送计数器(其在后面叙述)是否是0从而判定是否在发送请求消息后已建立一个后继的请求消息,相应地,如果判定发送计数器是0,也就是说,在发送请求消息后,未建立后继的请求消息,则在步骤208判定,正在执行标志是否置位。相应地,如果判定上述标志已置位,也就是说,最新数据包发送诊断处理的执行正在进行,则在步骤209判定当前设定的上述设定方式是何种方式。
如果在步骤209判定设定方式是上述A1,则在步骤210判定是否已完成相应于图2中的包定义请求消息1的一个响应消息的接收。进一步,在步骤210通过检验数据是否通过图5中的中断处理存储在接收缓冲存储器(1)中而判定是否完成响应消息的接收,并判定上述空闲计数器是否已经超过由上述国际标准规定的时间P1的最大值(20ms)。
相应地,如果在步骤210判定已完成接收,则在步骤211设定上述设定方式为A20,程序执行前进到步骤213。此外,如果在上述步骤209判定为A20或A2,则在步骤212设定设定方式为A2,程序执行前进到步骤213。
另外,当在步骤207判定为否,或当在步骤208判定标志位尚未置位,或当在步骤210判定尚未完成响应消息的接收,则执行跳转到图7中的步骤216。
在步骤213,相应于设定方式产生一个请求消息,无论该设定方式是在上述步骤205、206、211和212中的哪一处置位的。
特别地说,当在步骤205设定方式置为A1时,它表明后面打算发送的消息是包定义请求消息1,于是产生图2中所示包定义请求消息1。
另外,当设定方式在步骤206置为A3时,它表明后面打算发送的消息是中止请求消息4,于是产生图3中所示的中止请求消息4。
另外,当设定方式在步骤211置为A20时,它表明后面打算发送的消息是请求消息2,于是产生图2中所示的请求消息2。
另外,当设定方式在步骤212设定为A2时,它表明后面打算发送的消息是继续请求消息3,于是产生图3中所示的继续请求消息3。
另外,在步骤214,在步骤213产生的消息存储在发送缓冲存储器(1)到(n)中,并且,存储n到发送计数器,它指明该消息的字节数。也就是说,例如当在步骤213产生的消息是包定义请求消息1时,该消息存储在发送缓冲存储器(1)到(10)中,而10被存储在发送计数器中。
相应地,在图7的步骤216,判定上述发送计数器是否为0,如果为0,则该子例程跳出,不再继续处理。另外,当判定为非0,则在步骤217判定包“执行正在进行”标志是否已经置位,如果判定尚未置位,则将时间P3设定为标准值(55ms)。时间P3是在步骤222的一个判定参考值,其在后面叙述。
另外,如果在步骤217判定已置位,则在步骤218判定是何种设定方式。如果此处判定的设定方式为A1或A20,它表明后面打算发送的消息是包定义请求消息1或请求消息2,于是执行步骤221的处理。
另外,如果在步骤218判定设定方式为A3,它表明后面打算发送的消息是中止请求消息4,于是程序执行跳转到步骤220,而时间P3被设定为P3’(30ms)。时间P3是在步骤222的判定参考值,其在后面叙述。
另外,如果设定方式判定为A2,则表明后面打算发送的消息是继续请求消息3,于是在步骤219判定是否一个测量从完成发送请求消息2或继续请求消息3起的时间的时间计数器的值已超过在图2和图3中所示的T1。相应地,如果未超过,跳出该子例程,不再继续处理,如果已经超过,则执行步骤220的处理。
此外,上述时间计数器相应于由一个定时器(未示出)确定的一个时间中断(例如一个32ms的中断)向上以增量1计数。相应地,在步骤222判定上述空闲计数器是否超过在步骤220或步骤221设定的时间P3,如果未超过,跳出该子例程,不再继续处理;如果超过,程序执行前进到步骤223。
在步骤223,发送存储在发送存储器(1)到(n)中的请求消息,在后继步骤224,清除发送计数器。相应地,在步骤225,清除空闲计数器,也就是说,空闲计数器再次从零向上计数。相应地,在步骤226,判定包执行正在进行标志何时被置位,如果判定未置位,则跳出该子例程,不再继续执行;如果判定已置位,程序执行前进到步骤227。
在步骤227,判定为何种设定方式;如果在这里判定为A1,跳出该子例程,不再继续处理;如果判定为A3,则在步骤228,清除包执行正在进行标志并跳出该子例程。另外,如果判定为A20或A2,则在步骤229清除时间计数器,并跳出该子例程。也就是说,该时间计数器重新从零向上计数。
1到4的几个请求消息以图2和图3中所示的程式由上面叙述的图5到图7的处理发送。
下面参考图5和图8到图11叙述在发动机控制器1中的响应消息的发送处理(图2和3)。其中,图8到图11是一个主子例程流程图,它在每一基本回路中被驱动。
通过为可靠地从故障诊断测试器5接收发送定时未知的请求消息而设的CPU串行输入中断功能实现的中断处理在发动机控制器1中执行,另外,该处理与在图5中为故障诊断测试器5叙述的处理相同,因此省略其说明。
另外,在图8到图11中所示主子例程在发动机控制器1中驱动,而独立于上述中断处理。该子例程的执行步骤如下:首先,在步骤301通过判定在图5中说明的计数器是否为0从而判定发动机控制器1现在是否正在接收一个请求消息。
如果此时判定为是,也就是说,不在接收一个请求消息,执行跳转到图9中的步骤311;相反,如果否,也就是说,如果判定正在接收一个请求消息,则在步骤302通过判定上述空闲计数器是否超过由上述国际标准规定的时间P4的最大值(20ms)从而判定是否已经完成该请求消息的接收。
如果此时判定为未超过,也就是说,如果判定为仍在处理接收该请求消息,则执行跳转到步骤311;相反,如果超过,也就是说,如果判定为已完成接收请求消息,则执行后继步骤303到305的该消息的和校验。
在该和校验中,首先,在步骤303,根据接收计数器的计数器值确认接收到的消息的字节长度。相应地,在后继步骤304根据这一数字值计算存储在接收缓冲存储器(1)到(n-1)中存储的数据和,而在最后步骤305,判定该和值的低8位的数据是否与在接收缓冲存储器(n)中存储的数据即CS值匹配。
如果作为该和检验的结果判定为上述值不匹配,则认为异常,而在步骤306置一个通信出错标志,在步骤307,清除所有接收缓冲存储器,在步骤308清除接收计数器,然后将执行前进到图9中的步骤311。
另外,如果上述和检验的结果正常,则判定接收数据没有问题,而在步骤309把在接收缓冲存储器(1)到(n)中存储的数据复制到用于产生和发送响应消息的为处理使用的接收缓冲存储器(1)到(n)中。相应地,在后继步骤310把接收计数器类似地复制到用于产生和发送响应消息的处理用接收计数器中。相应地,执行转移到步骤307的处理。
在图9的步骤311,通过判定上述处理用接收计数器是否是0而判定是否紧跟着接收请求消息。如果此间判定为否,亦即并非紧跟着接收请求消息,程序执行前进到步骤312;相反,如果判定为是,程序跳转到步骤318。
在步骤312,判定接收缓冲存储器(1)到(3)中的內容,亦即该接收到的请求消息的消息头部是否正常。如果此间判定为异常,则在步骤313清除所有在处理用接收缓冲存储器(1)到(n)中存储的数据,并在后继步骤314清除上述处理用接收计数器,跳出该主子例程。
另外,如果步骤312判定为正常,则在后继步骤315判定在发动机控制器1中的包执行正在进行标志是否已置位。如果此时判定为已置位,执行前进到步骤316;如果判定为尚未置位,执行跳转到步骤318。另外,在打开点火开关18和电源开始供给发动机控制器1时的初始状态下,包执行正在进行标志关闭。
在步骤316判定处理用接收缓冲存储器(4)中存储的数据是否是A2。也就是说,判定现在已经接收到的请求消息是否是请求消息2或者继续请求消息3。如果这里判定为不是,执行跳转到步骤318,相反如果判定为是,则在步骤317清除测量上述时间T0(图2和图3)的超时计数器。
另外,上述超时计数器相应于由一个定时器(未示出)确定的一个时间中断(例如一个32ms的中断),向上以增量1计数。
也就是说,如果在步骤311判定为不是,并且在步骤316判定为是,则表明紧跟着接收到请求消息2或继续请求消息3,于是在步骤317清除超时计数器。
在步骤318,判定包执行正在进行标志是否已经置位,如果判定为未置位,执行跳转到图10中的步骤322;如果判定为已经置位,执行前进到步骤319。在步骤319判定当前设定的设定方式是否是A2,亦即最新接收到的请求消息是否是请求消息2或继续请求消息3。另外,该设定方式在步骤329设定,后面会说明。
在步骤319,如果判定设定方式不是A2,则执行前进到图10中的步骤322;如果判定设定方式是A2,则执行前进到步骤320。在步骤320,判定上述超时计数器是否已超过T0。如果这里判定为未超过,执行前进到步骤322。相反,如果判定为已经超过,它表明,由于例如诊断连接器4连接的中断或其它原因,后继继续请求消息未在上述时间T0之內发送,从而导致最新数据包连续发送诊断处理中止,在步骤321,清除包执行正在进行标志,转出该主子例程。
在步骤322,再次执行和上述步骤311同样的判定。如果这里判定为否,则判定现在由故障诊断测试器5设定的诊断方式是何种方式,相应地,如果判定为是与最新数据包连续发送诊断处理有关的方式,则根据处理用接收缓冲存储器(4)中存储的数据进一步判定现在发送的消息是何种消息。
在步骤324,如果判定在处理用接收缓冲存储器(4)中存储的数据是A1,则它表明现在已经发送的消息是包定义请求消息1,于是在步骤325将包执行正在进行标志置位,以便之后执行最新数据包连续发送诊断处理,然后将程序执行转移到步骤329。
另外,在步骤324,如果判定为处理用接收缓冲存储器(4)中存储的数据为A3,则它表明现在已经发送的消息是中止请求消息4,于是清除包执行正在进行标志,其目的与在上述步骤321相同,然后将执行转移到步骤329。
另外,在步骤324,如果判定在处理用接收缓冲存储器(4)中存储的数据是A2,则它表明现在已经发送的消息是请求消息2或继续请求消息3,于是不再继续处理,而将执行转移到步骤329。
在步骤329,设定在处理用接收缓冲存储器(4)中存储的数据为上述设定方式。
相应地,在步骤330,根据在上述步骤设定的设定方式生成一个响应消息。
特别地说,当设定方式在步骤329被置为A1时,它表明后面打算发送的消息为对应于包定义请求消息1的响应消息,于是产生如图2中所示的一个响应消息。
另外,当在步骤329已经将设定方式设定为A2时,它表明后面打算发送的消息是对应于请求消息2或继续请求消息3的一个响应消息,于是产生一个如图2或图3所示的响应消息。
另外,当在步骤329设定方式设定为A3时,它表明后面打算发送的消息是对应于中止请求消息4的一个响应消息,于是产生一个如图3所示的响应消息。
在步骤331,在上述步骤330产生的响应消息被存储在发送缓冲存储器(1)到(m),随之,在步骤332,指示该消息字节长度的m被存储在发送计数器中。也就是说,例如当在步骤330产生的消息是一个对应于包定义请求消息1的响应消息时,该消息就被存储在发送缓冲存储器(1)到(10)中,并将10存储在发送计数器中。
相应地,在步骤333,清除处理用接收计数器,并将执行转移到图11中的步骤334。
同时,如果在上述步骤322判定为是,则在步骤327通过判定发送计数器是否是0来判定在发送该响应消息后是否尚未产生后继响应消息。
如果在该步骤327判定为否,亦即,已经产生后继响应消息,执行跳转到图11中的步骤334。相反,如果判定为是,亦即尚未产生后继响应消息,则在后继步骤338根据现在设定的设定方式判定是否有必要产生后继响应消息。
也就是说,在步骤328,判定当前设定的设定方式是否是A2,亦即最新接收到的请求消息是否是请求消息2或继续请求消息3。相应地,如果判定为是,则必须连续发送响应消息,如图2和图3中所示,于是判定必须产生后继响应消息,执行前进到步骤329。
相反,如果判定为否,则不再需要产生响应消息,于是停止处理并转出该子例程。其中,相对于包定义请求消息1的响应消息发送后,执行该步骤328处理的时间和相对于包定义请求消息1的响应消息发送后执行该步骤328的处理的时间,均为在步骤328判定为否时的时间。
在图11的步骤334,判定包执行正在进行标志是否已经置位。相应地,如果判定为未置位,则在步骤337,将时间P2设定为标准值(28ms),P2为步骤338中的判定参考值,后面将会说明。
另外,如果在上述步骤334判定该标志位已经置位,则在步骤335判定现在设定的设定方式是否是A2;如果不是,执行转移到步骤337,如果是,则在步骤336,将时间P2设定为P2’(42ms),P2为步骤338中的判定参考值,后面将会说明。
如果在上述步骤336和337设定了时间P2,则在步骤338判定上述空闲计数器是否超过该时间P2。如果这里判定为否,则该子例程,不再继续处理并跳出。此外,如果判定为是,则在步骤339发送存储在发送缓冲存储器(1)到(m)中的响应消息,在步骤340清除发送计数器,在步骤341清除空闲计数器,然后转出该子例程。
这几种响应消息均是由上述图8到图11的处理,以在图2和图3中所示的程式发送的。
此外,在图5到图11所示的几个步骤构成了实现各个功能的方法。
如上所述,本实施例的目的是在空闲计数器超过时间P3’(<P2’)时就发送继续请求消息或中止请求消息,因而是在后继响应消息发送之前发送继续请求消息或中止请求消息,从而不会在通信线3上引起消息的碰撞。
下面叙述根据权利要求1、3、或6的发明的第二实施例。其中,该实施例的总结构和构成几种消息的几个字节的位格式均示于为叙述第一实施例的图1和图4中,因此省略其说明。
在图12和图13中,以时间图表示了本实施例中进行最新数据包连续发送诊断处理的总流程图。类似于第一实施例,在此将以执行一对一通信的故障诊断测试器5和发动机控制器1为例加以说明。
正如也可从图12和图13中所理解的,本实施例的上述处理的总流程图基本和第一实施例的情形相同,但是下述两点与第一实施例不同:
- 发送一个响应消息的时间条件取为完成发送请求消息或继续请求消息3后,上述时间计数器T1的值超过T1时,空闲计数器超过时间P2’(>P3)的时刻,或在任何其它时间,空闲计数器超过时间P2的时刻;
- 上述1到4的几个消息发送的时间条件设定相同(即空闲计数器超过时间T3时)。
下面参考图5、图6、图8到图10、图14和图15叙述执行该上述处理的特别方法。
故障诊断测试器5和发动机控制器1,通过为可靠地接收一个发送定时未知的响应消息或请求消息而设的CPU的串行输入中断功能,执行中断处理(图5)。
另外,故障诊断测试器5在上述中断处理之外,还单独执行一个在每一个基本回路中都被驱动的主子例程(图6和图14)。其中,在这一处理中,执行与第一实施例相同处理的步骤,使用与第一实施例所用的一样的符号,因此省略其说明。所以下面只叙述和第一实施例不同的那些步骤。
如图14中所示,如果在步骤217判定包执行正在进行标志已置位,则在步骤230判定设定方式是否为A2。相应地,如果判定为A2,则执行前进到步骤219;如果判定为其它(A1、A3、或A20),则在步骤221设定时间P3为标准值(55毫秒)。
以在图12和图13中所示的程式通过上述图6和图14的处理发送1到4这几个请求消息。
与此对照,发动机控制器1除了上述中断处理之外,单独执行一个在每一基本循环都被驱动的主子例程(图8到图10和图15)。其中在该处理中,执行与第一实施例的同样的处理步骤使用与第一实施例中相同的符号,所以省略其说明。因此,只说明和第一实施例不同的步骤。
如图15所示,如果在步骤335判定,设定方式为A2,则在步骤342判定,是否上述超时计数器已经超过时间T1。相应地,如果判定为超过,则在步骤336设定时间P2为P2’(根据本实施例为70ms);如果判定为未超过,则在步骤337设定时间P2为标准值(28ms)。
上述图8到图10和图15的处理以在图12和图13中所示的程式发送这几个响应消息。
设立上面说明的第二实施例,后继响应消息是在超时计数器超过时间T1时空闲计数器超过时间P2’(大于P3)后发送的,于是继续请求消息3可以在后继响应消息被发送前发送,从而不会引起在通信线上的消息的碰撞。
另外,由于本实施例是在超时计数器超过时间T1时在空闲计数器超过时间P2(小于P2’)后发送几个响应消息, 因此于第一实施例比较,这些响应消息的通信速度可以加快。
另外,根据上面几个实施例,故障诊断测试器5也可以不只与发动机控制器1,而且也能与其它电子控制器(例如传动控制器2)执行如上所述的一对一的通信。
另外,根据上面几个实施例,对于时间参数P2、P2’、P3和P3’分别设定了不同的时间,但是,本质上,为发送继续请求消息3而必需取的空闲计数器(步骤222的P3)小于发送响应消息而必需取的空闲计数器(步骤338的P2)就足够了。该响应消息紧跟在要发送的继续请求消息3之前发送的响应消息后发送。
(其它实施例)
上面几个实施例所述系统,把故障诊断测试器5作为主设备,某一电子控制器作为从属设备,但也适用于从多个电子控制器中选取其中任意一个作为主设备,而另一个作为从属设备的系统。
另外,上述实施例所述的是根据本发明应用于车辆中的通信系统的例子,但是也可以应用于非车辆的场合。