
# 点位计算
#### 业务流程
点位计算业务流程如[图1]所示，先进行点位缩放得到真实值，再用真实值进行点位清洗得到上报值。
图1流程图   
![](https://support.huaweicloud.com/usermanual-iotedge/figure/zh-cn_image_0000001466092057.png "点击放大")
#### 点位缩放
对数采数据做规整，减少应用对数据处理和适配的工作量，如从PLC采集上来的原始数据，需要经过计算后才能表达真实含义。具体操作步骤请参见[点位缩放](https://support.huaweicloud.com/bestpractice-iotedge/iotedge_bestpractice_0126.html#section0)。
**概述**
点位缩放，提供通过线性表达式将采集值转换为真实值的功能。支持公式Y = ratio \* X + base，使用线性表达式，通过配置ratio、base、accuracy来对采集值进行处理。
公式：
Y=ratio×X+base
- **ratio**: 缩放的倍率，浮点型，取值范围\[-20000，+20000\]，最大支持小数点后7位
- **base**: 基准值，浮点型，取值范围\[-10000，+10000\]，最大支持小数点后7位
- **accuracy**: 缩放后结果的精度，精确到小数点后几位，直接截取，不四舍五入。整数类型，取值范围\[-1, 8\]。-1或界面不输入，表示不对小数位进行处理
**场景示例**
- 场景1：
机器的基准温度是100℃，但采集器上报的值只为1、2、3、4、5，即可以使用表达式进行计算，得到需要的值。
设ratio = 1, base = 100, Y = X + 100
表1温度转换表 
| X | Y   |
|:--|:---|
| 1 | 101 |
| 2 | 102 |
| 3 | 103 |
   
- 场景2：精度截断场景
设ratio = 0.11, base = 100, accuracy = 2
表2 
| **X**  | **Y**    | **精度处理后** |
|:---|:---|:---|
| 10     | 101.1    | 101.1     |
| 100    | 111      | 111       |
| 100.11 | 111.0121 | 111.01    |
   
- 场景3：
驱动采集点位值的单位为W（瓦），平台接收属性的单位为KW（千瓦），可以使用点位缩放进行单位换算，公式为：Y=0.001X
设ratio = 0.001, base = 0
表3功率换算表 
| X（W）  | Y（KW） |
|:---|:---|
| 100   | 0.1   |
| 1000  | 1     |
| 20000 | 20    |
   
#### 点位清洗
点位清洗，在边侧提供对设备上报的点位进行数据去重、数据波动抑制的功能，适用于降低冗余数据、上云带宽的OT数采场景。
点位清洗规则是针对模块的每个点位，为可选项，使用前需要配置"**静默时间窗** "和"**偏差** "这两个参数。具体操作步骤请参见[点位清洗](https://support.huaweicloud.com/bestpractice-iotedge/iotedge_bestpractice_0126.html#section1)。
**概述**
数据上报：当满足上报条件，数据才会上报。
上报条件有两种：
- 条件1：当前上报值与前一次上报值的差值超过偏差的区间
- 条件2：当前上报与上一次上报的时间差，超过静默时间窗
**偏差** （Deviation）:震荡的偏差区间值，在该区间的值将视作正常的波动，数据将不进行上报，取值范围\[0\~100\]，类型浮点型。如偏差值为10时，表示在±10%（\[-10%, +10%\]）的区间内值将视为正常的波动。
**静默窗口**（SilentWin）: 静默时间窗口，在静默时间窗口内没有触发上报条件的数据，将不会上报。取值范围(0，86400\]，单位秒，当值为0时，表示时间窗口无穷大。
示例说明1（超出偏差范围）：
![](https://support.huaweicloud.com/usermanual-iotedge/figure/zh-cn_image_0000001465932337.png "点击放大")
在第0s，值A上报，开启点位清洗规则。在静默时间窗（SilentWin）内，上报的值为A、B、C、D、E。其中值B、C、D到达时都未满足上报条件，不进行上报。值E到达， \|Data~F~ -- Data~A~\| \> Deviation，触发上报条件1，值E将进行上报。
示例说明2（超出静默时间窗）：
![](https://support.huaweicloud.com/usermanual-iotedge/figure/zh-cn_image_0000001466211781.png "点击放大")
在第0s，值A上报，开启点位清洗规则。在静默时间窗（SilentWin）内，上报的值为A、B、C、D、E。其中值B、C、D到达时都未满足上报条件，不进行上报。值E到达，Time~E~ - Time~A~ \> SilentWin，触发上报条件2，值E将进行上报。
样例数据示例：
SilentWin = 0（无穷大），Deviation = 1%(所有数据都未清洗掉，都上报)
| **时间** | **值（温度）** | **上报数据** |
|:---|:---|:---|
| 0s     | 100℃      | 100℃     |
| 10s    | 200℃      | 200℃     |
| 20s    | 300℃      | 300℃     |
| 30s    | 400℃      | 400℃     |
   
SilentWin =25s，Deviation =0%（超过时区范围，将当前值上报）
| **时间** | **值（温度）** | **上报数据**  |
|:---|:---|:---|
| 0s     | 100℃      | 100℃      |
| 10s    | 100℃      | -         |
| 20s    | 100℃      | -         |
| 30s    | 100℃      | 100℃(30s) |
   
**场景示例**
场景1**：**变更检测
SilentWin = 35s，Deviation = 0%
在35秒的时间窗口内，相同的值将不进行上报。在值有变化之后，将会上报当前值。示例如下：
- 0秒上报值36℃，30s达成条件1，将37℃进行上报。重置时间窗口、上报条件。
- 70秒的值为37℃，达成条件2：70 -- 30 = 40s \> 35s，将37℃(70s)上报，重置时间窗口、上报条件。
| **时间** | **值（温度）** | **上报数据** | **达成条件** |
|:---|:---|:---|:---|
| 0s     | 36℃       | 36℃      | -        |
| 10s    | 36℃       | -        | -        |
| 20s    | 36℃       | -        | -        |
| 30s    | 37℃       | 37℃      | 条件1      |
| 40s    | 37℃       | -        | -        |
| 50s    | 37℃       | -        | -        |
| 60s    | 37℃       | -        | -        |
| 70s    | 37℃       | 37℃(70s) | 条件2      |
   
场景2：波动抑制
SilentWin = 60s，Deviation = 10%
| **时间** | **值（温度）** | **上报数据** |
|:---|:---|:---|
| 0s     | 100℃      | 100℃     |
| 10s    | 96℃       | -        |
| 20s    | 95℃       | -        |
| 25s    | 110℃      | -        |
| 30s    | 120℃      | 120℃     |
| 40s    | 116℃      | -        |
| 50s    | 117℃      | -        |
| 60s    | 121℃      | -        |
| 100s   | 130℃      | 130℃     |
   
#### 点位阈值
该功能开启后需要配置点位上报数据的最大值、最小值，端侧发生设备数据上报时，超出最大值和最小值范围的异常值会被忽略，不进行上报。具体操作步骤，请参考[点位阈值](https://support.huaweicloud.com/bestpractice-iotedge/iotedge_bestpractice_0128.html)。
**应用场景**
- 该功能应用于设备上报数据存在过大过小的不稳定异常值需要忽略时的场景。
- 该功能针对数据源下的每个点位设置，仅支持整型和浮点型的数据类型的点位配置。
**场景示例**
创建点位时，设置点位阈值的最小值为0，最大值为10。
表4上报结果举例 
| 设备上报值 | 是否上报 | 描述                 |
|:---|:---|:---|
| 0     | 是    | 点位阈值端点值放通。         |
| 10    | 是    | 点位阈值端点值放通。         |
| 5     | 是    | 点位阈值范围内放通。         |
| 15    | 否    | 不在点位阈值范围内，作为异常值过滤。 |
   
