Service Interaction Protocol
Periodic Read
DATA_MODEL
SCHEDULER
TIMEOUT
Overview
“The ReadDataByPeriodicIdentifier service is used by the client to request periodic transmission of data record values of data identifiers from the server.”
Continuous Monitoring
- Real-time RPM/Speed logging
- Dynamic sensor calibration
- Oscilloscope-style data viewing
- Diagnostic logging sessions
Dependencies
- TesterPresent (0x3E) required for long sessions
- Extended Session (0x03) usually required
- PDID must be defined in ECU table
Default Behavior
At startup, no periodic data transmission is active. Once a client successfully requests a PDID, the ECU will continue to stream data at the requested rate until a “Stop” request (Mode 0x04) is received, the diagnostic session is reset, or the ECU is power-cycled.
Protocol Anatomy (Subscribe Fast)
◆ PROTOCOL ANATOMY
0x2A PERIODIC READ
0x2A RESPONSE
Transmission Modes
The first parameter defines how fast the ECU should sample and send the data.
Mode | Name | Typical Frequency | Use Case |
|---|---|---|---|
| 0x01 | Slow Rate | 1-2 Hz | Temp, Battery Level |
| 0x02 | Medium Rate | 5-10 Hz | Vehicle Speed, O2 Sensors |
| 0x03 | Fast Rate | 20-100 Hz | Crank Sensor, Torque |
| 0x04 | Stop Sending | N/A | Explicit termination |
Message Format
Request Format
Byte | Field | Value | Description |
|---|---|---|---|
| 0 | SID | 0x2A | Read Data Periodic |
| 1 | Mode | 0x01-04 | Transmission rate |
| 2 | PDID #1 | 0xNN | Periodic Data ID |
| 3 | PDID #N | ... | Optional extra IDs |
Periodic Response

Mechanism for continuous real-time data push from ECU to tester.
Note: The ECU sends multiple responses for a single request!
Byte | Field | Value | Description |
|---|---|---|---|
| 0 | Response SID | 0x6A | Positive Response |
| 1 | PDID | 0xNN | Identifier of the data |
| 2-N | Data | ... | The actual payload |
Examples
Workflow: Dynamic Data Streaming
6 stepsStart RPM Streaming (Medium Rate)
Request
2A 02 01> Start PDID 0x01 at Medium Rate
Periodic #1
6A 01 0B B8> RPM = 3000 (0x0BB8)
Periodic #2
6A 01 0B BA> RPM = 3002 (sent ~100ms later)
Stop Streaming
Request
2A 04 01> Stop PDID 0x01
Response
6A> Confirmation: Stopped
Negative Response Codes
Error_Catalog