1.EG网关变量公式使用说明
1.1 采集公式
采集公式功能是为了将网关采集到的变量值,通过自定义公式处理成想要在平台上展示与使用的值。比如固定值补偿、变量值成倍扩大或缩小、将4-20mA或0-5V测量值工程转换等。
经过公式运算后,平台上只显示和起效此变量处理后的值,如:此变量在设备监控中列表和组态中展示的值、历史报表中的值、报警值等都是公式处理后的值。
1.2写入公式
写入公式功能是采集公式功能的逆过程,它可以把在平台上输入框中输入的值,通过自定义公式处理成想要写入设备中的值。网关会把处理后的值,写入到设备中。
1.3公式输入格式
公式遵循的原理是整个公式输入框中的内容为f(X),最终输出的值为y=f(X)(注意:X为大写英文字母,公式输入时不需要写“y=”)。
采集公式中,X为网关采集到的原始值,公式处理后输出的值是在平台上展示的值。
写入公式中,X为在平台写入框中写入的值,公式处理后输出的值会直接写入到设备中。
在输入公式的过程中请保持所有输入均为英文半角字符输入,不能出现汉字符号与文字。
采集公式示例:(0.5*X-40)/16 输入公式示例:(16*X+40)*2。
1.4 支持的运算符
如果网关为高性能的EG20、EG21系列网关,则变量公式支持如下的运算符:
1.4.1基本算数运算符
加、减、乘、除运算符
示例:X + 5
取余运算符 %
功能:计算两个数值相除后的余数,且保留整数
示例:X % 3
1.4.2支持大部分的Math函数
1. 绝对值函数 Math.abs(X)
示例:Math.abs(X - 50)
2. 四舍五入函数 Math.round(X)
功能:对数值进行四舍五入取整
示例:Math.round(X)
如果采集值 X = 12.3,则计算结果为 12
如果采集值 X = 12.7,则计算结果为 13
3. 向上取整函数 Math.ceil(X)
功能:对数值进行向上取整
示例:Math.ceil(X)
如果采集值 X = 12.1,则计算结果为 13
如果采集值 X = 12.9,则计算结果为 13
4. 向下取整函数 Math.floor(X)
示例:Math.floor(X)
如果采集值 X = 12.1,则计算结果为 12
// 如果采集值 X = 12.9,则计算结果为 12
5. 幂运算函数 Math.pow(X, n)
示例:Math.pow(X, 2)
如果采集值 X = 5,则计算结果为 25
6. 平方根函数 Math.sqrt(X)
示例:Math.sqrt(X)
1.4.3三元条件运算符
功能:根据条件判断返回不同的值
基本语法:“条件 ? 值1 : 值2”, 意思是如果条件为真,返回值1,如果条件为假,返回值2
示例1:X > 50 ? 1 : 0
如果采集值 X = 60,则计算结果为 1
如果采集值 X = 40,则计算结果为 0
1.4.4公式填写注意事项
变量表示:公式中的变量必须使用大写字母 X
字符格式:所有符号必须使用英文半角字符
运算优先级:遵循数学运算优先级(括号 > 乘除 > 加减)
数据类型:确保运算中的数据类型的兼容性
通过合理组合这些运算符和函数,可以实现各种复杂的数据处理需求,满足工业现场的数据采集和转换要求。
注意:低算力网关运算符支持有限制
如果网关为EG10、BS10系列低算力网关,则仅支持 “加、减、乘、除”四种算数运算符,其余暂不支持
1.5. 应用案例
1.5.1 对数据进行固定值补偿;
如采集到的温度值为25℃,而实际温度值为26℃,此时我们就可以使用公式进行补偿,在采集公式中填入“X+1”即可。
1.5.2 对4-20mA等模拟量测量值进行工程转换
举列说明:4-20mA模拟量测量模块,对应平台测量公式计算如下。
测量显示值=(20mA对应测量值-4mA对应测量值)*(X-4mA对应数字量)/(20mA对应数字量-4mA对应数字量)+4mA对应值测量值
如: 温度 4-20MA 测量0-100℃ ,即 0℃对应数字量4000 ,100℃对应数字量20000。
那么:温度显示值=(100-0)*(X-4000)/(20000-4000)+0=100*(X-4000)/16000
最终公式:(X-4000)/160
则,将“(X-4000)/160”输入到公式输入框中,如下图,这样平台实时数据展示时显示的值即为转化后的温度值。
当从站采集到的数据为12000(代表12mA)时,显示数据 50℃

2.低功耗网关变量公式说明
本说明适用于低功耗仪表中变量公式的编写。公式基于Lua语法,支持常用数学函数、基本算术运算及扩展运算符号。所有公式计算结果为数值类型。
2.1支持的运算符
| 运算符 | 说明 | 示例 |
|---|---|---|
+ | 加法 | a + b |
- | 减法 / 取负 | a - b 或 -x |
* | 乘法 | a * b |
/ | 除法(结果为浮点数) | a / b |
% | 取模(求余数) | a % b |
// | 整除(向下取整除法) | a // b |
^ | 幂运算(乘方) | a ^ b 表示 a 的 b 次方 |
注意:
// 与 % 遵循与Lua一致的规则,即 a // b 返回向下取整的商,a % b 返回余数,满足 a = (a // b) * b + (a % b)。2.2支持的数学函数
所有函数均使用英文小写名称,参数写在圆括号内。
| 函数 | 说明 | 示例 |
|---|---|---|
sin(x) | 正弦函数,x 为弧度 | sin(3.14159/2) → 约 1.0 |
cos(x) | 余弦函数,x 为弧度 | cos(0) → 1.0 |
tan(x) | 正切函数,x 为弧度 | tan(0.7854) → 约 1.0 |
sqrt(x) | 平方根,x≥0 | sqrt(9) → 3.0 |
abs(x) | 绝对值 | abs(-5.2) → 5.2 |
log(x) | 自然对数(以 e 为底) | log(2.71828) → 约 1.0 |
exp(x) | 指数函数,e 的 x 次方 | exp(1) → 约 2.71828 |
注意:三角函数参数为弧度,若需使用角度,请先转换为弧度(角度 × π/180)。仪表内部不提供 π 常量,可用
3.1415926535 或 3.1415926535^1 近似。2.3运算优先级
遵循标准数学优先级(从高到低):
- 函数调用(如
sin(x)) - 幂运算
^ - 取负
-(一元) - 乘
*、除/、取模%、整除// - 加
+、减-(二元)
同一优先级从左到右计算。建议使用圆括号
() 明确运算顺序。2.4编写规范
- 公式中可使用数字常量(如
3.14、-2.5、1e-3)。 - 除法分母不能为零;
sqrt参数不能为负;log参数必须大于零。 - 公式计算结果超出仪表数值范围时,行为由底层Lua定义(通常返回
inf或nan)。
- 公式遵循的原理是整个公式输入框中的内容为f(X),最终输出的值为y=f(X)(注意:X为大写英文字母,公式输入时不需要写“y=”),X为网关采集到的原始值,公式处理后输出的值是在平台上展示的值。
2.5应用案例
案例1:根据温度计算热敏电阻输出(Steinhart-Hart近似)
已知温度 x(单位℃),需计算电阻值
R = exp( a + b/T + c/T^3 ),其中 a=1.0, b=0.5, c=0.1。公式:exp(1.0 + 0.5/(X+273.15) + 0.1/((X+273.15)^3))(注意:温度转换为开尔文,分母需用括号确保优先级)案例2:4-20mA模拟量测量模块转换
假设4-20mA电流信号对应物理量范围为 0~100 kPa(压力),仪表采集到的电流值为 I(单位mA)。线性转换公式为:
物理量 = (量程上限 - 量程下限) / (20 - 4) × (X - 4) + 量程下限
代入数值:
公式:(100 - 0) / (20 - 4) * (X - 4) + 0
简化后:6.25 * (X - 4)
若电流 X = 12 mA,则计算结果 = 6.25 × 8 = 50 kPa。
若物理量范围是 -10~100 ℃,则公式为:
公式:(100 - (-10)) / (20 - 4) * (X - 4) + (-10)
即 110 / 16 * (X - 4) - 10 或 6.875 * (X - 4) - 10
1.6常见错误与注意事项
| 错误写法 | 正确写法 | 说明 |
|---|---|---|
sin30 | sin(30) | 函数必须带括号 |
log(0) | log(1e-6) | 对数参数必须 >0 |
sqrt(-4) | 避免 | 负数无实数平方根 |
a / 0 | 避免 | 除零错误 |
2^3 | 2^3 | 使用 ^ 运算符 |
(a+b//c) | (a+b)//c 或 a+(b//c) | 注意整除优先级高于加法 |
七、调试建议
- 先使用简单常量测试函数是否可用,如
sin(1.5708)。 - 复杂公式可拆分为多步中间变量(如果仪表支持子表达式)。
- 注意浮点数精度,避免直接比较相等(使用差值容限)。
- 查看仪表日志或输出值,检查是否出现
inf或nan。
帮助中心