无线传输理论距离
无线传输理论距离
起因
在工作上碰到一个问题就是知道了无线的频率、发射功率和接收灵敏度,怎么推测大致的理论距离呢?
方案
基于这个问题在网上冲浪了一波,发现了一个帖子传送门说明了具体的过程。
总的来说,就是通过公式 [Lfs](dB)=32.44+20lgd(km)+20lgf(MHz)
来进行计算。
这个公式中:
- LFs:衰减,就是用
发射功率
-接收灵敏度
,单位dBm - d:距离,单位KM
- f:频率,单位MHz
- lg:是计算函数log10
公式转换
所以这里就变成了一个数学问题,知道了LFs、和f,如何求出对数里面的d。
其实我们只要通过这个公式就能进行对数函数内的未知数的求解,如下(引用自指数与对数--数学乐):
所以公式就转换为:
d = pow ( 10 , ( ( LFs - 32.44 - 20 * log10( f ) ) / 20 ) )
实现
既然确定了方案,就做一个简单的实现,选择了一个最快的方式:JavaScript + utools插件实现
JS计算函数
计算的实现函数如下:
function anten_distance_calc(loss, freq_m) {
var calc_num = math.subtract(loss, "32.44");
calc_num = math.subtract(calc_num, math.multiply( 20, math.log(freq_m, 10) ) );
calc_num = math.divide(calc_num, 20);
calc_num = math.pow(10, calc_num);
calc_num = math.multiply(1000, calc_num);
return calc_num;
}
utools插件页面内容
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="../css/bootstrap.min.css">
<script src="../js/jquery.min.js"></script>
<script src="../js/bootstrap.min.js"></script>
<script src="../js/math.min.js"></script>
<script src="../js/antena_distance_calc.js"></script>
<title>antena_distance_calc</title>
</head>
<body>
<div class="container">
<br/>
<br/>
<br/>
<p>
无线理论最大传输距离
</p>
<br/>
<br/>
<br/>
<form class="form-inline">
<div class="form-group">
<label for="lossInput">LOSS</label>
<input type="text" class="form-control" id="lossInput" placeholder="loss">
</div>
<div class="form-group">
<label for="freqInput">freq</label>
<input type="text" class="form-control" id="freqInput" placeholder="frequency">
</div>
<button type="button" class="btn btn-primary" href="javascript:void(0);" onclick="calc_distance()">
calc
</button>
<div class="form-group">
<input type="text" class="form-control" id="resultOut" placeholder="result">
<label for="resultOut">m</label>
</div>
</form>
<br/>
<div class="btn-group">
<button type="button" class="btn btn-default" data-toggle="modal" data-target="#modal_of_how_to_use_pcm_uac_data_convert">如何使用</button>
</div>
</div>
<!-- 模态框(Modal) 如何使用 -->
<div class="modal fade" id="modal_of_how_to_use_pcm_uac_data_convert" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">
×
</button>
<h4 class="modal-title" id="myModalLabel">
<b>如何使用</b>
</h4>
</div>
<div class="modal-body">
<p>在上方的窗口输入天线的衰减(dBm,发射功率-接收灵敏度)和无线频率(MHz),然后点击蓝色计算按钮,最后在右侧框会出现理论最大距离</p>
<hr>
<p>点击右上方或者面板外退出</p>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal -->
</div>
</body>
<script>
function calc_distance() {
var input1 = document.getElementById("lossInput");
var input2 = document.getElementById("freqInput");
var output = document.getElementById("resultOut");
var input_raw_data1 = input1.value;
var input_raw_data2 = input2.value;
var maxdata = 0;
var temp_data = 0;
var output_data = "";
// console.log(input_raw_data);
output.value = "";
input_raw_data1 = input_raw_data1.replace(/[\r\n]/g, "");
input_raw_data2 = input_raw_data2.replace(/[\r\n]/g, "");
temp_data = anten_distance_calc(input_raw_data1, input_raw_data2);
output_data += temp_data.toString();
// console.log(output_data);
output.value = output_data;
}
function anten_distance_calc(loss, freq_m) {
var calc_num = math.subtract(loss, "32.44");
calc_num = math.subtract(calc_num, math.multiply( 20, math.log(freq_m, 10) ) );
calc_num = math.divide(calc_num, 20);
calc_num = math.pow(10, calc_num);
calc_num = math.multiply(1000, calc_num);
return calc_num;
}
</script>
</html>
具体的插件源码已经开源,传送门。