Beruflich Dokumente
Kultur Dokumente
TBD
Description
REG PIRO04/SAM04 ISO14230 KW2000 PROTOCOL SUPPORTED SERVICES Written by: Giancarlo Pirovano April 2006, SIT la precisa s.p.a.
TBD
INDEX
CHAPTER 1: INTRODUCTION 1
CHAPTER 3: DEFINITIONS
CHAPTER 4: KW2000 GENERAL INFORMATION 4.1 HEADER 4.1.1 FORMAT BYTE 4.1.2 TARGET ADDRESS BYTE 4.1.3 SOURCE ADDRESS BYTE 4.1.4 DATA LENGTH BYTE 4.2 DATA BYTES 4.3 CHECKSUM BYTES 4.4 TIMINGS CHAPTER 5: INITIALIZATION 5.1 CARB INITIALIZATION 5.2 5 BAUD INITIALIZATION (OR SLOW INIT) 5.3 FAST INIT INITIALIZATION 5.4 KEY BYTES 5.5 MULTIUSER BUS ISSUE CHAPTER 6: SERVICES SUPPRTED BY GAS ECU 6.1 START COMMUNICATION SERVICE 6.2 STOP COMMUNICATION SERVICE 6.3 REQUEST CURRENT POWERTRAIN DIAGNOSTIC DATA 6.4 REQUEST POWERTRAIN FREEZE FRAME DATA 6.5 REQUEST EMISSION RELATED DIAGNOSTIC TROBLE CODES 6.6 CLEAR EMISSION RELATED DTC 6.7 TESTER PRESENT 6.8 START DIAGNOSTIC SESSION 6.9 STOP DIAGNOSTIC SESSION i
2 3 3 4 4 4 4 4 5 5 6 6 7 7 8 10 11 13 14 16 18 19 19 19 20
TBD
6.10 SECURITY ACCESS 6.11 ECU RESET 6.12 READ ECU IDENTIFICATION 6.12.1 HARDWARE IDENTIFICATION 6.12.2 FIRMWARE IDENTIFICATION 6.12.3 CONFIGURATION IDENTIFICATION 6.13 REQUEST VEHICLE INFORMATION 6.13.1 REPORT SUPPORTED INFO TYPES REQUEST 6.13.2 MESSAGES TO REPORT THE VEHICLE IDENTIFICATION NUMBER REQUEST 6.13.3 VEHICLE IDENTIFICATION NUMBER 6.14 WRITE DATA BY LOCAL IDENTIFIER 6.14.1 VEHICLE IDENTIFICATION NUMBER 6.15 READ DATA BY LOCAL IDENTIFIER 6.15.1 VEHICLE IDENTIFICATION NUMBER 6.15.2 ECU MEASUREMENTS 6.16 READ DIAGNOSTIC TROBLE CODES 6.17 CLEAR DIAGNOSTIC INFORMATION 6.18 READ STATUS OF DIAGNOSTIC TROUBLE CODES 6.19 I/O CONTROL BY LOCAL IDENTIFIER 6.19.1 GAS VALVE CONTROL 6.19.2 GAS INJECTORS CONTROL 6.19.3 PETROL INJECTORS CONTROL 6.19.4 PETROL CONNECTION CONTROL 6.19.5 LAMBDA EMULATION CONTROL 6.19.6 TEST SWITCH LEDS 6.19.7 READ SWITCH BUTTON 6.19.8 SET LAMBDA EMULATION VOLTAGE 6.19.9 READ ANALOG VOLTAGE 6.19.10 READ STATUS OF RPM SIGNAL 6.19.11 READ PERIOD OF RPM SIGNAL 6.19.12 SET STATUS OF DIAGNOSTIC LIGHT
21 23 23 24 24 25 25 25 26 26 27 28 28 30 30 30 31 32 34 36 36 37 38 38 39 40 41 42 43 44 45
ii
TBD
TABLES
Tab. 1: KW200 message structure .......................................................................................................2 Tab. 2: Format byte structure...............................................................................................................3 Tab. 3: mode bits..................................................................................................................................3 Tab. 4: format byte structure required by ISO14230-4........................................................................4 Tab. 5: supported services..................................................................................................................11 Tab. 6: PIDs supported for service 0x01............................................................................................16 Tab. 7: Freeze frame data supported PIDs.........................................................................................18 Tab. 8: diagnostic modes ...................................................................................................................20 Tab. 9: access mode parameter values ...............................................................................................21 Tab. 10: identification options ...........................................................................................................24 Tab. 11: vehicle identification number transmission sequence .........................................................27 Tab. 12: write data by local identifier - record local identifiers ........................................................27 Tab. 13: read data by local identifier - record local identifiers..........................................................29 Tab. 14: DTC's status description ......................................................................................................34 Tab. 15: input output local identifiers................................................................................................35 Tab. 16: gas injectors status codification ...........................................................................................37 Tab. 17: output configurations for the test of the leds of the switch..................................................40 Tab. 18: analog channels codes..........................................................................................................43
PICTURES
Fig. 1: tester request and ECU responses.............................................................................................5 Fig. 2: normal timing set with default values ......................................................................................5 Fig. 3: 5 baud init general form............................................................................................................6 Fig. 4: fast init general form.................................................................................................................7 Fig. 5: key bytes ...................................................................................................................................8 Fig. 6: address ranges.........................................................................................................................13 Fig. 7: read status of DTC - multiple frame positive response ..........................................................33
iii
TBD
Safety symbols
Warning Caution Attention Calls attention to a procedure, practice, or condition, that could possibly cause bodily injury or death. Calls attention to a procedure,practice, or condition that could possibly cause damage to equipment or permanent loss of data. Calls attention to a procedure, practice or condition that requires special attetion from the operator to be fulfilled correctly.
iv
TBD
Chapter 1: Introduction
ISO 14230 has been established in order to define common requirements for diagnostic systems implemented on a serial data link. To achieve this, it is based on the Open Systems Interconnection (OSI) Basic Reference Model in accordance with ISO 7498 which structures communication systems into seven layers. When mapped on this model, the services used by a diagnostic tester and an Electronic Control Unit (ECU) are broken into diagnostic services (layer 7), communication services (layers 1 to 6). This documents deals with the diagnostic services supported by the PIRO04 and SAM04 gas fuel injection control units (form now on GAS ECU). The implementation of the physical and data communication layers is in accordance with the ISO14230 standard part 1 and 2. The vehicle environment to which this part of ISO 14230 applies may consist of a single tester that may be temporarily connected to the on-vehicle diagnostic data link and several on-vehicle Electronic Control Units connected directly or indirectly.
TBD
Chapter 3: Definitions
For the purposes of this document, the definitions given in ISO 14229 and SAE J 1930 apply. CARB Client DTC EPA GAS ECU LSB MSB OBD Server SID TBD TBV VIN California Air Resource Board The tester connected to the ECUs to request diagnostic parameters. Dignostic Trouble Codes Environment Protection Agency The controller of the gas injection. May refer to PIRO04 or SAM04. Least significant byte Most significant byte On Board Dignostic One of the ECUs connected to the tester that respond to the testers requests. Service IDentifier To Be Defined To Be Verified Vehicle Identiofication Number
Format byte, target address byte, source address byte and data bytes compose the header section. Service identifier and its parameters compose the data section The checksum is the LSB of the sum of the bytes composing the header and the data section. The maximum length of the message is 260 bytes (255 data + 4 header + 1 checksum).
TBD
Target address, source address and data length are not mandatory and their use or not is specified by the format byte. The standard doesnt define the communication caractheristics of the byte but it was discovered that the bytes are sent as: 8 bit no parity 1 stop bit
4.1 Header
The header is composed by: format byte, target address byte, source address byte, data length. 4.1.1 Format byte The format byte has the following structure:
A1 A0 L5 L4 L3 L2 L1 L0
A1, A0 defines the use of the address bytes, according to the following table:
A1 0 0 1 1 A0 0 1 0 1 Mode No address information CARB mode (exception mode) Physical addressing mode Functional addressing mode Tab. 3: mode bits
If the mode bits are 00, the target and source address will not be present. A.1,A.0=01 (CARB mode) is an exception mode. The CARB mode is not specified in ISO 14230. CARB uses format bytes $68 (0110 1000) and $48 (0100 1000). For more details refer to ISO 9141-2 and SAE J1979. Physical addressing is used when the tester sends its request to one ECU at a time. Functional addressing is used when the tester sends its request to more than one ECU at the same time. L5..L0 defines the length of the data section if the data length byte is not used. The following cases can be encountered: 1) 2) L5..L0 = 0: L5..L0 >0: the data length byte is present the data length byte is not present
TBD
ISO14230-4 requires functional addressing for the tester requests; the functional target address must be 0x33. Physical addressing is used by the ECU for the response. The data length must be specified in the format byte. In this case the format byte has the following structure:
1 1 0 1 X X X X X X X X X X X X ECU response Tester request
4.1.2 Target address byte This is the address of the destination of the message. It can be physical or functional. Physical addrressing is used by the tester to address one single ECU. Functional addressing is used by the tester to send the same request to more than one ECU. The ECU will always respond to the tester requests using physical addressing. ISO14230-4 requires that the tester uses the functional address 0x33 in its requests. 4.1.3 Source address byte This is the physical address of the device that sends the message. ISO14230-4 requires that the tester uses the physical address 0xF1 as source address. This address will be used by the ECUs as target address in their responses. 4.1.4 Data length byte This byte is present only if the bits L5..L0 of the format byte are 0. ISO14230-4 requires that the length of the data bytes is indicated in the format byte. Moreover it requires a maximum of seven data bytes to be present in the message.
TBD
4.4 Timings
The KW2000 protocol is timeout based. This means the the end of a message is detected when the bus remains in idle for a certain time. The protocol requires a interbyte time for the teser request and the ECU requests, a time between the tester request and the ECU response and a time from the end of the response of the ECU and a new request of the tester. If no request is detected on the bus, the communication is over, so the tester must continually send a presence signal or requests on the bus.
The following table describes the minimum and maximum default values for the Px timings.
Timing P1 P2 P3 P4 Min (ms) 0 25 55 5 Max (ms) 20 50 5000 20 Description Interbyte time for ECU response Time between the end of a tester request or a ECU response and another ECU response Time between the end of the ECU responses and a new request from the tester Interbyte time for tester request
The KW2000 protocol has a service to modify the minimum and maximum timings, but in ISO 14230-4 it is required for the tester and the ECUs to use only the normal timing set with default values.
Chapter 5: Initialization
The KW2000 protocol requires that the comunication is initialized before the tester can send requests to the servers. 1) CARB initialization 2) 5 baud address initialization 3) fast initialization There are general facts that are common to all modes of initialization:
TBD
prior to any activity there shall be a bus-idle time; then the tester sends an initialization pattern; all information which is necessary to establish communication is contained in the response of the ECU.
ISO14230-4 requires that the tester must support both 5-baud and fast init initialization, instead the ECU shall support only one of the two initialization methods. The GAS ECU will suppoprt only the fast init initialization.
1) the bus must stay idle for at least 300ms 2) the tester sends the target address (0x33 as required by ISO14230-4) at 5 baud (200ms/bit) 6
TBD
3) the ECU sends the synchronization pattern 0x55, which is used by the tester to detect the actual baud rate used by the ECU. 4) the ECU sends the key bytes KB1 and KB2 5) the tester sends back KB2 inverted 6) the ECU sends back the address sent by the tester inverted ISO 14230-4 requires that the 5-baud address is 0x33 and the actual communication rate is 10400 baud.
1) 2) 3) 4)
the bus must be idle the tester holds the bus in its dominant state (0) for 25ms the tester releases the bus and after 25 ms sends the startcommunication request the board responds with the startcommunication response (hopefully positive); in the response the key bytes KB1 and KB2 are sent to the tester
TBD
The decoding of the key bytes is defined in ISO 9141. KB2 is fixed at 0x8F. KB1 reports the supported modes. ISO14230 requires that the keybytes are 8FE9, wich means: 1) 3 byte header 2) no additional length byte 3) normal timing
support of data length in format byte (0=NO, 1=YES) support of additional data length byte (0=NO, 1=YES) support of 1 byte header (0=NO, 1=YES) support of target/source addresses in header (0=NO, 1=YES) use of extended timing parameters (0=NO, 1=YES) use of normal timing parametrs (0=NO, 1=YES)
Obviously TP0 and TP1 are mutually exclusive so only TPO=0 TP1=1 or TP0=1 TP1=0 can be used.
The KW2000 protocol allows the ECU to be connected on the bus and the tester can address more than one ECU at a time using functional addressing. ISO14230 requires that the tester uses functional addressing. The GAS ECU will be installed in a unknown environment and will have to respond to many tester requests toghether with (at least) the petrol ECU.
TBD
Some form of general purpose bus management must be designed not to disturb the communication of the tester with the petrol ECU1.
11
The tester must be designed to manage multiple ECU responses: what happens when the tester receives two resposes to a functional request asking for data (f.i. engine coolant temperature)? Which one is showed? The first?, The last?, Both? The matter has to be investigated!
TBD
0x08 0x09 0x10 0x11 0x12 0x13 0x14 0x17 0x18 0x1A 0x20 0x21 0x22 0x23 0x26 0x27
10
TBD
Service name Dynamically define local identifier Write data by common identifier Input output control by common identifier Input output control by local identifier Start routine by local identifier Start routine by common identifier Request routine result by local identifier Request download Request upload Transfer data Request transfer exit Start routine by address Stop routine by address Request routine result by address Write data by local identifier Write memory by address Tester present Esc code
SID 0x2C 0x2E 0x2F 0x30 0x31 0x32 0x33 0x34 0x35 0x36 0x37 0x38 0x39 0x3A 0x3B 0x3D 0x3E 0x80
Sup
Note
11
TBD
Request Data Byte #1 #2 #3 #4 #5 Format byte Target address byte Source address Start communication SID Checksum Description Byte Value (Hex) 81
1 2
C1 33
123
4
F15 81 XX
Positive response Data Byte #1 #2 #3 #4 #5 #6 #7 Format byte Target address byte Source address byte Start communication SID Key byte #1 Key byte #2 Checksum Description Byte Value (Hex) 83 F1 12 81 E9
6
8F XX
Though ISO14230 requires that the data length must be limited to 7 bytes, the gas ECU is able to manage upto 63 data bytes. The limitation refers only to the diagnostic services 0x00-0x0F defined in J1979 and referred by ISO14230-3. The StartCommunication service is used in the fast init initialization: before the request the wakeup pattern defined in ISO14230-2 must be sent to the gas ECU. The following figure shows the ranges of the possible physical addressing, as suggested by the KW2000 standard.
1 2
Physical addressing is used Functional addressing is used 3 Physical addressing is used. 4 Functional addressing is used. 5 Required by ISO14230-4, but other address numbers could be used. 6 KB1 and KB2 are required to be E9 and 8F (2025) by ISO14230-4
12
TBD
13
TBD
Request Data Byte #1 #2 #3 #4 #5 Format byte Target address byte Source address Stop communication SID Checksum Description Byte Value (Hex) 81
1 2
C1 33
123
4
F15 82 XX
Positive response Data Byte #1 #2 #3 #4 #6 Format byte Target address byte Source address byte Stop communication SID positive response Checksum Description Byte Value (Hex) 81 F1 12 82 XX Mnemonic FMT TGT SRC SPRPR CS
From now on, format byte, source and target addresses and checksum will not be reported in the message examples/descriptions.
1 2
Physical addressing is used Functional addressing is used 3 Physical addressing is used. 4 Functional addressing is used. 5 Required by ISO14230-4, but other address numbers could be used.
14
TBD
Positive response (request supported PIDs) Data Byte #1 #2 #3 #4 #5 #6 Supported PID Data A Data B Data C Data D Description Request current powertrain diagnostic data resp. SID Byte Value (Hex) 41 XX XX XX XX XX Mnemonic SIDPR PID DATA_A DATA_B DATA_C DATA_D
The values for data A to D depends on the PID requested, please refer to appendix A and appendix B of J1979 for definition of PIDs and response values. The PID supported by GAS ECU are the following:
Parameter name Support for group 1 PIDs Monitor status and DTC number DTC that caused freeze frame data storage Engine coolant temperature PID 0x00 0x01 0x02 0x05 Only if an absolute pressure sensor (AEB 025 type) is installed. The standard requires that only one of Pid 0x0A, 0x22, 0x23 is supported Only if map signal is connected or an absolute pressure sensor (AEB 025 type) is installed The standard requires that only one of Pid 0x13, 0x1D is supported Pid 0x13 is used for sensor location. Short term fuel trim is always 0% Only if the GAS ECU is configured for 2 lambda probes (2 banks) Oxygen sensor Bank 2 Sensor A 0x18 Pid 0x13 is used for sensor location. Short term fuel trim is always 0% OBD requirement to which the ECU is designed Support for group 2 PIDs 0x1C 0x20 Mandatory Note
0x0A
Intake manifold absolute pressure Engine RPM Location of oxigen sensor Oxygen sensor Bank 1 Sensor A
15
TBD
Parameter name Fuel rail pressure relative to manifold vacuum Fuel level input
PID
Note Only if a diffrential pressure sensor (AEB 013 type) is installed. The standard requires that only one of Pid 0x0A, 0x22, 0x23 is supported
0x22
Negative responses with rejection code subfunction not supported can be received from the GAS ECU if a non-supported PID is requested or the GAS ECU configuration doesnt allow the PID to be suported (f.i. requesting the bank 2 sensor A oxygen sensor voltage if the GAS ECU is configured for a single oxygen sensor).
16
TBD
Positive response (report freeze frame PID value) Data Byte #1 #2 #3 #4 #5 #6 #7 Description Request current powertrain freeze frame data req. SID positive response PID Frame # Supported PID: Data A (Mandatory) Supported PID: Data B (Conditional) Supported PID: Data C (Conditional) Supported PID: Data D (Conditional) Byte Value (Hex) 42 XX XX XX XX XX XX Mnemonic SIDRQPR PID FRNO DATA_A DATA_B DATA_C DATA_D
Negative response Data Byte #1 #2 #3 Description Negative response SID Request current powertrain freeze frame data req. SID Response code Byte Value (Hex) 7F 02 XX Mnemonic NACK SID RC
The parameter Frame # shall be set to 0. If a frame different from 0 is requested, a negative response message will be received by the client. The values for data A to D depends on the PID requested, please refer to appendix A and appendix B of J1979 for definition of PIDs and response values. In simple words PIDs 0x00, 0x20, 0x40 upto 0xE0 request information on supported PIDs; request supported PIDs positive response will be sent to the client by the server. PIDs in the range 0x01..0x1F (0x21..0x2F) (0x31..0x3F) (0xE1..0xFF) are used to request specific data to the server and shall be used by the client only if declared as supprted by the server. Support for PID 0x00 is mandatory; support for the other PIDs is optional. The PIDs supported by the OMVL gas ECU are the following:
Parameter name Support for group 1 PIDs DTC that caused freeze frame data storage Engine coolant temperature PID 0x00 0x02 0x05 Only if an absolute pressure sensor (AEB 025 type) is installed. The standard requires that only one of Pid 0x0A, 0x22, 0x23 is supported Only if map signal is connected or an absolute pressure sensor (AEB 025 type) is installed Mandatory Note
0x0A
0x0B
17
TBD
Parameter name Engine RPM Oxygen sensor Bank 1 Sensor A Oxygen sensor Bank 2 Sensor A Support for group 2 PIDs Fuel rail pressure relative to manifold vacuum Fuel level input
Note
Only if the GAS ECU is configured for 2 lambda probes (2 banks) Only if a diffrential pressure sensor (AEB 013 type) is installed. The standard requires that only one of Pid 0x0A, 0x22, 0x23 is supported
0x22
Positive response Data Byte #1 #2 #3 #4 #5 #6 #7 DTC #1 (MSB) DTC #1 (LSB) DTC #2 (MSB) DTC #2 (LSB) DTC #3 (MSB) DTC #3 (LSB) Description Request emission related DTC positive response Byte Value (Hex) 43 XX XX XX XX XX XX Mnemonic SIDPR DTC1HI DTC1LO DTC2HI DTC2LO DTC3HI DTC3LO
Before sending this message, current powertrain diagnostic data should be requested (SID = 0x01) with PID Number of emission related DTC and MIL status (PID = 0x01). The code 0x0000 defines a void DTC and is sent by the server to fill the fields of the response message. 18
TBD
19
TBD
I/O control diagnostic mode: the ECU enters a special state, to let the tester control the I/Os of the ECU. The ECU enters the petrol mode and only the communication with the tester or the PC is kept alive. See paragraph 6.19 I/O control by local identifier for more information on the diagnostic mode.
Description Reserved by ISO14230-3 Default diagnostic mode Reserved for future expansions I/O control diagnostic mode Reserved for future expansions Tab. 8: diagnostic modes
20
TBD
Positive response Data Byte #1 Description Stop diagnostic session positive response SID Byte Value (Hex) 60 Mnemonic SPDSPR
The ECU supports only the default seed request and default key transmission. The seed is a 16 bit number the key is the 1-complement of the seed. For instance seed = 0xC75A, key = 0x38A5. If two unsuccessful access attempts are performed , no more access attempts are allowed for 10 seconds. The same timeout is set at the power-up or reset. The following table summarizes the negative responses of this service
21
TBD
Description
REQUIRED TIME DELAY NOT EXPIRED The 10 seconds timeout at power-up or after two access attempts has not expired. Retry later REQUEST OUT OF RANGE CONDITION NOT CORRECT The AccessMode parameter is out of allowed range. The value for the AccessMode parameter in a SendKey security access is not the one used in the RequestSeed increased by 1. Two access attempts were unsuccessfull. Restart the security access procedure.
After a successfull security access the server enter the UNLOCKED status.
Request #1 Data Byte #1 #2 Security access SID Access mode : request seed Positive response #1 Data Byte #1 #2 #3 #4 #5 Description Security access positive response SID Access mode : request seed Seed LSB Seed MSB Security access status Negative response #1 Data Byte #1 #2 #3 Security access SID Response code Description Negative response #1 SID Byte Value (Hex) 7F 27 XX Mnemonic NACK SA RC Byte Value (Hex) 67 01 XX XX 34 SACCSTAT Mnemonic SA ACCMODE SEED Description Byte Value (Hex) 27 01 Mnemonic SA ACCMODE
22
TBD
Request #2 Data Byte #1 #2 #3 #4 Security access SID Access mode : send key Key LSB Key MSB Positive response #2 Data Byte #1 #2 #3 Description Security access positive response SID Access mode : send key Security access status Negative response #2 Data Byte #1 #2 #3 Security access SID Response code Description Negative response #2 SID Byte Value (Hex) 7F 27 XX Mnemonic NACK SA RC Byte Value (Hex) 67 02 34 Mnemonic SA ACCMODE SACCSTAT Description Byte Value (Hex) 27 02 XX XX Mnemonic SA ACCMODE KEY
TBD
The identification options supported by the ECU are listed in the following Tab. 10.
Identification option HW IDENTIFICATION FW IDENTIFICATION CFG IDENTIFICATION Value 0x81 0x82 0x83 Identification record Hardware identification string Firmware identification string Configuration file identification
Tab. 10: identification options Request Data Byte #1 #2 Identification option Description Read ECU identification request SID Byte Value (Hex) 1A XX Mnemonic RECUID IDOPT
Positive Response Data Byte #1 #2 : #n Description Read ECU identification positive response SID Identification record byte #1 : Identification record byte #n-1 Byte Value (Hex) 5A XX : XX Mnemonic RECUIDPR IDRECVAL
If the parameter IdentificationOption has a value not supported by the server a negative response message is sent to the client with response code REQUEST OUT OF RANGE.
Negative Response Data Byte #1 #2 #3 Description Negative response SID Read ECU identification request SID Responsde code Byte Value (Hex) 7F 5A 31 Mnemonic NACK RECUID RC
6.12.1 Hardware identification The string identifying the electronic board of the ECU is transmitted as identification record. The string is terminated by a NULL character. 6.12.2 Firmware identification The string identifying the firmware version installed in the ECU is transmitted as identification record. The string is terminated by a NULL character.
24
TBD
6.12.3 Configuration identification The strings identifying the configuration file installed in the ECU are transmitted as identification record. Each string is terminated by a NULL character. The strings correspond to the three fields Make Model & Notes Configuration date
25
TBD
Response Data Byte #1 #2 #3 #4 #5 #6 #7 Infotype group Number of data items Supported infotypes (0x01-0x08) Supported infotypes (0x09-0x10) Supported infotypes (0x11-0x18) Supported infotypes (0x19-0x20) Description Request vehicle information request SID Byte Value (Hex) 49 00 01 C0 00 00 00 Mnemonic SIDPR INFTYPREC NODI DATA_A DATA_B DATA_C DATA_D
26
TBD
Response #n Data Byte #1 #2 #3 #4 #5 #6 #7 Description Request vehicle information request SID Vehicle Identification Number Number of data items Vin char # 4*(n-1) 2 Vin char # 4*(n-1) 1 Vin char # 4*(n-1) Vin char # 4*(n-1) +1 Byte Value (Hex) 49 02 01 XX XX XX XX Mnemonic SIDPR VIN NODI DATA #1 DATA #2 DATA #3 DATA #4
The reponse is given with 5 messages (n=1..5). In the first message (n=1) Data #1, #2, #3 is 0x00, Data #4 is the first VIN char. The subsequest messages report the subsequent VIN chars:
Response #1 DATA #1 DATA #2 DATA #3 DATA #4 00 00 00 VIN-1 Response #2 VIN-2 VIN-3 VIN-4 VIN-5 Response #3 VIN-6 VIN-7 VIN-8 VIN-9 Response #4 VIN-10 VIN-11 VIN-12 VIN-13 Response #5 VIN-14 VIN-15 VIN-16 VIN-17
Tab. 12: write data by local identifier - record local identifiers Request Data Byte #1 #2 #3 : #n Description Write data by local identifier request SID Record local identifier Record byte #1 Record byte #n Byte Value (Hex) 3B XX XX : XX Mnemonic WDBLID RECLID RECVAL
27
TBD
Positive Response Data Byte #1 #2 Description Write data by local identifier request SID Record local identifier Byte Value (Hex) 7B XX Mnemonic WDBLIDPR RECLID
If a record local identifier not included in Tab. 12 is received by the server a negative response message will be sent to the client with error code SubfunctionNotSupported.
Negative Response Data Byte #1 #2 #3 Description Negative response SID Write data by local identifier request SID Responsde code Byte Value (Hex) 7F 7B 12 Mnemonic NACK WDBLIDPR RC
6.14.1 Vehicle Identification Number Use this record local identifier to store the VIN into the server memory. Seventeen record bytes must be sent in the message. These record bytes will be stored as vehicle identification number.
28
TBD
Request Data Byte #1 #2 #3 #4 Description Read data by local identifier request SID Record local identifier Transmission mode (single, slow, medium, fast, stop) Maximum number of responses to send Byte Value (Hex) 21 XX XX XX Mnemonic RDBLID RLOCID TXM MNORTS
The parameters Transmission mode and Maximum number of responses to send are optional. If Transmission mode is not specified, single is selected by default. If Maximum number of responses to send is not specified 1 is selected by default. The parameter Maximum number of responses to send can be specified only if Transmission mode has been specified. If single has been specified as Transmission mode, the parameter Maximum number of responses to send is set to 1.
Positive response Data Byte #1 #2 #3 : #n Record byte #n Negative response Data Byte #1 #2 #3 Description Negative response SID Read data by local identifier request SID Response code Byte Value (Hex) 7F XX XX Mnemonic NACK RDBLID RC XX Description Read data by local identifier positive response SID Record local identifier Record byte #1 Byte Value (Hex) 61 XX XX Mnemonic RDBLIDPR RLOCID RECVAL
If the transmission mode is set to an invalid value, or zero is selected as maximum number of responses to send, a negative response message is sent by the server with response code RequestOutOfRange. If a non supported RecordLocalIdentifier is requested, a a negative response message is sent by the server with response code SubfunctionNotSupported. Tab. 13 reports the supported record identifiers.
Record Local Identifier Vehicle Identification Number ECU Measurements Value 0x01 0x02 Notes
29
TBD
6.15.1 Vehicle Identification Number Use this record local identifier to get the vehicle identification number from the server. The response message will contain the seventeen bytes that compose the VIN. 6.15.2 ECU Measurements Use this record local identifier to acquire input and output parameters of the ECU. Each parameter is transmitted with two bytes in the order LSB / MSB (LSB first). The following parameters are transmitted to the tester: Engine speed: measured rpm of the engine with 1 rpm resolution Bank #1 petrol injection time: measured petrol injection time for cylinder #1 with 1 s resolution (ex. 3527 = 3.527 ms). Bank #2 petrol injection time: measured petrol injection time for cylinder #5 with 1 s resolution(ex. 3527 = 3.527 ms). Bank #1 computed gas injection time: computed gas injection time for cylinder #1 with 1 s resolution (ex. 11728 = 11.728 ms). Bank #2 computed gas injection time: computed gas injection time for cylinder #5 with 1 s resolution (ex. 11728 = 11.728 ms). Water temperature: measured water temperature with 1C resolution and 20C offset (ex. 70 = 50C) Gas temperature: measured gas temperature with 1C resolution and 20C offset (ex. 70 = 50C) Differential pressure: measured pressure between the gas rail and the manifold with 1 mBar resolution (ex. 2128 = 2.128 Bar) Bank #1 lambda signal percentage: measured lambda signal as percentage of sensor range with 1% resolution. (0% means lean, 100% means rich) (ex. 83 = 0.83V for a 0-1 lambda probe). Bank #2 lambda signal percentage: measured lambda signal as percentage of sensor range with 1% resolution. (0% means lean, 100% means rich) (ex. 83 = 0.83V for a 0-1 lambda probe). Battery voltage: battery voltage measured at the petrol injector coil with 10 mV resolution (ex 1321 = 13.21 V). Fuel state: code of the fuel powering the vehicle (0x0000 for gas, 0xFFFF for petrol).
30
TBD
As the data bytes of the response message are limited to 63, due to the inclusion of the message length in the format byte, a maximum of 30 DTCs can be transmitted by the server.
Request Data Byte #1 Description Read diagnostic trouble codes SID Positive response Data Byte #1 #2 #3 #4 : #2n+1 #2n+2 Number of DTC DTC #1 MSB DTC #1 LSB : DTC #n MSB DTC #n LSB Description Read diagnostic trouble codes positive responseSID Byte Value (Hex) 53 XX XX XX : XX XX Mnemonic RDDTCPR #DTC LSTOFDTC Byte Value (Hex) 13 Mnemonic RDDTC
No negative response is foreseen by the server If the parameter NumberOfDTC is 0, the parameter ListOfDTC is invalid as no DTC is stored in the list. A maximum of 30 DTCs can be present in the response message.
31
TBD
Request Data Byte #1 #2 : #m Description Clear diagnostic information SID Group of diagnostic information #1 : Group of diagnostic information #m-1 Positive response Data Byte #1 #2 : #m Description Clear diagnostic information positive responseSID Group of diagnostic information #1 : Group of diagnostic information #m-1 Byte Value (Hex) 54 XX : XX Mnemonic CLRDTCPR GODIN Byte Value (Hex) 14 XX : XX Mnemonic CLRDTC GODIN
32
TBD
Positive response Data Byte #1 #2 #2 #3 #4 : #m-2 #n-1 #n Description Read status of diagnostic trouble codes positive responseSID Number of DTC DTC #1 MSB DTC #1 LSB DTC status #1 : DTC #mMSB DTC #m B DTC status #m Byte Value (Hex) 57 XX XX XX XX : XX XX XX Mnemonic RDSDTCPR #DTC LSTDTCST
If the transmission buffer size is not sufficient to transmit all of the DTCs and their status in a single frame, multiple frames will be transmitted separated by the P2 timeout. In Fig. 7 an example is given of a multiple frame positive response. The transmission buffer depth is set to 63 byte (message length specified in the format byte) and the numer of DTC stored is set to 23. The first 20 records (DTC + DTCs status) are transmitted in the first frame, the remaining 3 records are transmitted in the second frame. The number of DTC parameter is set to 23 in each frame.
33
TBD
The Number of DTC output parameter indicates the number of DTCs stored in the ECU, so, in a multiple frame response, it will be the same in all of the frames. The DTCs status can have the value indicated in Tab. 14.
Description Not ready Present Stored Invalid Value 0x00 0x01 0x02 0xFF Notes The system is not ready to detec the DTC The DTC has been stored and the signal is in error condition The DTC has been stored and the signal is in normal condition Invalid information (an error was encountered)
34
TBD
Negative response Data Byte #1 #2 #3 Description Negative response SID Input output control by local identifier request SID Response code Byte Value (Hex) 7F 30 XX Mnemonic NACK RDBLID RC
If the system is in a diagnostic mode different from I/O control diagnostic mode, a negative response is sent to the tester with response code Condition not correct. If a input output local identifier is used, such that it is not recognized by the server, a a negative response is sent to the tester with response code Subfunction not supported. The I/O control diagnostic mode must be activated with a Start diagnostic session request using the proper parameter. The server does not check for consistence of the parameters or that the number of parameters of the service is correct. Unpredictable results may result if the service is misused. To get back to the normal system operation the tester shall: send a Stop diagnostic session request to exit the diagnostic session send a Reset ECU request to reset the ECU
Input output local identifier Gas valve control Gas injectors control Petrol injectors control Petrol injectors disconnection control Lambda emulation control Test switch led Read switch button Set lambda emulation voltage Read analog voltage Read status of rpm signal Read rpm period Set status of diagnostic lights Value 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C Notes Controls the gas valve Controls the gas injectors Verify the status of the petrol injectors Disconnect the petrol injectors from the petrol ECU Connects / disconnects the oxygen sensor to / from the petrol ECU Set the leds of the switch Reads the status of the switch button Set the output voltage of the emulation circuit Read the analog voltage of a analog input channel Read if the rpm signal is active or not Read the period of the rpm signal Set on or off the diagnostic lights on the PCB
35
TBD
6.19.1 Gas valve control Use this input output control local identifier to set the gas valve ON or OFF.
Request Data Byte #1 #2 #3 Gas valve control Gas valve status (ON = 0x01, OFF = 0x00) Positive response Data Byte #1 #2 #n Description Input output control by local identifier positive response SID Gas valve control Gas valve status (microcontroller pin status) (0 = OFF, 1 = ON) Byte Value (Hex) 70 01 XX Mnemonic IOCBLIDPR IOLID Description Input output control by local identifier request SID Byte Value (Hex) 30 01 XX Mnemonic IOCBLID IOLID
The gas valve status parameter in the request selects if the gas valve shall be turned on or off. The gas valve status parameter in the response sends the actual status of the microcontroller output line. Pay attention using this service as gas is likely to flow into the engine when the gas valve is turned on.
6.19.2 Gas injectors control Use this I/O control local identifier to set a gas injector ON (open) or OFF (closed).
Request Data Byte #1 #2 #3 #4 Gas injectors control Injector number (0x00-0x07) Gas injector status (ON = 0x01, OFF = 0x00) Description Input output control by local identifier request SID Byte Value (Hex) 30 02 XX XX Mnemonic IOCBLID IOLID
36
TBD
Positive response Data Byte #1 #2 #3 Description Input output control by local identifier positive response SID Gas injectors control Gas injectors status (microcontroller pin status). Byte Value (Hex) 70 02 XX Mnemonic IOCBLIDPR IOLID
The injector number parameter in the request selects which gas injector is affected by the request the parameter can range from 0 (Cil #1) to 7 (Cil #8) for the PIRO04, or from 0 (Cil #1) to 3 (Cil #4) for the SAM04. The injector status parameter specifyes if the gas injector shall be turned ON (open) or OFF (closed). In the response the gas injectors status output parameter reports the state of all of the gas injectors of the ECU. The information is coded in the bits (1 = ON, 0 = OFF), as explained in the following table:
bit cyclinder # b7 8 b6 7 b5 6 b4 5 b3 4 b2 3 b1 2 b0 1
The status is referred to the microcontroller pins. Pay attention using this service as gas is likely to flow into the engine when one or more gas injectors are turned on. 6.19.3 Petrol injectors control Use this I/O control local identifier to verify the status of the petrol injectors, as seen by the ECU. The output parameter gives a picture of all of the petrol injectors as indicated in Tab. 16. A bit set to 1 means that the corresponding petrol injector is driven (on, powered, open, etc..), a bit cleared to 0 means that the corresponding petrol injector is not driven (off, not powered, closed, etc.).
Request Data Byte #1 #2 Description Input output control by local identifier request SID Petrol injectors control Byte Value (Hex) 30 03 Mnemonic IOCBLID IOLID
37
TBD
Positive response Data Byte #1 #2 #3 Description Input output control by local identifier positive response SID Petrol injectors control Petrol injectors status (microcontroller pin status). Byte Value (Hex) 70 03 XX Mnemonic IOCBLIDPR IOLID
6.19.4 Petrol connection control This I/O local identifier allow the user to connect or disconnect the petrol injectors from the petrol ECU. The disconnection is actually performed inserting a resistance betwenn the cold terminal of the petrol injectors and the relevant input pin of the petrol ECU. At the moment, all of the petrol injectors are connected/disconnected at the same time but provision is made for the selection of a specific injector to be conneted/disconnected.
Request Data Byte #1 #2 #3 #4 Description Input output control by local identifier request SID Petrol injectors disconnection control Petrol injectors connection status (1 = connected, 0 = disconnected) Petrol injector number Positive response Data Byte #1 #2 #3 Description Input output control by local identifier positive response SID Petrol injectors connection control Petrol injectors connection status (microcontroller pin status). Byte Value (Hex) 70 04 XX Mnemonic IOCBLIDPR IOLID Byte Value (Hex) 30 04 XX Mnemonic IOCBLID IOLID
The petrol connection status return parameter indicates the status of the pin of the microcontroller relevant to the connection/disconnection of the petrol injectors. If equal to zero, the petrol injectors are disconnected from the petrol ECU, if non-zero, the the petrol injectors are connected to the petrol ECU. 6.19.5 Lambda emulation control Use this I/O local identifier to connect (emulation OFF) (disconnect (emulation ON)) the oxygen sensor of the vehicle to (from) the petrol ECU. If the emulation is turned on, the petrol ECU does not measure the oxygen sensor signal, but a signal generated by the gas ECU.
38
TBD
Request Data Byte #1 #2 #3 Description Input output control by local identifier request SID Lambda emulation control Lambda emulation status (1 = ON, 0 = OFF) Positive response Data Byte #1 #2 #3 Description Input output control by local identifier positive response SID Lambda emulation control Lambda emulation status (microcontroller pin status). Byte Value (Hex) 70 05 XX Mnemonic IOCBLIDPR IOLID Byte Value (Hex) 30 05 XX Mnemonic IOCBLID IOLID
The lambda emulation status return parameter indicates the status of the lambda emulation referred to the microcontroller pins. If zero, the lambda emulation is off and the oxygen sensor is connected to the petrol ECU, if non-zero, the emulation is on and the oxygen sensor is disconnected from the petrol ECU. If the emulation of the oxygen sensor is turned on and the engine is running in petrol mode, the petrol ECU can dected a failure in the sensor or affect the short and long term fuel trim as the combustion feedback is missing. 6.19.6 Test switch leds Use this I/O local identifier to sel the led indication on the switch. The parameter let the user test the different operating modes of the switch indications and the functioning of the led indicators:
Request Data Byte #1 #2 #3 Test switch leds Ouput configuration Positive response Data Byte #1 #2 Description Input output control by local identifier positive response SID Test switch leds Byte Value (Hex) 70 06 Mnemonic IOCBLIDPR IOLID Description Input output control by local identifier request SID Byte Value (Hex) 30 06 XX Mnemonic IOCBLID IOLID
39
TBD
Negative response Data Byte #1 #2 #3 Description Negative response SID Input output control by local identifier request SID Response code Byte Value (Hex) 7F 30 31 Mnemonic NACK RDBLID RC
Tab. 17: output configurations for the test of the leds of the switch
If the output configuration parameter has a value that is not within those indicated in Tab. 17, a negative response message will be received by the tester with response code Request Out Of Range. 6.19.7 Read switch button Use this I/O local indentifier to test the status of the switch button. The status will be acquired as it is, without filtering and without any care to polarizing voltages, etc.
Request Data Byte #1 #2 Read switch button Description Input output control by local identifier request SID Byte Value (Hex) 30 07 Mnemonic IOCBLID IOLID
40
TBD
Positive response Data Byte #1 #2 #3 Description Input output control by local identifier positive response SID Read switch button Button status (0 = RELEASED, 1 = PRESSED) Byte Value (Hex) 70 07 XX Mnemonic IOCBLIDPR IOLID
The button status output parameter is referred to the actual status of the input line to the microcontroller: this means that the status is how the system sees the switch button, regardless of its actual state. 6.19.8 Set lambda emulation voltage Use this I/O local identifier to set the output voltage of the oxygen sensor emulator circuit. To have this voltage connected to the output pin of the ECU, the emulation control must be set (see 6.19.5 ). The service let the user select the bank and the desired output voltage.
Request Data Byte #1 #2 #3 #4 Description Input output control by local identifier request SID Set lambda emulation voltage Bank number (0 == bank #1, 1 == bank #2) Output voltage (050 = 05.0V) Positive response Data Byte #1 #2 #3 Description Input output control by local identifier positive response SID Set lambda emulation voltage Lambda emulation voltage (040 = 04.0V) Negative response Data Byte #1 #2 #3 Description Negative response SID Input output control by local identifier request SID Response code Byte Value (Hex) 7F 30 31 Mnemonic NACK RDBLID RC Byte Value (Hex) 70 08 XX Mnemonic IOCBLIDPR IOLID Byte Value (Hex) 30 08 XX XX Mnemonic IOCBLID IOLID
The bank number parameter selects the emulation channel affected by the command. If a non supported value is specified, a negative response will be sent to the tester with response code Request Out Of Range.
41
TBD
The output voltage has a 0.1V resolution. If a value above 5.0V is required a negative response will be sent to the tester with response code Request Out Of Range. Due to circuit limitations, the maximum output voltage of the emulation circuit can be 4.1V. The lambda emulation voltage output parameter reports the actual voltage generated by the emulation circuit.
6.19.9 Read analog voltage Use this I/O local identifier to acquire the voltage present at a specific input of the ECU. The service will respond with the voltage value present at the input of the ECU. This voltage value is actually the voltage acquired by the microcontroller and referred to the input pin.
Request Data Byte #1 #2 #3 Read analog voltage Channel number (0-23) Positive response Data Byte #1 #2 #3 #4 #5 Description Input output control by local identifier positive response SID Read analog voltage Channel number (4-23) Measured voltage LSB Measured voltage MSB Negative response Data Byte #1 #2 #3 Description Negative response SID Input output control by local identifier request SID Response code Byte Value (Hex) 7F 30 31 Mnemonic NACK RDBLID RC Byte Value (Hex) 70 09 XX XX XX Mnemonic IOCBLIDPR IOLID Description Input output control by local identifier request SID Byte Value (Hex) 30 09 XX Mnemonic IOCBLID IOLID
The channel number parameter specify the analog channel affected by the service. If a invalid channel number is receiived by the server, a negative response message will be sent to tester with response code Request Out Of Range. The codes for the channel numbers are listed in Tab. 18. The measured voltage parameter in the response gives the measured voltage in V multiplied by 100 (0.01V resolution, ex.1376 means 13.76V).
42
TBD
Channels 16 to 23 in the PIRO04 and 16 to 19 in the SAM04 measure the current in the gas injectors; the measurement ranges from 0 to 1.7A (0,374V) if a higher current flows in the injector, the system return its full-scale value. The measured voltage parameter is a 16-bit value. It is transmitted in the LSB fisrt order: the lower byte is transmitted first and the higher byte after.
Channel 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
Piro04 Oxygen sensor bank #1 Oxygen sensor bank #2 Reserved Reserved Key signal (battery voltage) Sensors power Manifold pressure Rail pressure sensor / Differential pressure sensor Gas level sensor Rail temperature Water temperature Throttle position sensor Gas injector #1 current Gas injector #2 current Gas injector #3 current Gas injector #4 current Gas injector #5 current Gas injector #6 current Gas injector #7 current Gas injector #8 current
Sam04 Oxygen sensor bank #1 GND Switch power GND Key signal (battery voltage) Sensors power Throttle position sensor Manifold pressure sensor Gas level sensor Rail temperature Water temperature Differential pressure sensor Gas injector #1 current Gas injector #2 current Gas injector #3 current Gas injector #4 current GND GND GND GND
Note
Internal signal
Internal signal
Internal signal Internal signal Internal signal Internal signal Internal signal Internal signal Internal signal Internal signal
6.19.10 Read status of rpm signal Use this I/O local identifier do acquire the status of the rpm signal.
43
TBD
Request Data Byte #1 #2 Description Input output control by local identifier request SID Read status of rpm signal Positive response Data Byte #1 #2 #3 Description Input output control by local identifier positive response SID Read status of rpm signal Rpm signal status (1=ACTIVE, 0=NOT ACTIVE) Byte Value (Hex) 70 0A XX Mnemonic IOCBLIDPR IOLID Byte Value (Hex) 30 0A Mnemonic IOCBLID IOLID
The rpm signal status output parameter can have the following states: ACTIVE: the signal is driven low NOT ACTIVE: the signal is not driven low
6.19.11 Read period of rpm signal Use this I/O local identifier do acquire the period of the rpm signal.
Request Data Byte #1 #2 Description Input output control by local identifier request SID Read period of rpm signal Positive response Data Byte #1 #2 #3 #4 Description Input output control by local identifier positive response SID Read period of rpm signal Rpm signal period LSB Rpm signal period MSB Byte Value (Hex) 70 0B XX XX Mnemonic IOCBLIDPR IOLID Byte Value (Hex) 30 0B Mnemonic IOCBLID IOLID
The rpm signal period is measured with 10us resolution (ex. 4568 = 45.68ms). The measurement takes in account the Pulses per revolution configuration parameter, that is the period of the engine speed is returned by this service. Changes in the configuration parameters affect the measurement. The system coniders not valid and discard measurements below 8ms (the system is measuring rpms!) that correspond to 7500 rpm.
44
TBD
If the rpm signal is disconnected, the server just doesnt measure it anymore and the service will report the last available measurement (the period should be ).
6.19.12 Set status of diagnostic light This I/O local identifier to set the status of the diagnostic lights mounted on the board.
Request Data Byte #1 #2 #3 #4 Description Input output control by local identifier request SID Set status of diagnostic light Diagnostic light (1 = RED, 2 = GREEN) Status of diagnostic light (0=OFF, 1=ON) Positive response Data Byte #1 #2 Description Input output control by local identifier positive response SID Set status of diagnostic light Negative response Data Byte #1 #2 #3 Description Negative response SID Input output control by local identifier request SID Response code Byte Value (Hex) 7F 30 31 Mnemonic NACK RDBLID RC Byte Value (Hex) 70 0C Mnemonic IOCBLIDPR IOLID Byte Value (Hex) 30 0C XX XX Mnemonic IOCBLID IOLID
The diagnostic lights are not accessible to the user. This service is supplied in case an open board is being tested, for whatever reason. No user replaceable part is present on the electronic board. Do not even think to remove the covers to access the board inside. Permanent damage may ba caused to the board and the warranty will be void. The diagnostic light parameter selects which diagnostic light is affected by the command. If a non supported value is received by the server, a negative response message will be sent to the tester with response code Request Out Of Range. The status of diagnostic light parameter selects if the diagnostic light must be turned ON or OFF. Zero sets the light OFF, a non zero value sets the light ON.
45