webinar: automate vehicle diagnostic sequences

57
V1.1 | 2017-12-06 Create, configure and send diagnostic request with Indigo Webinar: Automate Vehicle Diagnostic Sequences

Upload: others

Post on 27-Mar-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

V1.1 | 2017-12-06

Create, configure and send diagnostic request with Indigo

Webinar: Automate Vehicle Diagnostic Sequences

2

u Introduction

Development Environment

Runtime Environment

Diagnostic Sequences

User Interaction

Tips & Tricks

Help & Documentation

Agenda

3

Vector Diagnostics Scripting Library

Introduction

u .NET based library for diagnostic sequences

u Vector Diagnostic Scripting Library (VDS Library)

u Author diagnostic sequences in any .NET based language> C#

> VB.NET

u Features

u Interaction with ECUs using diagnostics (request / response)

u Interaction with an user using dialogs (value input / confirmation)

4

Interoperability

Introduction

u Works in Vector Diagnostic Test Tools

u Indigo

u CANoe

u CANape

u vFlash (Custom Actions)

5

Application areas

Introduction

u Learning of pedal / window positions

u Documentation of vehicle ECUs (ID data) and their state (fault memory)

u Read out ECU identification data and print it

u Diagnostic Logger

u OBD Logger

u … and much more!

6

Introduction

u Development Environment

Runtime Environment

Diagnostic Sequences

User Interaction

Tips & Tricks

Help & Documentation

Agenda

7

Code Editors

Development Environment

u Microsoft Visual Studio 201x (recommended)

u Microsoft Visual C# Express 201x (recommended)

u https://www.visualstudio.com/en-us/products/visual-studio-express-vs.aspx

u Microsoft Visual Studio Community 2013

u https://www.visualstudio.com/en-us/products/visual-studio-community-vs.aspx

u SharpDevelop

u http://www.icsharpcode.net/opensource/sd/

u Notepad

8

Introduction

Development Environment

u Runtime Environment

Diagnostic Sequences

User Interaction

Tips & Tricks

Help & Documentation

Agenda

9

u Execute scripts in Script Runner

u Open Script Manager

u Load script

u Open Script Runner

u Execute script

Indigo

Runtime Environment

10

u Execute scripts via command line interface

u No user interface

u Indigo.exe [IndigoProjectFile] [ScriptName] /log [LogFilePath]

u Return values

u 0: Success

u 100: Loading project failed

u 200: Script is missing

u 300: Error on script execution

u 400: Communication error

u 500: Invalid command line arguments

u 1000: Unknown error

Indigo

Runtime Environment

11

Vector VN8810 Intelligent Diagnostic Device

Runtime Environment

12

Vector VN8810 Intelligent Diagnostic Device

Runtime Environment

VN8810

Kernel

Windows

WLAN / LAN

vScriptDiagnostics

Buttons, LEDs, ...

u Project/data supply

u Action documentation

u Vehicle reports

WLANu Control execution

u Select project

u Provide user input

u Visualize results

XL driver

u Control execution

VDSProjects

User Libraries

ECU

13

u Import diagnostic sequences in CANape

u Tools | Task Manager

u .NET scripts

u Insert | .NET Scripts | Insert …

CANape

Runtime Environment

14

CANoe

Runtime Environment

u Import diagnostic sequences in CANoe

u View | Automation Sequences

u .NET Snippets

15

vFlash

Runtime Environment

u vFlash Custom Actions

u PreFlash Actions

u PostFlash Actions

u Attributes = Parameters passed to script

16

Introduction

Development Environment

Runtime Environment

u Diagnostic Sequences

User Interaction

Tips & Tricks

Help & Documentation

Agenda

17

u Vector.Diagnostics.dll

u Library for diagnostic objects (ECUs, requests, responses, …)

u Vector.Tools.dll

u Tool specific objects (Logging output, …)

u Vector.Scripting.UI.dll

u User interaction (Dialogs)

u (only Indigo / CANoe)

u Vector.Scripting.dll

u Execution.Wait()

u Vector.Indigo.Scripting.FaultMemory.dll (Indigo only)

u Convenient fault memory API

Assembly Overview

Diagnostic Sequences

18

Class Diagram

Diagnostic Sequences

19

Working with ECUs

Diagnostic Sequences

u Vector.Diagnostics.Application class

Accessing the first ECU in the project / configuration

Accessing an ECU by qualifier

Ecu ecu = Application.GetEcu();

Ecu ecu = Application.GetEcu("MyEcuQualifier");

20

Accessing diagnostic requests

Diagnostic Sequences

u Working with requests

Creating a request by qualifier

Creating a request by pdu

string serviceQualifier = "VIN_Read";

Request request = ecu.CreateRequest(serviceQualifier);

var pdu = new byte[] {0x22, 0xF1, 0x90};

Request request = ecu.CreateRequest(pdu);

21

Send data to ECU and evaluate response

Diagnostic Sequences

SendResult result = request.Send();

u Sending a request to an ECU

u Handle communication errors

if (result.Status == SendStatus.CommunicationError)

{

// Handle communication error

}

22

Send data to ECU and evaluate response

Diagnostic Sequences

u Accessing response(s)

if (result.Status == SendStatus.Ok)

{

Response response = result.Response;

// Access response parameter

foreach (Response response in result.Responses)

{

// Access response parameter

}

}

23

Send data to ECU and evaluate response

Diagnostic Sequences

u Working with response data

u Accessing raw data

byte[] rawResponseData = response.Pdu;

24

Send data to ECU and evaluate response

Diagnostic Sequences

u Working with response data

u Accessing parameters via qualifier

u Accessing parameters using the parameter collection

Parameter parameter = response.GetParameter("VIN");

ParameterCollection parameters = response.Parameters;

foreach (Parameter parameter in parameters)

{

// process parameter values

}

25

Send data to ECU and evaluate response

Diagnostic Sequences

u Working with parameters

u Name

u Qualifier

u Description

u Unit

string parameterName = parameter.Name;

string qualifier = parameter.Qualifier;

string description = parameter.Description;

string parameterUnit = parameter.Unit;

26

Send data to ECU and evaluate response

Diagnostic Sequences

u Working with parameters

u Value

Value value = parameter.Value;

// Accessing raw parameter value

byte[] rawData = value.GetBytes();

// Accessing physical / symbolic parameter value

double valueAsDouble = value.ToDouble();

int valueAsInt32 = value.ToInt32();

uint valueAsUInt32 = value.ToUInt32();

string valueAsString = value.ToString();

27

Reading Data From An ECU

Diagnostic Sequences

u Example: Reading VIN from ECU

28

Security Access: Unlocking ECUs

Diagnostic Sequences

u Unlock ECU in level 0x01

u Unlock ECU in level 0x01 using an additional option string

SecurityAccessResult result = ecu.Unlock(0x01);

SecurityAccessResult result = ecu.Unlock(0x01, "OptionString");

29

Security Access: Unlocking ECUs

Diagnostic Sequences

u Error / success handling

public enum SecurityAccessResult

{

NoResult = 0,

Success = 1,

InvalidSeedKeyDll = 10,

CommunicationError = 11,

NegativeResponse = 12,

Failure = 100,

}

30

Security Access: Unlocking ECUs

Diagnostic Sequences

u Unlocking ECU in specified security level

GenerateSecurityKeyResult result =

Application.GenerateSecurityKey(

ecu,

seed,

securityLevel,

option,

out key);

31

Security Access: Unlocking ECUs

Diagnostic Sequences

u Error Handling

public enum GenerateSecurityKeyResult

{

NoResult = 0,

Success = 1,

InvalidSeedKeyDll = 10,

InvalidVariant = 11,

InvalidSecurityLevel = 12,

Failure = 100,

}

32

Indigo Extension: Access Fault Memory

Diagnostic Sequences

u Reading DTCs

// Get current ECU

Ecu ecu = Application.GetEcu();

// Read fault memory from ECU

DtcCollection dtcCollection = DtcReader.ReadDtcs(ecu);

foreach (Dtc dtc in dtcCollection)

{

Output.WriteLine("DTC Code: " + dtc.ErrorCode);

Output.WriteLine("DTC Text: " + dtc.ErrorText);

Output.WriteLine("DTC Status: 0x" + BitConverter.ToString(dtc.Status));

}

33

Indigo Extension: Access Fault Memory

Diagnostic Sequences

u Reading Environment Data for DTCs

// Read environment data for the DTC

DtcInfoCollection snapshotRecords = DtcReader.ReadSnapshotRecord(ecu, dtc);

// Write environment data to output

foreach (DtcInfo snapshotRecord in snapshotRecords)

{

Output.WriteLine(snapshotRecord.Name + ": " + snapshotRecord.Value + snapshotRecord.Unit);

}

34

Indigo/VN88 Extension: Vector.Diagnostics.Obd

Diagnostic Sequences

u Convenience API for reading out OBD data from the vehicle

u Supported OBD Data

u OBD Discovery

u Read Powertrain Diagnostic Data (Mode $01)

u Access OBD Fault Memory (Mode $02, $03, $07, $0A)

u Read Info Type Data like VIN, .. (Mode $09)

u Read On-Board Monitoring Test Results (Mode $06)

u Supported Standards

u OBD II (SAE J1979 / ISO 15031)

u WWH-OBD (ISO 27145)

35

Indigo/VN88 Extension: Vector.Diagnostics.Obd

Diagnostic Sequences

u Use Cases

u Create customized OBD reports

u OBD Logger / Diagnostic Logger

u Collect OBD fleet data via VN8810

u and much more!

36

Indigo/VN88 Extension: Vector.Diagnostics.Obd

Diagnostic Sequences

u OBD Discovery

u Start OBD Discovery

u Determine if OBD discovery was successful

DiscoveryResult result = ObdDiscovery.Discover();

if (result.Status == ResultStatus.Success)

{

// OBD Discovery successful ...

}

else

{

// OBD Discovery failed ...

}

37

Indigo/VN88 Extension: Vector.Diagnostics.Obd

Diagnostic Sequences

u OBD Discovery

u Determine OBD standard used by the ECU

if (result.ObdType == ObdType.OBD2)

{

// Handle OBD 2 ECUs ..

}

else if (result.ObdType == ObdType.WWHOBD)

{

// Handle WWH-OBD ECUs ..

}

38

Indigo/VN88 Extension: Vector.Diagnostics.Obd

Diagnostic Sequences

u OBD Discovery

u Accessing the functional group for sending OBD requests

ObdFunctionalGroup funcGroup = result.ObdFunctionalGroup;

39

Indigo/VN88 Extension: Vector.Diagnostics.Obd

Diagnostic Sequences

u Accessing OBD Fault Memory

u Reading OBD DTCs

u Possible values for ObdDtcType enumeration

var ecuDtcCollection = funcGroup.ReadObdFaultMemory(ObdDtcType.All);

[Flags]

public enum ObdDtcType

{

None = 0,

Confirmed = 3,

Pending = 7,

Permanent = 10,

All = Confirmed | Pending | Permanent

}

40

Indigo/VN88 Extension: Vector.Diagnostics.Obd

Diagnostic Sequences

u Accessing OBD Fault Memory

u Clear DTCs

funcGroup.ClearFaultMemory();

41

Indigo/VN88 Extension: Vector.Diagnostics.Obd

Diagnostic Sequences

u Reading Mode $01 Data

u Retrieving supported OBD PIDs from ECUs

u Reading OBD PID data

u Accessing the supported OBD PIDs via enumeration

var supportedPids = funcGroup.ReadSupportedPids();

var obdPidEcuDataCollection = funcGroup.ReadObdPid( ObdPidCategory.PID_01_MonitorStatusSinceDtcsCleared);

ObdPidCategory

42

Indigo/VN88 Extension: Vector.Diagnostics.Obd

Diagnostic Sequences

u Reading Mode $09 Data

u Retrieving supported OBD InfoTypes from ECUs

u Reading OBD InfoType data

u Accessing the supported OBD InfoTypes via enumeration

var supportedInfoTypes = funcGroup.ReadSupportedInfoTypes();

var obdInfoTypeEcuCollection = funcGroup.ReadObdInfoType(ObdInfoTypeCategory.InfoType_04_CalibrationId);

ObdInfoTypeCategory

43

Introduction

Development Environment

Runtime Environment

Diagnostic Sequences

u User Interaction

Tips & Tricks

Help & Documentation

Agenda

44

Dialog Types

User Interaction

u Confirmation Dialogs

ConfirmationResult result =

ConfirmationDialog.Show(

"This is a message",

"This is the caption",

ConfirmationDialogButtons.OKCancel);

45

Dialog Types

User Interaction

u Input Dialogs

u Simple Data Input

DataEntryResult result =

DataEntryDialog.Show(

"This is a message",

"This is the caption",

"Additional information.",

ref value);

46

Dialog Types

User Interaction

u Input Dialogs

u Input Validation: Allow values in a range

DataEntryResult result =

DataEntryDialog.Show(

"This is a message",

"This is the caption",

"Additional information.", rangeCollection,

ref value);

47

Dialog Types

User Interaction

u Input Dialogs

u Input Validation: Allow values in a range

DataEntryResult result =

DataEntryDialog.Show(

"This is a message",

"This is the caption",

"Additional information.", rangeCollection,

ref value);

List<Range<int>> ranges = new List<Range<int>>();

ranges.Add(new Range<int>(1,4));

var rangeCollection = new RangeCollection<int>(ranges);

48

Dialog Types

User Interaction

u Input Dialogs

u Input Validation: Regular Expression

DataEntryResult result =

DataEntryDialog.Show(

"This is a message",

"This is the caption",

"Additional information.",

ref value,

@"^[A-Fa-f0-9]{2}$");

49

Dialog Types

User Interaction

u Input Dialogs

u Value Selection

DataEntryResult result =

DataEntryDialog.Show(

"Please select one value:",

"Data Input",

"Choose a value.",

ref value,

defaultIndex, valueTable);

50

Dialog Types

User Interaction

u Input Dialogs

u Value Selection

DataEntryResult result =

DataEntryDialog.Show(

"Please select one value:",

"Data Input",

"Choose a value.",

ref value,

defaultIndex, valueTable);

List<string> values = new List<string> { "My First Value", "My Second Value" };

ValueTable<string> valueTable = new ValueTable<string>(values);

51

Introduction

Development Environment

Runtime Environment

Diagnostic Sequences

User Interaction

u Tips & Tricks

Help & Documentation

Agenda

52

Script Recording

Tips & Tricks

u Script Recorder

53

Script Recording

Tips & Tricks

u Generate Script Template for Copy & Paste

54

Debugging

Tips & Tricks

u How to debug diagnostic sequences?

u Prerequisites> Microsoft Visual C# Express / Microsoft Visual Studio

> Indigo

u Indigo> Script Manager

> Context Menu | Edit

> Indigo prepares Visual Studio solution and debugging environment

u Visual Studio> Simply press Debug | Start Debugging (F5)

55

Introduction

Development Environment

Runtime Environment

Diagnostic Sequences

User Interaction

Tips & Tricks

u Help & Documentation

Agenda

56

u API Description> Vector.Diagnostics:

VDSLibrary.chm

> Vector.Scripting.UI: Vector.Scripting.UI.chm

u Getting Started> <CANoe|CANape|Indigo>\Docs\

VDS_Library_QuickStart.pdf

u Examples> Reading Variant Coding:

> <CANoe|CANape|Indigo>\Examples\CodingReader.cs

API Documentation / Getting Started / Examples

Help & Documentation

57 © 2016. Vector Informatik GmbH. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.1 | 2017-12-06

Author:Abramowitsch, RalfVector Germany

For more information about Vectorand our products please visit

www.vector.com