Files

77 lines
2.9 KiB
Matlab

profile = "C";
bandwidth = 20;
include_free_space_pathloss = true;
delay_model = "None";
carrier_frequency = 2.4e9;
mobile_speed = 0;
mobile_altitude = groundStation.Altitude;
satellite_altitude = satConfig.satAltitude;
random_stream = "mt19937ar with seed";
seed = 666;
tx_antenna_count = 1;
rx_antenna_count = 1;
apep = 1000;
txPower = 20;
wifiSensitivity = -85;
reliableRxPower = -75;
amplifierGain = 30;
[cfgEHT, simParameters, channel, chInfo, maxChDelay, satelliteDopplerShift, chanBW] = create_baseline_configuration(profile, bandwidth, include_free_space_pathloss, delay_model, carrier_frequency, mobile_speed, mobile_altitude, satellite_altitude, random_stream, seed, tx_antenna_count, rx_antenna_count, apep);
cfgEHT.User{1}.MCS = 3;
simParameters.TransmitPower = txPower;
if exist("only_define_baseline_vars", "var") && only_define_baseline_vars
return;
end
[~, numPacketsSimulated, ~, rxPower, pathLoss] = simulateTransmission(accessAnalysisResults, cfgEHT, channel, maxChDelay, [], inf, simParameters);
packetIdx = 1:numPacketsSimulated;
packetTimes = accessAnalysisResults.times(packetIdx);
rxPower = rxPower(packetIdx);
pathLoss = pathLoss(packetIdx);
if calc_task2
figure;
plot(packetTimes, rxPower);
grid on;
xtickformat("HH:mm");
xlabel("Time of day [HH:mm]");
ylabel("Power [dBm]");
title("Receive power over time plot of satellite pass");
yline(wifiSensitivity, "--", "receive sensitivity -85 dBm");
yline(reliableRxPower, "--", "reliable reception -75 dBm");
end
% this site helped in providing formulas and a calculator to verify
% https://calculatorshub.net/telecom-calculators/dbm-to-range-calculator/
lambda = physconst("lightspeed") / carrier_frequency;
maxPathLossDetectable = txPower - wifiSensitivity;
maxDistanceDetectable = lambda / (4 * pi) * 10^(maxPathLossDetectable / 20);
maxPathLossReliable = txPower - reliableRxPower;
maxDistanceReliable = lambda / (4 * pi) * 10^(maxPathLossReliable / 20);
requiredTxPower = reliableRxPower + pathLoss;
if calc_task2
figure;
plot(packetTimes, requiredTxPower);
grid on;
xtickformat("HH:mm");
xlabel("Time of day [HH:mm]");
ylabel("Power [dBm]");
title("Required transmit power for -75 dBm receive power");
end
amplifiedTxPower = txPower + amplifierGain;
requiredAntennaGain = max(requiredTxPower - amplifiedTxPower, 0);
validRequiredTxPower = requiredTxPower(isfinite(requiredTxPower));
validRequiredAntennaGain = requiredAntennaGain(isfinite(requiredAntennaGain));
fprintf("Maximum detectable distance at %.0fdBm TX power: %.2fkm\n", txPower, maxDistanceDetectable / 1e3);
fprintf("Maximum reliable distance at %.0fdBm TX power: %.2fkm\n", txPower, maxDistanceReliable / 1e3);
fprintf("Required TX power for -75dBm reception: %.2fdBm to %.2fdBm\n", min(validRequiredTxPower), max(validRequiredTxPower));
fprintf("Required antenna gain with %.0fdB amplifier: %.2fdB to %.2fdB\n", amplifierGain, min(validRequiredAntennaGain), max(validRequiredAntennaGain));