Đề tài Tính toán can nhiễu giữa các vệ tinh

MỤC LỤC CHưƠNG I .11 TỔNG QUAN VỀ THÔNG TIN VỆ TINH .11 1.1. Giới thiệu 11 1.1.1. Lịch sử phát triển của thông tin vệ tinh .11 1.1.2. Cấu trúc tổng thể của một đường thông tin vệ tinh .13 1.1.3. Các đặc điểm của thông tin vệ tinh 13 1.2. Các dạng quỹ đạo của vệ tinh .15 1.2.1. Các dạng quỹ đạo của vệ tinh 15 1.2.2. Các thông số chính của vệ tinh địa tĩnh .17 1.3. Những vấn đề chung của thông tin vệ tinh .19 1.3.1. Các phương pháp đa truy nhập vệ tinh 19 1.3.2. Các băng tần cho thông tin vệ tinh 25 1.4. Các loại dịch vụ trong thông tin vệ tinh .31 1.5. Định vị và duy trì vệ tinh trên quỹ đạo .32 a. Phóng vệ tinh lên quỹ đạo địa tĩnh .32 b. Đưa vệ tinh vào quỹ đạo đĩa tĩnh .33 c. Duy trì vệ tinh trên quỹ đạo .34 CHưƠNG II 35 TỔNG QUAN VỀ VỆ TINH VIỄN THÔNG VINASAT 35 2.1. Các thông số chính của vệ tinh Vinasat .36 2.1.1. Các thông số kỹ thuật chính của vệ tinh Vinasat .36 2.1.2. Các giới hạn khai thác của vệ tinh Vinasat 37 2.2. Phần không gian .39 2.2.1. Bộ phát đáp 39 2.2.2. Máy thu băng rộng .40 2.2.3. Bộ phân kênh vào 42 2.2.4. Bộ khuếch đại công suất 44 2.2.5. Phân hệ anten .44 2.2.6. Phân hệ thông tin .46 2.2.7. Phân hệ đo bám và điều khiển từ xa 47 2.3. Phần mặt đất .49 2.3.1. Hệ thống TVRO .49 2.3.2. Trạm mặt đất thu, phát .49 2.4. Các sơ đồ phân kênh của vệ tinh Vinasat .51 2.5. Vùng phủ sóng vệ tinh Vinasat 54 CHưƠNG III 55 SUY HAO TRONG THÔNG TIN VỆ TINH .55 3.1. Suy hao trong thông tin vệ tinh 55 3.1.1. Suy hao trong không gian tự do .55 3.1.2. Suy hao do tầng đối lưu .56 3.1.3. Suy hao do tầng điện ly .57 3.1.4. Suy hao do thời tiết 57 3.1.5. Suy hao do đặt anten chưa đúng 58 3.1.6. Suy hao trong thiết bị thu .58 3.1.7. Suy hao do phân cực không đối xứng .58 3.1.8. Nhiễu từ vệ tinh khác .58 3.1.9. Trễ truyền dẫn 59 3.2. Lý thuyết tính toán 59 3.2.1. Một số thuật ngữ và lý thuyết tính toán .59 3.2.2. Khảo sát thông số EIRP và G/T ở nước ta .62 CHưƠNG IV 64 TÍNH NHIỄU ẢNH HưỞNG GIỮA VỆ TINH VINASAT VỚI VỆ TINH LÂN CẬN .64 4.1. Giá trị ngưỡng của ∆T/T 65 4.2. Chồng lấn tần số giữa hai vệ tinh .67 4.2.1. Chồng lấn tần số chỉ downlink (wanted) .67 4.2.2. Chồng lấn tần số chỉ uplink (wanted) .67 4.2.3. Chồng lấn tần số chỉ uplink (interfering) .68 4.2.4. Chồng lấn tần số chỉ downlink (interfering) truyền đến ES 68 4.2.5. Chồng lấn tần số cả uplink và downlink 69 4.2.6. Chồng lấn tần số với interfering chỉ downlink tác động đến SAT 69 4.2.7. Chồng lấn tần số với interfering chỉ downlink tác động đến SAT (SAT chỉ uplink) 70 4.3. Cung Phối Hợp Quỹ Đạo .70 4.4. Tính C/I 71 4.5. Tính toán thực tế .74 CHưƠNG V 79 XÂY DỰNG PHẦN MỀM TÍNH CAN NHIỄU GIỮA VỆ TINH VINASAT VỚI VỆ TINH LÂN CẬN 79 TỔNG KẾT .85 TÀI LIỆU THAM KHẢO .86 PHỤ LỤC 87

pdf106 trang | Chia sẻ: banmai | Lượt xem: 2178 | Lượt tải: 4download
Bạn đang xem trước 20 trang tài liệu Đề tài Tính toán can nhiễu giữa các vệ tinh, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ồm: + Tính giá trị ngƣỡng ∆T/T + Các trƣờng hợp chồng lấn tần số + Cung phối hợp tần số + Tính C/I + Hai bài toán thực nghiệm 4.1. Giá trị ngƣỡng của ∆T/T Hình 4.1. Giá trị C/N Với D/C (Down Converter ) là bộ đổi tần xuống từ cao tần (RF) thành trung tần (IF) - Ntot = N + I Với Ntot là tổng các nguồn nhiễu N là công suất tạp âm nhiệt I là tạp âm nhiễu ngoài - Nếu I << N thì I/N < giới hạn ngƣỡng khi đó, không có ảnh hƣởng bất lợi đến hiệu suất hệ thống  phải giữ cho I/N < giới hạn ngƣỡng Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 65 - Nhiễu nhiệt hệ thống: N = KTB Với K là hằng số Bolzman = -228,6 (dBw/Hz 0K) T là nhiệt độ tạp âm bộ thu (0K) B là băng thông (Hz) - Nếu N0 là mật độ phổ công suất tạp âm nhiễu (W/Hz) ta có: N = N0B với N0 = KT - Nếu Im là giá trị max của mật độ phổ của tạp âm nhiễu bên ngoài vào hệ thống là I thì: I ≤ ImB  I/N ≤ Im/N0 - Nếu ∆T là nhiệt độ tạp âm hệ thống tăng lên gây ra bởi Im thì: Im = K∆T  Im/N0 = ∆T/T - Việc tính toán thông qua nhiệt độ nhiệt tạp âm rất thuận lợi vì không phải tính mật độ công xuất nhiễu ngoài qua việc tính tích phân trong toàn bộ băng tần bộ thu. Nhƣ vậy tính toán nhiễu từ bên ngoài thông qua tỷ số T/T sẽ đơn giản hơn nhiều Hình 4.2. Sơ đồ tuyến thông tin vệ tinh Với: Prs là công suất ở đầu ra của anten SAT Pre là công suất ở đầu ra của anten ES γ là độ lợi ( độ khuếch đại) = Pre/ Prs Ts là nhiệt độ tạp âm của máy thu SES Te là nhiệt độ tạp âm của máy thu ES Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 66 T là nhiệt độ tạp âm tƣơng đƣơng của trạm mặt đất: T = Te + γTs Hình 4.3. Vệ tinh gây nhiễu - Im là mật độ công suất nhiễu ở đầu ra anten thu - Im = (p’G’tGr)/L Với: Im = K∆T Suy ra: ∆T = Im/K T/T = Im /KT T/T = (p’ Gt’ Gr )/KLT Im/N0 = T /T ≤ 6% (Theo ITU – R)  giá trị ngƣỡng của T /T  Trƣờng hợp xấu nhất xảy ra với nhiễu can thiệp khi tính T/T : - Với vệ tinh SAT : độ nhạy của máy thu bị ảnh hƣởng bởi nhiễu - Với vệ tinh gây nhiễu: có thể gây ra tối đa nhiễu tới mạng vệ tinh SAT - Giá trị cao nhất của độ khuếch đại anten SAT và anten vệ tinh gây nhiễu: + vệ tinh gây nhiễu truyền đến trạm mặt đất theo đúng hƣớng và vệ tinh VINASAT có anten thu độ khuếch đại cao nhất + vệ tinh VINASAT thu tín hiệu trạm mặt đất đúng hƣớng và vệ tinh gây nhiễu truyền với độ khuếch đại cao nhất - Bức xạ nhiễu gây ra bởi mật độ công suất nhiễu lớn nhất - T quá nhỏ - γ nhận giá trị lớn Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 67 4.2. Chồng lấn tần số giữa hai vệ tinh 4.2.1. Chồng lấn tần số chỉ downlink (wanted) Hình 4.4. Chồng lấn tần số chỉ downlink (wanted) vệ tinh Vinasat chỉ downlink và không uplink: Mật độ công suất nhiễu p’s đƣợc bổ sung thêm nhiễu nhiệt của vệ tinh VINASAT ∆TE ở anten thu trạm mặt đất TE / TE = p’s G’3 G4(w) / LD KTE 4.2.2. Chồng lấn tần số chỉ uplink (wanted) Hình 4.5. Chồng lấn tần số chỉ uplink (wanted) Vệ tinh VINASAT chỉ uplink và không downlink Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 68 Mật độ công suất nhiễu p’e đƣợc bổ sung thêm nhiễu nhiệt ∆Ts ở anten thu tại vệ tinh VINASAT TS / TS = p’e G’1(i) G2 / LU KTS 4.2.3. Chồng lấn tần số chỉ uplink (interfering) Hình 4.6. Chồng lấn tần số chỉ uplink (interfering) Mật độ công suất nhiễu p’e đƣợc bổ sung thêm nhiễu nhiệt TS ở anten thu của vệ tinh VINASAT TS / T =  p’e G’1(i) G2 / LU K T 4.2.4. Chồng lấn tần số chỉ downlink (interfering) truyền đến ES Hình 4.7. Chồng lấn tần số chỉ downlink (interfering) truyền đến ES Mật độ công suất nhiễu p’S đƣợc bổ sung thêm nhiễu nhiệt TE ở anten thu của trạm mặt đất TE / T= p’s G’3G4 (W) / LD K T Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 69 4.2.5. Chồng lấn tần số cả uplink và downlink Hình 4.8. Chồng lấn tần số cả uplink và downlink Mật độ công suất nhiễu p’e và p’S đƣợc bổ sung thêm nhiễu nhiệt TS và TE (TE + TS )/ T = 1/K T[{p’s G’3G4 (W) / LD}+  {p’e G`1(i) G2 / LU}] 4.2.6. Chồng lấn tần số với interfering chỉ downlink tác động đến SAT Hình 4.9. Chồng lấn tần số với interfering chỉ downlink tác động đến SAT Tƣơng tự nhƣ trên ta có: TS / T =  p’S G’3 (S) G2 (S) / LS K T Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 70 4.2.7. Chồng lấn tần số với interfering chỉ downlink tác động đến SAT (SAT chỉ uplink) Hình 4.10. Chồng lấn tần số với interfering chỉ downlink tác động đến SAT (SAT chỉ uplink) Ta có: TS / TS = p’S G’3 (S) G2 (S) / LS K TS 4.3. Cung Phối Hợp Quỹ Đạo  Là khoảng cách giữa hai vệ tinh (tính theo độ) theo quy định của ITU cho các băng tần mà nếu hai vệ tinh nằm trong cung quỹ đạo phối hợp (<=aa giá trị đƣợc liệt kê dƣới đây) của nhau thì có thể khởi động tiến trình phối hợp  Phƣơng pháp này đƣợc thực hiện khi không dùng tính ∆T/T cho các mạng vệ tinh: - Cả 2 đều sử dụng dịch vụ vệ tinh cố định (FSS: FIXED SATELLITE SERVICE), phát thanh vệ tinh (BSS: BROADCASTING SATELLITE) và các hoạt động dịch vụ ở trên vũ trụ - Có sự định hƣớng vệ tinh - Sử dụng băng tần số bên dƣới - Đƣợc định vị với tọa độ thích hợp - Đã thiết lập các băng tần - Thuộc về những mạng vệ tinh mà đƣợc định vị bên trong cung phối hợp Băng Tần Cung Phối Hợp Thích Hợp (aa) 3400 – 10950 MHz ± 10° của vị trí quỹ đạo danh nghĩa Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 71 10.95 – 17.7 GHz ± 9° của vị trí quỹ đạo danh nghĩa trên 17.7 GHz ± 8° của vị trí quỹ đạo danh nghĩa  Khi mạng vệ tinh trong những băng tần đã nêu, phƣơng pháp cung phối hợp đƣợc áp dụng, nếu định vị bên ngoài cung phối hợp thì phối hợp sẽ không đƣợc nhƣng có thể áp dụng đƣợc nếu  T/T > 6%  Khi mạng vệ tinh ở trong băng tần đã nêu, phƣơng pháp cung phối hợp đƣợc áp dụng, nếu định vị bên trong cung phối hợp và  T/T < 6% thì phƣơng pháp cung phối hợp có thể áp dụng  Tóm tắt những điều kiện phối hợp giữa những vệ tinh địa tĩnh trong mạng: - Hai mạng đó nằm trong cung quỹ đạo phối hợp của nhau - Phối hợp đƣợc áp dụng bởi  T/T > 6% hoặc tỷ số C/N dƣới mức yêu cầu - Phối hợp đƣợc kích hoạt bởi ngƣời quản lý khi vệ tinh ở trong băng tần 4.4. Tính C/I  Sự cần thiết phải tính C/I: - Nhu cầu phối hợp đƣợc thiết lập bởi cung phối hợp vệ tinh  T/T > 6% -  T/T > 6% không tất yếu chỉ ra đƣợc sự can thiếp của nhiễu vì việc tính toán T/T không nằm trong các công thức: + Phạm vi hình thành của nhiễu chỉ có giá trị I/N là đƣợc xem xét + Phạm vi chồng chéo tần số giữa tín hiệu mong muốn và tín hiệu gây nhiễu + Mức độ tín hiệu mong muốn + Hiệu quả lọc tín hiệu của máy thu  Tần suất của nhiễu có hại do đó đƣợc tính bởi C/I  Phƣơng pháp luận tính C/I Để kiểm tra xác suất của nhiễu có hại giữa vệ tinh mong muốn và vệ tinh gây nhiễu: - Bƣớc 1: tính toán cơ bản C/I và điều chỉnh nó theo sự chênh lệch băng thông giữa vệ tinh mong muốn và vệ tinh gây nhiễu - Bƣớc 2: tính toán giá trị yêu cầu C/I từ: + theo tiêu chuẩn của ngƣời quản lý hoặc + xuất phát từ tiêu chí của ITU: Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 72 (C/I)yêu cầu = C/N + K ở đây K = 14 hoặc 12,2 (dB) (theo ITU) - Bƣớc 3: tính toán dung sai M = (C/I)điều chỉnh - (C/I)yêu cầu  Phƣơng pháp phân tích tính tƣơng thích 1: - Bƣớc 1: thuật tính toán C/I Tính toán: + (C/I )b : giá trị cơ bản của C/I (sử dụng phƣơng pháp hình học ITU) + (C/I )a = {(C/I )b + Ia}  điều chỉnh giá trị của C/I Ia  can thiệp ( yếu tố điều chỉnh băng thông) + C/I cho uplink và downlink sử dụng giá trị của Ia cho mội trƣờng hợp nhƣ sau: (C/I )u  trƣờng hợp xấu nhất uplink, điều chỉnh giá trị của C/I tại điểm bất kỳ (C/I )d  trƣờng hợp downlink, điều chỉnh giá trị của C/I tại 1 điểm đặc biệt (C/I )T  toàn bộ giá trị C/I tại 1 điểm đặc biệt 1. Trƣờng hợp 1: (C/I )T = (C/I )u khi không có downlink của vệ tinh mong muốn hay vệ tinh gây nhiễu vào hệ thống hoặc cả 2 hoặc hệ thống không trùng nhau trong downlink của hệ thống vệ tinh mong muốn hay vệ tinh gây nhiễu 2. Trƣờng hợp 2: (C/I )T = (C/I )d khi không có uplink của vệ tinh mong muốn hay vệ tinh gây nhiễu vào hệ thống hoặc cả 2 hoặc hệ thống không trùng nhau trong uplink của hệ thống vệ tinh mong muốn hay vệ tinh gây nhiễu 3. Trƣờng hợp 3: khi cả uplink và downlink đều có trong vệ tinh mong muốn và vệ tinh gây nhiễu và chồng lấn tần số trong cả 2 hƣớng (C/I)T = -10lg ( 10 -0,1(C/I) u + 10 -0,1(C/I) d )  Ƣu điểm của việc điều chỉnh nhiễu hoặc băng thông: - Đối với tình huống khi băng thông có sóng mang nhiễu vƣợt quá giá trị mong muốn nó sẽ ảnh hƣởng đến hiệu suất của hệ thống - Khi sóng mang nhiễu nằm hoàn toàn trong giá trị mong muốn: + Không có giảm công suất sóng mang nhiễu Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 73 + Không có lợi thế về băng thông, điều chỉnh đến mức của nhiễu - Khi sóng mang nhiễu có 1 băng thông lớn hơn băng thông của sóng mang mong muốn: công suất của sóng mang nhiễu giảm tƣơng ứng với chồng lấn tần số  Phƣơng pháp phân tích tính tƣơng thích 2: - Bƣớc 2: thuật tính toán C/N và yêu cầu tối thiếu của C/I + tính nhiễu hệ thống ở máy thu (cho uplink và downlink) sử dụng các công thức sau: N = - 228.6 + 10[ log10(TR) + 6 + log10(BW)] (dBW) Với TR: nhiễu nhiệt hệ thống tại máy thu ( 0 K) BW: băng thông máy thu (MHZ) + tính C/N ở điểm thử: (C/N)dBW = CdBW - NdBW + tính (C/N )T là toàn bộ giá trị của C/N (dB) tại điểm thử đặc biệt: 1. trƣờng hợp 1: (C/N )T = (C/N )u  trƣờng hợp xấu nhất C/N (dB) ở 1 vài điểm thử uplink, khi không tồn tại chồng chéo tần số ở downlink của tín hiệu vệ tinh mong muốn và vệ tinh gây nhiễu 2. trƣờng hợp 2: (C/N )T = (C/N )d  downlink C/N (dB) ở vài điểm thử đặc biệt khi không tồn tại chồng lấn tần số ở downlink của tín hiệu vệ tinh mong muốn và vệ tinh gây nhiễu 3. trƣờng hợp 3:Khi tồn tại cả uplink và downlink của tín hiệu vệ tinh mong muốn và vệ tinh gây nhiễu, không tồn tại chồng lấn tần số cả 2 hƣớng (C/N)T = -10lg ( 10 -0,1(C/N) u + 10 -0,1(C/N) d ) Yêu cầu tối thiểu của C/I: C/Itối thiểu = (C/N )T + K Hệ số K phụ thuộc vào loại sóng mang (TV-FM, Digital, SCPC-FM) và nhận những giá trị 14 hoặc 12,2 (dB) (theo ITU)  Phƣơng pháp phân tích tƣơng thích 3: - Bƣớc 3: thuật tính độ dự trữ M + M = (C/I )a - (C/I)m (dB) với (C/I )a: giá trị điều chỉnh của C/I,có tính đến yếu tố điều chỉnh hệ số nhiễu (dB) Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 74 (C/I)m: giá trị tối thiểu của C/I, tính tại mỗi điểm thử (do đó M sẽ có giá trị khác nhau tại mỗi điểm thử) (dB) (C/I)m = (C/N)T + K (K là hệ số) (dB) Do đó: M = (C/I )a - (C/N)T - K (dB) 4.5. Tính toán thực tế  Nghiên cứu tình huống 1: tính T/T , C/I, C/N và M Hình 4.11. Nghiên cứu tình huống 1 - Góc ở tâm (g ) = {(132 - 0.05) – (130.5 + 0.05)} = 1.4 (1) - Khoảng cách vệ tinh với ES: d = 42644(1- 0.2954Cos)1/2 (2) với: Cos = Cos(vĩ độ ES).Cos(hiệu kinh độ đông của VT với kinh độ đông của ES) - Suy hao không gian tự do: L = 20{ log10 f+ log10 d } + 32.45 (dB) (f:MHz) (3) - w = cos –1 [{d2 2 + d4 2 – (84332sin(g/2)) 2 }/2 d2 d4] (4) - i = cos –1 [{d3 2 + d5 2 – (84332sin(g/2)) 2 }/2 d3 d5] (5) Áp dụng (1),(2),(3),(4),(5) ta tính ra các kết quả nhƣ hình - T/T : TE = pS’ + G3’ – L4 + G4(w) = - 48.6 + 20 - 196.263+ 27.461 = -197.4 dB Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 75  te = 10 -19.74 TS = pe’ + G’1(i) – L3 + G2 = -20 + 27.461 - 199.977+21= -171.5 dB  ts = 10 -17.15  = 9,6 dB   = 100.96 = 9.12 T = 15573K t = te+  ts = 10 -19.74 + 9,12 x 10 -17.15 = 6,458.10 -17 (t/t)x100 = (6,458.10-17x 100)/(15573 x 1,38.10-23) = 30050% - C/I : Cuplink = Pe + G1m-L1+ G2m = 25,6 + 53 – 200,08 + 21 = -100,48 dB Cdownlink= Ps+G3 – L2 + G4m= 12,9 + 21 – 194,7 + 49,1 = -111,7 dB Iuplink = Pe’+G’1(I )- L3 +G2 = 16 + 27,461 – 199,977 + 21 = -135,516 dB Idownlink= Ps’+G3’–L4+G4(w) = -12,6 + 20 – 196,22 + 27,461 = -161,359 dB (C/I)uplink = -100,48 + 135,516 = 35.036 dB (C/I)downlink = -111,7 + 161,359 = 49,659 dB C/Itotal = -10 lg ( 10 -3,5 + 10 -4,9659 ) =34,85 dB - C/N: Nu là nhiễu nhiệt của vệ tinh mong muốn Nd là nhiễu nhiệt của trạm mặt đất Nu = -228.6 + 10(log10(1778) + log10(36x10 6 )] = -120,537 dB Nd= -228.6 + 10(log10(184) + log10(36x10 6 )] = -130,389 dB  (C/N)u = -100,48 + 120,537 = 20,057 dB (C/N)d = -111,7 + 130,389 = 18,689 dB (C/N)total = -10 lg ( 10 -2 + 10 -1,8689 ) =16,28 dB - Dự trữ M: (C/I)yêu cầu tối thiểu = (C/N)total + 12.2 dB = 16,28 +12,2 = 28,48 dB M = (C/I)Total - (C/I)yêu cầu tối thiểu = 34,85 – 28,48 = 6,37 dB  Nghiên cứu tình huống 2: tính T/T , C/I, C/N & M Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 76 Hình 4.12. Nghiên cứu tình huống 2 - Góc ở tâm (g ) = {(132 - 0.05) – (130.5 + 0.05)} = 1.4 (1) - Khoảng cách vệ tinh với ES: d = 42644(1- 0.2954Cos)1/2 (2) với: Cos = Cos(vĩ độ ES).Cos(hiệu kinh độ đông của VT với kinh độ đông của ES) - Suy hao không gian tự do: L = 20{ log10 f+ log10 d } + 32.45 (dB) (f:MHz) (3) - w = cos –1 [{d2 2 + d4 2 – (84332sin(g/2)) 2 }/2 d2 d4] (4) - i = cos –1 [{d3 2 + d5 2 – (84332sin(g/2)) 2 }/2 d3 d5] (5) Áp dụng (1),(2),(3),(4),(5) ta tính ra các kết quả nhƣ hình - T/T : TE = pS’ + G3’ – L4 + G4(w) = - 60,4 + 20 - 196.263+ 27.461 = -209,2 dB  te = 10 -20,9 TS = pe’ + G’1(i) – L3 + G2 = -39,9 + 27.461 - 199.977+26= - 186,3 dB  ts = 10 -18,63  = -6 dB   = 10-0,6 = 0,2511 T = 2309K t = te+  ts = 10 -20,9 + 0,2511 x 10 -18,63 = 6,012.10 -20 Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 77 (t/t)x100 = (6,012.10-20 x 100)/(2309 x 1,38.10-23) = 188,7% - C/I : Cuplink = Pe + G1m-L1+ G2m = 22,7 + 53 – 200,08 + 21 = -104,1 dB Cdownlink= Ps+G3 – L2 + G4m= 12,9 + 21 – 194,7 + 49,1 = -111,7 dB Iuplink = Pe’+G’1(I )- L3 +G2 = 19 + 27,461 – 199,977 + 26 = -127,516 dB Idownlink= Ps’+G3’–L4+G4(w) = -1,6 + 20 – 196,22 + 27,461 = -150,359 dB (C/I)uplink = -104,1 + 127,516 = 23,416 dB (C/I)downlink = -111,7 + 150,359 = 38,659 dB C/Itotal = -10 lg ( 10 -2,3416 + 10 -3,8659 ) =23,288 dB - C/N: Nu là nhiễu nhiệt của vệ tinh mong muốn Nd là nhiễu nhiệt của trạm mặt đất Nu = -228.6 + 10(log10(1000) + log10(36x10 6 )] = -123,037 dB Nd= -228.6 + 10(log10(161) + log10(36x10 6 )] = -130,969 dB  (C/N)u = -104,1 + 123,037 = 18,937 dB (C/N)d = -111,7 + 130,969 = 19,269 dB (C/N)total = -10 lg ( 10 -1,8937 + 10 -1,9269 ) =16,09 dB - Dự trữ M: (C/I)yêu cầu tối thiểu = (C/N)total + 12.2 dB = 16,09 +12,2 = 28,29 dB M = (C/I)Total - (C/I)yêu cầu tối thiểu = 23,288 – 28,29 = -5,002 dB * Kết luận: T /T và C/I: những nghiên cứu trên đã cho ta thấy rằng: - Những tín hiệu kết hợp của vệ tinh mong muốn và vệ tinh gây nhiễu: + Chỉ ra sự cần thiết phải phối hợp (T /T = 30050%) + Cho thấy các thông số tƣơng thích khác (M = 6,37; C/I = 34.85dB và (C/I)tối thiểu = 28,48 dB) - Sự kết hợp khác của những tín hiệu trong trƣờng hợp 2: + Cho T /T = 188,7% + Cho thấy sự không phù hợp của M (M = -5.002 dB) - Vì thế có thể suy ra rằng: Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 78 + Khi T /T vƣợt quá 6%, thì khi tính C/I không cần thiết phải chỉ ra nhiễu + Trong trƣờng hợp xấu nhất của ∆T/T không cần để ý tới trƣờng hợp xấu nhất của C/I, đó là bản chất của ∆T/T đại diện cho C/N, dung sai có thể lớn trong kết hợp này và có thể nhỏ trong kết hợp khác Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 79 CHƢƠNG V XÂY DỰNG PHẦN MỀM TÍNH CAN NHIỄU GIỮA VỆ TINH VINASAT VỚI VỆ TINH LÂN CẬN  Mục đích: việc tính toán can nhiễu vệ tinh có rất nhiều thông số và công thức, với việc tạo ra phần mềm này giúp ngƣời dùng có thể tiết kiệm thời gian, giảm nhầm lẫn và tiện lợi khi biết các nhiễu ảnh hƣởng đến vệ tinh, đƣa ra biện pháp giúp giảm ảnh hƣởng đến thông tin vệ tinh  Ngôn ngữ lập trình: phần mềm này đƣợc viết trên ngôn ngữ lập trình C#, ƣu điểm của ngôn ngữ này là dễ sử dụng, C# là sự kết hợp sức mạnh, sự chính xác của ngôn ngữ lập trình C++ và tính dễ phát triển của Visual Basic, môi trƣơng phát triển thân thiện… và quan trọng là thực tế hiện nay các phần mềm giúp quản lý hệ thống VINASAT đều dựa trên C# để lập trình  Thuật toán chƣơng trình: hình 5.1 Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 80 Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 81  Các chức năng của chƣơng trình: - Giao diện chính của chƣơng trình: Hình 5.2. Giao diện chính - Interfering Sat (I.Sat): Hình 5.3. Interfering Sat F, P, Orbit... Phần này chỉ nhập các dữ liệu của vệ tinh gây nhiễu + Orbit: kinh độ đông của I.Sat (độ) + Tolerance: độ chênh lệch hay dung sai của I.sat (độ) + X: kinh độ đông của ES (độ) + Y: vĩ độ bắc của ES (độ) + Fup và Fdown: tần số up và down của I.Sat (MHz) + Bwup và Bwdown: băng thông up và down của I.Sat (MHz) + Ps’ và Pe’: công suất tại đầu ra của anten I.Sat và ES(dBW) Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 82 + Ps’ và Pe’: công suất trên băng thông tại đầu ra của anten I.Sat và ES (dBW/Hz) + I.Sat transmit antenna gain towards wanted ES receiver: I.Sat truyền độ lợi G đến ES của vệ tinh vinasat (dBW) - Wanted Sat (W.Sat): Hình 5.4. Wanted Sat F, P, Orbit... Phần này chỉ nhập các dữ liệu của vệ tinh Vinasat + Orbit: kinh độ đông của I.Sat (độ) + Tolerance: độ chênh lệch hay dung sai của I.sat (độ) + X: kinh độ đông của ES (độ) + Y: vĩ độ bắc của ES (độ) + Fup và Fdown: tần số up và down của W.Sat (MHz) + Bwup và Bwdown: băng thông up và down của W.Sat (MHz) + Ps: công suất tại đầu ra của anten W.Sat (dBW) + Pe: công suất tại đầu ra của anten ES (dBW) + Ts và Te: nhiệt độ tạp âm của máy thu tại W.Sat và ES (0K) + T: nhiệt độ tạp âm tƣơng đƣơng toàn bộ hệ thống + ¥: độ khuếch đại = Pe/ Ps + W.Sat transmit antenna gain towards wanted ES receiver: W.Sat truyền độ lợi G đến ES của vệ tinh vinasat (dBW) + Max receiver antenna gain of W.Sat: giá trị lớn nhất độ lợi anten ở W.Sat (dBW) + Wanted ES max transmit gain: trạm ES truyền độ lợi lớn nhất đến W.Sat Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 83 + Max receiver antenna gain of wanted ES: giá trị lớn nhất độ lợi anten ở W.Sat truyền đến ES (dBW) + receiver antenna gain of W.Sat towards I.transmitting ES: độ lợi nhận đƣợc từ I.ES truyền đến W.Sat (dBW) - Công cụ làm việc: Hình 5.5. Công cụ tính toán + Calculate: tính số liệu + Save: lƣu lại dữ liệu đã nhập + Load: lấy dữ liệu đã có + Reset: trở lại trạng thái ban đầu - các kết quả 1: Hình 5.6. Các kết quả d, L... + wanted ES receiver antenna gain towards I.Sat: độ lợi trạm W.ES thu đƣợc do I.Sat (dB) + Interfering ES transmit antenna gain towards W.Sat: I.ES truyền độ lợi đến W.Sat (dB) + lossup I.Sat (L5): suy hao up của I.Sat (dB) + lossup W.Sat (L1): suy hao up của W.Sat (dB) + lossdown I.Sat (L2): suy hao down của I.Sat (dB) + lossup I.Sat -> W.Sat (L3): suy hao up I.Sat truyền đến W.Sat (dB) + lossdown I.Sat -> W.Sat (L4): suy hao down I.Sat truyền đến W.Sat (dB) + d1, d2, d3, d4, d5: khoảng cách từ ES đến SES (Km) Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 84 - Các kết quả 2: Hình 5.7. Các kết quả ∆Te, ∆Ts, M… + θg : góc ở tâm (độ) + θw và θi: góc tạo bởi 2 vệ tinh (rad) + ∆Te: độ tăng nhiệt độ tạp âm SES (dB) + ∆Ts: độ tăng nhiệt độ tạp âm ES (dB) + ∆T/T (%) + C/Itotal: tỷ số tín hiệu trên nhiễu ngoài (dB) + C/Ntotal: tỷ số tín hiệu trên tạp âm (dB) + Margin M: độ dữ trữ M (dB) Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 85 TỔNG KẾT Với sự phát triển của xã hội hiện nay, các sản phẩm truyền thông đa phƣơng tiện ngày càng phát triển, các dịch vụ di dộng và truyền hình kỹ thuật số đòi hỏi thông tin phải thông suốt, cải thiện chất lƣợng dịch vụ làm cho dung lƣợng đòi hỏi tăng cao, số lƣợng vệ tinh do đó cũng tăng dần làm cho nhiễu tăng cao, yêu cầu cấp thiết phải tính toán can thiệp sao cho nhiễu không quá lớn, tránh ảnh hƣởng đến truyền thông tin. Với những gì đã đạt đƣợc trong nghiên cứu và trình bày trong luận văn này chƣa phải là hoàn chỉnh nhƣng tôi mong muốn kết quả nghiên cứu của tôi sẽ giúp đƣợc phần nào giải quyết vấn đề nhiễu trong thông tin vệ tinh VINASAT. Tôi sẽ tiếp tục nghiên cứu, hoàn thiện và phát triển luận văn này để đáp ứng đƣợc yêu cầu của xã hội. Tôi xin chân thành cảm ơn Giảng Viên Nguyễn Tiến Khải đã hƣớng dẫn tôi thực hiện đề tài này. Cảm ơn toàn thể bạn bè và đồng nghiệp công ty “Cục Tần Số Vô Tuyến Điện” đã giúp đỡ trong quá trình thực hiện luận văn. Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 86 TÀI LIỆU THAM KHẢO [1] PGS-TS. Phạm Minh Việt, Thông Tin Vệ Tinh, NXB KH&KT, 2007 [2] Trần Đình Lƣơng, Thông Tin Vệ Tinh, NXB KH&KT, Tổng Cục Buu Điện [3] [4] thong-VINASAT-1-Ve-tinh-dau-tien-cua-Viet-Nam-chuan-bi-duoc-phong- len-quy-dao.html [5] [6] e_tinh_trong_cac_bang_tan/ [7] ang_tan_su_dung_trong_thong_tin_ve_tinh [8] Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 87 PHỤ LỤC Code chƣơng trình phần mềm: using System; using System.Collections.Generic; using System.IO; using System.Text; using System.Windows.Forms; using Calculator.Component; using Calculator.Global; using DevComponents.DotNetBar; using FileHelpers.DataLink; using FileHelpers; namespace Calculator { public partial class frmMain : Office2007RibbonForm { #region Variable private bool m_CheckCalculator = false; #endregion #region frmMain #region Constructor public frmMain() { InitializeComponent(); frmSplash f = new frmSplash(); f.Show(); System.Threading.Thread.Sleep(2000); f.Close(); } #endregion #region Load private void frmMain_Load(object sender, EventArgs e) { //if (DataService.OpenConnection()) //{ //Default(); //DangNhap(); Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 88 this.Cursor = MyCursors.Create(System.IO.Path.Combine(Application.StartupPath, "Pointer.cur")); // Create the list of frequently used commands for the QAT Customize menu //ribbonControl.QatFrequentCommands.Add(btnDangNhap); //ribbonControl.QatFrequentCommands.Add(btnDangXuat); //ribbonControl.QatFrequentCommands.Add(btnThoat); // Load Quick Access Toolbar layout if one is saved from last session... Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"Software\DevComponents \Ribbon"); if (key != null) { try { string layout = key.GetValue("RibbonPadCSLayout", "").ToString(); if (layout != "" && layout != null) ribbonControl.QatLayout = layout; } finally { key.Close(); } } } #endregion #region Lƣu lại trạng thái khi thoát chƣơng trình private void frmMain_Closing(object sender, System.ComponentModel.CancelEventArgs e) { // Save Quick Access Toolbar layout if it has changed... if (ribbonControl.QatLayoutChanged) { Microsoft.Win32.RegistryKey key = Microsoft.Win32.Registry.CurrentUser.CreateSubKey(@"Software\DevComponent s\Ribbon"); try { key.SetValue("RibbonPadCSLayout", ribbonControl.QatLayout); } finally { key.Close(); Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 89 } } } #endregion #endregion #region Window form generater code private void btnCaculator_Click(object sender, EventArgs e) { bool checkControl = CheckControl(); if (!checkControl) return; m_CheckCalculator = true; try { decimal X1S1 = Converter.ConvertStringToDecimal(txtX1S1.Text); decimal Y1S1 = Converter.ConvertStringToDecimal(txtY1S1.Text); int X2S1 = Converter.ConvertStringToInt(txtX2S1.Text); int Y2S1 = Converter.ConvertStringToInt(txtY2S1.Text); decimal F1up = Converter.ConvertStringToDecimal(txtF1up.Text); decimal B1up = Converter.ConvertStringToDecimal(txtB1up.Text); decimal F1down = Converter.ConvertStringToDecimal(txtF1down.Text); decimal B1down = Converter.ConvertStringToDecimal(txtB1down.Text); decimal Ps1 = Converter.ConvertStringToDecimal(txtPs1.Text); decimal Pe1 = Converter.ConvertStringToDecimal(txtPe1.Text); decimal Gp3 = Converter.ConvertStringToDecimal(txtGp3.Text); decimal G2 = Converter.ConvertStringToDecimal(txtG2.Text); decimal X1S2 = Converter.ConvertStringToDecimal(txtX1S2.Text); decimal Y1S2 = Converter.ConvertStringToDecimal(txtY1S2.Text); int X2S2 = Converter.ConvertStringToInt(txtX2S2.Text); int Y2S2 = Converter.ConvertStringToInt(txtY2S2.Text); decimal Fup2 = Converter.ConvertStringToDecimal(txtFup2.Text); decimal Bup2 = Converter.ConvertStringToDecimal(txtBup2.Text); decimal Fdow2 = Converter.ConvertStringToDecimal(txtFdow2.Text); decimal Bdown2 = Converter.ConvertStringToDecimal(txtBdown2.Text); decimal Ps2 = Converter.ConvertStringToDecimal(txtPs2.Text); decimal Ts = Converter.ConvertStringToDecimal(txtTs.Text); decimal Pe2 = Converter.ConvertStringToDecimal(txtPe2.Text); decimal Te = Converter.ConvertStringToDecimal(txtTe.Text); decimal T = Converter.ConvertStringToDecimal(txtT.Text); decimal Gamma = Converter.ConvertStringToDecimal(txtGamma.Text); decimal G2M = Converter.ConvertStringToDecimal(txtG2M.Text); decimal G1M = Converter.ConvertStringToDecimal(txtG1M.Text); Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 90 decimal G4M = Converter.ConvertStringToDecimal(txtG4M.Text); decimal G3 = Converter.ConvertStringToDecimal(txtG3.Text); decimal ps11 = Converter.ConvertStringToDecimal(txtPs11.Text); decimal pe11 = Converter.ConvertStringToDecimal(txtPe11.Text); decimal dentaG = 0, minDentaG = 0; //decimal tg1, tg2; //Tinh denta G minDentaG = Math.Abs((X1S1 + Y1S1) - (X1S2 + Y1S2)); //if (minDentaG > dentaG) // minDentaG = dentaG; dentaG = Math.Abs((X1S1 + Y1S1) - (X1S2 - Y1S2)); if ( minDentaG > dentaG) minDentaG = dentaG; dentaG = Math.Abs((X1S1 - Y1S1) - (X1S2 + Y1S2)); if (minDentaG > dentaG) minDentaG = dentaG; dentaG = Math.Abs((X1S1 - Y1S1) - (X1S2 - Y1S2)); if (minDentaG > dentaG) minDentaG = dentaG; txtPhiG.Text = Converter.ConvertDecimalToString(minDentaG); //Tinh S double latitude1 = Math.Abs((double) X1S2 - (double) X2S2); double costW1 = (Math.Cos((latitude1 * Math.PI) / 180)) * (Math.Cos((Y2S2 * Math.PI) / 180)); //double temp = Math.Cos((90 * Math.PI) / 180); double d1 = 42644*Math.Sqrt(1 - (0.2954*costW1)); double d2 = d1; double l1 = 20*(Math.Log10((double) Fup2) + Math.Log10(d1)) + 32.45; double l2 = 20*(Math.Log10((double) Fdow2) + Math.Log10(d1)) + 32.45; //Tinh S' double latitude2 = Math.Abs((double) X1S1 - (double) X2S1); double costW2 = Math.Cos((latitude2 * Math.PI) / 180) * Math.Cos((Y2S1 * Math.PI) / 180); double d5 = 42644*Math.Sqrt(1 - (0.2954*costW2)); double d6 = d5; double l5 = 20*(Math.Log10((double) F1up) + Math.Log10(d5)) + 32.45; double l6 = 20*(Math.Log10((double) F1down) + Math.Log10(d5)) + 32.45; Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 91 //Tinh d3: Khoang cach tu tram mat dat S' den ve tinh S double latitude3 = Math.Abs((double) X2S1 - (double) X1S2); double costW3 = Math.Cos((latitude3 * Math.PI) / 180) * Math.Cos((Y2S1 * Math.PI) / 180); double d3 = 42644*Math.Sqrt(1 - (0.2954*costW3)); double l3 = 20*(Math.Log10((double) F1up) + Math.Log10(d3)) + 32.45; //Tinh d4: Khoang ve tinh S' xuong tram mat dat S double latitude4 = Math.Abs((double) X1S1 - (double) X2S2); double costW4 = Math.Cos((latitude4 * Math.PI) / 180) * Math.Cos((Y2S2 * Math.PI) / 180); double d4 = 42644*Math.Sqrt(1 - (0.2954*costW4)); double l4 = 20*(Math.Log10((double) F1down) + Math.Log10(d4)) + 32.45; //Hien thi L txtLossUpS1.Text = Converter.ConvertDecimalToString((decimal) l5); txtLossUpS2.Text = Converter.ConvertDecimalToString((decimal) l1); txtLossDownS.Text = Converter.ConvertDecimalToString((decimal) l2); txtLossUpSS.Text = Converter.ConvertDecimalToString((decimal) l3); txtLossDownSS.Text = Converter.ConvertDecimalToString((decimal) l4); //Hien thi cac gia tri cua d textBoxX1.Text = Converter.ConvertDecimalToString((decimal)d5); textBoxX2.Text = Converter.ConvertDecimalToString((decimal)d1); textBoxX3.Text = Converter.ConvertDecimalToString((decimal)d2 ); textBoxX4.Text = Converter.ConvertDecimalToString((decimal)d3); textBoxX5.Text = Converter.ConvertDecimalToString((decimal)d4); double sinDentaG = Math.Sin((((double)minDentaG / 2) * Math.PI) / 180); //Tinh goc teta double tetaW = Math.Acos(((d2 * d2 + d4 * d4 - Math.Pow((84332 * sinDentaG), 2)) / (2 * d2 * d4))); double tetaI = Math.Acos(((d3 * d3 + d5 * d5 - Math.Pow((84332 * sinDentaG), 2)) / (2 * d3 * d5))); //double tetatem = ((d3*d3 + d5*d5 - Math.Pow((84332*Math.Sin((double) minDentaG/2)), 2)/(2*d3*d5))); double GTetaW = 32 - 25*Math.Log10(tetaW*180/Math.PI); double GTetaI = 32 - 25 * Math.Log10(tetaI * 180 / Math.PI); Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 92 //Hien thi teta txtUpPhiI.Text = Converter.ConvertDecimalToString((decimal) tetaI); txtDownPhiW.Text = Converter.ConvertDecimalToString((decimal) tetaW); txtDoLoiPhatGocLechVT.Text = Converter.ConvertDecimalToString((decimal) GTetaW); txtDoLoiPhatGocLechMD.Text = Converter.ConvertDecimalToString((decimal) GTetaI); //Tinh denta E, S decimal dentaE = ps11 + Gp3 - (decimal) l4 + (decimal) GTetaW; decimal dentaS = pe11 + G2 - (decimal) l3 + (decimal) GTetaI; txtDentaTe.Text = Converter.ConvertDecimalToString(dentaE); txtDentaTs.Text = Converter.ConvertDecimalToString(dentaS); //Tinh Shi Te, Ts, gamma double shiTe = Math.Pow(10, (double) dentaE/10); double shiTs = Math.Pow(10, (double) dentaS/10); double gamma = Math.Pow(10, (double) Gamma/10); double tongShi = shiTe + shiTs*gamma; double dentaT_T = (tongShi*100)/((double) T*1.38*Math.Pow(10, -23)); txtDentaTT.Text = Converter.ConvertDecimalToString((decimal) dentaT_T); //Tinh tong C/I, C/N, Ia double bWInteferingP = 10 * Math.Log10((double)B1up); double bWWantedP = 10 * Math.Log10((double)Bup2); double iA = 0; if (bWInteferingP > bWWantedP) iA = bWInteferingP - bWWantedP; //up decimal cUp = Pe2 + G1M - (decimal) l1 + G2M; decimal iUp = Pe1 + G2 - (decimal) l3 + (decimal) GTetaI - (decimal)iA; decimal tongC_Iup = cUp - iUp; //down decimal cDown = Ps2 + G3 - (decimal) l2 + G4M; decimal iDown = Ps1 + Gp3 - (decimal)l4 + (decimal)GTetaW - (decimal)iA; Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 93 //C/I decimal tongC_Idown = cDown - iDown; double tongC_I = -10* Math.Log10(Math.Pow(10, -(double) tongC_Iup/10) + Math.Pow(10, -(double) tongC_Idown/10)); txtTotalCI.Text = Converter.ConvertDecimalToString((decimal) tongC_I); //C/N double nUp = -228.6 + 10*(Math.Log10((double) Ts) + 6 + Math.Log10((double) Bup2)); double nDown = -228.6 + 10*(Math.Log10((double) Te) + 6 + Math.Log10((double) Bdown2)); decimal tongC_Nup = cUp - (decimal) nUp; decimal tongC_Ndown = cDown - (decimal) nDown; double tongC_N = -10* Math.Log10(Math.Pow(10, -(double) tongC_Nup/10) + Math.Pow(10, -(double) tongC_Ndown/10)); txtTotalCN.Text = Converter.ConvertDecimalToString((decimal) tongC_N); //Tinh M double margin = tongC_I - tongC_N - 12.2; txtMarginM.Text = Converter.ConvertDecimalToString((decimal) margin); //Ket luan string txtKetLuan = string.Empty; if (dentaT_T < 0.06) txtKetLuan = "Không phải phối hợp !"; else { } } catch { MessageBoxEx.Show("Dữ liệu lỗi ! ", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); } } Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 94 private void btnSave_Click(object sender, EventArgs e) { //if(!m_CheckCalculator) //{ // MessageBoxEx.Show("Hãy Thực hiện tính toán trƣớc khi lƣu file !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); //} List listEntity = new List(); CaculatorEntity entity = new CaculatorEntity(); entity.Name1 = txtX1S1.Text; entity.Name2 = txtY1S1.Text; entity.Name3 = txtX2S1.Text; entity.Name4 = txtY2S1.Text; entity.Name5 = txtF1up.Text; entity.Name6 = txtB1up.Text; entity.Name7 = txtF1down.Text; entity.Name8 = txtB1down.Text; entity.Name9 = txtPs1.Text; entity.Name10 = txtPe1.Text; entity.Name11 = txtGp3.Text; entity.Name12 = txtG2.Text; entity.Name13 = txtX1S2.Text; entity.Name14 = txtY1S2.Text; entity.Name15 = txtX2S2.Text; entity.Name16 = txtY2S2.Text; entity.Name17 = txtFup2.Text; entity.Name18 = txtBup2.Text; entity.Name19 = txtFdow2.Text; entity.Name20 = txtBdown2.Text; entity.Name21 = txtPs2.Text; entity.Name22 = txtTs.Text; entity.Name23 = txtPe2.Text; entity.Name24 = txtTe.Text; entity.Name25 = txtT.Text; entity.Name26 = txtGamma.Text; entity.Name27 = txtG2M.Text; entity.Name28 = txtG1M.Text; entity.Name29 = txtG4M.Text; entity.Name30 = txtG3.Text; entity.Name31 = txtDoLoiPhatGocLechVT.Text; entity.Name32 = txtDoLoiPhatGocLechMD.Text; entity.Name33 = txtPhiG.Text; entity.Name34 = txtUpPhiI.Text; entity.Name35 = txtLossUpS1.Text; Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 95 entity.Name36 = txtDownPhiW.Text; entity.Name37 = txtLossUpS2.Text; entity.Name38 = txtLossDownS.Text; entity.Name39 = txtLossUpSS.Text; entity.Name40 = txtLossDownSS.Text; entity.Name41 = txtPs11.Text; entity.Name42 = txtPe11.Text; entity.Name43 = txtDentaTe.Text; entity.Name44 = txtDentaTs.Text; entity.Name45 = txtDentaTT.Text; entity.Name46 = txtTotalCI.Text; entity.Name47 = txtTotalCN.Text; entity.Name48 = txtMarginM.Text; entity.Name49= textBoxX5.Text; entity.Name50 = textBoxX1.Text; entity.Name51 = textBoxX2.Text; entity.Name52 = textBoxX3.Text; entity.Name53 = textBoxX4.Text; listEntity.Add(entity); FileHelperEngine engine = new FileHelperEngine(typeof(CaculatorEntity)); engine.Encoding = Encoding.UTF8; string fileName = "Data_" + DateTime.Now.ToString("yyMMdd_hhmm") + ".txt"; string temPath = Application.StartupPath + @"\Data\" + fileName; string errPath = Application.StartupPath + @"\" + fileName; //engine.WriteFile(temPath, listTradinSlipNo); if (File.Exists(temPath)) File.Delete(temPath); try { engine.WriteFile(temPath, listEntity); MessageBoxEx.Show("File: " + fileName + "\n đã đƣợc lƣu thành công !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); } catch { engine.WriteFile(errPath, listEntity); MessageBoxEx.Show("File: " + fileName + "\n đã đƣợc lƣu thành công !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); } Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 96 } private void btnOpen_Click(object sender, EventArgs e) { string strFilePath = string.Empty; OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "All File|*.*|Excel 97-2003|*.xls|Excel 2007|*.xlsx|Text|*.txt|DIF|*.dif"; ofd.InitialDirectory = Application.StartupPath + @"\Data"; ofd.FilterIndex = 1; DialogResult result = ofd.ShowDialog(); if (result == DialogResult.OK) { string FilePath = ofd.FileName; //string FileName = Path.GetFileName(FilePath); try { strFilePath = FilePath; } catch { MessageBoxEx.Show("Hãy chọn file cần mở !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information); } } else return; //ExcelStorage provider = new ExcelStorage(typeof(CaculatorEntity)); //provider.StartRow = 3; //provider.StartColumn = 2; //provider.FileName = strFilePath; FileHelperEngine provider = new FileHelperEngine(typeof(CaculatorEntity)); CaculatorEntity[] res = null; try { //res = (CaculatorEntity[])provider.ExtractRecords(); res = (CaculatorEntity[])provider.ReadFile(strFilePath); Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 97 } catch { MessageBoxEx.Show("File đã chọn không đúng định dạng !", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); } //Show data if (res != null) { ShowData(res); btnCaculator_Click(sender, e); } } private void ShowData(CaculatorEntity[] arrEntity) { if(arrEntity.Length > 0) { CaculatorEntity entity = arrEntity[0]; txtX1S1.Text = entity.Name1; txtY1S1.Text = entity.Name2; txtX2S1.Text = entity.Name3; txtY2S1.Text = entity.Name4; txtF1up.Text = entity.Name5; txtB1up.Text = entity.Name6; txtF1down.Text = entity.Name7; txtB1down.Text = entity.Name8; txtPs1.Text = entity.Name9; txtPe1.Text = entity.Name10; txtGp3.Text = entity.Name11; txtG2.Text = entity.Name12; txtX1S2.Text = entity.Name13; txtY1S2.Text = entity.Name14; txtX2S2.Text = entity.Name15; txtY2S2.Text = entity.Name16; txtFup2.Text = entity.Name17; txtBup2.Text = entity.Name18; txtFdow2.Text = entity.Name19; txtBdown2.Text = entity.Name20; txtPs2.Text = entity.Name21; txtTs.Text = entity.Name22; txtPe2.Text = entity.Name23; txtTe.Text = entity.Name24; txtT.Text = entity.Name25; Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 98 txtGamma.Text = entity.Name26; txtG2M.Text = entity.Name27; txtG1M.Text = entity.Name28; txtG4M.Text = entity.Name29; txtG3.Text = entity.Name30; txtDoLoiPhatGocLechVT.Text = entity.Name31; txtDoLoiPhatGocLechMD.Text = entity.Name32; txtPhiG.Text = entity.Name33; txtUpPhiI.Text = entity.Name34; txtLossUpS1.Text = entity.Name35; txtDownPhiW.Text = entity.Name36; txtLossUpS2.Text = entity.Name37; txtLossDownS.Text = entity.Name38; txtLossUpSS.Text = entity.Name39; txtLossDownSS.Text = entity.Name40; txtPs11.Text = entity.Name41; txtPe11.Text = entity.Name42; txtDentaTe.Text = entity.Name43; txtDentaTs.Text = entity.Name44; txtDentaTT.Text = entity.Name45; txtTotalCI.Text = entity.Name46; txtTotalCN.Text = entity.Name47; txtMarginM.Text = entity.Name48; //textBoxX5.Text = entity.Name49; //textBoxX1.Text = entity.Name50; //textBoxX2.Text = entity.Name51; //textBoxX3.Text = entity.Name52; //textBoxX4.Text = entity.Name53; } } private void btnReset_Click(object sender, EventArgs e) { m_CheckCalculator = false; txtB1down.Text = string.Empty; txtB1up.Text = string.Empty; txtBdown2.Text = string.Empty; txtBup2.Text = string.Empty; txtDentaTe.Text = string.Empty; txtDentaTs.Text = string.Empty; txtDentaTT.Text = string.Empty; txtG3.Text = string.Empty; txtG1M.Text = string.Empty; txtG4M.Text = string.Empty; Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 99 txtG2M.Text = string.Empty; txtDoLoiPhatGocLechMD.Text = string.Empty; txtDoLoiPhatGocLechVT.Text = string.Empty; txtG2.Text = string.Empty; txtGp3.Text = string.Empty; txtDownPhiW.Text = string.Empty; txtF1down.Text = string.Empty; txtF1up.Text = string.Empty; txtFdow2.Text = string.Empty; txtFup2.Text = string.Empty; txtGamma.Text = string.Empty; txtLossDownS.Text = string.Empty; txtLossDownSS.Text = string.Empty; txtLossUpS1.Text = string.Empty; txtLossUpS2.Text = string.Empty; txtLossUpSS.Text = string.Empty; txtMarginM.Text = string.Empty; txtPe1.Text = string.Empty; txtPe2.Text = string.Empty; txtPhiG.Text = string.Empty; txtPs1.Text = string.Empty; txtPs2.Text = string.Empty; txtT.Text = string.Empty; txtTe.Text = string.Empty; txtTotalCI.Text = string.Empty; txtTotalCN.Text = string.Empty; txtTs.Text = string.Empty; txtUpPhiI.Text = string.Empty; txtX1S1.Text = string.Empty; txtX1S2.Text = string.Empty; txtX2S1.Text = string.Empty; txtX2S2.Text = string.Empty; txtY1S1.Text = string.Empty; txtY1S2.Text = string.Empty; txtY2S1.Text = string.Empty; txtY2S2.Text = string.Empty; txtPs11.Text = string.Empty; txtPe11.Text = string.Empty; textBoxX5.Text = string.Empty; textBoxX1.Text = string.Empty; textBoxX2.Text = string.Empty; textBoxX3.Text = string.Empty; textBoxX4.Text = string.Empty; } private void btnThoat_Click(object sender, EventArgs e) Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 100 { this.Close(); } private void txt_KeyPress(object sender, KeyPressEventArgs e) { // Lấy về đối tƣợng TextBox TextBox textBox = (TextBox)sender; textBox.ImeMode = ImeMode.Disable; char chrNumberDecimalSeparator = System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator.To CharArray()[0]; // Lấy về mã ASCII của ký tự vừa đƣợc gõ vào TextBox char keycode = e.KeyChar; int c = (int)keycode; // Kiểm tra ký tự vừa nhập vào có phải là các số nằm trong khoảng // 0..9 if ((c >= 48) && (c <= 57)) { e.Handled = false; } else //Kiểm tra xem đã có dấu cách của số thập phân đã tồn tại chƣa? if (c==45 ||(c == (chrNumberDecimalSeparator) && textBox.Text.IndexOf(chrNumberDecimalSeparator) == -1)) { e.Handled = false; } else { e.Handled = true; } if (c == 8) { e.Handled = false; } } #endregion #region User function define Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 101 private bool CheckControl() { if(txtX1S1.Text.Trim()==string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtX1S1.Focus(); return false; } if (txtY1S1.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtY1S1.Focus(); return false; } if (txtX2S1.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtX2S1.Focus(); return false; } if (txtY2S1.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtY2S1.Focus(); return false; } if (txtF1up.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtF1up.Focus(); return false; } if (txtB1up.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtB1up.Focus(); return false; } if (txtF1down.Text.Trim() == string.Empty) { Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 102 MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtF1down.Focus(); return false; } if (txtB1down.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtB1down.Focus(); return false; } if (txtPs1.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtPs1.Focus(); return false; } if (txtPe1.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtPe1.Focus(); return false; } if (txtGp3.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtGp3.Focus(); return false; } if (txtG2.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtG2.Focus(); return false; } if (txtX1S2.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtX1S2.Focus(); return false; Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 103 } if (txtY1S2.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtY1S2.Focus(); return false; } if (txtX2S2.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtX2S2.Focus(); return false; } if (txtY2S2.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtY2S2.Focus(); return false; } if (txtFup2.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtFup2.Focus(); return false; } if (txtBup2.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtBup2.Focus(); return false; } if (txtFdow2.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtFdow2.Focus(); return false; } if (txtBdown2.Text.Trim() == string.Empty) { Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 104 MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtBdown2.Focus(); return false; } if (txtPs2.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtPs2.Focus(); return false; } if (txtTs.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtTs.Focus(); return false; } if (txtPe2.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtPe2.Focus(); return false; } if (txtTe.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtTe.Focus(); return false; } if (txtT.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtT.Focus(); return false; } if (txtGamma.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtGamma.Focus(); return false; Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 105 } if (txtG2M.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtG2M.Focus(); return false; } if (txtG1M.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtG1M.Focus(); return false; } if (txtG4M.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtG4M.Focus(); return false; } if (txtG3.Text.Trim() == string.Empty) { MessageBoxEx.Show("Hãy nhập giá trị cần tính ?", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error); txtG3.Focus(); return false; } return true; } #endregion private void txtX2S2_TextChanged(object sender, EventArgs e) { } private void groupBox3_Enter(object sender, EventArgs e) { } private void txtX1S1_TextChanged(object sender, EventArgs e) Đồ án tốt nghiệp Tính can nhiễu giữa các vệ tinh Sinh viên thực hiện: Nguyễn Văn Linh 106 { } private void label32_Click(object sender, EventArgs e) { } } }

Các file đính kèm theo tài liệu này:

  • pdftinh can nhieu giua cac ve tinh.pdf
Tài liệu liên quan