Ton that duong truyen cua khong gian tu do\n"; printf"2.. Ton hao cua bo suy hao hoac cac vat chan\n"; printf"4... Cac hieu ung fading phang\n"; printf"4.. tinh toan kha nang su dung\
Trang 1CHƯƠNG 15: TRÌNH TÍNH TOÁN TUYẾN VI BA
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <math.h>
#include "c:\hien\viba.h"
double f,ha,h1,h2,d,Ao,feeder,Lv,Aa,lamda,G,A, FMa, FMb,Gt;
double
A1,pr,pt,RXa,RXb,loseA,loseB,G1,po,pa,pb,Ta,Tb; double khongkhadung,Za,Zb,p10,p60;
double mem =3.95,e=2.71828,giandoan,tong_giandoan;
double erfc_fun(double x)
{
double k;
int i;
for (i=0;i<260;i++)
if(erfd[i]==x)
k=erfdr[i];
return k;
}
double arround(double x)
{
double nguyen,thapphan,tamp,tmp,temp;
thapphan = modf(x,&nguyen);
thapphan = thapphan*100;
tamp = modf(thapphan,&temp);
if(tamp<=0.3) tamp = 0;
if(0.3<tamp && tamp <=0.7) tamp =0.5;
if(tamp>0.7) tamp =1;
thapphan = temp + tamp;
thapphan = thapphan /100;
return thapphan + nguyen;
}
void nhap_bien()
{
printf("\nNhap Thong So\n");
printf("Cho biet do dai duong truyen dan (km):
"); scanf("%lf",&d);
Trang 2printf("Cho biet tan so lam viec trung tam
(GHz): "); scanf("%lf",&f);
clrscr();
}
void free_space_lose()//ton that tuyen cua khong gian tu do
{
Ao = 92.5 + 20*log10(f) + 20*log10(d);
printf("Ton that duong truyen cua khong gian tu
do la: %.3lf dB", Ao);
}
void feeder_lose() //ton that feeder
{
double lf1,lf2,feeder_type;
printf("Cho biet loai feeder su dung: \n");
printf("1 RG-59/U\n");
printf("2 RG-11/U\n");
printf("3 RG-24/U\n");
printf("4 RG-58/U\n");
switch(getch())
{
case '1' : feeder_type = 3.4; break;
case '2' : feeder_type = 2.5; break;
case '3' : feeder_type = 2; break;
case '4' : feeder_type = 7.8; break;
default : feeder_type =3.4;
}
printf("\nCho biet do cao anten tai tram A (m):
"); scanf("%lf",&h1);
printf("Cho biet do cao anten tai tram B (m):
"); scanf("%lf",&h2);
lf1 = 1.5*h1;
lf2 = 1.5*h2;
loseA = lf1*3.28*feeder_type/100;
loseB = lf2*3.28*feeder_type/100;
feeder = loseA + loseB;
printf("Ton that feeder tai tram A: %.3lf dB\n", loseA);
printf("Ton that feeder tai tram B: %.3lf dB\n", loseB);
printf("Ton that feeder: %.3lf dB\n", feeder); }
Trang 3void vatchan() //ton hao cua bo suy hao hoac cac vat chanx
{
double d1[100],d2[100], hc[100],V[100],c,tmp;
int i, vc;
printf("Co bao nhieu vat chan: ");
scanf("%d",&vc);
for(i=0; i<vc; i++)
{
printf("Cho biet khoang cach tu tram A den vat chan thu %d: ",i+1);
scanf("%lf", &tmp); d1[i] =tmp;
printf("Cho biet khoang cach tu tram B den vat chan thu %d: ",i+1);
scanf("%lf",&tmp); d2[i]=tmp;
printf("Cho biet do cao vat chan %d:",i+1); scanf("%lf",&tmp); hc[i] =tmp;
}
c = 3*pow(10,8);
lamda = c/(f*pow(10,9));
for(i=0;i<vc;i++)
printf("hc = %lf\n",hc[i]);
printf("Lamda = %0.3lf c= %0.3lf\n",lamda,c);
for(i=0;i<vc;i++)
{
V[i] = hc[i] * sqrt( (2/lamda) * (1/d1[i]) * (1/d2[i]));
printf("\n V[%d] = %lf\n",i+1,V[i]);
}
for(Lv=0,i=0;i<vc;i++)
Lv += 6.4 + 20*log10(sqrt(V[i]+1)) + V[i];
printf("Ton hao cua bo suy hao hoac cac vat
chan: %.3lf dB", Lv);
}
void khiquyen() //ton hao khi quyen
{
double Tkq;
printf("Cho biet ton hao dac trung cua khi quyen : "); scanf("%lf",&Tkq);
Aa=Tkq*d;
printf("Ton hao khi quyen: %.3lf dB ",Aa);
}
void total()//tong ton hao
{
double renhanh,bodaunoi;
Trang 4printf("Cho biet ton hao re nhanh ( 2dB-8dB ):
"); scanf("%lf",&renhanh);
printf("Cho biet ton hao cac bo dau noi( 0.5dB-1dB) : "); scanf("%lf",&bodaunoi);
A = Ao + Aa + feeder + renhanh + bodaunoi + Lv; printf("Tong ton hao la: %.3lf dB", A);
}
void line_lose() //ton hao tuyen truyen
{
while(1)
{
clrscr();
printf("Ton that tuyen:\n");
printf("1 Ton that duong truyen cua khong gian
tu do\n");
printf("2 Ton that feeder\n");
printf("3 Ton hao cua bo suy hao hoac cac vat chan\n");
printf("4 Ton hao khi quyen \n");
printf("5 Tong ton hao \n");
printf("s Exit\n");
printf("Select: \n");
switch( getch())
{
case '1' : free_space_lose(); break;
case '2' : feeder_lose(); break;
case '3' : vatchan(); break;
case '4' : khiquyen();break;
case '5' : total();break;
}
if(getche() == '6') break ;
}
}
void gain() //do loi
{
double D,n;
clrscr();
printf("\t\tTinh Toan Do Loi\n");
printf("Cho biet cong suat may phat(dBm): "); scanf("%lf",&pt);
printf("Cho biet duong kinh anten (m): ");
scanf("%lf",&D);
Trang 5printf("Cho biet goc mo hieu dung: ");
scanf("%lf",&n);
printf("Cho biet nguong thu ung voi BER = 10^-3 (dB): "); scanf("%lf",&RXa);
printf("Cho biet nguong thu ung voi BER = 10^-6 (dB): "); scanf("%lf",&RXb);
G = 20 * log10(D) - 20*log10(lamda) + 10 *
log10(n) + 9.943;
G1 = pt; Gt = 2*G + G1 ;
A1 = A - Gt; pr = pt -A1;
FMa = pr -RXa;
FMb = pr - RXb;
clrscr();
printf("\n");
printf("Do loi cua anten: %.3lf dB\n",G);
printf("Do loi may phat: %.3lf dB\n",G1);
printf("Tong do loi: %.3lf dB\n", Gt);
printf("Tong ton hao: %.3lf dB\n", A1);
printf("Muc dau vao cua may thu: %.3lf dBm\n", pr);
printf("Do du tru fading phang FMa: %.3lf dB,voi BER = 10^-3\n", FMa);
printf("Do du tru fading phang FMb: %.3lf dB,voi BER = 10^-6\n", FMb);
getch();
}
void fading() //gom xac suat fading nhiue tia, xs tai cac nguong, thoi gian fading
{
double a,c, alpha,beta,c2;
double gamma,M,nuy,K,t;
clrscr();
printf("Cho biet he so cai tien dac trung cho dia hinh a (0.25 - 4): ");
scanf("%lf",&a);
printf("Cho biet he so dia hinh C: \n");
printf(" 1 1 cho dia hinh trung binh co khi hau
on doi\n");
printf(" 2 4 cho dia hinh tren mat nuoc bo bien hay khi hau am uot\n");
printf(" 3 0.25 cho dia hinh mien nui va khi hau kho\n");
switch (getch())
{
case '1' : c = 1;printf("C=1"); break;
Trang 6case '2' : c = 4;printf("C=4"); break;
case '3' : c = 0.25;printf("C=0.25"); break;
default : c=1;
}
printf("\nCho biet alpha2: ");
scanf("%lf",&alpha);
printf("Cho biet beta2: "); scanf("%lf",&beta); printf("Cho biet c2: "); scanf("%lf",&c2);
printf("Cho biet toc do bit cuc dai gama b
(MBit/s): ");scanf("%lf",&gamma);
printf("Cho biet so muc trong so do dieu che M :
"); scanf("%lf",&M);
printf("Cho biet dang dieu che :\n");
printf("1 QAM 64\n"); printf("2 QAM 16\n");
printf("3 PSK 8\n"); printf("4 PSK 4\n");
switch( getch())
{
case '1' : printf("Ban chon QAM 64\n"); K =
15.4; break;
case '2' : printf("Ban chon QAM 16\n");K = 5.5; break;
case '3' : printf("Ban chon PSK 8\n");K = 7; break;
case '4' : printf("Ban chon PSK 4\n");K = 1; break;
default : printf("Ban chon khong dung!\nMac nhieu la QAM 64!");K = 15.4;
}
clrscr();
po=0.3*a*c*(f/4)*pow( (d/50),3);
pa = pow(10,(-FMa/10));
pb = pow(10,(-FMb/10));
Ta = c2*pow(10,( (-alpha)* FMa)/10)*pow(f,beta);
Tb = c2*pow(10,( (-alpha)* FMb)/10)*pow(f,beta);
Za = 0.548*log(10/Ta); Zb = 0.548*log(10/Tb);
Za = arround(Za); Zb = arround(Zb);
if(Za>mem || Zb>mem) { printf("So lieu ngoai bang tra!"); delay(500); exit(1);}
p10 = 0.5*erfc_fun(Za); p60 = 0.5*erfc_fun(Zb); if(po>10) nuy =1;
if(0.1<po && po<2) nuy =0.182*pow(po,0.1);
if(po<0.01) nuy =1.44*po;
t= pow( 2 * pow(d,1.5) * (gamma / (
log10(M)/log10(2) )) * pow(10,-6),2);
giandoan = 200*nuy*K*t;
tong_giandoan = giandoan + po*pa;
Trang 7printf("Xac suat fading nhieu tia la: %.8lf\n", po);
printf("Xac suat dat cac nguong RXa:
%.8lf\n",pa);
printf("Xac suat dat cac nguong RXb:
%.8lf\n",pb);
printf("Khoang thoi gian fading voi BER > 10^-3:
%.8lf\n",Ta);
printf("Khoang thoi gian fading voi BER > 10^-6:
%.8lf\n",Tb);
printf("\nXac suat fading dai hon 10s:
%.8lf",p10);
printf("\nXac suat fading dai hon 60s:
%.8lf",p60);
printf("\n Xac suat BER vuot 10^-3: %.8lf",
pa*po);
printf("\n Xac suat BER vuot 10^-6: %.8lf",
pb*po);
printf("\nDo kha dung cua tuyen: %.8lf
%",(1-po*pa*p10)*100);
printf("\n Xac suat BER vuot 10^-6 trong khoang 60s: %.8lf", pa*p10);
printf("\nXac suat mach tro nen khong su dung duoc: %.8lf",po*pa*p10);
printf("\nXac suat BER > 10^-6 trong khoang 60s:
%.8lf",po*p60);
printf("\nThoi gian gian doan thong tin do
fading: %.8lf %",giandoan);
printf("\nTong gian doan thong tin trong BER > 10^-3: %.8lf %",tong_giandoan);
printf("\nXac suat BER > 10^-6 do fading lua
chon: %.8lf",9.82*giandoan);
printf("\nTong BER > 10^-6: %.8lf",
9.828*giandoan + po*pb);
getch();
}
void khadung()
{
double MTTR,MTBF,tong;
printf("Cho biet MTTR: "); scanf("%lf",&MTTR);
printf("Cho biet MTBF: "); scanf("%lf",&MTBF);
khongkhadung =100*(MTTR/(MTBF+MTTR));
tong = 100* po*pa*p10 + 100*p10*giandoan
+khongkhadung;
Trang 8printf("Do khong kha dung la: %.3lf
%\n",khongkhadung);
printf("Do khong su dung duoc do fading phang
nhieu tia: %.3lf %\n",100*po*pa*p10);
printf("Do khong su dung duoc do fading nhieu tia lua chon: %.3lf %\n",100*p10*giandoan);
printf("Tong do khong su dung duoc la:
%.3lf%",tong);
getch();
}
int menu()
{
clrscr();
printf("\n\nTINH CAC THONG SO TON HAO DUONG TRUYEN\n");
printf("1 Ton that tuyen \n");
printf("2 Do loi\n");
printf("3 Cac hieu ung fading phang\n");
printf("4 tinh toan kha nang su dung\n");
printf("5 Exit\n");
printf("Select:\n");
switch(getch())
{
case '1' : line_lose(); return 1;
case '2' : gain(); return 1;
case '3' : fading(); return 1;
case '4' : khadung(); return 1;
case '5' : return 0;
default : return 1;
}
}
void main()
{
int k;
textcolor(BLUE);
textbackground(WHITE);
clrscr();
printf("\t\tCHUONG TRINH TINH TOAN CAC THONG SO DUONG TRUYEN");
nhap_bien();
while(1)
{
k= menu();
if(k==0) break;
Trang 9} }
Trang 10#include <stdio.h>
#include <conio.h>
#include <math.h>
double
erfd[260]={0.000,0.005,0.010,0.015,0.020,0.025
,0.030,0.035,0.040,0.045,0.050,0.055,0.060,0.065,0 070,0.075,0.080,0.085,0.090,0.095,0.100,0.105,0.1 10,0.115,0.120,0.125,0.130,0.135,0.140,0.145,0.150 ,0.155,0.160,0.165,0.170,0.175,0.180,0.185,0.190,0 195,0.200,0.205,0.210,0.215,0.220,0.225,0.230,0.2 35,0.240,0.245,0.250,0.255,0.260,0.265,0.270,0.275 ,0.280,0.285,0.290,0.295,0.300,0.305,0.310,0.315,0 320,0.325,0.330,0.335,0.340,0.345,0.350,0.355,0.3 60,0.365,0.370,0.375,0.380,0.385,0.390,0.395,0.400 ,0.405,0.410,0.415,0.420,0.425,0.430,0.435,0.440,0 445,0.450,0.455,0.460,0.465,0.470,0.475,0.480,0.4 85,0.490,0.495,0.500,0.505,0.510,0.515,0.520,0.525 ,0.530,0.535,0.540,0.545,0.550,0.555,0.560,0.565,0 570,0.575,0.580,0.585,0.590,0.595,0.600,0.605,0.6 10,0.615,0.620,0.625,0.630,0.635,0.640,0.645,0.650 ,0.655,0.660,0.665,0.670,0.675,0.680,0.685,0.690,0 695,0.700,0.705,0.710,0.715,0.720,0.725,0.730,0.7 35,0.740,0.745,0.750,0.755,0.760,0.765,0.770,0.775 ,0.780,0.785,0.790,0.795,0.800,0.805,0.810,0.815,0 820,0.825,0.830,0.835,0.840,0.845,0.850,0.855,0.8 60,0.865,0.870,0.875,0.880,0.885,0.890,0.895,0.900 ,0.905,0.910,0.915,0.920,0.925,0.930,0.935,0.940,0 945,0.950,0.955,0.960,0.965,0.970,0.975,0.980,0.9 85,0.990,0.995,1.000,1.050,1.100,1.150,1.200,1.250 ,1.300,1.350,1.400,1.450,1.500,1.550,1.600,1.650,1 700,1.750,1.800,1.850,1.900,1.950,2.000,2.050,2.1 00,2.150,2.200,2.250,2.300,2.350,2.400,2.450,2.500 ,2.550,2.600,2.650,2.700,2.750,2.800,2.850,2.900,2 950,3.000,3.050,3.100,3.150,3.200,3.250,3.300,3.3 50,3.400,3.450,3.500,3.550,3.600,3.650,3.700,3.750 ,3.800,3.850,3.900,3.950,};
double erfdr[260]=
{1.000000,0.994358,0.988717,0.983076,0.977435,
0.971976,0.961590,0.960523,0.954889,0.949257,
0.943628,0.938002,0.932378,0.926759,0.921142,
0.915530,0.909922,0.904318,0.898719,0.893126,
0.887537,0.881954,0.876377,0.870806,0.965242,
0.859684,0.854133,0.848589,0.843053,0.837524,
Trang 110.804531,0.799064,0.793607,0.788160,0.782723,
0.777297,0.771882,0.766478,0.761085,0.755704,
0.750335,0.744977,0.739632,0.734300,0.728980,
0.723674,0.718380,0.713100,0.707834,0.702582,
0.697344,0.692120,0.686911,0.681717,0.676537,
0.671730,0.666225,0.661092,0.655975,0.650874,
0.645789,0.640721,0.635670,0.630635,0.625618,
0.615635,0.610607,0.605723,0.600794,0.595883,
0.590990,0.586117,0.581261,0.576425,0.571608,
0.566810,0.562031,0.557272,0.552532,0.547813,
0.543113,0.538434,0.533773,0.529136,0.524518,
0.519921,.510789,0.506255,0.501742,0.479250,
0.492780,0.488332,0.483905,0.479500,0.475117,
0.470756,0.466418,0.462101,0.475807,0.453536,
0.449287,0.445061,0.440857,0.436677,0.432519,
0.428384,0.424273,0.420184,0.411619,0.412077,
0.408059,0.404063,0.400092,0.396144,0.392220,
0.388319,0.384442,0.380589,0.376759,0.372954,
0.369172,0.635414,0.361680,0.357971,0.354285,
0.350623,0.346986,0.343372,0.339783,0.336248,
0.332677,0.329600,0.325667,0.332199,0.318755,
0.315334,0.311939,0.308567,0.305219,0.315896,
0.298597,0.295322,0.292071,0.288844,0.285642,
0.282463,0.279309,0.276178,0.273072,0.269990,
0.266931,0.263897,0.260886,0.257899,0.254936,
0.251996,0.249081,0.246189,0.243321,0.240476,
0.237655,0.234857,0.232083,0.229332,0.226604,
0.223900,0.221218,0.218560,0.215925,0.213313,
0.210723,0.208157,0.205613,0.203092,0.200593,
0.198117,0.195664,0.193232,0.190823,0.188436,
0.186072,0.183729,0.181408,0.179109,0.176832,
0.174576,0.172342,0.179130,0.167938,0.165768,
0.163620,0.161492,0.159385,0.157299,0.137564,
0.119795,0.103876,0.089686,0.077100,0.065992,
0.56238,0.047715,0.040305,0.033895,0.028377,
0.023652,0.019624,0.016210,0.013328,0.010901,
0.0088889,0.0072096,0.0058207,0.0046778,0.0037419, 0.0029795,0.0023614,0.0018629,0.0014627,
0.0011432,0.00088929,0.00068853,0.00053060,0.00040 697,0.00031068,0.00023605,0.00017850,0.00013434,0 00010062,0.000075017,0.000055658,0.000041100,0.000 030205,0.000022092,0.000016081,0.00000011649,0.000 0083987,0.0000060247,0.0000043040,0.0000030593,0.0 000021637,0.0000015200,0.0000010673,0.0000007437,0 0000005163,0.0000003563,0.0000002433,0.0000001683
Trang 12,0.0000001137,0.000000076,0.0000000527,0.000000035 3,0.0000000227};