

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Raccogli dati diagnostici sui codici di errore tramite AWS IoT FleetWise
<a name="diagnostic-trouble-codes"></a>

**Importante**  
L'accesso a determinate FleetWise funzionalità AWS IoT è attualmente limitato. Per ulteriori informazioni, consulta [AWS Disponibilità di aree e funzionalità nell' AWS IoT FleetWise](fleetwise-regions.md).

Quando un veicolo rileva un errore, genera un codice di errore diagnostico (DTC) e registra un'istantanea dei sensori o degli attuatori interessati. DTCs ti aiutano a conoscere gli errori quasi in tempo reale, a capire cosa li causa e ad adottare azioni correttive. AWS L'IoT FleetWise supporta la raccolta di DTCs, comprese le corrispondenti istantanee DTC e i dati estesi attraverso una campagna di raccolta dati. Questo argomento introduce i concetti, i flussi di lavoro e le parole chiave che facilitano la raccolta di dati DTC, illustrati con esempi.

Di seguito vengono illustrati i concetti chiave per l'utilizzo di DTC.

**Funzioni definite in modo personalizzato**  
Una funzione personalizzata è la capacità di richiamare ed eseguire le proprie funzioni predefinite in Edge Agent, estendendo il concetto di decodifica [personalizzata](network-agnostic-data-collection.md). Queste funzioni vengono utilizzate in coordinamento con l' AWS IoT FleetWise Agent. Il FleetWise software Edge Agent for AWS IoT offre funzioni integrate per il calcolo delle statistiche dei segnali come valori minimi, massimi e medi. Una funzione personalizzata estende questa funzionalità consentendoti di creare una logica personalizzata per casi d'uso specifici. Per la raccolta dei dati sui codici di errore diagnostici (DTC), gli sviluppatori possono sfruttare funzioni personalizzate per implementare meccanismi avanzati di recupero dei dati, come il recupero di codici DTC, istantanee e dati estesi direttamente dal bordo del veicolo tramite Unified Diagnostic Services (UDS) o interfacce diagnostiche alternative.   
[https://github.com/aws/aws-iot-fleetwise-edge/blob/main/docs/dev-guide/edge-agent-uds-dtc-dev-guide.md#dtc_query-function-implementation](https://github.com/aws/aws-iot-fleetwise-edge/blob/main/docs/dev-guide/edge-agent-uds-dtc-dev-guide.md#dtc_query-function-implementation) [funzioni personalizzate e l'implementazione di riferimento per la raccolta di dati DTC nella Edge Agent Developer Guide.](https://github.com/aws/aws-iot-fleetwise-edge/blob/main/docs/dev-guide/custom-function-dev-guide.md)

**Recupero del segnale**  
Nelle campagne di raccolta dati, i segnali vengono in genere raccolti in modo continuo da un dispositivo e memorizzati nel buffer sul software Edge Agent. I segnali vengono quindi caricati o archiviati periodicamente in campagne basate sul tempo o attivati da condizioni specifiche nelle campagne basate sulle condizioni. Tuttavia, a causa delle preoccupazioni relative alla congestione del traffico dei dispositivi, i segnali DTC non possono essere raccolti dai dispositivi e memorizzati nel buffer in modo continuo. Per risolvere questo problema, l' AWS IoT FleetWise fornisce il recupero del segnale, che garantisce che il segnale di destinazione venga recuperato in modo discontinuo da un dispositivo.  
Il recupero del segnale supporta azioni sia periodiche che basate sulle condizioni. È possibile definire il metodo basato sul recupero, le condizioni e le azioni esatte utilizzando funzioni definite su misura per ogni segnale che non deve essere raccolto continuamente da un dispositivo. Per i segnali gestiti dal meccanismo di recupero del segnale, il tipo di trigger e le condizioni per l'archiviazione locale o il `CollectionScheme` caricamento nel cloud sono ancora regolati da entrambi `timeBasedCollectionScheme` e `conditionBasedCollectionScheme` sono supportati, come i segnali normali.

Negli argomenti seguenti viene illustrato come creare e utilizzare DTCs.

**Topics**
+ [Parole chiave dei codici di errore diagnostici](dtc-keywords.md)
+ [Crea una campagna di raccolta dati per i codici di errore diagnostici](dtc-data-collection.md)
+ [Casi d'uso dei codici di errore diagnostici](dtc-use-cases.md)

# Parole chiave dei codici di errore diagnostici
<a name="dtc-keywords"></a>

**Importante**  
L'accesso a determinate FleetWise funzionalità AWS IoT è attualmente limitato. Per ulteriori informazioni, consulta [AWS Disponibilità di aree e funzionalità nell' AWS IoT FleetWise](fleetwise-regions.md).

**`signalsToFetch`parametro per creare una campagna**

Usa la signalsToFetchsintassi per configurare il modo in cui le informazioni sul segnale possono essere recuperate su Edge. Il recupero del segnale standard è controllato mediante modellazione secondo regole definite esplicitamente in un manifesto del decodificatore o definite in modo personalizzato tramite Edge First Modeling. Con i segnali da recuperare, puoi definire quando e come i dati vengono recuperati durante le campagne. 

I segnali da recuperare consentono la raccolta di informazioni DTC. Ad esempio, è possibile creare un segnale di tipo stringa denominato `DTC_Info` che può contenere informazioni DTC per ogni unità di controllo del motore (ECU). In alternativa, è possibile filtrare in base a una ECU specifica.
+ `SignalFetchInformation`definizioni di strutture e parametri.

  ```
  structure SignalFetchInformation {
      @required
      fullyQualifiedName: NodePath,
      @required
      signalFetchConfig: SignalFetchConfig,
      // Conditional language version for this config
      conditionLanguageVersion: languageVersion,
      @required
      actions: EventExpressionList,
  }
  ```
  + `fullyQualifiedName`: il nome completo (FQDN) del segnale per cui si desidera utilizzare il recupero personalizzato. 
  + `signalFetchConfig`: definisce le regole su come devono essere recuperati i segnali sopra definiti. Supporta il recupero basato sul tempo e sulle condizioni.
  + `conditionLanguageVersion`: la versione del linguaggio condizionale utilizzata per analizzare l'espressione nella configurazione.
  + `actions`: un elenco di tutte le espressioni di azione valutate su Edge. The Edge otterrà il valore del segnale definito.
**Importante**  
Le azioni possono solo essere utilizzate`custom_function`.

## Parole chiave di espressione della campagna
<a name="dtc-expression-keywords"></a>

L'espressione seguente accetta il nome completo di un segnale supportato dal veicolo e restituisce true se il segnale non contiene dati nei buffer di segnale sull'Edge. Dall'altro lato, restituisce false.

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

**Example utilizzo**  

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

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

Questa espressione accetta il seguente input:

**Nome funzione: stringa**  
Il nome della funzione personalizzata supportata da Edge

**params: varargs *Expression***  
Parametri per. `functionName` Può trattarsi di qualsiasi elenco di espressioni.  
I parametri supportano il tipo letterale: String, Int, Boolean o Double.

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

**Example utilizzo**  

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

# Crea una campagna di raccolta dati per i codici di errore diagnostici
<a name="dtc-data-collection"></a>

**Importante**  
L'accesso a determinate FleetWise funzionalità AWS IoT è attualmente limitato. Per ulteriori informazioni, consulta [AWS Disponibilità di aree e funzionalità nell' AWS IoT FleetWise](fleetwise-regions.md).

Questo argomento descrive come creare una campagna di raccolta dati per i codici di errore diagnostici (DTC).

1. Definisci un segnale personalizzato su Edge. È necessario definire le regole di decodifica per il segnale DTC sull'Edge come segnale decodificato personalizzato. Per ulteriori informazioni, consulta [Tutorial: configura la raccolta di dati indipendente dalla rete utilizzando un'interfaccia di decodifica personalizzata](network-agnostic-data-collection.md).

1. Definisci una funzione personalizzata su Edge. È necessario definire una funzione personalizzata per la raccolta dei segnali DTC su Edge in fase di compilazione.

   Per ulteriori informazioni, consulta la [guida alle funzioni personalizzate](https://github.com/aws/aws-iot-fleetwise-edge/blob/main/docs/dev-guide/custom-function-dev-guide.md ) e l'[implementazione di riferimento per la raccolta di dati DTC](https://github.com/aws/aws-iot-fleetwise-edge/blob/main/docs/dev-guide/edge-agent-uds-dtc-dev-guide.md#dtc_query-function-implementation) nella *Edge* Agent Developer Guide.
**Nota**  
Un esempio di funzione personalizzata è `DTC_QUERY` illustrata nello script [dimostrativo](https://github.com/aws/aws-iot-fleetwise-edge/blob/main/docs/dev-guide/edge-agent-uds-dtc-dev-guide.md).

1. Crea un catalogo di segnali che modelli un segnale DTC come tipo di stringa.

   ```
   [
    {
       "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. Crea e attiva un modello di veicolo con il segnale DTC aggiunto.

1. Crea e attiva un manifesto di decodifica con il segnale DTC aggiunto. Il segnale DTC deve essere un tipo di decodificatore di `CUSTOM_DECODING_SIGNAL` segnale con un tipo di interfaccia di rete. `CUSTOM_DECODING_INTERFACE`  
**Example decodificatore di segnale**  

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

   ```
   [
     {
       "interfaceId": "UDS_DTC",
       "type": "CUSTOM_DECODING_INTERFACE",
       "customDecodingInterface": {
         "name": "NamedSignalInterface"
       }
     }
   ]
   ```
**Nota**  
I segnali Controller Area Network (CAN) non supportano il tipo di dati stringa.

1. Fornisci e crea veicoli. I veicoli devono utilizzare un modello di veicolo (manifesto del modello) e un manifesto di decodifica attivati nei passaggi precedenti.

1. Crea e approva la campagna. È necessario creare una campagna definendo i segnali DTC (opzionalmente con segnali di telemetria) e distribuirla ai veicoli.

1. Accedi ai dati nella destinazione definita. I dati DTC includono `DTCCode``DTCSnapshot`, e `DTCExtendedDatastrings` come stringa non elaborata nella destinazione dei dati definita nella campagna.

# Casi d'uso dei codici di errore diagnostici
<a name="dtc-use-cases"></a>

**Importante**  
L'accesso a determinate FleetWise funzionalità AWS IoT è attualmente limitato. Per ulteriori informazioni, consulta [AWS Disponibilità di aree e funzionalità nell' AWS IoT FleetWise](fleetwise-regions.md).

I seguenti casi d'uso presuppongono che la `DTC_QUERY` funzione sia stata definita nello [script dimostrativo](https://github.com/aws/aws-iot-fleetwise-edge/blob/main/docs/dev-guide/edge-agent-uds-dtc-dev-guide.md).

## Recupero periodico
<a name="dtc-periodic-fetch"></a>

Recupera una raccolta DTC a intervalli configurati.

L'esempio seguente è una campagna con recupero periodico del segnale di for all DTCs con una maschera di stato `Vehicle.DTC_INFO` per tutti. ECUs Esiste una condizione per la raccolta dei dati per. `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"
        }
    }
  ]
}
```

## Recupero basato sulle condizioni
<a name="dtc-condition-fetch"></a>

Recupera una raccolta DTC quando viene soddisfatta una condizione. Ad esempio, quando il segnale CAN è attivo`Vehicle.Ignition == 1`, recupera e carica i dati DTC.

Il seguente esempio di campagna utilizza il recupero del segnale basato sulle condizioni `Vehicle.ECU1.DTC_INFO` per verificare se il DTC (» AAA123 «) è in sospeso con RecordNumber 1 per ECU-1. Questa campagna prevede la raccolta e il caricamento dei dati in base al tempo.

```
{
  "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"
        }
    }
  ]
}
```

## Recupero su richiesta
<a name="fetch-dtc-for-fleet"></a>

Recupera un DTC specifico per una flotta.

Per un caso d'uso su richiesta, puoi utilizzare la stessa campagna definita nel recupero periodico. L'effetto on-demand si ottiene sospendendo la campagna poco dopo l'implementazione della campagna utilizzando la FleetWise console AWS IoT o eseguendo il seguente comando CLI.
+ Sostituisci *command-name* con il nome del comando.

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

Quindi, sospendi la campagna dopo l'arrivo dei dati DTC.

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

Puoi riprendere nuovamente la campagna per il recupero dei dati DTC.

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