目录
- 一、基本原理
- 二、程序
- 1.主程序
- 2.MATLAB GUI程序
- 三、运行结果
- 1.主程序
- 2.MATLAB GUI程序
- 四、文件附录
- 五、参考文献
一、基本原理
VOR 系统包括地面设备和机载设备,工作频率为 108.00~117.95MHz,频率间隔 50kHz,共有 200个波道。地面发射的射频信号被两个低频信号调制,一个是基准相位信号,另一个为可变相位信号。基准相位信号在 VOR 台周围的各个方位上相同,可变相位信号相当于旋转波束,其相位随 VOR 台的径向方位而变,飞机与 VOR 台的方位角决定于基准相位信号和可变相位信号之间的相位差,接收机方位角解调的基本思想也就是通过比较基准相位信号和可变相位信号之间的相位差得到飞机与VOR 台的方位角。
地面VOR台工作原理如图:
地面 VOR 台发送的信号包括基准相位信号和可变相位信号,基准相位信号是将 30Hz 信号对 9960Hz 副载波调频后的信号,调频指数为 16,频偏为±480Hz,调频副载波再对甚 高频载波调幅。其信号波形为:
可变相位信号是这样产生的:从基准相位信号高频发射机取出一部分功率去掉调幅部分,进行功率放大,输出没有调制的纯载波,它与基准相位信号的载波是同频、同相的,然后加到测角器,测角器把载波分解成 30Hz 正弦和余弦调制的边带波,合成信号为:
机载接收机原理图如下:
因为甚高频载波频率为108.00~117.95MHz,使用MATLAB仿真需要设置至少两倍于甚高频载波频率的采样频率,这对于电脑硬件性能和MATLAB仿真性能要求过高。因此,为保证仿真性能,保持基准信号30Hz频率不变,将甚高频载波频率由108MHz降低至108kHz,将调频副载波的频率由9960Hz降低至996Hz,超外差接收机第一中频信号频率由24.5MHz降低至24.5kHz,第二中频信号频率由168.5kHz降低至5kHz,设置采样率为300kHz,其余VOR系统基本原理不做更改,进行仿真。
本实验的难点在于如何比对解调出的基准相位信号和可变相位信号获得相位差。因为解调出的信号只能产生时域和频域图,MATLAB无法对其重建表达式,所以本实验依然采用了与实际接收机相似的移相解算法:
在本实验仿真所用的发射机发送信号一共5s长度。在解调过程中,因为使用了大量的滤波器,同时进行了多次的频谱搬移,所以最终获得信号在t=0附近出现明显的畸变,为了使得移相解算出的相位尽可能精确,在本实验中选取了t=1s时刻开始的信号进行移相解算,t=1s时刻,不管是基准相位信号还是可变相位信号都已经完全稳定,移相解算不会受到滤波器的影响。
移相解算法实际具体实现方法是首先获取可变相位信号t=1s时刻的具体数值(记作A1),然后对于基准相位信号从t=1s时刻开始,逐点向后搜索,直到找到某个点处数值(记作B1)与A1值相差在误差允许范围内,则保存移动的点数为i;因为只寻找一个点有可能产生180°的角度误差,所以在完成上述第一个操作后,获取可变相位信号t=1s后1/4个周期处的数字(记作A2),然后对于基准相位信号,向后搜索同样的点数i,获得数值(B2),如果B2和A2相差依然在误差允许范围里面,则认为i值正确反映了基准信号和可变信号的相位差,用i值则可以计算得出VOR方位。
二、程序
程序主要分为“基准相位信号产生”、“可变相位信号产生”、“信号调制”、“超外差接收机”,“提取信号,重建基准信号和可变相位信号”、“移相解算,输出VOR方位”几个部分。
本实验共包括两个程序,一个为用于仿真计算并产生各节点波形的主程序,另一个为基于主程序编写的MATLAB GUI程序,用于图形化界面显示。
在此处给出代码示例,完整代码见文末,主程序免费分析,见文末。
1.主程序
clear all
fs=3e5;
%保证性能,设置采样率为300kHz,将甚高频载波频率由108MHz降低至108kHz进行模拟,将调频副载波的频率由9960Hz降低至996Hz,基准信号30Hz频率不变
t=0:1/fs:5;
%% 基准相位信号产生
f1=30;
y1=cos(2*pi*f1*t); %30Hz基准相位信号
mp=16;
f2=996;
Um=1;
UR=Um*cos(2*pi*f2*t+mp*y1); %基准相位信号调频副载波
figure(1);
plot(t,UR);
axis([0,0.2,-1.1,1.1]);
grid on
%% 可变相位信号产生
k=247; %飞机磁方位
j=k*pi/180;
Uvm=0.5;
Uv=Uvm*cos(2*pi*f1*t+j); %可变相位信号
figure(2);
plot(t,Uv);
axis([0,0.2,-0.6,0.6]);
grid on
2.MATLAB GUI程序
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
pic = imread('radar.png');
axes(handles.axes1)
imagesc(pic);
while(1)
dcm_obj =datacursormode(gcf);
set(dcm_obj,'DisplayStyle','datatip','Enable','on')
pause;
c_info = getCursorInfo(dcm_obj);
pos = c_info.Position;
set(handles.edit1,'string',pos(1));
set(handles.edit2,'string',pos(2));
x = get(handles.edit1,'String');
x = str2double(x);%转化为数字
y = get(handles.edit2,'String');
y = 600-str2double(y);%转化为数字
if(x>=300)
if(y>=300)
k=atan((x-300)/(y-300));
k=k*180/pi;
else
k=atan((x-300)/(y-300));
k=180+k*180/pi;
end
else
if(y>=300)
k=atan((x-300)/(y-300));
k=360+k*180/pi;
else
k=atan((x-300)/(y-300)); %飞机磁方位
k=180+k*180/pi;
三、运行结果
1.主程序
运行后命令行窗口输出预设飞机VOR角的计算值,在上述代码中预设了247°的VOR角度。
同时输出个节点的波形。
通过以1°的间隔遍历0~ 360°,输出测算角度和实际角度的对比图,图中一共有两条曲线,绿色为标准角度,红色为测算角度,可见测算角度的精度已经达到了比较高的水平,除极个别点出现2~3°的误差外,其余点误差大致在±1°之内。
2.MATLAB GUI程序
点击开始后,图形界面出现雷达图,通过鼠标在图像上点击选点,设置飞机位置,按下任意键后,文字框中显示飞机所在位置的实际VOR角度和机载接收机测算出的VOR角度。
四、文件附录
1.主程序
vor.m
2.MATLAB GUI程序
vor1.m
vor1.fig(图形界面文件,由vor1.m调用)
radar.png(图形界面中的雷达图)
3.使用到的滤波器函数
Butterworth_high_10_3e5_100.m
Butterworth_low_10_3e5_3e4.m
Butterworth_low_10_3e5_8e3.m
Butterworth_low_10_3e5_30.m
Butterworth_low_10_3e5_100.m
Butterworth_low_10_3e5_5000.m
4.结果
1.jpg
2.jpg
3.jpg
4.jpg
5.jpg
6.jpg
7.jpg
对比.jpg
下载地址:
主程序:VOR主程序.rar 完整程序(包括GUI):VOR系统.rar
五、参考文献
[1]张建明. 基于软件无线电原理VOR信号解调与仿真[J]. 现代导航, 2013, 4(6):4.