The present application relates generally to the field of automotive vehicle diagnostic systems.
Advanced vehicle diagnostics systems permit mechanics and technicians to access and diagnose vehicle systems. Some of these advanced vehicle diagnostic systems are implemented via tools that plug into the vehicle on-board diagnostic (OBD) port. These tools can communicate with one or more local computers or stations to analyze diagnose and repair a vehicle. These systems are generally suited for use by advance technicians. These systems implement analysis of large database subscriptions that can be stored, for example, on the local computers or stations. Accordingly, these tools permit a technician to take a deep dive into the fault codes and technical information about the vehicle.
Because these systems are designed for use by advanced technicians, they are configured for local use and provide technical details in the diagnostics that would generally be too sophisticated for an average driver. The memory storage requirements for such tools make them prohibitive for real-time remote diagnostics. Additionally, the sophistication of the analysis provided by such tools warrant local diagnostics and repairs so that the large database subscriptions that facilitate the use of such systems are readily accessible.
The inventors have appreciated that various embodiments disclosed herein provide apparatuses, systems, and methods for remotely obtaining diagnostic status information and/or performing output controls on a vehicle. The remote vehicle diagnostics are obtained based on a vehicle identification number for a vehicle connected to an electrical connector of a vehicle diagnostic system host device. A vehicle electronic configuration (VEC) file is provided to the host device remotely to selectively control and facilitate access to one or more vehicle control modules particular to the vehicle or vehicle platform. The VEC file is provided to the host device and or updated post engagement to improve the energy storage requirement on the device.
This specification uses the term “configured” in connection with systems, apparatuses, and computer program components. For a system of one or more computers to be configured to perform particular operations or actions means that the system has installed on it software, firmware, hardware, or a combination of them that in operation causes the system to perform the operations or actions. For one or more computer programs to be configured to perform particular operations or actions means that the one or more programs include instructions that, when executed by a data processing apparatus(s), cause the apparatus(s) to perform the operations or actions. For special-purpose logic circuitry to be configured to perform particular operations or actions means that the circuitry has electronic logic that performs the operations or actions.
The foregoing and other embodiments can each optionally include one or more of the following features, alone or in combination.
Various embodiments provide vehicle diagnostic systems including a housing structure, an electrical connector that is at least one of coupled to and extending from a portion of the housing structure and one or more computers and one or more storage devices positioned in the housing structure and communicably coupled to the electrical connector. The one or more storage devices include stored instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations. The stored instructions can be configured as a NanoKernel Application or NanoKernel firmware. The operations include determining a vehicle identification number (VIN) for a vehicle connected to the electrical connector. The operations include causing a request including the VIN to be transmitted to a remote server system. The operations include receiving, at the one or more storage devices and in response to transmission of the request to the remote server system, a vehicle electronic configuration (VEC) file generated or obtained based, at least in part, on the vehicle identification number. The operations include identifying, via the vehicle electronic configuration file, a parameter identification (PID) code, in response to receiving a generic request for vehicle operational data. The operations include determining a vehicle control module to access based on the PID code identified. The operations include obtaining the vehicle operational data from the vehicle control module based on the PID code identified. In some implementations, the generic request can be provided to the NanoKernel Application by a partner application or host application stored and/or operating on the one or more storage devices. In some implementations, the partner application can generate the generic request responsive to a query or request received from a remote server (i.e., remote from the vehicle diagnostic system housing structure).
In some implementations, the stored instruction are further operable when executed by the one or more computers, to cause the one or more computers to perform operations comprising causing the vehicle operational data to be transmitted to the remote server system.
In certain implementations, the connector device comprises an on-board diagnostic (OBD) connector.
In particular implementations, the stored instruction are further operable when executed by the one or more computers, to cause the one or more computers to perform operations comprising causing an output command to be sent to the vehicle control module.
In some implementations, the stored instructions are stored in 100 kb or less of memory on the one or more storage devices.
In certain implementations, the stored instructions are stored in 64 kb or less of memory on the one or more storage devices.
In particular implementations, the one or more storage devices comprising stored instructions that are operable, when executed by the one or more computers, to cause the one or more computers to perform operations further comprising storing the VEC file on the one or more storage devices.
In some implementations, the VEC file is configured to be engaged with an operating system stored on the one or more storage devices and to engage the vehicle control module via a vehicle communication interface (VCI), so as to obtain the vehicle operational data and store the vehicle operational data on at least one of the one or more storage devices.
In certain implementations, the VEC file is a first VEC file and further comprises replacing the first VEC file stored on the one or more storage devices with a second VEC file distinct from the first VEC file, in response to detection of a new VIN.
In particular implementations, replacing the first VEC file stored on the one or more storage devices with the second VEC file in response to at least one of a change in the VIN.
In some implementations, the VEC file comprises a binary file.
In certain implementations, the VEC file comprises strings and logic for a plurality of parameter identification (PID) codes, wherein the identified PID code is selected from the plurality of PID codes.
In particular implementations, the VEC file comprises the information for all possible modules that may be on that vehicle (e.g., body control module, powertrain control module, etc). The information can include: a module ID for system, a module protocol or special configuration (e.g., information on how to resolve a protocol in the VEC file, specific BUS speeds; bit timings, ISO 14229; ISO 15765; Keyword Protocols; OBD II, etc.), physical/transport layer, a CAN, a UART, a serial protocol, data addresses; request for the data at address, an address for engine RPM and/or vehicle speed, conversions, scaling factors for the data (e.g., temperature in degrees in Fahrenheit or Celsius), logic for selecting exact module to use, an ECU ID, and all possible data items—logic for selecting the correct data.
In some implementations, the request comprises a device identification number for the vehicle diagnostic system.
Various embodiments provide methods of obtaining vehicle diagnostic data. The methods include determining a vehicle identification number (VIN) for a vehicle connected to an electrical connector of a vehicle diagnostic system. The methods include causing a request including the VIN to be transmitted from the vehicle diagnostic system to a remote server system. The methods include receiving, at the vehicle diagnostic system in response to transmission of the request, a vehicle electronic configuration (VEC) file based, at least in part, on the VIN. The methods include identifying, via the VEC file, a parameter identification (PID) code, in response to receiving a generic request for vehicle operational data. The methods include determining a vehicle control module to access based on the PID code identified. The methods include obtaining the vehicle operational data from the vehicle control module based on the PID code identified.
In certain implementations, the stored instruction are further operable when executed by the one or more computers, to cause the one or more computers to perform operations comprising causing the vehicle operational data to be transmitted to the remote server system
In some implementations, obtaining the vehicle operational data comprises obtaining a diagnostic trouble code (DTC).
In particular implementations, identifying the PID code in response to receiving the generic request comprises mapping one or more words in the generic request to a PID name.
In certain implementations, identifying the PID code in response to receiving the generic request comprises scanning a lookup table including a plurality of PID codes.
In some implementations, the PID code corresponds to at least one of vehicle odometer reading, oil life, tire pressure, seatbelt status, fuel level, airbag status, transmission gear position, brake status, vehicle speed and engine speed.
In particular implementations, identifying the PID code in response to receiving the generic request comprises resolving a list of standardized terms in the generic request and mapping a standardized term in the list of standardized terms to a PID code selected from a plurality of PID codes.
In certain implementations, mapping the standardized term to a PID code selected from a plurality of PID codes comprises analyzing the generic request with a string-searching algorithm.
In some implementations, mapping the standardized terms to a PID code selected from a plurality of PID codes comprises analyzing the generic request with a pattern recognition algorithm.
In particular implementations, the method includes storing the VEC file on the one or more storage devices.
In certain implementations, the VEC file is a first VEC file and further comprising replacing the first VEC file stored on the one or more storage devices with a second VEC file distinct from the first VEC file.
In some implementations, replacing the first VEC file stored on the one or more storage devices with the second VEC file is responsive to detecting at least one of a change in the VIN.
Particular embodiments provide methods of obtaining vehicle diagnostic data. The methods include determining a vehicle identification number (VIN) for a vehicle connected to an electrical connector of a vehicle diagnostic system. The methods include causing a request including the VIN to be transmitted from the vehicle diagnostic system to a remote server system. The methods include receiving, at the vehicle diagnostic system and in response to transmission of the request, a vehicle electronic configuration (VEC) file based, at least in part, on the VIN. The methods include identifying, via the VEC file, a vehicle control module to access based on a generic request for a vehicle output control command received.
In particular implementations, the methods include accessing the vehicle control module to cause the vehicle output control command to be initiated.
In certain implementations, the methods include obtaining a value for at least one vehicle parameter in response to completion of the vehicle output control command.
In some implementations, the methods include storing bytes of unprocessed data obtained from the vehicle control module in response to accessing the vehicle control module.
Particular embodiments provide one or more computer-readable storage media encoded with instructions that, when executed by one or more computers, cause the one or more computers to perform operations. The operations include determining a vehicle identification number (VIN) for a vehicle. The operations include causing a request including the VIN to be transmitted from the vehicle diagnostic system to a remote server system. The operations include receiving, at the vehicle diagnostic system in response to transmission of the request, a vehicle electronic configuration (VEC) file generated based, at least in part, on the VIN. The operations include identifying, via the VEC file, a parameter identification (PID) code, in response to receiving a generic request for vehicle operational data. The generic request can be generated by a partner application or host application residing on the one or more computer readable storage media. The operations include determining a vehicle control module to access based on the PID code identified. The operations include obtaining the vehicle operational data from the vehicle control module based on the PID code identified.
It should be appreciated that all combinations of the foregoing concepts and additional concepts discussed in greater detail below (provided such concepts are not mutually inconsistent) are contemplated as being part of the inventive subject matter disclosed herein. In particular, all combinations of claimed subject matter appearing at the end of this disclosure are contemplated as being part of the inventive subject matter disclosed herein. It should also be appreciated that terminology explicitly employed herein that also may appear in any disclosure incorporated by reference should be accorded a meaning most consistent with the particular concepts disclosed herein.
The drawings primarily are for illustrative purposes and are not intended to limit the scope of the inventive subject matter described herein. The drawings are not necessarily to scale; in some instances, various aspects of the inventive subject matter disclosed herein may be shown exaggerated or enlarged in the drawings to facilitate an understanding of different features. In the drawings, like reference characters generally refer to like features (e.g., functionally similar and/or structurally similar elements).
The features and advantages of the inventive subject matter disclosed herein will become more apparent from the detailed description set forth below when taken in conjunction with the drawings.
Following below are more detailed descriptions of various concepts related to, and exemplary embodiments of, inventive systems, methods and components for remotely obtaining diagnostic status information and/or performing output controls on a vehicle.
In some implementations, the information obtained by the host device 102 from the vehicle 101 can include bytes of unprocessed data obtained by the NanoKernel Application 104 and transmitted from the host device 102 to the one or more cloud based systems 105 or to a customer application also residing on the host device 102. The bytes of data can include parameter identification (PID) codes, values for the PID codes, and/or diagnostic trouble code (DTC). On-board diagnostic PIDs codes are used to request data from a vehicle and are used as a diagnostic tool. The unprocessed data obtained by the NanoKernel Application 104 on the host device 102 can be transmitted to the one or more cloud-based systems 105 and processed via the master web kernel 106 based on vehicle information about the vehicle 101 obtained via the NanoKernel Application 104. Accordingly, the NanoKernel Application 104 can meet low memory storage requirements since the NanoKernel Application 104 excludes additional information and a more full diagnostic database that facilitates processing the unprocessed data.
The system shown in
One or more of the computers or processors in the host device 102 may include wireless links for communication with one or more remote electronic device such as a server, another computing device, a mobile phone, a tablet, a laptop. The wireless links may include BLUETOOTH classes, Wi-Fi, Bluetooth-low-energy, also known as BLE, 802.15.4, Worldwide Interoperability for Microwave Access (WiMAX), an infrared channel or satellite band. The wireless links may also include any cellular network standards used to communicate among mobile devices, including, but not limited to, standards that qualify as 1G, 2G, 3G, 4G, or 5G. The network standards may qualify as one or more generation of mobile telecommunication standards by fulfilling a specification or standards such as the specifications maintained by International Telecommunication Union. The 3G standards, for example, may correspond to the International Mobile Telecommunications-2000 (IMT-2000) specification, and the 4G standards may correspond to the International Mobile Telecommunications Advanced (IMT-Advanced) specification. Examples of cellular network standards include AMPS, GSM, GPRS, UMTS, LTE, LTE Advanced, Mobile WiMAX, and WiMAX-Advanced. Cellular network standards may use various channel access methods e.g. FDMA, TDMA, CDMA, or SDMA. In some embodiments, different types of data may be transmitted via different links and standards. In other embodiments, the same types of data may be transmitted via different links and standards.
Implementations of the subject matter and the operations described in this specification can be implemented by digital electronic circuitry, or via computer software, firmware, or hardware, including the structures disclosed in this specification and their structural equivalents, or in combinations of one or more of them. Implementations of the subject matter described in this specification can be implemented as one or more computer programs, i.e., one or more modules of computer program instructions, encoded on computer storage medium for execution by, or to control the operation of, data processing apparatus.
A computer storage medium can be, or be included in, a computer-readable storage device, a computer-readable storage substrate, a random or serial access memory array or device, or a combination of one or more of them. Moreover, while a computer storage medium is not a propagated signal, a computer storage medium can be a source or destination of computer program instructions encoded in an artificially generated propagated signal. The computer storage medium can also be, or be included in, one or more separate physical components or media (e.g., multiple CDs, disks, or other storage devices).
The operations described in this specification can be implemented as operations performed by a data processing apparatus on data stored on one or more computer-readable storage devices or received from other sources.
The term “data processing apparatus” encompasses all kinds of apparatus, devices, and machines for processing data, including by way of example a programmable processor, a computer, a system on a chip, or multiple ones, or combinations, of the foregoing. The apparatus can include special purpose logic circuitry, e.g., an FPGA (field programmable gate array) or an ASIC (application specific integrated circuit). The apparatus can also include, in addition to hardware, code that creates an execution environment for the computer program in question, e.g., code that constitutes processor firmware, a protocol stack, a database management system, an operating system, a cross-platform runtime environment, a virtual machine, or a combination of one or more of them. The apparatus and execution environment can realize various different computing model infrastructures, such as web services, distributed computing and grid computing infrastructures.
A computer program (also known as a program, software, software application, script, or code) can be written in any form of programming language, including compiled or interpreted languages, declarative or procedural languages, and it can be deployed in any form, including as a stand-alone program or as a module, component, subroutine, object, or other unit suitable for use in a computing environment. A computer program may, but need not, correspond to a file in a file system. A program can be stored in a portion of a file that holds other programs or data (e.g., one or more scripts stored in a markup language document), in a single file dedicated to the program in question, or in multiple coordinated files (e.g., files that store one or more modules, sub programs, or portions of code). A computer program can be deployed to be executed on one computer or on multiple computers that are located at one site or distributed across multiple sites and interconnected by a communication network.
The processes and logic flows described in this specification can be performed by one or more programmable processors executing one or more computer programs to perform actions by operating on input data and generating output. The processes and logic flows can also be performed by, and apparatus can also be implemented as, special purpose logic circuitry, e.g., a FPGA (field programmable gate array) or an ASIC (application specific integrated circuit).
Processors suitable for the execution of a computer program include, by way of example, both general and special purpose microprocessors, and any one or more processors of any kind of digital computer. Generally, a processor will receive instructions and data from a read only memory or a random access memory or both. The essential elements of a computer are a processor for performing actions in accordance with instructions and one or more memory devices for storing instructions and data. Generally, a computer will also include, or be operatively coupled to receive data from or transfer data to, or both, one or more mass storage devices for storing data, e.g., magnetic, magneto optical disks, or optical disks. However, a computer need not have such devices. Moreover, a computer can be embedded in another device, e.g., a mobile telephone, a personal digital assistant (PDA), a mobile audio or video player, a game console, a Global Positioning System (GPS) receiver, or a portable storage device (e.g., a universal serial bus (USB) flash drive), to name just a few. Devices suitable for storing computer program instructions and data include all forms of non-volatile memory, media and memory devices, including by way of example semiconductor memory devices, e.g., EPROM, EEPROM, and flash memory devices; magnetic disks, e.g., internal hard disks or removable disks; magneto optical disks; and CD ROM and DVD-ROM disks. The processor and the memory can be supplemented by, or incorporated in, special purpose logic circuitry.
To provide for interaction with a user, implementations of the subject matter described in this specification can be implemented on a computer having a display device, e.g., a CRT (cathode ray tube) or LCD (liquid crystal display) monitor, for displaying information to the user and a keyboard and a pointing device, e.g., a mouse or a trackball, by which the user can provide input to the computer. Other kinds of devices can be used to provide for interaction with a user as well; for example, feedback provided to the user can be any form of sensory feedback, e.g., visual feedback, auditory feedback, or tactile feedback; and input from the user can be received in any form, including acoustic, speech, or tactile input. In addition, a computer can interact with a user by sending documents to and receiving documents from a device that is used by the user; for example, by sending web pages to a web browser on a user's user device in response to requests received from the web browser.
Implementations of the subject matter described in this specification can be implemented in a computing system that includes a back end component, e.g., as a data server, or that includes a middleware component, e.g., an application server, or that includes a front end component, e.g., a user computer having a graphical display or a Web browser through which a user can interact with an implementation of the subject matter described in this specification, or any combination of one or more such back end, middleware, or front end components. The components of the system can be interconnected by any form or medium of digital data communication, e.g., a communication network. Examples of communication networks include a local area network (“LAN”) and a wide area network (“WAN”), an inter-network (e.g., the Internet), and peer-to-peer networks (e.g., ad hoc peer-to-peer networks).
The computing system can include users and servers. A user and server are generally remote from each other and typically interact through a communication network. The relationship of user and server arises by virtue of computer programs running on the respective computers and having a user-server relationship to each other. In some implementations, a server transmits data (e.g., an HTML page) to a user device (e.g., for purposes of displaying data to and receiving user input from a user interacting with the user device). Data generated at the user device (e.g., a result of the user interaction) can be received from the user device at the server.
While this specification contains many specific implementation details, these should not be construed as limitations on the scope of any inventions or of what may be claimed, but rather as descriptions of features specific to particular implementations of particular inventions. Certain features that are described in this specification in the context of separate implementations can also be implemented in combination in a single implementation. Conversely, various features that are described in the context of a single implementation can also be implemented in multiple implementations separately or in any suitable sub combination. Moreover, although features may be described above as acting in certain combinations and even initially claimed as such, one or more features from a claimed combination can in some cases be excised from the combination, and the claimed combination may be directed to a sub combination or variation of a sub combination.
For the purpose of this disclosure, the term “coupled” means the joining of two members directly or indirectly to one another. Such joining may be stationary or moveable in nature. Such joining may be achieved with the two members or the two members and any additional intermediate members being integrally formed as a single unitary body with one another or with the two members or the two members and any additional intermediate members being attached to one another. Such joining may be permanent in nature or may be removable or releasable in nature.
It should be noted that the orientation of various elements may differ according to other exemplary implementations, and that such variations are intended to be encompassed by the present disclosure. It is recognized that features of the disclosed implementations can be incorporated into other disclosed implementations.
While various inventive implementations have been described and illustrated herein, those of ordinary skill in the art will readily envision a variety of other means and/or structures for performing the function and/or obtaining the results and/or one or more of the advantages described herein, and each of such variations and/or modifications is deemed to be within the scope of the inventive implementations described herein. More generally, those skilled in the art will readily appreciate that all parameters, dimensions, materials, and configurations described herein are meant to be exemplary and that the actual parameters, dimensions, materials, and/or configurations will depend upon the specific application or applications for which the inventive teachings is/are used. Those skilled in the art will recognize, or be able to ascertain using no more than routine experimentation, many equivalents to the specific inventive implementations described herein. It is, therefore, to be understood that the foregoing implementations are presented by way of example only and that, within the scope of the appended claims and equivalents thereto, inventive implementations may be practiced otherwise than as specifically described and claimed. Inventive implementations of the present disclosure are directed to each individual feature, system, article, material, kit, and/or method described herein. In addition, any combination of two or more such features, systems, articles, materials, kits, and/or methods, if such features, systems, articles, materials, kits, and/or methods are not mutually inconsistent, is included within the inventive scope of the present disclosure.
Also, the technology described herein may be embodied as a method, of which at least one example has been provided. The acts performed as part of the method may be ordered in any suitable way. Accordingly, implementations may be constructed in which acts are performed in an order different than illustrated, which may include performing some acts simultaneously, even though shown as sequential acts in illustrative implementations.
The claims should not be read as limited to the described order or elements unless stated to that effect. It should be understood that various changes in form and detail may be made by one of ordinary skill in the art without departing from the spirit and scope of the appended claims. All implementations that come within the spirit and scope of the following claims and equivalents thereto are claimed.
Number | Name | Date | Kind |
---|---|---|---|
20130018677 | Chevrette | Jan 2013 | A1 |
20170024942 | Drew et al. | Jan 2017 | A1 |
20180047222 | Lewis | Feb 2018 | A1 |
Number | Date | Country |
---|---|---|
2 988 278 | Feb 2016 | EP |
2988278 | Feb 2016 | EP |
Entry |
---|
European Search Report; EP 19171787.5-1009; dated Sep. 9, 2019; 9 pages. |
Number | Date | Country | |
---|---|---|---|
20190347876 A1 | Nov 2019 | US |