7.7 Changes - boschmotorsport/WinDarab GitHub Wiki

WinDarab 7.7 Changes

Text/ASCII Import

Starting in WinDarab 7.7.38 we have added additional support for variations of text files to import. Most Tab, Comma, and Semicolon delimited files are detected. Note: The files must contain a time or xtime channel.

Support for File Compression

WinDarab 7.8 by default generates compressed data files. (~80% reduction in disk space). WinDarab 7.7.36+ supports opening these files.

Smooth Scrolling Settings

Smooth scrolling setting is now available in the Tools → Program options

New Math Channel Option "Include relevant Timestamps"

Some math channels work better if relevant timestamps are included to the math function. E.g. functions like “LapSigma” reset their result if a laptrigger is passed. However, values can be incorrect at the laptrigger boundary if this timestamp (exactly at laptrigger) isn’t included in the selected timeline. This new option ensures that the timestamps of the laptriggers are included in the math channels timeline and the math channel has a value at these positions.

Note: The used math functions in a math formula control if relevant timestamps exist and which they are (an example is LapSigma which adds the timestamps of the laptriggers to the math channel).

Show Extremas

How to find it

  1. Highlight Channel in Oscilloscope
'D' key -> 'E' key Channel Menu/Tab
Display Menu Ribbon Menu

What it does

New Colors

Oscilloscopes and XY plots can get very busy when multiple signals are added. We have added 20 distinct colors to help.

Customize

These colors can be customized in setting.ini

[Options]
DisinctColors= 0xe6194b, 0x3cb44b, 0xffe119, 0x4363d8, 0xf58231, 0x911eb4, 0x46f0f0, 0xf032e6, 0xbcf60c, 0xfabebe, 0x008080, 0xe6beff, 0x9a6324, 0xfffac8, 0x800000, 0xaaffc3, 0x808000, 0xffd8b1, 0x000075, 0x808080, 0xffffff, 0x000000__

Here’s an alternative set of colors:

DistinctColors=0xa6cee3, 0x1f78b4, 0xb2df8a, 0x33a02c, 0xfb9a99, 0xe31a1c, 0xfdbf6f, 0xff7f00, 0xcab2d6, 0x6a3d9a, 0x8dd3c7, 0xffffb3, 0xbebada, 0xfb8072, 0x80b1d3, 0xfdb462, 0xb3de69, 0xfccde5, 0xd9d9d9, 0xbc80bd, 0xffffff, 0x000000

.mf4 Support

Support for MF4 ASAM files has been added.

Note: Some MDF4 features are not available. E.g.

  • MDF4 Events
  • Opening/viewing Attachments
  • Some data types like CANDate/Time and String types
  • Array types

Copy as image

All worksheets now support Copy as image.

New Math Function Editor

We have overhauled the math function editor. It now supports:

  • Keyword highlighting
  • Intellisense
  • Live syntax checking
  • Bracket highlighting

Variables in Math Functions

Math functions support var & local variables

  • var declared variables keep their values between the calculation of one sample to the next. They are initialized once when evaluation the value of the first sample and can be used to “transfer” intermediate results to the next calculation cycle.
  • local declared variables are always initialized when calculating a sample. They can be used to calculate intermediate values – e.g. if an intermediate result is required multiple times in the same expression.

Example #1

Calculate the average wheel speed over a file

var wheelSpeedSum
var wheelSpeedCount
Local wheelSpeedAve := (vwheel_fl + vwheel_fr) / 2
wheelSpeedSum := wheelSpeedSum + wheelSpeedAve
wheelSpeedCount := wheelSpeedCount + 1
wheelSpeedSum / WheelSpeedCount

Example #2

You can even use script blocks within any other function argument. Simple put your expressions within “begin” and “end”

var wheelSpeedSum
var  wheelSpeedCount
If (nmot >= 5000;
  begin
    Local wheelSpeedAve := (vwheel_fl + vwheel_fr) / 2
    wheelSpeedSum := wheelSpeedSum + wheelSpeedAve
    wheelSpeedCount := wheelSpeedCount + 1
  end; 0)
wheelSpeedSum / WheelSpeedCount

COMAPI Can Create New Measurement Files

  • A 3rd party application/plugin can use the UserDataFile class to create new measurement files with application generated channel data.
  • Files created with the new API are written in WinDarab file format v2 which is supported since WinDarab v7.6.
  • A brief example how to write a file can be found in the BMS2ApiSamples.Net project, see the source in CreateUserDataFile.cs

Outing Report Emphasized Values

  • In 2017 we added a feature to emphasize min/max values in the outing report using different colors. A “wanted side effect” of this coloration is also the result determination of the lap/total values (lap values, if a racetrack segmentation is used to evaluate the segment min/max values).
  • If a column is configured to show the minumum value, previous WinDarab versions used to show the “maximum value of the segment miniumum values”, if both are emphasized by colorization. NOW the “total minimum” is used!
  • If a column is configured to show something else as the minumum value, the “maximum value of all sub values” was taken – this behavior wasn’t changed.
  • Another issue was the setting dialog: The default color settings default to emphasize the maximum value – even if the column function “Minimum” is selected. Because it makes more sense to emphasize the total minimum it this case, we changed the settings dialog: Now the colors for Minimum and Maximum value are swapped, if no colorization is configured for the minimum value – and swapped back if the function is again changed to another function expect “Minimum”

Math Functions Support 'NoValue'

  • In math channels you can use “NoValue” to supress any output in WinDarab (e.g. the oscilloscope signal is interrupted).
  • A math function “IsValue” was added to checka input value for “NoValue”.
  • Also all analysis windows (should) work correctly, if they meet a “NoValue”.
  • Note: All comparisions with NoValue will returns false (NoValue is internally a NaN double value)
  • Here’s a sample math function:
if (nmot > 6000; nmot; NoValue)

This channel will show only a signal, if nmot is larger than 6000 – anywhere else there’s nothing!

x-y-Plot: Toggle between <auto> and absolute x-y-z-axis limits

  • Buttons were added in the ribbon (and hotkeys X, Y and Z) to toggle the x-, y- or z-axis limits between <auto> and the absolute value (current values of <auto>).

Worksheet items can be automatically arranged

  • In the “Windows” ribbon category we added the function “Tile controls” to tile all worksheet controls on the current worksheet.
  • The function is also available, if you open the context menu of the worksheet control caption/border.

Math Inspector Improvement

  • The upper pane shows the value tree.
  • The lower pane shows the math expression.

Automatic Y Axis

  • After the user added a y-axis for a channel in the oscilloscope, the y-axis context menu can be used to turn the y-axis into an “automatic y-axis” (click “Selected channel” in the context menu)
  • An automatic y-axis always shows the corresponding y-scale for the selected channel in this area.
  • A second click on “Selected channel” REMOVES the automatic y-axis.
  • If a channel is dropped onto an automatic y-axis, the y-axis is a normal axis for the channel.
  • Note: A automatic axis always fills the complete height of the y-axis area and cannot be changed (height or vertical position).

Less Restrictions on Linked Files

  • New in WinDarab is the support to open different files as a linked file – even the recording configurations are different

    • All channels occurring in at least one of the member files is available in the linked file.
    • If a member file doesn’t contain a channel, the area in the linked file doesn’t contain any samples Following restrictions are still valid:
    • All channels have to use the same data format and bit size (e.g. unsigned 16-Bit)
    • All channels have to use the same quantization (e.g. offset/gain)
  • To complete the support, the file extract functions were refactored

    • In case of a linked file, file extract supports the creation of additional timelines which are required to export linked channels correctly, if some member channels are missing.
    • The export functions are much faster now because they use multiple threads to collect the data to export.

Instrument Panel Improvement

  • Instrument panel allow to select multiple gauges by pressing the Ctrl + Left Click or using a rubberband.
  • The location and size of all selected gauges can be adjusted in a single step.
  • Copy and paste of the selected gauges is supported
  • The layout grid is removed. Now the borders of the gauges act as magnetic lines making it easy to align/adjust gauges.
  • If multiple gauges are selected, the arrow keys can be used to move the gauges by pixel (without snapping to the magnetic lines). Additionally the arrow keys can be used with Shift to align all gauges to the top, left, bottom or right border, together with Ctrl the size can be adjusted (Ctrl+Right Arrow, Ctrl+Down Arrow) or aligned and sized (Ctrl+Left Arrow, Ctrl+Up Arrow)

Ignore Hardware Triggers

  • WinDarab now allows to “ignore” / ”hide” lap triggers created by the recording hardware. To ignore a lap trigger simply use “Delete laptrigger” from the context menu / ribbon menu.
  • Hidden hardware lap triggers can be restored in the “Lap trigger” dialog (-> ribbon). Hidden hardware triggers are shown in red using an italic font.
  • Note: This feature is not yet fully implemented/tested. Especially distance normalization for linked files lacks, because WinDarab used some optimizations in the past which cannot handle deleted hardware triggers in correctly. But the feature can be used for single files (e.g. if data was converted with “one file per outing”).

New Math Functions

The math function “ValueAtDist” were added

ValueAtDist(<channel>; <dist> [; <LapIndex>])
  • If <LapIndex> is omitted, <dist> is the absolute distance value within the file.
ValueAtDist(<channel>; <xdist>-10)
returns the value 10m before the current position.
  • If <LapIndex> is given, the <dist> argument is a lap distance value.
ValueAtDist(<channel>; 100; LapIndex)
returns the value at position 100m of the current lap.

ValueAtDist(<channel>; lapdist; LapIndex-1)
returns the value at the lap position but in the previous lap

The math function “ValueAtTime” was extended accordingly to ValueAtDist

ValueAtTime(<channel>; <time> [; <LapIndex>])
  • If <LapIndex> is omitted, <time> is the absolute time value within the file.
ValueAtTime(<channel>; <xtime>-10)
returns the value 10sec before the current position.
  • If <LapIndex> is given, the <time> argument is a lap time value.
ValueAtDist(<channel>; 10; LapIndex)
returns the value at position 10sec of the current lap.

ValueAtDist(<channel>; laptime; LapIndex-1)
returns the value at the same laptime position but in the previous lap

Note: WinDarab optimizes the following usage pattern of ValueAtTime

ValueAtTime(<channel>; xtime-<delta>)
  • In this case WinDarab doesn’t calculate a “real” math channel. Instead WinDarab shifts the timeline accordingly and passes the channel data through – this is almost like accessing the original channel!

Alias Channels Can Contain Variable Parts

  • An alias channel name and the names of its possible member channels can contain indexers. WinDarab automatically expands the alias channel definition (internally) to discrete alias channels:
  • The indexer can be given as a list of name parts “[part1,part2]” or a range [1..4] or [a-d] or any combination [a,b-d]
  • The number of indexers in the alias channel name and its member channel names have to match!

Example

You want alias channels wheelspeed_fl, wheelspeed_fr, …

Now you can create an alias channel definition named “wheelspeed_[fl,fr]

And give the following member channels:

  • vspeed_[fl,fr]
  • vwheel_[fl,fr]
  • vspeed_[0..1]

Setupsheets & Telemetry

Now setupsheets can also be configured for telemetry streams. The setupsheet file (setupsheet.xml) has to be located in the folder WinDarab Install\Config\WDServer”.

Auto-align Telemetry and Logged Data

  • If the option “Auto-Align running laps” is enabled all running laps of telemetry streams are automatically aligned and the oscilloscope is scrolled so that the aligned laptrigger is located at the left edge of the oscilloscope.
  • As soon as the next laptrigger is received, the new lap is automatically aligned to the other laps.
  • Note: While replaying the cursor is always moved to/for the overlay which is the closest to the right side of the oscilloscope. This ensures that all values (channels pane, analysis windows) are evaluated for the current values.

Hide Overlay

  • The visualization of an overlay can be disabled (hidden) – while the file keeps opened and attached to the overlay.
  • To hide an overlay use the overlay context menu in the file explorer. An overlay is shown again, if you select the same context menu item or – simly – by clicking into the overlay column to select a lap. Alternatively you can use the “Hide” context menu in the oscilloscope (“H” key).
  • What happens, if an overlay is hidden:
    • The oscilloscope hide all channel of hidden overlays
    • The trackmap doesn’t show the position of the car.
    • All analysis windows hide the evaluation results of hidden overlays (except LapAnalysis)
    • As long as an overlay is hidden most calculations for the attached files are stopped/disabled.

Only “Event rules” and “LapAnalysis” are still evaluated.

Detect Event Supports Multiple Overloads

  • Two additional arguments “BeginDelay” and “EndDelay” were added to DetectEvent. With these arguments DetectEvent delays state changes by the given amount of time.
  • The two arguments are optional and don’t change the signature of the “old” DetectEvent:
DetectEvent(Inactive|Rising|Active|Falling; <BeginCondition>; <BeginDuration>; <BeginDelay>; <EndCondition>; <EndDuration>; <EndDelay>)
  • The kind of the arguments are actually controlled by the given number of arguments. Hereby the first keyword argument (Inactive/Rising|Active|Falling) is always optional and is NOT counted as an argument!

DetectEvent with 6 Arguments

DetectEvent(
    Inactive|Rising|Active|Falling;
    <BeginCondition>; <BeginDuration>; <BeginDelay>;  
    <EndCondition>; <EndDuration>; <EndDelay>
)

DetectEvent with 5 Arguments

DetectEvent(
    Inactive|Rising|Active|Falling;
    <BeginCondition>; <BeginDuration>; <BeginDelay>;
    <EndCondition>; <EndDuration>; <EndDelay>
)

DetectEvent with 4 Arguments

DetectEvent(
    Inactive|Rising|Active|Falling;
    <BeginCondition>; <BeginDuration>; <BeginDelay>;
    <EndCondition>; <EndDuration>; <EndDelay>
)

DetectEvent with 3 Arguments

DetectEvent(
    Inactive|Rising|Active|Falling;
    <BeginCondition>; <BeginDuration>; <BeginDelay>;
    <EndCondition>; <EndDuration>; <EndDelay>
)

DetectEvent with 2 Arguments

DetectEvent(
    Inactive|Rising|Active|Falling;
    <BeginCondition>; <BeginDuration>; <BeginDelay>; 
    <EndCondition>; <EndDuration>; <EndDelay>
)

DetectEvent with 1 Arguments

DetectEvent(
    Inactive|Rising|Active|Falling;
    <BeginCondition>; <BeginDuration>; <BeginDelay>; 
    <EndCondition>; <EndDuration>; <EndDelay>
)

Flow Chart: output can be virtual channels

  • Columns in any output table can be enabled to create/populate a virtual channel. The virtual channel can be used in any other view of WinDarab for futher analysis.
  • Peristent channels are also supported for single files (not linked files and not telemetry), but only if the evaluation “Whole file” is selected for the flow chart. Note: Be aware that persistent channels are replaced each time the flow is executed!
  • The name of the column is used as the name of the virtual channel and the name of the table is used as the data source. Nevertheless to prevent name conflicts we encourage the use of „unique names“. WinDarab will resolve channel name conflicts** nevertheless depending on the execution order of Flow Charts the name conflicts aren’t always resolved the same way!

Setup of the Output Table:

Example Flow chart (calculate the average engine rpm (nmot) above 6000 rpm):

Example Output (oscilloscope and XY Plot):

⚠️ **GitHub.com Fallback** ⚠️