发明内容
有鉴于此,本发明提供一种实现汽车诊断的方法、装置和系统,以利用智能终端实现汽车诊断。
根据本发明的一个方面,提供的一种实现汽车诊断的方法包括以下步骤:
通过轮询各ODB链路层协议确定进入汽车ECU的链路层协议;
接收智能终端发送的诊断命令并进行解析;
根据诊断命令,通过链路层协议从汽车ECU获取诊断结果并解析;
将解析出的诊断结果通过蓝牙通讯模块发送给智能终端。
优选地,通过轮询ODB链路层协议确定进入汽车ECU的链路层协议进一步包括:通过构造不同的ODB链路层协议向汽车ECU发送系统进入命令,如果其中某个链路层协议能收到汽车ECU的反馈,则确定该链路层协议作为汽车ECU后续诊断所用的链路层协议。
优选地,通过轮询各通信协议确定进入汽车ECU的链路层协议之前还包括:判断版本是否需要升级,如果需要,则从智能终端获取升级文件进行升级。
优选地,该方法之前还包括:判断是否与智能终端建立通信连接,如果没有,则进入睡眠模式。
优选地,从汽车ECU获取诊断结果包括:OBD协议的故障码、数据流、冻结帧、汽车ECU信息、和/或氧传感器信息。
优选地,将解析出的诊断结果通过蓝牙通讯模块发送给智能终端包括发送命令字、操作状态、参数个数、参数长度、和参数内容给智能终端。
根据本发明的另一个方面,提供的一种实现汽车诊断的装置,包括以下模块:
链路建立模块,用于通过轮询ODB链路层协议确定进入汽车ECU的链路层协议;
命令解析模块,用于接收智能终端发送的诊断命令并进行解析;
诊断结果获取模块,用于根据诊断命令,通过链路层协议从汽车ECU获取诊断结果并解析;
诊断结果发送模块,用于将解析的诊断结果通过蓝牙通讯模块发送给智能终端。
优选地,该装置还包括升级模块,用于当版本是否需要升级时,从智能终端获取升级文件进行升级。
优选地,该装置还包括睡眠模块,用于当诊断头没有与智能终端建立通信连接时,进入睡眠模式。
根据本发明的再一个方面,提供的一种实现汽车诊断的系统,包括汽车ECU,还包括智能终端和诊断头,OBD诊断头通过蓝牙模块与智能终端进行通讯,OBD诊断头通过OBD协议与汽车ECU进行通讯,其中:
智能终端,用于向OBD诊断头发送诊断命令;接收OBD诊断头从汽车ECU获取的诊断结果,并将诊断结果显示屏幕上;
诊断头包括上述技术方案中的装置。
本发明提供的实现汽车诊断的方法、装置和系统,通过智能终端向OBD诊断头发送诊断命名,OBD诊断头从汽车ECU获取诊断结果解析后返回给智能终端,使得用户能更加快速方便地对汽车故障的诊断,节省了用户的时间成本和经济成本,增强了用户体验;同时,智能终端和ODB诊断头通过蓝牙通信一应一答,少了中间通信环节,且接收方式采用MCU的直接内存去存方式,提高了CPU利用率和速度。此外,诊断头还能通过智能终端自动升级确保同步到最新版本,并在不与智能终端连接是进入睡眠模式以节省能耗。
具体实施方式
为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚、明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,本发明公开了一种实现汽车诊断的方法,该方法应用于智能终端上,包括以下步骤:
S102、通过蓝牙模块与OBD(On-Board Diagnostics,车载自动诊断系统)诊断头建立通信连接;
S104、向OBD诊断头发送诊断命令;
S106、接收OBD诊断头从汽车ECU(Electronic Control Unit,电子控制单元)获取的诊断结果;
S108、将诊断结果显示屏幕上。
其中,诊断结果包括但不限于故障码、数据流、冻结帧、汽车ECU信息、和/或氧传感器信息中的一种或者任意多种的组合。
为了更方便地让本领域普通技术人员理解本发明,下面以苹果手机为例来说明如何实现智能终端与ODB诊断头的通信和数据传输。
表1
表2
如表1所示,智能终端向ODB诊断头发送的诊断命令以及ODB诊断头向智能终端返回的命令格式具体包括:包头+长度+包序号+有效数据+校验和。
其中,包头为AA55AA55;
包序号是由智能终端随机生成,主要用于智能终端与OBD诊断头之间的通讯校验;
长度=包序号的长度+有效数据的长度+校验和的长度。长度由四字节组成,低字节在前高字节在后。
校验和是除自己之外的所有信息内容之和,即校验和=包头+长度+包序号+有效数据。它占用一个字节,以利用收到数据做校验,防止数据丢失。
有效数据=功能号+参数长度+参数内容。
其中,功能号包括四个字节且低字节在前面;参数长度包括四个字节且低字节在前面。
如表2所示,智能终端发送给OBD诊断头的有效数据格式以及ODB诊断头向智能终端返回的有效数据格式包括:命令字+操作状态+参数个数+【参数长度+参数内容】x参数个数。
其中,命令字包括四个字节且低字节在前面,操作状态包括四个字节且低字节在前面,参数个数包括四个字节且低字节在前,参数长度为一个字节,参数内容为参数长度个字节)。返回的操作状态中主要有如下几种状态:操作成功、通讯失败、正在连接、是否还有下级菜单以及没有数据流ID等。
如图2所示,本发明公开了一种实现汽车诊断的方法,该方法应用于OBD诊断头,包括以下步骤:
S202、通过轮询各ODB链路层协议确定进入汽车ECU的链路层协议。
优选地本步骤进一步包括:通过构造不同的ODB链路层协议向汽车ECU发送系统进入命令,如果其中某个链路层协议能收到汽车ECU的反馈,则确定该链路层协议作为汽车ECU后续诊断所用的链路层协议。
具体来说,OBD协议是汽车行业通用公开协议,比如J1850、KWP,ISO9141、STD CAN等协议类型。汽车ECU是实时诊断并记录诊断结果的,OBD诊断头与汽车ECU通信获取其中的故障码,数据流,冻结帧,所说的冻结帧是指在汽车ECU检测到故障时汽车ECU存储当前的数据流信息,以到其诊断汽车故障的目的。
S204、接收智能终端发送的诊断命令并进行解析。
S206、根据诊断命令,通过链路层协议从汽车ECU获取诊断结果并解析。
S208、将解析出的诊断结果通过蓝牙通讯模块发送给智能终端。
其中,诊断结果包括但不限于故障码、数据流、冻结帧、汽车ECU信息、和/或氧传感器信息中的一种或者任意多种的组合。
作为本实施例的另一种优选方案,步骤S202之前还包括:判断版本是否需要升级,如果需要,则从智能终端获取升级文件进行升级。具体来说,智能终端可以从互联网上获取最新版本的诊断程序,当OBD诊断头检测到自己的诊断程序版本与智能终端上不一致时,则从智能终端上获取最新版本的升级文件进行升级,这样确保了OBD诊断头能同步到最新版本。
作为本实施例的又一种优选方案,步骤S202之前还包括:判断是否与智能终端建立通信连接,如果没有,则进入睡眠模式。具体来说,蓝牙断开时在CPUIO口产生的上升沿信号,来触发CPU中断进而睡眠,当蓝牙连接时在其特定IO口同样也产生上升沿型号,当MCU配置成此上升沿唤醒时,只要有连接信号来时,则会自动唤醒。当诊断头和智能终端没有建立通信连接时,关掉所有链路通讯的电源,并使得MCU进入睡眠模式,因而能达到待机电流低于5mA,这样可以降低功耗,节省能量,有利于在汽车上长期待机。
如图3所示,本发明公开了一种实现汽车诊断的装置,该装置应用于智能终端上,包括以下模块:
连接建立模块101,用于通过蓝牙模块与OBD诊断头建立通信连接;
命令发送模块102,用于向OBD诊断头发送诊断命令;
接收模块103,用于接收OBD诊断头从汽车ECU获取的诊断结果;
显示模块104,用于将诊断结果显示屏幕上。
优选地,该装置还包括同步模块,用于接收到诊断头的升级请求时,向诊断头发送版本升级文件。
如图4所示,本发明公开了一种实现汽车诊断的装置,该装置应用于ODB诊断头,包括以下模块:
链路建立模块201,用于通过轮询ODB链路层协议确定进入汽车ECU的链路层协议;
命令解析模块202,用于接收智能终端发送的诊断命令并进行解析;
诊断结果获取模203,用于根据诊断命令,通过链路层协议从汽车ECU获取诊断结果并解析;
诊断结果发送模块204,用于将解析的诊断结果通过蓝牙通讯模块发送给智能终端。
作为本实施例的又一种优选方案,该装置还包括升级模块205,用于当版本是否需要升级时,从智能终端获取升级文件进行升级。具体来说,智能终端可以从互联网上获取最新版本的诊断程序,当OBD诊断头检测到自己的诊断程序版本与智能终端上不一致时,则从智能终端上获取最新版本的升级文件进行升级,这样确保了OBD诊断头能同步到最新版本。
作为本实施例的又一种优选方案,该装置还包括睡眠模块206,用于当诊断头没有与智能终端建立通信连接时,进入睡眠模式。具体来说,蓝牙断开时在CPU IO口产生的上升沿信号,来触发CPU中断进而睡眠,当蓝牙连接时在其特定IO口同样也产生上升沿型号,当MCU配置成此上升沿唤醒时,只要有连接信号来时,则会自动唤醒。当诊断头和智能终端没有建立通信连接时,关掉所有链路通讯的电源,并使得MCU进入睡眠模式,因而能达到待机电流低于5mA,这样可以降低功耗,节省能量,有利于在汽车上长期待机。
如图5所示,本发明公开了一种实现汽车诊断的系统,包括汽车ECU30、诊断头20和智能终端10,OBD诊断头通过蓝牙模块与智能终端10进行通讯,OBD诊断头20通过OBD协议与汽车ECU30进行通讯,其中:
智能终端10,用于通过蓝牙模块与OBD诊断头建立通信连接,向OBD诊断头发送诊断命令;还用于接收OBD诊断头从汽车ECU获取的诊断结果,将诊断结果显示屏幕上。
OBD诊断头20,用于通过轮询ODB链路层协议确定进入汽车ECU的链路层协议;还用于接收智能终端发送的诊断命令并进行解析,根据诊断命令,通过链路层协议从汽车ECU获取诊断结果并解析;将解析的诊断结果通过蓝牙通讯模块发送给智能终端。
汽车ECU30,用于实时诊断并记录诊断结果。
其中,诊断结果包括故障码、数据流、冻结帧、汽车ECU信息、和/或氧传感器信息等其它传感器的信息。
作为本实施例的又一种优选方案,智能终端为Android操作系统、IOS操作系统、或者WINDOWS操作系统的智能终端。比如苹果的Iphone。
本发明提供的实现汽车诊断的方法、装置和系统,通过智能终端向OBD诊断头发送诊断命名,OBD诊断头从汽车ECU获取诊断结果解析后返回给智能终端,使得用户能更加快速方便地对汽车故障的诊断,节省了用户的时间成本和经济成本,增强了用户体验;同时,智能终端和ODB诊断头通过蓝牙通信一应一答,少了中间通信环节,且接收方式采用MCU的直接内存去存方式,提高了CPU利用率和速度。此外,诊断头还能通过智能终端自动升级确保同步到最新版本,并在不与智能终端连接是进入睡眠模式以节省能耗。
以上参照附图说明了本发明的优选实施例,并非因此局限本发明的权利范围。本领域技术人员不脱离本发明的范围和实质内所作的任何修改、等同替换和改进,均应在本发明的权利范围之内。