desc:混合复杂气体相互影响校正

main
xiaowusky 1 year ago
parent 2b5df75eb5
commit 6b87662fc2

@ -1,19 +1,14 @@
package com.yinuo.safetywatcher.watcher.port
import com.yinuo.safetywatcher.watcher.port.cmd.C02
import com.yinuo.safetywatcher.watcher.port.cmd.CH4
import com.yinuo.safetywatcher.watcher.port.cmd.CH4_LEL2PPMFACTOR
import com.yinuo.safetywatcher.watcher.port.cmd.CL2
import com.yinuo.safetywatcher.watcher.port.cmd.CO
import com.yinuo.safetywatcher.watcher.port.cmd.H2
import com.yinuo.safetywatcher.watcher.port.cmd.H2S
import com.yinuo.safetywatcher.watcher.port.cmd.H2_LEL2PPMFACTOR
import com.yinuo.safetywatcher.watcher.port.cmd.HF
import com.yinuo.safetywatcher.watcher.port.cmd.MOLECULAR_C02
import com.yinuo.safetywatcher.watcher.port.cmd.MOLECULAR_CH4
import com.yinuo.safetywatcher.watcher.port.cmd.MOLECULAR_CL2
import com.yinuo.safetywatcher.watcher.port.cmd.MOLECULAR_CO
import com.yinuo.safetywatcher.watcher.port.cmd.MOLECULAR_H2
import com.yinuo.safetywatcher.watcher.port.cmd.MOLECULAR_H2S
import com.yinuo.safetywatcher.watcher.port.cmd.MOLECULAR_HF
import com.yinuo.safetywatcher.watcher.port.cmd.MOLECULAR_NH3
@ -45,7 +40,7 @@ const val H2S_MAX_PPM = 15f
const val H2_MIN_LEL = 25f
const val H2_MAX_LEL = 50f
const val NH3_MIN_PPM = 25f
const val NH3_MAX_PPM = 50f
const val NH3_MAX_PPM = 50f
const val S02_MIN_PPM = 2f
const val S02_MAX_PPM = 5f
const val CL2_MIN_PPM = 0.5f
@ -58,6 +53,7 @@ const val HF_MIN_PPM = 2f
const val HF_MAX_PPM = 6f
const val C02_MIN_PPM = 5000f
const val C02_MAX_PPM = 30000f
//?? TODO VOCS 这个值现在不对
const val VOCS_MIN_PPM = 2f
const val VOCS_MAX_PPM = 6f
@ -69,7 +65,7 @@ const val UNIT_MGM3 = "mg/m3"
const val UNIT_LEL = "%LEL"
// 气体默认阈值表
val default_threshold_map_ppm = hashMapOf<String, Float>(
val default_threshold_map_ppm = hashMapOf(
Pair("${CO}_$MIN_SUFFIX", CO_MIN_PPM),
Pair("${CO}_$MAX_SUFFIX", CO_MAX_PPM),
// Pair("${CH4}_$MIN_SUFFIX", lel2ppm(CH4_MIN_LEL, CH4_LEL2PPMFACTOR)),
@ -96,7 +92,7 @@ val default_threshold_map_ppm = hashMapOf<String, Float>(
)
// 气体默认阈值表
val default_threshold_map_mgm3 = hashMapOf<String, Float>(
val default_threshold_map_mgm3 = hashMapOf(
Pair("${CO}_$MIN_SUFFIX", ppm2mgm3(CO_MIN_PPM, MOLECULAR_CO)),
Pair("${CO}_$MAX_SUFFIX", ppm2mgm3(CO_MAX_PPM, MOLECULAR_CO)),
// Pair("${CH4}_$MIN_SUFFIX", ppm2mgm3(lel2ppm(CH4_MIN_LEL, CH4_LEL2PPMFACTOR), MOLECULAR_CH4)),
@ -121,7 +117,53 @@ val default_threshold_map_mgm3 = hashMapOf<String, Float>(
Pair("${C02}_$MAX_SUFFIX", ppm2mgm3(C02_MAX_PPM, MOLECULAR_C02)),
)
val default_threshold_map_unit = hashMapOf<String, HashMap<String, Float>>(
val default_threshold_map_unit = hashMapOf(
Pair(UNIT_PPM, default_threshold_map_ppm),
Pair(UNIT_MGM3, default_threshold_map_mgm3),
)
)
val so2_gas_cross_impact_map = hashMapOf(
Pair(CO, -0.002f),
Pair(NO2, 1.67f),
Pair(H2S, -0.004f),
Pair(CL2, 0.4f)
)
val co_gas_cross_impact_map = hashMapOf(
Pair(H2S, -0.25f),
Pair(S02, -0.25f),
Pair(NO, -0.5f),
Pair(H2, -0.125f)
)
val h2s_gas_cross_impact_map = hashMapOf(
Pair(CO, -0.02f)
)
val nh3_gas_cross_impact_map = hashMapOf(
Pair(CO, 0.02f),
Pair(H2S, -3.4f),
Pair(C02, 0.0005f),
Pair(H2, 0.0015f),
Pair(S02, -1.6f),
Pair(NO2, 1f),
Pair(CL2, 0.5f)
)
val no_gas_cross_impact_map = hashMapOf(
Pair(H2S, -0.3f),
Pair(NO2, 0.1f)
)
/**
* 气体交叉影响系数表
*/
val gas_cross_impact_map = hashMapOf(
Pair(S02, so2_gas_cross_impact_map),
Pair(CO, co_gas_cross_impact_map),
Pair(H2S, h2s_gas_cross_impact_map),
// Pair(CL2, gas_cross_impact_map),
Pair(NH3, nh3_gas_cross_impact_map),
Pair(NO, no_gas_cross_impact_map),
)

@ -307,7 +307,7 @@ object ParseHelper {
}
/**
* 根据根据其他气体修正当前气体值
* 根据其他气体修正当前气体值
*
* @param type 类型
* @param value 当前值
@ -330,6 +330,13 @@ object ParseHelper {
* 获取气体之间互相的影响系数
*/
private fun getInfluenceCoefficient(type: GasTypeEnum, gasName: String): Float {
val typeKey = type.desc
if (gas_cross_impact_map.containsKey(typeKey)) {
val map = gas_cross_impact_map[typeKey]
if (map?.containsKey(gasName) == true) {
return map[gasName]!!
}
}
return 0f
}
}
Loading…
Cancel
Save