Читать бесплатно книгу «Энергетический расчет канала дальней тропосферной радиосвязи (Программа для ЭВМ)» Владимира Ивановича Шломы полностью онлайн — MyBook
image
cover

Владимир Шлома
Энергетический расчет канала дальней тропосферной радиосвязи (Программа для ЭВМ)

Реферат

Программа предназначена для проведения на ЭВМ энергетического расчета канала связи дальней тропосферной радиосвязи по двум методикам. Расчет радиосвязи производится при различных видах модуляций, для любого времени года и для любого места, выбранного на карте. Программа работает в среде Matlab.

Программа обеспечивает выполнение следующих функций:

– 

расчет затухания в свободном пространстве при реальных антеннах;

– 

расчет быстрых замираний;

– 

расчет медленных замираний;

– 

расчет медианных затуханий;

– 

расчет полного затухания;

– 

расчет медианной мощности сигнала на выходе приемника;

– 

расчет мощности сигнала на входе приемника;

– 

расчет энергетического запаса трассы;

– 

расчет предельной дальности связи;

– 

расчет отношения сигнал/шум на входе приемника;

– 

расчет вероятности ошибки при заданном виде модуляции.

Тип ЭВМ: IBM PC-совместимые ПК.

Язык: Matlab.

IDE: MatlabR2014b.

ОС: Windows XP/Vista/7/8/10.

Объем исполнимого файла: 1,4 Мб.

Исходный код программы

main.m

function varargout = main(varargin)

gui_Singleton = 1;

gui_State = struct('gui_Name', mfilename, …

'gui_Singleton', gui_Singleton, …

'gui_OpeningFcn', @main_OpeningFcn, …

'gui_OutputFcn', @main_OutputFcn, …

'gui_LayoutFcn', [] , …

'gui_Callback', []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

function main_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

global Nk

global tipcan

global n

global Tm

global kan

global Sez

global Tp

global Lk

Lk=1;

Tp=1;

Sez=1;

kan=2;

Tm=1;

n=1;

tipcan=1;

Nk=1;

set(handles.uipanel13,'visible','on');

set(handles.uipanel12,'visible','off');

guidata(hObject, handles);

function varargout = main_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

function pushbutton2_Callback(hObject, eventdata, handles)

global Sez

if Sez ==1;

picture();

end

if Sez ==2;

picture_2();

end

if Sez ==3;

picture_3();

end

function edit14_Callback(hObject, eventdata, handles)

function edit14_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function popupmenu2_Callback(hObject, eventdata, handles)

global Nk

contents = get(hObject,'Value');

switch contents

case 1

Nk=1;

case 2

Nk = 2;

case 3

Nk = 3;

case 4

Nk = 4;

case 5

Nk = 5;

case 6

Nk = 6;

case 7

Nk = 7;

otherwise

end

function popupmenu2_CreateFcn(hObject, ~, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function pushbutton3_Callback(hObject, eventdata, handles)

picture_3();

function listbox1_Callback(hObject, eventdata, handles)

contents = get(hObject,'Value');

global TIPp

switch contents

case 1

TIPp=1;

case 2

TIPp = 2;

end

function listbox1_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit8_Callback(hObject, eventdata, handles)

function edit8_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit9_Callback(hObject, eventdata, handles)

function edit9_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit10_Callback(hObject, eventdata, handles)

function edit10_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit11_Callback(hObject, eventdata, handles)

function edit11_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit12_Callback(hObject, eventdata, handles)

function edit12_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit13_Callback(hObject, eventdata, handles)

function edit13_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit1_Callback(hObject, eventdata, handles)

function edit1_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit2_Callback(hObject, eventdata, handles)

function edit2_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit3_Callback(hObject, eventdata, handles)

function edit3_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit4_Callback(hObject, eventdata, handles)

function edit4_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit5_Callback(hObject, eventdata, handles)

function edit5_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit6_Callback(hObject, eventdata, handles)

function edit6_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit7_Callback(hObject, eventdata, handles)

function edit7_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit21_Callback(hObject, eventdata, handles)

function edit21_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function edit22_Callback(hObject, eventdata, handles)

function edit22_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function popupmenu1_Callback(hObject, eventdata, handles)

contents = get(hObject,'Value');

global n

switch contents

case 1

n=1;

case 2

n = 2;

case 3

n = 4;

end

function popupmenu1_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function radiobutton5_Callback(hObject, eventdata, handles)

global tipcan

if get (handles.radiobutton5,'value') == 1

set(handles.radiobutton6,'value',0);

set(handles.uipanel13,'visible','off');

set(handles.uipanel12,'visible','on');

tipcan=2;

end

function radiobutton6_Callback(hObject, eventdata, handles)

global tipcan

if get (handles.radiobutton6,'value') == 1

set(handles.radiobutton5,'value',0);

set(handles.uipanel13,'visible','on');

set(handles.uipanel12,'visible','off');

tipcan=1;

end

function listbox6_Callback(hObject, eventdata, handles)

global Tm

contents = get(hObject,'Value');

switch contents

case 1

Tm=1;

case 2

Tm = 2;

case 3

Tm = 3;

case 4

Tm = 4;

case 5

Tm = 5;

otherwise

end

function listbox6_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function listbox7_Callback(hObject, eventdata, handles)

global kan

contents = get(hObject,'Value');

switch contents

case 1

kan=2;

case 2

kan = 1;

otherwise

end

function listbox7_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function listbox10_Callback(hObject, eventdata, handles)

global Sez

contents = get(hObject,'Value');

switch contents

case 1

Sez=1;

case 2

Sez = 2;

case 3

Sez = 3;

otherwise

end

function listbox10_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function listbox11_Callback(hObject, eventdata, handles)

global Tp

contents = get(hObject,'Value');

switch contents

case 1

Tp=1;

case 2

Tp = 2;

case 3

Tp = 3;

case 4

Tp = 4;

otherwise

end

function listbox11_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))

set(hObject,'BackgroundColor','white');

end

function pushbutton1_Callback(hObject, eventdata, handles)

global Pvh1vt

global Lm1z

global Pvh1med

global L2z

global L2

global Pvh2

global h02

global Zap2

global h0t1

global Lz

global h01

global L1

global Zap1

global Rpred

global Lbz

global L0

global Lmz

global Pvh2medvt

global tipcan

global n

global TIPp

global Tm

global kan

global Sez

global Tp

global L0r

global L2med

global Pvh2vt

global m

global h0t2

global Pcht1

global Nk

global Pch2

global Lk

f = str2num(char(get(handles.edit1,'String')))

P=str2num(char(get(handles.edit2,'String'))); Pfr=str2double(char(get(handles.edit3,'String')));

Gr=str2num(char(get(handles.edit4,'String')));

a=str2double(char(get(handles.edit5,'String')));

h=str2num(char(get(handles.edit6,'String')));

Ugr=str2num(char(get(handles.edit7,'String')));

Fe=str2double(char(get(handles.edit8,'String')));

Pfp=str2double(char(get(handles.edit9,'String')));

Gp=str2num(char(get(handles.edit10,'String')));

Ugp=str2num(char(get(handles.edit13,'String')));

dfk=str2num(char(get(handles.edit22,'String')));

nk=str2num(char(get(handles.edit21,'String')));

m=str2num(char(get(handles.edit23,'String')));

V=str2num(char(get(handles.edit24,'String')));

R=150;

dF=40;

Fk=nk*3100-1250;

Po=1e-4;

Tpr=99.0;

if Sez==1

disp('Введите климатические потери для района работы радиолинии в соответствии с картой')

Lk=str2num(char(get(handles.edit14,'String'))) ;

elseif Sez==2

Lk=str2num(char(get(handles.edit14,'String')));

end

l=30000/f; L0=22+20*log10(R*1e5/l);

L0r=22+20*log10(R*1e5/l)-Gr-Gp-Pfr-Pfp; disp(['L0r=', num2str(L0r),' дБ (потери в свободном пространстве при реальных антеннах)']);

Lmed=62.92*exp(-((l+18.19)/174)^2)+(0.07608*l^(-0.4984)+0.06596)*R; sig=5.116*exp(-((R-205.7)/577.5)^2);

if Sez==2

Lmed=Lmed-12;

sig=4.676*exp(-((R-124.9)/332.4)^2)+3.165*exp(-((R-382)/508.3)^2);

elseif Sez==3

Lmed=Lmed-6;

sig=6.118*exp(-((R-158.6)/547.8)^2); end

if tipcan==2

[Lbz]=Lbzam(Tpr,n);

sig1=0.177*exp(0.2585*sig)-23.48*exp(-0.2856*sig); F=0;

for x=0:0.5:30;

F=1/2+1/2*erf(log(10^(x/20))/(10^(sig1/20)));

if F>=Tpr/100

break;

end

end

Lmz=x;

Lz=Lbz+Lmz;

if Tm==1

B=10*log10(-4/n*log(2^n*Po

elseif Tm==2

B=10*log10(-2/n*log(2^n*Po));

elseif Tm==3 || Tm==4 || Tm==5

B=10*log10(-1/n*log(2^n*Po));

end

disp(['Lbz=', num2str(Lbz),' дБ (потери от быстрых замираний)']);

disp(['Lmz=', num2str(Lmz),' дБ (потери от медленных замираний)']);

elseif tipcan==1

B=35;

if sig<3

sig=3;

elseif sig>7

sig=7;

end

sigma=fix(sig);

[ Lz1 ] = Lzam(Tpr, n, sigma);

sigma=fix(sig)+1;

if sigma>7

Lz2=Lz1;

else

[ Lz2 ] = Lzam(Tpr, n, sigma);

end

sigdr=sig-fix(sig);

Lz=Lz1+(Lz2-Lz1)*sigdr;

end

disp(['Lz=', num2str(Lz),' дБ (потери от медленных и быстрых замираний)']);

delta=Ugr+Ugp+0.056*sqrt(h);

if abs(R-300)<abs(R-250)

R1=300;

elseif abs(R-250)<abs(R-200)

R1=250;

elseif abs(R-200)<abs(R-150)

R1=200;

elseif abs(R-150)<abs(R-100)

R1=150;

else

R1=100;

end

if R1==100

a1=10.09;

b1=0.2266;

c1=-10.33;

d1=-1.994;

elseif R1==150

a1=9.399;

b1=0.1913;

c1=-9.604;

d1=-1.576;

elseif R1==200

a1=7.04;

b1=0.2457;

c1=-7.011;

d1=-1.612;

elseif R1==250

a1=7.807;

b1=0.1683;

c1=-7.757;

d1=-1.013;

elseif R1==300

a1=7.073;

b1=0.2235;

c1=-7.159;

d1=-1.404;

end

Lp=a1*exp(b1*delta)+c1*exp(d1*delta);

X=h*100/l;

if X<12

if abs(R-400)<abs(R-300)

R2=400;

elseif abs(R-300)<abs(R-200)

R2=300;

elseif abs(R-200)<abs(R-150)

R2=200;

elseif abs(R-150)<abs(R-100)

R2=150;

else

R2=100;

end

if R2==100

a1=1.983e15;

b1=-54.05;

c1=9.514;

a2=18.74;

b2=-6.452;

c2=11.95;

elseif R2==150

a1=1.661e15;

b1=-45.48;

c1=8.023;

a2=14.88;

b2=-3.284;

c2=8.104;

elseif R2==200

a1=1.439e9;

b1=-52.15;

c1=12.28;

a2=3.78;

b2=3.267;

c2=3.428;

elseif R2==300

a1=7835;

b1=-4.066;

c1=3.974;

a2=-7425;

b2=-3.92;

c2=3.917;

elseif R2==400

a1=8.829e13;

b1=-47.8;

c1=9.207;

a2=-4457;

b2=-6.454;

c2=3.497;

end

Lh=a1*exp(-((X-b1)/c1)^2)+a2*exp(-((X-b2)/c2)^2); else

Lh=0;

end

La=0.07*exp(0.055*(Gr+Gp));

Ldop=Lmed+Lz+Lp+Lh+La+Lk;

L1m=L0r+Ldop;

Lm1m=L1m-Lz;

Lm1c=Lm1m+4.676*exp(-((R-124.9)/332.4)^2)+3.165*exp(-((R-3828)/508.3)^2);

Lm1g=Lm1c-14.96*exp(-((R-74.66)/492.7)^2

if Tp==4

Lm1z=Lm1g;

elseif Tp==3 ||Tp==1

Lm1z=Lm1m;

else

Lm1z=Lm1c;

end

L1=Lm1z+Lz;

disp(['L1=', num2str(L1),' дБ (полное затухание)']);

Pvh1=10*log10(P)-L1;

Pvh1vt=10^(Pvh1/10); \

disp(['Pvh1=', num2str(Pvh1),' дБ (мощность сигнала на входе приемника)']);

disp(['Pvh1=', num2str(Pvh1vt),' вт (мощность сигнала на входе приемника)']);

if kan==1|| tipcan==1 \

disp(['L1med=', num2str(Lm1z),' дБ (медианные потери для заданного периода оценки)']);

Pvh1med=10^((10*log10(P)-Lm1z)/10);

disp(['Pvh1med=', num2str(Pvh1med),' вт (медианная мощность сигнала на входе приемника)']);

Pch1=4e-21*10^(Fe/10)*Nk*3100;

Pcht1=6975e-24*10^(Fe/10)*(Fk/dfk)^2/Pvh1vt;

h0t1=10*log10(1e-3/Pcht1);

h01=1e-3/Pcht1;

disp(['h01=', num2str(h01),'(отношение с/ш на входе детектора)']);

disp(['h0t1=', num2str(h0t1),' дБ (отношение с/ш на выходе тлф канала)']);

disp(['Pcht1=', num2str(Pcht1),' Вт (мощность шума в тлф канале, в точке, где Рс=1мВт)']);

disp(['Pch1=', num2str(Pch1),' Вт (мощность шума на входе приемника при частотном уплотнении)']);

elseif kan==2 && tipcan==2

Pch1=4e-21*10^(Fe/10)*V*1000;

h01=(10^(Pvh1/10))/Pch1;

disp(['h01=', num2str(h01),'(отношение с/ш на входе приемника и на входе детектора)']);

L1m=Lm1z+Lmz;

disp(['L1med=', num2str(L1m),' дБ (затухание тлг канала без быстрых замираний)']);

Pvh1med=10^((10*log10(P)-L1m)/10);

disp(['Pvh1med=', num2str(Pvh1med),' Вт (медианная мощность сигнала на входе приемника тлг канала)']);

disp(['Pch1=', num2str(Pch1),' Вт (мощность шума на входе приемника в Вт при непосредственной модуляции)']);

end

Lpred=10*log10(P)-10*log10(Pch1)-B;

disp(['Lpred=', num2str(Lpred),' дБ (допустимое значение полных потерь)']);

Zap1=Lpred-L1;

disp(['Zap1=', num2str(Zap1),' дБ (энергетический запас трассы)']);

if Zap1<1 && Zap1>0.5

Rpred=R;

else

Lp=Ldop-Lmed;

if abs(Zap1)<3

Kd=L0r/((L1-Lp)*2);

else

Kd=L0r/(L1-Lp);

end

Rpred=l*1e-5*10^((L0+Kd*(Zap1-0.7))/20)/(4*pi);

end

disp(['Rpred=', num2str(Rpred),' км (предельная дальность связи)']);

disp('Введите № климата 1-6 в соответствии с картой, или 7 – морской')

if Nk==1

Ma=39.60;

Ya=0.33;

Ur=3;

elseif Nk==2 || Nk==5

Ma=29.73;

Ya=0.27;

Ur=1;

elseif Nk==3

Ma=19.30;

Ya=0.32;

Ur=4;

elseif Nk==4

Ma=38.50;

Ya=0.27;

Ur=5;

elseif Nk==6

Ma=33.20;

Ya=0.27;

Ur=1;

elseif Nk==7

Ma=26.00;

Ya=0.27;

Ur=2;

end

tet=((Ugr+Ugp)*pi*1e3)/180+0.12*R;

Hn=1e-3*tet*R/4;

hn=4e-6*tet^2*6370/24;

Ln=20*log10(5+Ya*Hn)+4.34*Ya*hn;

ds=8.4933*tet;

if Ur==1

Y90=-2.2-(8.1-2.3e-4*min(f,4000))*exp(-0.137*hn);

elseif Ur==2

Y90=-9.5-3*exp(-0.137*hn);

elseif Ur==3

if ds<100

Y90=-8.2;

elseif 100<ds<1000

Y90=1.006e-8*ds^3-2.569e-5*ds^2+0.02242*ds-10.2;

else

Y90=-3.4;

end

elseif Ur==4

if ds<100

Y90=-10.845;

elseif 100<ds<550

Y90=-4.5e-7*ds^3+4.45e-4*ds^2-0.122*ds-2.645;

else

Y90=-8.4;

end

elseif Ur==5

if ds<100

Y90=-11.5;

elseif 100<ds<1000

Бесплатно

0 
(0 оценок)

Читать книгу: «Энергетический расчет канала дальней тропосферной радиосвязи (Программа для ЭВМ)»

Установите приложение, чтобы читать эту книгу бесплатно

На этой странице вы можете прочитать онлайн книгу «Энергетический расчет канала дальней тропосферной радиосвязи (Программа для ЭВМ)», автора Владимира Ивановича Шломы. Данная книга имеет возрастное ограничение 12+, относится к жанру «Учебно-методические пособия (методички)». Произведение затрагивает такие темы, как «учебники по программированию», «самиздат». Книга «Энергетический расчет канала дальней тропосферной радиосвязи (Программа для ЭВМ)» была написана в 2017 и издана в 2022 году. Приятного чтения!