You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
1015 B
42 lines
1015 B
1 month ago
|
package algorithm
|
||
|
|
||
|
import (
|
||
|
"gitea.anxinyun.cn/container/common_models"
|
||
|
"log"
|
||
|
)
|
||
|
|
||
|
// StrainCompensationByExternalTemperature
|
||
|
// y=x-k*(T-To)
|
||
|
func StrainCompensationByExternalTemperature(device common_models.SecureStationDevice, RawData map[string]any, RawsUnit map[string]string, temperature float64) (result map[string]any, unit map[string]string) {
|
||
|
var k float64
|
||
|
var x float64
|
||
|
var Tid int
|
||
|
var To float64
|
||
|
paramsMap := device.Params
|
||
|
if kObj, ok := paramsMap["k"]; ok {
|
||
|
k = kObj.(float64)
|
||
|
}
|
||
|
|
||
|
if xObj, ok := RawData["physicalvalue"]; ok {
|
||
|
x = xObj.(float64)
|
||
|
}
|
||
|
|
||
|
if TidObj, ok := paramsMap["Ti"]; ok {
|
||
|
Tid64 := TidObj.(float64)
|
||
|
Tid = int(Tid64)
|
||
|
}
|
||
|
|
||
|
if ToObj, ok := paramsMap["To"]; ok {
|
||
|
To = ToObj.(float64)
|
||
|
}
|
||
|
T := temperature
|
||
|
y := x - k*(T-To)
|
||
|
log.Printf("%v=%v-%v*(%v-%v),Tid=%d", y, x, k, To, temperature, Tid)
|
||
|
result = make(map[string]any)
|
||
|
unit = make(map[string]string)
|
||
|
//注意 y是中间变量 也是公式的最终输出
|
||
|
result["y"] = y
|
||
|
unit["y"] = "με"
|
||
|
return result, unit
|
||
|
}
|