一、功能概述
策略管理是 EMCP 物联网云平台提供的基于网关的自动化策略机制。用户无需编写复杂的脚本代码,只需通过设置表达式(支持定时条件、变量数值条件及 JS 逻辑运算)定义触发规则,当表达式满足时,自动向某一个或多个变量写入数值,即可实现设备的自动化联动执行。
二、策略功能可应用的场景
策略功能无需编写复杂脚本代码即可实现自动化,适合以下实际应用场景:
1. 定时控制:在表达式中使用时间变量,实现”每天
8 点开启设备、18 点关闭设备”等定时操作,如定时开闸放水、路灯定时开关、定时灌溉;
2. 条件联动:设置变量数值条件,满足时自动联动其他设备。例如表达式 ${hour}==8&&${pumpStatus}==0 表示”每天
8 点且水泵为关状态”时触发,可用于”温度高于 50℃ 时自动开启风机”等场景;
3. 越限自动保护:液位达到上限自动停泵、压力超限自动泄压,防止设备损坏;
4. 网关重启自恢复:使用启动策略,在网关每次启动时自动向变量写入初始值、恢复设备运行状态,无需人工干预;
5. 周期巡检、周期写入:选择周期执行,按固定时间间隔(如每 10 秒)重复检测表达式并执行写入;
6. 多变量联动、批量写值:一次满足条件,同时向多个变量写入不同数值,实现多设备协同控制。
三、前置条件
● 需使用支持策略功能的网关,策略基于网关自动化机制在网关上执行;
● 账号必须已开通策略权限;
● 表达式与写入数值中引用的变量需先在「变量管理」中创建完成;
● 建议先完成设备、网关/驱动、变量的配置,再创建策略。
四、策略创建流程
4.1 进入策略管理页面
1. 登录平台后,点击顶部「后台管理」,进入「设备中心 → 设备管理」,打开目标设备;
2. 在设备详情页顶部标签栏选择「策略管理」标签页,进入策略管理页面;
3. 页面主要功能如下:
● 搜索框:输入策略名称,点击【搜索】按名称查询策略;
● 【+ 新增】按钮:新增策略;
● 策略列表:展示策略名称、策略类型、是否启用、备注,每条策略可【编辑】【复制】【删除】;
● 底部操作栏:【全选】、批量【删除】、【排序】下拉按钮。
策略管理页面
4.2 步骤一:填写名称并选择策略类型
1. 在策略管理页面点击【+ 新增】,打开「新增」弹窗
2. 名称:输入策略名称(必填);
3. 策略类型:下拉选择「启动策略」或「循环策略」(必填):
策略由网关自动执行,支持两种策略类型:
循环策略
定义:需编写表达式,网关按表达式条件循环检测,满足条件时执行动作;
特点:表达式可组合时间变量、设备变量与 JS 逻辑运算,并配合「单次执行 / 周期执行」灵活控制执行时机;
使用场景:
○ 定时控制:每天固定时间开启/关闭设备,如定时开闸放水、路灯定时开关、定时灌溉;
○ 条件联动:变量满足数值条件时自动联动其他设备,如温度超过 50℃ 自动开启风机、水泵关闭且到点自动开启;
○ 越限自动保护:液位达到上限自动停泵、压力超限自动泄压,防止设备损坏;
○ 周期巡检:按固定周期(如每 10 秒)重复检测条件并执行写入。
启动策略
● 定义:用于在网关启动时使用,无需设置表达式,网关每次启动后自动执行一次已配置的执行动作;
● 特点:无「表达式」「执行模式」字段,配置简单,直接添加执行动作即可;
● 使用场景:
○ 状态恢复:网关重启后自动向变量写入初始值,恢复设备的默认运行状态;
○ 开机自检自启:网关每次上电后自动执行预设写入,如向控制器下发开机指令、复位中间变量;
○ 默认参数下发:每次启动统一向多个变量写入默认参数,保证设备按统一配置运行。
4.3 步骤二:编写表达式(循环策略)
1. 策略类型选择「循环策略」后,需填写「表达式」(必填);
2. 表达式输入框下方提供操作按钮,点击可将运算符直接插入表达式:&&、||、+、-、*、/、%、fx;
3. 点击【选择变量】可从变量列表中选择变量插入表达式;点击【选择时间】可选择时间变量插入表达式(详见第五章);
4. 表达式支持同时使用时间与变量,支持 JS 逻辑运算。例如:${hour}==8&&${pumpStatus}==0,表示”每天 8 点且水泵为关状态”时触发。
新增策略-编写表达式
4.4 步骤三:选择执行模式
1. 执行模式:下拉选择「单次执行」或「周期执行」(必填):
● 单次执行:表达式满足条件时执行一次动作;
● 周期执行:按设定的执行周期重复检测表达式,每次满足条件均执行动作;
2. 选择「周期执行」时需填写「执行周期」(必填):输入数值并选择单位(如 10 秒),表示每 10 秒检测一次表达式;
3. 选择「单次执行」时可勾选「延时执行」:设置延时时长(秒),表达式满足条件后延迟指定时长再执行动作。
新增策略-周期执行模式
4.5 步骤四:配置执行动作(变量与写入数值)
1. 「满足条件执行动作」:点击【+ 新增】添加动作行(必填),在动作行中配置:
● 变量:选择要写入的目标变量;
● 赋值(变量/表达式):输入要写入的数值,支持常量或表达式(详见第六章);
● 点击【删除】可移除该动作行;
2. 「不满足条件执行动作」:表达式不满足时执行的动作,配置方式与”满足条件执行动作”相同,非必填;
3. 一个策略可配置多条执行动作,条件满足时按配置依次向各变量写入数值。
说明:执行动作配置区域位于新增弹窗中部,样式参见 4.3、4.4 截图中的「满足条件执行动作」表格。
4.6 步骤五:启用策略并保存
1. 策略启用:选择「是」或「否」(必填);选择「否」时策略保存后不执行;
2. 备注:输入备注信息,最多 30 字;
3. 点击【确定】保存策略;点击【关闭】放弃本次配置。
五、表达式编写说明
5.1 表达式基本写法
● 表达式支持同时使用时间变量与设备变量,支持 JS 逻辑运算;
● 时间变量与变量统一使用 ${...} 形式引用,变量使用变量名称 ,比如${温度}
● 表达式工具条提供:逻辑与 &&、逻辑或 ||、算术运算 + - * / %、Math函数(fx标识) 、选择变量、选择时间, == 标识等于
● 示例:${hour}==8&&${pumpStatus}==0,表示”每天 8
点且水泵为关状态”时触发。
5.2 如何插入变量
1. 在表达式输入框或赋值输入框下方点击【选择变量】,打开「变量」弹窗;
2. 弹窗支持按「变量名称、寄存器地址」搜索,并可按驱动下拉筛选(默认「所有驱动」);
3. 勾选目标变量后点击【确定】,变量即以
${变量名称} 形式插入,比如 插入温度
选择变量弹窗
5.3 如何插入时间
1. 点击【选择时间】,打开「选择时间」弹窗;
2. 勾选需要的时间参数后点击【确定】,对应时间变量即插入表达式;
3. 支持的时间参数如下表:
| 时间变量 | 说明 |
| ${year} | 年 |
| ${month} | 月 |
| ${day} | 日 |
| ${weekday} | 星期 |
| ${hour} | 小时 |
| ${minute} | 分钟 |
| ${second} | 秒 |
| ${timestamp} | 时间戳 |
选择时间弹窗
5.4 如何插入 Math 函数
1. 点击表达式工具条中的 fx 按钮,展开 JS 数学函数列表;
2. 列表包含 Math.abs()、Math.acos()、Math.asin()、Math.atan()、Math.atan2()、Math.ceil()、Math.cos()、Math.exp() 等函数,可滚动查看更多;
3. 点击函数即插入表达式光标处,可与运算符、变量、时间参数组合使用。
5.5 表达式书写实战
案例一:定时自动控制(时间变量 + 状态判断)
场景需求
农场蓄水池需要每天 8 点自动开泵补水,但前提是水泵当前处于关闭状态——防止水泵已在运行时重复触发开启指令。
具体表达式
${hour}==8&&${pumpStatus}==0
表达式解读
● ${hour}==8:时间为每天 8 点;
● &&:逻辑与,两个条件需同时满足;
● ${pumpStatus}==0:水泵变量当前值为 0(关闭状态)。
满足条件后,可在「满足条件执行动作」中向水泵开关变量写入 1(开启)。
案例二:数值越限联动保护(比较运算 + Math 函数)
场景需求
冷库实时温度与设定温度的偏差达到 2℃ 及以上时,自动开启制冷机降温,保证库温稳定。偏差不分正负(高于或低于设定值 2℃ 都要触发),所以用绝对值判断。
具体表达式
Math.abs(${temp}-${setTemp})>=2
表达式解读
● ${temp}:实时温度变量,${setTemp}:设定温度变量;
● Math.abs(...):取两个变量差值的绝对值(由表达式工具条
fx 按钮插入);
● >=2:偏差达到 2℃ 及以上时触发。
满足条件后,可在「满足条件执行动作」中向制冷机开关变量写入 1(开启);如需温度回落自动关闭,可再配置「不满足条件执行动作」写入 0(关闭)
六、写入数值
6.1 写入数值说明
写入数值在「新增策略」弹窗中部的执行动作配置区完成,该区域分为「满足条件执行动作」和「不满足条件执行动作」两个区块,操作方法如下:
1. 点击区块右侧的【+ 新增】按钮,添加一条执行动作;
2. 每条执行动作包含三列:
○ 变量:从下拉框中选择,或点击【选择】按钮打开「变量」弹窗,勾选要写入的目标变量;
○ 赋值(变量/表达式):在输入框中填写要写入的数值,支持常量或表达式;
○ 操作:点击【删除】移除该条动作;
3. 赋值输入框下方提供表达式工具条(+、-、*、/、%、(、)、fx、【选择变量】【选择时间】),可点击按钮辅助构建表达式;
4. 一个策略可添加多条执行动作,条件满足时系统先逐条计算出赋值结果,再依次写入各动作行所选变量;
5. 「满足条件执行动作」在表达式满足时执行(必填);「不满足条件执行动作」在表达式不满足时执行(非必填)
6. 注意:单次执行策略,支持满足执行和不满足执行,但如果是周期执行,则仅支持满足条件
执行
6.2 写入常量
直接输入固定数值即可,策略执行时将常量原样写入目标变量。典型用法:
● 开关类控制:向 Bit 位变量写入 1(开启)或 0(关闭),实现设备启停;
● 参数复位:向变量写入预设的初始值,如 0、100 等;
● 常量需与目标变量数据类型匹配:Bit 位变量写入 0 或 1,16 位型变量写入整数,浮点型变量可写入小数。
6.3 写入表达式
输入表达式,策略执行时先计算表达式结果,再将计算结果写入目标变量。规则如下:
● 支持算术运算:+、-、*、/、% 及括号 (、);
● 支持引用其他变量:以
${变量名称} 形式引用,计算时读取该变量当前值参与运算;
● 支持 Math 函数与时间变量:点击 fx 或【选择时间】插入;
● 支持常量与变量混合运算,如
${a}+5、(${a}+${b})/2。
6.4 表达式写入案例
案例一:多路计量汇总——写入两个变量数值的和
● 场景需求:厂房两条产线各有一块电表,需要统计两条产线用电量之和。策略触发时,把「1 号电表」与「2 号电表」两个变量的当前值相加,结果写入「总用电量」变量;
● 赋值表达式:${meterA}+${meterB};
● 表达式解读:执行时读取
${meterA}(1 号电表)与 ${meterB}(2 号电表)的当前值求和,再将计算结果写入「总用电量」变量。
案例二:功率换算写入——混合运算与常量
● 场景需求:现场只采集了电压(V)与电流(A)两个变量,需要把计算出的有功功率(kW)实时写入「实时功率」变量;
● 赋值表达式:${voltage}*${current}/1000;
● 表达式解读:执行时读取电压、电流当前值,按"电压 × 电流 ÷ 1000"换算为千瓦后,将结果写入「实时功率」变量。
七、策略的编辑、复制与删除
7.1 编辑策略
点击策略行「操作」列的【编辑】,打开与「新增」相同的弹窗并带出原配置,修改后点击【确定】保存。
7.2 复制策略
1. 点击策略行「操作」列的【复制】,打开「复制」弹窗;
2. 弹窗自动带出原策略的全部配置,名称默认在原名称后追加”_副本”;
3. 修改名称及其他配置后,点击【确定】生成一条新策略。
复制策略
7.3 删除策略
1. 点击策略行「操作」列的【删除】,弹出确认框:“确定要删除此策略吗?”;
2. 系统红色提示:删除后,将无法使用此策略执行自动化操作,请谨慎操作;
3. 点击【确定】删除策略;点击【关闭】取消删除。
删除策略
7.4 批量删除与排序
● 勾选策略行复选框(或点击「全选」),点击底部【删除】可批量删除所选策略;
● 点击底部【排序】下拉按钮,可对策略列表按条件排序。
八、注意事项
1. 名称、策略类型、表达式、执行模式、执行动作均为必填项,未填写完整无法保存策略。
2. 启动策略用于网关启动时执行,无「表达式」「执行模式」字段;循环策略必须填写表达式。
3. 表达式与写入数值中引用的变量必须先在「变量管理」中创建,否则在变量选择弹窗中无法找到。
4. 策略「是否启用」选择「否」时,策略保存后不会执行,请确认启用状态。
5. 策略由网关执行,需使用支持策略功能的网关,目前支持EG20/EG21/EG22等系列网关,BS10/EG10系列为网关暂不支持
6. 网关如果网络出现问题,导致离线期间,策略依旧可正常执行,但前提是需要保证与下位机的链接,能够正常读取数据或写入数据,且不能断电,否则策略无法正确执行
7. 删除策略不可恢复,删除后无法再使用该策略执行自动化操作,请谨慎操作。
8. 复制策略时,若原策略引用的变量已被删除,则可能正常执行性策略,需重新选择变量后再保存
9. 每个策略的
「满足条件执行动作」的数量有限制,最多添加5个执行动作,即一个条件满足后,最多可以向5个变量写入数值
九、常见问题
Q1:策略管理页面在哪里?
A1:登录平台后进入「后台管理 →
设备中心 → 设备管理」,打开目标设备,在设备详情页顶部标签栏选择「策略管理」即可。
Q2:启动策略和循环策略有什么区别?
A2:启动策略在网关每次启动时自动执行一次,无需设置表达式;循环策略需设置表达式,网关按表达式条件循环检测,满足条件时执行动作。
Q3:选择「启动策略」后为什么没有表达式输入框?
A3:启动策略用于网关启动时使用,不需要触发条件,因此弹窗中无「表达式」「执行模式」字段,直接配置执行动作即可,属正常现象。
Q4:表达式支持哪些运算符?
A4:表达式工具条提供逻辑与
&&、逻辑或 || 及算术运算 + - * /
%,动作配置工具条还提供括号 ( );表达式遵循 JS 语法,还可使用 == 等比较运算符,如
${hour}==8&&${pumpStatus}==0。
Q5:如何向表达式中插入变量?
A5:点击表达式下方的【选择变量】按钮,在「变量」弹窗中搜索、筛选并勾选变量,点击【确定】后变量以
${变量名称} 形式插入表达式。
Q6:如何向表达式中插入时间?
A6:点击表达式下方的【选择时间】按钮,在「选择时间」弹窗中勾选需要的时间参数,点击【确定】即可插入对应的时间变量。
Q7:支持哪些时间变量?
A7:支持 year(年)、{month}(月)、day(日)、{weekday}(星期)、hour(小时)、{minute}(分钟)、second(秒)、{timestamp}(时间戳)8 个时间参数。
Q8:表达式支持哪些 Math 函数?
A8:点击表达式工具条中的 fx 按钮可展开 JS 数学函数列表,包括 Math.abs()、Math.acos()、Math.asin()、Math.atan()、Math.atan2()、Math.ceil()、Math.cos()、Math.exp() 等,列表可滚动查看更多函数。
Q9:单次执行与周期执行有什么区别?
A9:单次执行在表达式满足条件时执行一次动作;周期执行按设定的执行周期重复检测表达式,每次满足条件均执行动作。
Q10:执行周期的单位是什么?
A10:执行周期由数值与单位组成,例如设置”10 秒”表示每 10 秒检测一次表达式。
Q11:「延时执行」有什么作用?
A11:选择单次执行时可勾选「延时执行」,设置延时时长(秒),表达式满足条件后延迟指定时长再执行动作。
Q12:写入数值可以写表达式吗?可以写两个变量之和吗?
A12:可以。赋值支持常量与表达式两种方式:直接输入固定数值,或输入表达式(如 ${a}+${b} 写入两个变量数值的和),条件满足时先计算结果再写入变量。
Q13:满足条件执行动作与不满足条件执行动作有什么区别?
A13:表达式满足时执行「满足条件执行动作」,表达式不满足时执行「不满足条件执行动作」。前者必填,后者非必填,配置方式相同,仅单次执行模式下,同时支持「满足条件执行动作」和
「不满足条件执行动作」,周期执行模式仅支持 [满足条件执行动作」
Q14:一条策略可以同时向多个变量写入数值吗?
A14:可以。在”满足条件执行动作”或”不满足条件执行动作”下点击【+ 新增】添加多条动作,条件满足时按配置依次向各变量写入数值,最多
Q15:策略「是否启用」选择「否」后还会执行吗?
A15:不会。“是否启用”选择「否」时策略保存后不执行;如需生效,请编辑策略将其改为「是」。
Q16:删除策略后还能恢复吗?
A16:不能。策略删除后无法恢复,且无法再使用该策略执行自动化操作,请谨慎操作。
Q17:策略列表支持批量删除吗?
A17:支持。勾选策略行复选框或点击「全选」,再点击底部【删除】即可批量删除所选策略。
Q18: 网关离线策略可以正常运行吗?
网关如果网络出现问题,导致离线期间,策略依旧可正常执行,但前提是需要保证与下位机的链接,能够正常读取数据或写入数据,且不能断电,否则策略无法正确执行
帮助中心