OpenLegislation

Appendix 8

United Kingdom

Original text. Later amendments are not shown.

CALIBRATION PROTOCOL

1.

INTRODUCTION

This appendix describes how data is exchanged between a vehicle unit and a tester via the K-line which forms part of the calibration interface described in Appendix 6. It also describes control of the input/output signal line on the calibration connector.

Establishing K-line communications is described in Section 4 ‘Communication Services’.

This appendix uses the idea of diagnostic ‘sessions’ to determine the scope of K-line control under different conditions. The default session is the ‘StandardDiagnosticSession’ where all data can be read from a vehicle unit but no data can be written to a vehicle unit.

Selection of the diagnostic session is described in Section 5 ‘Management Services’.

This appendix has to be considered as relevant for both generations of VUs and of workshop cards, in compliance with the interoperability requirements laid down in this Regulation.

CPR_001

The ‘ECUProgrammingSession’ allows data entry into the vehicle unit. In the case of entry of calibration data, the vehicle unit must, in addition be in the CALIBRATION mode of operation.

Data transfer via K-line is described in Section 6 ‘Data Transmission Services’. Formats of data transferred are detailed in Section 8 ‘dataRecords formats’.

CPR_002

The ‘ECUAdjustmentSession’ allows the selection of the I/O mode of the calibration I/O signal line via the K-line interface. Control of the calibration I/O signal line is described in section 7 ‘Control of Test Pulses — Input/Output Control functional unit’.

CPR_003

Throughout this document the address of the tester is referred to as ‘tt’. Although there may be preferred addresses for testers, the VU shall respond correctly to any tester address. The physical address of the VU is 0xEE.

2.

TERMS, DEFINITIONS AND REFERENCES

The protocols, messages and error codes are principally based on a draft of ISO 14229-1 (Road vehicles — Diagnostic systems — Part 1: Diagnostic services, version 6 of 22 February 2001).

Byte encoding and hexadecimal values are used for the service identifiers, the service requests and responses, and the standard parameters.

The term ‘tester’ refers to the equipment used to enter programming/calibration data into the VU.

The terms ‘client’ and ‘server’ refer to the tester and the VU respectively.

The term ECU means ‘Electronic Control Unit’ and refers to the VU.

References:

F1ISO 14230-2: Road Vehicles -Diagnostic Systems — Keyword Protocol 2000- Part 2: Data Link Layer.

First edition: 1999.

3.

OVERVIEW OF SERVICES

3.1.

Services available

The following table provides an overview of the services that will be available in the tachograph and are defined in this document.

CPR_004

The table indicates the services that are available in an enabled diagnostic session.

  • The 1st column lists the services that are available.

  • The 2nd column includes the section number in this appendix where of service is further defined.

  • The 3rd column assigns the service identifier values for request messages.

  • The 4th column specifies the services of the ‘StandardDiagnosticSession’ (SD) which must be implemented in each VU.

  • The 5th column specifies the services of the ‘ECUAdjustmentSession’ (ECUAS) which must be implemented to allow control of the I/O signal line in the front panel calibration connector of the VU.

  • The 6th column specifies the services of the ‘ECUProgrammingSession’ (ECUPS) which must be implemented to allow for programming of parameters in the VU.

Table 1

Service Identifier value summary table

■
  • This symbol indicates that the service is mandatory in this diagnostic session.

    No symbol indicates that this service is not allowed in this diagnostic session.

  • Diagnostic Sessions
    Diagnostic Service NameSection No.SId Req.ValueSDECUASECUPS
    StartCommunication4.181■■■
    StopCommunication4.282■
    TesterPresent4.33E■■■
    StartDiagnosticSession5.110■■■
    SecurityAccess5.227■■■
    ReadDataByIdentifier6.122■■■
    WriteDataByIdentifier6.22E■
    InputOutputControlByIdentifier7.12F■

    3.2.

    Response codes

    Response codes are defined for each service.

    4.

    COMMUNICATION SERVICES

    Some services are necessary to establish and maintain communication. They do not appear on the application layer. The services available are detailed in the following table:

    Table 2

    Communication Services

    Service nameDescription
    StartCommunicationThe client requests to start a communication session with a server(s).
    StopCommunicationThe client requests to stop the current communication session.
    TesterPresentThe client indicates to the server that it is still present.

    CPR_005

    The StartCommunication Service is used for starting a communication. In order to perform any service, communication must be initialised and the communication parameters need to be appropriate for the desired mode.

    4.1.

    StartCommunication Service

    CPR_006

    Upon receiving a StartCommunication indication primitive, the VU shall check if the requested communication link can be initialised under the present conditions. Valid conditions for the initialisation of a communication link are described in document ISO 14230-2.

    CPR_007

    Then the VU shall perform all actions necessary to initialise the communication link and send a StartCommunication response primitive with the Positive Response parameters selected.

    CPR_008

    If a VU that is already initialised (and has entered any diagnostic session) receives a new StartCommunication Request (e.g. due to error recovery in the tester) the request shall be accepted and the VU shall be reinitialised.

    CPR_009

    If the communication link cannot be initialised for any reason, the VU shall continue operating as it was immediately prior to the attempt to initialise the communication link..

    CPR_010

    The StartCommunication Request message must be physically addressed.

    CPR_011

    Initialising the VU for services is performed through a ‘fast initialisation’ method,

    • There is a bus-idle time prior to any activity.

    • The tester then sends an initialisation pattern.

    • All information which is necessary to establish communication is contained in the response of the VU.

    CPR_012

    After completion of the initialisation,

    • All communication parameters are set to values defined in Table 4 according to the key bytes.

    • The VU is waiting for the first request of the tester.

    • The VU is in the default diagnostic mode, i.e. StandardDiagnosticSession.

    • The calibration I/O signal line is in the default state, i.e. disabled state.

    CPR_014

    The data rate on the K-line shall be 10 400 Baud.

    CPR_016

    The fast initialisation is started by the tester transmitting a Wake up pattern (Wup) on the K-line. The pattern begins after the idle time on K-line with a low time of Tinil. The tester transmits the first bit of the StartCommunication Service after a time of Twup following the first falling edge.

    CPR_017

    The timing values for the fast initialisation and communications in general are detailed in the tables below. There are different possibilities for the idle time:

    • First transmission after power on, Tidle = 300 ms.

    • After completion of a StopCommunication Service, Tidle = P3 min.

    • After stopping communication by time-out P3 max, Tidle = 0.

    Table 3
    Timing values for fast initialisation
    Parametermin valuemax value
    Tinil25 ± 1 ms24 ms26 ms
    Twup50 ± 1 ms49 ms51 ms
    Table 4
    Communication timing values
    Timing ParameterParameter Descriptionlower limit values [ms]upper limit values [ms]
    min.max.
    P1Inter byte time for VU response020
    P2Time between tester request and VU response or two VU responses25250
    P3Time between end of VU responses and start of new tester request555 000
    P4Inter byte time for tester request520

    CPR_018

    The message format for fast initialisation is detailed in the following tables. (NOTE: Hex means hexadecimal)

    Table 5
    StartCommunication Request Message
    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing81FMT
    #2Target address byteEETGT
    #3Source address bytettSRC
    #4StartCommunication Request Service Id81SCR
    #5Checksum00-FFCS
    Table 6
    StartCommunication Positive Response Message
    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address bytettTGT
    #3Source address byteEESRC
    #4Additional length byte03LEN
    #5StartCommunication Positive Response Service IdC1SCRPR
    #6Key byte 1EAKB1
    #7Key byte 28FKB2
    #8Checksum00-FFCS

    CPR_019

    There is no negative response to the StartCommunication Request message, if there is no positive response message to be transmitted then the VU is not initialised, nothing is transmitted and it remains in its normal operation.

    4.2.

    StopCommunication Service

    4.2.1

    Message description

    The purpose of this communication layer service is to terminate a communication session.

    CPR_020

    Upon receiving a StopCommunication indication primitive, the VU shall check if the current conditions allow to terminate this communication. In this case the VU shall perform all actions necessary to terminate this communication.

    CPR_021

    If it is possible to terminate the communication, the VU shall issue a StopCommunication response primitive with the Positive Response parameters selected, before the communication is terminated.

    CPR_022

    If the communication cannot be terminated by any reason, the VU shall issue a StopCommunication response primitive with the Negative Response parameter selected.

    CPR_023

    If time-out of P3 max is detected by the VU, the communication shall be terminated without any response primitive being issued.

    4.2.2

    Message format

    CPR_024

    The message formats for the StopCommunication primitives are detailed in the following tables.

    Table 7
    StopCommunication Request Message
    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address byteEETGT
    #3Source address bytettSRC
    #4Additional length byte01LEN
    #5StopCommunication Request Service Id82SPR
    #6Checksum00-FFCS
    Table 8
    StopCommunication Positive Response Message
    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address bytettTGT
    #3Source address byteEESRC
    #4Additional length byte01LEN
    #5StopCommunication Positive Response Service IdC2SPRPR
    #6Checksum00-FFCS
    Table 9
    StopCommunication Negative Response Message
    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address bytettTGT
    #3Source address byteEESRC
    #4Additional length byte03LEN
    #5negative Response Service Id7FNR
    #6StopCommunication Request Service Identification82SPR
    #7responseCode = generalReject10RC_GR
    #8Checksum00-FFCS

    4.2.3

    Parameter Definition

    This service does not require any parameter definition.

    4.3.

    TesterPresent Service

    4.3.1

    Message description

    The TesterPresent service is used by the tester to indicate to the server that it is still present, in order to prevent the server from automatically returning to normal operation and possibly stopping the communication. This service, sent periodically, keeps the diagnostic session/communication active by resetting the P3 timer each time a request for this service is received.

    4.3.2

    Message format

    CPR_079

    The message formats for the TesterPresent primitives are detailed in the following tables.

    Table 10
    TesterPresent Request Message
    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address byteEETGT
    #3Source address bytettSRC
    #4Additional length byte02LEN
    #5TesterPresent Request Service Id3ETP
    #6Sub Function = responseRequired =[ yes01RESPREQ_Y
    no ]02RESPREQ_NO
    #7Checksum00-FFCS

    CPR_080

    If the responseRequired parameter is set to ‘yes’, then the server shall respond with the following positive response message. If set to ‘no’, then no response is sent by the server.

    Table 11
    TesterPresent Positive Response Message
    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address bytettTGT
    #3Source address byteEESRC
    #4Additional length byte01LEN
    #5TesterPresent Positive Response Service Id7ETPPR
    #6Checksum00-FFCS

    CPR_081

    The service shall support the following negative responses codes:

    Table 12
    TesterPresent Negative Response Message
    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address bytettTGT
    #3Source address byteEESRC
    #4Additional length byte03LEN
    #5negative Response Service Id7FNR
    #6TesterPresent Request Service Identification3ETP
    #7responseCode =[SubFunctionNotSupported-InvalidFormat12RC_SFNS_IF
    incorrectMessageLength]13RC_IML
    #8Checksum00-FFCS

    5.

    MANAGEMENT SERVICES

    The services available are detailed in the following table:

    Table 13

    Management Services

    Service nameDescription
    StartDiagnosticSessionThe client requests to start a diagnostic session with a VU.
    SecurityAccessThe client requests access to functions restricted to authorised users.

    5.1.

    StartDiagnosticSession service

    5.1.1

    Message description

    CPR_025

    The service StartDiagnosticSession is used to enable different diagnostic sessions in the server. A diagnostic session enables a specific set of services according to Table 17. A session can enable vehicle manufacturer specific services which are not part of this document. Implementation rules shall conform to the following requirements:

    • There shall be always exactly one diagnostic session active in the VU,

    • The VU shall always start the StandardDiagnosticSession when powered up. If no other diagnostic session is started, then the StandardDiagnosticSession shall be running as long as the VU is powered,

    • If a diagnostic session which is already running has been requested by the tester, then the VU shall send a positive response message,

    • Whenever the tester requests a new diagnostic session, the VU shall first send a StartDiagnosticSession positive response message before the new session becomes active in the VU. If the VU is not able to start the requested new diagnostic session, then it shall respond with a StartDiagnosticSession negative response message, and the current session shall continue.

    CPR_026

    A diagnostic session shall only be started if communication has been established between the client and the VU.

    CPR_027

    The timing parameters defined in Table 4 shall be active after a successful StartDiagnosticSession with the diagnosticSession parameter set to ‘StandardDiagnosticSession’ in the request message if another diagnostic session was previously active.

    5.1.2

    Message format

    CPR_028

    The message formats for the StartDiagnosticSession primitives are detailed in the following tables.

    Table 14
    StartDiagnosticSession Request Message
    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address byteEETGT
    #3Source address bytettSRC
    #4Additional length byte02LEN
    #5StartDiagnosticSession Request Service Id10STDS
    #6diagnosticSession = [one value from Table 17]xxDS_…
    #7Checksum00-FFCS
    Table 15
    StartDiagnosticSession Positive Response Message
    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address bytettTGT
    #3Source address byteEESRC
    #4Additional length byte02LEN
    #5StartDiagnosticSession Positive Response Service Id50STDSPR
    #6diagnosticSession = [same value as in byte #6 Table 14]xxDS_…
    #7Checksum00-FFCS
    Table 16
    StartDiagnosticSession Negative Response Message

    – the value inserted in byte #6 of the request message is not supported, i.e. not in Table 17,

    – the length of the message is wrong,

    – the criteria for the request StartDiagnosticSession are not met.

    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address bytettTGT
    #3Source address byteEESRC
    #4Additional length byte03LEN
    #5Negative Response Service Id7FNR
    #6StartDiagnosticSession Request Service Id10STDS
    #7ResponseCode =[subFunctionNotSupportedf1 12RC_SFNS
    incorrectMessageLengthf2 13RC_IML
    conditionsNotCorrectf3 22RC_CNC
    #8Checksum00-FFCS

    5.1.3

    Parameter definition

    CPR_029

    The parameter diagnosticSession (DS_) is used by the StartDiagnosticSession service to select the specific behaviour of the server(s). The following diagnostic sessions are specified in this document:

    Table 17
    Definition of diagnosticSession Values
    HexDescriptionMnemonic
    81

    StandardDiagnosticSession

    This diagnostic session enables all services specified in Table 1 column 4 “SD”. These services allow reading of data from a server (VU). This diagnostic Session is active after the initialisation has been successfully completed between client (tester) and server (VU). This diagnostic session may be overwritten by other diagnostic sessions specified in this section.

    SD
    85

    ECUProgrammingSession

    This diagnostic session enables all services specified in Table 1 column 6 “ECUPS”. These services support the memory programming of a server (VU) This diagnostic session may be overwritten by other diagnostic sessions specified in this section..

    ECUPS
    87

    ECUAdjustmentSession

    This diagnostic session enables all services specified in Table 1 column 5 “ECUAS”. These services support the input/output control of a server (VU). This diagnostic session may be overwritten by other diagnostic sessions specified in this section.

    ECUAS

    5.2.

    SecurityAccess service

    Writing of calibration data is not possible unless the VU is in CALIBRATION mode. In addition to insertion of a valid workshop card into the VU, it is necessary to enter the appropriate PIN into the VU before access to the CALIBRATION mode is granted.

    When the VU is in CALIBRATION or CONTROL mode, access to the calibration input/output line is also possible.

    The SecurityAccess service provides a means to enter the PIN and to indicate to the tester whether or not the VU is in CALIBRATION mode.

    It is acceptable that the PIN may be entered through alternative methods.

    5.2.1

    Message Description

    The SecurityAccess service consists of a SecurityAccess ‘requestSeed’ message, eventually followed by a SecurityAccess ‘sendKey’ message. The SecurityAccess service must be carried out after the StartDiagnosticSession service.

    CPR_033

    The tester shall use the SecurityAccess ‘requestSeed’ message to check if the vehicle unit is ready to accept a PIN.

    CPR_034

    If the vehicle unit is already in CALIBRATION mode, it shall answer the request by sending a ‘seed’ of 0x0000 using the service SecurityAccess Positive Response.

    CPR_035

    If the vehicle unit is ready to accept a PIN for verification by a workshop card, it shall answer the request by sending a ‘seed’ greater than 0x0000 using the service SecurityAccess Positive Response.

    CPR_036

    If the vehicle unit is not ready to accept a PIN from the tester, either because the workshop card inserted is not valid, or because no workshop card has been inserted, or because the vehicle unit expects the PIN from another method, it shall answer the request with a Negative Response with a response code set to conditionsNotCorrectOrRequestSequenceError.

    CPR_037

    The tester shall then, eventually, use the SecurityAccess ‘sendKey’ message to forward a PIN to the Vehicle Unit. To allow time for the card authentication process to take place, the VU shall use the negative response code requestCorrectlyReceived-ResponsePending to extend the time to respond. However, the maximum time to respond shall not exceed 5 minutes. As soon as the requested service has been completed, the VU shall send a positive response message or negative response message with a response code different from this one. The negative response code requestCorrectlyReceived-ResponsePending may be repeated by the VU until the requested service is completed and the final response message is sent.

    CPR_038

    The vehicle unit shall answer to this request using the service SecurityAccess Positive Response only when in CALIBRATION mode.

    CPR_039

    In the following cases, the vehicle unit shall answer to this request with a Negative Response with a response code set to:

    • subFunctionNot supported: Invalid format for the subfunction parameter (accessType),

    • conditionsNotCorrectOrRequestSequenceError: Vehicle unit not ready to accept a PIN entry,

    • invalidKey: PIN not valid and number of PIN checks attempts not exceeded,

    • exceededNumberOfAttempts: PIN not valid and number of PIN checks attempts exceeded,

    • generalReject: Correct PIN but mutual authentication with workshop card failed.

    5.2.2

    Message format — SecurityAccess — requestSeed

    CPR_040

    The message formats for the SecurityAccess ‘requestSeed’ primitives are detailed in the following tables.

    Table 18

    SecurityAccess Request- requestSeed Message

    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address byteEETGT
    #3Source address bytettSRC
    #4Additional length byte02LEN
    #5SecurityAccess Request Service Id27SA
    #6accessType — requestSeed7DAT_RSD
    #7Checksum00-FFCS

    Table 19

    SecurityAccess — requestSeed Positive Response Message

    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address bytettTGT
    #3Source address byteEESRC
    #4Additional length byte04LEN
    #5SecurityAccess Positive Response Service Id67SAPR
    #6accessType — requestSeed7DAT_RSD
    #7Seed High00-FFSEEDH
    #8Seed Low00-FFSEEDL
    #9Checksum00-FFCS

    Table 20

    SecurityAccess Negative Response Message

    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address bytettTGT
    #3Source address byteEESRC
    #4Additional length byte03LEN
    #5negativeResponse Service Id7FNR
    #6SecurityAccess Request Service Id27SA
    #7responseCode =[conditionsNotCorrectOrRequestSequenceError22RC_CNC
    incorrectMessageLength]13RC_IML
    #8Checksum00-FFCS

    5.2.3

    Message format — SecurityAccess — sendKey

    CPR_041

    The message formats for the SecurityAccess ‘sendKey’ primitives are detailed in the following tables.

    Table 21

    SecurityAccess Request — sendKey Message

    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address byteEETGT
    #3Source address bytettSRC
    #4Additional length bytem+2LEN
    #5SecurityAccess Request Service Id27SA
    #6accessType — sendKey7EAT_SK
    #7 to #m + 6Key #1 (High)xxKEY
    ……
    Key #m (low, m must be a minimum of 4, and a maximum of 8)xx
    #m + 7Checksum00-FFCS

    Table 22

    SecurityAccess — sendKey Positive Response Message

    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address bytettTGT
    #3Source address byteEESRC
    #4Additional length byte02LEN
    #5SecurityAccess Positive Response Service Id67SAPR
    #6accessType — sendKey7EAT_SK
    #7Checksum00-FFCS

    Table 23

    SecurityAccess Negative Response Message

    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address bytettTGT
    #3Source address byteEESRC
    #4Additional length byte03LEN
    #5NegativeResponse Service Id7FNR
    #6SecurityAccess Request Service Id27SA
    #7ResponseCode =[generalReject10RC_GR
    subFunctionNotSupported12RC_SFNS
    incorrectMessageLength13RC_IML
    conditionsNotCorrectOrRequestSequenceError22RC_CNC
    invalidKey35RC_IK
    exceededNumberOfAttempts36RC_ENA
    requestCorrectlyReceived-ResponsePending]78RC_RCR_RP
    #8Checksum00-FFCS

    6.

    DATA TRANSMISSION SERVICES

    The services available are detailed in the following table:

    Table 24

    Data Transmission Services

    Service nameDescription
    ReadDataByIdentifierThe client requests the transmission of the current value of a record with access by recordDataIdentifier.
    WriteDataByIdentifierThe client requests to write a record accessed by recordDataIdentifier.

    6.1.

    ReadDataByIdentifier service

    6.1.1

    Message description

    CPR_050

    The ReadDataByIdentifier service is used by the client to request data record values from a server. The data are identified by a recordDataIdentifier. It is the VU manufacturer's responsibility that the server conditions are met when performing this service.

    6.1.2

    Message format

    CPR_051

    The message formats for the ReadDataByIdentifier primitives are detailed in the following tables.

    Table 25
    ReadDataByIdentifier Request Message
    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address byteEETGT
    #3Source address bytettSRC
    #4Additional length byte03LEN
    #5ReadDataByIdentifier Request Service Id22RDBI
    #6 to #7recordDataIdentifier = [a value fromTable 28]xxxxRDI_…
    #8Checksum00-FFCS
    Table 26
    ReadDataByIdentifier Positive Response Message
    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address bytettTGT
    #3Source address byteEESRC
    #4Additional length bytem+3LEN
    #5ReadDataByIdentifier Positive Response Service Id62RDBIPR
    #6 and #7recordDataIdentifier = [the same value as bytes #6 and #7 Table 25]xxxxRDI_...
    #8 to #m + 7dataRecord[] =[data#1xxDREC_DATA1
    :::
    data#m]xxDREC_DATAm
    #m + 8Checksum00-FFCS
    Table 27
    ReadDataByIdentifier Negative Response Message
    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address bytettTGT
    #3Source address byteEESRC
    #4Additional length byte03LEN
    #5NegativeResponse Service Id7FNR
    #6ReadDataByIdentifier Request Service Id22RDBI
    #7ResponseCode=[requestOutOfRange31RC_ROOR
    incorrectMessageLength13RC_IML
    conditionsNotCorrect]22RC_CNC
    #8Checksum00-FFCS

    6.1.3

    Parameter Definition

    CPR_052

    The parameter recordDataIdentifier (RDI_) in the ReadDataByIdentifier request message identifies a data record.

    CPR_053

    recordDataIdentifier values defined by this document are shown in the table below.

    The recordDataIdentifier table consists of four columns and multiple lines.

    • The 1st column (Hex) includes the ‘Hex Value’ assigned to the recordDataIdentifier specified in the 3rd column.

    • The 2nd column (Data element) specifies the data element of Appendix 1 on which the recordDataIdentifier is based (transcoding is sometimes necessary).

    • The 3rd column (Description) specifies the corresponding recordDataIdentifier name.

    • The 4th column (Mnemonic) specifies the mnemonic of this recordDataIdentifier.

    Table 28
    Definition of recordDataIdentifier values
    HexData elementrecordDataIdentifier Name(see format in Section 8.2)Mnemonic
    F90BTimeDateRDI_TD
    F912HighResolutionTotalVehicleDistanceRDI_HRTVD
    F918KfactorRDI_KF
    F91CLfactorTyreCircumferenceRDI_LF
    F91DWvehicleCharacteristicFactorRDI_WVCF
    F921TyreSizeRDI_TS
    F922NextCalibrationDateRDI_NCD
    F92CSpeedAuthorisedRDI_SA
    F97DRegisteringMemberStateRDI_RMS
    F97EVehicleRegistrationNumberRDI_ VRN
    F190VINRDI_ VIN

    CPR_054

    The parameter dataRecord (DREC_) is used by the ReadDataByIdentifier positive response message to provide the data record value identified by the recordDataIdentifier to the client (tester). Data formats are specified in section 8. Additional user optional dataRecords including VU specific input, internal and output data may be implemented, but are not defined in this document.

    6.2.

    WriteDataByIdentifier service

    6.2.1

    Message description

    CPR_056

    The WriteDataByIdentifier service is used by the client to write data record values to a server. The data are identified by a recordDataIdentifier. It is the VU manufacturer's responsibility that the server conditions are met when performing this service. To update the parameters listed in Table 28 the VU must be in CALIBRATION mode.

    6.2.2

    Message format

    CPR_057

    The message formats for the WriteDataByIdentifier primitives are detailed in the following tables.

    Table 29

    WriteDataByIdentifier Request Message

    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address byteEETGT
    #3Source address bytettSRC
    #4Additional length bytem + 3LEN
    #5WriteDataByIdentifier Request Service Id2EWDBI
    #6 to #7recordDataIdentifier = [a value from Table 28]xxxxRDI_…
    #8 to m + 7dataRecord[] =[data#1xxDREC_DATA1
    :::
    data#m]xxDREC_DATAm
    #m + 8Checksum00-FFCS

    Table 30

    WriteDataByIdentifier Positive Response Message

    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address bytettTGT
    #3Source address byteEESRC
    #4Additional length byte03LEN
    #5WriteDataByIdentifier Positive Response Service Id6EWDBIPR
    #6 to #7recordDataIdentifier = [the same value as bytes #6 and #7 Table 29]xxxxRDI_…
    #8Checksum00-FFCS

    Table 31

    WriteDataByIdentifier Negative Response Message

    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address bytettTGT
    #3Source address byteEESRC
    #4Additional length byte03LEN
    #5NegativeResponse Service Id7FNR
    #6WriteDataByIdentifier Request Service Id2EWDBI
    #7ResponseCode=[requestOutOfRange31RC_ROOR
    incorrectMessageLength13RC_IML
    conditionsNotCorrect]22RC_CNC
    #8Checksum00-FFCS

    6.2.3

    Parameter definition

    The parameter recordDataIdentifier (RDI_) is defined in Table 28.

    The parameter dataRecord (DREC_) is used by the WriteDataByIdentifier request message to provide the data record values identified by the recordDataIdentifier to the server (VU). Data formats are specified in section 8.

    7.

    CONTROL OF TEST PULSES — INPUT/OUTPUT CONTROL FUNCTIONAL UNIT

    The services available are detailed in the following table:

    Table 32

    Input/Output Control functional unit

    Service nameDescription
    InputOutputControlByIdentifierThe client requests the control of an input/output specific to the server.

    7.1.

    InputOutputControlByIdentifier service

    7.1.1

    Message description

    There is a connection via the front connector which allows test pulses to be controlled or monitored using a suitable tester.

    CPR_058

    This calibration I/O signal line can be configured by K-line command using the InputOutputControlByIdentifier service to select the required input or output function for the line. The available states of the line are:

    • disabled,

    • speedSignalInput, where the calibration I/O signal line is used to input a speed signal (test signal) replacing the motion sensor speed signal, this function is not available in CONTROL mode,

    • realTimeSpeedSignalOutputSensor, where the calibration I/O signal line is used to output the speed signal of the motion sensor,

    • RTCOutput, where the calibration I/O signal line is used to output the UTC clock signal, this function is not available in CONTROL mode.

    CPR_059

    The vehicle unit must have entered an adjustment session and must be in CALIBRATION or CONTROL mode to configure the state of the line. When the VU is in CALIBRATION mode, the four states of the line can be selected (disabled, speedSignalInput, realTimeSpeedSignalOutputSensor, RTCOutput). When the VU is in CONTROL mode, only two states of the lines can be selected (disabled, realTimeSpeedOutputSensor). On exit of the adjustment session or of the CALIBRATION or CONTROL mode the vehicle unit must ensure the calibration I/O signal line is returned to the ‘disabled’ (default) state.

    CPR_060

    If speed pulses are received at the real time speed signal input line of the VU while the calibration I/O signal line is set to input then the calibration I/O signal line shall be set to output or returned to the disabled state.

    CPR_061

    The sequence shall be:

    • Establish communications by StartCommunication Service

    • Enter an adjustment session by StartDiagnosticSession Service and be in CALIBRATION or CONTROL mode of operation (the order of these two operation is not important).

    • Change the state of the output by InputOutputControlByIdentifier Service.

    7.1.2

    Message format

    CPR_062

    The message formats for the InputOutputControlByIdentifier primitives are detailed in the following tables.

    Table 33
    InputOutputControlByIdentifier Request Message
    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address byteEETGT
    #3Source address bytettSRC
    #4Additional length bytexxLEN
    #5InputOutputControlByIdentifier Request Sid2FIOCBI
    #6 and #7InputOutputIdentifier = [CalibrationInputOutput]F960IOI_CIO

    #8 or

    #8 to #9

    ControlOptionRecord = [COR_…
    inputOutputControlParameter — one value from Table 36xxIOCP_…
    controlState — one value from Table 37 (see note below)]xxCS_…
    #9 or #10Checksum00-FFCS

    Note: The controlState parameter is present only in some cases (see 7.1.3).

    Table 34

    InputOutputControlByIdentifier Positive Response Message

    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address bytettTGT
    #3Source address byteEESRC
    #4Additional length bytexxLEN
    #5inputOutputControlByIdentifier Positive Response SId6FIOCBIPR
    #6 and #7inputOutputIdentifier = [CalibrationInputOutput]F960IOI_CIO

    #8 or

    #8 to #9

    controlStatusRecord = [CSR_
    inputOutputControlParameter (same value as byte #8 Table 33)xxIOCP_…
    controlState (same value as byte #9 Table 33)] (if applicable)xxCS_…
    #9 or #10Checksum00-FFCS

    Table 35

    InputOutputControlByIdentifier Negative Response Message

    Byte #Parameter NameHex ValueMnemonic
    #1Format byte — physical addressing80FMT
    #2Target address bytettTGT
    #3Source address byteEESRC
    #4Additional length byte03LEN
    #5negativeResponse Service Id7FNR
    #6inputOutputControlByIdentifier Request SId2FIOCBI
    #7responseCode=[
    incorrectMessageLength13RC_IML
    conditionsNotCorrect22RC_CNC
    requestOutOfRange31RC_ROOR
    deviceControlLimitsExceeded]7ARC_DCLE
    #8Checksum00-FFCS

    7.1.3

    Parameter definition

    CPR_064

    The parameter inputOutputControlParameter (IOCP_) is defined in the following table.

    Table 36
    Definition of inputOutputControlParameter values
    HexDescriptionMnemonic
    00

    ReturnControlToECU

    This value shall indicate to the server (VU) that the tester does no longer have control about the calibration I/O signal line.

    RCTECU
    01

    ResetToDefault

    This value shall indicate to the server (VU) that it is requested to reset the calibration I/O signal line to its default state.

    RTD
    03

    ShortTermAdjustment

    This value shall indicate to the server (VU) that it is requested to adjust the calibration I/O signal line to the value included in the controlState parameter.

    STA

    CPR_065

    The parameter controlState is present only when the inputOutputControlParameter is set to ShortTermAdjustment and is defined in the following table:

    Table 37
    Definition of controlState values
    ModeHex ValueDescription
    Disable00I/O line is disabled (default state)
    Enable01Enable calibration I/O line as speedSignalInput
    Enable02Enable calibration I/O line as realTimeSpeedSignalOutputSensor
    Enable03Enable calibration I/O line as RTCOutput

    8.

    DATARECORDS FORMATS

    This section details:

    • general rules that shall be applied to ranges of parameters transmitted by the vehicle unit to the tester,

    • formats that shall be used for data transferred via the Data Transmission Services described in section 6.

    CPR_067

    All parameters identified shall be supported by the VU.

    CPR_068

    Data transmitted by the VU to the tester in response to a request message shall be of the measured type (i.e. current value of the requested parameter as measured or observed by the VU).

    8.1.

    Transmitted parameter ranges

    CPR_069

    Table 38 defines the ranges used to determine the validity of a transmitted parameter.

    CPR_070

    The values in the range ‘error indicator’ provide a means for the vehicle unit to immediately indicate that valid parametric data is not currently available due to some type of error in the tachograph.

    CPR_071

    The values in the range ‘not available’ provide a means for the vehicle unit to transmit a message which contains a parameter that is not available or not supported in that module. The values in the range ‘not requested’ provide a means for a device to transmit a command message and identify those parameters where no response is expected from the receiving device.

    CPR_072

    If a component failure prevents the transmission of valid data for a parameter, the error indicator as described in Table 38 should be used in place of that parameter's data. However, if the measured or calculated data has yielded a value that is valid yet exceeds the defined parameter range, the error indicator should not be used. The data should be transmitted using the appropriate minimum or maximum parameter value.

    Table 38
    dataRecords ranges
    Range Name1 byte(Hex value)2 bytes(Hex value)4 bytes(Hex Value)ASCII
    Valid signal00 to FA0000 to FAFF00000000 to FAFFFFFF1 to 254
    Parameter specific indicatorFBFB00 to FBFFFB000000 to FBFFFFFFnone
    Reserved range for future indicator bitsFC to FDFC00 to FDFFFC000000 to FDFFFFFFnone
    Error indicatorFEFE00 to FEFFFE000000 to FEFFFFFF0
    Not available or not requestedFFFF00 to FFFFFF000000 to FFFFFFFFFF

    CPR_073

    For parameters coded in ASCII, the ASCII character ‘*’ is reserved as a delimiter.

    8.2.

    dataRecords formats

    Table 39 to Table 42 below detail the formats that shall be used via the ReadDataByIdentifier and WriteDataByIdentifier Services.

    CPR_074

    Table 39 provides the length, resolution and operating range for each parameter identified by its recordDataIdentifier:

    Table 39
    Format of dataRecords
    Parameter NameData length (bytes)ResolutionOperating range
    TimeDate8See details in Table 40
    HighResolutionTotalVehicleDistance45 m/bit gain, 0 m offset0 to + 21 055 406 km
    Kfactor20,001 pulse/m/bit gain, 0 offset0 to 64,255 pulse/m
    LfactorTyreCircumference20,125 10– 3 m/bit gain, 0 offset0 to 8,031 m
    WvehicleCharacteristicFactor20,001 pulse/m/bit gain, 0 offset0 to 64,255 pulse/m
    TyreSize15ASCIIASCII
    NextCalibrationDate3See details in Table 41
    SpeedAuthorised21/256 km/h/bit gain, 0 offset0 to 250,996 km/h
    RegisteringMemberState3ASCIIASCII
    VehicleRegistrationNumber14See details in Table 42
    VIN17ASCIIASCII

    CPR_075

    Table 40 details the formats of the different bytes of the TimeDate parameter:

    Table 40
    Detailed format of TimeDate (recordDataIdentifier value # F90B)
    ByteParameter definitionResolutionOperating range
    1Seconds0,25 s/bit gain, 0 s offset0 to 59,75 s
    2Minutes1 min/bit gain, 0 min offset0 to 59 min
    3Hours1 h/bit gain, 0 h offset0 to 23 h
    4Month1 month/bit gain, 0 month offset1 to 12 month
    5Day

    0,25 day/bit gain, 0 day offset

    (see NOTE below Table 41)

    0,25 to 31,75 day
    6Year

    1 year/bit gain, + 1985 year offset

    (see NOTE below Table 41)

    1985 to 2235 year
    7Local Minute Offset1 min/bit gain, – 125 min offset– 59 to + 59 min
    8Local Hour Offset1 h/bit gain, – 125 h offset– 23 to + 23 h

    CPR_076

    Table 41 details the formats of the different bytes of the NextCalibrationDate parameter.

    Table 41
    Detailed format of NextCalibrationDate (recordDataIdentifier value # F922)
    ByteParameter definitionResolutionOperating range
    1Month1 month/bit gain, 0 month offset1 to 12 month
    2Day

    0,25 day/bit gain, 0 day offset

    (see NOTE below)

    0,25 to 31,75 day
    3Year

    1 year/bit gain, + 1985 year offset

    (see NOTE below)

    1985 to 2235 year

    NOTE concerning the use of the ‘Day’ parameter:

    1. 1))

      A value of 0 for the date is null. The values 1, 2, 3, and 4 are used to identify the first day of the month; 5, 6, 7, and 8 identify the second day of the month; etc.

    2. 2))

      This parameter does not influence or change the hours parameter above.

    NOTE concerning the use of byte ‘Year’ parameter:

    A value of 0 for the year identifies the year 1985; a value of 1 identifies 1986; etc.

    CPR_078

    Table 42 details the formats of the different bytes of the VehicleRegistrationNumber parameter:

    Table 42
    Detailed format of VehicleRegistrationNumber (recordDataIdentifier value # F97E)
    ByteParameter definitionResolutionOperating range
    1Code Page (as defined in Appendix 1)ASCII01 to 0A
    2 - 14Vehicle Registration Number (as defined in Appendix 1)ASCIIASCII

    Annotations

    Textual amendments

    F1

    Substituted by Commission Implementing Regulation (EU) 2018/502 of 28 February 2018 amending Implementing Regulation (EU) 2016/799 laying down the requirements for the construction, testing, installation, operation and repair of tachographs and their components (Text with EEA relevance).

    Footnotes

    f1

    – the value inserted in byte #6 of the request message is not supported, i.e. not in Table 17,

    f2

    – the length of the message is wrong,

    f3

    – the criteria for the request StartDiagnosticSession are not met.

    Notes on Annex I C

    Modifications

    C1

    Annex 1C modified (21.8.2023) by The Drivers’ Hours and Tachographs (Amendment) Regulations 2023 (S.I. 2023/739), regs. 1(1), 3, Sch.