用户通过警控任务模块可实现设备报警(含短信和邮箱)、联动控制、MQTT自定义消息发送、第三方应用API接口调用等功能。
可快速与云智MES、云智设备在线、维保在线、组态在线及用户第三方业务平台进行对接。
警控引擎支持消息触发和定时触发两种事件触发方式,用户只需在设备在线配置好对应的触发条件和相应的行为活动序列,即可由引擎自主完成触发报警、控制、消息发送等功能;
3.5.1 全局变量
全局变量是在特定作用范围(单位、项目或设备)内生效的一种变量类型,它主要用于实现跨任务、跨行动单元进行协同。
例如在一个项目中,有多个多台设备共同完成一个订单,当总生产量达到计划数量时设备即停止生产,这时可以设置全局变量count,并赋初值为0,每个任务加工前count都加1,在各个行动单元的条件规则中对全局变量进行判定即可。
全局变量操作界面如下图所示:

点击工具栏“新增”按钮,弹出新增全局变量页面:

作用范围:包含单位、项目、设备。
单位表示该全局变量可以被当前单位下的所有任务使用,用户选择该选项时,“作用对象”不需要填写;
项目表示该全局变量可以被当前项目下的所有任务使用,用户选择该选项时,“作用对象”需指定具体的项目;
设备表示该全局变量可以被当前设备下的所有任务使用,用户选择该选项时,“作用对象”需指定具体的设备;
注:其中单位范围全局变量适用于跨项目关联,项目范围全局变量适用于跨设备关联,设备范围全局变量仅适用于单台设备。
3.5.2 任务配置
3.5.2.1 任务管理
任务配置主要实现对警控任务的维护管理,每个任务下面可以包含多个行动单元,每个行动单元包含了多条触发条件和动作序列,处于生效状态的任务,其下面所有行动单元都会生效,如下图所示。
在实际使用中,每个任务可以对应一条生产线的某个生产任务,当生产任务开始时,则将“是否生效”设置为“是”,这时系统可以接收来自设备和MES等第三方系统发来的消息,并根据行动单元的配置来进行条件触发和执行相应的动作序列;
生产任务结束后,需要将“是否生效”设置为“否”,从而避免同一条生产线上多个不同生产任务间规则发生冲突。

在任务新增和修改界面(如下图所示),填写任务名称和选择对应的项目,任务创建好后,可以通过“修改”按钮来设置任务是否生效。

3.5.2.2 局部变量
局部变量是在某个任务内有效的一种变量类型,通常用于同一类型的设备需要使用独立的变量在任务内进行逻辑赋值时用到。
例如,某项目下所有A型空压设备需要在某指标规定时间内连续出现三次异常时进行报警,则可定义一个局部变量用于记录每个A型空压设备的异常次数,其用法与全局变量类似。
局部变量模块实现局部变量的管理维护,操作界面如下图所示:

3.5.2.3 行动单元
行动单元是任务执行的最小单元,也是整个任务配置的核心部分,设备在线的警控引擎采用“事件-条件-行为”机制实现设备的报警和协同控制。
“事件”分消息触发和定时触发两种类型,其中消息触发是通过用户自定义主题MQTT消息完成,定时触发是通过设置定时器完成。
“条件”设置根据消息内容的参数来配置对应的条件表达式,如果接收到的消息内容中参数值使得条件成立,则会执行对应的动作序列(行为),当事件为定时触发时,则无需设置对应的条件。
“行为”是当条件满足时需要执行的动作序列。
(1) 行动单元配置
在行动单元列表工具栏上选择“新增”或“修改”,可实现对行动单元的维护,如下图所示。

主题:需要订阅的mqtt消息的主题,系统一旦接收到该主题的消息,则会触发消息事件,将该主题对应的消息内容中的参数赋值给表达式进行判定,如果为真,则执行相应动作序列。
(注:不同任务和行动单元可以订阅同一个主题消息,只要接收到该主题的消息,所有生效的行动单元都会被触发)
设备类型列表:列出该单位下的所有的设备类型。
设备列表:列出该项目下选中类型的所有设备,该项内容与【设备类型列表】选项会进行联动选择。
类型:分为消息触发和定时触发。
(2) 消息触发
消息触发是当系统接收到该行动单元中定义的主题的消息时触发,系统将消息内容中的参数代入到定义的表达式中,如果表达式为真,则执行相应的动作序列,否则不执行。
例如,自动化生产线中,当系统检测到物料到达目的地时,网关调用设备在线的设备控制API发送AVG启动命令,使其到达指定的位置接收物料。
如下图所示,首先选择【类型】,然后选择需要监听的设备,当选择监控设备在线特定的设备,则【主题】项内容会自动生成,不需要用户填写;如果需要监听的消息是由其他平台发送(如云智MES),则由用户自己定义消息主题。
注意:无论是哪种消息主题,其消息内容都必须为简单JSON格式。
例如:
{
"S2": 1,
"S1": 0,
"S0": 3
}
其中S2、S1、S0为设备指标或用户自定义参数。

(3) 定时触发
定时触发是在指定的时间点或每隔一段时间间隔执行相应的动作序列,选择定时触发时,【表达式】中需要填写cron表达式(推荐cron表达式在线工具http://www.bejson.com/othertools/cron/)。
例如,在自动化生产线上,每天凌晨6点发送指令通知AGV小车到充电站充电,则【表达式】中设置的内容应为0 0 6 * * ?。

表达式:不同的事件类型其表达式配置也不同,“消息触发”是根据设备指标或用户自定义消息体的参数来配置条件表达式,如果表达式为真,则执行对应的动作序列;“定时触发”是根据设定的时间点或时间间隔来配置表达式,满足指定时间条件时执行对应的动作序列。
注意:系统为了避免动作序列被重复执行,例如,某电压超出预警值时,系统会向用户手机不断的推送报警信息,因此,系统加入了锁机制,即当条件第一次满足,即进入锁定模式,后面连续再次满足条件时则不再触发动作序列,只有当条件表达式不成立时,才会解锁再次进入正常监听模式。
表达式配置界面如下,在表达式编辑界面可以添加对应的判定规则,当选择了某台设备后,在参数选择下拉框中可以列出设备对应的所有指标和全局变量,表达式编辑器支持复杂条件组合,可实现强大的判定功能。

动作序列:包括报警、推送MQTT消息、发布维保工单、变量赋值、调用API及延迟等待等动作。
报警:当某台设备的某个指标超出预警值,系统自动产生一条报警日志,并通过短信或邮件推送给项目维护人员,填写项如下:
影响范围分为三级:项目,设备,指标。
标识:表示报警实体标识;
内容:表示报警内容,自定义;
邮件、短信:表示触发报警时,是否同时发送邮件或短信提醒。

推送MQTT消息:可通过向第三方平台推送MQTT消息,例如,将采集的设备指标按照规定的mqtt内容格式推送给用户平台。其填写项包括:
主题:消息发送主题,基本为格式:data/m100/$PID($PID表示项目编码标识,为系统关键字)
| 关键字 | 说明 |
|---|---|
| $MCID | 单位编号 |
| $PID | 项目号 |
| $TID | 设备分类 |
| $SID | 当前设备号 |
服务器地址:mqtt服务器的地址
用户名、密码:mqtt服务器对应的用户名和密码

发布维保工单:与设备在线工单模块进行对接,根据设备发出的异常报警自动提交维保工单。其填写项包括:
标题:用户自定义
设备号:默认设置$SID即可,系统会自动将发出报警的设备编号替换过来
备注:用户自定义

变量赋值:给全局变量、局部变量进行赋值操作,可支持对多个变量同时进行赋值。

调用API:即调用指定的API,可以是设备在线对外提供的API接口(如设备控制API),也可以是第三方平台API。其填写项包括:
api:被调用API的地址
变量:被调用API对应的参数

注意:所有动作的执行是根据动作编辑中的活动顺序自上而下执行的,所以在配置连续动作时,注意活动的添加顺序。
延迟等待:当前一个动作执行需要有一定的时间,且后面一个动作的执行与前一个动作执行的结果有关,则可通过插入延迟等待来保持多个动作之间协调一致。例如,在自动化灌装生产线上,当发出灌装命令后,需要等待5000ms,才能灌装完毕,继续启动输送线。

3.5.3 警控任务实例
本实例用于阐述在生产车间应用场景中,如何配合云智MES完成生产工单。
(1) 任务描述
在水杯生产线上,其中一道工序是对杯体喷涂颜色,需要通过设备在线的警控任务向该设备发送喷涂启动指令,喷涂20s钟之后,完成喷涂工序,并关闭机器,通知MES系统喷涂工序完毕。
此外,还需要对该喷涂设备进行实时监测,当检测到涂料不足时需要通过短信通知设备维护人员添加涂料。
(2) 警控任务实现步骤
步骤1:添加任务

步骤2:添加颜料库存监控行动单元
选择对应的设备,类型选择“消息触发”

表达式配置如下图所示:

报警配置如下图所示:

步骤3:添加喷涂行动单元
自定义主题为“msg/data/mes/72/20190808143711”,MES发送的主题内容为:
{
"Q0": 1,
"Q1": 0,
"Q2": 0
}
其中,Q0、Q1和Q2分别为是否开启蓝、绿、紫三种不同颜色,值为1标识开启,为0表示未开启。本实例中选择了蓝颜料喷枪。

表达式配置如下图所示:

动作序列配置如下图配置所示:
1)调用设备在线接口,向喷涂设备发送喷涂开启指令

设备在线控制API
设备控制 【web请求API】
URL
http://eiot.iipcloud.com/api/ctl
支持格式
JSON
HTTP请求方式
GET
请求参数
| 参数 | 必选 | 类型 | 说明 |
|---|---|---|---|
| deviceID | true | string | 设备号 |
| attrcode | true | string | 指标编号 |
| value | true | string | 值(当该值为空,则直接使用设备类型中的默认值设置) |
| pswd | true | string | 设备控制密码 |
| mcid | true | string | 所属单位 |
返回字段
| 返回字段 | 字段类型 | 说明 |
|---|---|---|
| status | int | 返回结果状态。0:正常;1:错误。 |
| errorcode | string | 错误代码 0为无错误, 1开头的为隐患,2开头的为故障,9开头的为系统错误 |
接口示例
地址:
[http://eiot.iipcloud.com/api/ctl?deviceID=122018130933201&attrcode=v0&value=4&pswd=000000&mcid=1]
{
"status": 0,
"errorcode": "0"
}
2)配置延迟等待活动,等待时间为20秒(20000ms),等待喷涂完成

3)配置MES系统回调API,通知MES喷涂工序已完成(云智MES的API接口请参考MES使用说明书)

4)调用设备在线接口,向喷涂设备发送喷涂停止指令

3.5.4 任务日志
记录所有触发事件、执行动作序列的所有日志,包括触发警控任务时间、任务编号以及一些动作执行错误的日志。