7.7.19. Freeze frame (pff_FreezeFrame)

Captures a list of specified parameters upon the occurrence of an active DTC. The captured parameter values are stored for access by a diagnostic scan tool.

7.7.19.1. Supported targets

All targets

7.7.19.2. Required license

EXT_DIAG (Extended diagnostics library). (See Section 2.3, “Licensed Features”.)

7.7.19.3. Description

Freeze Frame — Generic

A Freeze Frame is a snapshot of parameter values recorded at the time a diagnostic trouble code (DTC) was captured.

Note: non-volatile PIDs are not supported in freeze frames. If a freeze frame is defined by the application to contain a non-volatile PID, this PID is ignored by the PFF feature when capturing or accessing the freeze frame data.

The following diagram mirrors the finite state machine for the fault state for a DTC (see platform OBD state machine). In the diagram the transition conditions have been removed to aid clarity. The diagram highlights the transitions that cause a freeze frame instance to be captured and deleted.

Figure 7.11. Freeze frame capture and deletion

Freeze frame capture and deletion

Once captured, the freeze frame instance is stored in non-volatile memory. As depicted in the diagram above, it is possible for multiple instances of a freeze frames associated with a single DTC to be stored in non-volatile memory.

When a DTC's fault state transitions to "Cleared" all instances of stored freeze frames associated with the DTC are deleted from non-volatile memory.

Note: The DTC occurrence count in the freeze frame may be out of sync when DTC becomes Active

Freeze Frame - ISO (J1979)

Freeze frame numbering is used by J1979 to report back to the scan tool the DTC that caused freeze frame capture and to read back the stored freeze frame instance(s). Numbering of freeze frame instances stored in non-volatile memory is sequential with the earliest captured freeze frame numbered as 0. As per J1979 numbering of freeze frames has an upper limit of 255.

Note: J1979 freeze frames are only captured for emissions related DTCs.

Freeze Frame - Snapshot (UDS)

UDS snapshot freeze frames follow the same capture rules as other freeze frame types; however, snapshots do not follow the same deletion rules. Snapshots captured as a result of a particular DTC are still deleted when the associated DTC transitions to clear; however, snapshots are not deleted when the DTC transitions from pending to previously active. Snapshot storage gives preference to the first and the most recent occurrence of a particular DTC. The snapshot captured as a result of the first occurrence of a DTC is assigned DTCSnapshotRecordNumber 0. The snapshot captured as a result of the next occurrence of a DTC is assigned DTCSnapshotRecordNumber 1 and is replaced upon subsequent occurrences of the DTC.

Note: A maximum of 2 UDS snapshots per DTC are stored at any given time.

7.7.19.4. Inports

None.

7.7.19.5. Outports

None.

7.7.19.6. Mask parameters

  • Freeze Frame name

    A unique freeze frame name is required in this field. The freeze frame name is referenced in the Simulink block of the DTC (see pdtc_DiagnosticTroubleCodeExt) that triggers the freeze frame.

    Note the freeze frame name is used in the generated C code and as such should follow the C variable naming convention.

    Value type:String
    Calibratable:No
  • J1979 (service $02)

    If ticked indicates the freeze frame complies with the J1979 standard.

    Value type:Boolean
    Calibratable:No
  • PID(s) to capture

    A vector calibration giving the list of PID identifiers for a J1979 freeze frame is placed in this field. The vector calibration needs to be defined in the data dictionary. The value field of the vector calibration in the data dictionary defines the PID identifers for the named freeze frame. However, all freeze frames should be cleared and the ECU power cycled after changing this calibration.

    The vector calibration should be of type uint8_T.

    The vector calibration should not have in excess of 255 elements.

    Note that PIDs that are not defined in the application may be listed in the PIDs to capture field. The application will build, but the freeze frame may not behave as expected during runtime.

    Note that Non-volatile PIDs may be listed in the PIDs to capture field. The application will build, but the freeze frame may not behave as expected during runtime.

    Note that although no restriction is placed on when one may change this calibration, the correct procedure is to clear all freeze frame information and power cycle the ECU after any such change. Failure to follow this procedure could lead to anomalies in the freeze frame handling.

    Value type:String
    Calibratable:Yes, offline and online
  • J1939 (DM4)

    If ticked indicates the freeze frame complies with J1939's DM4 freeze frame definition.

    DM4 is composed of a list of mandatory SPNs and a manufacturer's list of SPN(s).

    The mandatory SPNs are given by J1939-73 (FEB2010) as 899, 102, 190, 92, 110 and 84. The mandatory SPNs for DM4 have been hardcoded into the platform. As such when the OpenECU platform captures a DM4 freeze frame it always attempts to capture the mandatory SPN(s) regardless of the presence or absence of the SPN in the application. A mandatory SPN absent from the application will result in 0xFF(s) populating the data field allocated for the absent mandatory SPN in the returned DM4 message.

    Value type:Boolean
    Calibratable:No
  • Manufacturer SPN(s)

    The manufacturer's list of SPNs for a DM4 freeze frame are placed in this field. To enter the list of manufacturer SPNs use a vector calibration. The values of the SPNs are calibratable. However, all freeze frames should be cleared and the ECU power cycled after changing this calibration.

    The vector calibration should be of type uint32_T.

    The vector calibration should not have in excess of 255 elements.

    A manufacturer SPN absent from the application will be ignored. The SPN will not be saved to non-volatile memory when the DM4 freeze frame is captured. The SPN's data will not appear in the returned DM message and no data fields within the returned DM4 are allocated to denote its presence.

    Value type:String
    Calibratable:Yes, offline and online
  • J1939 (DM25)

    If ticked indicates the freeze frame complies with J1939's DM25 freeze frame definition.

    As per J1939-73 only a single freeze frame definition can exist for DM25. The parameter list is specified by pff_Dm25FreezeFrame.

    Value type:Boolean
    Calibratable:No
  • UDS (Snapshot)

    If ticked indicates the freeze frame complies with the ISO 14229-1 (UDS) snapshot definition.

    Value type:Boolean
    Calibratable:No
  • ISO PID(s)

    A vector calibration giving the list of ISO PID identifiers for a snapshot is placed in this field. The vector calibration needs to be defined in the data dictionary. The value field of the vector calibration in the data dictionary defines the ISO PID identifiers for the named freeze frame. However, all freeze frames should be cleared and the ECU power cycled after changing this calibration.

    The vector calibration should be of type uint16_T.

    The vector calibration should not have in excess of 255 elements.

    Value type:String
    Calibratable:Yes, offline and online

7.7.19.7. Notes

It is possible to configure a single freeze frame block for both J1979 (freeze frame) and UDS (snapshot). If this occurs, then the both the freeze frame and the snapshot will follow the J1979 deletion rules.