These functions provide an access to the data interfaces of EBSILON®Professional. Generally, they can be used within the EBSILON®Professional Performance Optimization Systems (EPOS) for a data exchange with the process or with the databases (see Excel Functions for the Standard Excel Interface)
The User-DLL functions can be used for input and output.
There are different functions for input and output for the User-Excel and the ASCII-interface. The behaviour of the functions corresponds to the graphical user interface, but with the following differences
Important: "readInputFile" and "readUserExcel" behave differently with respect to measured values. When you use "readInputFile", your file must contain a complete set of measured values (component 46). Missing values are set as blanks in the file. When you use "readUserExcel", only those values are replaced, which are available in the file. Values missing in the file remain unchanged.
Name |
Purpose |
Argument |
Return value |
Example |
callEbsScriptServer |
Call of a DLL defined by the user in the scope of the ATL interface, normally to open a dialog for entering the parameters. |
1: STRING: 2: any type: 3: any type: 4: Procedure |
BOOLEAN: true: o.k. |
callEbsScriptServer( "CoalSelection.Input", strCoalNameField, r2, procInit ); |
callUserDll |
Simple call of the User DLL without additional arguments |
1: INTEGER: Program ID within the User DLL |
INTEGER, |
callUserDll(2); |
callUserDllArgs |
Call of the user DLL with three additional arguments |
1:INTEGER: Program ID within the User DLL 2:INTEGER 3:REAL 4:STRING |
INTEGER, |
callUserDll(1, 3, 7.5, "d:\\temp\\out.txt"); |
clearSRxInfo | Delete the complete SRX configuration from the model | - | - | clearSRxInfo(); |
eposReadAverage FromArchive |
like "ReadAverageFrom Archive", but using dynamic arrays |
1: REAL: Start time for the averaging 2: REAL: End time for the averaging 3: array of PointFilter: 4: BOOLEAN: see "ReadAverageFromArchive" |
INTEGER: |
|
eposReadAverage FromArchiveForOneId |
like "ReadAverageFrom ArchiveForOneId", but using dynamic arrays
|
1: INTEGER: 2: REAL: Start time for the averaging 3: REAL: End time for the averaging 4: array of PointFilter: 5: BOOLEAN: see "ReadAverageFromArchive" |
INTEGER:
|
|
eposReadAverage Trend |
like "ReadAverageTrend", but using dynamic arrays
|
1: STRING 2: REAL: Start time for the whole trend 3: REAL: End time for the whole trend 4: REAL: Interval for the averaging (time step) 5: array of PointFilter: 6: array of ValueAtTime |
INTEGER: |
|
eposReadTrend FromArchive |
like "ReadTrendFrom Archive", but using dynamic arrays
|
1: STRING 2: REAL: Start time for the whole trend 3: REAL: End time for the whole trend 4: array of ValueAtTime |
INTEGER: |
|
getEposArchiveId |
Retrieves the EposArchive Id that is configured for the considered data point |
1:EBSCLASS: Ebsilon object under consideration |
INTEGER: EposArchive Id |
id:=getEposArchiveId (TestDP_S1.MEASM); |
getSRxInfo |
Retrieves the configuration data that are stored in Ebsilon for the specified point (SRx-Tag, SRx-Archive, read and write flag) |
1:EBSCLASS: Ebsilon object (data point) under consideration 2:BOOLEAN: 3:BOOLEAN: 4:STRING: SRx tag for the data point 5:strArchives: SRx archives |
BOOLEAN: |
ePoint:=Test_DP009.RESULT; bOk:=getSRxInfo (ePoint, bRead, bWrite, strTag, strArchives); |
playSound |
Playing a .wave file e.g. for announcing the instructions |
1:STRING: 2:BOOLEAN: 3:BOOLEAN: 4:BOOLEAN: |
BOOLEAN: |
playSound ("C:\\Temp\\Hallo.wav"); |
readAverageFrom Archive |
With this function, a data set determined over a period of time can be loaded from the EposArchive. While averaging, it is also possible to use filters. For each filter, the name of the point, the lower limit, the upper limit, the maximum relative deviation from the previous point of time and a filter ID are to be specified. Through the Filter-ID the AND- or ORB-connections can be realized: all filters with the same ID are connected with OR, filters with different ID are connected with AND. In the example, an hourly mean value is modelled for the generator power BAA20CE003A.MEASM and the calculation status @model.iStatus. Only those data sets are taken for the averaging, in which the calculation status is <= 6 and the generator power is higher than 90 MW and the generator power has not changed by more than 3% in the last 5 minutes. |
1: REAL: Start time for the averaging 2: REAL: End time of the averaging 3: INTEGER: Number of filter criteria 4: STRING: Field with the names of the filter values 5: REAL: Field with the permissible lower limits 6: REAL: Field with the permissible upper limits 7: REAL: Field with the maximum permissible deviations from the previous data set 8: INTEGER: Field with the Filter-IDs (see left) 9: BOOLEAN: |
INTEGER: Number of the data sets taken for averaging |
var rStartTime:real; rStopTime:real; nFilterSize:integer; arstrFilterPointNameArray:array[0..3] of string; arrFilterLowLimitArray:array[0..3] of real; arrFilterHighLimitArray:array[0..3] of real; arrFilterDeviationArray:array[0..3] of real; arnFilterIdArray:array[0..3] of integer; nRet:integer; begin rStartTime:=convertTime ("25.04.2003 08:00"); rStopTime:=convertTime ("25.04.2003 09:00"); nFilterSize:=2; arstrFilterPointNameArray[0]:= "@model.iStatus"; arrFilterLowLimitArray[0]:=0; arrFilterHighLimitArray[0]:=6; arrFilterDeviationArray[0]:=-1; arnFilterIdArray[0]:=1; arstrFilterPointNameArray[1]:= "BAA20CE003A.MEASM"; arrFilterLowLimitArray[1]:=90000; arrFilterHighLimitArray[1]:=-1; arrFilterDeviationArray[1]:=0.03; arnFilterIdArray[1]:=2; nRet:=readAverageFromArchive (rStartTime, rStopTime, nFilterSize, arstrFilterPointNameArray, arrFilterLowLimitArray, arrFilterHighLimitArray, arrFilterDeviationArray, arnFilterIdArray ); print ("readAverageFromArchive returns ",nRet,"\n"); print ("BAA20CE003A.MEASM = ", BAA20CE003A.MEASM, " @model.iStatus = ",@model.iStatus,"\n"); end. |
readAverageFrom ArchiveForOneId
|
Like readAverageFromArchive, while archiving several time values, only the data from one time value are read. |
1: INTEGER 2-10 correspond to the arguments 1-9 of readAverageFromArchive |
INTEGER: Number of data sets take for the averaging |
nRet:=readAverageFromArchiveForOneId (9999, rStartTime, rStopTime, nFilterSize, arstrFilterPointNameArray, arrFilterLowLimitArray, arrFilterHighLimitArray, arrFilterDeviationArray, arnFilterIdArray ); |
readAverageTrend |
This function retrieves the filtered and time-determined values determined within specified time period for a data point. The interval for the averaging must be specified. The filter criteria are specified as for the function readAverageFromArchive. While averaging, points not matching the criteria are ignored. The time stamp (respectively the mean of the interval) and the values are entered in arrays, which must be created before in EbsScript. Example: determination of the hourly mean values of the measurement point PAB12CT001 on 15.11.2003 between 8:00 and 16:00 o'clock, whereby only those values are to be included in the averaging, for which the calculation was successful (@model.iStatus < 7) and the plant was in operation (BAA20CE003A > 90000) and stationary (BAA20CE003A not more than 3% variation to the previous data set) . |
1: STRING 2: REAL: Start time for the whole trend 3: REAL: End time for the whole trend 4: REAL: Interval for the averaging (time step) 5: INTEGER: Number of filter criteria 6: STRING: Field with the names of filter quantities 7: REAL: Field with the permissible lower limits 8: REAL: Field with the permissible upper limits 9: REAL: Field with the maximum permissible deviations to the previous data set. 10: INTEGER: Field with the Filter IDs (see above) 11: INTEGER: Size of the fields provided for the results 12: REAL (Result): Field with the time for the trend points 13: REAL (Result): Field with the values for the results |
INTEGER: Number of trend points found. When the number exceeds the size of the result array, the remaining points are discarded. |
var |
readDatasetFromSRx |
Loads a complete dataset from the SRx data server for a specified time into the model |
1: REAL : time stamp 2: STRING: SRxArchive 3: STRING: SRxHost 4: STRING: SRxPort |
BOOLEAN: |
rTime:=convertTime ("26.01.2006 10:15:00"); |
readFromExcelFile |
This function enables the direct reading of the specified cells from an Excel file. |
1: STRING: Path of the Excel file 2: INTEGER: Number of the sheet of the Excel file to be read 3: STRING: Range of the Excel file to be read 4: STRING: Field for the read data 5: INTEGER: Size of the field for the read data |
BOOLEAN: |
bOk:=readFromExcelFile( strFullExcelPath, 1, "A4:J26", arstrResults, iSize); |
readFromExcelFileNew |
This function enables the direct reading of the specified cells from an Excel file using dynamic arrays.
|
1: STRING: Path of the Excel file 2: INTEGER: Number of the sheet of the Excel file to be read 3: STRING: Range of the Excel file to be read 4: STRING: dyn. Field for the read data 5: INTEGER: Size of the field for the read data |
BOOLEAN: |
var |
readFromExcelFileVariant |
This function enables the direct reading of the specified cells from an Excel file using dynamic arrays, like readFromExcelFileNew , but the data of the cells are handed over as VARIANT type (i.e. the information of the type (Integer, Real, Text, blank) is preserved; to Release 10 everything was read as text
|
|
|
|
readFromExcelFileVariant2 |
This function enables the direct reading of the specified cells from an Excel file using dynamic arrays, like readFromExcelFileVariant, , but the data are handed over as “array of array of VARIANT”.
|
|
|
|
readInpFile |
Reads a file with measured values. This can be a text file or an Excel file. In case of an Excel file, the formatting instructions are necessary in the first row. |
1: STRING: Path name of the input file 2: BOOLEAN: If no name is entered, a dialog box appears for selecting a file. |
BOOLEAN: |
readInpFile ("D:\\temp\\Block750.inp”); |
readKeyFromSRx |
enables a direct access to the data saved in SRx, without having to create and configuring the corresponding objects in the EBSILON-model. |
1: STRING: SRxKeyName 2: REAL: Time 3: var real: Value 4: STRING: Unit 5: STRING: SRxArchive (Standard = "") 6: STRING: SRxHost (Standard = "") 7: STRING: SRxPort (Standard = "") |
BOOLEAN: |
readKeyFromSRx("TestKey", 123, returnvalue, "-", "", "", "" ); |
readLineFromFile |
This EbsScript function reads a row from a text file. The function is implemented in such a way that upon every read access, the file is reopened, the row is searched and the file is then closed again. In the example, the first row of the file test.txt is read and displayed. |
1: STRING: Path name of the file to be read. 2: STRING(Result): read text line 3: INTEGER: Number of the line to be read 4: encoding:textEncodingEnum = textEncodingASCII: How to encode the characters (ASCII, UTF8, UTF16 (LE)) |
BOOLEAN: |
var |
readLinesFromFile | This EbsScript function reads all row from a text file. |
1: STRING: Path name of the file to be read. 2: ARRAR OF STRING(Result): read text lines 3: INTEGER: Number of the first line to be read 4: INTEGER: Number of the last line to be read (-1: until the end) 5: encoding:textEncodingEnum = textEncodingASCII: How to encode the characters (ASCII, UTF8, UTF16 (LE)) |
BOOLEAN: |
var s:string; i:integer; lines:array of String; begin println (readLinesFromFile("Log.txt", lines, 1, -1)); for i:=0 to length(lines)-1 do begin s := printtostring (lines[i]); println(s); end; end. |
readPointFromSRx |
Retrieves the value of a single data point for a specified time stamp from SRx. |
1: EBSCLASS: object to be read 2: REAL: time stamp 3: STRING: SRxArchive 4: STRING: SRxHost 5: STRING: SRxPort |
REAL: |
rTime:=convertTime ("26.01.2006 11:15:00"); |
readTrendFrom Archive |
This function allows to read a trend for a data point from EposArchive. Contrary to readAverageTrend, there is no averaging or filtering.
|
1: STRING 2: REAL: start time for the total trend 3: REAL: end time for the total trend 4: INTEGER: size of the supplied arrays for the results 5: REAL (result): array with the times for the trend points 6: REAL (result): array with the values for the trend points |
INTEGER: number of found trend points. If this number increases the size of the specified array, the remaining points are not considered
|
nRet:=readTrendFromArchive (strPointName, |
readUserExcel |
Reads component specification values from the specified Excel file. The layout of the file must be defined according to the rules of the User Excel Interface. |
1: STRING: Path name of the input file |
BOOLEAN: |
readUserExcel ("D:\\temp\\Block750_Data.xls”); |
readUserExcel Formatted |
Like readUserExcel, but with the specification of a formatting string directly to the User Excel Interface. The Excel file then no longer needs to contain any formatting specifications. The syntax of the formatting string corresponds to the formatting line. In addition, the keyword "EbsClear" is also available, which deletes all measured values before reading. |
1: STRING: Path name of the input file 2: STRING: Format string with the keywords EbsNames, EbsProfiles, EbsUnits (optional), EbsClear (optional). The sequence must be maintained. |
BOOLEAN: |
readUserExcelFormatted ("D:\\temp\\Block750_Data.xls”, "EbsNames Col A EbsProfiles Col B to F EbsUnits Col G"); |
removeSRxInfo |
deletes the SRx info that are stored at the Ebsilon objects. It is possible to select the entries to be removed either by their Ebsilon names or by their SRx tag. |
1: ebsclass: Ebsilon objects from which the SRx info shall be removed. If this argument is an empty ebsclass variable, all SRx info are deleted, as long as this is not prohibited by the arguments 2 and 3. 2: STRING: SRx tag for the object from which the SRx info shall be deleted. If this arguments is an empty string, all SRx info are deleted, as long as this is not prohibited by the arguments 1 and 3. 3: STRING: name (characteristic letter) of the SRx archive which shall be considered by the removal. Only those SRx info are deleted that consider the specified archive. |
INTEGER: |
begin if (removeSRxInfo(Measuring_point, "", "5" )) then begin println ("removeSRxInfo successful"); end; or: var e:ebsobject; if (removeSRxInfo(e, "TagM2", "5" )) then begin println ("removeSRxInfo successful"); end; |
setArchive |
This function allows to switch between different EposArchive servers. After specify server name and port with this function , all subsequent requests are sent to this server (until the setting is changed by the next calling of setArchive) |
1:STRING: name of the computer, where the EposArchive to be used is running 2:STRING: service name (port) of the EposArchive to be used |
- |
setEposArchive ("Einhausen", "EposArchive"); |
setSRxInfo |
This function modifies the configuration data that are stored in Ebsilon for the specified point (SRx-Tag, SRx-Archive, read and write flag) |
1:EBSCLASS: Ebsilon object (data point) under consideration 2:BOOLEAN: 3:BOOLEAN: 4:STRING: SRx tag for the data point 5:strArchives: SRx archives to be used 6:BOOLEAN: |
BOOLEAN: |
bOk:=setSRxInfo (ePoint, bRead, bWrite, strTag, strArchives,bNoCheckForDuplicateTags); |
shellExecute |
Executing an external program (The optional parameters are forwarded only to the Windows function ::ShellExecuteEx. For details, please see the Microsoft documentation) |
1: STRING: Path name of the program 2: STRING: Parameter line (default value:"") 3: BOOLEAN: Flag, whether the execution is to be done synchronously (default value: false) 4: STRING: Working directory for program execution (default value:"", i.e. the current directory) 5: INTEGER: Display flag nShow (default value:10) 6: STRING: Operation lpVerb (default value: "") |
BOOLEAN: |
shellExecute("notepad"); |
writeDatasetToSRx |
Transfers a complete dataset to the SRx data server with the specified time stamp. |
1: REAL: time stamp 2: STRING: SRxArchive 3: STRING: SRxHost 4: STRING: SRxPort |
BOOLEAN: |
rTime:=convertTime ("26.01.2006 10:15:00"); |
writeKeyToSRx |
enables a direct access to the data saved in SRx, without having to create and configuring the corresponding objects in the EBSILON-model. |
1: STRING: SRxKeyName 2:REAL: Time 3:REAL: Value 4:STRING: Unit 5:STRING: SRxArchive 6:STRING: SRxHost 7:STRING: SRxPort |
BOOLEAN: |
writeKeyToSRx("TestKey", 123, 512, "-", "", "", ""); |
writePointToSRx |
Writes a single value to a specified time stamp in the SRx data server. |
1: EBSCLASS: object to be written 2: REAL: time stamp 3: REAL: value 4: STRING: SRxArchive 5: STRING: SRxHost 6: STRING: SRxPort |
BOOLEAN: |
rTime:=convertTime ("26.01.2006 11:15:00"); |
writeToArchive |
This function writes a record in the EposArchive. |
1: INTEGER: Id of the archive, in which the record is to be written 2: REAL: point of time |
BOOLEAN: |
bOk:=writeToExcelFile( strFullExcelPath, 1, "A4:J26", arstrValues, iSize); |
writeToExcelFile |
This function is used to write to the specified cells of an Excel file.
|
1: STRING: path of the Excel file 2: INTEGER: number of the sheet within the Excel file 3: STRING: range of the Excel sheet 4: STRING: array with the data to be transferred 5: INTEGER: size of the array with the data |
BOOLEAN: |
bOk:=writeToExcelFile( strFullExcelPath, 1, "A4:J26", arstrValues, iSize); |
writeToExcelFileNew |
This function is used to write to the specified cells of an Excel file using dynamic arrays.
|
1: STRING: path of the Excel file 2: INTEGER: number of the sheet within the Excel file 3: STRING: range of the Excel sheet 4: STRING-ARRAY: array with the data to be transferred |
BOOLEAN: |
var |
writeToExcelFileVariant |
This function is used to write to the specified cells of an Excel file using dynamic arrays,
|
|
|
|
writeToExcelFileVariant2 |
This function is used to write to the specified cells of an Excel file using dynamic arrays,
|
|
|
|
writeToFile |
Enables the output of texts in a file, alternatively in a new file or in an already existing file. |
1: STRING: Path name of the file to be written 2: STRING: Text to be entered 3: BOOLEAN: 4: encoding:textEncodingEnum = textEncodingASCII: How to encode the characters (ASCII, UTF8, UTF16 (LE)) |
BOOLEAN: |
writeToFile("c:\\temp\\Result.log","Calculation successful",true); |
writeUserExcel |
Writes the specification and the result values in an Excel file according to a template file. |
1: STRING: Path name of the Excel template file, which defines the layout to be used. 2: STRING: Path name of the Excel file, in which the report is to be written |
BOOLEAN: |
writeUserExcel ("D:\\temp\\Block750.inp”, "EbsNames Col A EbsProfiles Col B to F EbsUnits Col G"); |
writeUserExcel Formatted |
Like writeUserExcel, but with the specification of a formatting string directly to the User Excel Interface. The Excel file then no longer needs to contain any formatting specifications. The syntax of the formatting string corresponds to the formatting line. |
1: STRING: Path name of the Excel file, in which the report is to be written 2: STRING: Format string with the key words EbsNames, EbsProfiles, EbsUnits (optional). The sequence must be maintained. |
BOOLEAN: |
|
writeValFile |
Writes the validation report in the specified file. This is always a text file, regardless of the extension. |
1: STRING: Path name of the text file to be created |
BOOLEAN: |
writeValFile ("D:\\temp\\Block750.val”); |