Tools for importing historical data into VTScada
Go to file
2023-06-15 09:54:37 -06:00
.vscode Initial repo setup - toml configuration and basic python argument interpretation 2023-05-01 10:51:46 -06:00
input Adding ClearSCADA raw data functions. 2023-06-14 11:21:58 -06:00
main.py Some README documentation and code documentation 2023-06-15 09:54:37 -06:00
README.md Some README documentation and code documentation 2023-06-15 09:54:37 -06:00
setup.toml Adding ClearSCADA raw data functions. 2023-06-14 11:21:58 -06:00

VTScada-HistoricalTools

This is a set of tooling to perform useful operations of queryign and moving Historical data into ClearSCADA

Currently supports querying data from the following sources, and their requirements

  • VTScada - REST
  • ClearSCADA - Raw Historic Files
  • Wonderware / AVEVA Historian - InSQL {Coming Soon}

The primary function of this tooling is to query a set of tags for a specified date range, compress and process those values as required, and move it into a format which can be easily imported into VTScada.

Setup

TagMap file

The TagMap file is a CSV file of which tags to query on the existing system. They are queried with the following paramaters.

  • Interval - time in seconds to query the data point
  • Deadband - values within this deadband before scaling will be elimianted
  • Scale Factor - scaling factor to apply to existing data before compression
  • Precision - the final result value will be rounded to this many decimal places

For all values, values will either be working from a set of all data (for example, ClearSCADA), or querieid at the required interval (for example, VTScada REST). For the former, values within the interval will be deleted after compression.

For boolean values, they will be sampled at the interval specified and compressed by eliminating values which stay the same. To ensure the precision of transitions wanted is kept, a high precision such as 1 second sampling is recommended here

For integer/analog values, they will be averaged at the interval specified, and compressed by eliminating values within the deadband, then scaled, then rounded to the required precision. A lower precision of sampling is recommended here, perhaps 5 seconds for high-value points, and 30-60 seconds for low value points.

Setup TOML

This file contains configuration on how to connect to the required existing interfaces and locations of input and the output data.

Python

This system requires Python installed and run on the system which can target existing interfaces. Several libraries will need to be installed by pip.

VTScada REST

This is a method of moving VTScada data into VTScada data. Scenarios where this could be useful:

  • Moving tag data from Analog Status / Digital Status to the modern IO tags
  • Tag data sizes which have gotten out of hand
  • A site has been recommissioned with a new set of tags and data needs to be imported

ClearSCADA - Raw Historic Files

In places where targetting a live ClearSCADA system with SQL queries is challenging, ClearSCADA uses a file-based Historian and provides a utility which converts these HRD files into CSV data.

For each week of each data point, a separate CSV file of data is created.

Files are generally stored: C:\ProgramData\Schneider Electric\ClearSCADA\Database\HisFiles

Each directory contains a Historic XXXXXX directory where XXXXX is the Unique ID of the datapoint padded with a file WKYYYYYY where YYYYYY is the number of weeks since January 1, 1601 (yes, really).

These tools will conver the user start time and end time in a way that will only process the found and required HRD files at a time. This can greatly expand the amount of data in the system, it is strongly recommended to have a lot of free space left during queries.

Setup ClearSCADA Config

Key Point: In the tags list file, the Source Name field is the unique identifier for the tag name to query. In VTScada this can be something like temp\old_value1. In ClearSCADA, it will be the unique point ID, ex. 005152. The leading zeroes can be left out as the script will pad them in front of the integer to determine the correct path.