FB_NoSQLQueryBuilder_TimeSeriesDB

FB_NoSQLQueryBuilder_TimeSeriesDB 1:

Function block for defining a query for a TimeSeries database. The query is sent with FB_NoSQLQueryEvt. It is not necessary to call the Build method. Data structures can be described with attributes to affect individual settings.

FB_NoSQLQueryBuilder_TimeSeriesDB 2: Inputs

Name

Type

Description

pQueryOptions

POINTER TO BYTE

Specifies the address for the query options.

cbQueryOptions

UDINT

Length of the query options.

Syntax

Definition:

FUNCTION BLOCK FB_NoSQLQueryBuilder_TimeSeriesDB
VAR_INPUT
    pQueryOptions : POINTER TO BYTE;
    cbQueryOptions : UDINT;
END_VAR
VAR_OUTPUT
END_VAR

FB_NoSQLQueryBuilder_TimeSeriesDB 3: Methods

Name

Definition location

Description

Build

Local

[optional] This method generates a query for the function block FB_NoSQLQueryEvt from the set parameters.

Example:

VAR
    fbNoSQLQueryBuilder_TimeSeriesDB : FB_NoSQLQueryBuilder_TimeSeriesDB;
    QueryOption_TSDB_Insert : T_QueryOptionTimeSeriesDB_Insert;
    fbNoSqlQueryEvt : FB_NoSQLQueryEvt(sNetID := '', tTimeout := T#15S);
    MyStructArray: ARRAY[1..1000] OF MyStruct;
END_VAR
CASE nState OF 
    1: // init
        fbNoSQLQueryBuilder_TimeSeriesDB.pQueryOptions := ADR(QueryOption_TSDB_Insert);
        fbNoSQLQueryBuilder_TimeSeriesDB.cbQueryOptions := SIZEOF(QueryOption_TSDB_Insert);

        QueryOption_TSDB_Insert.sTableName := 'MeasurementName';
        QueryOption_TSDB_Insert.sDataType := 'MyStruct';
        QueryOption_TSDB_Insert.pSymbol := ADR(MyStructArray);
        QueryOption_TSDB_Insert.cbSymbol := SIZEOF(MyStructArray);
        QueryOption_TSDB_Insert.nDataCount := 1000; // ArrayLength
        QueryOption_TSDB_Insert.nStartTimestamp := F_GetSystemTime(); // get current twincat time
        QueryOption_TSDB_Insert.nCycleTime := 1000; // equivalent to 1 ms

    2: // write values
        IF fbNoSqlQueryEvt.Execute(dbid, fbNoSQLQueryBuilder_TimeSeriesDB) THEN
            IF fbNoSqlQueryEvt.bError THEN
                // do some error handling here
            ELSE
                // success
            END_IF
        END_IF
END_CASE

Requirements

Development environment

Target platform

PLC libraries to include

TwinCAT v3.1 Build 4022.20

PC or CX (x86)

Tc3_Database