Home

Automotive Diagnostic Command Set User Manual

image

Contents

1. Input DTC descriptor is a cluster that describes the DTC records the ECU delivers DTC Byte Length indicates the number of bytes the ECU sends for each DTC The default is 2 Status Byte Length indicates the number of bytes the ECU sends for each DTC s status The default is 0 for OBD Add Data Byte Length indicates the number of bytes the ECU sends for each DTC s additional data Usually there is no additional data so the default is 0 Byte Order indicates the byte ordering for multibyte items E EEO 0 MSB_FIRST Motorola default 1 LSB_FIRST Intel This VI interprets the response byte stream according to this description and returns the resulting DTC records in the DTCs cluster array diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster Automotive Diagnostic Command Set User Manual 5 126 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW error in is a cluster that describes error conditions occurring before the VI ETH executes If an error has already occurred the VI returns the value of the error in cluster to error out Output status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error t
2. Automotive Diagnostic Command Set User Manual l 4 OBD Request Supported PIDs vi 5 133 Open Diagnostic vi 5 22 ReadDataByLocalIdentifier vi 5 44 ReadDTCByStatus vi 5 46 ReadECUIdentification vi 5 49 ReadMemoryByAddress vi 5 51 ReadStatusOfDTC vi 5 53 RequestRoutineResultsB yLocal Identifier vi 5 56 RequestSeed vi 5 58 SendKey vi 5 60 StartDiagnosticSession vi 5 62 StartRoutineByLocalldentifier vi 5 64 StopDiagnosticSession vi 5 66 StopRoutineByLocalldentifier vi 5 68 TesterPresent vi 5 70 UDS DiagOnCAN services 5 76 UDS ClearDiagnosticInformation vi 5 76 UDS CommunicationControl vi 5 79 UDS ControlDTCSetting vi 5 81 UDS DiagnosticSessionControl vi 5 83 UDS ECUReset vi 5 85 UDS InputOutputControlB yIdentifier vi 5 87 UDS ReadDataB yldentifier vi 5 89 UDS ReadMemoryByAddress vi 5 91 UDS ReportDTCBySeverityMask Record vi 5 93 UDS ReportDTCByStatusMask vi 5 96 UDS ReportSeverityInformationOf DTC vi 5 99 UDS ReportSupportedDTCs vi 5 102 UDS RequestSeed vi 5 105 UDS RoutineControl vi 5 107 UDS SendKey vi 5 109 UDS TesterPresent vi 5 111 UDS WriteDataByldentifier vi 5 113 UDS WriteMemoryByAddress vi 5 115 VWTP Connect vi 5 24 VWTP Connection Test vi 5 26 ni com VWTP Disconnect vi 5 28 WriteDataB yLocalldentifier vi 5 72 WriteMemoryByAddress vi 5 74 LabVIEW RT configuration 2 2 LabWindows CVI using with Automotive Diagnostic Command Set 3 1 list of
3. Purpose Executes the ReadECUlIdentification service Returns ECU identification data Format long ndReadECUIdentification TD1 diagRef unsigned char mode unsigned char dataOut long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct mode Indicates the type of identification information to be returned The values are application specific Output dataOut Returns the ECU identification data len On input len must contain the dataOut array length On return it contains the number of valid data bytes in the dataOut array success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments Corporation 6 49 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C
4. Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description This function executes the ReportDTCByStatusMask subfunction of the UDS ReadDiagnosticTroubleCodeInformation service and reads the selected DTCs from the ECU For further details about this service refer to the ISO 15765 3 standard Automotive Diagnostic Command Set User Manual 6 94 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndUDSReportSeverityInformationOfDTC Purpose Executes the ReportSeverityInformationOfDTC subfunction of the UDS ReadDiagnosticTroubleCodeInformation service Reads selected Diagnostic Trouble Codes DTCs are read Format long ndUDSReportSeverityInformationOfDTC TD1 diagRef unsigned long DTCMaskRecord TD3 DTCDescriptor unsigned char statusAvailMask D4 DTCs long len LVBoolean success a Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the
5. The Automotive Diagnostic Command Set is structured into three layers of functionality e The top layer implements three sets of diagnostic services for the diagnostic protocols KWP2000 UDS DiagOnCAN and OBD On Board Diagnostics e The second layer implements general routines involving opening and closing diagnostic communication connections connecting and disconnecting to from an ECU and executing a diagnostic service on byte level The latter routine is the one the top layer uses heavily e The third layer implements the transport protocols needed for diagnostic communication to an ECU The second layer uses these routines to communicate to an ECU All three top layers are fully implemented in LabVIEW The transport protocols then execute CAN Read Write operations through a specialized DLL for streamlining the CAN data flow especially in higher busload situations Automotive Diagnostic Command Set API Structure The top two layer routines are available as API functions Each diagnostic service for KWP2000 UDS and OBD is available as one routine Also available on the top level are auxiliary routines for converting scaled physical data values to and from their binary representations used in the diagnostic services On the second layer are more general routines for opening and closing diagnostic communication channels and executing a diagnostic service Auxiliary routines create the diagnostic CAN identifiers from the l
6. code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI reads diagnostic trouble codes from the ECU memory If you use the optional group of DTC parameter the ECU reports DTCs based only on the functional group selected by group of DTC For further details about this service refer to the ISO 14230 3 standard National Instruments Corporation 5 55 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW RequestRoutineResultsByLocalldentifier vi Purpose Executes the RequestRoutineResultsByLocalldentifier service Returns results from a routine on the ECU Format diag ref in diag ref out local ID data out error in no error success error out diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster local ID defines the local identifier of the routine from which this VI retrieves results The values are ap
7. 1 LSB_FIRST Intel This VI interprets the response byte stream according to this description and returns the resulting DTC records in the DTCs cluster array diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster Automotive Diagnostic Command Set User Manual 5 46 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW mode defines the type of DTCs to be read The values are application specific The usual values are 2 Allidentified 3 AllSupported group of DTC specifies the group of Diagnostic Trouble Codes to be read The following values have a special meaning and you can specify them through a ring control 0x0000 All powertrain DTCs 0x4000 All chassis DTCs 0x8000 All body DTCs OxC000 All network related DTCs OxFFOO All DTCs error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 ee means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning
8. ndOBDClearEmissionRelatedDiagnosticlnformation Purpose Executes the OBD Clear Emission Related Diagnostic Information service Clears emission related diagnostic trouble codes DTCs in the ECU Format long ndOBDClearEmissionRelatedDiagnosticInformation TD1 diagRef LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct Output success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments Corporation 6 113 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndOBDRequestControlOfOnBoardDevice Purpose Executes the OBD Request Control Of On Board Device service Modifies ECU I O port behavior Format long ndOBDRequestControlOfOnBoardDevice TD1 diagRef unsigned ch
9. status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 118 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW OBD Request Control Of On Board Device vi Purpose Executes the OBD Request Control Of On Board Device service Modifies ECU I O port behavior Format data in diag ref in diag ref out TID ie data out error in no error aan i SUCCESS error out Input data in defines application specific data for this service diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster TID defines the test identifier of the I O to be manipulated The values are application specific error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out HE B
10. Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster data in specifies application specific data that control DTC generation type specifies the control mode Eel E 1 on 2 off error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out a status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 81 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the
11. m a diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster local ID defines the local identifier of the data to be written The values are application specific error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out Ee B status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 ie means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 72 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out
12. ndOpenDiagnostic where the function PrintStat has been defined at the top of the program as void PrintStat mcTypeStatus status char source char statusString 1024 long len sizeof statusString if status 0 ndStatusToString status statusString amp len printf n s nSource s n statusString source if status lt 0 ndCloseDiagnostic amp MyDiagHandle exit 1 National Instruments Corporation 6 29 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndVWTPConnect Purpose Establishes a connection channel to an ECU using the VW TP 2 0 Format long ndVwTPConnect TD1 diagRef unsigned long channelID unsigned char applicationType Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct channelID Defines the CAN identifier on which the ECU responds for this connection The ECU defines the ID on which the host transmits applicationType Specifies the communication type that takes place on the communication channel For diagnostic applications specify KWP2000 1 The other values are for manufacturer specific purposes Output Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A neg
13. no error terror out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster response required indicates whether the ECU answers this service TRUE default or not FALSE In the latter case success is TRUE error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 ie means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 36 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If
14. such as the Simple Error Handler source identifies the VI where the error occurred diag ref out is a cluster containing all necessary diagnostic session information Wire this cluster as a handle to all subsequent diagnostic VIs and close it using Close Diagnostic vi error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description Open Diagnostic vi opens a diagnostic communication channel to an ECU The CAN port specified as input is initialized and a handle to it is stored among other internal data in the diag ref out cluster which serves as reference for further diagnostic functions 3 Note No communication to the ECU takes place at this point To open a diagnostic session on the ECU call StartDiagnosticSession vi or UDS DiagnosticSessionControl vi In general it is not necessary to manipulate the diag ref out
15. the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI requests identification data from the ECU The mode parameter identifies the type of identification data requested The ECU returns identification data that the data out parameter can access The data out format and definition are vehicle manufacturer specific For further details about this service refer to the ISO 14230 3 standard Automotive Diagnostic Command Set User Manual 5 50 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW ReadMemoryByAddress vi Purpose Executes the ReadMemoryByAddress service Reads data from the ECU memory Format diag ref in diag ref out address data out size success error in no error error out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster address defines the memory address from which data are to be read Notice that only three bytes are sent to the ECU so the address must be in the range O FFFFFF hex size defines the length of the memory block to be read error in is a cluster that describes error conditions oc
16. typeDescriptor A struct that specifies the conversion of the physical value to its binary representation typedef struct long StartByte long ByteLength unsigned short ByteOrder unsigned short DataType double ScaleFactor double ScaleOffset TD2 StartByte is ignored by ndConvertFromPhys ByteLength is the number of bytes in the binary representation ByteOrder defines the byte order for multibyte representations The values are 0 MSB_FIRST Motorola 1 LSB_FIRST intel DataType is the binary representation format 0 Unsigned Only byte lengths of 1 4 are allowed 1 Signed Only byte lengths of 1 4 are allowed 2 Float Only byte lengths 4 or 8 are allowed ScaleFactor defines the physical value scaling Phys ScaleFactor binary representation ScaleOffset ScaleOffset refer to ScaleFactor value The physical value to be converted to a binary representation National Instruments Corporation 6 13 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Output dataOut Points to the byte array to be filled with the binary representation of value len On input len must contain the dataOut array length On return it contains the number of valid data bytes in the dataOut array Description Data input to diagnostic services for example ndWriteDataByLocaliIdentifier is usually a byte array of binary data If you have the data input descri
17. 02 disableRxAndEnableTx 03 disableRxAndTx communication type is a bitfield indicating the application level to change The usual values are 01 application 02 networkManagement You can change more than one level at a time error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when TEI status is TRUE National Instruments Corporation 5 79 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW code is the error code number identifying an error A value of 0 ae means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error
18. Automotive Diagnostic Command Set API for LabVIEW OBD Request Emission Related DTCs vi Purpose Executes the OBD Request Emission Related DTCs service Reads all emission related Diagnostic Trouble Codes DTCs Format DTE descriptor CONI diag ref in BD a diag ref out error in no error SS success anes error out DTC descriptor is a cluster that describes the DTC records the ECU delivers DTC Byte Length indicates the number of bytes the ECU sends for each DTC The default is 2 Status Byte Length indicates the number of bytes the ECU sends for each DTC s status The default is 0 for OBD Add Data Byte Length indicates the number of bytes the ECU sends for each DTC s additional data Usually there is no additional data so the default is 0 Byte Order indicates the byte ordering for multibyte items 0 MSB_FIRST Motorola default 1 LSB_FIRST Intel This VI interprets the response byte stream according to this description and returns the resulting DTC records in the DTCs cluster array diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out
19. Description This function requests identification data from the ECU mode identifies the type of identification data requested The ECU returns identification data that dataOut can access The dataOut format and definition are vehicle manufacturer specific For further details about this service refer to the ISO 14230 3 standard Automotive Diagnostic Command Set User Manual 6 50 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndReadMemoryByAddress Purpose Executes the ReadMemoryByAddress service Reads data from the ECU memory Format long ndReadMemoryByAddress TD1 diagRef unsigned long address unsigned char size unsigned char dataOut long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct address Defines the memory address from which data are read Only three bytes are sent to the ECU so the address must be in the range O FFFFFF hex size Defines the length of the memory block to be read Output dataOut Returns the ECU memory data len On input 1en must contain the dataOut array length On return it contains the number of valid data bytes in the dataOut array success Indicates successful receipt of a positive response message for this diagnostic service National Instruments
20. Diagnostic Command Set API for LabVIEW success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred status avail mask is an application specific value returned for all DTCs Description This VI executes the ReportDTCByStatusMask subfunction of the UDS ReadDiagnosticTroubleCodeInformation service and reads the selected DTCs from the ECU For further details about this service refer to the ISO 15765 3 standard Automotive Diagnostic Command Set User Manual 5 98 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW UDS ReportSeverityInformationOfDTC vi Purpose Executes the ReportSeverityInformationOfDTC subfunction of the UDS ReadDiagnosticTroubleCodeInformation service Reads selected Diagnostic Trouble Codes DTC
21. Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndUDSReportDTCByStatusMask Purpose Executes the ReportDTCByStatusMask subfunction of the UDS ReadDiagnosticTroubleCodeInformation service Reads selected Diagnostic Trouble Codes DTCs Format long ndUDSReportDTCByStatusMask TD1 diagRef unsigned char statusMask TD3 DTCDescriptor unsigned char statusAvailMask TD4 DTCs long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct statusMask Defines the status of DTCs to be read The values are application specific DTCDescriptor A struct that describes the DTC records the ECU delivers typedef struct long DTCByteLength long StatusByteLength long AddDataByteLength unsigned short ByteOrder TD3 DTCByteLength indicates the number of bytes the ECU sends for each DTC The default is 3 for UDS StatusByteLength indicates the number of bytes the ECU sends for each DTC s status The default is 1 AddDataByteLength indicates the number of bytes the ECU sends for each DTC s additional data Usually there are no additional data so the default is 0 Automotive Diagnostic Command Set User Manual 6 92 ni com Chapter 6 Automotive Diagnostic Command Set API for
22. Measurements palette Chapter 5 Automotive Diagnostic Command Set API for LabVIEW describes each LabVIEW VI for the Automotive Diagnostic Command Set API To access the VI reference from within LabVIEW press lt Ctrl H gt to open the Help window click the appropriate Automotive Diagnostic Command Set VI and follow the link The Automotive Diagnostic Command Set software includes a full set of LabVIEW examples These examples teach programming basics as well as advanced topics The example help describes each example and includes a link you can use to open the VI Within LabWindows CVI the Automotive Diagnostic Command Set function panel is in Libraries Automotive Diagnostic Command Set As with other LabWindows CVI function panels the Automotive Diagnostic Command Set function panel provides help for each function and the ability to generate code Chapter 6 Automotive Diagnostic Command Set API for C describes each Automotive Diagnostic Command Set API function You can access the reference for each function directly from within the function panel The Automotive Diagnostic Command Set API header file is nidiagcs h The Automotive Diagnostic Command Set API library is nidiagcs 1ib The toolkit software includes a full set of National Instruments Corporation 3 1 Automotive Diagnostic Command Set User Manual Chapter 3 Application Development Visual C 6 LabWindows CVI examples The examples are in the LabWindows CVI
23. ReportDTCByStatusMask vi Purpose Executes the ReportDTCByStatusMask subfunction of the UDS ReadDiagnosticTroubleCodeInformation service Reads selected Diagnostic Trouble Codes DTCs Format DTC descriptor diag ref in status mask error in no error status avail mask Input DTC descriptor is a cluster that describes the DTC records the ECU delivers DTC Byte Length indicates the number of bytes the ECU sends for each DTC The default is 3 for UDS Status Byte Length indicates the number of bytes the ECU sends for each DTC s status The default is 1 Add Data Byte Length indicates the number of bytes the ECU sends for each DTC s additional data Usually there is no additional data so the default is 0 Byte Order indicates the byte ordering for multibyte items E EEO 0 MSB_FIRST Motorola default 1 LSB_FIRST Intel This VI interprets the response byte stream according to this description and returns the resulting DTC records in the DTCs cluster array diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster status mask defines the status of DTCs to be read The values are application specific Automotive Diagnostic Command Set User Manual 5 96 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW error i
24. Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments Corporation 6 127 Automotive Diagnostic Command Set User Manual Technical Support and Professional Services Visit the following sections of the National Instruments Web site at ni com for technical support and professional services Support Online technical support resources at ni com support include the following Self Help Resources For answers and solutions visit the award winning National Instruments Web site for software drivers and updates a searchable KnowledgeBase product manuals step by step troubleshooting wizards thousands of example programs tutorials application notes instrument drivers and so on Free Technical Support All registered users receive free Basic Service which includes access to hundreds of Application Engineers worldwide in the NI Discussion Forums at ni com forums National Instruments Application Engineers make sure every question receives an answer For information about other technical support options in
25. Set API for LabVIEW 6 Wait Frames to Send N_WAIT is the number of WAIT frames the master sends every time before a CTS frame is sent If this value is set to a negative number for example OxFFFFFFFF 1 the master sends an OVERLOAD frame instead of a WAIT and reception is aborted The default is 0 for maximum speed 7 Time between Waits T_W is the number of milliseconds the master waits after sending a WAIT frame The default is 25 usa ro erty value is the value of the property to be set None Description Use this VI to set several internal diagnostic parameters such as timeouts for the transport protocol Use Diag Get Property vi to read them out Automotive Diagnostic Command Set User Manual 5 18 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Diagnostic Service vi Purpose Executes a generic diagnostic service If a special service is not available through the KWP2000 UDS or OBD service functions you can build it using this VI Format diag ref in EEE diag ref out require response error code data in in al j data out error in no error error out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster require response indicates whether a diagnostic service expects a response TRUE o
26. This function converts only 2 byte DTCs If you feed in larger numbers the function returns garbage Output DTCString The DTC string representation len On input 1en must contain the DTCString array length at least 6 On return it contains the number of valid data bytes in the DTCSt ring array Description The SAE J2012 standard specifies a naming scheme for 2 byte DTCs consisting of one letter and four digits Use ndDTCToString to convert the DTC numerical representation to this name National Instruments Corporation 6 21 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndGetProperty Purpose Gets a diagnostic global internal parameter Format void ndGetProperty Input unsigned short propertyID unsigned long propertyValue propertyID Defines the parameter whose value is to be retrieved 0 Timeout Diag Command is the timeout in milliseconds the master waits for the response to a diagnostic request message The default is 1000 ms Timeout FC Bs is the timeout in milliseconds the master waits for a Flow Control frame after sending a First Frame or the last Consecutive Frame of a block The default is 250 ms Timeout CF Cr is the timeout in milliseconds the master waits for a Consecutive Frame in a multiframe response The default is 250 ms Receive Block Size BS is the number of Consecutive Frames the slave sends in one block be
27. User Manual 5 28 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW code is the error code number identifying an error A value of 0 se means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description For the VW TP 2 0 you must disconnect the connection link to the ECU to properly terminate communication to the ECU This VI sends the proper disconnect messages and unlinks the communication You can create a new connection to the same ECU using VWTP Connect vi again There is no equivalent for the ISO TP ISO 15765 2 as the ISO TP does not use a special communication link National Instruments Corporation 5 29 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW KWP2000 Services ClearDiagnosticInformation vi Purpose Executes the ClearDiagnosticInformation service and clears selected Diagnostic Trouble Codes DTCs Format DTC descriptor diag ref in group of DTC error in no error diag ref out success error out Input E BEG DTC descriptor is a cluster that describes the DTC records the
28. VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI performs the UDS service WriteMemoryByAddress and writes Record Values data values to the ECU address and size identify the data The vehicle manufacturer must ensure the ECU conditions are met when performing this service Typical use cases are clearing nonvolatile memory resetting learned values setting option content setting the Vehicle Identification Number or changing calibration values For further details about this service refer to the ISO 15765 3 standard Automotive Diagnostic Command Set User Manual 5 116 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW OBD On Board Diagnostics Services OBD Clear Emission Related Diagnostic Information vi Purpose Executes the OBD Clear Emission Related Diagnostic Information service Clears emission related Diagnostic Trouble Codes DTCs in the ECU Format diag ref in diag ref out success Se error out error in no error diag
29. and modifies the generation behavior of selected Diagnostic Trouble Codes DTCs Convert from Phys vi Converts a physical data value into a binary representation using a type descriptor Convert to Phys vi Converts a binary representation of a value into its physical value using a type descriptor Create Extended CAN IDs vi Creates diagnostic CAN IDs according to ISO 15765 2 Diag Get Property vi Gets a diagnostic global internal parameter Diag Set Property vi Sets a diagnostic global internal parameter Diagnostic Service vi Executes a generic diagnostic service If a special service is not available through the KWP2000 UDS or OBD service functions you can build it using this VI DisableNormalMessageTransmission vi Executes the DisableNormalMessageTransmission service The ECU no longer transmits its regular communication messages usually CAN messages DTC to String vi Returns a string representation such as P1234 for a 2 byte Diagnostic Trouble Code DTC ECUReset vi Executes the ECUReset service and resets the ECU Automotive Diagnostic Command Set User Manual 5 2 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Table 5 1 Automotive Diagnostic Command Set API VIs for LabVIEW Continued Function Purpose EnableNormalMessageTransmission vi Executes the EnableNormalMessageTransmission service The ECU start
30. cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI performs the KWP2000 WriteDataByLocalldentifier service and writes Record Values data values to the ECU data in identifies the data The vehicle manufacturer must ensure the ECU conditions are met when performing this service Typical use cases are clearing nonvolatile memory resetting learned values setting option content setting the Vehicle Identification Number or changing calibration values For further details about this service refer to the ISO 14230 3 standard National Instruments Corporation 5 73 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW WriteMemoryByAddress vi Purpose Executes the WriteMemoryByAddress service Writes data to the ECU memory Format data in diag ref in diag ref out address success size be error out error in no error I
31. cluster contents with one notable exception If you use the ISO TP Mixed Mode transport protocol you must store the address extensions for transmit and receive in the appropriate cluster members National Instruments Corporation 5 23 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW VWTP Connect vi Purpose Establishes a connection channel to an ECU using the VW TP 2 0 Format diag ref in diag ref out channel ID application type error out error in Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster channel ID defines the CAN identifier on which the ECU responds for this connection The ECU defines the ID on which the host transmits application type specifies the type of communication that takes place on the communication channel For diagnostic applications specify KWP2000 1 The other values are for manufacturer specific purposes error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out E oe E status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means succe
32. cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out HEE E status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 ie means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 109 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value m
33. diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments Corporation 6 41 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndinputOutputControlByLocalldentifier Purpose Executes the InputOutputControlByLocalldentifier service Modifies the ECU I O port behavior Format long ndInputOutputControlByLocalIdenti fier TD1 diagRef unsigned char localID unsigned char mode unsigned char dataIn long len unsigned char dataOut long len2 LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct localID Defines the local identifier of the I O to be manipulated The values are application specific mode Defines the I O control type The values are application specific The usual values are 0 ReturnControlToECU 1 ReportCurrentState 4 Reset
34. diagnostic session Format long ndCloseDiagnostic TD1 diagRefIn Input diagRefiIn Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct Output Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description The diagnostic session diagRefIn specifies is closed and you can no longer use it for communication to an ECU This command does not communicate the closing to the ECU before terminating if this is necessary you must manually do so for example by calling ndStopDiagnosticSession before calling ndCloseDiagnostic Automotive Diagnostic Command Set User Manual 6 12 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndConvertFromPhys Purpose Converts a physical data value into a binary representation using a type descriptor Format void ndConvertFromPhys TD2 typeDescriptor double value unsigned char dataOut long len Input
35. either tests that run instead of normal operating code or routines enabled and executed with the normal operating code running In the first case you may need to switch the ECU to a specific diagnostic mode using ndOpenDiagnostic or unlock the ECU using the SecurityAccess service prior to using ndStartRoutineByLocalldentifier For further details about this service refer to the ISO 14230 3 standard National Instruments Corporation 6 65 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndStopDiagnosticSession Purpose Executes the StopDiagnosticSession service Returns the ECU to normal mode Format long ndStopDiagnosticSession TD1 diagRef LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct Output Success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndSt
36. elements of this struct localID Defines the local identifier of the routine to be stopped The values are application specific dataIn Defines application specific input parameters for the routine len Must contain the number of valid data bytes in dataIn Output dataOut Returns application specific output parameters from the routine len2 On input 1en2 must contain the dataOut array length On return it contains the number of valid data bytes in the dataOut array success Indicates successful receipt of a positive response message for this diagnostic service National Instruments Corporation 6 67 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description This function stops a routine in the ECU memory referenced by local ID For further details about this service refer to the ISO 14230 3 standard Automotive Diagnostic Command Set User Manual 6 68 ni com Chapter 6 Automotive Diagnostic Command Set API
37. for C ndTesterPresent Purpose Executes the TesterPresent service Keeps the ECU in diagnostic mode Format long ndTesterPresent TD1 diagRef LVBoolean requireResponse LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct requireResponse Indicates whether a response to this service is required If requireResponse is FALSE no response is evaluated and success is always returned TRUE This parameter is passed by reference Output success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description To ensure proper ECU operation you may need to keep the ECU informed that a diagnostic session is still in progress If you do not send this information for example because the communication is broken the ECU returns to normal mode
38. handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct ID Defines the identifier of the data to be read The values are application specific Output dataOut Returns the ECU data record If you know the record data description use ndConvertToPhys to interpret this record len On input 1en must contain the dataOut array length On return it contains the number of valid data bytes in the dataOut array success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments Corporation 6 85 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Description This function requests data record values from the ECU identified by the ID parameter For further details about this service refer to the ISO 15765 3 standard Automotive Diagnostic Command Set User Manual 6
39. is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs DTCs returns the resulting DTCs as an array of clusters DTC is the resulting Diagnostic Trouble Code For the default 2 byte DTCs you can use DTC to String vi to convert this to readable format as defined by SAE J2012 National Instruments Corporation 5 47 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Status is the DTC status Usually this is a bit field with the following meaning Bit Meaning 0 testFailed 1 testFailedThisMonitoringCycle 2 pendingDTC 3 confirmedDTC 4 testNotCompletedSinceLastClear 5 testFailedSinceLastClear 6 testNotCompletedThisMonitoringCycle 7 warningIndicatorRequested Add Data contains optional additional data for this DTC Usually this does not contain valid information refer to DTC descriptor success indicates successful receipt of a positive response message for TE K je FTE this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the err
40. means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI requests results for example exit status information referenced by local ID and generated by the routine executed in the ECU memory For further details about this service refer to the ISO 14230 3 standard National Instruments Corporation 5 57 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW RequestSeed vi Purpose Executes the SecurityAccess service to retrieve a seed from the ECU Format diag ref in EEE diag ref out access mode j seed out error in no error J success s error out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster access mode indicates the security level to be granted The values are application specific This is an odd number usually 1 error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in
41. operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler 5 85 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW source identifies the VI where the error occurred diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI requests the ECU to perform an ECU reset effectively based on the mode parameter value content The vehicle manufacturer determines when the positive response message is sent For further details about this service refer to the ISO
42. ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 117 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI
43. s additional data Usually there is no additional data so the default is 0 Byte Order indicates the byte ordering for multibyte items 0 MSB_FIRST Motorola default 1 LSB_FIRST Intel This VI interprets the response byte stream according to this description and returns the resulting DTC records in the DTCs cluster array diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster group of DTC specifies the group of Diagnostic Trouble Codes to be read The following values have a special meaning and you can specify them through a ring control National Instruments Corporation 5 53 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW 0x0000 All powertrain DTCs 0x4000 All chassis DTCs 0x8000 All body DTCs OxCO000 All network related DTCs OxFFOO All DTCs error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out Output status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning th
44. status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments Corporation 6 71 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Description This function performs the WriteDataByLocalldentifier service and writes Record Values data values to the ECU datatn identifies the data values to be transmitted The vehicle manufacturer must ensure the ECU conditions are met when performing this service Typical use cases are clearing nonvolatile memory resetting learned values setting option content setting the Vehicle Identification Number or changing calibration values For further details about this service refer to the ISO 14230 3 standard Automotive Diagnostic Command Set User Manual 6 72 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndWriteMemoryByAddress Purpose Executes the WriteMemoryByAddress service Writes data to the ECU memory Format long ndWriteMemoryByAddress TD1 diagRef unsigned long address unsigned char size unsigned char dataIn long len LVBoolean success Input d
45. transferred over the network and reassembles those pieces to recover the original message KWP2000 runs on CAN on various transport protocols such as ISO TP ISO 15765 2 TP 1 6 TP 2 0 Volkswagen and SAE J1939 21 ny Note For KWP2000 the Automotive Diagnostic Command Set supports only the ISO TP standardized in ISO 15765 2 and manufacturer specific VW TP 2 0 transport protocols Diagnostic Services The diagnostic services available in KWP2000 are grouped in functional units and identified by a one byte code Serviceld The standard does not define all codes for some codes the standard refers to other SAE or ISO standards and some are reserved for manufacturer specific extensions The Automotive Diagnostic Command Set supports the following services e Diagnostic Management e Data Transmission e Stored Data Transmission Diagnostic Trouble Codes e Input Output Control e Remote Activation of Routine 3 Note Upload Download and Extended services are not part of the Automotive Diagnostic Command Set Diagnostic Service Format Diagnostic services have a common message format Each service defines a Request Message Positive Response Message and Negative Response Message The Request Message has the Serviceld as first byte plus additional service defined parameters The Positive Response Message has an echo of the Serviceld with bit 6 set as first byte plus the service defined response parameters The Negative Respo
46. wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 121 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs data out returns the ECU data record If you know the record data description you can use Convert from Phys vi to interpret this record You can obtain the description from the SAE J1979 standard success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI F E 5 y wu status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 122 ni com Chapter 5
47. yLocalldentifier service Returns results from a routine on the ECU RequestSeed vi Executes the SecurityAccess service to retrieve a seed from the ECU SendKey vi Executes the SecurityAccess service to send a key to the ECU Automotive Diagnostic Command Set User Manual 5 4 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Table 5 1 Automotive Diagnostic Command Set API VIs for LabVIEW Continued Function Purpose StartDiagnosticSession vi Executes the StartDiagnosticSession service Sets up the ECU in a specific diagnostic mode StartRoutineByLocalldentifier vi Executes the StartRoutineByLocalldentifier service Executes a routine on the ECU StopDiagnosticSession vi Executes the StopDiagnosticSession service Brings the ECU back in normal mode StopRoutineByLocalldentifier vi Executes the StopRoutineByLocalldentifier service Stops a routine on the ECU TesterPresent vi Executes the TesterPresent service Keeps the ECU in diagnostic mode UDS ClearDiagnosticInformation vi Executes the UDS ClearDiagnosticInformation service Clears selected Diagnostic Trouble Codes DTCs UDS CommunicationControl vi Executes the UDS CommunicationControl service Use this VI to switch on or off transmission and or reception of the normal communication messages usually CAN messages UDS ControlDTCSetting vi Executes the UDS ControlDTCSet
48. 000 services C API 6 34 KWP2000 connect disconnect 1 3 definition 1 1 diagnostic service format 1 2 diagnostic services 1 2 Diagnostic Trouble Codes 1 4 external references 1 4 GetSeed Unlock 1 3 input output control 1 4 measurements 1 4 read write memory 1 3 remote activation of a routine 1 4 transport protocol 1 2 KWP2000 services LabVIEW API 5 30 Automotive Diagnostic Command Set User Manual Index L LabVIEW using with Automotive Diagnostic Command Set 3 1 LabVIEW API ClearDiagnosticInformation vi 5 30 Close Diagnostic vi 5 8 ControlDTCSetting vi 5 33 Convert from Phys vi 5 10 Convert to Phys vi 5 12 Create Extended CAN IDs vi 5 14 Diag Get Property vi 5 15 Diag Set Property vi 5 17 Diagnostic Service vi 5 19 DisableNormalMessageTransmission vi 5 36 DTC to String vi 5 21 ECUReset vi 5 38 EnableNormalMessageTransmission vi 5 40 general functions 5 8 InputOutputControlByLocalldentifier vi 5 42 KWP2000 services 5 30 list of VIs 5 2 OBD On Board Diagnostics services 5 117 OBD Clear Emission Related Diagnostic Information vi 5 117 OBD Request Control Of On Board Device vi 5 119 OBD Request Current Powertrain Diagnostic Data vi 5 121 OBD Request Emission Related DTCs During Current Drive Cycle vi 5 126 OBD Request Emission Related DTCs vi 5 123 OBD Request On Board Monitoring Test Results vi 5 129 OBD Request Powertrain Freeze Frame Data vi 5 131
49. 113 ndOBDRequestControlOfOnBoardDevice eee eeeeseeeeceeeeseeeeeeeeeeseeaees 6 114 ndOBDRequestCurrentPowertrainDiagnosticData 0 eee eeeeeseeeeeees 6 116 ndOBDRequestEmissionRelatedDTCs 00 ee eee eeceesseseeseceeeesecseeesesseeeaeeaees 6 118 ndOBDRequestEmissionRelatedDTCsDuringCurrentDriveCycle 6 120 ndOBDRequestOnBoardMonitoringTestResults 0 0 eects eeeeseeeeeereeees 6 122 ndOBDRequestPowertrainFreezeFrameData eee eeeeseeeeeseceeeereeeeeeseenees 6 124 ndOBDRequestVehicleInformation cee ec eeeeseeseeeeeseceseeseceeetsesneeeaeeeaes 6 126 Appendix A Technical Support and Professional Services Index National Instruments Corporation ix Automotive Diagnostic Command Set User Manual About This Manual Conventions This manual provides instructions for using the Automotive Diagnostic Command Set It contains information about installation configuration and troubleshooting and also contains Automotive Diagnostic Command Set function reference for Lab VIEW based and C based APIs bold italic monospace monospace italic The following conventions appear in this manual The symbol leads you through nested menu items and dialog box options to a final action The sequence File Page Setup Options directs you to pull down the File menu select the Page Setup item and select Options from the last dialog box This icon denotes a tip which alerts you to adv
50. 15765 3 standard Automotive Diagnostic Command Set User Manual 5 86 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW UDS InputOutputControlByldentifier vi Purpose Executes the UDS InputOutputControlBylIdentifier service Modifies ECU I O port behavior Format data in diag ref in diag ref out ID data out mode SUCCESS error in no error ee error out Input National Instruments Corporation Ea He A data in defines application specific data for this service diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster ID defines the identifier of the I O to be manipulated The values are application specific mode defines the I O control type The values are application specific The usual values are 0 ReturnControlIToECU 1 ResetToDefault 2 FreezeCurrentState 3 ShortTermAdjustment error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE 5 87 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output ail amp a Lael Descript
51. 2 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description This function executes the ReportSupportedDTCs subfunction of the UDS ReadDiagnosticTroubleCodeInformation service and reads all supported DTCs from the ECU memory For further details about this service refer to the ISO 15765 3 standard Automotive Diagnostic Command Set User Manual 6 100 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndUDSRequestSeed Purpose Executes the UDS SecurityAccess service to retrieve a seed from the ECU Format long ndUDSRequest Seed TD1 diagRef unsigned char accessMode unsigned char seedOut long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct accessMode Indicates the security level to be granted The values are application specific This is an odd number usually 1 Output seedOut Returns the seed from the ECU len On input len must contain the seedOut array length On ret
52. 5 107 UDS SendKey vi 5 109 UDS TesterPresent vi 5 111 UDS WriteDataB ylIdentifier vi 5 113 UDS WriteMemoryByAddress vi 5 115 Unified Diagnostic Services 1 5 qeacaqgqgc cc National Instruments Corporation Index V Visual C 6 using with Automotive Diagnostic Command Set 3 2 VWTP Connect vi 5 24 VWTP Connection Test vi 5 26 VWTP Disconnect vi 5 28 W Web resources A 1 WriteDataByLocalldentifier vi 5 72 WriteMemoryByAddress vi 5 74 Automotive Diagnostic Command Set User Manual
53. 765 3 standard Automotive Diagnostic Command Set User Manual 5 92 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW UDS ReportDTCBySeverityMaskRecord vi Purpose Executes the ReportDTCBySeverityMaskRecord subfunction of the UDS ReadDiagnosticTroubleCodeInformation service Reads selected Diagnostic Trouble Codes DTCs Format DTC descriptor diag ref in severity mask status error in no error success error out status avail mask DTC descriptor is a cluster that describes the DTC records the ECU delivers DTC Byte Length indicates the number of bytes the ECU sends for each DTC The default is 3 for UDS Status Byte Length indicates the number of bytes the ECU sends for each DTC s status The default is 1 sends for each DTC s additional data For this subfunction the default is 2 Add Data Byte Length indicates the number of bytes the ECU Byte Order indicates the byte ordering for multibyte items f ie 0 MSB_FIRST Motorola default 1 LSB_FIRST Intel This VI interprets the response byte stream according to this description and returns the resulting DTC records in the DTCs cluster array diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster National Instruments Corporation 5 93 Automotive Diagnos
54. 86 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndUDSReadMemoryByAddress Purpose Executes the UDS ReadMemoryByAddress service Reads data from the ECU memory Format long ndUDSReadMemoryByAddress TD1 diagRef unsigned long address unsigned char size unsigned char dataOut long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct address Defines the memory address from which data are read Only three bytes are sent to the ECU so the address must be in the range O FFFFFF hex size Defines the length of the memory block to be read Output dataOut Returns the ECU memory data len On input len must contain the dataOut array length On return it contains the number of valid data bytes in the dataOut array success Indicates successful receipt of a positive response message for this diagnostic service National Instruments Corporation 6 87 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive val
55. 979 standard success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI B A EE status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred items is the number of data items not bytes this service returns Automotive Diagnostic Command Set User Manual 5 136 ni com Automotive Diagnostic Command Set API for C This chapter lists the Automotive Diagnostic Command Set API functions and describes their format purpose and parameters Unless otherwise stated each Automotive Diagnostic Command Set function suspends execution of the calling thread until it completes The functions are listed alphabetically in four categories general functions KWP2000 services UDS DiagOnCAN services and OBD On Board Diagnostics services Section Headings The following are section headings fo
56. ByLocalldentifier service Writes a data record to the ECU WriteMemoryByAddress vi Executes the WriteMemoryByAddress service Writes data to the ECU memory National Instruments Corporation Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW General Functions Close Diagnostic vi Purpose Closes a diagnostic session Format diag ref in error in no error error out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 8 ni c
57. C ByteOrder indicates the byte ordering for multibyte items 0 MSB_FIRST Motorola default 1 LSB_FIRST intel This function interprets the response byte stream according to this description and returns the resulting DTC records in the DTCs struct array Output statusAvailMask An application specific value returned for all DTCs DTCs Returns the resulting DTCs as an array of structs typedef struct unsigned long DTC unsigned long Status unsigned long AddData TD4 DTC is the resulting Diagnostic Trouble Code For the default 2 byte DTCs use ndDTCToString to convert this code to readable format as defined by SAE J2012 Status is the DTC status Usually this is a bit field with following meaning Bit Meaning testFailed testFailedThisMonitoringCycle pendingDTC confirmedDTC testNotCompletedSinceLastClear testFailedSinceLastClear nr WN KF O testNotCompletedThisMonitoringCycle 7 warningIndicatorRequested AddData contains optional additional data for this DTC Usually this does not contain valid information refer to DTCDescriptor len On input len must contain the DTCs array length in elements On return it contains the number of valid elements in the DTCs array success Indicates successful receipt of a positive response message for this diagnostic service National Instruments Corporation 6 93 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C
58. C Output dataOut Returns application specific data for this service len2 On input 1en2 must contain the dataOut array length On return it contains the number of valid data bytes in the dataOut array Success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description This function substitutes a value for an input signal or internal ECU function It also controls an output actuator of an electronic system referenced by the ID parameter For further details about this service refer to the ISO 15765 3 standard Automotive Diagnostic Command Set User Manual 6 84 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndUDSReadDataByldentifier Purpose Executes the UDS ReadDataByldentifier service Reads an ECU data record Format long ndUDSReadDataBylIdenti fier TD1 diagRef unsigned short ID unsigned char dataOut long len LVBoolean success Input diagRef Specifies the diagnostic session
59. C functions 6 3 list of data types 6 2 list of LabVIEW VIs 5 2 National Instruments support and services A 1 ndClearDiagnosticInformation 6 34 ndCloseDiagnostic 6 12 ndControlDTCSetting 6 36 ndConvertFromPhys 6 13 ndConvertToPhys 6 15 ndCreateExtendedCANIds 6 17 ndDiagnosticService 6 19 ndDisableNormalMessageTransmission 6 38 ndDTCToString 6 21 ndECUReset 6 39 ndEnableNormalMessageTransmission 6 41 ndGetProperty 6 22 ndInputOutputControlByLocalldentifier 6 42 ndOBDClearEmissionRelatedDiagnostic Information 6 113 ndOBDRequestControlOfOnBoardDevice 6 114 ndOBDRequestCurrentPowertrainDiagnostic Data 6 116 ndOBDRequestEmissionRelatedDTCs 6 118 ndOBDRequestEmissionRelatedDTCsDuring CurrentDriveCycle 6 120 ndOBDRequestOnBoardMonitoringTest Results 6 122 ndOBDRequestPowertrainFreezeFrameData 6 124 ndOBDRequestVehicleInformation 6 126 National Instruments Corporation l 5 Index ndOpenDiagnostic 6 24 ndReadDataByLocalIdentifier 6 44 ndReadDTCByStatus 6 46 ndReadECUlIdentification 6 49 ndReadMemoryByAddress 6 51 ndReadStatusOfDTC 6 53 ndRequestRoutineResultsB yLocalldentifier 6 56 ndRequestSeed 6 58 ndSendKey 6 60 ndSetProperty 6 26 ndStartDiagnosticSession 6 62 ndStartRoutineByLocalldentifier 6 64 ndStatusToString 6 28 ndStopDiagnosticSession 6 66 ndStopRoutineByLocalldentifier 6 67 ndTesterPresent 6 69 ndUDSClearDiagnosticInformation 6 75 ndUDSCommunicationControl 6 77 ndUDSContr
60. CAN Automotive Diagnostic Command Set User Manual January 2007 lt 7 NATIONAL 372139A 01 IE INSTRUMENTS Worldwide Technical Support and Product Information ni com National Instruments Corporate Headquarters 11500 North Mopac Expressway Austin Texas 78759 3504 USA Tel 512 683 0100 Worldwide Offices Australia 1800 300 800 Austria 43 662 457990 0 Belgium 32 0 2 757 0020 Brazil 55 11 3262 3599 Canada 800 433 3488 China 86 21 6555 7838 Czech Republic 420 224 235 774 Denmark 45 45 76 26 00 Finland 385 0 9 725 72511 France 33 0 1 48 14 24 24 Germany 49 89 7413130 India 91 80 41190000 Israel 972 3 6393737 Italy 39 02 413091 Japan 81 3 5472 2970 Korea 82 02 3451 3400 Lebanon 961 0 1 33 28 28 Malaysia 1800 887710 Mexico 01 800 010 0793 Netherlands 31 0 348 433 466 New Zealand 0800 553 322 Norway 47 0 66 90 76 60 Poland 48 22 3390150 Portugal 351 210 311 210 Russia 7 495 783 6851 Singapore 1800 226 5886 Slovenia 386 3 425 42 00 South Africa 27 0 11 805 8197 Spain 34 91 640 0085 Sweden 46 0 8 587 895 00 Switzerland 41 56 2005151 Taiwan 886 02 2377 2222 Thailand 662 278 6777 Turkey 90 212 279 3031 United Kingdom 44 0 1635 523545 For further support information refer to the Technical Support and Professional Services appendix To comment on National Instruments documentation refer to the National Instruments Web site at ni com info and enter the info code feedback 2007 National Instrument
61. CU using ndRequestSeed with access mode n From the seed compute a key for the ECU on the host Send the key to the ECU using ndSendKey with access mode n 1 The security access is granted if the ECU validates the key sent Otherwise an error is returned National Instruments Corporation 6 61 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndStartDiagnosticSession Purpose Executes the StartDiagnosticSession service The ECU is set up in a specific diagnostic mode Format long ndStartDiagnosticSession TD1 diagRef unsigned char mode LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct mode Indicates the diagnostic mode into which the ECU is brought The values are application specific Output Success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use t
62. Corporation 6 51 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description This function requests ECU memory data identified by the address and size parameters The dataOut format and definition are vehicle manufacturer specific dataOut includes analog input and output signals digital input and output signals internal data and system status information if the ECU supports them For further details about this service refer to the ISO 14230 3 standard Automotive Diagnostic Command Set User Manual 6 52 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndReadStatusOfDTC Purpose Executes the ReadStatusOfDiagnosticTroubleCodes service Reads selected Diagnostic Trouble Codes DTCs Format long ndReadStatusOfDTC TD1 diagRef unsigned short groupOfDTC TD3 DTCDescriptor D4 DTCs long len LVBoolean success Input diagRef Specifies the diagnostic session handle ob
63. Corporation 6 79 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndUDSDiagnosticSessionControl Purpose Executes the UDS DiagnosticSessionControl service The ECU is set up in a specific diagnostic mode Format long ndUDSDiagnosticSessionControli TD1 diagRef unsigned char mode LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct mode Indicates the diagnostic mode into which the ECU is brought The values are application specific The usual values are 01 defaultSession 02 ECUProgrammingSession 03 ECUExtendedDiagnosticSession Output Success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Automotive Diagnostic Command Set User Manual 6 80 ni com Chapter 6 Automotive Diagnost
64. D DIFFERS FROM NATIONAL INSTRUMENTS TESTING PLATFORMS AND BECAUSE A USER OR APPLICATION DESIGNER MAY USE NATIONAL INSTRUMENTS PRODUCTS IN COMBINATION WITH OTHER PRODUCTS IN A MANNER NOT EVALUATED OR CONTEMPLATED BY NATIONAL INSTRUMENTS THE USER OR APPLICATION DESIGNER IS ULTIMATELY RESPONSIBLE FOR VERIFYING AND VALIDATING THE SUITABILITY OF NATIONAL INSTRUMENTS PRODUCTS WHENEVER NATIONAL INSTRUMENTS PRODUCTS ARE INCORPORATED IN A SYSTEM OR APPLICATION INCLUDING WITHOUT LIMITATION THE APPROPRIATE DESIGN PROCESS AND SAFETY LEVEL OF SUCH SYSTEM OR APPLICATION Compliance Compliance with FCC Canada Radio Frequency Interference Regulations Determining FCC Class The Federal Communications Commission FCC has rules to protect wireless communications from interference The FCC places digital electronics into two classes These classes are known as Class A for use in industrial commercial locations only or Class B for use in residential or commercial locations All National Instruments NI products are FCC Class A products Depending on where it is operated this Class A product could be subject to restrictions in the FCC rules In Canada the Department of Communications DOC of Industry Canada regulates wireless interference in much the same way Digital electronics emit weak signals during normal operation that can affect radio television or other wireless products All Class A products display a simple warning statement of one para
65. D data out data in pea SUCCESS error in no error b error out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster local ID defines the local identifier of the routine to be stopped The values are application specific data in defines application specific input parameters for the routine error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 68 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs data out returns application specific output parameters from th
66. DTC unsigned long Status unsigned long AddData TD4 DTC is the resulting Diagnostic Trouble Code For the default 2 byte DTCs use ndDTCToString to convert this code to readable format as defined by SAE J2012 Status is the DTC status Usually this is a bit field with following meaning Bit Meaning 0 testFailed 1 testFailedThisMonitoringCycle 2 pendingDTC 3 confirmedDTC 4 testNotCompletedSinceLastClear 5 testFailedSinceLastClear 6 testNotCompletedThisMonitoringCycle 7 warningIndicatorRequested AddData contains optional additional data for this DTC Usually this does not contain valid information refer to DTCDescriptor Automotive Diagnostic Command Set User Manual 6 54 ni com Chapter 6 Automotive Diagnostic Command Set API for C len On input len must contain the DTCs array length in elements On return it contains the number of valid elements in the DTCs array success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the retur
67. DiagnosticData 6 116 ndOBDRequestEmissionRelatedDTCs 6 118 ndOBDRequestEmissionRelatedDTCs DuringCurrentDriveCycle 6 120 ndOBDRequestOnBoardMonitoringTest Results 6 122 ndOBDRequestPowertrainFreezeFrame Data 6 124 ndOBDRequestVehicleInformation 6 126 ndOpenDiagnostic 6 24 ndReadDataByLocalldentifier 6 44 ndReadDTCBy Status 6 46 ndReadECUIdentification 6 49 ndReadMemoryByAddress 6 51 ndReadStatusOfDTC 6 53 ndRequestRoutineResultsB yLocal Identifier 6 56 ndRequestSeed 6 58 ndSendKey 6 60 ndSetProperty 6 26 ndStartDiagnosticSession 6 62 ndStartRoutineByLocalldentifier 6 64 ndStatusToString 6 28 ndStopDiagnosticSession 6 66 ndStopRoutineByLocalldentifier 6 67 ndTesterPresent 6 69 ndUDSClearDiagnosticInformation 6 75 ndUDSCommunicationControl 6 77 ndUDSControlDTCSetting 6 79 ndUDSDiagnosticSessionControl 6 80 ndUDSECUReset 6 81 Automotive Diagnostic Command Set User Manual l 2 ndUDSInputOutputControlByIdentifier 6 83 ndUDSReadDataByldentifier 6 85 ndUDSReadMemoryByAddress 6 87 ndUDSReportDTCBySeverityMaskReco rd 6 89 ndUDSReportDTCByStatusMask 6 92 ndUDSReportSeverityInformationOf DTC 6 95 ndUDSReportSupportedDTCs 6 98 ndUDSRequestSeed 6 101 ndUDSRoutineControl 6 103 ndUDSSendKey 6 105 ndUDSTesterPresent 6 107 ndUDSWriteDataByIdentifier 6 109 ndUDSWriteMemoryByAddress 6 111 ndVWTPConnect 6 30 ndVWTPConnectionTest 6 32 ndVWTPDisconnect 6 33 ndWriteDataByLocalldentifier 6 71 ndWrite
68. E status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 i means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 119 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs data out returns application specific data for this service success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of
69. ECU delivers DTC Byte Length indicates the number of bytes the ECU sends for each DTC The default is 2 Status Byte Length indicates the number of bytes the ECU sends for each DTC s status The default is 1 Add Data Byte Length indicates the number of bytes the ECU sends for each DTC s additional data Usually there is no additional data so the default is 0 Byte Order indicates the byte ordering for multibyte items 0 MSB_FIRST Motorola default 1 LSB_FIRST Intel The DTC descriptor is given here as a parameter basically to convert the group of DTC parameter to a binary representation according to DTC Byte Length and Byte Order diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster Automotive Diagnostic Command Set User Manual 5 30 ni com Output Chapter 5 Automotive Diagnostic Command Set API for LabVIEW group of DTC specifies the group of Diagnostic Trouble Codes to be cleared The following values have a special meaning and you can specify them through a ring control 0x0000 All powertrain DTCs 0x4000 All chassis DTCs 0x8000 All body DTCs OxC000 All network related DTCs OxFFOO All DTCs error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error i
70. For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description The usual procedure for getting a security access to the ECU is as follows 1 Request a seed from the ECU using UDS RequestSeed vi with access mode n 2 From the seed compute a key for the ECU on the host 3 Send the key to the ECU using UDS SendKey vi with access mode n 1 4 The security access is granted if the ECU validates the key sent Otherwise an error is returned Automotive Diagnostic Command Set User Manual 5 106 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW UDS RoutineControl vi Purpose Executes the UDS RoutineControl service Executes a routine on the ECU Format mode diag ref in UDS aaa diag ref out 1D Eri I data out data in pm p SUCCESS error in no error gt error out Input mode defines the service operation mode You can obtain the values from a ring control A 1 Start Routine 2 Stop Routine 3 Request Routine Results Other values are application specific diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster ID defines the identifier of the routine to be started The valu
71. IEW VWTP Disconnect vi Purpose Terminates a connection channel to an ECU using the VW TP 2 0 Format diag ref in diag ref out error in error out diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 es means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred Automotive Diagnostic Command Set
72. MemoryByAddress 6 73 OBD On Board Diagnostics services 6 113 UDS DiagOnCAN services 6 75 ClearDiagnosticInformation vi 5 30 Close Diagnostic vi 5 8 configuration 2 1 connect disconnect KWP2000 1 3 ControlDTCSetting vi 5 33 conventions used in the manual xi Convert from Phys vi 5 10 Convert to Phys vi 5 12 Create Extended CAN IDs vi 5 14 ni com D debugging an application 3 3 Diag Get Property vi 5 15 Diag Set Property vi 5 17 diagnostic service format KWP2000 1 2 UDS 1 5 Diagnostic Service vi 5 19 diagnostic services KWP2000 1 2 UDS 1 5 diagnostic services available 4 4 diagnostic tools NI resources A 1 Diagnostic Trouble Codes KWP2000 1 4 DisableNormalMessageTransmission vi 5 36 documentation conventions used in manual xi NI resources A 1 related documentation xii drivers NI resources A 1 DTC to String vi 5 21 E ECUReset vi 5 38 EnableNormalMessageTransmission vi 5 40 examples NI resources A 1 external references KWP2000 1 4 UDS 1 6 G general functions C API 6 12 LabVIEW API 5 8 general programming model figure 4 3 GetSeed Unlock 1 3 National Instruments Corporation l 3 Index H hardware requirements 2 2 help technical support A 1 input output control 1 4 InputOutputControlByLocalIdentifier vi 5 42 installation 2 1 instrument drivers NI resources A 1 introduction 1 1 K Key Word Protocol 2000 1 1 KnowledgeBase A 1 KWP 2
73. National Instruments Corporation 5 123 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs fen DTCs returns the resulting DTCs as an array of clusters DTC is the resulting Diagnostic Trouble Code For the default 2 byte DTCs you can use DTC to String vi to convert this to readable format as defined by SAE J2012 Status is the DTC status Usually this is a bit field with the following meaning Bit Meaning 0 testFailed 1 testFailedThisMonitoringCycle 2 pendingDTC 3 confirmedDTC 4 testNotCompletedSinceLastClear 5 testFailedSinceLastClear 6 testNotCompletedThisMonitoringCycle 7 warningIndicatorRequested For OBD this field usually does not contain valid information Add Data contains optional additional data for this DTC Usually this does not contain valid in
74. OnWhileMaintainingCommunication This value identifies the PowerOn ResetMode a simulated PowerOn reset that most ECUs perform after the ignition OFF ON cycle When the ECU performs the reset the server ECU maintains communication with the client tester 03 7F Reserved 80 FF ManufacturerSpecific This range of values is reserved for vehicle manufacturer specific use error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out Automotive Diagnostic Command Set User Manual 5 38 ni com Output Description Chapter 5 Automotive Diagnostic Command Set API for LabVIEW status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If
75. ReadDiagnosticTrouble CodesByStatus service Reads selected Diagnostic Trouble Codes DTCs ndReadECUIdentification Executes the ReadECU Identification service Returns ECU identification data from the ECU ndReadMemoryByAddress Executes the ReadMemoryByAddress service Reads data from the ECU memory Automotive Diagnostic Command Set User Manual 6 6 ni com Chapter 6 Automotive Diagnostic Command Set API for C Table 6 2 Functions for the Automotive Diagnostic Command Set for Continued Function Purpose ndReadStatusOf DTC Executes the ReadStatusOfDiagnostic TroubleCodes service Reads selected Diagnostic Trouble Codes DTCs ndRequestRoutineResultsByLocalIdentifier Executes the RequestRoutineResultsBy Localldentifier service Returns results from an ECU routine ndRequestSeed Executes the SecurityAccess service to retrieve a seed from the ECU ndSendKey Executes the SecurityAccess service to send a key to the ECU ndSet Property Set a diagnostic global internal parameter ndStartDiagnosticSession Executes the StartDiagnosticSession service The ECU is set up in a specific diagnostic mode ndStartRoutineByLocallIdentifier Executes the StartRoutineByLocal Identifier service Executes a routine on the ECU ndStatusToString Returns a description for an error code ndStopDiagnosticSession Executes the StopDiagnosticSession service Return
76. TC Format DIAG DTC num DTC string Input DTC num is the DTC number as returned in the clusters of ReadDTCByStatus vi ReadStatusOfDTC vi UDS ReportDTCBySeverityMaskRecord vi UDS ReportDTCByStatusMask vi UDS ReportSeverityInformationOfDTC vi UDS ReportSupportedDTCs vi OBD Request Emission Related DTCs vi or OBD Request Emission Related DTCs During Current Drive Cycle vi 3 Note This VI converts only 2 byte DTCs If you feed in larger numbers the VI returns garbage Output DTC string is the DTC string representation Description The SAE J2012 standard specifies a naming scheme for 2 byte DTCs consisting of one letter and four digits Use DTC to String vi to convert a DTC numerical representation to this name National Instruments Corporation 5 21 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Open Diagnostic vi Purpose Opens a diagnostic session on a CAN port Communication to the ECU is not yet started Format CAN interface baudrate transport protocol error in no error transmit ID receive ID diag ref out error out Input BE E CAN interface specifies the CAN interface on which the diagnostic communication should take place The values are CANO CAN1 and so on baudrate is the diagnostic communication baud rate transport protocol specifies the transport protocol for transferring the diagnostic serv
77. TH COMPONENTS AND TESTING FOR A LEVEL OF RELIABILITY SUITABLE FOR USE IN OR IN CONNECTION WITH SURGICAL IMPLANTS OR AS CRITICAL COMPONENTS IN ANY LIFE SUPPORT SYSTEMS WHOSE FAILURE TO PERFORM CAN REASONABLY BE EXPECTED TO CAUSE SIGNIFICANT INJURY TO A HUMAN 2 IN ANY APPLICATION INCLUDING THE ABOVE RELIABILITY OF OPERATION OF THE SOFTWARE PRODUCTS CAN BE IMPAIRED BY ADVERSE FACTORS INCLUDING BUT NOT LIMITED TO FLUCTUATIONS IN ELECTRICAL POWER SUPPLY COMPUTER HARDWARE MALFUNCTIONS COMPUTER OPERATING SYSTEM SOFTWARE FITNESS FITNESS OF COMPILERS AND DEVELOPMENT SOFTWARE USED TO DEVELOP AN APPLICATION INSTALLATION ERRORS SOFTWARE AND HARDWARE COMPATIBILITY PROBLEMS MALFUNCTIONS OR FAILURES OF ELECTRONIC MONITORING OR CONTROL DEVICES TRANSIENT FAILURES OF ELECTRONIC SYSTEMS HARDWARE AND OR SOFTWARE UNANTICIPATED USES OR MISUSES OR ERRORS ON THE PART OF THE USER OR APPLICATIONS DESIGNER ADVERSE FACTORS SUCH AS THESE ARE HEREAFTER COLLECTIVELY TERMED SYSTEM FAILURES ANY APPLICATION WHERE A SYSTEM FAILURE WOULD CREATE A RISK OF HARM TO PROPERTY OR PERSONS INCLUDING THE RISK OF BODILY INJURY AND DEATH SHOULD NOT BE RELIANT SOLELY UPON ONE FORM OF ELECTRONIC SYSTEM DUE TO THE RISK OF SYSTEM FAILURE TO AVOID DAMAGE INJURY OR DEATH THE USER OR APPLICATION DESIGNER MUST TAKE REASONABLY PRUDENT STEPS TO PROTECT AGAINST SYSTEM FAILURES INCLUDING BUT NOT LIMITED TO BACK UP OR SHUT DOWN MECHANISMS BECAUSE EACH END USER SYSTEM IS CUSTOMIZED AN
78. ToDefault 5 FreezeCurrentState 7 ShortTermAdjustment 8 LongTermAdjustment dataiIn Defines application specific data for this service len Must contain the number of valid data bytes in dataIn Automotive Diagnostic Command Set User Manual 6 42 ni com Chapter 6 Automotive Diagnostic Command Set API for C Output dataOut Returns application specific data for this service len2 On input 1en2 must contain the dataOut array length On return it contains the number of valid data bytes in the dataOut array success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description This function substitutes a value for an input signal or internal ECU function It also controls an output actuator of an electronic system referenced by localID For further details about this service refer to the ISO 14230 3 standard National Instruments Corporation 6 43 Automotive Diagnostic Command Set User Manual Chapter 6 Automotiv
79. VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI performs the UDS service WriteDataByldentifier and writes RecordValues data values to the ECU data in identifies the data The vehicle manufacturer must ensure the ECU conditions are met when performing this service Typical use cases are clearing nonvolatile memory resetting learned values setting option content setting the Vehicle Identification Number or changing calibration values For further details about this service refer to the 15765 3 standard Automotive Diagnostic Command Set User Manual 5 114 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW UDS WriteMemoryByAddress vi Purpose Executes the UDS WriteMemoryByAddress service Writes data to the ECU memory Format data in diag ref in diag ref out address success size error out error in no error Input data in defines the memory block to be written to the ECU diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster address def
80. Vehicles Diagnostic Systems Diagnostic Services Specification e ISO 14230 1 1999 E Road Vehicles Diagnostic Systems Keyword Protocol 2000 Part 1 Physical Layer e ISO 14230 2 1999 E Road Vehicles Diagnostic Systems Keyword Protocol 2000 Part 2 Data Link Layer e ISO 14230 3 1999 E Road Vehicles Diagnostic Systems Keyword Protocol 2000 Part 3 Application Layer e ISO 15765 1 2004 E Road Vehicles Diagnostics on Controller Area Networks CAN Part 1 General Information e ISO 15765 2 2004 E Road Vehicles Diagnostics on Controller Area Networks CAN Part 2 Network Layer Services e ISO 15765 3 2004 E Road Vehicles Diagnostics on Controller Area Networks CAN Part 3 Implementation of Unified Diagnostic Services UDS on CAN e NI CAN Hardware and Software Manual Automotive Diagnostic Command Set User Manual xii ni com Introduction Diagnostics involve remote execution of routines or services on ECUs To execute a routine you send a byte string as a request to an ECU and the ECU usually answers with a response byte string Several diagnostic protocols such as KWP2000 and UDS standardize the format of the services to be executed but those standards leave a large amount of room for manufacturer specific extensions A newer trend is the emission related legislated OnBoard Diagnostics OBD which is manufacturer independent and standardized in SAE J1979 and ISO 15031 5 This standard adds another set of ser
81. ableRxAndEnableTx 03 disableRxAndTx communicationType A bitfield indicating which application level is to be changed The usual values are 01 application 02 networkManagement You can change more than one level at a time Output success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function National Instruments Corporation 6 77 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description This function executes the UDS CommunicationControl service and switches transmission and or reception of the normal communication messages usually CAN messages on or off The type and communication type parameters are vehicle manufacturer specific one OEM may disable the transmission only while another OEM may disable the transmission and reception based on vehicle manufacturer specific needs The request is either transmitted functionally addressed to all ECUs with a single request message or tran
82. alue Automotive Diagnostic Command Set User Manual 6 44 ni com Chapter 6 Automotive Diagnostic Command Set API for C Description This function requests data record values from the ECU identified by the local ID parameter For further details about this service refer to the ISO 14230 3 standard National Instruments Corporation 6 45 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndReadDTCByStatus Purpose Executes the ReadDiagnosticTroubleCodesByStatus service Reads selected Diagnostic Trouble Codes DTCs Format long ndReadDTCByStatus TD1 diagRef unsigned char mode unsigned short groupOfDTC TD3 DTCDescriptor TD4 DTCs long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct mode Defines the type of DTCs to be read The values are application specific The usual values are 2 Allidentified 3 AllSupported groupOfDTC Specifies the group of diagnostic trouble codes to be cleared The following values have a special meaning 0x0000 All powertrain DTCs 0x4000 All chassis DTCs 0x8000 All body DTCs 0xC000 All network related DTCs OxFFOO All DTCs Automotive Diagnostic Command Set User Manual 6 46 ni com Chapter 6 Automotive Diagnostic C
83. alue means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI requests memory data from the ECU identified by the address and size parameters The data out format and definition are vehicle manufacturer specific data out includes analog input and output signals digital input and output signals internal data and system status information if the ECU supports them For further details about this service refer to the ISO 14230 3 standard Automotive Diagnostic Command Set User Manual 5 52 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW ReadStatusOfDTC vi Purpose Executes the ReadStatusOfDiagnosticTroubleCodes service Reads selected Diagnostic Trouble Codes DTCs Format DTC descriptor CO diag ref in T diag ref out group of DTC 4EGe DTCs error in no error success BA error out DTC descriptor is a cluster that describes the DTC records the ECU delivers DTC Byte Length indicates the number of bytes the ECU sends for each DTC The default is 2 Status Byte Length indicates the number of bytes the ECU sends for each DTC s status The default is 1 Add Data Byte Length indicates the number of bytes the ECU sends for each DTC
84. alue of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI substitutes a value for an input signal or internal ECU function It also controls an output actuator of an electronic system referenced by the local ID parameter For further details about this service refer to the ISO 14230 3 standard National Instruments Corporation 5 43 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW ReadDataByLocalldentifier vi Purpose Executes the ReadDataByLocalldentifier service Reads a data record from the ECU Format diag ref in diag ref out local ID data out error in no error SUCCESS error out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster local ID defines the local identifier of the data to be read The values are application specific error in is a cluster that describes error conditions occurring before the VI executes If an error has alr
85. alue of the error in cluster to error out HE E status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs seed out returns the seed from the ECU National Instruments Corporation 5 105 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned
86. alue of the error in cluster to error out mode indicates the type of identification information to be returned The status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 ae means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs data out returns the ECU identification data National Instruments Corporation 5 49 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning
87. ar TID unsigned char dataIn long len unsigned char dataOut long len2 LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct TID Defines the test identifier of the I O to be manipulated The values are application specific dataIn Defines application specific data for this service len Must contain the number of valid data bytes in dataIn Output dataOut Returns application specific data for this service len2 On input 1en2 must contain the dataOut array length On return it contains the number of valid data bytes in the dataOut array Success Indicates successful receipt of a positive response message for this diagnostic service Automotive Diagnostic Command Set User Manual 6 114 ni com Chapter 6 Automotive Diagnostic Command Set API for C Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instru
88. arDiagnosticInformation vi Purpose Executes the UDS ClearDiagnosticInformation service Clears selected Diagnostic Trouble Codes DTCs Format DTC descriptor COII diag ref in m diag ref out group of DTC ERP fer success error in no error error out Input E BEG DTC descriptor is a cluster that describes the DTC records the ECU delivers DTC Byte Length indicates the number of bytes the ECU sends for each DTC The default is 2 Status Byte Length indicates the number of bytes the ECU sends for each DTC s status The default is 1 Add Data Byte Length indicates the number of bytes the ECU sends for each DTC s additional data Usually there is no additional data so the default is 0 Byte Order indicates the byte ordering for multibyte items 0 MSB_FIRST Motorola default 1 LSB_FIRST Intel The DTC descriptor is given here as a parameter basically to convert the group of DTC parameter to a binary representation according to DTC Byte Length and Byte Order diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster Automotive Diagnostic Command Set User Manual 5 76 ni com Output Chapter 5 Automotive Diagnostic Command Set API for LabVIEW group of DTC specifies the group of Diagnostic Trouble Codes to be clear
89. ata record from the ECU that has been stored while a Diagnostic Trouble Code occurred National Instruments Corporation 5 3 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Table 5 1 Automotive Diagnostic Command Set API VIs for LabVIEW Continued Function Purpose OBD Request Supported PIDs vi Executes the OBD Request Current Powertrain Diagnostic Data service to retrieve the valid PID values for this service OBD Request Vehicle Information vi Executes the OBD Request Vehicle Information service Reads a set of information data from the ECU Open Diagnostic vi Opens a diagnostic session on a CAN port Communication to the ECU is not yet started ReadDataByLocalldentifier vi Executes the ReadDataByLocalldentifier service Reads a data record from the ECU ReadDTCByStatus vi Executes the ReadDiagnosticTroubleCodesByStatus service Reads selected Diagnostic Trouble Codes DTCs ReadECUlIdentification vi Executes the ReadECUIdentification service Returns ECU identification data from the ECU ReadMemoryByAddress vi Executes the ReadMemoryByAddress service Reads data from the ECU memory ReadStatusOfDTC vi Executes the ReadStatusOfDiagnosticTroubleCodes service Reads selected Diagnostic Trouble Codes DTCs RequestRoutineResultsByLocalldentifier vi Executes the RequestRoutineResultsB
90. ation 2 1 introduction 1 1 KWP2000 1 1 connect disconnect 1 3 diagnostic service format 1 2 diagnostic services 1 2 Diagnostic Trouble Codes 1 4 external references 1 4 GetSeed Unlock 1 3 input output control 1 4 measurements 1 4 read write memory 1 3 remote activation of a routine 1 4 transport protocol 1 2 LabVIEW RT configuration 2 2 OBD 1 6 software requirements 2 2 structure figure 4 1 tweaking the transport protocol 4 4 National Instruments Corporation l 1 UDS 1 5 diagnostic service format 1 5 diagnostic services 1 5 external references 1 6 using 4 1 using with LabVIEW 3 1 using with LabWindows CVI 3 1 using with other programming languages 3 2 using with Visual C 6 3 2 available diagnostic services 4 4 C C API general functions 6 12 KWP2000 services 6 34 list of data types 6 2 list of functions 6 3 ndClearDiagnosticInformation 6 34 ndCloseDiagnostic 6 12 ndControlDTCSetting 6 36 ndConvertFromPhys 6 13 ndConvertToPhys 6 15 ndCreateExtendedCANIds 6 17 ndDiagnosticService 6 19 ndDisableNormalMessageTransmission 6 38 ndDTCToString 6 21 ndECUReset 6 39 ndEnableNormalMessageTransmission 6 41 ndGetProperty 6 22 Automotive Diagnostic Command Set User Manual Index ndInputOutputControlByLocalldentifier 6 42 ndOBDClearEmissionRelatedDiagnostic Information 6 113 ndOBDRequestControlOfOnBoard Device 6 114 ndOBDRequestCurrentPowertrain
91. ative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Automotive Diagnostic Command Set User Manual 6 30 ni com Chapter 6 Automotive Diagnostic Command Set API for C Description For the VW TP 2 0 you must establish a connection to the ECU before any diagnostic communication can occur This function sets up a unique communication channel to an ECU that you can use in subsequent diagnostic service requests You must maintain the communication link thus created by periodically at least once a second calling ndvwTPConnectionTest No equivalent exists for the ISO TP ISO 15765 2 as the ISO TP does not use a special communication link National Instruments Corporation 6 31 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndVWTPConnectionTest Purpose Maintains a connection channel to an ECU using the VW TP 2 0 Format long ndvWTPConnectiontTest TD1 diagRef Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct Output Return Value The r
92. ative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description ndDiagnosticService is a generic routine to execute any diagnostic service The request and response messages are fed unmodified to the dataIn input and retrieved from the dataOut output respectively No interpretation of the contents is done with one exception The error number is retrieved from a negative response if one occurs In this case an error is communicated through the return value All specialized diagnostic services call ndDiagnosticService internally Automotive Diagnostic Command Set User Manual 6 20 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndDTCToString Purpose Returns a string representation such as P1234 for a 2 byte diagnostic trouble code DTC Format void ndDTCToString unsigned long DTCNum char DTCString long len Input DTCNum The DTC number as returned in the DTCs structs of ndReadDTCByStatus ndReadStatusOfDTC ndUDSReportDTCBySeverityMaskRecord ndUDSReportDTCByStatusMask ndUDSReportSeverityInformationO DTC ndUDSReportSupportedDTCs ndOBDRequestEmissionRelatedDTCs or ndOBDRequestEmissionRelatedDTCsDuringCurrentDriveCycle 3 Note
93. atusToString function to obtain a descriptive string for the return value Description This function disables the current ECU diagnostic mode A diagnostic session stops only if communication with the ECU is established and a diagnostic session is running If no diagnostic session is running the default session is active ndStopDiagnosticSession cannot disable the default session If the ECU stops the current diagnostic session it performs the necessary action to restore its normal operating conditions Restoring the normal ECU operating conditions may include resetting all controlled actuators activated during the diagnostic session being stopped and resuming all normal ECU algorithms You should call ndStopDiagnosticSession before disabling communication with ndCloseDiagnostic but only if you previously used ndStartDiagnosticSession Automotive Diagnostic Command Set User Manual 6 66 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndStopRoutineByLocalldentifier Purpose Executes the StopRoutineByLocalldentifier service Stops a routine on the ECU Format long ndStopRoutineByLocalIdenti fier TD1 diagRef unsigned char localID unsigned char dataIn long len unsigned char dataOut long len2 LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the
94. bVIEW Real Time RT Configuration LabVIEW Real Time RT combines easy to use LabVIEW programming with the power of real time systems When you use a National Instruments PXI controller as a LabVIEW RT system you can install a PXI CAN card and use the NI CAN APIs to develop real time applications As with any NI software library for LabVIEW RT you must install the Automotive Diagnostic Command Set software to the LabVIEW RT target using the Remote Systems branch in MAX For more information refer to the LabVIEW RT documentation After you install the PXI CAN cards and download the Automotive Diagnostic Command Set software to the LabVIEW RT system you must verify the installation Hardware and Software Requirements The Automotive Diagnostic Command Set requires National Instruments NI CAN hardware Series 1 or 2 or USB CAN and the NI CAN driver software version 2 4 or later installed Automotive Diagnostic Command Set User Manual 2 2 ni com Application Development This chapter explains how to develop an application using the Automotive Diagnostic Command Set API Choosing the Programming Language LabVIEW LabWindows CVI The programming language you use for application development determines how to access the Automotive Diagnostic Command Set APIs Automotive Diagnostic Command Set functions and controls are in the LabVIEW palettes In LabVIEW the Automotive Diagnostic Command Set palette is in the top level NI
95. ccess indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI performs the KWP2000 WriteDataByAddress service and writes Record Values data values to the ECU address and size identify the data The vehicle manufacturer must ensure the ECU conditions are met when performing this service Typical use cases are clearing nonvolatile memory resetting learned values setting option content setting the Vehicle Identification Number or changing calibration values For further details about this service refer to the ISO 14230 3 standard National Instruments Corporation 5 75 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW UDS DiagOnCAN Services UDS Cle
96. ccsesseeseceseeceneeeseeceareeseeeeeeeeaee ndInputOutputControlByLocalldentifier 2 0 0 eee eeeeeeseeeeceeeeeeseeeeesees ndReadDataByLocalldentifier 0 0 0 ee eesceesecesceceneeeseeeeeeceeeeeeeceeeesaeeeaeeeaes ndReadDI CBY Status inre deasa e E E RE EER SAS ndReadECU Identification isien a aiaa ndReadMemoryByAddress 0 eee eeeeseeceseseeceseeeeeeseceeeeseeseeeasceseeaeseeeeaeesees ndReadStatusOmDT oss anean is a Eae aE eels tense ATESAT ndRequestRoutineResultsByLocalldentifier eee eeeceseeeeeecenreeseeeeseeenes ndRequestSced riran a a ie eee ea i ndS Keys t eya aa EE E E EEE E R EE ndStartDiagnosticSessSiON iini ae E k aa S RE S E iiS ndStartRoutineByLocalIldentifier eseeeeeeeeseeeseesseeseersresresrsresresesreseeeeseee NAStopDiagnosticSession 0 ceceeceseeseeseessceseeseeesecseceseeseesseesseeseesseeseeseeaes ndStopRoutineByLocalldentifier 0 ee eeeeeeceeeeeeseesseceeeseeseeneeeaeenees nd TesterPresent anaana r E E T Automotive Diagnostic Command Set User Manual viii ni com Contents ndWriteDataByLocalldentifier eee eeeeceeeeceeeeseesseeseeeeceseceeeaeceeenseenees 6 71 ndWriteMemoryByAddress 0 eee eee eeceseeeeeeeceeeeseeseeeseceeesececeseseeseaeesees 6 73 UDS DiagOnCAN Services si sce eeiieed euch EEE E E ON OE EE 6 75 ndUDSClearDiagnosticInformation sseessesesssssseesssteesrsreeresesrrsrsrrsrsresreerstee 6 75 ndUDSCommunicationControl essessseesseeesesessesrsrrsrerrsre
97. ce to set them but this setting is manufacturer specific 3 Note The Automotive Diagnostic Command Set supports single point measurements Diagnostic Trouble Codes A major diagnostic feature is the readout of Diagnostic Trouble Codes DTCs KWP2000 defines several services that access DTCs based on their group or status Input Output Control KWP2000 defines services to modify internal or external ECU signals One example is redirecting ECU sensor inputs to stimulated signals The control parameters of these commands are manufacturer specific and not defined in the standard Remote Activation of a Routine These services are similar to the ActionService and DiagService functions of CCP You can invoke an ECU internal routine identified by a Local Commonldentifier or a memory address Contrary to the CCP case execution of this routine can be asynchronous that is there are separate Start Stop and RequestResult services The control parameters of these commands are manufacturer specific and not defined in the standard External References For more information about the KWP2000 Standard refer to the ISO 14230 3 standard Automotive Diagnostic Command Set User Manual 1 4 ni com Chapter 1 Introduction UDS Unified Diagnostic Services The UDS protocol has become a de facto standard in automotive diagnostic applications It is standardized as ISO 15765 3 UDS describes the implementation of various diagnostic services yo
98. cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs PIDs out returns an array of valid PIDs for the OBD Request Current Powertrain Diagnostic Data service National Instruments Corporation 5 133 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW error out describes error conditions If the error in cluster indicated an pao error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 134 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW OBD Request Vehicle Information vi Purpose Executes the OBD Request Vehicle Information service Reads a set of information data from the ECU Format diag ref in d
99. cluster to error out HE E status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 58 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs seed out returns the seed from the ECU success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI BE E status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the
100. curring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out HA E E status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 51 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs Data out returns the memory data from the ECU success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive v
101. cutive Frames are sent in one run without interruption Wait Time CF STmin defines the minimum time for the slave to wait between sending two Consecutive Frames of a block Values from 0 to 127 are wait times in milliseconds Values 241 to 249 Hex F1 to F9 mean wait times of 100 us to 900 us respectively All other values are reserved The default is 5 ms Max Wait Frames N_WFTmax is the maximum number of WAIT frames the master accepts before terminating the connection The default is 10 5 15 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW 6 Wait Frames to Send N_WAIT is the number of WAIT frames the master sends every time before a CTS frame is sent If this value is set to a negative number for example OxFFFFFFFF 1 the master sends an OVERLOAD frame instead of a WAIT and reception is aborted The default is 0 for maximum speed 7 Time between Waits T_W is the number of milliseconds the master waits after sending a WAIT frame The default is 25 Output property value is the requested property value Description Use this VI to request several internal diagnostic parameters such as timeouts for the transport protocol Use Diag Set Property vi to modify them Automotive Diagnostic Command Set User Manual 5 16 ni com Diag Set Property vi Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Purpose Sets a diagnostic global internal param
102. dd number usually 1 Output seedoOut Returns the seed from the ECU len On input 1en must contain the seedOut array length On return it contains the number of valid data bytes in the seedOut array Success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Automotive Diagnostic Command Set User Manual 6 58 ni com Chapter 6 Automotive Diagnostic Command Set API for C Description The usual procedure for getting a security access to the ECU is as follows 1 2 3 4 Request a seed from the ECU using ndRequestSeed with access mode n From the seed compute a key for the ECU on the host Send the key to the ECU using ndSendKey with access mode n 1 The security access is granted if the ECU validates the key sent Otherwise an error is returned National Instruments Corporation 6 59 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndSendKey Purpose Ex
103. de number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 41 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW InputOutputControlByLocalldentifier vi Purpose Executes the InputOutputControlByLocalldentifier service Modifies ECU I O port behavior Format data in diag ref in A diag ref out local ID LB data out mode p Hee i success error in no error error out Input data in defines application specific data for this service m amp Ee diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster El local ID defines the local identifier of the I O to be manipulated The values are application specific mode defines the type of I O control The values are application specific The usual values are m amp ae 0 ReturnControlToECU 1 ReportCurrentState 4 ResetToDefault 5 Fr
104. ded operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI requests data record values from the ECU identified by the local ID parameter For further details about this service refer to the ISO 14230 3 standard National Instruments Corporation 5 45 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW ReadDTCByStatus vi Purpose Executes the ReadDiagnosticTroubleCodesByStatus service Reads selected Diagnostic Trouble Codes DTCs Format DTC descriptor CI diag ref in 2k i diag ref out mode TO z group of DTC f error in no error error out Input DTC descriptor is a cluster that describes the DTC records the ECU delivers DTC Byte Length indicates the number of bytes the ECU sends for each DTC The default is 2 Status Byte Length indicates the number of bytes the ECU sends for each DTC s status The default is 1 Add Data Byte Length indicates the number of bytes the ECU sends for each DTC s additional data Usually there is no additional data so the default is 0 Byte Order indicates the byte ordering for multibyte items E BEG 0 MSB_FIRST Motorola default
105. des to be cleared The following values have a special meaning 0x0000 All powertrain DTCs 0x4000 All chassis DTCs 0x8000 All body DTCs 0xC000 All network related DTCs OxFFOO All DTCs Output success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Automotive Diagnostic Command Set User Manual 6 34 ni com Chapter 6 Automotive Diagnostic Command Set API for C Description This function clears the diagnostic information on the ECU memory groupOfDTC specifies the type of diagnostic trouble codes to be cleared on the ECU memory For further details about this service refer to the ISO 14230 3 standard National Instruments Corporation 6 35 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndControlDTCSetting Purpose Executes the ControlDTCSetting service Modifies the generation behavior of selected Diagnostic Trouble Codes DTCs Format long ndControlDTCSetting TD1
106. describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 83 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI execu
107. diagRef unsigned short groupOfDTC unsigned char dataIn long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct groupOfDTC Specifies the group of diagnostic trouble codes to be cleared The following values have a special meaning 0x0000 All powertrain DTCs 0x4000 All chassis DTCs 0x8000 All body DTCs OxC000 All network related DTCs OxFFOO All DTCs dataiIn Specifies application specific data that control DTC generation len Must contain the number of valid data bytes in dataIn Automotive Diagnostic Command Set User Manual 6 36 ni com Chapter 6 Automotive Diagnostic Command Set API for C Output success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments Corporation 6 37 Automotive Diagnostic Command Set Us
108. ditions are met when performing this service Typical use cases are clearing nonvolatile memory resetting learned values setting option content setting the Vehicle Identification Number or changing calibration values For further details about this service refer to the ISO 14230 3 standard Automotive Diagnostic Command Set User Manual 6 74 ni com Chapter 6 Automotive Diagnostic Command Set API for C UDS DiagOnCAN Services ndUDSClearDiagnosticInformation Purpose Executes the UDS ClearDiagnosticInformation service Clears selected Diagnostic Trouble Codes DTCs Format long ndUDSClearDiagnosticInformation TD1 diagRef unsigned long groupOfDTC LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct groupOfDTC Specifies the group of diagnostic trouble codes to be cleared The values are application specific The following value has a special meaning OxFFFFFF All DTCs Output success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive valu
109. dler source identifies the VI where the error occurred Description The usual procedure for getting a security access to the ECU is as follows 1 2 3 4 Request a seed from the ECU using RequestSeed vi with access mode n From the seed compute a key for the ECU on the host Send the key to the ECU using SendKey vi with access mode n 1 The security access is granted if the ECU validates the key sent Otherwise an error is returned National Instruments Corporation 5 61 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW StartDiagnosticSession vi Purpose Executes the StartDiagnosticSession service Sets up the ECU in a specific diagnostic mode Format diag ref in diag ref out mode SUCCESS error in no error To error out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster mode indicates the diagnostic mode into which the ECU is brought The values are application specific error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out HE E status is TRUE if an error occurred This VI is not executed when status is TRUE code is th
110. e Diagnostic Command Set API for C ndOpenDiagnostic Purpose Opens a diagnostic session on a CAN port Communication to the ECU is not yet started Format long ndOpenDiagnostic char CANInterface unsigned long baudrate unsigned short transportProtocol unsigned long transmitID unsigned long receiveID TD1 diagRefOut Input CANInterface Specifies the CAN interface on which the diagnostic communication should take place The values are CANO CAN1 and so on baudrate The diagnostic communication baud rate transportProtocol Specifies the transport protocol for transferring the diagnostic service messages over the CAN network The following values are valid 0 ISO TP Normal Mode The ISO TP as specified in ISO 15765 2 is used all eight data bytes of the CAN messages are used for data transfer 1 ISO TP Mixed Mode The ISO TP as specified in ISO 15765 2 is used the first data byte is used as address extension 2 VW TP 2 0 transmitID The CAN identifier for sending diagnostic request messages from the host to the ECU receivelID The CAN identifier for sending diagnostic response messages from the ECU to the host Automotive Diagnostic Command Set User Manual 6 24 ni com Chapter 6 Automotive Diagnostic Command Set API for C Output diagRefOut A struct containing all necessary information about the diagnostic session This is passed as a handle to all subsequent diagnostic functions and yo
111. e Diagnostic Command Set API for C ndReadDataByLocalldentifier Purpose Executes the ReadDataByLocalldentifier service Reads an ECU data record Format long ndReadDataByLocalIdenti fier TD1 diagRef unsigned char localID unsigned char dataOut long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct localID Defines the local identifier of the data to be read The values are application specific Output dataOut Returns the data record from the ECU If you know the record data description you can use the ndConvertToPhys function to interpret it len On input 1en must contain the dataOut array length On return it contains the number of valid data bytes in the dataOut array Success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return v
112. e VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI disables the current ECU diagnostic mode A diagnostic session stops only if communication is established with the ECU and a diagnostic session is running If no diagnostic session is running the default session is active StopDiagnosticSession vi cannot disable the default session If the ECU has stopped the current diagnostic session it performs the necessary action to restore its normal operating conditions Restoring the normal operating conditions of the ECU may include resetting all controlled actuators if they were activated during the diagnostic session being stopped and resuming all normal ECU algorithms You should call StopDiagnosticSession vi before disabling communication with Close Diagnostic vi but only if you previously used StartDiagnosticSession vi National Instruments Corporation 5 67 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW StopRoutineByLocalldentifier vi Purpose Executes the StopRoutineByLocalldentifier service Stops a routine on the ECU Format diag ref in EEE diag ref out local I
113. e VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs fen DTCs returns the resulting DTCs as an array of clusters DTC is the resulting Diagnostic Trouble Code For the default 2 byte DTCs you can use DTC to String vi to convert this to readable format as defined by SAE J2012 Status is the DTC status Usually this is a bit field with the following meaning Bit Meaning 0 testFailed 1 testFailedThisMonitoringCycle 2 pendingDTC Automotive Diagnostic Command Set User Manual 5 54 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW 3 confirmedDTC testNotCompletedSinceLastClear 4 5 testFailedSinceLastClear 6 testNotCompletedThisMonitoringCycle 7 warningIndicatorRequested Add Data contains optional additional data for this DTC Usually this does not contain valid information refer to DTC descriptor success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred
114. e error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 62 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI enables differen
115. e routine success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI BE E status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI stops a routine in the ECU memory referenced by the local ID parameter For further details about this service refer to the ISO 14230 3 standard National Instruments Corporation 5 69 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW TesterPresent vi Purpose Executes the TesterPresent service Keeps the ECU in diagnostic mode Format diag ref in response required gt error in no error Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not neces
116. e specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments Corporation 6 75 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Description This function clears the diagnostic information on the ECU memory Depending on the value of groupOf DTC the ECU is requested to clear the corresponding DTCs The groupofDTC values are application specific For further details about this service refer to the ISO 15765 3 standard Automotive Diagnostic Command Set User Manual 6 76 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndUDSCommunicationControl Purpose Executes the UDS CommunicationControl service Switches transmission and or reception of the normal communication messages usually CAN messages on or off Format long ndUDSCommunicationControl TD1 diagRef unsigned char type unsigned char communicationType LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct type Indicates whether transmission reception is to be switched on off The usual values are 00 enableRxAndTx 01 enableRxAndDisableTx 02 dis
117. e the error occurred National Instruments Corporation 5 91 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs data out returns the ECU memory data success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI requests ECU memory data identified by the address and size parameters The data out format and definition are vehicle manufacturer specific data out includes analog input and output signals digital input and output signals internal data and system status information if the ECU supports them For further details about this service refer to the ISO 15
118. eady occurred the VI returns the value of the error in cluster to error out HH E status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 44 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs data out returns the data record from the ECU If you know the record data description you can interpret this record using Convert from Phys vi success indicates successful receipt of a positive response message for TF this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI HEEE status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the inten
119. eans warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description The usual procedure for getting a security access to the ECU is as follows 1 Request a seed from the ECU using UDS RequestSeed vi with access mode n 2 From the seed compute a key for the ECU on the host 3 Send the key to the ECU using UDS SendKey vi with access mode n 1 4 The security access is granted if the ECU validates the key sent Otherwise an error is returned Automotive Diagnostic Command Set User Manual 5 110 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW UDS TesterPresent vi Purpose Executes the UDS TesterPresent service Keeps the ECU in diagnostic mode Format diag ref in diag ref out response required success error in no error t error out Input Output diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster response required indicates whether the ECU answers this service TRUE default or not FALSE In the latter case success is TRUE error in is a cluster that describes error conditions occurring before
120. ec pha resenev en RE VW TP COnnECtVi teas eich e inn ive eae Mies ha Rae VW EP Connection Test Vic setsesteetienstsSseetteteih ees tiwtnia besoin cent esdesseai ce VWIP Disconnect V a a aea tie eel e r ai KWP2000 ServicE Sannu nnne eiea dice ea aea E E E ves ClearDiagnosticInformation vVi essssesssssssessesssrsresrereseestsresteserestesrnesresenrees ControlDTCOSetting Vi eirinen aa e EE EE E AEREE DisableNormalMessageTransmission Vi eessseesseesseeesrrsrerrsrrersresrsresrrerseese ECUReS V e ee eeo EE a usu E E E N LE OOE ES EnableNormalMessageTransmission Vi ssccesccessscesecesceceteeeneecsateeseeeneeeeaee InputOutputControlByLocalldentifier vi 2 eee eeeeeeseeeseeeeeeeeeeeeeseeeees ReadDataB yLocalldentifier vi 0 eeeesceseeeeceneeeeneceeeceaeeeseeeeeeeaeeesneeeaee Read DT CBYS tats Vi errr deci ad Seevensets E e ET R a e ReadECU Identification Vinne a a aa ts Automotive Diagnostic Command Set User Manual vi ni com Contents ReadMemoryByAddress Vi ce eceeeeseseeceseeseeeseeseeeseeseeeseeaecesecsesesesseseaeesees 5 51 ReadStatsOeDT C2 Vi cisciacssscssasssccsvstecsscasesuscasseseesdiessavessdgestascesceessabeasisescedstet 5 53 RequestRoutineResultsByLocalldentifier Vi oie eee ese eeeeseeeeeeseeeeeeaees 5 56 IRCQUESES CEO VI scscstescecys cases eedits eestaetbes shies casa e haste heteves oeeps taal vytiadesreanees 5 58 SONAK CY Vieren ees og sta avese e e ech dasie ci o aE sta TELTENE ib debet eden bad
121. ecutes the SecurityAccess service to send a key to the ECU Format long ndSendKey TD1 diagRef unsigned char accessMode unsigned char keyIn long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct accessMode Indicates the security level to be granted The values are application specific This is an even number usually 2 keyIn Defines the key data to be sent to the ECU len Must contain the number of valid data bytes in keyIn Output Success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Automotive Diagnostic Command Set User Manual 6 60 ni com Chapter 6 Automotive Diagnostic Command Set API for C Description The usual procedure for getting a security access to the ECU is as follows 1 2 3 4 Request a seed from the E
122. ed The values are application specific The following value has a special meaning and you can specify it through a ring control OxFFFFFF All DTCs error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warni
123. eezeCurrentState 7 ShortTermAdjustment 8 LongTermAdjustment error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out a TE status is TRUE if an error occurred This VI is not executed when TFI status is TRUE Automotive Diagnostic Command Set User Manual 5 42 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW code is the error code number identifying an error A value of 0 tee means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs data out returns application specific data for this service success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI m status is TRUE if an error occurred code is the error code number identifying an error A v
124. ehesses decane 5 60 StartDiagnosticSessiOn Vi eceessseesceseeecseseesscesseseccocsesesecssesseesneensesereesens 5 62 StartRoutineByLocalldentifier Vi 0 ee eeeeseceeeeseeeeeeseseeeeseeseeeaeeseees 5 64 StOpDiagMOStiCSessione Viisaan i a 5 66 StopRoutineByLocalldentifier Vi sseseseeeesseesseseeresreresrrsesresrsresrrersresrrersreee 5 68 TesterPresent Vi sirieni n a a a R G 5 70 WriteDataByLocalldentifier vi eessesesseeeeeesseesesesresrerrsrrstesrsresresesresrsresreeree 5 72 WriteM moryBy Address Vieser a a aia 5 74 UDS DidSONnCAN SEryiCES o ee a a s e A Eae 5 76 UDS ClearDiagnosticInformation Vi sessssesessesseesssesrerrsteersresrrsrsresesresrereste 5 76 UDS CommunicationControl vi s sessesesseesseeseesreserresterrsrestrsrsrerreresresesresresret 5 79 UDS ControlIDT CSetting vi enana aa a 5 81 UDS DiagnosticSessionControl vi sssssesssessssssersresreresrrersresrresrrsrsresrerestes 5 83 UDS ECUReSet Vi rhoir naanin sessi a a a a a a aieia 5 85 UDS InputOutputControlByldentifier View eee eeeeeeceeeeseeeseeseeeeeeaees 5 87 UDS ReadDataByldentifier Vi cece ina aa 5 89 UDS ReadMemoryByAddress vi sseseesssseeseessssetsresrsrrsrsresresrresrrsrsreersrestse 5 91 UDS ReportDTCBySeverityMaskRecord Vi esssseesseesersrssrsrreresesrrsrsrrsrese 5 93 UDS ReportDTCByStatusMask Vvi ssesseeesseeeseessseessesrertsreersesrerrsresrsresreresees 5 96 UDS ReportSeverityInformationOfDTC Vvi ssesesssee
125. elements of this struct DTCMaskRecord Defines the status of DTCs to be read The values are application specific DTCDescriptor A struct that describes the DTC records the ECU delivers typedef struct long DTCByteLength long StatusByteLength long AddDataByteLength unsigned short ByteOrder TD3 DTCByteLength indicates the number of bytes the ECU sends for each DTC The default is 3 for UDS StatusByteLength indicates the number of bytes the ECU sends for each DTC s status The default is 1 AddDataByteLength indicates the number of bytes the ECU sends for each DTC s additional data For this subfunction the default is 2 National Instruments Corporation 6 95 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ByteOrder indicates the byte ordering for multibyte items 0 MSB_FIRST Motorola default 1 LSB_FIRST Intel This function interprets the response byte stream according to this description and returns the resulting DTC records in the DTCs struct array Output statusAvailMask An application specific value returned for all DTCs DTCs Returns the resulting DTCs as an array of structs typedef struct unsigned long DTC unsigned long Status unsigned long AddData TDA DTC is the resulting Diagnostic Trouble Code For the default 2 byte DTCs use ndDTCToString to convert this code to readable format as defined by SAE J2012 Stat
126. ends an OVERLOAD frame instead of a WAIT and reception is aborted The default is 0 for maximum speed Time between Waits T_W is the number of milliseconds the master waits after sending a WAIT frame The default is 25 propertyValue The requested property value Automotive Diagnostic Command Set User Manual 6 26 ni com Chapter 6 Automotive Diagnostic Command Set API for C Output None Description Use this function to set several internal diagnostic parameters such as timeouts for the transport protocol Use ndGet Property to read them out National Instruments Corporation 6 27 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndStatusToString Purpose Returns a description for an error code Format void ndStatusToString long errorCode char message long len Input errorCode The status code return value of an Output message y other diagnostic functions Returns a descriptive string for the error code len On input 1en must contain the mes sage array length On return it contains the number of valid data bytes in the message array Description When the status code returned from an Automotive Diagnostic Command Set function is nonzero an error or warning is indicated This function obtains an error warning description for debugging purposes The return code is passed into the errorcode parameter The len paramet
127. er Manual Chapter 6 Automotive Diagnostic Command Set API for C ndDisableNormalMessageTransmission Purpose Executes the DisableNormalMessageTransmission service The ECU no longer transmits its regular communication messages usually CAN messages Format long ndDisableNormalMessageTransmission TD1 diagRef LVBoolean requireResponse LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct requireResponse Indicates whether a response to this service is required If requireResponse is FALSE no response is evaluated and success is always returned TRUE This parameter is passed by reference Output Success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Automotive Diagnostic Command Set User Manual 6 38 ni com Chapter 6 Automotive Diag
128. er indicates the number of bytes available in the string for the description The description is truncated to size len if needed but a size of 1024 characters is large enough to hold any description The text returned in message is null terminated so you can use it with ANSI C functions such as printf For C or C applications each Automotive Diagnostic Command Set function returns a status code as a signed 32 bit integer The following table summarizes the Automotive Diagnostic Command Set use of this status Automotive Diagnostic Command Set User Manual 6 28 ni com Chapter 6 Automotive Diagnostic Command Set API for C Status Code Use Status Code Definition Negative Error Function did not perform the expected behavior Positive Warning Function performed as expected but a condition arose that may require attention Zero Success Function completed successfully The application code should check the status returned from every Automotive Diagnostic Command Set function If an error is detected close all Automotive Diagnostic Command Set handles and exit the application If a warning is detected you can display a message for debugging purposes or simply ignore the warning The following code shows an example of handling Automotive Diagnostic Command Set status during application debugging Status ndOpenDiagnostic CANO 500000 0 Ox7EO Ox7E8 amp MyDiagHandle PrintStat status
129. er to error out OBDMID defines the parameter identifier of the data to be read The status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 a8 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 129 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs data out returns the ECU data record If you know the record data description you can use Convert from Phys vi to interpret this record You can obtain the description from the SAE J1979 standard success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI F E 5 y wu status is TRUE if an error occurred code is the error code number identifying a
130. erformed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments Corporation 6 125 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndOBDRequestVehiclelnformation Purpose Executes the OBD Request Vehicle Information service Reads a set of information data from the ECU Format long ndOBDRequestVehicleInformation TD1 diagRef unsigned char infoType unsigned char nItems unsigned char dataOut long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct infoType Defines the type of information to be read The SAE J1979 standard defines the values Output nitems The number of data items not bytes this service returns dataOut Returns the ECU vehicle information You can obtain the description from the SAE J1979 standard len On input len must contain the dataOut array length On return it contains the number of valid data bytes in the dataOut array success Indicates successful receipt of a positive response message for this diagnostic service Automotive Diagnostic Command Set User Manual 6 126 ni com Chapter 6 Automotive Diagnostic Command Set API for C
131. error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description The usual procedure for getting a security access to the ECU is as follows 1 Request a seed from the ECU using RequestSeed vi with access mode n 2 From the seed compute a key for the ECU on the host 3 Send the key to the ECU using SendKey vi with access mode n 1 4 The security access is granted if the ECU validates the key sent Otherwise an error is returned National Instruments Corporation 5 59 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW SendKey vi Purpose Executes the SecurityAccess service to send a key to the ECU Format diag ref in diag ref out access mode success key in error out error in no error Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster access mode indicates the security level to be granted The values are application specific This is an even number usually 2 key in defines the key data to be sent to the ECU error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error ou
132. error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 82 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW UDS DiagnosticSessionControl vi Purpose Executes the UDS DiagnosticSessionControl service Sets up the ECU in a specific diagnostic mode Format diag ref out SUCCESS error out diag ref in mode error in no error diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster mode indicates the diagnostic mode into which the ECU is brought The values are application specific The usual values are 01 defaultSession 02 ECUProgrammingSession 03 ECUExtendedDiagnosticSession error in is a cluster that
133. es are application specific data in defines application specific input parameters for the routine error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out Hea E a status is TRUE if an error occurred This VI is not executed when TEI status is TRUE National Instruments Corporation 5 107 Automotive Diagnostic Command Set User Manual Chapter 5 Output Automotive Diagnostic Command Set API for LabVIEW ail amp a Lael Description This VI executes the UDS RoutineControl service and launches an ECU routine stops an ECU routine or requests ECU routine results from the ECU code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs data out returns application specific output parameters from the routine success indicates successful receipt of a positive response message for this diagnostic service error out describes error c
134. es whether the ECU is physically or functionally addressed 0 physical addressing 1 functional addressing transportProtocol Specifies whether normal or mixed mode addressing is used The following values are valid 0 ISO TP Normal Mode The ISO TP as specified in ISO 15765 2 is used all eight data bytes of the CAN messages are used for data transfer 1 ISO TP Mixed Mode The ISO TP as specified in ISO 15765 2 is used the first data byte is used as address extension sourceAddress The host diagnostic tester logical address targetAddress The ECU logical address National Instruments Corporation 6 17 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Output transmitID The generated CAN identifier for sending diagnostic request messages from the host to the ECU receivelID The generated CAN identifier for sending diagnostic response messages from the ECU to the host Description ISO 15765 2 specifies a method for creating extended 29 bit CAN identifiers for diagnostic applications given the addressing mode physical functional the transport protocol normal mixed and the 8 bit source and target addresses This function implements the construction of these CAN identifiers You can use them directly in the ndOpenDiagnostic function Automotive Diagnostic Command Set User Manual 6 18 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndD
135. essary to manually manipulate the elements of this struct OBDMID Defines the parameter identifier of the data to be read The SAE J1979 standard defines the values Output dataOut Returns the ECU test data record If you know the record data description use ndConvertToPhys to interpret this record You can obtain the description from the SAE J1979 standard len On input len must contain the dataOut array length On return it contains the number of valid data bytes in the dataOut array success Indicates successful receipt of a positive response message for this diagnostic service Automotive Diagnostic Command Set User Manual 6 122 ni com Chapter 6 Automotive Diagnostic Command Set API for C Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments Corporation 6 123 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndOBDRequestPowertrainFreezeFrameData Purpose Executes the OBD Request Powertrain Freeze Frame Data service Reads an ECU data record st
136. ests 3 Note You must maintain the communication link you created by periodically at least once a second calling VWTP Connection Test vi There is no equivalent for the ISO TP ISO 15765 2 as the ISO TP does not use a special communication link National Instruments Corporation 5 25 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW VWTP Connection Test vi Purpose Maintains a connection channel to an ECU using the VW TP 2 0 Format diag ref in diag ref out error in error out diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 ae means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source
137. eter Format property ID e property value Input property ID defines the parameter whose value is to be retrieved You can create the values using an Enum control 0 National Instruments Corporation Timeout Diag Command is the timeout in milliseconds the master waits for the response to a diagnostic request message The default is 1000 ms Timeout FC Bs is the timeout in milliseconds the master waits for a Flow Control frame after sending a First Frame or the last Consecutive Frame of a block The default is 250 ms Timeout CF Cr is the timeout in milliseconds the master waits for a Consecutive Frame in a multiframe response The default is 250 ms Receive Block Size BS is the number of Consecutive Frames the slave sends in one block before waiting for the next Flow Control frame A value of O default means all Consecutive Frames are sent in one run without interruption Wait Time CF STmin defines the minimum time for the slave to wait between sending two Consecutive Frames of a block Values from 0 to 127 are wait times in milliseconds Values 241 to 249 Hex F1 to F9 mean wait times of 100 us to 900 us respectively All other values are reserved The default is 5 ms Max Wait Frames N_WFTmax is the maximum number of WAIT frames the master accepts before terminating the connection The default is 10 5 17 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command
138. eturn value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description For the VW TP 2 0 you must periodically maintain the connection link to the ECU so that the ECU does not terminate it You must execute this periodic refresh at least once per second This function sends a Connection Test message to the ECU and evaluates its response performing the necessary steps to maintain the connection There is no equivalent for the ISO TP ISO 15765 2 as the ISO TP does not use a special communication link Automotive Diagnostic Command Set User Manual 6 32 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndVWTPDisconnect Purpose Terminates a connection channel to an ECU using the VW TP 2 0 Format long ndVWTPDisconnect TD1 diagRef Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct Output Return Value The return value indicates the function call status as a sig
139. fies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments Corporation 6 117 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndOBDRequestEmissionRelatedDTCs Purpose Executes the OBD Request Emission Related DTCs service Reads all emission related Diagnostic Trouble Codes DTCs Format long ndOBDRequestEmissionRelatedDTCs TD1 diagRef TD3 DTCDescriptor TD4 DTCs long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct DTCDescriptor A struct that describes the DTC records the ECU delivers typedef struct long DTCByteLength long StatusByteLength long AddDataByteLength unsigned short ByteOrder TD3 DTCByteLength indicates the number of bytes the ECU sends for each DTC The default is 2 StatusByteLength indicates the number of bytes the ECU sends for each DTC s status The default is 0 for OBD AddDataByteLength indicates the number of bytes the ECU sends for each DTC s additional da
140. fore waiting for the next Flow Control frame A value of 0 default means all Consecutive Frames are sent in one run without interruption Wait Time CF STmin defines the minimum time for the slave to wait between sending two Consecutive Frames of a block Values from 0 to 127 are wait times in milliseconds Values 241 to 249 Hex F1 to F9 mean wait times of 100 us to 900 us respectively All other values are reserved The default is 5 ms Max Wait Frames N_WFTmax is the maximum number of WAIT frames the master accepts before terminating the connection The default is 10 Wait Frames to Send N_WAIT is the number of WAIT frames the master sends every time before a CTS frame is sent If you set this value to a negative number for example OXFFFFFFFF 1 the master sends an OVERLOAD frame instead of a WAIT and reception is aborted The default is 0 for maximum speed Time between Waits T_W is the number of milliseconds the master waits after sending a WAIT frame The default is 25 Automotive Diagnostic Command Set User Manual 6 22 ni com Chapter 6 Automotive Diagnostic Command Set API for C Output propertyValue The requested property value Description Use this function to request several internal diagnostic parameters such as timeouts for the transport protocol Use ndSet Property to modify the parameters National Instruments Corporation 6 23 Automotive Diagnostic Command Set User Manual Chapter 6 Automotiv
141. formation refer to DTC descriptor Automotive Diagnostic Command Set User Manual 5 124 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW success indicates successful receipt of a positive response message for TE are A PTF this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 125 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW OBD Request Emission Related DTCs During Current Drive Cycle vi Purpose Executes the OBD Request Emission Related DTCs During Current Drive Cycle service Reads the emission related Diagnostic Trouble Codes DTCs that occurred during the current or last completed drive cycle Format DTC descriptor diag ref in error in no error
142. from diagnostic mode after a while National Instruments Corporation 6 69 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C The TesterPresent service is this keep alive signal It does not affect any other ECU operation Keep calling ndTesterPresent within the ECU timeout period if no other service is executed Automotive Diagnostic Command Set User Manual 6 70 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndWriteDataByLocalldentifier Purpose Executes the WriteDataByLocalldentifier service Writes a data record to the ECU Format long ndWriteDataByLocalIdenti fier TD1 diagRef unsigned char localID unsigned char dataIn long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct localID Defines the local identifier of the data to be read The values are application specific dataiIn Defines the data record to be written to the ECU If you know the record data description use ndConvertFromPhys to generate this record len Must contain the number of valid data bytes in dataIn Output success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call
143. ftware 1 O e National Instruments Corporation Insert the Automotive Diagnostic Command Set CD into the CD ROM drive Open Windows Explorer Access the CD ROM drive Double click on autorun exe to launch the software interface Start the installation The installation program guides you through the rest of the installation process If you have not already installed NI CAN the Automotive Diagnostic Command Set installer automatically installs the NI CAN driver on your computer Within the Devices amp Interfaces branch of the MAX Configuration tree NI CAN hardware is listed along with other hardware in the local computer system If the CAN hardware is not listed here MAX is not configured to search for new devices on startup To search for the new hardware press lt F5 gt To verify installation of the CAN hardware right click the CAN device then select Self test If the self test passes the card icon shows a checkmark If the self test fails the card icon shows an X mark and the Test Status in the right pane describes the problem 2 1 Automotive Diagnostic Command Set User Manual Chapter 2 Installation and Configuration Refer to Appendix A Troubleshooting and Common Questions of the NI CAN User Manual for information about resolving hardware installation problems When installation is complete you can access the Automotive Diagnostic Command Set functions in your application development environment La
144. fully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description This function requests the ECU to perform an ECU reset effectively based on the mode value content The vehicle manufacturer determines when the positive response message is sent Automotive Diagnostic Command Set User Manual 6 40 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndEnableNormalMessageTransmission Purpose Executes the EnableNormalMessageTransmission service The ECU starts transmitting its regular communication messages usually CAN messages Format long ndEnableNormalMessageTransmission TD1 diagRef LVBoolean requireResponse LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct requireResponse Indicates whether a response to this service is required If requireResponse is FALSE no response is evaluated and success is always returned TRUE This parameter is passed by reference Output success Indicates successful receipt of a positive response message for this
145. fy the transport protocol Automotive Diagnostic Command Set User Manual 4 4 ni com Automotive Diagnostic Command Set API for LabVIEW This chapter lists the LabVIEW VIs for the Automotive Diagnostic Command Set API and describes the format purpose and parameters for each VI The VIs are listed alphabetically in four categories general functions KWP2000 services UDS DiagOnCAN services and OBD On Board Diagnostics services Section Headings The following are section headings found in the Automotive Diagnostic Command Set API for LabVIEW VIs Purpose Each VI description briefly describes the VI purpose Format The format section describes the VI format Input and Output The input and output sections list the VI parameters Description The description section gives details about the VI purpose and effect National Instruments Corporation 5 1 Automotive Diagnostic Command Set User Manual Chapter 5 List of Vis Automotive Diagnostic Command Set API for LabVIEW The following table is an alphabetical list of the Automotive Diagnostic Command Set VIs Table 5 1 Automotive Diagnostic Command Set API VIs for LabVIEW Function Purpose ClearDiagnosticInformation vi Executes the ClearDiagnosticInformation service and clears selected Diagnostic Trouble Codes DTCs Close Diagnostic vi Closes a diagnostic session ControlDTCSetting vi Executes the ControlDTCSetting service
146. gned short ID unsigned char mode unsigned char dataIn long len unsigned char dataOut long len2 LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct ID Defines the identifier of the routine to be started The values are application specific mode Defines the operation mode for this service 1 Start Routine 2 Stop Routine 3 Request Routine Results Other values are application specific dataiIn Defines application specific input parameters for the routine len Must contain the number of valid data bytes in dataIn National Instruments Corporation 6 103 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Output dataOut Returns application specific output parameters from the routine len2 On input 1en2 must contain the dataOut array length On return it contains the number of valid data bytes in the dataOut array Success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive va
147. gnostic Command Set as a pointer to a string as const char Automotive Diagnostic Command Set User Manual 6 2 ni com Chapter 6 Automotive Diagnostic Command Set API for C List of Functions The following table contains an alphabetical list of the Automotive Diagnostic Command Set API functions Table 6 2 Functions for the Automotive Diagnostic Command Set for C Function Purpose ndClearDiagnosticInformation Executes the ClearDiagnostic Information service Clears selected Diagnostic Trouble Codes DTCs ndCloseDiagnostic Closes a diagnostic session ndControlDTCSetting Executes the ControlDTCSetting service Modifies the generation behavior of selected Diagnostic Trouble Codes DTCs ndConvertFromPhys Converts a physical data value into a binary representation using a type descriptor ndConvertToPhys Converts a binary representation of a value into its physical value using a type descriptor ndCreateExtendedCANIds Creates diagnostic CAN identifiers according to ISO 15765 2 ndDiagnosticService Executes a generic diagnostic service If a special service is not available through the KWpP2000 UDS or OBD service functions you can build it using this function National Instruments Corporation 6 3 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Table 6 2 Functions for the Automotive Diagnostic Comma
148. graph in length regarding interference and undesired operation The FCC rules have restrictions regarding the locations where FCC Class A products can be operated Consult the FCC Web site at www fcc gov for more information FCC DOC Warnings This equipment generates and uses radio frequency energy and if not installed and used in strict accordance with the instructions in this manual and the CE marking Declaration of Conformity may cause interference to radio and television reception Classification requirements are the same for the Federal Communications Commission FCC and the Canadian Department of Communications DOC Changes or modifications not expressly approved by NI could void the user s authority to operate the equipment under the FCC Rules Class A Federal Communications Commission This equipment has been tested and found to comply with the limits for a Class A digital device pursuant to part 15 of the FCC Rules These limits are designed to provide reasonable protection against harmful interference when the equipment is operated in a commercial environment This equipment generates uses and can radiate radio frequency energy and if not installed and used in accordance with the instruction manual may cause harmful interference to radio communications Operation of this equipment in a residential area is likely to cause harmful interference in which case the user is required to correct the interference at their own expen
149. he VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs DTCs returns the resulting DTCs as an array of clusters National Instruments Corporation DTC is the resulting Diagnostic Trouble Code For the default 2 byte DTCs you can use DTC to String vi to convert this to readable format as defined by SAE J2012 Status is the DTC status Usually this is a bit field with the following meaning Bit Meaning 0 testFailed 1 testFailedThisMonitoringCycle 2 pendingDTC 3 confirmedDTC testNotCompletedSinceLastClear testFailedSinceLastClear testNotCompletedThisMonitoringCycle YI A WwW A warningIndicatorRequested 5 127 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW For OBD this field usually does not contain valid information Add Data contains optional additional data for this DTC Usually this does not contain valid information refer to DTC descriptor success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in clus
150. he intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred status avail mask is an application specific value returned for all DTCs Description This VI executes the ReportSupportedDTCs subfunction of the UDS ReadDiagnosticTroubleCodeInformation service and reads all supported DTCs from the ECU memory For further details about this service refer to the ISO 15765 3 standard Automotive Diagnostic Command Set User Manual 5 104 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW UDS RequestSeed vi Purpose Executes the UDS SecurityAccess service to retrieve a seed from the ECU Format diag ref in diag ref out access mode seed out error in no error success error out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster access mode indicates the security level to be granted The values are application specific This is an odd number usually 1 error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the v
151. he ndStatusToString function to obtain a descriptive string for the return value Automotive Diagnostic Command Set User Manual 6 62 ni com Chapter 6 Automotive Diagnostic Command Set API for C Description This function enables different ECU diagnostic modes The possible diagnostic modes are not defined in ISO 14230 and are application specific A diagnostic session starts only if communication with the ECU is established For more details about starting communication refer to ISO 14230 2 If no diagnostic session is requested after ndOpenDiagnostic a default session is enabled automatically in the ECU The default session supports at least the following services e The StopCommunication service refer to ndCloseDiagnostic and the ISO 14230 2 standard e The TesterPresent service refer to ndTesterPresent and the ISO 14230 3 standard National Instruments Corporation 6 63 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndStartRoutineByLocalldentifier Purpose Executes the StartRoutineByLocalldentifier service Executes a routine on the ECU Format long ndStartRoutineByLocallIdenti fier TD1 diagRef unsigned char localID unsigned char dataIn long len unsigned char dataOut long len2 LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it i
152. i com Chapter 6 Automotive Diagnostic Command Set API for C ndUDSWriteDataByldentifier Purpose Executes the UDS WriteDataBylIdentifier service Writes a data record to the ECU Format long ndUDSWriteDataByIdenti fier TD1 diagRef unsigned short ID unsigned char dataIn long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct ID Defines the identifier of the data to be read The values are application specific dataiIn Defines the data record written to the ECU If you know the record data description use ndConvertFromPhys to generate this record len Must contain the number of valid data bytes in dataIn Output success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments Corporation 6 109 Automo
153. iag ref out info type data out error in no error success error out items Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster info type defines the type of information to be read The values are defined in the SAE J1979 standard error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 135 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs data out returns the vehicle information from the ECU You can obtain the description from the SAE J1
154. iagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct address Defines the memory address to which data are written Only three bytes are sent to the ECU so the address must be in the range O FFFFFF hex size Defines the length of the memory block to be written dataIn Defines the memory block to be written to the ECU len Must contain the number of valid data bytes in dataIn Output Success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function National Instruments Corporation 6 73 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description This VI performs the KWP2000 WriteDataByAddress service and writes RecordValues data values to the ECU address and size identify the data The vehicle manufacturer must ensure the ECU con
155. iagnosticService Purpose Executes a generic diagnostic service If a special service is not available through the KWP2000 UDS or OBD service functions you can build it using this function Format long ndDiagnosticService TD1 diagRef LVBoolean requireResponse unsigned char dataIn long len unsigned char dataOut long len2 Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct requireResponse Indicates whether a response to this service is required If requireResponse is FALSE dataOut returns no values and 1en2 returns 0 This parameter is passed by reference dataIn Contains the request message byte sequence for the diagnostic service sent to the ECU len Must contain the number of valid data bytes in dataIn Output dataOut Contains the response message byte sequence of the diagnostic service returned from the ECU len2 On input 1en2 must contain the number of bytes provided for the dataOut buffer On output it returns the number of valid data bytes in dataOut National Instruments Corporation 6 19 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A neg
156. ic Command Set API for C ndUDSECUReset Purpose Executes the UDS ECUReset service Resets the ECU Format long ndUDSECUReset TD1 diagRef unsigned char mode LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct mode Indicates the reset mode Hex Description 01 hardReset 02 keyOffOnReset 03 softReset 04 enableRapidPowerShutDown 05 disableRapidPowerShutDown Output success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments Corporation 6 81 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Description This function requests the ECU to perform an ECU reset effectively based on the mode parameter value content The vehicle manufacturer determines when the positive re
157. ice messages over the CAN network The following values are valid and can be obtained through an enum control 0 ISO TP Normal Mode The ISO TP as specified in ISO 15765 2 is used all eight data bytes of the CAN messages are used for data transfer 1 ISO TP Mixed Mode The ISO TP as specified in ISO 15765 2 is used the first data byte is used as address extension 2 VW TP 2 0 transmit ID is the CAN identifier for sending diagnostic request messages from the host to the ECU To specify an extended 29 bit ID OR the value with 0x20000000 receive ID is the CAN identifier or sending diagnostic response messages from the ECU to the host To specify an extended 29 bit ID OR the value with 0x20000000 error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out Automotive Diagnostic Command Set User Manual 5 22 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI
158. identifies the VI where the error occurred diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred Automotive Diagnostic Command Set User Manual 5 26 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW code is the error code number identifying an error A value of 0 Je means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description For the VW TP 2 0 you must periodically maintain the connection link to the ECU so that the ECU does not terminate it This VI sends a Connection Test message to the ECU and evaluates its response performing the steps necessary to maintain the connection There is no equivalent for the ISO TP ISO 15765 2 as the ISO TP does not use a special communication link National Instruments Corporation 5 27 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabV
159. ines the memory address to which data are to be written Only three bytes are sent to the ECU so the address must be in the range O FFFFFF hex size defines the length of the memory block to be written error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out He E BE status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 115 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this
160. ion code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs data out returns application specific data for this service success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred This VI substitutes a value for an input signal or internal ECU function It also controls an
161. ireResponse Indicates whether a response to this service is required If requireResponse is FALSE no response is evaluated and success is always returned TRUE This parameter is passed by reference Output success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description To ensure proper ECU operation you may need to keep the ECU informed that a diagnostic session is still in progress If you do not send this information for example because the communication is broken the ECU returns to normal mode from diagnostic mode after a while National Instruments Corporation 6 107 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C The TesterPresent service is this keep alive signal It does not affect any other ECU operation Keep calling nduDSTesterPresent within the ECU timeout period if no other service is executed Automotive Diagnostic Command Set User Manual 6 108 n
162. isory information This icon denotes a note which alerts you to important information Bold text denotes items that you must select or click in the software such as menu items and dialog box options Bold text also denotes parameter names Italic text denotes variables emphasis a cross reference or an introduction to akey concept Italic text also denotes text that is a placeholder for a word or value that you must supply Text in this font denotes text or characters that you should enter from the keyboard sections of code programming examples and syntax examples This font is also used for the proper names of disk drives paths directories programs subprograms subroutines device names functions operations variables filenames and extensions Italic text in this font denotes text that is a placeholder for a word or value that you must supply National Instruments Corporation xi Automotive Diagnostic Command Set User Manual About This Manual Related Documentation The following documents contain information that you might find helpful as you read this manual e ANSIAISO Standard 11898 1993 Road Vehicles Interchange of Digital Information Controller Area Network CAN for High Speed Communication e CAN Specification Version 2 0 1991 Robert Bosch GmbH Postfach 106050 D 70049 Stuttgart 1 e CiA Draft Standard 102 Version 2 0 CAN Physical Layer for Industrial Applications e ISO 14229 1998 E Road
163. ive Diagnostic Command Set API for C Section Headings eccna a e i eE tied PULPOSC inns cats che hea E E eee pene Input and Output ea err aerei re cb sepcs tenes e ee death svtevnle Meera eats DescriptlOnsinsiesistis Sits Saal hata a ee ee a a Eist Of Data Ly pes vas a scessecssecvecdecess nsir o N EER watt A EERE TtSt OF FUN Ctr Ons accc eos chs E EAE eee a i i ERA Bi EN Gren ral PUNCTHONS 222 24c cass sts EAEE EDE AES EEAO ESSEET EL TESA ndCloseDiaghost Cie n E Auta seeds idConyvertFromPhyS a a aa a E E E EAER ndConyertToPhYS ea eE E e a e r Gi ee a es nidCr ateExtended A NIS eoi Steder teiden a e a AE ESEE dDiagnosticSsServicen nna a a a nds lene NOD TPCT OS tng oeaan rE set ERR ER E E EERE ndGetProperty asoa hah E E A NAOPen 1a GMOS tle aer rn ae e EE E E EEE OEE ndSetProper yoa aoea a EE E hee en date R EAAS nd Status TOSHE erine ease eel E a a a eae ndVW TPConnectas suai Ba enna aidin lati Gi we es HAV WEPConnectrOn Tests urr oane Passes ce scvestunes n e a e a a ni ndVWTPDisconnectii ion a Be A RS KEWP2000 SErviCe Sicescicscess cevoscboevevtovchcokewencteeen tes A ER E A cies testa EREA N ndClearDiagnosticInformation cece eseeeseeseeeseeseceseeseeesessseesesseseneeaees ndControlD TCS ett a cls esee se Eea e E RE AE ARa ndDisableNormalMessageTransmission sseseseeeeeseeeeseseesreserssrsseessessreses NUE CUR ESOL terrine n a oa N sree E edi R E A E iat ndEnableNormalMessageTransmission ccs
164. l status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Automotive Diagnostic Command Set User Manual 6 56 ni com Chapter 6 Automotive Diagnostic Command Set API for C Description This function requests results for example exit status information referenced by localID and generated by the routine executed in the ECU memory For further details about this service refer to the ISO 14230 3 standard National Instruments Corporation 6 57 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndRequestSeed Purpose Executes the SecurityAccess service to retrieve a seed from the ECU Format long ndRequestSeed TD1 diagRef unsigned char accessMode unsigned char seedOut long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct accessMode Indicates the security level to be granted The values are application specific This is an o
165. la default 1 LSB_FIRST intel This function interprets the response byte stream according to this description and returns the resulting DTC records in the DTCs struct array Output statusAvailMask An application specific value returned for all DTCs DTCs Returns the resulting DTCs as an array of structs typedef struct unsigned long DTC unsigned long Status unsigned long AddData TD4 DTC is the resulting Diagnostic Trouble Code For the default 2 byte DTCs use ndDTCToString to convert this code to readable format as defined by SAE J2012 Status is the DTC status Usually this is a bit field with following meaning Bit Meaning testFailed testFailedThisMonitoringCycle pendingDTC confirmedDTC testNotCompletedSinceLastClear testFailedSinceLastClear nr WN KF O testNotCompletedThisMonitoringCycle 7 warningIndicatorRequested AddData contains optional additional data for this DTC Usually this does not contain valid information refer to DTCDescriptor len On input len must contain the DTCs array length in elements On return it contains the number of valid elements in the DTCs array success Indicates successful receipt of a positive response message for this diagnostic service National Instruments Corporation 6 99 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Return Value The return value indicates the function call status as a signed 3
166. lue specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description This function executes the UDS RoutineControl service and launches an ECU routine stops an ECU routine or requests ECU routine results from the ECU For further details about this service refer to the ISO 15765 3 standard Automotive Diagnostic Command Set User Manual 6 104 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndUDSSendKey Purpose Executes the UDS SecurityAccess service to send a key to the ECU Format long ndUDSSendKey TD1 diagRef unsigned char accessMode unsigned char keyIn long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct accessMode Indicates the security level to be granted The values are application specific This is an even number usually 2 keyIn Defines the key data to be sent to the ECU len Must contain the number of valid data bytes in keyIn Output success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero
167. means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments Corporation 6 105 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Description The usual procedure for getting a security access to the ECU is as follows 1 Request a seed from the ECU using ndUDSRequest Seed with access mode n 2 From the seed compute a key for the ECU on the host 3 Send the key to the ECU using ndUDSSendKey with access mode n 1 4 The security access is granted if the ECU validates the key sent Otherwise an error is returned Automotive Diagnostic Command Set User Manual 6 106 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndUDSTesterPresent Purpose Executes the UDS TesterPresent service Keeps the ECU in diagnostic mode Format long ndUDSTesterPresent TD1 diagRef LVBoolean requireResponse LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct requ
168. ments Corporation 6 115 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndOBDRequestCurrentPowertrainDiagnosticData Purpose Executes the OBD Request Current Powertrain Diagnostic Data service Reads an ECU data record Format long ndOBDRequestCurrentPowertrainDiagnosticData TD1 diagRef unsigned char PID unsigned char dataOut long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct PID Defines the parameter identifier of the data to be read The SAE J1979 standard defines the values Output dataOut Returns the ECU data record If you know the record data description use ndConvertToPhys to interpret this record You can obtain the description from the SAE J1979 standard len On input len must contain the dataOut array length On return it contains the number of valid data bytes in the dataOut array success Indicates successful receipt of a positive response message for this diagnostic service Automotive Diagnostic Command Set User Manual 6 116 ni com Chapter 6 Automotive Diagnostic Command Set API for C Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value speci
169. n you must unload the Automotive Diagnostic Command Set DLL as follows FreeLibrary NiDiagCSLib Debugging an Application To debug your diagnostic application use the LabVIEW example Diagnostic Monitor vi This example monitors the CAN traffic the diagnostic protocols generate on the level of individual CAN messages It works with all other Automotive Diagnostic Command Set examples and diagnostic applications using the Automotive Diagnostic Command Set To launch this tool open the LabVIEW Example Finder and search for Diagnostic Monitor vi under Hardware Input and Output CAN Automotive Diagnostic Command Set Diagnostic Monitor National Instruments Corporation 3 3 Automotive Diagnostic Command Set User Manual Using the Automotive Diagnostic Command Set Structure of the Automotive Diagnostic Command Set Diagnostic Services Layer KWP2000 Services Auxiliary Routines UDS DiagOnCAN OBD OnBoard Services Diag Services Diagnostic Transport Layer Auxiliary Connection Service Routines Management Execution Transport Protocols ISO TP ISO 15765 2 ree y CAN Layer C DLL A NI CAN 2 3 3 or Higher National Instruments Corporation 4 1 Automotive Diagnostic Command Set User Manual Chapter 4 Using the Automotive Diagnostic Command Set
170. n cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred National Instruments Corporation 5 31 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW code is the error code number identifying an error A value of 0 AEEA means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error ha
171. n error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 130 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW OBD Request Powertrain Freeze Frame Data vi Purpose Executes the OBD Request Powertrain Freeze Frame Data service Reads an ECU data record stored while a Diagnostic Trouble Code occurred Format diag ref in diag ref out PID data out Frame success error in no error error out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster PID defines the parameter identifier of the data to be read The SAE J1979 standard defines the values frame is the number of the freeze frame from which the data are to be retrieved error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out HEE B status is TRUE if an error
172. n is a cluster that describes error conditions occurring before the VI ETH executes If an error has already occurred the VI returns the value of the error in cluster to error out Output status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs DTCs returns the resulting DTCs as an array of clusters National Instruments Corporation DTC is the resulting Diagnostic Trouble Code Status is the DTC status Usually this is a bit field with following meaning Bit Meaning 0 testFailed 1 testFailedThisMonitoringCycle 2 pendingDTC 3 confirmedDTC testNotCompletedSinceLastClear testFailedSinceLastClear testNotCompletedThisMonitoringCycle a AO WwW A warningIndicatorRequested Add Data contains optional additional data for this DTC Usually this does not contain valid information refer to DTC descriptor 5 97 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive
173. n value Description This function reads diagnostic trouble codes from the ECU memory If you specify groupOfDTC the ECU reports DTCs based only on the functional group selected by groupOfDTC For further details about this service refer to the ISO 14230 3 standard National Instruments Corporation 6 55 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndRequestRoutineResultsByLocalldentifier Purpose Executes the RequestRoutineResultsByLocalldentifier service Returns results from an ECU routine Format long ndRequestRoutineResultsByLocalIdentifier TD1 diagRef unsigned char localID unsigned char dataOut long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct localID Defines the local identifier of the routine from which this function retrieves results The values are application specific Output dataOut Returns application specific output parameters from the routine len On input len must contain the dataOut array length On return it contains the number of valid data bytes in the dataOut array success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function cal
174. nd Set User Manual 5 90 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW UDS ReadMemoryByAddress vi Purpose Executes the UDS ReadMemoryByAddress service Reads data from the ECU memory Format diag ref in diag ref out address data out size success error in no error error out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster address defines the memory address from which data are to be read Only three bytes are sent to the ECU so the address must be in the range O FFFFFF hex size defines the length of the memory block to be read error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out HA E B status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 i means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI wher
175. nd Set for C Continued Function Purpose ndDisableNormalMessageTransmission Executes the DisableNormalMessage Transmission service The ECU no longer transmits its regular communication messages usually CAN messages ndDTCToString Returns a string representation such as P1234 for a 2 byte diagnostic trouble code DTC ndECUReset Executes the ECUReset service Resets the ECU ndEnableNormalMessageTransmission Executes the EnableNormalMessage Transmission service The ECU starts transmitting its regular communication messages usually CAN messages ndGet Property Get a diagnostic global internal parameter ndInputOutputControlByLocalIdentifier Executes the InputOutputControlBy Localldentifier service Modifies the ECU I O port behavior ndOBDClearEmissionRelatedDiagnosticInformation Executes the OBD Clear Emission Related Diagnostic Information service Clears emission related diagnostic trouble codes DTCs in the ECU Automotive Diagnostic Command Set User Manual 6 4 ni com Chapter 6 Automotive Diagnostic Command Set API for C Table 6 2 Functions for the Automotive Diagnostic Command Set for Continued Function Purpose ndOBDRequestControlOfOnBoardDevice Executes the OBD Request Control Of On Board Device service Modifies ECU I O port behavior ndOBDRequestCurrentPowertrainDiagnosticData Executes the OBD Request Current Powertrain Diagno
176. ndling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI clears the diagnostic information on the ECU memory If the group of DTC parameter is present the ECU is requested to clear all memory including the DTCs For further details about this service refer to the ISO 14230 3 standard Automotive Diagnostic Command Set User Manual 5 32 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW ControlDTCSetting vi Purpose Executes the ControlDTCSetting service and modifies the generation behavior of selected Diagnostic Trouble Codes DTCs Format DTC descriptor diag ref in data in group of DTC error in no error diag ref out success error out DTC descriptor is a cluster that describes the DTC records the ECU delivers DTC Byte Length indicates the number of bytes the ECU sends for each DTC The default is 2 Status Byte Length indicates the number of bytes the ECU sends for each DTC s status The default is 1 sends for each DTC s additional data Usually there is no additional data so the default is 0 Add Data Byte Length indicates the number of bytes the ECU Byte Order indicates the byte ordering for multibyte items ft i 0 MSB_FIRST Motorola default 1 LSB_FIRST Intel The DTC descriptor is given here as a parameter basically to convert the group of DTC parameter to a binary representation acco
177. neControl Executes the UDS RoutineControl service Executes a routine on the ECU nduDSSendKey Executes the UDS SecurityAccess service to send a key to the ECU nduDSTesterPresent Executes the UDS TesterPresent service Keeps the ECU in diagnostic mode ndUDSWriteDataBylIdentifier Executes the UDS WriteDataByIdentifier service Writes a data record to the ECU Automotive Diagnostic Command Set User Manual 6 10 ni com Chapter 6 Automotive Diagnostic Command Set API for C Table 6 2 Functions for the Automotive Diagnostic Command Set for Continued Function Purpose ndUDSWriteMemoryByAddress Executes the UDS WriteMemoryByAddress service Writes data to the ECU memory ndvwTPConnect Establishes a connection channel to an ECU using the VW TP 2 0 ndvwTPConnectionTest Maintains a connection channel to an ECU using the VW TP 2 0 ndVWTP Disconnect Terminates a connection channel to an ECU using the VW TP 2 0 ndWriteDataByLocalIdentifier Executes the WriteDataByLocal Identifier service Writes a data record to the ECU ndWriteMemoryByAddress Executes the WriteMemoryByAddress service Writes data to the ECU memory National Instruments Corporation 6 11 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C General Functions ndCloseDiagnostic Purpose Closes a
178. ned 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description For the VW TP 2 0 you must disconnect the ECU connection link to properly terminate communication to the ECU This function sends the proper disconnect messages and unlinks the communication Use ndvwTPConnect the create a new connection to the same ECU There is no equivalent for the ISO TP ISO 15765 2 as the ISO TP does not use a special communication link National Instruments Corporation 6 33 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C KWP2000 Services ndClearDiagnosticInformation Purpose Executes the ClearDiagnosticInformation service Clears selected Diagnostic Trouble Codes DTCs Format long ndClearDiagnosticInformation TD1 diagRef unsigned short groupOfDTC LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct groupOfDTC Specifies the group of diagnostic trouble co
179. nformation AddData contains optional additional data for this DTC Usually this does not contain valid information refer to DTCDescriptor len On input len must contain the DTCs array length in elements On return it contains the number of valid elements in the DTCs array success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments Corporation 6 121 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndOBDRequestOnBoardMonitoringTestResults Purpose Executes the OBD Request On Board Monitoring Test Results service Reads an ECU test data record Format long ndOBDRequestOnBoardMonitoringTestResults TD1 diagRef unsigned char OBDMID unsigned char dataOut long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not nec
180. ng the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 77 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Description This VI clears the diagnostic information on the ECU memory If the group of DTC parameter is present the ECU is requested to clear all memory including the DTCs For further details about this service refer to the ISO 15765 3 standard Automotive Diagnostic Command Set User Manual 5 78 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW UDS CommunicationControl vi Purpose Executes the UDS CommunicationControl service Use this VI to switch transmission and or reception of the normal communication messages usually CAN messages on or off Format diag ref in diag ref out type success communication type l error out error in no error Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster type indicates whether transmission reception is to be switched on off The usual values are 00 enableRxAndTx 01 enableRxAndDisableTx
181. nnel established before closing Available Diagnostic Services The standards on automotive diagnostic define many different services for many purposes Unfortunately most services leave a large amount of room for manufacturer specific variants and extensions National Instruments implemented the most used variants while trying not to overload them with optional parameters However all services are implemented in LabVIEW and open to the user If you are missing a service or variant of an existing service you can easily add or modify it on your own In the C API you can also implement your own diagnostic services using the ndDiagnosticService routine However the templates from the existing services are not available Tweaking the Transport Protocol A set of global constants controls transport protocol behavior These constants default to maximum performance To check the properties of an implementation of a transport protocol in an ECU for example you may want to change the constants to nonstandard values using the Get Set Property routines The transport protocols also are fully implemented in LabVIEW and open to the user In LabVIEW you can even modify the protocol behavior for example you can send undefined responses to check the behavior of an implementation However be sure to save the original routine versions to restore the original behavior In the C API changing the global constants is the only way to modi
182. nostic Command Set API for C ndECUReset Purpose Executes the ECUReset service Resets the ECU Format long ndECUReset TD1 diagRef unsigned char mode LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct mode Indicates the reset mode Hex Description 01 PowerOn This value identifies the PowerOn ResetMode a simulated PowerOn reset that most ECUs perform after the ignition OFF ON cycle When the ECU performs the reset the client tester re establishes communication 02 PowerOnWhileMaintainingCommunication This value identifies the PowerOn ResetMode a simulated PowerOn reset that most ECUs perform after the ignition OFF ON cycle When the ECU performs the reset the server ECU maintains communication with the client tester 03 7F Reserved 80 FF ManufacturerSpecific This range of values is reserved for vehicle manufacturer specific use National Instruments Corporation 6 39 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Output Success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed success
183. nput data in defines the memory block to be written to the ECU m amp Ee diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster address defines the memory address to which data are written Notice that only three bytes are sent to the ECU so the address must be in the range O FFFFFF hex size defines the length of the memory block to be written error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out He E status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 74 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs su
184. nse Message is usually a three byte message it has the Negative Response Serviceld as first byte an echo of the original Serviceld Automotive Diagnostic Command Set User Manual 1 2 ni com Chapter 1 Introduction as second byte and a ResponseCode as third byte The only exception to this format is the negative response to an EscapeCode service here the third byte is an echo of the user defined service code and the fourth byte is the ResponseCode The KWP2000 standard partly defines the ResponseCodes but there is room left for manufacturer specific extensions For some of the ResponseCodes KWP2000 defines an error handling procedure Because both positive and negative responses have an echo of the requested service you can always assign the responses to their corresponding request Connect Disconnect KWP2000 expects a diagnostic session to be started with StartDiagnosticSession and terminated with StopDiagnosticSession However StartDiagnosticSession has a DiagnosticMode parameter that determines the diagnostic session type Depending on this type the ECU may or may not support other diagnostic services or operate in a restricted mode where not all ECU functions are available The DiagnosticMode parameter values are manufacturer specific and not defined in the standard For a diagnostic session to remain active it must execute the TesterPresent service periodically if no other service is executed If the TesterPresent service is mi
185. occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 oe means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 131 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs data out returns the ECU data record If you know the record data description you can use Convert from Phys vi to interpret this record You can obtain the description from the SAE J1979 standard success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI F E 5 y wu status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A
186. ogical ECU address Automotive Diagnostic Command Set User Manual 4 2 ni com Chapter 4 Using the Automotive Diagnostic Command Set General Programming Model Open Diagnostic VWTP Connect gt Execute a Diagnostic Service Periodically Execute VWTP ConnectionTest wet as VWTP Disconnect No Close Diagnostic First you must open a diagnostic communication link This involves initializing the CAN port and defining communication parameters such as the baud rate and CAN identifiers on which the diagnostic communication takes place No actual communication to the ECU takes place at this stage For the VW TP 2 0 you then must establish a communication channel to the ECU using the VWTP Connect routine The communication channel properties are negotiated between the host and ECU After these steps the diagnostic communication is established and you can execute diagnostic services of your choice Note that for the VW TP 2 0 you must execute the V WTP ConnectionTest routine periodically once per second to keep the communication channel open National Instruments Corporation 4 3 Automotive Diagnostic Command Set User Manual Chapter 4 Using the Automotive Diagnostic Command Set When you finish your diagnostic services you must close the diagnostic communication link This finally closes the CAN port For the VW TP 2 0 you should disconnect the communication cha
187. olDTCSetting 6 79 ndUDSDiagnosticSessionControl 6 80 ndUDSECUReset 6 81 ndUDSInputOutputControlByldentifier 6 83 ndUDSReadDataBylIdentifier 6 85 ndUDSReadMemoryByAddress 6 87 ndUDSReportDTCBySeverityMaskRecord 6 89 ndUDSReportDTCByStatusMask 6 92 ndUDSReportSeverityInformationOfDTC 6 95 ndUDSReportSupportedDTCs 6 98 ndUDSRequestSeed 6 101 ndUDSRoutineControl 6 103 ndUDSSendKey 6 105 ndUDSTesterPresent 6 107 ndUDS WriteDataB yIdentifier 6 109 ndUDSWriteMemoryByAddress 6 111 ndVWTPConnect 6 30 ndVWTPConnectionTest 6 32 Automotive Diagnostic Command Set User Manual Index ndVWTPDisconnect 6 33 ndWriteDataByLocalldentifier 6 71 ndWriteMemoryByAddress 6 73 NI support and services A 1 0 OBD 1 6 OBD On Board Diagnostics services C API 6 113 LabVIEW API 5 117 OBD Clear Emission Related Diagnostic Information vi 5 117 OBD Request Control Of On Board Device vi 5 119 OBD Request Current Powertrain Diagnostic Data vi 5 121 OBD Request Emission Related DTCs During Current Drive Cycle vi 5 126 OBD Request Emission Related DTCs vi 5 123 OBD Request On Board Monitoring Test Results vi 5 129 OBD Request Powertrain Freeze Frame Data vi 5 131 OBD Request Supported PIDs vi 5 133 On Board Diagnostic 1 6 Open Diagnostic vi 5 22 other programming languages using with Automotive Diagnostic Command Set 3 2 P programming examples NI resources A 1 programming language choosing 3 1 R read
188. om Chapter 5 Automotive Diagnostic Command Set API for LabVIEW error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description The diagnostic session specified by diag ref in is closed and you can no longer use it for communication to an ECU Note that this command does not communicate the closing to the ECU before terminating if this is necessary you must manually do so for example by calling StopDiagnosticSession vi before calling Close Diagnostic vi National Instruments Corporation 5 9 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Convert from Phys vi Purpose Converts a physical data value into a binary representation using a type descriptor Format type descriptor data out value Input type descriptor is a cluster tha
189. ommand Set API for C DTCDescriptor A struct that describes the DTC records the ECU delivers typedef struct long DTCByteLength long StatusByteLength long AddDataByteLength unsigned short ByteOrder E TD3 DTCByteLength indicates the number of bytes the ECU sends for each DTC The default is 2 StatusByteLength indicates the number of bytes the ECU sends for each DTC s status The default is 1 AddDataByteLength indicates the number of bytes the ECU sends for each DTC s additional data Usually there are no additional data so the default is 0 ByteOrder indicates the byte ordering for multibyte items 0 MSB_FIRST Motorola default 1 LSB_FIRST Intel This function interprets the response byte stream according to this description and returns the resulting DTC records in the DTCs struct array Output DTCs Returns the resulting DTCs as an array of structs typedef struct unsigned long DTC unsigned long Status unsigned long AddData TD4 DTC is the resulting Diagnostic Trouble Code For the default 2 byte DTCs use ndDTCToString to convert this code to readable format as defined by SAE J2012 Status is the DTC status Usually this is a bit field with following meaning Bit Meaning testNotCompletedSinceLastClear 0 testFailed 1 testFailedThisMonitoringCycle 2 pendingDTC 3 confirmedDTC 4 5 testFailedSinceLastClear National Instruments Corporation 6 47 Automotive Diagnostic Command Se
190. ommand Set User Manual 5 94 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW 6 testNotCompletedThisMonitoringCycle 7 warningIndicatorRequested Add Data contains optional additional data for this DTC success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred status avail mask is an application specific value returned for all DTCs Description This VI executes the ReportDTCBySeverityMaskRecord subfunction of the UDS ReadDiagnosticTroubleCodeInformation service and reads the selected DTCs For further details about this service refer to the ISO 15765 3 standard National Instruments Corporation 5 95 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW UDS
191. onditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred For further details about this service refer to the ISO 15765 3 standard Automotive Diagnostic Command Set User Manual 5 108 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW UDS SendKey vi Purpose Executes the SecurityAccess service to send a key to the ECU Format diag ref in diag ref out access mode success key in error out error in no error Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster access mode indicates the security level to be granted The values are application specific This is an even number usually 2 key in defines the key data to be sent to the ECU error in is a
192. or code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI reads DTCs by status from the ECU memory If you use the optional group of DTC parameter the ECU reports DTCs only with status information based on the functional group selected by group of DTC For further details about this service refer to the ISO 14230 3 standard Automotive Diagnostic Command Set User Manual 5 48 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW ReadECUldentification vi Purpose Executes the ReadECUlIdentification service Returns ECU identification data Format diag ref in diag ref out mode data out error in no error success error out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster values are application specific error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the v
193. or the information contained in it EXCEPT AS SPECIFIED HEREIN NATIONAL INSTRUMENTS MAKES NO WARRANTIES EXPRESS OR IMPLIED AND SPECIFICALLY DISCLAIMS ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE CUSTOMER S RIGHT TO RECOVER DAMAGES CAUSED BY FAULT OR NEGLIGENCE ON THE PART OF NATIONAL INSTRUMENTS SHALL BE LIMITED TO THE AMOUNT THERETOFORE PAID BY THE CUSTOMER NATIONAL INSTRUMENTS WILL NOT BE LIABLE FOR DAMAGES RESULTING FROM LOSS OF DATA PROFITS USE OF PRODUCTS OR INCIDENTAL OR CONSEQUENTIAL DAMAGES EVEN IF ADVISED OF THE POSSIBILITY THEREOF This limitation of the liability of National Instruments will apply regardless of the form of action whether in contract or tort including negligence Any action against National Instruments must be brought within one year after the cause of action accrues National Instruments shall not be liable for any delay in performance due to causes beyond its reasonable control The warranty provided herein does not cover damages defects malfunctions or service failures caused by owner s failure to follow the National Instruments installation operation or maintenance instructions owner s modification of the product owner s abuse misuse or negligent acts and power failure or surges fire flood accident actions of third parties or other events outside reasonable control Copyright Under the copyright laws this publication may not be reproduced or transmitted in any form elec
194. ored while a diagnostic trouble code occurred Format long ndOBDRequestPowertrainFreezeFrameData TD1 diagRef unsigned char PID unsigned char nFrame unsigned char dataOut long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct PID Defines the parameter identifier of the data to be read The SAE J1979 standard defines the values nFrame The number of the freeze frame from which the data are to be retrieved Output dataOut Returns the ECU data record If you know the record data description use ndConvertToPhys to interpret this record You can obtain the description from the SAE J1979 standard len On input len must contain the dataOut array length On return it contains the number of valid data bytes in the dataOut array success Indicates successful receipt of a positive response message for this diagnostic service Automotive Diagnostic Command Set User Manual 6 124 ni com Chapter 6 Automotive Diagnostic Command Set API for C Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function p
195. ormation available via OBD has increased since the introduction of on board vehicle computers in the early 1980s Modern OBD implementations use a CAN communication port to provide real time data and a standardized series of diagnostic trouble codes DTCs which identify and remedy malfunctions within the vehicle In the 1970s and early 1980s manufacturers began using electronic means to control engine functions and diagnose engine problems This was primarily to meet EPA emission standards Through the years on board diagnostic systems have become more sophisticated OBD II a new standard introduced in the mid 1990s provides almost complete engine control and also monitors parts of the chassis body and accessory devices as well as the car s diagnostic control network The On Board Diagnostic OBD standard defines a minimum set of diagnostic information for passenger cars and light and medium duty trucks which must be exchanged with any off board test equipment Automotive Diagnostic Command Set User Manual 1 6 ni com Installation and Configuration This chapter explains how to install and configure the Automotive Diagnostic Command Set Installation This section discusses the Automotive Diagnostic Command Set installation for Microsoft Windows 3 Note You need administrator rights to install the Automotive Diagnostic Command Set on your computer Follow these steps to install the Automotive Diagnostic Command Set so
196. output actuator of an electronic system referenced by the local ID parameter For further details about this service refer to the ISO 15765 3 standard Automotive Diagnostic Command Set User Manual 5 88 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW UDS ReadDataByldentifier vi Purpose Executes the UDS ReadDataByldentifier service Reads a data record from the ECU Format diag ref in nnn diag ref out ID data out error in no error j success error out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster ID defines the identifier of the data to be read The values are application specific error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out HE E status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 a means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI
197. plication specific error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 56 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs data out returns application specific output parameters from the routine success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI BE E status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value
198. positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 132 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW OBD Request Supported PIDs vi Purpose Executes the OBD Request Current Powertrain Diagnostic Data service to retrieve the valid PID values for this service Format diag ref in diag ref out PIDs out error out error in no error diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error
199. ption for example byte 3 and 4 are engine RPM scaled as 25 x RPM in Motorola representation you can use ndConvertFromPhys to convert the physical value to the byte stream by filling an appropriate typeDescriptor struct ndConvertFromPhys converts only the portion specified by one type descriptor to a binary representation If your data input consists of several values you can use ndConvertFromPhys multiple times on different parts of the byte array Automotive Diagnostic Command Set User Manual 6 14 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndConvertToPhys Purpose Converts a binary representation of a value into its physical value using a type descriptor Format void ndConvertToPhys TD2 typeDescriptor unsigned char dataIn long len double value Input typeDescriptor A struct that specifies the conversion of the physical value to its binary representation typedef struct long StartByte long ByteLength unsigned short ByteOrder unsigned short DataType double ScaleFactor double ScaleOffset TD2 StartByte gives the start byte of the binary representation in the dataIn record ByteLength is the number of bytes in the binary representation ByteOrder defines the byte order for multibyte representations The values are 0 MSB_FIRST Motorola 1 LSB_FIRST Intel DataType is the binary representation format 0 Unsigned Only byte lengths of 1 4 are allowed 1 Signed Onl
200. pulate the elements of this cluster response required indicates whether the ECU answers this service IF TRUE default or not FALSE In the latter case success is TRUE error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out HE E status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 40 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error co
201. r not FALSE In the latter case error code is returned as 0 and data out as an empty array T data in defines the diagnostic service request message sent to the ECU as a stream of bytes error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out GE B E status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 19 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs error code is the error code sent with a negative response message In addition the error cluster indicates an error and gives a more detailed description If no negative response message occurred 0 is returned data out returns the diagnostic service response message positive or negative the ECU
202. racted Output value is the physical value extracted from the record Automotive Diagnostic Command Set User Manual 5 12 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Description Data output from diagnostic services for example ReadDataByLocalldentifier vi is usually a byte stream of binary data If you have a description of the data output for example byte 3 and 4 are engine RPM scaled as 25 x RPM in Motorola representation you can use Convert to Phys vi to extract the physical value from the byte stream by filling an appropriate type descriptor cluster National Instruments Corporation 5 13 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Create Extended CAN IDs vi Purpose Creates diagnostic CAN IDs according to ISO 15765 2 Format transmit ID receive ID addressing mode transport protocol source address target address Input addressing mode specifies whether the ECU is physically or functionally addressed transport protocol specifies whether normal or mixed mode addressing is used source address is the logical address of the host diagnostic tester target address is the ECU logical address Output transmit ID is the generated CAN identifier for sending diagnostic request messages from the host to the ECU receive ID is the generated CAN identifier for sending diagnostic response messages from the ECU
203. rding to DTC Byte Length and Byte Order diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster data in specifies application specific data that control DTC generation National Instruments Corporation 5 33 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output Automotive Diagnostic Command group of DTC specifies the group of Diagnostic Trouble Codes to be controlled The following values have a special meaning and you can specify them through a ring control 0x0000 All powertrain DTCs 0x4000 All chassis DTCs 0x8000 All body DTCs 0xC000 All network related DTCs OxFFOO All DTCs error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Er
204. ritten to the ECU len Must contain the number of valid data bytes in dataIn Output success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function National Instruments Corporation 6 111 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description This function performs the UDS service WriteMemoryByAddress and writes RecordValues data values into the ECU address and size identify the data The vehicle manufacturer must ensure the ECU conditions are met when performing this service Typical use cases are clearing nonvolatile memory resetting learned values setting option content setting the Vehicle Identification Number or changing calibration values For further details about this service refer to the ISO 15765 3 standard Automotive Diagnostic Command Set User Manual 6 112 ni com Chapter 6 Automotive Diagnostic Command Set API for C OBD On Board Diagnostics Services
205. rmational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs DTCs returns the resulting DTCs as an array of clusters National Instruments Corporation DTC is the resulting Diagnostic Trouble Code Status is the DTC status Usually this is a bit field with following meaning Bit Meaning 0 testFailed 1 testFailedThisMonitoringCycle 2 pendingDTC 3 confirmedDTC testNotCompletedSinceLastClear testFailedSinceLastClear testNotCompletedThisMonitoringCycle a AO WwW A warningIndicatorRequested Add Data contains optional additional data for this DTC Usually this does not contain valid information refer to DTC descriptor 5 103 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute t
206. rning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description To ensure proper ECU operation you may need to keep the ECU informed that a diagnostic session is still in progress If you do not send this information for example because the communication is broken the ECU returns to normal mode from diagnostic mode after a while The TesterPresent service is this keep alive signal It does not affect any other ECU operation Keep calling UDS TesterPresent vi within the ECU timeout period if no other service is executed Automotive Diagnostic Command Set User Manual 5 112 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW UDS WriteDataByldentifier vi Purpose Executes the UDS WriteDataBylIdentifier service Writes a data record to the ECU Format data in diag ref in diag ref out ID success error in no error error out Input data in defines the data record to be written to the ECU If you know the the data description record you can use Convert from Phys vi to generate this record diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster ID defines the identifier of the data to be
207. ror Handler source identifies the VI where the error occurred diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred Set User Manual 5 34 ni com National Instruments Corporation Chapter 5 Automotive Diagnostic Command Set API for LabVIEW code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred 5 35 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW DisableNormalMessageTransmission vi Purpose Executes the DisableNormalMessageTransmission service The ECU no longer transmits its regular communication messages usually CAN messages Format diag ref in pos diag ref out require response SUCCESS error in
208. ror code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description To ensure proper ECU operation you may need to keep the ECU informed that a diagnostic session is still in progress If you do not send this information for example because the communication is broken the ECU returns to normal mode from diagnostic mode after a while The TesterPresent service is this keep alive signal It does not affect any other ECU operation Keep calling TesterPresent vi within the ECU timeout period if no other service is executed National Instruments Corporation 5 71 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW WriteDataByLocalldentifier vi Purpose Executes the WriteDataByLocalldentifier service Writes a data record to the ECU Format data in diag ref in diag ref out local ID SUCCESS error in no error ke error out Input data in defines the data record written to the ECU If you know the record data description you can use Convert from Phys vi to generate this record
209. ror out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs T DTCs returns the resulting DTCs as an array of clusters DTC is the resulting Diagnostic Trouble Code Status is the DTC status Usually this is a bit field with following meaning Bit Meaning 0 testFailed 1 testFailedThisMonitoringCycle 2 pendingDTC 3 confirmedDTC 4 testNotCompletedSinceLastClear 5 testFailedSinceLastClear 6 testNotCompletedThisMonitoringCycle 7 warningIndicatorRequested Automotive Diagnostic Command Set User Manual 5 100 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Add Data contains optional additional data for this DTC success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Other
210. ry misties cates roa ea E hovseunbeys EAE 1 3 Measurements eenn a E E E aie R 1 4 Diagnostic Trouble Codes 00 cece eeeeceseceeceseceeeeseeeeeeseceeeeaeeeaeeseenseseeeaeeaes 1 4 Input Output Control sisses peisir eeii ai ia aSa asevedsage 1 4 Remote Activation of a Routine sesseseeesssesseressseeseressetessseesetesseeessresssressee 1 4 External References onaran a a a S a 1 4 UDS Unified Diagnostic Services sseesesssesesseesesressessresrtssessresessrssresressrssreseesse 1 5 Diagnostic Services saries brii arise eeoa iea EEE E E EREE IEEE ES 1 5 Diagnostic Service Format seseina iii 1 5 External References on oeii i E AE uae en 1 6 OBD On Board Diagnostic ierices iosian re EE E EAE E aA 1 6 Chapter 2 Installation and Configuration Installation no nri oieee EE EA E ee hares vin aes e ei 2 1 LabVIEW Real Time RT Configuration s ssssssseeesssseessstssessessressrsstesressrsseesreserssess 2 2 Hardware and Software Requirement 00 0 0 eee cece eeeeseceseceeeseseeesecseeeaecseseaseneeaes 2 2 Chapter 3 Application Development Choosing the Programming Language 0 cece eee eeeeseeseceeeceeeeseeeeesecseeeaeceeeaeeneeeaes 3 1 BDA i A ESE E Sasa cate ieee aR Stee ee Ae ee ae eh 3 1 LabWindows CVI e s 8 Seccss ect iets sce dhccecenie ceed ens sssub R E EE E N AR 3 1 Visulal CHR Oera E td devess vice cee AR a a 3 2 National Instruments Corporation v Automotive Diagnostic Command Set User Manual Con
211. s Format DTC descriptor diag ref in DTC mask record error in no error success error out status avail mask DTC descriptor is a cluster that describes the DTC records the ECU delivers DTC Byte Length indicates the number of bytes the ECU sends for each DTC The default is 3 for UDS Status Byte Length indicates the number of bytes the ECU sends for each DTC s status The default is 1 Add Data Byte Length indicates the number of bytes the ECU sends for each DTC s additional data For this subfunction the default is 2 Byte Order indicates the byte ordering for multibyte items 0 MSB_FIRST Motorola default 1 LSB_FIRST Intel This VI interprets the response byte stream according to this description and returns the resulting DTC records in the DTCs cluster array diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster National Instruments Corporation 5 99 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW DTC mask record defines the status of DTCs to be read The values are application specific error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to er
212. s Corporation All rights reserved Important Information Warranty The media on which you receive National Instruments software are warranted not to fail to execute programming instructions due to defects in materials and workmanship for a period of 90 days from date of shipment as evidenced by receipts or other documentation National Instruments will at its option repair or replace software media that do not execute programming instructions if National Instruments receives notice of such defects during the warranty period National Instruments does not warrant that the operation of the software shall be uninterrupted or error free A Return Material Authorization RMA number must be obtained from the factory and clearly marked on the outside of the package before any equipment will be accepted for warranty work National Instruments will pay the shipping costs of returning to the owner parts which are covered by warranty National Instruments believes that the information in this document is accurate The document has been carefully reviewed for technical accuracy In the event that technical or typographical errors exist National Instruments reserves the right to make changes to subsequent editions of this document without prior notice to holders of this edition The reader should consult National Instruments if errors are suspected In no event shall National Instruments be liable for any damages arising out of or related to this document
213. s error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI starts a routine in the ECU memory The routine in the ECU starts after the positive response message is sent The routine stops until StopRoutineByLocalldentifier vi is issued The routines could be either tests run instead of normal operating code or routines enabled and executed with the normal operating code running In the first case you may need to switch the ECU to a specific diagnostic mode using StartDiagnosticSession vi or unlock the ECU using the SecurityAccess service prior to using StartRoutineByLocalldentifier vi For further details about this service refer to the ISO 14230 3 standard National Instruments Corporation 5 65 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW StopDiagnosticSession vi Purpose Executes the StopDiagnosticSession service Returns the ECU to normal mode Format diag ref out SUCCESS error out diag ref in error in no error diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnos
214. s not necessary to manually manipulate the elements of this struct localID Defines the local identifier of the routine to be started The values are application specific dataIn Defines application specific input parameters for the routine len Must contain the number of valid data bytes in dataIn Output dataOut Returns application specific output parameters from the routine len2 On input 1en2 must contain the dataOut array length On return it contains the number of valid data bytes in the dataOut array Success Indicates successful receipt of a positive response message for this diagnostic service Automotive Diagnostic Command Set User Manual 6 64 ni com Chapter 6 Automotive Diagnostic Command Set API for C Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description This function starts a routine in the ECU memory The ECU routine starts after the positive response message is sent The routine stops until the ndStopRoutineByLocalIdentifier function and corresponding service are issued The routines could be
215. s the ECU to normal mode National Instruments Corporation 6 7 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Table 6 2 Functions for the Automotive Diagnostic Command Set for C Continued Function Purpose ndStopRoutineByLocalIdentifier Executes the StopRoutineByLocal Identifier service Stops a routine on the ECU ndTesterPresent Executes the TesterPresent service Keeps the ECU in diagnostic mode ndUDSClearDiagnosticInformation Executes the UDS ClearDiagnostic Information service Clears selected Diagnostic Trouble Codes DTCs nduDSCommunicationControl Executes the UDS CommunicationControl service Switches transmission and or reception of the normal communication messages usually CAN messages on or off ndUDSControlDTCSetting Executes the UDS ControlDTCSetting service Modifies Diagnostic Trouble Code DTC behavior ndUDSDiagnosticSessionControl Executes the UDS DiagnosticSessionControl service The ECU is set up in a specific diagnostic mode ndUDSECUReset Executes the UDS ECUReset service Resets the ECU Automotive Diagnostic Command Set User Manual 6 8 ni com Chapter 6 Automotive Diagnostic Command Set API for C Table 6 2 Functions for the Automotive Diagnostic Command Set for Continued Function Purpose ndUDSInputOutputControlBylIdentifier Executes the UDS InputOutp
216. s transmitting its regular communication messages usually CAN messages InputOutputControlByLocalldentifier vi Executes the InputOutputControlByLocalldentifier service Modifies the ECU I O port behavior OBD Clear Emission Related Diagnostic Information vi Executes the OBD Clear Emission Related Diagnostic Information service Clears emission related Diagnostic Trouble Codes DTCs in the ECU OBD Request Control Of On Board Device vi Executes the OBD Request Control Of On Board Device service Use this VI to modify ECU I O port behavior OBD Request Current Powertrain Diagnostic Data vi Executes the OBD Request Current Powertrain Diagnostic Data service Reads a data record from the ECU OBD Request Emission Related DTCs vi Executes the OBD Request Emission Related DTCs service Reads all emission related Diagnostic Trouble Codes DTCs OBD Request Emission Related DTCs During Current Drive Cycle vi Executes the OBD Request Emission Related DTCs During Current Drive Cycle service Reads the emission related Diagnostic Trouble Codes DTCs that occurred during the current or last completed drive cycle OBD Request On Board Monitoring Test Results vi Executes the OBD Request On Board Monitoring Test Results service Reads a test data record from the ECU OBD Request Powertrain Freeze Frame Data vi Executes the OBD Request Powertrain Freeze Frame Data service Reads a d
217. samples Automotive Diagnostic Command Set directory Each example includes a complete LabWindows CVI project prj file The example description is in comments at the top of the c file The Automotive Diagnostic Command Set software supports Microsoft Visual C C 6 The header file and library for Visual C C 6 are in the ProgramFiles National Instruments Automotive Diagnostic Command Set MS Visual C folder To use the Automotive Diagnostic Command Set API include the nidiagcs h header file in the code then link with the nidiagces 1ib library file For C applications files with a c extension include the header file by adding a include to the beginning of the code as follows include nidiagcs h For C applications files with a cpp extension define _cplusplus before including the header as follows define _cplusplus include nidiagcs h The _cplusp1lus define enables the transition from C to the C language functions Chapter 6 Automotive Diagnostic Command Set API for C describes each function The C examples are in the Automotive Diagnostic Command Set MS Visual C folder Each example is in a separate folder The example description is in comments at the top of the c file At the command prompt after setting MSVC environment variables such as with MS vcvars32 bat you can build each example using a command such as cl I GetDTCs c nidiagcs lib Other Programming Languages The Automotive Diagno
218. sary to manually manipulate the elements of this cluster response required indicates whether the ECU answers this service TRUE default or not FALSE In the latter case success is TRUE error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 es means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 70 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the er
219. se Canadian Department of Communications This Class A digital apparatus meets all requirements of the Canadian Interference Causing Equipment Regulations Cet appareil num rique de la classe A respecte toutes les exigences du R glement sur le mat riel brouilleur du Canada Compliance with EU Directives Users in the European Union EU should refer to the Declaration of Conformity DoC for information pertaining to the CE marking Refer to the Declaration of Conformity DoC for this product for any additional regulatory compliance information To obtain the DoC for this product visit ni com certification search by model number or product line and click the appropriate link in the Certification column The CE marking Declaration of Conformity contains important supplementary information and instructions for the user or installer Contents About This Manual CONVENTIONS r e ra a Hie wiestinias E O E E ahs odin xi Related Documentation inenen E Hina EOR ER R xii Chapter 1 Introduction KWP2000 Key Word Protocol 2000 cescsssccesceesseeeeeecsareesneceneceseecsaeeeeessaeeeseeesaee 1 1 Transport Protocol scyists sas caveats sea ae aa a E aaa Tinna 1 2 Diagnostic Servicesin iniia E E E EE ER 1 2 Diagnostic Service Format i s 2cssssessesosdeasssuecassesisuaes dagsstaveassessteenedscesstaveseastees 1 2 Connect Disconnectin fsck odes thie es es ee Ra ees 1 3 GetSecd Unlocks si2 he ek ac T E oleae eens 1 3 Read Write MEMO
220. sends as a stream of bytes error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI SE BE status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description Diagnostic Service vi is a generic routine to execute any diagnostic service The request and response messages are fed unmodified to the data in input and retrieved from the data out output respectively No interpretation of the contents is done with one exception the error number is retrieved from a negative response if one occurs In this case an error also is communicated through the error out cluster All specialized diagnostic services call Diagnostic Service vi internally Automotive Diagnostic Command Set User Manual 5 20 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW DTC to String vi Purpose Returns a string representation such as P7234 for a 2 byte Diagnostic Trouble Code D
221. short propertyID unsigned long propertyValue propertyID Defines the parameter whose value is to be modified 0 Timeout Diag Command is the timeout in milliseconds the master waits for the response to a diagnostic request message The default is 1000 ms Timeout FC Bs is the timeout in milliseconds the master waits for a Flow Control frame after sending a First Frame or the last Consecutive Frame of a block The default is 250 ms Timeout CF Cr is the timeout in milliseconds the master waits for a Consecutive Frame in a multiframe response The default is 250 ms Receive Block Size BS is the number of Consecutive Frames the slave sends in one block before waiting for the next Flow Control frame A value of 0 default means all Consecutive Frames are sent in one run without interruption Wait Time CF STmin defines the minimum time for the slave to wait between sending two Consecutive Frames of a block Values from 0 to 127 are wait times in milliseconds Values 241 to 249 Hex F1 to F9 mean wait times of 100 us to 900 us respectively All other values are reserved The default is 5 ms Max Wait Frames N_WFTmax is the maximum number of WAIT frames the master accepts before terminating the connection The default is 10 Wait Frames to Send N_WAIT is the number of WAIT frames the master sends every time before a CTS frame is sent If you set this value to a negative number for example OXFFFFFFFF 1 the master s
222. smitted physically addressed to each ECU in a separate request message Automotive Diagnostic Command Set User Manual 6 78 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndUDSControlDTCSetting Purpose Executes the UDS ControlDTCSetting service Modifies Diagnostic Trouble Code DTC behavior Format long ndUDSControlDTCSetting TD1 diagRef unsigned char type unsigned char dataIn long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct type Specifies the control mode 1 on 2 off dataiIn Specifies application specific data that control DTC generation len Must contain the number of valid data bytes in dataIn Output success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments
223. sponse message is sent Depending the value of mode the corresponding ECU reset event is executed as a hard reset key off on reset soft reset or other reset For further details about this service refer to the ISO 15765 3 standard Automotive Diagnostic Command Set User Manual 6 82 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndUDSInputOutputControlByldentifier Purpose Executes the UDS InputOutputControlByIdentifier service Modifies ECU I O port behavior Format long ndUDSInputOutputControlByIdenti fier TD1 diagRef unsigned short ID unsigned char mode unsigned char dataIn long len unsigned char dataOut long len2 LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct ID Defines the identifier of the I O to be manipulated The values are application specific mode Defines the I O control type The values are application specific The usual values are 0 ReturnControlToECU 1 ResetToDefault 2 FreezeCurrentState 3 ShortTermAdjustment dataiIn Defines application specific data for this service len Must contain the number of valid data bytes in dataIn National Instruments Corporation 6 83 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for
224. sponse message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments Corporation 6 119 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndOBDRequestEmissionRelatedDTCsDuringCurrentDriveCycle Purpose Executes the OBD Request Emission Related DTCs During Current Drive Cycle service Reads the emission related Diagnostic Trouble Codes DTCs that occurred during the current or last completed drive cycle Format long ndOBDRequestEmissionRelatedDTCsDuringCurrentDriveCycle TD1 diagRef TD3 DTCDescriptor TD4 DTCs long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct DTCDescriptor A struct that describes the DTC records the ECU delivers typedef struct long DTCByteLength long StatusByteLength long AddDataB
225. ss A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 24 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description For the VW TP 2 0 you must establish a connection to the ECU before any diagnostic communication can occur This VI sets up a unique communication channel to an ECU for subsequent diagnostic service requ
226. sseersrsrrsrsrrsesrsresesresresre 5 99 UDS ReportSupportedDTCs Vi s ss essssssessssesestsssstsrtsresrsresrsresresrnsrsrnsrsresrsrestne 5 102 UDS Req e stSeed Vieiesso sa ia aiiai iag 5 105 UDS Routine Control Visnea e e aa 5 107 UDS Send Rey Vi ounen ini a a e aiaa 5 109 UDS TesterPr sent Viais nee ie a aie 5 111 UDS WriteDataByIdentifier View eee escesecneceeeeeeeseceeceeeseseaeseeaees 5 113 UDS WriteMemoryByAddress vi oo eee eeceeseeeeeeeeseeeseceeceseceseseseeseneeaees 5 115 OBD On Board Diagnostics Services ceecceeseeseessecesecesseceseeeseecsaeeeseeeaeceaeeeseeeeaees 5 117 OBD Clear Emission Related Diagnostic Information Vi 0 0 0 0 eee 5 117 OBD Request Control Of On Board Device vVi ieee cece eects eeeeeeeees 5 119 OBD Request Current Powertrain Diagnostic Data vi ieee eeeeeeeeeee 5 121 OBD Request Emission Related DTCs Vi eee eeeeeeseceeceseceeeesetseeeseenees 5 123 OBD Request Emission Related DTCs During Current Drive Cycle vi 5 126 OBD Request On Board Monitoring Test Results Vi eee eeeeeeeeeetees 5 129 OBD Request Powertrain Freeze Frame Data vi eee eeeeeeeeeeeeeeeeseenees 5 131 OBD Request Supported PIDS Vi oo eee eee eseeeeeeseceeeeseceeeeseceeesesseenaeesees 5 133 OBD Request Vehicle Information Vi eee eee eseeeeeeseceeeeseeneeesesseeeneesees 5 135 National Instruments Corporation vij Automotive Diagnostic Command Set User Manual Contents Chapter 6 Automot
227. ssing for a certain period of time the diagnostic session is terminated and the ECU returns to normal operation mode GetSeed Unlock A GetSeed Unlock mechanism may protect some diagnostic services However the applicable services are left to the manufacturer and not defined by the standard You can execute the GetSeed Unlock mechanism through the SecurityAccess service This defines several levels of security but the manufacturer assigns these levels to certain services Read Write Memory Use the Read WriteMemoryByAddress services to upload download data to certain memory addresses on an ECU The address is a three byte quantity in KWP2000 and a five byte quantity four byte address and one byte extension in the calibration protocols The Upload Download functional unit services are highly manufacturer specific and not well defined in the standard so they are not a good way to provide a general upload download mechanism National Instruments Corporation 1 3 Automotive Diagnostic Command Set User Manual Chapter 1 Introduction Measurements Use the ReadDataByLocal Commonldentifier services to access ECU data in a way similar to a DAQ list A Local Commonldentifier describes a list of ECU quantities that are then transferred from the ECU to the tester The transfer can be either single value or periodic with a slow medium or fast transfer rate The transfer rates are manufacturer specific you can use the SetDataRates servi
228. status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI executes the UDS CommunicationControl service and switches transmission and or reception of the normal communication messages usually CAN messages on or off The type and communication type parameters are vehicle manufacturer specific one OEM may disable the transmission only while another OEM may disable the transmission and the reception based on vehicle manufacturer specific needs The request is either transmitted functionally addressed to all ECUs with a single request message or transmitted physically addressed to each ECU in a separate request message Automotive Diagnostic Command Set User Manual 5 80 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW UDS ControlDTCSetting vi Purpose Executes the UDS ControlDTCSetting service Modifies Diagnostic Trouble Code DTC generation behavior Format diag ref in diag ref out data in success type error out error in no error
229. stic Data service Reads an ECU data record ndOBDRequestEmissionRelatedDTCs Executes the OBD Request Emission Related DTCs service Reads all emission related Diagnostic Trouble Codes DTCs ndOBDRequestEmissionRelatedDTCsDuringCurrent Executes the OBD DriveCycle Request Emission Related DTCs During Current Drive Cycle service Reads the emission related Diagnostic Trouble Codes DTCs that occurred during the current or last completed drive cycle ndOBDRequestOnBoardMonitoringTestResults Executes the OBD Request On Board Monitoring Test Results service Reads an ECU test data record National Instruments Corporation 6 5 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Table 6 2 Functions for the Automotive Diagnostic Command Set for C Continued Function Purpose ndOBDRequest PowertrainFreezeFrameData Executes the OBD Request Powertrain Freeze Frame Data service Reads an ECU data record stored while a diagnostic trouble code occurred ndOBDRequestVehicleInformation Executes the OBD Request Vehicle Information service Reads a set of information data from the ECU ndOpenDiagnostic Opens a diagnostic session on a CAN port Communication to the ECU is not yet started ndReadDataByLocalidentifier Executes the ReadDataByLocal Identifier service Reads an ECU data record ndReadDTCByStatus Executes the
230. stic Command Set software does not provide formal support for programming languages other than those described in the preceding sections If the programming language includes a mechanism to call a Dynamic Link Library DLL you can create code to call Automotive Diagnostic Command Set functions All functions for the Automotive Diagnostic Command Set API are in nidiagcs d11 If the programming language supports the Microsoft Win32 APIs you can load Automotive Diagnostic Command Set User Manual 3 2 ni com Chapter 3 Application Development pointers to Automotive Diagnostic Command Set functions in the application The following section describes how to use the Win32 functions for C C environments other than Visual C C 6 For more detailed information refer to Microsoft documentation The following C language code fragment shows how to call Win32 LoadLibrary to load the Automotive Diagnostic Command Set API DLL include lt windows h gt include nidiagcs h HINSTANCE NiDiagCSLib NULL NiMcLib LoadLibrary nidiagcs dll Next the application must call the Win32 Get ProcAddress function to obtain a pointer to each Automotive Diagnostic Command Set function the application uses For each function you must declare a pointer variable using the prototype of the function For the Automotive Diagnostic Command Set function prototypes refer to Chapter 6 Automotive Diagnostic Command Set API for C Before exiting the applicatio
231. stsresrestrsesrsresreersrestee 6 77 dUDSControlDTCSetting issiria ia ii a ai o S 6 79 ndUDSDiagnosticSessionControl ee eee eee ceesseeeseeseceseeseceeeeseseeeeaeesees 6 80 NAUDSEC UR C8et erpii pere a E REE E a GR 6 81 ndUDSInputOutputControlByldentifier eee ee eeeeseceeeeseeeeeeseeseeeaees 6 83 ndUDSReadDataByldentifier eee eee cece esecseesseesseeseeeeceaeceseaesneeeaeenees 6 85 ndUDSReadMemoryByAddress 00 eee ee eeeeseeseeeseeseeesecseeesecsesesesseseaeesees 6 87 ndUDSReportDTCBySeverityMaskRecord eee eeceeseceeeseeseeeseeeeeeaeeeees 6 89 ndUDSReportDTCByStatusMask ue eee eseeseeeeeseeeseeeeeeseeseeesesseeeseesees 6 92 ndUDSReportSeverityInformationOfDTC eee eee eeseceeceeeeeeeseseeeeaees 6 95 ndUDSReportSupportedDTCs ooo seeeeeeeeeeseeseeesececesecseseseseseaeenees 6 98 NAUDSRequestSeed ss sesseseceesssssscescwi esse aecehen ap a aa 6 101 NdUDSRoutineControl oe eee ironies i i ai as 6 103 DAUD S Send KY arrn sees etasdansvetiisseadesdeves genie Gvaiites Mounties use inis 6 105 NGUDSTesterPresen teres ccts sis sosehiet vs oiua raaa E e E waged aS 6 107 ndUDSWriteDataB yIdentifier 2 eee eseeeecneceeeeseeeseceeeeeeeaeenaeteeeeees 6 109 ndUDS WriteMemoryByAddress 000 0 eee eseeseeeceseeeseeeeeesecneeeseeseseaeenees 6 111 OBD On Board Diagnostics Services cseecesesseseneceseeesseceseeeeecsaeeeeeesaeceaeeeeeeeeaees 6 113 ndOBDClearEmissionRelatedDiagnosticInformation 0 0 eect tees 6
232. such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 89 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs fus data out returns the data record from the ECU If you know the record data description you can use Convert to Phys vi to interpret this record success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Description This VI requests data record values from the ECU identified by the ID parameter For further details about this service refer to the ISO 15765 3 standard Automotive Diagnostic Comma
233. t status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 ie means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 60 ni com Output Chapter 5 Automotive Diagnostic Command Set API for LabVIEW diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Han
234. t User Manual Chapter 6 Automotive Diagnostic Command Set API for C 6 testNotCompletedThisMonitoringCycle 7 warningIndicatorRequested AddData contains optional additional data for this DTC Usually this does not contain valid information refer to DTCDescriptor len On input len must contain the DTCs array length in elements On return it contains the number of valid elements in the DTCs array success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description This function reads diagnostic trouble codes by status from the ECU memory If you set the optional groupOfDTC parameter to the above specified codes the ECU reports DTCs only with status information based on the functional group selected by groupOfDTC For further details about this service refer to the ISO 14230 3 standard Automotive Diagnostic Command Set User Manual 6 48 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndReadECuldentification
235. t diagnostic modes in the ECU The possible diagnostic modes are not defined in the ISO 14230 standard and are application specific A diagnostic session starts only if communication with the ECU is established For more details about starting communication refer to the ISO 14230 2 standard If no diagnostic session has been requested after Open Diagnostic vi a default session is automatically enabled in the ECU The default session supports at least the following services e The StopCommunication service refer to Close Diagnostic vi and the ISO 14230 2 standard The TesterPresent service refer to TesterPresent vi and the ISO 14230 3 standard National Instruments Corporation 5 63 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW StartRoutineByLocalldentifier vi Purpose Executes the StartRoutineByLocalldentifier service Executes a routine on the ECU Format diag ref in EEE diag ref out local ID data out data in oe SUCCESS error in no error E error out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster local ID defines the local identifier of the routine to be started The values are application specific data in defines application specific input parameters for the rou
236. t specifies the conversion of the physical value to its binary representation Start Byte gives the start byte of the binary representation For Convert from Phys vi this value is ignored and always assumed to be 0 Byte Length is the binary representation byte length Byte Order is the byte ordering of the data in the binary representation Ee E 0 MSB_FIRST Motorola 1 LSB_FIRST Intel Data Type is the binary representation format A 0 Unsigned Only byte lengths of 1 4 are allowed 1 Signed Only byte lengths of 1 4 are allowed 2 Float Only byte lengths of 4 or 8 are allowed Scale Factor defines the physical value scaling Phys Scale Factor binary representation Scale Offset B E Scale Offset refer to Scale Factor value is the physical value to be converted i Automotive Diagnostic Command Set User Manual 5 10 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output data out is the binary representation of the physical value If you build a record of multiple values you can concatenate the outputs of several instances of Convert from Phys vi Description Data input to diagnostic services for example WriteDataByLocalldentifier vi is usually a byte stream of binary data If you have a description of the data input for example byte 3 and 4 are engine RPM scaled as 25 x RPM in Motorola representation you can use Convert from Phys vi to convert the physical val
237. ta Usually there are no additional data so the default is 0 ByteOrder indicates the byte ordering for multibyte items 0 MSB_FIRST Motorola default 1 LSB_FIRST Intel This function interprets the response byte stream according to this description and returns the resulting DTC records in the DTCs struct array Automotive Diagnostic Command Set User Manual 6 118 ni com Chapter 6 Automotive Diagnostic Command Set API for C Output DTCs Returns the resulting DTCs as an array of structs typedef struct unsigned long DTC unsigned long Status unsigned long AddData TD4 DTC is the resulting Diagnostic Trouble Code For the default 2 byte DTCs use ndDTCToString to convert this code to readable format as defined by SAE J2012 Status is the DTC status Usually this is a bit field with following meaning Bit Meaning testFailed testFailedThisMonitoringCycle pendingDTC confirmedDTC testNotCompletedSinceLastClear testFailedSinceLastClear Nn un A WN KF O testNotCompletedThisMonitoringCycle 7 warningIndicatorRequested For OBD this field usually does not contain valid information AddData contains optional additional data for this DTC Usually this does not contain valid information refer to DTCDescriptor len On input len must contain the DTCs array length in elements On return it contains the number of valid elements in the DTCs array success Indicates successful receipt of a positive re
238. tained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct groupOfDTC Specifies the group of diagnostic trouble codes to be cleared The following values have a special meaning 0x0000 All powertrain DTCs 0x4000 All chassis DTCs 0x8000 All body DTCs OxC000 All network related DTCs OxFFOO All DTCs DTCDescriptor A struct that describes the DTC records the ECU delivers typedef struct long DTCByteLength long StatusByteLength long AddDataByteLength unsigned short ByteOrder TD3 DTCByteLength indicates the number of bytes the ECU sends for each DTC The default is 2 National Instruments Corporation 6 53 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C StatusByteLength indicates the number of bytes the ECU sends for each DTC s status The default is 1 AddDataByteLength indicates the number of bytes the ECU sends for each DTC s additional data Usually there are no additional data so the default is 0 ByteOrder indicates the byte ordering for multibyte items 0 MSB_FIRST Motorola default 1 LSB_FIRST Intel This function interprets the response byte stream according to this description and returns the resulting DTC records in the DTCs struct array Output DTCs Returns the resulting DTCs as an array of structs typedef struct unsigned long
239. ted intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 84 ni com UDS ECUReset vi Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Purpose Executes the UDS ECUReset service Resets the ECU Format error in no error diag ref in mode diag ref out SUCCESS error out diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster mode indicates the reset mode Hex Description 01 02 03 04 05 hardReset keyOffOnReset softReset enableRapidPowerShutDown disableRapidPowerShutDown error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out National Instruments Corporation status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended
240. tents Other Programming Languages 000 ce eee eeeeseeeeeeseeseeeseeeenseeseeees Debugging an Application cee eeseescesseceneceseeceseeeeecsaeeeseeesneseaeesseeeeaeenses Chapter 4 Using the Automotive Diagnostic Command Set Structure of the Automotive Diagnostic Command Set eeeeeeeeeeeees Automotive Diagnostic Command Set API Structure eee General Programming Model uu eee eeceeseeeeeseceseesecseeeseeeceeseseeceseeseeeaeeeeee Available Diagnostic Services eeesceccessceceeseceeeceeeseeaeeeeeeaecnsesatenseeaeenaes Tweaking the Transport Protocol ceceesccessecesecesseceeeeneeceaeeeeeceaeeeseeesaeeesees Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Input and Output tc ep oaei n aia aa e e death vives ener e D sciiption e enre a E a E at eR ein daa Tit St Of NAS renseecynnn nn e e E E E a at EE E E E A General HUN CtlOnss 5 25 eck asi tad eee des sd a a aa see ode Close Did SNOStie Vie Ace a e a dhs ete ee esting E EEEE E AER Convert from PhYS Wiiss icivatsi aks tien nadien pean aha ake Convert to Phys Vinnen e AR A E etn eaides Create Extended CAN IDS Vi iseen eisenos etapo ae Eet aera A n easi raS Diag G t Property Vi rerio e E E AEE E R E E Diag Set Property Va 2 iicees vhs r eens te tis a tesa Diagnostie Service IV st eccse ss Sesasecwstd ses eei a a ERO ORTER RARE DTC to Stn S Vii asst Stiles a dees a Open Dia SMOStUC Vier te dcegs cia sk octets tas ea ce ree ces ets tog Sede sth ov
241. ter indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 128 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW OBD Request On Board Monitoring Test Results vi Purpose Executes the OBD Request On Board Monitoring Test Results service Reads a test data record from the ECU Format diag ref in EEE diag ref out OBDMID data out error in no error SUCCESS error out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster SAE J1979 standard defines the values error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in clust
242. the DTC status Usually this is a bit field with following meaning Bit Meaning 0 testFailed 1 testFailedThisMonitoringCycle 2 pendingDTC 3 confirmedDTC 4 testNotCompletedSinceLastClear 5 testFailedSinceLastClear 6 testNotCompletedThisMonitoringCycle 7 warningIndicatorRequested AddData contains optional additional data for this DTC Automotive Diagnostic Command Set User Manual 6 90 ni com Chapter 6 Automotive Diagnostic Command Set API for C len On input len must contain the DTCs array length in elements On return it contains the number of valid elements in the DTCs array success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description This function executes the ReportDTCBySeverityMaskRecord subfunction of the UDS ReadDiagnosticTroubleCodeInformation service and reads the selected DTCs For further details about this service refer to the ISO 15765 3 standard National Instruments Corporation 6 91 Automotive
243. the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service National Instruments Corporation 5 111 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW error out describes error conditions If the error in cluster indicated an pao error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational wa
244. the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 120 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW OBD Request Current Powertrain Diagnostic Data vi Purpose Executes the OBD Request Current Powertrain Diagnostic Data service Reads a data record from the ECU Format diag ref in are diag ref out PID oa data out error in no error j success error out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster PID defines the parameter identifier of the data to be read The SAE J1979 standard defines the values error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code
245. the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 37 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW ECUReset vi Purpose Executes the ECUReset service Resets the ECU Format diag ref in diag ref out mode success error in no error ss error out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster mode indicates the reset mode Hex Description 01 PowerOn This value identifies the PowerOn ResetMode a simulated PowerOn reset that most ECUs perform after the ignition OFF ON cycle When the ECU performs the reset the client tester re establishes communication 02 Power
246. the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred This VI requests the ECU to perform an ECU reset effectively based on the mode parameter value content The vehicle manufacturer determines when the positive response message is sent National Instruments Corporation 5 39 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW EnableNormalMessageTransmission vi Purpose Executes the EnableNormalMessageTransmission service The ECU starts transmitting its regular communication messages usually CAN messages Format diag ref in LE diag ref out require response success error in no error error out Input diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually mani
247. the number of bytes the ECU sends for each DTC The default is 3 for UDS Status Byte Length indicates the number of bytes the ECU sends for each DTC s status The default is 1 Add Data Byte Length indicates the number of bytes the ECU sends for each DTC s additional data Usually there is no additional data so the default is 0 Byte Order indicates the byte ordering for multibyte items E BEG 0 MSB_FIRST Motorola default 1 LSB_FIRST Intel This VI interprets the response byte stream according to this description and returns the resulting DTC records in the DTCs cluster array diag ref in specifies the diagnostic session handle obtained from Open Diagnostic vi and wired through subsequent diagnostic VIs Normally it is not necessary to manually manipulate the elements of this cluster Automotive Diagnostic Command Set User Manual 5 102 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW error in is a cluster that describes error conditions occurring before the VI ETH executes If an error has already occurred the VI returns the value of the error in cluster to error out Output status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an info
248. tic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW om severity mask defines the status of DTCs to be read The values are application specific status defines the status of DTCs to be read The values are application specific error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 He means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs DTCs returns the resulting DTCs as an array of clusters F205 DTC is the resulting Diagnostic Trouble Code a Status is the DTC status Usually this is a bit field with following meaning i Bit Meaning 0 testFailed 1 testFailedThisMonitoringCycle 2 pendingDTC 3 confirmedDTC 4 testNotCompletedSinceLastClear 5 testFailedSinceLastClear Automotive Diagnostic C
249. tic VIs Normally it is not necessary to manually manipulate the elements of this cluster error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service Automotive Diagnostic Command Set User Manual 5 66 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW error out describes error conditions If the error in cluster indicated an 2H error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error th
250. tine error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out Hea E status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred Automotive Diagnostic Command Set User Manual 5 64 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs data out returns application specific output parameters from the routine success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI BE E status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value mean
251. ting service Modifies Diagnostic Trouble Code DTC generation behavior UDS DiagnosticSessionControl vi Executes the UDS DiagnosticSessionControl service Sets up the ECU in a specific diagnostic mode UDS ECUReset vi Executes the UDS ECUReset service Resets the ECU UDS InputOutputControlByldentifier vi Executes the UDS InputOutputControlByldentifier service Use this VI to modify ECU I O port behavior UDS ReadDataByldentifier vi Executes the UDS ReadDataByldentifier service Reads a data record from the ECU National Instruments Corporation 5 5 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Table 5 1 Automotive Diagnostic Command Set API VIs for LabVIEW Continued Function Purpose UDS ReadMemoryByAddress vi Executes the UDS ReadMemoryByAddress service Reads data from the ECU memory UDS ReportDTCBySeverityMaskRecord vi Executes the ReportDTCBySeverityMaskRecord subfunction of the UDS ReadDiagnosticTroubleCodeInformation service Reads selected Diagnostic Trouble Codes DTCs UDS ReportDTCByStatusMask vi Executes the ReportDTCByStatusMask subfunction of the UDS ReadDiagnosticTroubleCodeInformation service Reads selected Diagnostic Trouble Codes DTCs UDS ReportSeverityInformationOfDTC vi Executes the ReportSeverity InformationOfDTC subfunction of the UDS ReadDiagnosticTro
252. tional service defined parameters The Positive Response Message has an echo of the Serviceld with bit 6 set as first byte plus the service defined response parameters National Instruments Corporation 1 5 Automotive Diagnostic Command Set User Manual Chapter 1 Introduction 3 Note Some parameters to both the Request and Positive Response Messages are optional Each service defines these parameters Also the standard does not define all parameters The Negative Response Message is usually a three byte message it has the Negative Response ServiceId 0x7F as first byte an echo of the original Serviceld as second byte and a ResponseCode as third byte The UDS standard partly defines the ResponseCodes but there is room left for manufacturer specific extensions For some of the ResponseCodes UDS defines an error handling procedure Because both positive and negative responses have an echo of the requested service you always can assign the responses to their corresponding request External References For more information about the UDS Standard refer to the ISO 15765 3 standard OBD On Board Diagnostic On Board Diagnostic OBD systems are present in most cars and light trucks on the road today On Board Diagnostics refer to the vehicle s self diagnostic and reporting capability which the vehicle owner or a repair technician can use to query status information for various vehicle subsystems The amount of diagnostic inf
253. tive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Description This function performs the UDS service WriteDataByldentifier and writes Record Values data values into the ECU datatn identifies the data The vehicle manufacturer must ensure the ECU conditions are met when performing this service Typical use cases are clearing nonvolatile memory resetting learned values setting option content setting the Vehicle Identification Number or changing calibration values For further details about this service refer to the ISO 15765 3 standard Automotive Diagnostic Command Set User Manual 6 110 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndUDSWriteMemoryByAddress Purpose Executes the UDS WriteMemoryByAddress service Writes data to the ECU memory Format long ndUDSWriteMemoryByAddress TD1 diagRef unsigned long address unsigned char size unsigned char dataIn long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct address Defines the memory address to which data are written Only three bytes are sent to the ECU so the address must be in the range O FFFFFF hex size Defines the length of the memory block to be written dataiIn Defines the memory block to be w
254. to the host BEBE Description ISO 15765 2 specifies a method extended 29 bit of creating CAN identifiers for diagnostic applications given the addressing mode physical functional the transport protocol normal mixed and the 8 bit source and target addresses This VI implements the construction of these CAN identifiers You can use them directly in Open Diagnostic vi Automotive Diagnostic Command Set User Manual 5 14 ni com Diag Get Property vi Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Purpose Gets a diagnostic global internal parameter Format roperty ID r gt property B34 property value Input property ID defines the parameter whose value is to be retrieved You can create the values using an Enum control 0 National Instruments Corporation Timeout Diag Command is the timeout in milliseconds the master waits for the response to a diagnostic request message The default is 1000 ms Timeout FC Bs is the timeout in milliseconds the master waits for a Flow Control frame after sending a First Frame or the last Consecutive Frame of a block The default is 250 ms Timeout CF Cr is the timeout in milliseconds the master waits for a Consecutive Frame in a multiframe response The default is 250 ms Receive Block Size BS is the number of Consecutive Frames the slave sends in one block before waiting for the next Flow Control frame A value of 0 default means all Conse
255. tronic or mechanical including photocopying recording storing in an information retrieval system or translating in whole or in part without the prior written consent of National Instruments Corporation National Instruments respects the intellectual property of others and we ask our users to do the same NI software is protected by copyright and other intellectual property laws Where NI software may be used to reproduce software or other materials belonging to others you may use NI software only to reproduce materials that you may reproduce in accordance with the terms of any applicable license or other legal restriction Trademarks National Instruments NI ni com and LabVIEW are trademarks of National Instruments Corporation Refer to the Terms of Use section on ni com legal for more information about National Instruments trademarks Other product and company names mentioned herein are trademarks or trade names of their respective companies Members of the National Instruments Alliance Partner Program are business entities independent from National Instruments and have no agency partnership or joint venture relationship with National Instruments Patents For patents covering National Instruments products refer to the appropriate location Help Patents in your software the patents txt file on your CD or ni com patents WARNING REGARDING USE OF NATIONAL INSTRUMENTS PRODUCTS 1 NATIONAL INSTRUMENTS PRODUCTS ARE NOT DESIGNED WI
256. u can access through the protocol As UDS uses messages of variable byte lengths a transport protocol is necessary on layers with only a well defined short message length such as CAN The transport protocol splits a long UDS message into pieces that can be transferred over the network and reassembles those pieces to recover the original message UDS runs on CAN on various transport protocols 3 Note The Automotive Diagnostic Command Set supports only the ISO TP standardized in ISO 15765 2 and manufacturer specific VW TP 2 0 transport protocols Diagnostic Services The diagnostic services available in UDS are grouped in functional units and identified by a one byte code Serviceld Not all codes are defined in the standard for some codes the standard refers to other standards and some are reserved for manufacturer specific extensions The Automotive Diagnostic Command Set supports the following services e Diagnostic Management e Data Transmission e Stored Data Transmission Diagnostic Trouble Codes e Input Output Control e Remote Activation of Routine Diagnostic Service Format Diagnostic services have a common message format Each service defines a Request Message a Positive Response Message and a Negative Response Message The general format of the diagnostic services complies with the KWP2000 definition most of the Service Ids also comply with KWP2000 The Request Message has the Serviceld as first byte plus addi
257. u must close it using ndCloseDiagnostic Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description ndOpenDiagnostic opens a diagnostic communication channel to an ECU This function initializes the CAN port specified as input and stores a handle to it among other internal data into diagRefOut which serves as reference for further diagnostic functions No communication to the ECU takes place at this point To open a diagnostic session on the ECU call ndStartDiagnosticSession or ndUDSDiagnosticSessionControl In general you do not need to manipulate the diagRefOut struct contents except if you use the ISO TP Mixed Mode transport protocol in which case you must store the address extensions for transmit and receive in the appropriate members of that struct National Instruments Corporation 6 25 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndSetProperty Purpose Sets a diagnostic global internal parameter Format void ndSetProperty Input unsigned
258. ubleCodeInformation service Reads selected Diagnostic Trouble Codes DTCs UDS ReportSupportedDTCs vi Executes the ReportSupportedDTCs subfunction of the UDS ReadDiagnosticTroubleCodeInformation service Reads all supported Diagnostic Trouble Codes DTCs UDS RequestSeed vi Executes the UDS SecurityAccess service to retrieve a seed from the ECU UDS RoutineControl vi Executes the UDS RoutineControl service Executes a routine on the ECU UDS SendKey vi Executes the SecurityAccess service to send a key to the ECU UDS TesterPresent vi UDS WriteDataByldentifier vi Executes the UDS TesterPresent service Keeps the ECU in diagnostic mode Executes the UDS WriteDataByIdentifier service Writes a data record to the ECU Automotive Diagnostic Command Set User Manual 5 6 ni com Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Table 5 1 Automotive Diagnostic Command Set API VIs for LabVIEW Continued Function Purpose UDS WriteMemoryByAddress vi Executes the UDS WriteMemoryByAddress service Writes data to the ECU memory VWTP Connect vi Establishes a connection channel to an ECU using the VW TP 2 0 VWTP Connection Test vi Maintains a connection channel to an ECU using the VW TP 2 0 VWTP Disconnect vi Terminates a connection channel to an ECU using the VW TP 2 0 WriteDataByLocalldentifier vi Executes the WriteData
259. ue specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description This function requests memory data from the ECU identified by the address and size parameters The dataOut format and definition are vehicle manufacturer specific dataOut includes analog input and output signals digital input and output signals internal data and system status information if the ECU supports them For further details about this service refer to the ISO 15765 3 standard Automotive Diagnostic Command Set User Manual 6 88 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndUDSReportDTCBySeverityMaskRecord Purpose Executes the ReportDTCBySeverityMaskRecord subfunction of the UDS ReadDiagnosticTroubleCodeInformation service Reads selected Diagnostic Trouble Codes DTCs Format long ndUDSReportDTCBySeverityMaskRecord TD1 diagRef unsigned char severityMask unsigned char status TD3 DTCDescriptor unsigned char statusAvailMask D4 DTCs long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct severityMask Defines the status of DTCs to be read The val
260. ue to the byte stream by filling an appropriate type descriptor cluster Convert from Phys vi converts only the portion specified by one type descriptor to a binary representation If your data input consists of several values you can use Convert from Phys vi multiple times and concatenate their outputs National Instruments Corporation 5 11 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Convert to Phys vi Purpose Converts a binary representation of a value into its physical value using a type descriptor Format type descriptor data in Input type descriptor is a cluster that specifies the conversion of the binary representation to its physical value Start Byte gives the binary representation start byte in the data in record Byte Length is the binary representation byte length Byte Order is the byte ordering of the data in the binary representation EE E 0 MSB_FIRST Motorola 1 LSB_FIRST Intel Data Type is the binary representation format H 0 Unsigned Only byte lengths of 1 4 are allowed 1 Signed Only byte lengths of 1 4 are allowed 2 Float Only byte lengths of 4 or 8 are allowed Scale Factor defines the physical value scaling Phys Scale Factor binary representation Scale Offset Scale Offset refer to Scale Factor E E data in is the data record from which physical values are to be ext
261. ues are application specific status Defines the status of DTCs to be read The values are application specific DTCDescriptor A struct that describes the DTC records the ECU delivers typedef struct long DTCByteLength long StatusByteLength long AddDataByteLength unsigned short ByteOrder TD3 DTCByteLength indicates the number of bytes the ECU sends for each DTC The default is 3 for UDS StatusByteLength indicates the number of bytes the ECU sends for each DTC s status The default is 1 National Instruments Corporation 6 89 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C AddDataByteLength indicates the number of bytes the ECU sends for each DTC s additional data For this subfunction the default is 2 ByteOrder indicates the byte ordering for multibyte items 0 MSB_FIRST Motorola default 1 LSB_FIRST Intel This function interprets the response byte stream according to this description and returns the resulting DTC records in the DTCs struct array Output statusAvailMask An application specific value returned for all DTCs DTCs Returns the resulting DTCs as an array of structs typedef struct unsigned long DTC unsigned long Status unsigned long AddData TD4 DTC is the resulting Diagnostic Trouble Code For the default 2 byte DTCs use ndDTCToString to convert this code to readable format as defined by SAE J2012 Status is
262. uments Corporation 6 97 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C ndUDSReportSupportedDTCs Purpose Executes the ReportSupportedDTCs subfunction of the UDS ReadDiagnosticTroubleCodeInformation service Reads all supported Diagnostic Trouble Codes DTCs Format long ndUDSReportSupportedDTCs TD1 diagRef TD3 DTCDescriptor unsigned char statusAvailMask TD4 DTCs long len LVBoolean success Input diagRef Specifies the diagnostic session handle obtained from ndOpenDiagnostic and passed to subsequent diagnostic functions Normally it is not necessary to manually manipulate the elements of this struct DTCDescriptor A struct that describes the DTC records the ECU delivers typedef struct long DTCByteLength long StatusByteLength long AddDataByteLength unsigned short ByteOrder D3 DTCByteLength indicates the number of bytes the ECU sends for each DTC The default is 3 for UDS StatusByteLength indicates the number of bytes the ECU sends for each DTC s status The default is 1 AddDataByteLength indicates the number of bytes the ECU sends for each DTC s additional data Usually there are no additional data so the default is 0 Automotive Diagnostic Command Set User Manual 6 98 ni com Chapter 6 Automotive Diagnostic Command Set API for C ByteOrder indicates the byte ordering for multibyte items 0 MSB_FIRST Motoro
263. und in the Automotive Diagnostic Command Set for C functions Purpose Each function description includes a brief statement of the function purpose Format The format section describes the function format for the C programming language Input and Output The input and output sections list the function parameters Description The description section gives details about the function purpose and effect National Instruments Corporation 6 1 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C List of Data Types The following data types are used with the Automotive Diagnostic Command Set API for C functions Table 6 1 Data Types for the Automotive Diagnostic Command Set for C Data Type Purpose i8 8 bit signed integer i16 16 bit signed integer i32 32 bit signed integer u8 8 bit unsigned integer u16 16 bit unsigned integer u32 32 bit unsigned integer 32 32 bit floating point number 64 64 bit floating point number str ASCII string represented as an array of characters terminated by null character 0 This type is used with output strings str is typically used in the Automotive Diagnostic Command Set API as a pointer to a string as char cstr ASCII string represented as an array of characters terminated by null character 0 This type is used with input strings cstr is typically used in the Automotive Dia
264. urn it contains the number of valid data bytes in the seedOut array success Indicates successful receipt of a positive response message for this diagnostic service Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value National Instruments Corporation 6 101 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Description The usual procedure for getting a security access to the ECU is as follows 1 Request a seed from the ECU using ndUDSRequest Seed with access mode n 2 From the seed compute a key for the ECU on the host 3 Send the key to the ECU using ndUDSSendKey with access mode n 1 4 The security access is granted if the ECU validates the key sent Otherwise an error is returned Automotive Diagnostic Command Set User Manual 6 102 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndUDSRoutineControl Purpose Executes the UDS RoutineControl service Executes a routine on the ECU Format long ndUDSRoutineControli TD1 diagRef unsi
265. us is the DTC status Usually this is a bit field with following meaning Bit Meaning testFailed testFailedThisMonitoringCycle pendingDTC confirmedDTC testNotCompletedSinceLastClear testFailedSinceLastClear nn BW NY KF CO testNotCompletedThisMonitoringCycle 7 warningIndicatorRequested AddData contains optional additional data for this DTC len On input len must contain the DTCs array length in elements On return it contains the number of valid elements in the DTCs array Success Indicates successful receipt of a positive response message for this diagnostic service Automotive Diagnostic Command Set User Manual 6 96 ni com Chapter 6 Automotive Diagnostic Command Set API for C Return Value The return value indicates the function call status as a signed 32 bit integer Zero means the function executed successfully A negative value specifies an error which means the function did not perform the expected behavior A positive value specifies a warning which means the function performed as expected but a condition arose that may require attention Use the ndStatusToString function to obtain a descriptive string for the return value Description This function executes the ReportSeverityInformationOfDTC subfunction of the UDS ReadDiagnosticTroubleCodeInformation service and reads the selected DTCs from the ECU memory For further details about this service refer to the ISO 15765 3 standard National Instr
266. utControlBy Identifier service Modifies ECU I O port behavior ndUDSReadDataByldentifier Executes the UDS ReadDataB yIdentifier service Reads an ECU data record ndUDSReadMemoryByAddress Executes the UDS ReadMemoryByAddress service Reads data from the ECU memory ndUDSReportDTCBySeverityMaskRecord Executes the ReportDTCBySeverity MaskRecord subfunction of the UDS ReadDiagnosticTrouble CodeInformation service Reads selected Diagnostic Trouble Codes DTCs ndUDSReportDTCByStatusMask Executes the ReportDTCByStatus Mask subfunction of the UDS ReadDiagnosticTrouble CodeInformation service Reads selected Diagnostic Trouble Codes DTCs National Instruments Corporation 6 9 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C Table 6 2 Functions for the Automotive Diagnostic Command Set for C Continued Function Purpose ndUDSReportSeverityInformationOf DTC Executes the ReportSeverity InformationOfDTC subfunction of the UDS ReadDiagnosticTrouble CodeInformation service Reads selected Diagnostic Trouble Codes DTCs are read ndUDSReportSupportedDTCs Executes the ReportSupportedDTCs subfunction of the UDS ReadDiagnosticTrouble CodeInformation service Reads all supported Diagnostic Trouble Codes DTCs ndUDSRequestSeed Executes the UDS SecurityAccess service to retrieve a seed from the ECU ndUDSRouti
267. vices that follow the same scheme Because diagnostics were traditionally executed on serial communication links the byte string length is not limited For newer CAN based diagnostics this involves using a transport protocol that segments the arbitrarily long byte strings into pieces that can be transferred over the CAN bus and reassembles them on the receiver side Several transport protocols accomplish this task The Automotive Diagnostic Command Set implements the ISO TP standardized in ISO 15765 2 and the manufacturer specific VW TP 2 0 Note The Automotive Diagnostic Command Set is designed for CAN based diagnostics only Diagnostics on serial lines K line and L line are not in the scope of the Automotive Diagnostic Command Set KWP2000 Key Word Protocol 2000 The KWP2000 protocol has become a de facto standard in automotive diagnostic applications It is standardized as ISO 14230 3 KWP2000 describes the implementation of various diagnostic services you can access through the protocol You can run KWP2000 on several transport layers such as K line serial or CAN National Instruments Corporation 1 1 Automotive Diagnostic Command Set User Manual Chapter 1 Introduction Transport Protocol As KWP2000 uses messages of variable byte lengths a transport protocol is necessary on layers with only a well defined short message length such as CAN The transport protocol splits a long KWP2000 message into pieces that can be
268. wise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred status avail mask is an application specific value returned for all DTCs Description This VI executes the ReportSeverityInformationOfDTC subfunction of the UDS ReadDiagnosticTroubleCodeInformation service and reads the selected DTCs from the ECU memory For further details about this service refer to the ISO 15765 3 standard National Instruments Corporation 5 101 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW UDS ReportSupportedDTCs vi Purpose Executes the ReportSupportedDTCs subfunction of the UDS ReadDiagnosticTroubleCodeInformation service Reads all supported Diagnostic Trouble Codes DTCs Format DTC descriptor diag ref in DTC mask record error in no error error out status avail mask Input DTC descriptor is a cluster that describes the DTC records the ECU delivers DTC Byte Length indicates
269. write memory 1 3 ReadDataB yLocalldentifier vi 5 44 ReadDTCByStatus vi 5 46 Automotive Diagnostic Command Set User Manual l 6 ReadECUIdentification vi 5 49 ReadMemoryByAddress vi 5 51 ReadStatusOfDTC vi 5 53 related documentation xii remote action of a routine KWP2000 1 4 RequestRoutineResultsB yLocalldentifier vi 5 56 RequestSeed vi 5 58 S SendKey vi 5 60 software NI resources A 1 software requirements 2 2 StartDiagnosticSession vi 5 62 StartRoutineByLocalIdentifier vi 5 64 StopDiagnosticSession vi 5 66 StopRoutineByLocalldentifier vi 5 68 T technical support A 1 TesterPresent vi 5 70 training and certification NI resources A 1 transport protocol KWP2000 1 2 tweaking 4 4 troubleshooting NI resources A 1 tweaking the transport protocol 4 4 U UDS 1 5 diagnostic service format 1 5 diagnostic services 1 5 external references 1 6 UDS DiagOnCAN services C API 6 75 LabVIEW API 5 76 UDS ClearDiagnosticInformation vi 5 76 UDS CommunicationControl vi 5 79 ni com DS ControlDTCSetting vi 5 81 DS DiagnosticSessionControl vi 5 83 DS ECUReset vi 5 85 DS InputOutputControlByldentifier vi 5 87 DS ReadDataB yldentifier vi 5 89 DS ReadMemoryByAddress vi 5 91 DS ReportDTCBySeverityMaskRecord vi 5 93 JDS ReportDTCByStatusMask vi 5 96 DS ReportSeverityInformationOfDTC vi 5 99 UDS ReportSupportedDTCs vi 5 102 UDS RequestSeed vi 5 105 UDS RoutineControl vi
270. written The values are application specific error in is a cluster that describes error conditions occurring before the VI executes If an error has already occurred the VI returns the value of the error in cluster to error out HEH E status is TRUE if an error occurred This VI is not executed when status is TRUE code is the error code number identifying an error A value of 0 means success A negative value means error the VI did not execute the intended operation A positive value means warning the VI executed intended operation but an informational warning is returned For a description of the code wire the error cluster to a LabVIEW error handling VI such as the Simple Error Handler source identifies the VI where the error occurred National Instruments Corporation 5 113 Automotive Diagnostic Command Set User Manual Chapter 5 Automotive Diagnostic Command Set API for LabVIEW Output diag ref out is a copy of diag ref in You can wire it to subsequent diagnostic VIs success indicates successful receipt of a positive response message for this diagnostic service error out describes error conditions If the error in cluster indicated an error the error out cluster contains the same information Otherwise error out describes the error status of this VI status is TRUE if an error occurred code is the error code number identifying an error A value of 0 means success A negative value means error the
271. y byte lengths of 1 4 are allowed 2 Float Only byte lengths 4 or 8 are allowed ScaleFactor defines the physical value scaling Phys ScaleFactor binary representation ScaleOffset ScaleOffset refer to ScaleFactor National Instruments Corporation 6 15 Automotive Diagnostic Command Set User Manual Chapter 6 Automotive Diagnostic Command Set API for C dataiIn Points to the byte array that contains the binary representation of value len Must contain the dataIn array length Output value The physical value converted from the binary representation Description Data output from diagnostic services for example ndReadDataByLocalldenti fier is usually a byte stream of binary data If you have a description of the data output for example byte 3 and 4 are engine RPM scaled as 25 x RPM in Motorola representation you can use ndConvertToPhys to extract the physical value from the byte stream by filling an appropriate typeDescriptor struct Automotive Diagnostic Command Set User Manual 6 16 ni com Chapter 6 Automotive Diagnostic Command Set API for C ndCreateExtendedCANids Purpose Creates diagnostic CAN identifiers according to ISO 15765 2 Format void ndCreateExtendedCANIds unsigned short addressingMode unsigned short transportProtocol unsigned char sourceAddress unsigned char targetAddress unsigned long transmitID unsigned long receivelID Input addressingMode Specifi
272. your area visit ni com services or contact your local office at ni com contact Training and Certification Visit ni com training for self paced training eLearning virtual classrooms interactive CDs and Certification program information You also can register for instructor led hands on courses at locations around the world System Integration If you have time constraints limited in house technical resources or other project challenges National Instruments Alliance Partner members can help To learn more call your local NI office or visit ni com alliance If you searched ni com and could not find the answers you need contact your local office or NI corporate headquarters Phone numbers for our worldwide offices are listed at the front of this manual You also can visit the Worldwide Offices section of ni com niglobal to access the branch office Web sites which provide up to date contact information support phone numbers email addresses and current events National Instruments Corporation A 1 Automotive Diagnostic Command Set User Manual Index A application debugging 3 3 application development 3 1 Automotive Diagnostic Command Set API C 6 1 LabVIEW 5 1 API structure 4 2 application development 3 1 available diagnostic services 4 4 choosing a programming language 3 1 configuration 2 1 debugging an application 3 3 general programming model figure 4 3 hardware requirements 2 2 install
273. yteLength unsigned short ByteOrder TD3 DTCByteLength indicates the number of bytes the ECU sends for each DTC The default is 2 StatusByteLength indicates the number of bytes the ECU sends for each DTC s status The default is 0 for OBD AddDataByteLength indicates the number of bytes the ECU sends for each DTC s additional data Usually there are no additional data so the default is 0 ByteOrder indicates the byte ordering for multibyte items 0 MSB_FIRST Motorola default 1 LSB_FIRST Intel This function interprets the response byte stream according to this description and returns the resulting DTC records in the DTCs struct array Automotive Diagnostic Command Set User Manual 6 120 ni com Chapter 6 Automotive Diagnostic Command Set API for C Output DTCs Returns the resulting DTCs as an array of structs typedef struct unsigned long DTC unsigned long Status unsigned long AddData TD4 DTC is the resulting Diagnostic Trouble Code For the default 2 byte DTCs use ndDTCToString to convert this code to readable format as defined by SAE J2012 Status is the DTC status Usually this is a bit field with following meaning Bit Meaning testFailed testFailedThisMonitoringCycle pendingDTC confirmedDTC testNotCompletedSinceLastClear testFailedSinceLastClear nn A WN KF CO testNotCompletedThisMonitoringCycle 7 warningIndicatorRequested For OBD this field usually does not contain valid i

Download Pdf Manuals

image

Related Search

Related Contents

Toshiba Tecra A11-S3541    Panasonic DMW-MCTZ7 underwater camera housing  New User Guide - i*Trade@CIMB ID  Appendix B  Digital Cooking Thermometer  User Manual  DAQScope™ 5102 User Manual  SUNNY HOME MANAGER  SECTION 283113 FIRE ALARM PANELS PART 1 GENERAL 1.1  

Copyright © All rights reserved.
Failed to retrieve file