ASAM MCD-3 MC started life in the early 1990s as a company-specific Specification from AVL List that defines a serial interface protocol based upon RS232 for test stand automation systems. The Specification was used as the foundation to create the first public Standard under the name ASAP3. In subsequent years, the Standard was further developed and TCP/IP was added as a second supported protocol.
By the end of the 1990s, ASAP3 was given to ASAM and renamed to ASAM MCD-3. The members of ASAM created new strategic guidelines for further developing the Standard. The Standard was promoted to a higher level, now describing a hardware-independent software interface rather than a hardware-dependent protocol. The drafts of the two specifications ASAM MCD-3 D and ASAM MCD-3 MC have been merged into one Standard. Data and functions were described via object-oriented models. The new Standard supported significantly more use-cases for test stand automation and automated Calibration than before. A library implementation from Vector Informatik was used as the template for the first version of this fundamental re-design of the Standard. The Standard was released as version 1.0 in 2003. The Standard was further matured and revised with the help of prototype implementations and cross-testing events.
With version 2.0 and 2.1, the Watcher- and Recorder-services have been added. Since the requirements for the MC part and the Diagnostics part of the Standard increasingly diverged, ASAM decided to split the Standard into two independent standards. Since version 3.0, the name of the Standard is now ASAM MCD-3 MC. This version improves the initialization-time of MC-servers and the connection and release of client application.
The main motivation for ASAM MCD-3 MC and its predecessors is to provide standardized and abstracted access to ECU Calibration parameters and Measurement data. The Standard uses Calibration tools for this purpose, which have direct access to such data. The Standard adds a server module to Calibration tools with a specified software interface. The interface completely decouples client applications from hardware-, bus-, protocol- or vendor-specific properties of subsequent components of the tool chain.
Since the MC-server is implemented as a software interface, the server interface is directly available in programming languages and scripts that can be written by end users. MC-servers according to this Standard provide ECU data in their physical representation format, i.e. 50km/h instead of 0x3C. This has the advantage that programs for test automation or automated Calibration are independent from the ECU software. They can be easily ported to different ECUs and different tools.
Current requirements to improve the standards in the MC-3 area are:
In the market, ASAM ASAP3 is still the most important Standard. As a consequence, this Standard will be further developed.
To cover the performance requirements of modern MC-3 systems, the Public Specification iLinkRT will be transfered to ASAM as a public Standard. iLinkRT allows to carry out high performance data transfer for Measurement and Calibration. The new Standard will be combined with ASAM ASAP3. The merged versions should be compatible to the previous versions to allow easy migration.
In the future, iLinkRT with multiple client support will be used at protocol level. It can be used as a stand-alone Standard or in combination with an ASAM XIL-compliant API. The focus of both, API and protocol level is the connection between a MC-tool and a test bench.
The ASAM MCD-3 MC Standard will exist in parallel and is usable for applications that focus on an API in the MC area.
The primary application area is test stand automation. The execution of tests for ECUs, vehicle subcomponents, engines and complete vehicles is mostly automated in today's test labs. Tool setup, configuration, programming and debugging could consume a significant portion of the available time for testing and the utilization of expensive test stands. ASAM MCD-3 MC is one provision to significantly reduce this time.
Some further areas of use for the Standard is in HIL testing (although now increasingly replaced by ASAM XIL) and automated Calibration. The latter is actually an advanced Use-Case for test stand automation. This Use-Case is still not often seen in the industry, since many Calibration tasks are deemed to be too complex for automated execution. However, the Standard provides the necessary features to support this application area.
The MC-Server is part of a Calibration system or modular vehicle communication system. Such systems have access to Measurement variables and Calibration parameters on an ECU. The task of the MC-Server is to collect data from the ECU while it is running and to make the data available to client applications via a programmatic interface. The functions of data collection and the interface to client applications are standardized through ASAM MCD-3 MC as an object-oriented API. To carry out the functions, the server consist of three functional blocks:
Specifically, the Measurement classes can be further subdivided into classes that implement specific functions:
Collectors and Recorders acquire data according to a data acquisition list. A data acquisition list is defined in ASAM MCD-3 MC via a "collection". In general, collections in the sense of this Standard are objects of the same kind that shall be logically grouped together. In this respect, a data acquisition list is considered to be a collection.
The data is acquired through "logical links". The Standard defines a logical link as one physical communication line to one ECU that uses a specific interface and protocol. Logical links contain all Collectors defined for the ECU and all Calibration objects available on the ECU.
Data bases, logical links, Recorders and Watchers are put together in a "project". All references to data objects within one project can be resolved. The MC-server may hold the definition of several projects, but can only work on one active project at the same time. Consequently, all clients connected to one MC-server work on one specific project.
Clients and the MC-Server do not necessarily have to run on the same computer. They may communicate via a remote interface with each other, e.g. via COM/DCOM. ASAM MCD-3 MC provides a COM-IDL file for implementing such an interface.
The following chapters describe the primary functions of an MC-server and the classes that are available to carry out those functions: provide access to Calibration objects and to collect Measurement data from an ECU. Furthermore, one chapter covers the access to the MC-server Database.
ASAM MCD-3 MC provides a comprehensive API to retrieve meta data about Calibration objects and to remotely manage Calibration objects. The API supports the full range of Calibration objects in an ECU:
For the first Use-Case, - retrieve meta data about Calibration objects -, the Standard defines one class for generic read-access methods applied to all Calibration objects.
Class | Function |
---|---|
MCDDbCharacteristic |
|
This class is actually a parent class for specific Calibration object API classes, as listed in the next table. Their API provides additional read-access methods on top of MCDDbCharacteristic, which is specific to the Calibration objects.
Class | Additional Function |
---|---|
MCDDbScalarCharacteristic |
|
MCDDbValueBlockCharacteristic |
|
MCDDbAsciiCharacteristic |
|
MCDDbCurveCharacteristic |
|
MCDDbMapCharacteristic |
|
MCDDbCube3DCharacteristic |
|
MCDDbCube4DCharacteristic |
|
MCDDbCube5DCharacteristic |
|
Axes of look-up table Calibration objects have their own access classes.
Class | Function |
---|---|
MCDDbAxisDescription |
|
MCDDbAxisPoints |
|
MCDDbAxisPts |
|
For the second Use-Case, - remotely manage Calibration objects -, the Standard defines API classes that allow to read and write the values of Calibration objects in an ECU. Furthermore, classes exist to handle concurrent access to the objects and to add or remove them from collections.
The following table lists one API class, which provides generic access methods to Calibration objects.
Class | Function |
---|---|
MCDCharacteristic |
|
This class is actually a parent class for specific Calibration object API classes, as listed in the next table. Their API provides additional read- and write access methods on top of MCDCharacteristic, which is specific to the Calibration objects.
Class | Calibration Object | Access to ... |
---|---|---|
MCDScalarCharacteristic | Scalar |
|
MCDValueBlockCharactersistic | Value block |
|
MCDASCIICharactersitic | ASCII |
|
MCDCurveCharacteristic | Curve |
|
MCDMapCharacteristic | Map |
|
MCDCube3DCharacteristic | Cuboid |
|
MCDCube4DCharacteristic | 4D look-up table |
|
MCDCube5DCharacteristic | 5D look-up table |
|
Those Calibration object API classes use secondary API classes for the read- and write-access to table values as per the next table.
Class | Access to ... |
---|---|
MCDVectorCharacteristic |
|
MCDMatrixCharacteristic |
|
MCDMatrix3DCharacteristic |
|
MCDMatrix4DCharacteristic |
|
MCDMatrix5DCharacteristic |
|
The Standard defines some more API classes on this level for read-only access to table values as per the next table.
Class | Read-only access to... |
---|---|
MCDValueCurve |
|
MCDValueMap |
|
MCDValueCube3D |
|
MCDValueCube4D |
|
MCDValueCube5D |
|
Those secondary-level API classes use third-level generic API classes for read-only access to array values of various dimensions, as per the next table.
Class | Read-only access to ... |
---|---|
MCDValueArray |
|
MCDValueMatrix |
|
MCDValueMatrix3D |
|
MCDValueMatrix4D |
|
MCDValueMatrix5D |
|
Read access can start and end at specific array index positions, so that only a sub-array is returned. The same applies to write access. Besides reading and writing of the actual parameter values, the API classes also have methods to read the array's dimensions, i.e. number of elements for each dimension.
ASAM MCD-3 MC provides a comprehensive API to retrieve meta data about Measurement objects and to remotely manage the logging of Measurement objects.
For the first Use-Case, - retrieve meta data about Measurement objects -, the Standard defines one class for generic read-access methods applied to all Measurement objects.
Class | Function |
---|---|
MCDDbMeasurement |
|
For the second Use-Case, - remotely manage the logging of Measurement objects -, the Standard defines two objects, which are described in the next chapters.
Collectors log the values of Measurement and Calibration objects from the ECU with a common rate in a ring buffer and makes the data available to clients every time one sample of a Measurement has been finished. The use of Collectors is suitable, when the bandwidth between the MC-system and the clients is big enough to transfer the data while the acquisition is continuously running. The collection of data is started and stopped by Watchers, which may include manual triggering from a client.
Collectors log data according to a data acquisition list and some further acquisition parameters that has been set up by their client. The data acquisition list consist of the names of Measurement and Calibration objects (i.e. MCDDatatypeShortName). All objects on the data acquisition list need to be tied to the same logical link. In case of Calibration objects, the list further defines the sub-objects, e.g. axes or tables, and which cell value or a range of cell values shall be acquired. The data acquisition list and sample rate must be set up by the client before the Collector can be activated. All further acquisition parameters can be optionally set by the client, as they have default values. Those parameters are:
The Collector is addressable by clients in its initial state eOS_CREATED. A client application can add the names of Measurement and Calibration objects to the acquisition list during this state. The trigger condition may be set and the ring buffer can be configured. In the state eOS_CONFIGURED, the MC-server checks that data acquisition is possible with the given acquisition list. Once activated, the Collector transitions into the state of eOS_ACTIVATED and starts to continually write the data to its ring buffer. The trigger condition is monitored.
The Collector reaches the state eOS_STARTED_PENDING, once the trigger condition evaluates to "true" and a positive start time delay was defined for the data acquisition. The Collector now waits until this time elapsed. Data transfer to the client starts in the state of eOS_STARTED. Every time the buffer has been filled with a complete Measurement sample, the Collector signals to a client via an onCollectorResultReady event, that a new sample is available. Clients have to actively pull this data from the MC-server. If a client does not pull the data in time, a buffer overflow could occur. The Collector would report that to the client with a buffer overflow event (onCollectorError).
During the started state, the Collector monitors the stop trigger condition. When the stop condition is met, the Collector moves to the eOS_ACTIVATED_PENDING state and continues to transfer data until a positive stop time delay has elapsed. The Collector then transitions back into the eOS_ACTIVATED state. In case the logical link becomes offline during data acquisition, the Collector automatically falls back into the state eOS_CONFIGURED. Every state transition of a Collector is reported via events to clients.
ASAM MCD-3 MC defines several classes for setting up and managing Collectors and their data acquisition lists.
Class | Function |
---|---|
MCDCollectors |
|
MCDCollector |
|
MCDCollectedObjects |
|
MCDCollectedObject |
|
MCDScalarCollectorDescription |
|
MCDValueBlockCollectorDescription |
|
MCDCurveCollectorDescription |
|
MCDMapCollectorDescription |
|
MCDCollectorEventHandler |
|
MCDBuffer |
|
A Collector has a data acquisition list (accessible via the MCDCollectedObjects class), which contains references to Measurement and Calibration objects. Their meta data can be access via the classes of the following table.
Class | Function |
---|---|
MCDDbCharacteristics |
|
MCDDbMeasurements |
|
The collected data is stored in a data structure that is accessible via the MCDResults parent class and further derived classes. MCDResults in the context of this Standard means the acquisition of one sample (i.e. one line of the buffer). The acquired data may originate from multiple ECUs. An MCDResult object may contain multiple MCDResponse objects. MCDResponse in the context of this Standard means the data of one sample from one ECU. An MCDResponse object contains MCDResponseParameter objects. MCDResponseParameter objects in the context of this Standard are used to describe the data structure of the collected data. At the bottom of the data structure, MCDResponseParameter references to a value of the class MCDValue.
Class | Function |
---|---|
MCDResults |
|
MCDResult |
|
MCDResponses |
|
MCDResponse |
|
MCDResponseParameters |
|
MCDResponseParameter |
|
MCDValue |
|
The Standard defines two representation types, in which the data is stored and transferred to the clients:
Data of the type eRT_PHYSICAL is always stored as a double-precision floating-point data type (A_FLOAT64). Data of the type eRT_ECU has the same data type as stored in the ECU. The Standard defines the following data types:
Recorders acquire data the same way as Collectors, but make the data in a different way available to clients. In fact, the data acquisition of a Recorder is internally set up via a Collector object. However, instead of transferring the buffer content immediately to the client after the acquisition, the content is actually written to one or multiple files. The Recorder API then allows to transfer the data from the files asynchronously to clients while the Measurement is still running, or to transfer the data at a later time after the acquisition has finished. Since the logged data is available in files, it is also possible to transfer the data through other means than the ASAM MCD-3 MC API. Recorders are typically used, when the bandwidth between the MC-system and clients is not sufficient enough for synchronous data transfer.
ASAM MCD-3 MC defines two types of Recorders:
Only the Write-Read Recorder is capable of carrying out a data acquisition. The Read-Only Recorder is used for transferring data captured by the Write-Read Recorder to clients at a later point-of-time, typically when the Measurement has finished.
The Write-Read Recorder acquires the data the same way as the Collector with two exceptions. The Write-Read Recorder has the additional eOS_PAUSED state, which can temporarily pause the data acquisition via the pause method, and restart data acquisition via the resume method. Furthermore, the Write-Read Recorder can acquire data from different logical links, unlike Collectors whose data must originate from one logical link.
The Standard does not stipulate specific file formats for storing the measured data. The Standard allows to optionally define the filename and -scheme, path and number of files to be used to store the measured data. A new file will be created during each transition from eOS_ACTIVATED to eOS_STARTED. Each transition from eOS_STARTED to eOS_ACTIVATED or eOS_CONFIGURED closes the current file. Files with the same name will be overwritten by the MC-server. Consequently, by using a suitable filename-scheme, the Write-Read Recorder can be set up to store data in a file-based ring-buffer scheme.
The Standard defines several classes for setting up and managing Recorders.
Class | Function |
---|---|
MCDRecorders |
|
MCDWriteReadRecorder |
|
MCDWriteReadRecorderCollectors |
|
MCDWriteReadRecorderCollector |
|
MCDReadRecorder |
|
MCDReadRecorderCollectors |
|
MCDReadRecorderCollector |
|
MCDReadCollectedObjects |
|
MCDRateInfo |
|
MCDWriteReadRecorderEventHandler |
|
The acquired data is stored in files in the same structure as described for Collectors. Unlike in the case of Collectors, each sample must have a time stamp.
Watchers allow to set up event-triggered data logging on the MC-server. A watcher is a server-sided object, which continuously monitors other objects, such as values from Measurement or Calibration objects, and triggers an event once a pre-defined condition is met. The event can be used to start and stop Collectors and Recorders, to pause Recorders, or may be used by other event handlers.
A watcher has exactly one trigger condition with up to two trigger source objects. The sources can be the value of a Measurement object, the value of a Calibration object (a cell value in case of an array), an event, the absolute or relative time. The trigger source objects have to be defined in the MC-server's Database and may be available on different logical links. A source can also be another trigger condition, which effectively allows to construct complex trigger conditions that involve more than two source objects. The trigger conditions are expressed with simple operators, such as bit operators, logical or relational operators, and edge-detection operators. Furthermore, a trigger condition may checks, whether a specific offset or gradient thresholds has been exceeded.
A watcher object has three internal states. In the eWS_CREATED state, the watcher can be configured, i.e. it is created or removed and the trigger condition can be set. In the eWS_INACTIVE state, the watcher is linked to Collectors, Recorders or other watcher objects. From this state, the watcher can be activated and would then transition into the state eWS_ACTIVE. While active, the watcher continuously monitors the source objects of the trigger condition. The watcher will trigger a "Fire" event, once the trigger condition evaluates to "true". The watcher then either remains in the state eWS_ACTIVE and continues to monitor the sources, or transitions back into the state eWS_INACTIVE depending on its AutoDeactivate configuration flag. API methods allow to manually move the watcher between the active and inactive state at any time. A watcher can also be activated by another watcher, which allows to set up watcher cascades.
The Standard defines watcher API classes to setup and manage the watchers as described in the following table.
Class | Function |
---|---|
MCDGlobalEventTriggerSource |
|
MCDSystemEventTriggerSource |
|
MCDLogicalLinkEventTriggerSource |
|
MCDConstantValueTriggerSource |
|
MCDScalarValueTriggerSource |
|
MCDVectorValueTriggerSource |
|
MCDMatrixValueTriggerSource |
|
MCDRelativeTimeValueTriggerSource |
|
MCDConstantTimeTriggerSource |
|
MCDAbsoluteTimeTriggerSource |
|
MCDEmptyTrigger |
|
Triggers use operator classes to evaluate the trigger condition as per the next table.
Class | Function |
---|---|
MCDUnaryTrigger |
|
MCDBinaryTrigger |
|
MCDGradientTrigger |
|
MCDOffsetTrigger |
|
MCDEmptyTrigger |
|
Further API classes provide methods for the creation and administration of watchers.
Class | Function |
---|---|
MCDWatchers |
|
MCDWatcher |
|
MCDTriggerFactory |
|
MCDTriggerSourceFactory |
|
MCDWatcherEventHandler |
|
The measureable variables and Calibration parameters of an ECU are described in A2L-files according to ASAM MCD-2 MC. Calibration tools read this file and internally store their content. The ASAM MCD-3 MC API provides programmatic read-only access for clients to this data. Those API classes all have the characters "Db" at the fourth and fifth position in the class name. The objects provide access to nearly the complete content of what is typically described in an A2L-file. The preceding chapters already described the access classes to measureable variables and Calibration parameters:
Those classes contain the meta data about the name of the Measurement or Calibration object, descriptions, data type, display identifier, format and limits. Specifically for Measurement variables, the respective class further provides the default sample rate, accuracy, resolution and array size. For Calibration parameters, the respective class provides the address in memory, extended limits, max value change in one Calibration step, the read-only flag and further meta data specific to the Calibration parameter type.
Every Measurement and Calibration object has a reference to a computation method object MCDDbCompuMethod. This object describes, how a value is transformed from its internal representation type (eRT_ECU) to a physical representation type (eRT_PHYSICAL). The conversion is typically done through a linear or rational function, for which this class provides the coefficients. This object has further references to conversion tables (MCDDbCompuTab, MCDDbCompuVTab or MCDDbCompuVTabRange) and units (MCDDbUnit). The latter has a reference to the physical dimension (MCDDbPhysicalDimension). The last two classes allow to convert values of the same physical dimensions to different units.
Further classes are available to access other objects of the data base that describe general properties of the ECU SW architecture: MCDDbFunction, MCDDbGroup and MCDDbModPar.
ASAM MCD-3 MC and ASAM ASAP3 are not compatible to each other. The two standards just cover broadly the same application areas and use-cases.
ASAM MCD-3 MC uses ASAM MCD-2 MC. An MC-server according ASAM MCD-3 MC is able to parse and import data from A2L-files as specified by ASAM MCD-2 MC. This data is available via classes of the MC-server API.
From a technical point-of-view, ASAM MCD-3 MC is a modern Standard that covers a wide array of use-cases for MC-servers. Despite its sophistication, ASAM MCD-3 MC has never been more successful in the industry than its early predecessor ASAM ASAP3. The level of sophistication and the attempt to cover many use-cases resulted in a complex API, which is costly in implementation and complex in use. The forced integration of D-servers to the Standard throughout its development history contributed to the complex API. The D-server has been separated from the Standard meanwhile, but the complexity of the API remained essentially the same. Furthermore, the Standard favors an implementation via DCOM, whose configuration and administration is considerably more complex compared to ASAP3-based systems. Since ASAP3 covers the most important use-cases, is easier to use and is very stable in operation, there is rarely justification to switch to ASAM MCD-3 MC. Although version 3.0 of the Standard was released in 2011, most tool vendors still use version 2.2 implementation in their tools today.
The Standard includes the following deliverables: