3

我一直在尝试在 Historian 中模拟值,但没有取得很大成功。我对环境和 VBscript 本身都很陌生。

我正在尝试模拟简单的 1 和 0。我的目标是让它运行 1-2 分钟,返回 1。然后下降15-30秒;返回 0。两者的正常运行时间和停机时间都是随机的。

如果我正确理解程序,它将每秒触发一次脚本。意思是,我不能有一种可以记住的全局值,这使得编程变得困难......我已经尝试过使用概率,比如:

dim r
r = (int(rnd*100)+1)*10

IF r >= 35 THEN
 Result = 1
ELSE
 Result = 0
END IF

但这仅考虑正常运行时间。注册停机时间时,仅注册1秒...:/

有没有人对如何实现简单的模拟代码有任何经验或想法?谢谢!

编辑: 我一直在测试内置函数,试图用一个计数器来解决这个问题,每次它达到一个数字时我都可以用它来重置。但我无法让它完全工作:

    pre = PreviousValue("TAG1","Now - 1Second")


    IF PreviousQuality("TAG1","Now - 1Second") OR pre = -1 THEN
     result = 0
    END IF

    IF pre >= 10 THEN
     result = 0
    ELSEIF pre < 10 THEN
     result = AddData("TAG1",pre+1,"Now",100)
    ELSE
     result = -1
    END IF

我只是无法让它工作......一直在盲目地主演自己......:/

编辑 2: 现在看起来像是日报.. :P 但我设法用上面的代码做了一个计数器,并对其进行了调整。以为我只需要制作另一个标签,然后在一段时间内返回值 1 和 0。显然,Historian 在读取另一个标签时无法跟上并吐出值......

4

1 回答 1

1

我一直在尝试模拟 Historian 中的值

我过去曾成功地使用文件收集器来测试/模拟我们监控的设备的停机时间和丢失情况,这里的文档:GE File Collector

本质上,您只需以其中一种格式创建 XML 或 CSV 文件

示例 XML:

<Import>
    <DataList Version="1.0.71">
        <Tag Name="TIGER.IMPORT_TAG1.F_CV">
            <Data>
                <TimeStamp>01-Mat-2018 11:00:15.000</TimeStamp>
                <Value>0</Value>
                <DataQuality>Good</DataQuality>
            </Data>
            <Data>
                <TimeStamp>20-Jul-2001 11:00:36.000</TimeStamp>
                <Value>0</Value>
                <DataQuality>Good</DataQuality>
            </Data>
            <Data>
                <TimeStamp>01-Mat-2018 11:00:30.000</TimeStamp>
                <Value>1</Value>
                <DataQuality>Bad</DataQuality>
            </Data>
            <Data>
                <TimeStamp>01-Mat-2018 11:00:45.000</TimeStamp>
                <Value>0</Value>
                <DataQuality>Good</DataQuality>
            </Data>
        </Tag>
    </DataList>
</Import>

一旦收集器启动并运行,然后将 XML 或 CSV 文件放入文件收集器正在监视的“传入”文件夹中。

传入文件夹的示例位置:C:\Proficy Historian Data\ImportFiles\Incoming

使用文件配置模拟数据以及简单的测试计划的另一个好处是,您现在拥有一组已定义的可重复测试用例。

于 2018-03-08T07:19:45.993 回答