23 - 05 - 2024


Block DataSetStorage

License: Hobby, Industrial

The block gives us an easy way to store a large number of records in the memory of an unlimited number of input signals. To do this, we first need to construct the DataSet by describing each of the input signals separately with their name and data type. Every input signal is a column at DataSet.

The example below is with two sine wave signals with different frequency and amplitude that we subtract from each other, so we get three analog signals - two of the sine wave generators and one for their difference. Separately we have a digital signal with one checkbox.


To construct the DataSet we use property DataSet where we have to add all the input signals as DataSet columns. Then every column will appear as block's input. We can add many columns of type DateTime but only one of them can be set as Leading Date. This column is important for next blocks at the diagram, which will be used to show the DataSet as image, table or something else.

Parameters of the block:

  • DataSet - description of the DataSet columns;
  • StoreType - can be set with values: LastRecords, LastSeconds, LastMinutes, LastHours, LastDays, NoLimit. This parameter describes the amount of stored records at the memory. This parameter works together with parameter StoreLast. For example, if StoreType is LastSeconds and StoreLast is 60, this means the DataSet will store only the last 60 secs of recorded signals. All the records older than 60sec are deleted automaticaly. Be very careful with this settings. If you set a lot of time to be recorded, then AltonaLab software can consume a lot of memory.
  • StoreLast - number of records or period of time to be stored at the DataSet.
Block's inputs:
  • InDataSet - Records from input DataSet can be added to block's DataSet. Only the mached columns by equal names will be copied;
  • Reload - when the input becomes to high level, the records from the input DataSet InDataSet will be copied to block's DataSet;
  • Append - this input can be connected or not. If the input is connected, when it becomes to high level, a new record will be added to block's DataSet with values of block's dataset inputs. If the input is not connected, on every calculation of the diagram a new record will be added. The amount of calculations of the diagram depends of settings of the block Process and its parameter DiscreteTime, so at this regime hundreds records can be added every second.
  • Clear - deletes all the records at block's DataSet;
Block's outputs:
  • OutDataSet - this is the block's DataSet. All the new records are added here. So if we want to draw them or something else, we have to connect this output to the next block at the diagram;
  • OnReady - on every added record to block's DataSet, this output becomes at high level;
  • NumRecords - the integer value of this output shows the number of records at block's DataSet;


Example: Please load DataSetRealTime.nsm from Demo diagrams;


Block DataSetNavigation

License: Hobby, Industrial

When we want to explore DataSet at the Record level and move forward/backward, we use DateSetNavigation. The block does not have a DataSet within itself, so we need to give it a DataSet at the input of the block: InDataSet. With property DataSet we have to set which columns of the input DataSet we want to explore. It is important the added colums at property DataSet to be with the same name and data type as in the input InDataSet. Every added column will appears as block's output. So the main idea of the block is - using inputs of the block GoFirst, GoLast, GoNext, GoPrevious, GoTo - we can move over the records of the input DataSet, the values of the current record will appear at block's outputs which reffer to DataSet columns.

Block's parameters:

  • DataSet - describes columns of the input InDataSet;
  • MoveType - can be set with values: By records, By seconds, By minutes, By hours. This parameter works together with parameter MoveBy. For example, if MoveType is By seconds and MoveBy is 10, if the block's input GoNext becomes to high level, the current record will be moved forward until a new record is found with a value of the leading DateTime column with 10 seconds greater than that of the current record.

  • MoveBy - the amount of records or time used to move over the DataSet;
  • OnNewDataSetGoTo - can be set with values: Top, Bottom, Nothing. Determines which record to be selected at the start of the diagram or if a new DataSet appears at InDataSet input of the block.
Block's inputs:
  • InDataSet - the input DataSet which will be explored from the block;

  • GoFirst - when the input becomes to high level, the current record of the block will be set to first record of the InDataSet;
  • GoLast - sets the current record of the block with last record of the InDataSet;
  • GoNext - move the current record forward with amount of records/time described with parameters MoveType, MoveBy;
  • GoPrevious - move the current record backward with amount of records/time described with parameters MoveType, MoveBy;
  • GoTo - if the input becomes to high level, the current record is set to number of record gotten from the input GoToRecord;
  • GoToRecord - works together with input GoTo;


Block's outputs:
  • OnReady - becomes to high level for short time when a movement of current record appears;
  • CurrentRecord - shows the current record number;
  • ValidRecord - if commands GoFirst, GoLast, GoNext, GoPrevious, GoTo are successful, this output becomes to high level. If the current record is last and we activate a GoNext command, then ValidRecord will become to Low level;