

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Sammeln Sie diagnostische Fehlercode-Daten mithilfe von AWS IoT FleetWise
<a name="diagnostic-trouble-codes"></a>

**Wichtig**  
Der Zugriff auf bestimmte AWS FleetWise IoT-Funktionen ist derzeit gesperrt. Weitere Informationen finden Sie unter [AWS Verfügbarkeit von Regionen und Funktionen im AWS Internet der Dinge FleetWise](fleetwise-regions.md).

Wenn ein Fahrzeug einen Fehler erkennt, generiert es einen Diagnose-Fehlercode (DTC) und zeichnet eine Momentaufnahme der betroffenen Sensoren oder Aktuatoren auf. DTCs hilft Ihnen, nahezu in Echtzeit über Fehler zu erfahren, zu verstehen, was sie verursacht, und Korrekturmaßnahmen zu ergreifen. AWS IoT FleetWise unterstützt die Erfassung von DTCs, einschließlich entsprechender DTC-Snapshots und erweiterter Daten, im Rahmen einer Datenerfassungskampagne. In diesem Thema werden die Konzepte, Workflows und Schlüsselwörter vorgestellt, die die DTC-Datenerfassung erleichtern, anhand von Beispielen veranschaulicht.

Im Folgenden werden die wichtigsten Konzepte für die Verwendung von DTC beschrieben.

**Benutzerdefiniert definierte Funktionen**  
Eine benutzerdefinierte Funktion ist die Möglichkeit, Ihre eigenen, auf dem Edge Agent vordefinierten Funktionen aufzurufen und auszuführen, wodurch das [benutzerdefinierte Dekodierungskonzept](network-agnostic-data-collection.md) erweitert wird. Diese Funktionen werden in Abstimmung mit dem AWS IoT FleetWise Agent verwendet. Die Edge Agent for AWS FleetWise IoT-Software bietet integrierte Funktionen zur Berechnung von Signalstatistiken wie Minimal-, Maximal- und Durchschnittswerten. Eine benutzerdefinierte Funktion erweitert diese Funktion, indem sie es Ihnen ermöglicht, maßgeschneiderte Logik für bestimmte Anwendungsfälle zu erstellen. Für die Erfassung von DTC-Daten (Diagnostic Trouble Code) können Entwickler benutzerdefinierte Funktionen nutzen, um erweiterte Datenabrufmechanismen zu implementieren, z. B. das Abrufen von DTC-Codes, Schnappschüssen und erweiterten Daten direkt vom Edge des Fahrzeugs über Unified Diagnostic Services (UDS) oder alternative Diagnoseschnittstellen.   
*Weitere Informationen finden Sie im [Leitfaden für benutzerdefinierte Funktionen](https://github.com/aws/aws-iot-fleetwise-edge/blob/main/docs/dev-guide/custom-function-dev-guide.md) und in der [Referenzimplementierung der DTC-Datenerfassung](https://github.com/aws/aws-iot-fleetwise-edge/blob/main/docs/dev-guide/edge-agent-uds-dtc-dev-guide.md#dtc_query-function-implementation) im Edge Agent Developer Guide.*

**Abrufen von Signalen**  
Bei Datenerfassungskampagnen werden Signale in der Regel kontinuierlich von einem Gerät erfasst und in der Edge Agent-Software zwischengespeichert. Signale werden dann in regelmäßigen Abständen in zeitbasierten Kampagnen hochgeladen oder gespeichert oder bei zustandsabhängigen Kampagnen durch bestimmte Bedingungen ausgelöst. Aufgrund von Bedenken hinsichtlich einer Überlastung des Geräteverkehrs können DTC-Signale jedoch nicht von Geräten erfasst und kontinuierlich zwischengespeichert werden. Um diesem Problem zu begegnen, FleetWise bietet AWS IoT einen Signalabruf, der sicherstellt, dass das Zielsignal diskontinuierlich von einem Gerät abgerufen wird.  
Das Abrufen von Signalen unterstützt sowohl periodische als auch zustandsabhängige Aktionen. Sie können die vom Abruf gesteuerte Methode, die Bedingungen und die genauen Aktionen mithilfe benutzerdefinierter Funktionen für jedes Signal definieren, das nicht kontinuierlich von einem Gerät erfasst werden soll. Bei Signalen, die vom Signalabrufmechanismus verwaltet werden, werden der Triggertyp und die Bedingungen für die lokale Speicherung oder den `CollectionScheme` Cloud-Upload weiterhin von beiden bestimmt `timeBasedCollectionScheme` und `conditionBasedCollectionScheme` unterstützt, was den regulären Signalen entspricht.

In den folgenden Themen erfahren Sie, wie Sie etwas erstellen und verwenden DTCs können.

**Topics**
+ [Schlüsselwörter für den diagnostischen Fehlercode](dtc-keywords.md)
+ [Erstellen Sie eine Kampagne zur Datenerfassung für diagnostische Fehlercodes](dtc-data-collection.md)
+ [Anwendungsfälle für diagnostische Fehlercodes](dtc-use-cases.md)

# Schlüsselwörter für den diagnostischen Fehlercode
<a name="dtc-keywords"></a>

**Wichtig**  
Der Zugriff auf bestimmte AWS FleetWise IoT-Funktionen ist derzeit gesperrt. Weitere Informationen finden Sie unter [AWS Verfügbarkeit von Regionen und Funktionen im AWS Internet der Dinge FleetWise](fleetwise-regions.md).

**`signalsToFetch`Parameter für die Kampagnenerstellung**

Verwenden Sie die signalsToFetchSyntax, um zu konfigurieren, wie die Signalinformationen auf dem Edge abgerufen werden können. Das Abrufen von Standardsignalen wird durch Modellieren anhand von Regeln gesteuert, die explizit in einem Decoder-Manifest definiert sind, oder durch Edge First Modeling benutzerdefiniert. Mithilfe von Signalen zum Abrufen können Sie definieren, wann und wie Daten während Kampagnen abgerufen werden. 

Abzurufende Signale ermöglichen die Erfassung von DTC-Informationen. Sie können beispielsweise ein Signal vom Typ Zeichenfolge mit dem Namen erstellen`DTC_Info`, das DTC-Informationen für jedes Motorsteuergerät (ECU) enthalten kann. Sie können auch nach einem bestimmten Steuergerät filtern.
+ `SignalFetchInformation`Struktur- und Parameterdefinitionen.

  ```
  structure SignalFetchInformation {
      @required
      fullyQualifiedName: NodePath,
      @required
      signalFetchConfig: SignalFetchConfig,
      // Conditional language version for this config
      conditionLanguageVersion: languageVersion,
      @required
      actions: EventExpressionList,
  }
  ```
  + `fullyQualifiedName`: der vollqualifizierte Name (FQDN) des Signals, für das Sie den benutzerdefinierten Abruf verwenden möchten. 
  + `signalFetchConfig`: definiert Regeln, wie die oben definierten Signale abgerufen werden sollen. Es unterstützt zeit- und bedingungsbasiertes Abrufen.
  + `conditionLanguageVersion`: Die bedingte Sprachversion, die zum Analysieren des Ausdrucks in der Konfiguration verwendet wird.
  + `actions`: eine Liste aller Aktionsausdrücke, die auf dem Edge ausgewertet wurden. Der Edge erhält den Wert des definierten Signals.
**Wichtig**  
Aktionen können nur verwenden`custom_function`.

## Schlüsselwörter für Kampagnenausdrücke
<a name="dtc-expression-keywords"></a>

Der folgende Ausdruck verwendet den vollständig qualifizierten Namen eines Signals, der vom Fahrzeug unterstützt wird, und gibt „true“ zurück, wenn das Signal keine Daten in den Signalpuffern auf dem Edge enthält. Andernfalls wird False zurückgegeben.

```
isNull(signalFqdn:String): Boolean
```

**Example Nutzung**  

```
isNull($variable.`Vehicle.ECU1.DTC_INFO`) == false

We want to make sure DTC_Info signal is being generated
on edge.
```

Dieser Ausdruck benötigt die folgende Eingabe:

**Funktionsname: Zeichenfolge**  
Der Name der benutzerdefinierten Funktion, die vom Edge unterstützt wird

**Parameter: varargs *Expression***  
Parameter für. `functionName` Dies kann eine beliebige Liste von Ausdrücken sein.  
Parameter unterstützen Literaltypen: String, Int, Boolean oder Double.

```
custom_function(functionName:String, params: varargsExpression): Void
```

**Example Nutzung**  

```
{
       "fullyQualifiedName":"Vehicle.ECU1.DTC_INFO",
       "signalFetchConfig":{
          "timeBased":{
             "executionFrequencyMs":2000
          }
       },
       "actions":"custom_function(“DTC_QUERY”, -1, 2, -1)"
    }
```

# Erstellen Sie eine Kampagne zur Datenerfassung für diagnostische Fehlercodes
<a name="dtc-data-collection"></a>

**Wichtig**  
Der Zugriff auf bestimmte AWS FleetWise IoT-Funktionen ist derzeit gesperrt. Weitere Informationen finden Sie unter [AWS Verfügbarkeit von Regionen und Funktionen im AWS Internet der Dinge FleetWise](fleetwise-regions.md).

In diesem Thema wird beschrieben, wie Sie eine Kampagne zur Datenerfassung für Diagnose-Fehlercodes (DTC) erstellen.

1. Definieren Sie ein benutzerdefiniertes Signal auf dem Edge. Sie müssen die Dekodierungsregeln für das DTC-Signal auf dem Edge als benutzerdefiniertes dekodiertes Signal definieren. Weitere Informationen finden Sie unter [Tutorial: Konfiguration der netzwerkunabhängigen Datenerfassung mithilfe einer benutzerdefinierten Dekodierungsschnittstelle](network-agnostic-data-collection.md).

1. Definieren Sie eine benutzerdefinierte Funktion auf dem Edge. Sie müssen eine benutzerdefinierte Funktion zum Sammeln von DTC-Signalen auf dem Edge zu einem kompilierten Zeitpunkt definieren.

   Weitere Informationen finden Sie im [Leitfaden für benutzerdefinierte Funktionen](https://github.com/aws/aws-iot-fleetwise-edge/blob/main/docs/dev-guide/custom-function-dev-guide.md ) und in der [Referenzimplementierung der DTC-Datenerfassung](https://github.com/aws/aws-iot-fleetwise-edge/blob/main/docs/dev-guide/edge-agent-uds-dtc-dev-guide.md#dtc_query-function-implementation) im *Edge Agent Developer* Guide.
**Anmerkung**  
Ein Beispiel für eine benutzerdefinierte Funktion ist `DTC_QUERY` im [Demoskript](https://github.com/aws/aws-iot-fleetwise-edge/blob/main/docs/dev-guide/edge-agent-uds-dtc-dev-guide.md) dargestellt.

1. Erstellen Sie einen Signalkatalog, der ein DTC-Signal als Zeichenfolgentyp modelliert.

   ```
   [
    {
       "branch": {
           "fullyQualifiedName": "Vehicle",
           "description": "Vehicle"
           }
         },
         {
       "branch": {
           "fullyQualifiedName": "Vehicle.ECU1",
           "description": "Vehicle.ECU1"
           }
         },
         {
       "sensor": {
           "fullyQualifiedName": "Vehicle.ECU1.DTC_INFO",
           "description": "Vehicle.ECU1.DTC_INFO",
           "dataType": "STRING"
         }
      }
    ]
   ```

1. Erstellen und aktivieren Sie ein Fahrzeugmodell mit dem hinzugefügten DTC-Signal.

1. Erstellen und aktivieren Sie ein Decoder-Manifest mit dem hinzugefügten DTC-Signal. Das DTC-Signal sollte ein `CUSTOM_DECODING_SIGNAL` Signaldecodertyp mit einem `CUSTOM_DECODING_INTERFACE` Netzwerkschnittstellentyp sein.  
**Example Signaldecoder**  

   ```
   [
     {
       "fullyQualifiedName": "Vehicle.ECU1.DTC_INFO",
       "interfaceId": "UDS_DTC",
       "type": "CUSTOM_DECODING_SIGNAL",
       "customDecodingSignal": {
         "id": "Vehicle.ECU1.DTC_INFO"
       }
     }
    ]
   ```  
**Example Netzwerkschnittstelle**  

   ```
   [
     {
       "interfaceId": "UDS_DTC",
       "type": "CUSTOM_DECODING_INTERFACE",
       "customDecodingInterface": {
         "name": "NamedSignalInterface"
       }
     }
   ]
   ```
**Anmerkung**  
CAN-Signale (Controller Area Network) unterstützen den String-Datentyp nicht.

1. Fahrzeuge bereitstellen und erstellen. Die Fahrzeuge müssen ein Fahrzeugmodell (Modellmanifest) und ein Decoder-Manifest verwenden, die in den vorherigen Schritten aktiviert wurden.

1. Erstellen und genehmigen Sie die Kampagne. Sie müssen eine Kampagne erstellen, indem Sie DTC-Signale (optional mit Telemetriesignalen) definieren und sie in Fahrzeugen einsetzen.

1. Greifen Sie auf die Daten im definierten Ziel zu. Zu den DTC-Daten gehören das`DTCCode`,`DTCSnapshot`, und `DTCExtendedDatastrings` als unformatierte Zeichenfolge in dem in der Kampagne definierten Datenziel.

# Anwendungsfälle für diagnostische Fehlercodes
<a name="dtc-use-cases"></a>

**Wichtig**  
Der Zugriff auf bestimmte AWS FleetWise IoT-Funktionen ist derzeit gesperrt. Weitere Informationen finden Sie unter [AWS Verfügbarkeit von Regionen und Funktionen im AWS Internet der Dinge FleetWise](fleetwise-regions.md).

In den folgenden Anwendungsfällen wird davon ausgegangen, dass die `DTC_QUERY` Funktion im [Demoskript](https://github.com/aws/aws-iot-fleetwise-edge/blob/main/docs/dev-guide/edge-agent-uds-dtc-dev-guide.md) definiert wurde.

## Periodischer Abruf
<a name="dtc-periodic-fetch"></a>

Ruft eine DTC-Sammlung in konfigurierten Intervallen ab.

Das folgende Beispiel zeigt eine Kampagne mit regelmäßigem Abrufen von Signalen `Vehicle.DTC_INFO` für alle DTCs mit einer Statusmaske für alle. ECUs Es gibt eine Bedingung für die Erfassung von Daten für`Vehicle.DTC_INFO`.

```
{
  "compression": "SNAPPY",
  "spoolingMode": "TO_DISK",
  "signalsToFetch": [
    {
      "fullyQualifiedName": "Vehicle.ECU1.DTC_INFO",
      "signalFetchConfig": {
        "timeBased": {
        // The FleetWise Edge Agent will query the UDS module for all DTCs every five seconds.
          "executionFrequencyMs": 5000
        }
      },
      "actions": [
      // Every five seconds, this action is called and its output is stored in the
      // signal history buffer of Vehicle.DTC_INFO
        "custom_function(\"DTC_QUERY\", -1, 2, -1)"
      ]
    }
  ],
  "signalsToCollect": [
    {
      "name": "Vehicle.ECU1.DTC_INFO"
    }
  ],
  "collectionScheme": {
    "conditionBasedCollectionScheme": {
      "conditionLanguageVersion": 1,
      // Whenever a new DTC is filled into the signal, the data is ingested.
      "expression": "!isNull($variable.`Vehicle.ECU1.DTC_INFO`)",
      "minimumTriggerIntervalMs": 1000,
      // Make sure that data is ingested only when there are new DTCs.
      "triggerMode": "RISING_EDGE"
    }
  },
  "dataDestinationConfigs": [
    {
      "s3Config": 
        {
          "bucketArn": "bucket-arn",
          "dataFormat": "PARQUET",
          "prefix": "campaign-name",
          "storageCompressionFormat": "GZIP"
        }
    }
  ]
}
```

## Bedingungsgesteuerter Abruf
<a name="dtc-condition-fetch"></a>

Ruft eine DTC-Sammlung ab, wenn eine Bedingung erfüllt ist. Wenn beispielsweise das CAN-Signal anliegt`Vehicle.Ignition == 1`, rufen Sie die DTC-Daten ab und laden Sie sie hoch.

In der folgenden Beispielkampagne wird ein bedingungsgesteuerter Signalabruf aktiviert, `Vehicle.ECU1.DTC_INFO` um zu überprüfen, ob der DTC (“ AAA123 „) mit RecordNumber 1 für ECU-1 aussteht. Bei dieser Kampagne werden Daten zeitbasiert erfasst und hochgeladen.

```
{
  "compression": "SNAPPY",
  "spoolingMode": "TO_DISK",
  "signalsToFetch": [
    {
      "fullyQualifiedName": "Vehicle.ECU1.DTC_INFO",
      "signalFetchConfig": {
        "conditionBased": {
        // The action will only run when the ignition is on.
          "conditionExpression": "$variable.`Vehicle.Ignition` == 1",
          "triggerMode": "ALWAYS"
        }
      },
      // The UDS module is only requested for the specific ECU address and the specific DTC Number/Status.
      "actions": ["custom_function(\"DTC_QUERY\", 1, 2, 8, \"0xAAA123\")"]
    }
  ],
  "signalsToCollect": [
    {
      "name": "Vehicle.ECU1.DTC_INFO"
    },
    {
      "name": "Vehicle.Ignition"
    }
  ],
  "collectionScheme": {
    "timeBasedCollectionScheme": {
      "periodMs": 10000
    }
  },
  "dataDestinationConfigs": [
    {
      "s3Config": 
        {
          "bucketArn": "bucket-arn",
          "dataFormat": "PARQUET",
          "prefix": "campaign-name",
          "storageCompressionFormat": "GZIP"
        }
    }
  ]
}
```

## Abruf auf Abruf
<a name="fetch-dtc-for-fleet"></a>

Ruft einen bestimmten DTC für eine Flotte ab.

Für einen On-Demand-Anwendungsfall können Sie dieselbe Kampagne verwenden, die im regelmäßigen Abruf definiert ist. Der On-Demand-Effekt wird erreicht, indem die Kampagne kurz nach der Bereitstellung der Kampagne über die AWS FleetWise IoT-Konsole oder durch Ausführen des folgenden CLI-Befehls unterbrochen wird.
+ Ersetzen Sie es *command-name* durch den Befehlsnamen.

```
aws iotfleetwise update-campaign \
    --name campaign-name \
    --action APPROVE
```

Unterbrechen Sie dann die Kampagne, nachdem die DTC-Daten eingetroffen sind.

```
aws iotfleetwise update-campaign \
    --name campaign-name \
    --action SUSPEND
```

Sie können die Kampagne erneut fortsetzen, um DTC-Daten abzurufen.

```
aws iotfleetwise update-campaign \
    --name campaign-name \
    --action RESUME
```