LdP Datalogger Viewer
User Manual
LdP_Datalogger_Viewer is a tool designed to visualize time series, especially those related to internal signals of systems. It is specialized in handling data in the format generated by ACMSL Simulators (LdP framework).
It also implements a procedure for grouping the presentation of signals using criteria that help to find the temporal relationships between them: state changes, delays, responses, correlations and cause -> effect sequences.
It also generates data formats compatible with other analysis tools for this data, such as CSV files (spreadsheets).
With this manual the technical user will become familiar with concepts of:
- datalogger and signal recording,
- time series,
- different treatment of analog and digital signals,
- specialized data files, such as SQLite databases and CSV files compatible with spreadsheets,
- and graphical representation of data.
The goal is for the user to be able to:
- track the temporal evolution of relevant variables,
- compare signals in the same time window,
- locate events and transitions,
- better understand the overall behavior of the analyzed system.
1. Program Usage
To use this program, follow these steps:
- select a data file. There are three types:,
- SQLite files with LdP original structure, from simulation sessions
- files in unified format,
- files in CSV format
- select a group of signals contained in the chosen file, and a visualization structure,
- visualize it.
The following figure shows a typical example:
Press Open.
Choose the session file of a simulator. For example:
C:\WFS_Datalog\Doubly Fed Induction Generator Wind Turbine\25-11-21-09-29-36.sqlite. (This file corresponds to the session carried out with the "Doubly Fed Induction Generator" Simulator, which started on 2025/11/21 09:29:36).
Select, for example, the Visualization Profile Cutin + Cutout + Production. This Profile corresponds to the visualization of the Panel of the same name in the Wind Turbine Simulator Doubly Fed Induction Generator.
NOTE: If the selector is not filled with the available Profiles, continue to the section Import .conf or Create a new profile.
Press Visualize.
When a Profile is selected using the selector, it is necessary to press the Visualize button for it to appear in the central panel.
From that point on, you can choose an area of interest by performing a Zoom with the right mouse button: mark the start of the zoom with the right button, and drag the mouse with the right button held down until you reach the end of the desired area. See next image.
When you release the right button, the chosen area will appear filling the entire screen. See next image.
2. Description of graphical interface elements
This application incorporates the concept of Visualization Profile as a mechanism for managing the way of selecting the signals to be visualized, as well as their visualization and visual grouping modes.
2.1 Visualization Profile
The user can decide which signals to visualize from those contained in the chosen data file, and how they are presented in the different recorders.
This means that the user can:
- choose a reduced set of signals for a specific search,
- group in the same recorder only the signals whose visual comparison is useful,
- separate different functional blocks into different recorders,
- build alternative profiles for the same file, according to the type of analysis to be performed.
By choosing a specific Profile, we choose two concepts:
The set of signals to visualize
The details of the representation of those signals
The Visualization Profiles section (in the left panel) presents the available functions for selecting, creating, editing and saving the files corresponding to the Profiles for a log file, or a set of them. In the section Visualization Profile you will find a detailed explanation of these functions.
2.1.1 Selecting a Visualization Profile
In first position we have a selector that allows us to choose among the available profiles. The definition of a Profile is saved in a JSON file, as shown in the Appendix.
2.2 Recorders
In this initial view, after "Open -> Select Visualization Profile -> Visualize" the most important graphical elements of the application can be distinguished.
The central element is the Recorder, i.e., the canvas on which the temporal evolutions of the chosen signals are graphically represented. Each recorder occupies a horizontal strip in the visualization area and shares the same temporal reference (X axis) with the others.
2.3 Panels
Next to each recorder, on the right, a lateral information Panel appears where we find:
the name of the recorder
how analog signals are presented in this Recorder:
maintaining the value between one record and the next (Step)
joining two consecutive records.
the way the Y axis scale is calculated: automatic, or not. In case of automatic calculation this affects:
- the maximum and minimum values of the recorder
- the number and value of the horizontal reference lines. These lines are calculated automatically, based on the maximum and minimum values of all signals in the recorder, to show the greatest resolution (Auto scale).
details of the represented signals,
- the color associated in the recorder
- its short name
- its value corresponding to the instant associated with the cursor.
2.4 Cursors and time interval measurement
In the upper left part, the data corresponding to the cursor instants are presented.
"Cursor" : position of the (red vertical line), in day/month/year hour:minutes:seconds format (and milliseconds depending on the zoom level)
"Date LdP" : position of the red vertical line, in LdP format (field "Date" in the records)
"Ref": reference date (if it has been defined using
Ctrl+ left mouse button). (yellow line)."Delta t": distance in seconds between the red vertical line and the yellow one (reference instant).
Sometimes it is useful to freeze the cursor to be able to use the mouse for other functions. We call this the Frozen cursor. It is indicated by the background of the "Cursor" text (see next figure) turning light blue.
To enter or exit this mode, press the f (or F) key. You must have previously pressed the right mouse button at least once.
2.5 Adaptive labelling of the time axis
It is done in the first recorder and automatically adjusts to the zoom level. Examples:
2.6 Changing the visualization interval
The time interval being visualized can be controlled with:
the All button, which presents the full temporal expansion of the dataset; (above, between "Visualize" and the language selector).
the mouse; press the right button on the desired start instant, drag the mouse with the right button held down to the other instant, and release the right button;
using the
<and>keys, while holding down the left mouse button, a shift to the left or right of the visualized time interval of 20% of the visualized interval is producedusing the
PageUporPageDownkeys while holding down theCtrlkey, the zoom is multiplied or divided by two relative to the current one, centering the new area on the mouse position.
3. Visualization Profile: choosing signals to visualize and composing recorders
The user can decide which signals to visualize from those contained in the chosen data file, and how they are presented in the different recorders.
This means that the user can:
- choose a reduced set of signals for a specific search,
- group in the same recorder only the signals whose visual comparison is useful,
- separate different functional blocks into different recorders,
- and build alternative profiles for the same file according to the type of analysis to be performed.
By choosing a specific Profile, we choose two concepts:
The set of signals to visualize
The details of the representation of those signals
The Visualization Profiles section presents the available functions for selecting, creating, editing and saving profile files:
3.1 Selecting a Profile
In the first position of the menu we have a selector that allows us to choose among the available Visualization Profiles. The definition of a Profile is saved in JSON files.
3.2 Where are the available Profile files located?
Since Visualization Profiles reference a set of signals, these
signals are implicit in the data files. Since there may be data files
that share signals (for example, the files from LdP simulators), this
application expects to find the Profile files grouped together with
the data files. For example, for data coming from sessions with the
"Rotor Resistance Controlled WT" simulator, which the simulator
saves in the directory: C:\WFS_Datalog\Rotor Resistance Controlled WT,
the Profile definitions for this data are saved in the directory
C:\WFS_Datalog\Rotor Resistance Controlled WT\layouts\.
If data files not created by LdP simulators are to be used, for example, CSV files from a spreadsheet, it is advisable to group these data files in a specific directory and give it a meaningful name. When a Visualization Profile is defined for that dataset, this application will save them in the layouts subdirectory, under that directory.
3.3 Importing Visualization Profiles used in a Simulator configuration
When you want to visualize data from sessions carried out with LdP
simulators, a good idea is to start by emulating the
StripRecorder Panels that allow visualizing the
evolution of groups of signals during the execution of simulations.
These groupings are described in the configuration files
(conf) of each simulator. They are generally found in
the directory C:\ACMSL\WindFarmSimulator\conf. This
function imports all Panels and will create the corresponding
Profiles, which will be available for selection.
3.4 Creating a new Visualization Profile
To create a new Profile, you must first open a data file, since you need to assign signal names to it, which logically must exist.
When you press the "New" button, a form will appear to enter the name of the new Profile.
The chosen name should ideally be minimally descriptive of the Profile's
objective: in this case, we are interested in visualizing the evolutions
of the power generated by a wind turbine, how it relates to the wind and
to the revolutions of the electric generator.
On "Accept" the editing form for the recorders and their properties of the new profile will appear
And it will be ready to insert recorders into this new profile.
3.5 Adding Recorders to a Visualization Profile
Pressing "+Recorder" brings up the form
In this example, we have assumed that we want to see the Wind variable in the first recorder, hence the chosen name, which is added to the "Profile in edit" form. Immediately the "Recorder properties: Wind" form is presented, to be able to continue adding the corresponding signal.
Regarding the recorder parameters, we can leave the default values and proceed to add a signal to this recorder. To do so we press the "+Signal" button: the application will show the "Select signal" form. (See next figure)
3.6 Adding Signals to a Recorder
The program presents the set of signals available in the log file that we have open.
In this form we look for the signal we are interested in,
corresponding to the Wind.
Pressing Accept, it will be added to the Recorder properties form.
This signal corresponds to the value of the Wind Vane. We may also be interested in knowing the effective wind incident on the plane of rotation of the blades, which takes into account the misalignment of the Nacelle. This signal is calculated internally in the Controller, and is available as "Controller.Control.EffectiveWind".
We see that both signals have been added with the same characteristics (Color, Width, Marker)
3.7 Graphical representation of Signals
We can change the graphical characteristics by pressing "Edit selected signal", having previously selected it. The "Edit selected signal" form will appear
3.7.1 Signal Color
We can change the color with which this signal will be presented in this recorder (a signal can be in several recorders, represented in different ways in each one), by pressing "Choose", which will present the following form, where we can choose its associated color.
3.7.2 Signal Markers
The "Marker" selector allows you to choose the type of mark drawn at each point corresponding to each record of the variable
Signal with circular marker
Signal with cross markers
3.7.3 Modes for representing Analog Signals: Step - Interpolated
With "Mode" we can choose how the points of two consecutive records are graphically connected. This option is controlled at the "Recorder" level, which takes priority over what is defined for each signal.
Step Mode
Interpolated Mode
3.7.4 Mode for representing Digital Signals
The interest of presenting several digital signals in the same Recorder is the advantage of easily observing when one precedes another. However, presenting them has the problem that they can "overlap", which loses part of the advantage sought: to avoid this problem it has been decided to present them offset vertically, so that they do not overlap. See example in the next figure.
4 Auxiliary Functions
These functions are accessed using the buttons in the left panel, under Functions
4.1 Hardcopy
Pressing the "F12" key generates a PNG image, like the following, insertable into any Office document.
4.2 Accessing the data of the Visualization Profile signals
We can have access to the data of the signals in a given Profile, in the time interval being visualized. To do so:
Choose the area of interest.
Press the "Data Access" button: a list of all the signals being presented in the current Profile appears.
- Select the signal whose recorded data we want to know.
- Press View Records, and the Records form appears showing the instants of each record, and the value of the signal at that instant.
In that form, the record corresponding to the cursor instant is presented in a synchronized way.
If you press the CSV button the following message will appear
which informs about two important characteristics of the CSV file that will be generated. The next figure shows the beginning of the (single) spreadsheet generated in the CSV file produced, and viewed in LibreOffice.
4.3 Exports
Pressing this button, the program will present the Export form, which will allow us to generate data files in formats suitable for processing in other applications.
The functionalities accessible through this form allow exporting the data of the signals being viewed, in the time range being viewed. The options for the generated file are:
Which data is exported:
- Unified data
- Sampled data
The format of the output file can be
- SQLite database type (binary)
- CSV (Comma Separated Value) file (text)
- With SQLite format, data processing can be done so
that
- all records can be sent to the output file, or
- sampling can be done with a Fixed period, whose interval is selectable.
The interest in using these functions derives from the convenience of having smaller data files in time ranges of particular interest. See further ahead the structure of these types of files.
5. Supported Data Formats
5.1 Datalogging data format of Simulators built with LdP
The files generated by ACMSL real-time simulators store information in an optimized way to reduce size and preserve temporal resolution. Their most significant characteristics are:
- they are usually SQLite database files,
- each signal has its own table,
- the instants are stored with high temporal resolution,
- there is not necessarily a uniform periodic sampling,
- and the records are oriented towards value changes rather than fixed sampling.
This format is particularly suitable for studying events, maneuvers and transients.
5.2 Unified format
The data from an LdP datalogger file can be used by external applications, since it is a format that implements the concepts of "Relational Databases", explorable and modifiable with standard SQL statements. To facilitate its use with common tools, such as spreadsheets, this application also allows generating files with a relational database table structure, but one that has only one date field, and one additional field for each signal to be exported.
Additionally, it may be interesting to have a unified structure where the instants corresponding to each record correspond to periodic sampling. This mode implies loss of temporal resolution (i.e., we will lose some records), but can greatly facilitate data processing for certain functions.
The application also accepts unified files, in which:
- there is a single data table,
- the temporal column is common,
- and each signal appears as a column.
This format is useful when the set of variables has already been previously consolidated for joint analysis.
5.3 CSV Format
This format is the common one for exchanging data between spreadsheets and also between dissimilar databases.
The content of CSV files acceptable for presentation in this program has a logical structure identical to the Unified Format, i.e.:
- A single table
- This table must have:
- a column that must be called "Date", with type Double, and with a range of values compatible with a date (Excel, or LdP)
- one column per signal, with type Double for analog signals, or Integer (with values only "1" or "0") for digital ones.
By accepting this type of format, this application can be used as a presentation and analysis tool for calculations performed in other tools
6. Main visualization concepts
6.1 Visualization Profile
The concept of "Visualization Profile" keeps in a file: which signals are presented, the details of their presentation, and how they are distributed on screen, and therefore allows managing various ways of visualizing the data of a given time series file. It allows:
- grouping certain signals according to criteria of:
- subsystems or functional blocks,
- being able to visually compare their values,
- studying their precedences,
- reusing an already prepared work structure.
6.2 Recorder
A Recorder is a graphic area of the application form where one or more signals are drawn. Each Recorder can contain:
- a single signal
- several analog signals
- several digital signals
Each Recorder has a Scale for the ordinate axis (Y). And it also draws a set of horizontal lines, in a diluted color so they do not cover the
6.3. Recorder Panel
When there are many signals to observe, the goal of a Profile is not to show them all, but to show what is important clearly. It is advisable to group signals following functional criteria, for example:
- input and response,
- setpoint and controlled variable,
- command and feedback,
- state and condition,
- cause and effect.
Practical recommendations:
do not mix too many signals without direct relation,
separate different functional blocks into different Recorders,
reserve specific Recorders for digital signals when they help explain events,
and group in the same Recorder only signals whose visual comparison adds value.
6.4. Visualization Profiles similar to those used in LdP Simulators
The simulators running in the LdP framework allow the visualization, in real time, of the evolutions of chosen internal signals. This presentation is done with a methodology similar to that of the Recorders in this application, and they are defined in the simulator configuration file, which allows the user to observe the evolution of the Profiles defined for the simulators, which allows maintaining the same visual organization used in Simulator Practical Classes. It also allows creating custom Profiles, more adapted to a specific analysis need.
6.4.1 Profiles similar to those used in Simulators
When you want to open a .sqlite file generated by a
simulator, we can import from its configuration file the
Panels used for real-time signal visualization in the
Simulator with which those files were generated.
Subsequently we can modify some of their characteristics (vertical ordering of Recorders, colors assigned to signals, scales, etc.), and adapt them to particular observations.
6.4.2 Creating a new Visualization Profile
This situation arises when we want to use files not generated in LdP simulators, for example, when we are using a CSV data file from calculations performed in an external application. If we do not have an available Profile that matches the data source (CSV file), we have to create a new one. To do so, the procedure is:
Open the data file.
- After this phase, the application has the set of signals (columns) referenced in that file. Therefore, we can now:
Create a new Profile.
Add Recorders.
Assign signals to each Recorder.
Adjust the representation of each signal.
Save the Profile for reuse.
The next image shows the creation of a new Recorder within the Profile construction process.
6.4.3 Same file, different views (Visualization Profile)
One of the strengths of the program is that the same data file can be studied with several different views, each oriented to a different question. This allows, for example:
- a general view of the system,
- another focused on control,
- another on digital states,
- and another on diagnosis or fine detail.
6.4.4 Visualizing the selected Profile
Once the Profile is chosen, the action of visualizing loads the signals and presents the temporal evolution according to the defined organization.
The next image shows the same data file used in previous images, but with another Visualization Profile (Signals of the hydraulic system of a wind turbine)
6.4.5 When to reuse a Profile and when to create a new one
Reusing an existing Profile is usually the best option when:
- you are working with an already known simulator,
- you want to maintain consistency with a practice or tutorial,
- or you need to start analyzing quickly without investing time in configuring the view.
Creating a new Profile is usually preferable when:
- the analysis objective is very specific,
- you want to compare signals that do not appear together in the available Profiles,
- or you want to prepare a view designed for diagnosis, control or validation of a specific maneuver.
7. Basic usage procedure
A typical use can follow this order:
- Open the data file.
- Identify the input format.
- Select an existing Profile or create a new one.
- Organize signals into Recorders.
- Adjust the representation mode of each signal.
- Visualize the temporal evolution.
- Analyze patterns, changes, delays and relationships.
In practice, this flow is rarely done only once. The usual approach is to iterate:
- visualize a first version,
- discover which signals are missing or superfluous,
- adjust the Profile,
- visualize again,
- and repeat until achieving a view that responds well to the technical question to be resolved.
7.1 Time and reference cursor. Frozen cursor
During visualization, the application maintains a time cursor associated with the horizontal position of the mouse over the Recorders. That cursor allows:
- reading the exact instant in the upper side panel,
- seeing the value of each signal at that instant,
- visually comparing several responses on the same temporal reference,
- and studying event sequences with considerable precision.
Additionally, a temporal reference can be set to
measure differences relative to the current cursor. This is especially
useful when you want to know how long a variable takes to respond after
a command or state change. In the upper left part the data corresponding
to the cursor instant are presented.
"Cursor" : position of the red vertical line, in day/month/year hour:minutes:seconds format (and milliseconds depending on the zoom level)
"Date LdP" : position of the red vertical line, in LdP format (field "Date" in the records)
"Ref": reference date (if it has been defined using
Ctrl + left mouse button). Yellow line.
"Delta t": distance in seconds between the red vertical line and the yellow one.
Sometimes it is useful to "freeze" the cursor to be able to use the mouse for other functions. We call this the "Frozen cursor". It is indicated by the background of the "Cursor" text (see next figure)
To enter or exit this mode, press the 'f' (or 'F') key. You must have previously pressed the right mouse button at least once.
7.2 Zoom and time scrolling
The visualization is not designed as a static image, but as an exploration tool. The most useful temporal operations are:
- scrolling the visible time window,
- zooming into a specific area,
- returning to a more general view,
- and working on the same Profile at different temporal scales.
In practice, a very effective way to analyze a maneuver is:
- first locate the temporal area where the main event occurs,
- then zoom into that interval,
- read with the cursor the order of changes,
- and zoom out again to check the general context.
10. Signal representation modes
In general:
- analog signals are shown as traces or curves,
- digital signals are shown as discrete states or steps,
- and several signals can share a Recorder if the comparison is useful.
For each signal, in each Recorder where it is used, aspects such as these can be adjusted:
- color,
- line width,
- use of markers,
- and the way points are joined.
The choice is not only aesthetic. A good representation:
- better separates what is important from what is secondary,
- avoids false visual continuities,
- and helps to quickly recognize transitions, permanences and regime
changes.
The drawing detail window allows changing these parameters to improve readability:
10.1 Digital signals in the same Recorder
When several digital signals share a Recorder, the application represents them so that their states are not completely superimposed. This facilitates:
- distinguishing state changes,
- comparing durations,
- and discovering precedence relationships between events.
With digital signals, the priority is usually to clearly identify:
- when the state changes,
- how long each state lasts,
- and which other signals change before, during or after.
That is why a clean, well-separated representation is usually preferable to a too compact view.
10.2 Interpolation and visual continuity
In analog signals, the connection between points helps to read trends, but it does not always mean that there is real information throughout the interval. For this reason, when there are large temporal gaps between samples, the application can avoid misleading interpolations and preserve a more faithful reading of the available data. It is worth keeping this in mind especially when:
- comparing signals with different recording densities,
- studying very fast maneuvers,
- or working with files where the recording depends on value change.
11. Vertical scale in each Recorder
When there is more than one signal in a Recorder, or we have only one but it has areas with very different absolute values, and other areas with small variations that are of interest, it is necessary to adjust the scale and offset value to the interval being explored, so that these small variations can be easily appreciated, throughout the time interval of interest.
This application is designed so that it is easy to focus on time intervals where we suspect changes that may reveal interesting information, and therefore allows very fast zooms and temporal scrolling. In that situation, to avoid having to manually adjust the scale values for each change in the time interval of interest, the scale and offset of each Recorder can be set to *Auto-scaling mode. Each Recorder is designed to allow a quick and useful reading of the signals it contains.
11.1 Auto-scaling
This functionality, when activated in the Recorder, calculates in real time the most appropriate maximum and minimum values for the best vertical resolution of the signal values in the Recorder. It also calculates the horizontal reference lines whose values are rounded to the values closest to the evolution of the signals. The following images show this functionality.
Time interval of 15 seconds per unit.
Time interval of 0.5 seconds per unit
11.2 Scale type
Depending on the case, the user can work with:
- linear scale,
- or logarithmic scale.
The linear scale is usually the natural option when comparing absolute differences. The logarithmic scale is useful when a signal has a very wide range and resolution independent of the value is required. Also when several signals with very different magnitudes are presented in the same recorder.
11.3 Y axis format
The Y axis labelling can be adapted to make reading clearer. Among the available formats there are variants such as:
- AUTO : generates text adjusting the format automatically so that
the Y axis labels differ in the last digit.
- Example
- Example
[decimals]K[decimals],K[decimals]M[decimals],M
11.4 Signal value shown in the side panel
The Recorder side panel shows the signal value at the instant indicated by the cursor, with a selectable format from those above, which can be different from the one used to label the Y axis.
This point reading is especially useful for:
- checking values at a specific instant,
- contrasting differences between several signals,
- and verifying whether a small visual change is really significant.
12. Statistics of visualized signals and access to their values (Statistics form)
Sometimes it is useful to have the data of the signals being visualized, as an alternative to accessing the original data and performing an extraction using SQL statements or similar.
The application has a Statistics form, accessible by pressing the Data Access button, where grouped data about the signals of the Profile being used are presented, including:
- minimum and maximum dates within the visible section,
- minimum and maximum values, - signal type,
- and number of records considered.
In this form a specific signal can be selected
and open the Records form for that signal, by pressing the View Records button.
12.1 Data of the selected signal (Records Form)
The Records form shows the
Date - Value pairs of the selected signal within the time
interval being visualized. This view is useful when you want to:
- check exact values without visual interpolation,
- review changes in a digital signal record by record,
- export the visible section of a signal to analyze it outside the program.
While this form remains open, moving the cursor in the main window highlights the row corresponding to the start of the time interval where that cursor is located. This makes it easier to relate the graph to the specific record in the table.
12.2 Exporting data of the selected signal in CSV format
The Records form includes a CSV
button that allows exporting the data shown to a .csv file.
In this export:
- a
Datecolumn and aValuecolumn are written, - the date is saved in numeric Excel format,
- the column separator is
;, - and the decimal separator is..
This export is designed to quickly extract the visible section of a single signal without needing to export the entire Profile.
13. Exports
The Exports button presents the Export form which allows exporting the data being viewed at that moment. The purpose of these exports is to pass the data from the file being visualized to formats common with other applications. It allows choosing:
- the output format, i.e., the file type,
- what data is exported
The selectable file types are:
- Unified SQLite
- CSV
Regarding data, there are two possibilities:
- all original data, but in a single table containing all the dates from all tables,
- one field for each signal, with values interpolated for those instants that do not exist in their original table
In both cases, the export is limited to the time window being visualized at that moment.
13.1 Unified SQLite
Exporting to Unified SQLite generates a SQLite file,
with a single Data table, where:
- there is a single column with the date:
Date, - each visible signal of the Profile is exported as a column,
- and each row represents an instant of the output temporal grid.
In the export form, for this output you can choose between:
- All records
- Fixed period
If All records is chosen, the behavior preserves all unified instants corresponding to the visible signals. If Fixed period is chosen, the application builds a regular temporal grid from the first visible instant and calculates values by retaining the last known value. This mode is useful for:
- reducing the number of records,
- obtaining a more convenient basis for subsequent calculations,
- preparing data for external numerical processing.
13.3 Profile CSV Export
Exporting to CSV generates a file readable by any calculation application, containing a single spreadsheet, whose structure is:
- a first column for Date,
- one additional column for each visible signal. The format is "Double" for analog signals and numeric (with values only "1" or "0") for digital signals.
If Fixed period is chosen, the output is resampled with the period indicated in the form.
Before exporting to CSV, the application warns about the format used:
- the column separator is
;, - and the decimal separator is
..
15. Analysis best practices
To get the most out of the program it is advisable to:
- always work with a common temporal reference,
- start with a general view and then move to the detail,
- not assume causality without checking the temporal sequence,
- use the Profile as a working tool, not just as a presentation,
- refine the view as the system is better understood.
It is also highly recommended to:
- keep a general Profile for quick orientation,
- create specific Profiles for recurring problems,
- document Recorders with clear names when a Profile is going to be reused,
- avoid simultaneous changes to too many options if you later want to understand what really improves the reading.
15. Summary
LdP_Datalogger_Viewer is designed for:
- exploring long time series,
- loading data from SQLite and CSV files,
- organizing data visualization forms (signals) adjusted to specific objectives Visualization Profiles,
- these Profiles:
- group signals in Recorders to facilitate their comparison.
- allow presenting the data in different ways (with/without markers, colors)
- facilitate the visual interpretation of many signals.
To understand how a system evolves from its signals, this application is oriented precisely to making evident what the data alone do not show clearly. The most effective way to take advantage of it is to combine:
- a careful selection of signals,
- a clear organization in Recorders,
- Profiles adapted to the study objective,
- an orderly temporal reading of events, states and responses.
Appendix
1. Data Formats
1.1 Files generated by Simulators in the LdP framework
The simulators generate log files with the evolution of the internal and external signals used in the simulation sessions. These log files are SQLite database files, which contain one table per signal. The table name is the signal name, and it has two fields:
Name of the date field: Date, REAL format. Contains the date with resolution of tenths of a millisecond.
Name of the signal Value field
For analog signals: ValueA, REAL type
For digital signals: ValueD, INTEGER type
This design is optimized to maximize temporal resolution, since it adds a record only each time there is a change in the corresponding signal. In contrast, sampling at a constant frequency adds one record per clock tick, whether or not the signal value has changed.
These files can be read and used with many freely available applications (SQLiteStudio, DB Browser for SQLite, etc.) since these tools allow using SQL language.
The next figure shows the (partial) structure of one of these log files.
The next figure shows the initial content of one of these tables.
Generally, these SQLite file managers have functions that allow exporting the content of a table in CSV format. See next figure.
1.2 Unified data files generated by LdP_Datalogger_Viewer
The LdP data format is the initial format used by this application. However, it is a format not easy to use in calculation applications, where it is common to have data grouped by date: i.e., each record contains a date and all the signal values for that date.
This application generates data in this format, which we call unified format. See next figure.
and in the next one a detail of the content of the generated table (Data)
There is a variant of this approach that consists of resampling the data at a periodic frequency: i.e., the "Date" field is not taken from the original LdP files, but is generated uniformly from the start of the file, with a fixed distance between them (sampling period)
1.2 'Time-unified data' files generated by LdP_Datalogger_Viewer
This format is designed to facilitate processing by applications that require all signal data to have a common date for each record, across all signals. The LdP format has one table per signal, and its "Date" field corresponds to a change in that signal. This format is very versatile for data acquisition, but for its exploitation and study it is more convenient to have this data in the form of a single SQL table with a single date column (field), and as many columns (fields) as there are recorded signals.
There are two procedures for creating this type of SQL tables:
- With one record for each instant (field "Date") from each and every
one of the data tables, and with the values of each field calculated
from the values in their corresponding tables: these values have to be
interpolated.
- Having records corresponding to a periodic sampling. The output format of these files is also SQLite.
1.3 'Generated CSV' file format by LdP_Datalogger_Viewer
The purpose of generating this type of files is to facilitate their use in subsequent calculations in a spreadsheet. The main advantage over CSVs generated directly with the export of the original tables is that it contains a single table that has:
- a single date field, "Date", in spreadsheet format.
- a numeric field for each signal in the Profile being visualized. The field name corresponds to that of the corresponding signal (table).
The "Date" field contains one record (row) for each of the records of each of the tables in the original SQLite files. The corresponding numeric values of the signals are interpolated from the original values in the SQLite files, for all those instants at which there is no record for the instant in "Date". The next figure shows an example of a CSV of this type:
1.4 CSV format with periodic sampling
Some calculation procedures require that signal samples have been taken with a periodic cadence. The program allows exporting the data from the set of signals being visualized in the profile, with periodic sampling. See an example in the next figure: note that the time distance between samples is 0.2 seconds, uniform.
2. About date values
The data recorded on the LdP platform (Simulator sessions) record the date on which a change in a signal occurs, with a temporal resolution of 0.1 milliseconds.
The date format in the most common spreadsheets has a millisecond resolution.
The formula for converting from LdP format to spreadsheet format is:
Example: For
The corresponding value is
which displayed as a date, with format
%yyyy%-%mm%-%dd% %hh%:%mmm%:%ss,000% gives us
"2025-11-21 09:45:10,789"
3. Visualization Profile file format (JSON)
The following listing corresponds to the Visualization Profile used to obtain the images in this document.
{ "panel_name": "Cutin + Cutout + Production", "recorders": [ { "height": "120", "maxY": "55.0000000000", "minY": "-5.0000000000", "signals": [ { "modo": "I", "lineWidth": "1", "color": "16711680", "name": "Controller.Control.PitchOut", "type": "Analog" }, { "modo": "I", "lineWidth": "1", "color": "32768", "name": "Nacelle.DriveTrain.PitchNacelleOut", "type": "Analog" } ], "name": "Pitch values", "autoScale": "0" }, { "height": "120", "maxY": "1700000.0000000000", "minY": "-10.0000000000", "signals": [ { "modo": "I", "lineWidth": "1", "color": "8421504", "name": "Controller.Control.OfficialActivePowervsWindOut", "type": "Analog" }, { "modo": "I", "lineWidth": "1", "color": "32768", "name": "Nacelle.DFIGB2B.GridActivePower", "type": "Analog" }, { "modo": "I", "lineWidth": "1", "color": "0", "name": "Nacelle.DriveTrain.ActualWindPowerOut", "type": "Analog" } ], "name": "Power", "autoScale": "0" }, { "height": "60", "maxY": "1.0000000000", "minY": "0.0000000000", "signals": [ { "modo": "I", "lineWidth": "1", "color": "0", "name": "Nacelle.Braking.BrakeReleasedOut", "type": "Digital" } ], "name": "Brakes", "autoScale": "1" }, { "height": "150", "maxY": "2000.0000000000", "minY": "0.0000000000", "signals": [ { "modo": "I", "lineWidth": "1", "color": "0", "name": "Nacelle.DriveTrain.GeneratorRPMsOut", "type": "Analog" } ], "name": "GenRPMs", "autoScale": "0" }, { "height": "120", "maxY": "30.0000000000", "minY": "0.0000000000", "signals": [ { "modo": "I", "lineWidth": "1", "color": "0", "name": "SynopticWindNacelle.WindSpeedOut", "type": "Analog" }, { "modo": "I", "lineWidth": "1", "color": "0", "name": "Controller.Control.EffectiveWind", "type": "Analog" } ], "name": "WindSpeed", "autoScale": "0" } ] }