不同的代理服务的委托应用,能够委托的代理事件以及代理条件也是不同的。
我们需要从委托应用、代理事件、代理条件以及对应的代理执行这个四个方面来展开梳理“代理服务”的每一个选项。
(一)“终端管理” 应用的代理事件
从前面的说明可以看到,“终端管理” 这个应用,可以代理的事件只有两个:“终端上线” 事件和 “终端下线” 事件。
“终端上线” 和 “终端下线” 代理事件的默认条件是一样的:
(二)“对象管理” 应用的代理事件
“对象管理” 应用的可以代理的事件有两个:“FV过期” 和 “FV接收” 事件。
“FV过期” 事件,是指对象的某个FV变量是最新数据已经无效。
在 MixIOT 体系中,对象的数据是通过映射关系形成的时序马赛克(也就是时序数据拼图)而成的。时序马赛克的数据更新,是对象变量数据更新所导致。
我们可以在映射表中规定对象变量(FV变量)的有效期限,一旦某个FV的数据过了规定的有效期,则这个FV的数据就会为空。
这样做的意义是,防止一个变量的数据长时间没有数据实际上已经失效的时候,我们还误认为这个变量的数据还有效。
如果能够合理使用FV过期事件这个代理事件,可以解决很多非常难以发现的隐蔽问题, 在工业互联网实践中能起到非常重要的作用。
来看一个图:
我们获得的设备数据,都来自设备控制器,而这些数据实际上都来自对应的传感器, 比如温度传感器、压力传感器、流量传感器、阀门开度传感器。
我们如果创建这样一个代理服务项目:
FV变量
Temperature(温度)、Pressure(压力)、Flow(流量)和 Opening(阀门开度)这些数据本来都是周期采样的,但如果出现某一个变量(比如 Pressure)经常出现 “过期” 的情况,那么很可能就是这个压力传感器出问题了。
再看 “FV接收事件”:
所谓 FV接收事件,是当 FV接收到什么数据的时候所产生的事件,可以理解成正好是 “过期” 的反面。比如:
意思是对象OBJXXXX的Flow变量如果收到数据的话,即这个数据得到了一个新的采样结果。
委托代理应用 “对象管理” 除了默认的代理条件,可以自定义的条件有这些字段可以用:
FV过期事件,可用 “data” 包括 “指定的FV” 来作为代理条件, 比如 “data” 包括 “S01”,这个条件的意思就是,“如果S01这个FV过期”。
比如看这个设置:
这个代理项目是 “OBJXXXX 对象的 Pressure(压力)变量过期事件”。
再比如这个设置,“FV 接收事件” 的 data 字段可以作为代理条件,用 “data.FV” 来表示某个FV变量的值:
那这个代理项目所代理的是 “对象OBJXXXX 的 Pressure变量(压力)大于等12.34” 的事件。
“对象管理” 的代理条件字段标识,都可以作为代理执行中的宏变量,如:
$object_id
对象编号;$data
过期的 FV(适用代理事件为FV过期事件);$data.FV
FV 变量的值(适用代理事件为FV接收事件)。
(三)“离线数据” 应用代理事件
“离线数据” 应用可以代理的事件只有一个,就是离线数据的值更新:
默认的代理条件也只有一个,就是离线项目编号:
回顾一下SERG系统的离线数据:
该离线项目有4个:
“离线数据” 应用作为代理委托应用,如果不指定代理条件,则任何一个离线数据有更新都满足代理条件。
我们也可以默认条件 “离线编号” 去指定某个特定的离线项目作为代理条件:
其他更精准和复杂的代理条件,则需要用 “自定义” 代理条件选项:
最常用的就是指定某个采集标签(label_en或者label_local),以及采集数据的值(value)。
下图这个代理条件的意思是 “离线采集的数据 泵站压力 大于2.85 Bar的时候”:
下图这个代理条件的意思是 “离线采集的数据 电站压力 小于2.55 Bar的时候”:
下图这个代理条件的意思是 “离线采集的数据 泵站入口燃气温度 小于 30℃的时候”:
下图这个代理条件的意思是 “离线采集的数据 甲烷浓度 小于8.5%的时候”:
有了这些,就可以更精准得到我们需要的代理事件。
(四)“统计计算” 应用的代理事件
“统计计算” 应用中,可以委托的代理事件有三个,分别是:统计/计算结果事件、统计实时过程事件以及计算实时过程事件。
先对这三个事件的概念进行一些说明:
- 统计/计算结果事件,是指“统计计算”应用中,所创建的统计或计算项目完成了一次规定的统计结果或计算结果;
- 统计实时过程事件,是指在统计项目还没有得出最终结果的统计过程中,出现了中间结果的事件;
- 计算实时过程事件,是指在计算项目还没有得出最终结果的计算过程中,出现了中 间结果的事件。
SERG集团的 MixIOT 平台上之前创建了很多统计项目:
也有计算项目:
这些项目都是按周期进行的每小时的统计或计算结果,未必一定在下一个小时的第一分钟第一秒钟,这些都取决于计算资源的分配。
如果某个统计或计算结果对我们非常重要,那么就可以创建一个 “统计或计算结果事件” 的代理服务项目,这个代理服务项目就可以帮我们盯着统计和计算,一旦出结果了,就立即通知我们。具体怎么通知,当然是根据配置的代理执行方式。
这个 “统计或计算结果事件” 应该算是比较容易理解的代理事件。
而 “统计实时过程事件” 和 “计算实时过程事件” 是MixIOT体系里面特有的两个概念。所谓 “统计实时过程” 和 “计算实时过程”,是指设定的统计项目或计算项目还没结果的时候(也就是在统计或计算过程中),获得中间统计或计算结果的事件。之所以会这样,是由MixIOT的计算方式所决定的。
比如,编号为 “STATISTICS3242431700004” 的统计项目是 “佳华1#机组发电量(每小时)”,这是一个每小时发电量的统计,也就是 “每小时出一次统计结果” 的统计项目。
通常,每小时统计项目是每小时计算一次,这是普遍的做法。设想一下,假如我们有1000个每小时的周期计算项目,都在刚过一小时整点的时候开始计算,那么,这个瞬间就可能出现1000倍的计算资源消耗,有可能出现各种难以预料的问题。
MixIOT 体系中的周期性的计算并非是这样来安排,而是把每小时的计算分散到每5分钟,甚至是每1分钟。如何分配,取决于MixIOT总体算力的平衡调度。
比如,“佳华1#机组每小时发电量(STATISTICS3242431700004)” 这个本来应该每小时周期计算一次的项目,我们变成每5分钟计算一次。这样的话,每次计算的数据量是小的,第一次这个计算结果Z1只是一个中间结果,称为 “实时结果”:
第二个5分钟也计算一次,这个计算结果Z2也是一个中间结果:
第二次的计算结果Z2,是第一次计算结果Z1以及第二个5分钟数据的计算结果所构成,所以计算量自然是不大的。
第三次计算结果Z3也是一样:
直到第12次计算结果Z12完成,这就是该项目的结果:
这就是为什么会有统计或计算的实时过程事件。
“统计或计算结果事件” 的代理的默认代理条件有四个:
而 “统计实时过程事件” 和 “计算实时过程事件” 的默认代理条件是一样的,有三个:
自定义的代理条件可以参考:
(五)“历程管理” 应用的代理事件
“历程管理” 应用会经常用到代理服务来观察历程的开始和结束以及历程持续过程的情况,要是能使用好,可以在实际工业生产过程中起到大作用。
“历程管理” 应用可以代理的事件有三个,分别是:历程开始、历程结束和历程实时结果:
“历程开始事件” 就是某个历程满足或具备所设置的历程条件,开始了这个历程的事件;
“历程结束事件”是某个已经开始的历程,已经不具备历程持续的条件,结束了该历程的事件;
而“历程实时结果事件”,是历程已经开始但尚未结束,也就是历程持续过程中发生的、有中间结果的事件。
我们在使用历程的时候,往往希望知道历程持续过程中,该历程的一些具体信息,使用代理服务是一个非常恰当的方法。
历程开始的代理事件,有这三个默认的代理条件可以使用:
如果不指定代理条件,那么这个代理就是只要出现 “任何一个历程开始” 这个事件,这个代理就成立。
可以通过代理条件,指定某个特定的历程项目编号、历程编码以及对象编号。这几个东西名字上比较相近,非常容易弄混,但只要对照历程项目来看就不会弄错:
历程结束代理事件默认的代理条件有五个,分别是 “对象编号”、“历程项目编号”、“历程编码”、“历程类型” 和 “历程持续时间(秒)”:
如果不增加任何代理条件,那么只要有历程项目所对应的历程结束,这个代理事件就会成立。
如果需要对历程进行更精准的代理,就可以增加代理条件。其中,历程类型可以是在创建历程项目时候所设置的类型,如故障历程、报警历程等等。
历程持续时间是一个非常有用的代理条件,比如可以代理 “持续时间超过300秒(5分 钟)的历程”,那么持续时间短于5分钟的历程,就不用去关注了。
历程实时结果代理事件的代理条件,跟历程结束事件的代理条件是一样的。
唯一的区别是,这里的 “历程事件(秒)”,是从历程开始到现在的时长,这个会一直变化,因为此时该历程并没有结束。
除了默认的代理条件,也可以根据条件字段来配置自定义条件: