这些函数提供了对 EBSILONProfessional 数据接口的访问。一般来说,它们可以在 EBSILONProfessional 性能优化系统(EPOS)中用于与流程或数据库进行数据交换(见标准 Excel 接口的 Excel 函数)。
用户-DLL 函数可用于输入和输出。
用户-Excel 和 ASCII-接口有不同的输入和输出函数。这些函数的作用与图形用户界面相对应,但有以下区别
重要提示:"readInputFile"和"readUserExcel"在测量值方面的表现不同。当使用"readInputFile"时,文件必须包含一套完整的测量值(组件 46)。缺少的值在文件中被设置为空白。当使用"readUserExcel"时,只有那些在文件中可用的值被替换。文件中缺少的值保持不变。
名称 |
目的 |
参数 |
返回值 |
例子 |
callEbsScriptServer |
在 ATL 接口的范围内调用用户定义的 DLL,通常是为了打开一个输入参数的对话框。 |
1: STRING: 2: 任何类型: 3: 任何类型: 4: 程序 |
BOOLEAN: true: 没有问题 |
callEbsScriptServer( "CoalSelection.Input", strCoalNameField, r2, procInit ); |
callUserDll |
简单调用用户 DLL,没有额外的参数 |
1: INTEGER: 用户 DLL 中的程序 ID |
INTEGER, |
callUserDll(2); |
callUserDllArgs |
调用带有三个额外参数的用户 DLL |
1:INTEGER: 用户 DLL 中的程序 ID 2:INTEGER 3:REAL 4:STRING |
INTEGER, |
callUserDll(1, 3, 7.5, "d:\\temp\\out.txt"); |
eposReadAverage FromArchive |
如"ReadAverageFrom Archive"一样,但使用动态数组。 |
1: REAL: 平均化的开始时间 2: REAL: 平均化的结束时间 3: PointFilter 数组: 4: BOOLEAN: 见 "ReadAverageFromArchive" |
INTEGER: |
|
eposReadAverage FromArchiveForOneId |
如"ReadAverageFrom ArchiveForOneId"一样,但使用动态数组。
|
1: INTEGER: 2: REAL: 平均化的开始时间 3: REAL: 平均化的结束时间 4: PointFilter 数组: 5: BOOLEAN: 见 "ReadAverageFromArchive" |
INTEGER:
|
|
eposReadAverage Trend |
如"ReadAverageTrend"一样,但使用动态数组。
|
1: STRING 2: REAL: 整个趋势的开始时间 3: REAL: 整个趋势的结束时间 4: REAL: 平均的间隔(时间步长) 5: PointFilter 数组: 6: ValueAtTime 数组 |
INTEGER: |
|
eposReadTrend FromArchive |
如"ReadTrendFrom Archive"一样,但使用动态数组。
|
1: STRING 2: REAL: 整个趋势的开始时间 3: REAL: 整个趋势的结束时间 4: ValueAtTime 数组 |
INTEGER: |
|
getEposArchiveId |
检索为考虑的数据点配置的 EposArchive Id |
1:EBSCLASS: 考虑的 Ebsilon 对象 |
INTEGER: EposArchive Id |
id:=getEposArchiveId (TestDP_S1.MEASM); |
getSRxInfo |
检索存储在 Ebsilon 中的指定点的配置数据(SRx-标签, SRx- 档案, 读出和写入标签) |
1:EBSCLASS: Ebsilon 考虑中的对象(数据点) 2:BOOLEAN: 3:BOOLEAN: 4:STRING: 数据点的 SRx 标签 5:strArchives: SRx 档案 |
BOOLEAN: |
ePoint:=Test_DP009.RESULT; bOk:=getSRxInfo (ePoint, bRead, bWrite, strTag, strArchives); |
playSound |
播放一个 .wav 文件,例如用于宣布指令 |
1:STRING: 2:BOOLEAN: 3:BOOLEAN: 4:BOOLEAN: |
BOOLEAN: |
playSound ("C:\\Temp\\Hallo.wav"); |
readAverageFrom Archive |
利用这个函数,可以从 EposArchive 加载一段时期内确定的数据集。 在平均化的同时,也可以使用过滤器。对于每个过滤器,需要指定点的名称、下限、上限、与前一个时间点的最大相对偏差和一个过滤器 ID。通过过滤器 ID,可以实现 AND 或 OR 连接:所有具有相同 ID 的过滤器用 OR 连接,具有不同 ID 的过滤器用 AND 连接。 在这里的例子中,对发电机功率 BAA20CE003A.MEASM 和计算状态 @model.iStatus 进行每小时均值计算。 |
1: REAL: 平均化的开始时间 2: REAL: 平均化的结束时间 3: INTEGER: 过滤判据的数量 4: STRING: 过滤值的名称字段 5: REAL: 允许的下限字段 6: REAL: 允许的上限字段 7: REAL: 与前一个数据集的最大允许偏差的字段 8: INTEGER: 过滤器 ID 的字段(见左边) 9: BOOLEAN: |
INTEGER: 用于平均化的数据集的数量 |
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 liefert ",nRet,"\n"); print ("BAA20CE003A.MEASM = ", BAA20CE003A.MEASM, " @model.iStatus = ",@model.iStatus,"\n"); end. |
readAverageFrom ArchiveForOneId
|
和 readAverageFromArchive 一样,当归档几个时间值时,只读取一个时间值的数据。 |
1: INTEGER 2-10 对应readAverageFromArchive 的参数 1-9 |
INTEGER: 用于平均化的数据集的数量 |
nRet:=readAverageFromArchiveForOneId (9999, rStartTime, rStopTime, nFilterSize, arstrFilterPointNameArray, arrFilterLowLimitArray, arrFilterHighLimitArray, arrFilterDeviationArray, arnFilterIdArray ); |
readAverageTrend |
该函数检索一个数据点在指定时间段内的过滤值和时间平均值。必须指定平均化的时间间隔。过滤标准与函数 readAverageFromArchive 一样,都是指定的。在平均化时,不符合标准的点会被忽略。时间戳(分别是时间间隔的平均值)和数值被输入数组中,这些数组必须在 EbsScript 中事先创建。 例如:确定 2003 年 11 月 15 日 8:00 至 16:00 之间测量点 PAB12CT001 的每小时平均值,其中只有那些计算成功(@model.iStatus < 7)且电厂处于运行状态(BAA20CE003A > 90000)和静止状态(BAA20CE003A 与前一个数据的变化不超过 3%)的数值才会被纳入平均数。. |
1: STRING 2: REAL: 整个趋势的开始时间 3: REAL: 整个趋势的结束时间 4: REAL: 平均数的间隔(时间步长) 5: INTEGER: 过滤标准的数量 6: STRING: 过滤量名称的字段 7: REAL: 允许的下限字段 8: REAL: 允许的上限字段 9: REAL: 与前一个数据集的最大允许偏差的字段 10: INTEGER: 带有过滤器 ID 的字段(见上文) 11: INTEGER: 为结果提供的字段的大小 12: REAL(结果):带有趋势点时间的字段 13: REAL(结果):带有结果值的字段 |
INTEGER: 发现的趋势点的数量。当这个数字超过结果数组的大小时,剩余的点将被丢弃。 |
var |
readDatasetFromSRx |
从 SRx 数据服务器加载指定时间的完整数据集到模型中 |
1: REAL : 时间戳 2: STRING: SRxArchive 3: STRING: SRxHost 4: STRING: SRxPort |
BOOLEAN: |
rTime:=convertTime ("26.01.2006 10:15:00"); |
readFromExcelFile |
这个函数可以直接从 Excel 文件中读取指定的单元格。 |
1: STRING: Excel 文件的路径 2: INTEGER: 要读取的 Excel 文件的工作表的编号 3: STRING: 要读取的 Excel 文件的范围 4: STRING: 用于读取数据的字段 5: INTEGER: 读取数据的字段大小 |
BOOLEAN: |
bOk:=readFromExcelFile( strFullExcelPath, 1, "A4:J26", arstrResults, iSize); |
readFromExcelFileNew |
这个函数可以使用动态数组从 Excel 文件中直接读取指定的单元格。
|
1: STRING: Excel 文件的路径 2: INTEGER: 要读取的 Excel 文件的工作表的编号 3: STRING: 要读取的 Excel 文件的范围 4: STRING: 读取数据的动态字段 5: INTEGER: 读取数据的字段大小 |
BOOLEAN: |
var |
readFromExcelFileVariant |
这个函数可以使用动态数组从 Excel 文件中直接读取指定的单元格。像 readFromExcelFileNew 一样,但单元格的数据以 VARIANT 类型移交(即保留了类型(Integer, Real, Text, 空白);到第 10 版为止,所有内容都是以文本形式读取的
|
|
|
|
readFromExcelFileVariant2 |
这个函数可以使用动态数组从 Excel 文件中直接读取指定的单元格。
|
|
|
|
readInpFile |
读取一个带有测量值的文件。这可以是一个文本文件或一个 Excel 文件。如果是 Excel 文件,在第一行必须有格式化说明。 |
1: STRING: 输入文件的路径名称 2: BOOLEAN: 如果没有输入名称,会出现一个对话框来选择文件。 |
BOOLEAN: |
readInpFile ("D:\\temp\\Block750.inp”); |
readKeyFromSRx |
可以直接访问保存在 SRx 中的数据,而不必在 EBSILON 模型中创建和配置相应的对象。 |
1: STRING: SRxKeyName 2: REAL: 时间 3: var real: 值 4: STRING: 单位 5: STRING: SRxArchive (标准 = "") 6: STRING: SRxHost (标准 = "") 7: STRING: SRxPort (标准 = "") |
BOOLEAN: |
readKeyFromSRx("TestKey", 123, returnvalue, "-", "", "", "" ); |
readLineFromFile |
这个 EbsScript 函数从一个文本文件中读取一行。 该函数的实现方式是,在每次读取访问时,都会重新打开文件,搜索到该行,然后再次关闭文件。 在这个例子中,文件 test.txt 的第一行被读取并显示。 |
1: STRING: 在这个例子中,文件 test.txt 的第一行被读取并显示。 2: STRING(Result): 读取文本行 3: INTEGER: 要读取的行的编号 |
BOOLEAN: |
var |
readPointFromSRx |
从 SRx 中检索指定时间戳的单个数据点的值。 |
1: EBSCLASS: 要读取的对象 2: REAL: 时间戳 3: STRING: SRxArchive 4: STRING: SRxHost 5: STRING: SRxPort |
REAL: |
rTime:=convertTime ("26.01.2006 11:15:00"); |
readTrendFrom Archive |
这个函数允许从 EposArchive 读取一个数据点的趋势。与 readAverageTrend 不同的是,它没有平均或过滤功能。
|
1: STRING 2: REAL: 总趋势的开始时间 3: REAL: 总趋势的结束时间 4: INTEGER: 为结果提供的数组的大小 5: REAL(结果):趋势点的时间数组 6: REAL(结果):带有趋势点数值的数组 |
INTEGER: 发现的趋势点的数量。如果这个数字增加了指定数组的大小,剩下的点就不会被考虑。
|
nRet:=readTrendFromArchive (strPointName, |
readUserExcel |
从指定的 Excel 文件中读取组件规格值。文件的布局必须根据用户 Excel 接口的规则来定义。 |
1: STRING: 输入文件的路径名称 |
BOOLEAN: |
readUserExcel ("D:\\temp\\Block750_Data.xls”); |
readUserExcel Formatted |
像 readUserExcel 一样,但直接向用户 Excel 接口指定格式化字符串。这样,Excel 文件就不再需要包含任何格式化规格。格式化字符串的语法与格式化行相对应。此外,关键字"EbsClear"也可用,可以在读取前删除所有测量值。 |
1: STRING: 输入文件的路径名称 2: STRING: 带有关键字 EbsNames、EbsProfiles、EbsUnits(可选)、EbsClear(可选)的格式字符串。必须保持这个顺序。 |
BOOLEAN: |
readUserExcelFormatted ("D:\\temp\\Block750_Data.xls”, "EbsNames Col A EbsProfiles Col B to F EbsUnits Col G"); |
removeSRxInfo |
删除存储在 Ebsilon 对象中的 SRx 信息。可以通过 Ebsilon 名称或 SRx 标签来选择要删除的条目。 |
1: ebsclass: 要删除 SRx 信息的 Ebsilon 对象。如果这个参数是一个空的 ebsclass 变量,所有的 SRx 信息都会被删除,只要参数 2 和 3 不禁止这样做。 2: STRING: 要删除 SRx 信息的对象的 SRx 标签。如果这个参数是一个空字符串,只要不被参数 1 和 3 禁止,所有的 SRx 信息都会被删除。 3: STRING: 受删除影响的 SRx 档案的名称(识别字母)。只有考虑的指定档案的 SRx 信息被删除。 |
INTEGER: |
begin if (removeSRxInfo(Measuring_point, "", "5" )) then begin println ("removeSRxInfo successful"); end; end.
or:
var e:ebsobject; begin if (removeSRxInfo(e, "TagM2", "5" )) then begin println ("removeSRxInfo successful"); end; end. |
setArchive |
这个函数允许在不同的 EposArchive 服务器之间切换。用这个函数指定服务器名称和端口后,所有后续的请求都会被发送到这个服务器(直到下次调用 setArchive 改变设置) |
1:STRING: 计算机的名称,要使用的 EposArchive 正在上面运行 2:STRING: 要使用的 EposArchive 的服务名称(端口) |
- |
setEposArchive ("Einhausen", "EposArchive"); |
setSRxInfo |
该函数修改存储在 Ebsilon 中的指定点的配置数据(SRx-标签, SRx-档案和读写标志) |
1:EBSCLASS: 考虑的 Ebsilon 对象(数据点)。 2:BOOLEAN: 3:BOOLEAN: 4:STRING: 数据点的 SRx 标签 5:strArchives: 要使用的 SRx 档案 6:BOOLEAN: |
BOOLEAN: |
bOk:=setSRxInfo (ePoint, bRead, bWrite, strTag, strArchives,bNoCheckForDuplicateTags); |
shellExecute |
执行一个外部程序 (可选参数只传递给 Windows 函数::ShellExecuteEx。详情请见微软文档) |
1: STRING: 程序的路径名称 2: STRING: 参数行(默认值:"") 3: BOOLEAN: 标志,是否同步执行(默认值:false) 4: STRING: 程序执行的工作目录(默认值:"",即当前目录) 5: INTEGER: 显示标志 nShow(默认值:10) 6: STRING: 操作 lpVerb(默认值:"") |
BOOLEAN: |
shellExecute("notepad"); |
writeDatasetToSRx |
将一个完整的数据集按照指定的时间戳传输到 SRx 数据服务器上。 |
1: REAL: 时间戳 2: STRING: SRxArchive 3: STRING: SRxHost 4: STRING: SRxPort |
BOOLEAN: |
rTime:=convertTime ("26.01.2006 10:15:00"); |
writeKeyToSRx |
可以直接访问保存在 SRx 中的数据,而不必在 EBSILON 模型中创建和配置相应的对象。 |
1: STRING: SRxKeyName 2:REAL: 时间 3:REAL: 值 4:STRING: 单位 5:STRING: SRxArchive 6:STRING: SRxHost 7:STRING: SRxPort |
BOOLEAN: |
writeKeyToSRx("TestKey", 123, 512, "-", "", "", ""); |
writePointToSRx |
向 SRx 数据服务器中的指定时间戳写入一个单一的数值。 |
1: EBSCLASS: 要写入的对象 2: REAL: 时间戳 3: REAL: 值 4: STRING: SRxArchive 5: STRING: SRxHost 6: STRING: SRxPort |
BOOLEAN: |
rTime:=convertTime ("26.01.2006 11:15:00"); |
writeToArchive |
该函数在 EposArchive 中写入一条记录。 |
1: INTEGER: 档案馆的 ID,记录将被写入其中 2: REAL: 时间点 |
BOOLEAN: |
bOk:=writeToExcelFile( strFullExcelPath, 1, "A4:J26", arstrValues, iSize); |
writeToExcelFile |
该函数用于向 Excel 文件的指定单元格写入数据。
|
1: STRING: Excel 文件的路径 2: INTEGER: Excel 文件中工作表的编号 3: STRING: Excel 文件中工作表的编号 4: STRING: 要传输的数据的数组 5: INTEGER: 包含数据的数组的大小 |
BOOLEAN: |
bOk:=writeToExcelFile( strFullExcelPath, 1, "A4:J26", arstrValues, iSize); |
writeToExcelFileNew |
该函数用于使用动态数组向 Excel 文件的指定单元格写入数据。
|
1: STRING: Excel 文件的路径 2: INTEGER: Excel 文件中工作表的编号 3: STRING: Excel 工作表的范围 4: STRING-ARRAY: 包含要传输的数据的数组 |
BOOLEAN: |
var |
writeToExcelFileVariant |
该函数用于使用动态数组向 Excel 文件的指定单元格写入数据。 就像 writeToExcelFileNew 一样,但单元格的数据是以 VARIANT 类型移交的(即保留了类型(Integer, Real, Text, 空白);到第 10 版为止,所有的数据都被写成文本)
|
|
|
|
writeToExcelFileVariant2 |
该函数用于使用动态数组向 Excel 文件的指定单元格写入数据。 就像 writeToExcelFileVariant 一样,但数据是以"数组的数组 VARIANT"的形式递交的。
|
|
|
|
writeToFile |
启用文件中的文本输出,或者在一个新的文件或已经存在的文件中输出。 |
1: STRING: 要写入的文件的路径名称 2: STRING: 要输入的文本 3: BOOLEAN: |
BOOLEAN: |
writeToFile("c:\\temp\\Result.log","Calculation successful",true); |
writeUserExcel |
根据模板文件在 Excel 文件中写入规格和结果值。 |
1: STRING: Excel 模板文件的路径名称,它定义了要使用的布局。 2: STRING: Excel 文件的路径名称,报告将被写入该文件中。 |
BOOLEAN: |
writeUserExcel ("D:\\temp\\Block750.inp”, "EbsNames Col A EbsProfiles Col B to F EbsUnits Col G"); |
writeUserExcel Formatted |
就像 writeUserExcel 一样,但是直接将格式化字符串的规格写到用户 Excel 接口。这样,Excel 文件就不再需要包含任何格式化规格。格式化字符串的语法与格式化行相对应。 |
1: STRING: 要写入报告的 Excel 文件的路径名称 2: STRING: 带有 EbsNames, EbsProfiles, EbsUnits(可选)等关键词的格式字符串。必须保持这个顺序。 |
BOOLEAN: |
|
writeValFile |
将验证校核报告写入指定的文件中。这始终是一个文本文件,不管扩展名是什么。 |
1: STRING: 要创建的文本文件的路径名称 |
BOOLEAN: |
writeValFile ("D:\\temp\\Block750.val”); |