ECU calibration with ASAP2Library and ASAP2Demo
ASAP2 is an ECU Measurement and Calibration Data Exchange Format created by the ASAM (Association for Standardization of Automation and Measuring Systems). This standard is widely used in the automotive field.
Originally created as a lightweight A2L parser, more and more automotive standards like XCP, CCP, MDF, UDS, DoIP and ODX have been added over time.
The ASAP2Demo application is based on the ASAP2Library and is free to use.
ASAP2Library key features:
- .NET Framework assembly usable from any available .NET framework language (C#, VB.NET, F#, J#,...).
- Exclusively written in managed code and therefore portable. Compilable for Windows (.NET Framework ≥ 4.0) and .NET (Windows/Linux/MacOS).
- Modular architecture, modules could be combined as required.
- Reader module
- Implements the complete ASAM MCD-2MC v1.7.1 (ASAP2) specification.
- Creates an object oriented, hierarchical .NET object model, see the ASAP2Library API and the demo code.
- Type safety - all A2L objects and their properties are mapped to it's corresponding .NET type.
- A2L syntax and model checking (e.g. missing object links).
- The object model allows to change almost any A2L object property.
- Approximately 8 MBit/s parsing performance (maybe the fastest available ASAP2 parser).
- Writer module
- Allows manual addition of any A2L objects to the A2L object model.
- Rewrite the .NET object model (filtered and/or optimized) into an A2L file.
- Serialize/Deserialize the .NET object model into/from a XML representation.
- Values module
- Reading and Writing ECU calibration data files into/from the created A2L model (supported are Intel HEX, Motorola S, INCA DCM, CANape PAR, CDF and MATLAB (.m) file formats).
- Convert byte streams from the calibration data file into physical values of corresponding A2L characteristics.
- Convert physical data into byte streams in order to save modified data into a calibration data file.
- Comm module
- Implements the ASAM MCD-1 XCP V1.3.0 specification, supporting communication over TCP/UDP on Ethernet, on SxI, on USB and on CAN/CAN FD using supported CAN Hardware providers.
- Implements the ASAM MCD-1 CCP V2.1 specification supporting communication over CAN using supported CAN Hardware providers.
- A common interface to measure, calibrate and flash XCP and CCP ECUs.
- Implements an ECU simulator (simulating an ECU in a console application by using the A2L parser and XCP[UDP/TCP/CAN/SxI], CCP or UDS protocols).
- Supports many popular CAN/CAN FD hardware providers using a common interface:
8devices USB2CAN, Advantech, Star Cooperation FlexCard, ETAS (CAN FD), ESD (CAN FD), I+ME Actia (XS Serie), Intrepid control systems (CAN FD), IXXAT (CAN FD), Kvaser (CAN FD), Lawicel CANUSB, National Instruments (NI-CAN), National Instruments (XNET) (CAN FD), MHS Elektronik Tiny-CAN, Peak (CAN FD), Softing, Vector (CAN FD). - Supports accessing serial ports (COMx) using XCPonSxI.
- Supports accessing the CAN Bus over ELM327 (and compatible ones) devices. This allows the protocols CCP, XCP and UDS to be used wirelessly.
- DBC module
- Read, write and edit DBC (CANdb++) files.
- Measure and compute physical signal values by connecting a supported CAN Hardware provider.
- MDF module
- Read MDF format files up to v4.1.1
- Write MDF format files (v3.3 and V4.10).
- A common interface to read and write MDF v3/v4 formatted files.
- Diagnose module
- Read, write and edit Open Diagnostic eXchange format (ODX/PDX, ASAM MCD-2D) files.
- Implements the ISO 15765-2 ISO-TP (Transport Layer) on CAN and CAN FD protocol.
- Implements the ISO 13400-2 (Diagnostic communication over Internet, DoIP) protocol.
- Implements the ISO 14229 (Unified Diagnostic Service, UDS) protocol.
- Symbols module
- Read ELF (Executable and Linkable format) or MAP files in order to synchronize A2L object addresses.
- Supports DWARF formatted debug information contained in an ELF file.
- Rewrite an A2L with updated addresses from an ELF or MAP file, see the ELF Example.
Interfacing:
- Use it in any .NET application by a simple Assembly reference.
- Use it with native C/C++ applications by Wrapping Managed Objects in a native Application.
- Use it with Python using Python.NET (see the python code example, too).
- Use it with MATLAB applications.
- Use it with LabView applications.