Satellite Frequency Bands

本文详细介绍了卫星通信中使用的L-Band、C-Band、Ku-Band和Ka-Band等频段的特点与应用。从频率范围、带宽、设备要求、应用场景等方面对比分析,揭示了各频段的优势与限制。
部署运行你感兴趣的模型镜像

There is not much L-Band bandwidth available. The higher you go in frequency, the more bandwidth is available, but the equipment needs to be more sophisticated.
在这里插入图片描述
If one could equate the cost and availability of L-Band space segment to say, city real estate, C-Band might be the suburbs, Ku band the countryside, and Ka-Band the prairies of the wild west. Maybe a little more difficult to get to, but a lot of it available at a reasonable price.
L-Band (1-2 GHz) | C-Band (4-8 GHz) | Ku-Band (12-18 GHz) | Ka-Band (26.5-40 GHz)

L-Band (1-2 GHz)

Being a relatively low frequency, L-band is easier to process, requiring less sophisticated and less expensive RF equipment, and due to a wider beam width, the pointing accuracy of the antenna does not have to be as accurate as the higher bands.
Only a small portion (1.3-1.7GHz) of L-Band is allocated to satellite communications on Inmarsat (国际海事卫星组织). Inmarsat uses L-band for their Fleet Broadband, Inmarsat-B and C.
The older Inmarsat A and B antennas were typically 1 meter in diameter, but, with the launch of more powerful satellites and the use of steerable spot beams, the new Fleet broadband antennas are down to less than 30cm (12 inches).
L-Band is also used for low earth orbit satellites, military satellites, and terrestrial wireless connections like GSM mobile phones. It is also used as an intermediate frequency for satellite TV where the Ku or Ka band signals are down-converted to L-Band at the antenna LNB, to make it easier to transport from the antenna to the below deck, or indoor equipment.
Since there is not much bandwidth available in L-band, it is a costly commodity.

C-Band (4-8 GHz)

Satellite C-band usually transmits around 6 GHz and receives around 4 GHz. It uses large (2.4- 3.7 meter) antennas. These are the large white domes that you see on top of the cruise ships and commercial vessels.
C-band is typically used by large ships that traverse the oceans on a regular basis and require uninterrupted, dedicated, always on connectivity as they move from region to region. The shipping lines usually lease segment of satellite bandwidth that is provided to the ships on a full time basis, providing connections to the Internet, the public telephone networks, and data back-hauls to their head office.
C-band is also used for terrestrial microwave links, which can present a problem when vessels come into port and interfere with critical terrestrial links. This has resulted in serious restrictions within 300Km of the coast, requiring terminals to be turned off when coming close to land.

Ku-Band (12-18 GHz)

Ku-Band (pronounced Kay-You) refers to the lower portion of the K-Band. The “u” comes from a German term referring to “under” whereas the “a” in Ka- Band refers to “above” or the top part of K-Band. The middle portion of K-Band is a bit of a mystery. Other than a mention of K-Band radar there are few references on the Internet to it’s use.
Ku-Band is most commonly used for satellite TV and is used for most VSAT systems on yachts and ships today. There is much more bandwidth available in Ku -Band and it is therefore less expensive that C or L-band.
The main disadvantage of Ku-Band is rain fade. The wavelength of rain drops coincides with the wavelength of Ku-Band causing the signal to be attenuated during rain showers. This can be overcome by transmitting extra power but this of course comes with a cost as well.
The pointing accuracy of the antennas need to be much tighter than L-Band Inmarsat terminals, due to narrower beam widths, and consequently the terminals need to be more precise and more expensive.
Ku band coverage is generally by regional spot beams, covering major land areas with TV reception. VSAT Vessels moving from region to region need to change satellite beams, sometimes with no coverage in between beams. Lately this process has been improved with a transatlantic beam on Telstar 11n, and the satellite terminals and modems being programmed to automatically switch beams.
VSAT Antenna sizes typically range from the standard 1 meter, like the SeaTel 4009, to 1.5 meters for operation in fringe areas and, more recently, as low as 60cm for spread spectrum operation.

Ka-Band (26.5-40 GHz)

Ka-Band (pronounced Kay-A) is an extremely high frequency requiring great pointing accuracy and sophisticated RF equipment. Like Ku-band it is susceptible to rain fade. It is commonly used for high definition satellite TV. It is also used today for terrestrial VSAT services from companies like Hughes Networks.
Ka-Band bandwidth is plentiful and once implemented should be quite inexpensive compared to Ku-Band .
In 2010 there is news that Inmarsat will be providing a global Ka-Band VSAT service beginning in 2014. As more Ka-Band bandwidth becomes available, there will be several other satellite providers offering Ka-Band VSAT on a more regional basis.
The advantage of the Inmarsat solution is that it will be global, seamless, much smaller antennas, and should be much cheaper that Ku-Band services today. If priced correctly, this could revolutionize the marine VSAT industry. It will be difficult for smaller companies to compete with the expected $1.4M investment that Inmarsat is making in it’s I5 satellites.

http://www.marinesatellitesystems.com/index.php?page_id=101

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

#define _CRT_SECURE_NO_WARNINGS #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <math.h> #define MAXRINEX 1024 #define MAX_SATELLITES 200 // 卫星结构体 typedef struct { char prn[10]; // 卫星PRN号 (G01, C01, E01等) char system; // 系统标识 (G, C, E) double freq1_north, freq1_east, freq1_up; // 频率1的PCO double freq2_north, freq2_east, freq2_up; // 频率2的PCO int freq1_found; // 频率1是否找到 int freq2_found; // 频率2是否找到 } SatellitePCO; // 时间结构体 typedef struct { int year, month, day, hour, min; double sec; } DateTime; // 全局变量 SatellitePCO satellites[MAX_SATELLITES]; int sat_count = 0; DateTime start_time = { 2024, 6, 7, 2, 0, 0.0 }; // 开始时间: 2024-06-07 02:00:00 DateTime end_time = { 2024, 6, 7, 6, 0, 0.0 }; // 结束时间: 2024-06-07 06:00:00 // 安全的字符串拷贝函数 void safe_strcpy(char* dest, const char* src, size_t dest_size) { if (dest_size > 0) { strncpy(dest, src, dest_size - 1); dest[dest_size - 1] = '\0'; } } // 去除字符串首尾空格 char* trim(char* str) { if (!str) return str; char* end; // 跳过前导空格 while (isspace((unsigned char)*str)) str++; if (*str == 0) return str; // 去除尾部空格 end = str + strlen(str) - 1; while (end > str && isspace((unsigned char)*end)) end--; end[1] = '\0'; return str; } // 解析时间字符串 int parse_time(const char* line, DateTime* time) { if (!line || !time) return 0; return sscanf(line, "%d %d %d %d %d %lf", &time->year, &time->month, &time->day, &time->hour, &time->min, &time->sec); } // 比较时间 int compare_time(const DateTime* t1, const DateTime* t2) { if (!t1 || !t2) return 0; if (t1->year != t2->year) return t1->year - t2->year; if (t1->month != t2->month) return t1->month - t2->month; if (t1->day != t2->day) return t1->day - t2->day; if (t1->hour != t2->hour) return t1->hour - t2->hour; if (t1->min != t2->min) return t1->min - t2->min; if (t1->sec < t2->sec) return -1; if (t1->sec > t2->sec) return 1; return 0; } // 判断时间是否在有效期内 int is_time_valid(const DateTime* valid_from, const DateTime* valid_until, int has_valid_until) { // 检查开始时间是否在有效期内 if (compare_time(valid_from, &start_time) > 0) { return 0; // 有效开始时间晚于我们的开始时间 } // 如果有结束时间,检查结束时间是否在有效期内 if (has_valid_until) { if (compare_time(valid_until, &end_time) < 0) { return 0; // 有效结束时间早于我们的结束时间 } } // 如果没有结束时间,只要开始时间早于我们的开始时间就认为有效 // 因为这意味着该记录从valid_from开始一直有效到现在 return 1; // 时间有效 } // 查找卫星索引 int find_satellite(const char* prn) { if (!prn) return -1; for (int i = 0; i < sat_count; i++) { if (strcmp(satellites[i].prn, prn) == 0) { return i; } } return -1; } // 添加新卫星 int add_satellite(const char* prn, char system) { if (sat_count >= MAX_SATELLITES) return -1; if (!prn) return -1; safe_strcpy(satellites[sat_count].prn, prn, sizeof(satellites[sat_count].prn)); satellites[sat_count].system = system; satellites[sat_count].freq1_found = 0; satellites[sat_count].freq2_found = 0; satellites[sat_count].freq1_north = 0.0; satellites[sat_count].freq1_east = 0.0; satellites[sat_count].freq1_up = 0.0; satellites[sat_count].freq2_north = 0.0; satellites[sat_count].freq2_east = 0.0; satellites[sat_count].freq2_up = 0.0; return sat_count++; } // 解析PCO值 int parse_pco(const char* line, double* north, double* east, double* up) { if (!line || !north || !east || !up) return 0; return sscanf(line, "%lf %lf %lf", north, east, up); } // 获取频率标识 void get_frequency_bands(char system, char* freq1, char* freq2, size_t buf_size) { if (!freq1 || !freq2 || buf_size == 0) return; if (system == 'G') { // GPS safe_strcpy(freq1, "G01", buf_size); safe_strcpy(freq2, "G02", buf_size); } else if (system == 'C') { // BDS safe_strcpy(freq1, "C01", buf_size); // B1I (L1) safe_strcpy(freq2, "C06", buf_size); // B3I (L6) } else if (system == 'E') { // Galileo safe_strcpy(freq1, "E01", buf_size); // E1 (L1) safe_strcpy(freq2, "E05", buf_size); // E5a (L5) } else { freq1[0] = '\0'; freq2[0] = '\0'; } } // 计算无电离层组合系数 void calculate_ionofree_coeff(char system, double* alpha, double* beta) { if (!alpha || !beta) return; double f1, f2; if (system == 'G') { // GPS f1 = 1575.42; // L1 (MHz) f2 = 1227.60; // L2 (MHz) } else if (system == 'C') { // BDS f1 = 1575.42; // B1I (MHz) f2 = 1268.52; // B3I (MHz) } else if (system == 'E') { // Galileo f1 = 1575.42; // E1 (MHz) f2 = 1176.45; // E5a (MHz) } else { *alpha = *beta = 0.0; return; } double f1_sq = f1 * f1; double f2_sq = f2 * f2; double denom = f1_sq - f2_sq; if (fabs(denom) < 1e-9) { *alpha = *beta = 0.0; return; } *alpha = f1_sq / denom; *beta = -f2_sq / denom; } // 处理ATX文件 void process_atx_file(const char* input_file, const char* output_file) { if (!input_file || !output_file) { printf("无效的文件路径!\n"); return; } FILE* fp_in = fopen(input_file, "r"); FILE* fp_out = fopen(output_file, "w"); if (!fp_in) { printf("无法打开输入文件: %s\n", input_file); return; } if (!fp_out) { printf("无法创建输出文件: %s\n", output_file); fclose(fp_in); return; } char line[MAXRINEX]; int in_antenna_block = 0; int valid_satellite = 0; char current_prn[20] = ""; char current_system = '\0'; DateTime valid_from, valid_until; int has_valid_until = 0; char current_freq[10] = ""; // 写入输出文件头 fprintf(fp_out, "PRN 系统 北方向PCO1 东方向PCO1 天顶方向PCO1 北方向PCO2 东方向PCO2 天顶方向PCO2 北方向IFC 东方向IFC 天顶方向IFC\n"); fprintf(fp_out, " (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm) (mm)\n"); fprintf(fp_out, "时间段: 2024-06-07 02:00:00 至 2024-06-07 06:00:00\n\n"); // 跳过文件头 while (fgets(line, sizeof(line), fp_in)) { if (strstr(line + 60, "END OF HEADER")) break; } // 处理天线数据块 while (fgets(line, sizeof(line), fp_in)) { if (strstr(line + 60, "START OF ANTENNA")) { in_antenna_block = 1; valid_satellite = 0; current_prn[0] = '\0'; current_system = '\0'; has_valid_until = 0; continue; } if (strstr(line + 60, "END OF ANTENNA")) { in_antenna_block = 0; continue; } if (!in_antenna_block) continue; // 解析TYPE / SERIAL NO行 if (strstr(line + 60, "TYPE / SERIAL NO")) { char type[50], serial[50], cospar[50]; if (sscanf(line, "%49s %49s %49s", type, serial, cospar) == 3) { safe_strcpy(current_prn, serial, sizeof(current_prn)); current_system = serial[0]; // 只处理G、C、E系统 if (current_system == 'G' || current_system == 'C' || current_system == 'E') { valid_satellite = 1; } else { valid_satellite = 0; } } continue; } // 解析VALID FROM行 if (strstr(line + 60, "VALID FROM")) { if (parse_time(line, &valid_from) == 6) { // 检查时间有效性 if (!is_time_valid(&valid_from, &valid_until, has_valid_until)) { valid_satellite = 0; } } else { valid_satellite = 0; } continue; } // 解析VALID UNTIL行 if (strstr(line + 60, "VALID UNTIL")) { if (parse_time(line, &valid_until) == 6) { has_valid_until = 1; // 检查时间有效性 if (!is_time_valid(&valid_from, &valid_until, has_valid_until)) { valid_satellite = 0; } } else { valid_satellite = 0; } continue; } // 处理频率数据 if (strstr(line + 60, "START OF FREQUENCY") && valid_satellite) { // 如果没有VALID UNTIL行,但需要检查时间有效性 if (!has_valid_until) { if (!is_time_valid(&valid_from, NULL, 0)) { valid_satellite = 0; continue; } } if (sscanf(line, "%9s", current_freq) == 1) { // 去除空格 char* trimmed_freq = trim(current_freq); char expected_freq1[10], expected_freq2[10]; get_frequency_bands(current_system, expected_freq1, expected_freq2, sizeof(expected_freq1)); int sat_index = find_satellite(current_prn); if (sat_index == -1) { sat_index = add_satellite(current_prn, current_system); if (sat_index == -1) { printf("无法添加新卫星,已达到最大数量限制\n"); continue; } } // 读取下一行的PCO值 if (fgets(line, sizeof(line), fp_in)) { double north, east, up; if (parse_pco(line, &north, &east, &up) == 3) { if (strcmp(trimmed_freq, expected_freq1) == 0) { satellites[sat_index].freq1_north = north; satellites[sat_index].freq1_east = east; satellites[sat_index].freq1_up = up; satellites[sat_index].freq1_found = 1; } else if (strcmp(trimmed_freq, expected_freq2) == 0) { satellites[sat_index].freq2_north = north; satellites[sat_index].freq2_east = east; satellites[sat_index].freq2_up = up; satellites[sat_index].freq2_found = 1; } } } } continue; } } // 计算并输出结果 int valid_sat_count = 0; for (int i = 0; i < sat_count; i++) { if (satellites[i].freq1_found && satellites[i].freq2_found) { double alpha, beta; calculate_ionofree_coeff(satellites[i].system, &alpha, &beta); // 计算无电离层组合 double ifc_north = alpha * satellites[i].freq1_north + beta * satellites[i].freq2_north; double ifc_east = alpha * satellites[i].freq1_east + beta * satellites[i].freq2_east; double ifc_up = alpha * satellites[i].freq1_up + beta * satellites[i].freq2_up; fprintf(fp_out, "%-4s %c %9.2f %9.2f %9.2f %9.2f %9.2f %9.2f %9.2f %9.2f %9.2f\n", satellites[i].prn, satellites[i].system, satellites[i].freq1_north, satellites[i].freq1_east, satellites[i].freq1_up, satellites[i].freq2_north, satellites[i].freq2_east, satellites[i].freq2_up, ifc_north, ifc_east, ifc_up); valid_sat_count++; } } fclose(fp_in); fclose(fp_out); printf("处理完成! 结果保存到: %s\n", output_file); printf("时间段: 2024-06-07 02:00:00 至 2024-06-07 06:00:00\n"); printf("共处理了 %d 颗卫星的数据,其中 %d 颗卫星在指定时间段内有效\n", sat_count, valid_sat_count); } int main() { const char* input_file = "D:\\igs20.atx"; const char* output_file = "D:\\five_atx_output.txt"; // 初始化卫星数组 for (int i = 0; i < MAX_SATELLITES; i++) { satellites[i].prn[0] = '\0'; satellites[i].system = '\0'; satellites[i].freq1_found = 0; satellites[i].freq2_found = 0; } process_atx_file(input_file, output_file); return 0; }完善一下代码,现在只能输出CE卫星的,G卫星有符合要求的也不输出,比如:BLOCK IIR-M G01 G049 2009-014A TYPE / SERIAL NO 0 29-JAN-17 METH / BY / # / DATE 0.0 DAZI 0.0 17.0 1.0 ZEN1 / ZEN2 / DZEN 2 # OF FREQUENCIES 2024 4 22 0 0 0.0000000 VALID FROM 2024 10 7 23 59 59.9999999 VALID UNTIL IGS20_2375 SINEX CODE G01 START OF FREQUENCY 0.00 0.00 865.42 NORTH / EAST / UP NOAZI 10.70 10.10 8.00 4.60 0.50 -3.80 -7.50 -9.70 -10.30 -9.50 -7.40 -4.10 0.30 6.00 12.10 22.00 30.40 40.60 G01 END OF FREQUENCY G02 START OF FREQUENCY 0.00 0.00 865.42 NORTH / EAST / UP NOAZI 10.70 10.10 8.00 4.60 0.50 -3.80 -7.50 -9.70 -10.30 -9.50 -7.40 -4.10 0.30 6.00 12.10 22.00 30.40 40.60 G02 END OF FREQUENCY END OF ANTENNA 这是符合要求的,但是没输出
最新发布
11-14
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值