无线传输理论距离

无线传输理论距离

起因

在工作上碰到一个问题就是知道了无线的频率、发射功率和接收灵敏度,怎么推测大致的理论距离呢?

方案

基于这个问题在网上冲浪了一波,发现了一个帖子传送门说明了具体的过程。

总的来说,就是通过公式 [Lfs](dB)=32.44+20lgd(km)+20lgf(MHz) 来进行计算。

这个公式中:

  • LFs:衰减,就是用 发射功率-接收灵敏度,单位dBm
  • d:距离,单位KM
  • f:频率,单位MHz
  • lg:是计算函数log10

公式转换

所以这里就变成了一个数学问题,知道了LFs、和f,如何求出对数里面的d。

其实我们只要通过这个公式就能进行对数函数内的未知数的求解,如下(引用自指数与对数--数学乐):

Dingtalk_20240313162108.jpg

所以公式就转换为:

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>

具体的插件源码已经开源,传送门

效果

Dingtalk_20240313162952.jpg


消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息