Full text
Equation Chapter 1 Section 1 Trabajo Fin de Grado Grado en Ingeniería de las Tecnologías de Telecomunicación Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 Autor: Juan Manuel Peláez Pérez Tutor: Susana Hornillo Mellado Dpto. Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2019
iii Trabajo Fin de Grado Grado en Ingeniería de las Tecnologías de Telecomunicación Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 Autor: Juan Manuel Peláez Pérez Tutor: Susana Hornillo Mellado Profesora Contratada Doctora Dpto. de Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2019
v Trabajo Fin de Grado: Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 Autor: Juan Manuel Peláez Pérez Tutor: Susana Hornillo Mellado El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros: Presidente: Vocales: Secretario: Acuerdan otorgarle la calificación de: Sevilla, 2019 El Secretario del Tribunal
vii A mi familia A todos los esfuerzos realizados a lo largo de este camino
ix Agradecimientos A mis padres, por enseñarme el verdadero sentido de la palabra sacrificio y que, a pesar de las dificultades que se puedan presentar, si algo queremos hay que luchar por ello hasta conseguirlo. A mi hermano, por guiarme y marcarme cuales eran los pasos correctos durante todas las etapas que llevo pasadas. Aunque el camino haya sido difícil, solo he tenido que pisar tus huellas. A mi pareja y compañera de estudios, hemos sufrido juntos las mismas dificultades y disfrutado de las mismas alegrías y, sin lugar a dudas, ahora comenzamos juntos otra nueva etapa en la que nos espera lo mejor. A mis abuelos, por los que están y los que por desgracia no, deberíais de ser eternos. Sé que estaréis brillando aún más. A mi tutora. Susana, gracias por cada palabra de apoyo y por saber transmitir motivación y ganas de aprender. Tuviste un gran peso en mi decisión de escoger Sistemas y es algo que siempre te agradeceré. Juan Manuel Peláez Pérez Sevilla, 2019
5.3.1. callAtenuations(p, freq, latTX, longTX, latRX, longRX, banda, estacion, distancia, R, ITX, IRX) 27 5.3.2. absIonosf_La(p, latTX, longTX, latRX, longRX, distancia) 27 5.3.3. media_R() 28 5.3.4. activSolar_Lr(p, freq, latTX, longTX, latRX, longRX, banda, estacion, distancia, R) 28 5.3.5. acoplaPol_Lp(banda, ITX, IRX, latTX, longTX, latRX, longRX, decTX, decRX) 28 5.3.6. perdHor_Lt(latTX, longTX, latRX, longRX, distancia, utc_zone) 29 6 Resolución analítica 31 6.1. Caso 1. Río de Janeiro → Buenos Aires 32 6.2. Caso 2. Moscú → Tokio 40 6.3. Caso 3. Jerusalén → Bruselas 46 7 Comparación de resultados 53 7.1. Caso 1. Río de Janeiro → Buenos Aires 53 7.2. Caso 2. Moscú → Tokio 55 7.3. Caso 3. Jerusalén → Bruselas 57 8 Conclusiones 59 Referencias 61 Glosario 63 Anexo I 65 Anexo II 67 Anexo III 69 Anexo IV 71
xvii ÍNDICE DE FIGURAS Figura 3-1. Capas de la Ionosfera. [19] 5 Figura 3-2. Concentración de electrones. [18] 7 Figura 3-3. Relación de valores para la fuerza cimomotriz. [26] 8 Figura 3-4. Rango de frecuencias. [2] 9 Figura 3-5. Declinación magnética. [27] 10 Figura 4-1. Ejemplo de situación para el cálculo de la ganancia 12 Figura 4-2. Algunos valores de r1. [21] 13 Figura 4-3. Algunos valores de r2. [22] 14 Figura 4-4. Ganancia debida a la proximidad del mar. [23] 15 Figura 4-5. Relación de valores para la fuerza cimomotriz. [26] 16 Figura 4-6. Valores para la latitud geomagnética. [24] 18 Figura 4-7. Valores para el coeficiente de pérdida básico. [25] 19 Figura 5-1. Ejemplo gráfico para el círculo máximo. [20] 25 Figura 6-1. Ubicación del primer caso 32 Figura 6-2. Ubicación del segundo caso 41 Figura 6-3. Ubicación del último caso 46 Figura 7-1. Datos de entrada. Caso 1-a 53 Figura 7-2. Datos de salida. Caso 1-a 54 Figura 7-3. Datos de entrada. Caso 1-b 54 Figura 7-4. Datos de salida. Caso 1-b 55 Figura 7-5. Datos de entrada. Caso 2-a 55 Figura 7-6. Datos de salida. Caso 2-a 55 Figura 7-7. Datos de entrada. Caso 2-b 56 Figura 7-8. Datos de salida. Caso 2-b 56 Figura 7-9. Datos de entrada. Caso 3-a 57 Figura 7-10. Datos de salida. Caso 3-a 57 Figura 7-11. Datos de entrada. Caso 3-b 57 Figura 7-12. Datos de salida. Caso 3-a 58
xix Notación TX Transmisor RX Receptor < Menor > Mayor ≤ Menor o igual ≥ Mayor o igual ° Grados π Valor pi sen Función seno cos Función coseno tg Función tangente arcsen Función arco seno arctg Función arco tangente sinxy Función seno de y elevado a x cosxy Función coseno de y elevado a x TX Transmisor RX Receptor < Menor > Mayor ≤ Menor o igual ≥ Mayor o igual ° Grados π Valor pi sen Función seno cos Función coseno tg Función tangente arcsen Función arco seno
1 1 INTRODUCCIÓN as primeras aportaciones registradas en referencia al electromagnetismo y que relacionan en parte la existencia de regiones ionizadas las realiza en 1839 el físico y matemático Carl Friedich Gauss [15], dejando la puerta abierta a futuras investigaciones y, como no podía ser de otra forma, éstas se produjeron de manera temprana. Sin embargo, no fue hasta principios del siguiente siglo, en 1902, cuando se nombra por primera vez la existencia de una capa, la cual era responsable de las recepciones de ondas electromagnéticas a largas distancias, de la mano de Arthur E. Kenelly y Oliver Heaviside [15], que a priori se suponía imposible que se produjeran por el simple hecho de que no existía visibilidad directa debido a la curvatura de la Tierra, realizando ambos dicha investigación de manera independiente y despertando una enorme curiosidad por descubrir nuevos acontecimientos relacionados con el tema. El primer experimento con el fin de realizar mediciones de la capa se produjo en Londres en el año 1925 de la mano de Appleton y Barnett [14], el cual constaba en la transmisión de una onda continua y a partir de la formación de interferencias constructivas y destructivas pudieron aproximarse a la obtención de su altura y la nombraron como Capa Eléctrica, o Capa E, mas comúnmente conocida en la actualidad destacando además por ser la primera en ser descubierta. Investigaciones posteriores permitieron descubrir la existencia de una capa anterior y posterior a ésta en cuanto a cercanía a la Tierra, siendo nombradas como Capa D y Capa F respectivamente, las cuales poseen características distintas en función de diversas circunstancias, como pueden ser el momento del dia o incluso el momento del año debido a que depende en gran medida de la actividad solar que posea el Sol, por lo que la estación del año juega un papel muy importante por la cercanía de la Tierra al Sol, entre otras. Dicho descubrimiento supuso un avance importante en cuanto a las comunicaciones se refiere, otorgando de nuevas posibilidades a las investigaciones en curso relacionadas con dicho tema y dando pie a nuevos experimentos que pudieran hacer uso de aquello. Hoy en día, pasados unos cien años, aún se sigue usando dicho mecanismo para las transferencias de datos, por lo que, sin duda, supuso un descubrimiento muy importante y que ha dado pie a descubrimientos futuros. L
3 2 MOTIVACIÓN uy a menudo, y ahora más tras la elección de este proyecto me hago una pregunta, ¿ por qué esquivar el futuro? Quizás este sea uno de los principales motivos de mi elección ya que cada día damos un paso más hacia la digitalización en todos los sentidos, y sobre todo en temas relacionados con la tecnología y telecomunicaciones. Sin embargo, también tengo que reconocer que en mi elección jugó un papel importante el reto que supuso a nivel personal elegir aquel tema que durante toda la carrera peor me había desenvuelto. ¿Era el momento de ponerme a prueba o quizás era el momento de una elección fácil? Sin lugar a dudas, entendí que era el momento de ver lo que era capaz de ofrecer y opté por la primera opción, la de aprender un lenguaje nuevo que durante todo el grado no había estudiado. Lograr este objetivo no solo sirve para acabar esta carrera de fondo, sino que a nivel personal puede abrirme puertas futuras, y como bien se menciona al principio, la programación es el futuro y puede hacer que me decante por ofertas futuras relacionadas con este tema que quizás, sin la elección de este trabajo, hubiera dudado más o directamente rechazado. Quizás, en un futuro no muy lejano, otro alumno con las mismas dudas que yo lea mi proyecto y gracias a él se pueda decantar por la opción que a priori parece más difícil pero que sin duda, en el futuro le ofrecerá mejores oportunidades porque algo de lo que no tengo la menor duda es que todo camino recorrido te ofrece su recompensa pero, mayor recompensa se obtendrá si éste es difícil y uno de los mayores frutos que puedes obtener de las dificultades es que tras superarlas el nivel de confianza depositada en uno mismo crece y te hará hacer cosas que creías que nunca serias capaz de realizar. Otro motivo que ayudó a decantarme por dicho proyecto es uno de mis temas favoritos, la astronomía. Desde pequeño siempre quise estudiar astronomía, sin embargo, conforme vamos creciendo tenemos que tomar decisiones que a priori creemos que será mejor para el futuro. Siempre espero con ganas cualquier avance descubierto en este ámbito y quizás parezca que no tiene mucha relación, pero el simple hecho de tratar con capas atmosféricas y tenerlas que estudiar con mayor profundidad de la que se pueda hacer en una lectura hizo también que me decantara por este trabajo y gracias a esta elección he aprendido un poco más sobre algo relacionado con el espacio. M
5 3 CONCEPTOS BÁSICOS continuación se detallan una serie de conceptos básicos que ayudarán a entender con mayor detalle todos los puntos teóricos en los que se apoya dicha recomendación [10] y para los que se aconseja su previa lectura antes de adentrarnos de lleno en la explicación de la norma. 3.1 Capas de la Ionosfera La ionosfera está compuesta por diversas capas [11] que poseen características distintas en función de la cercanía a la Tierra o, en su defecto, de la cercanía al Sol, las cuales se explican a continuación. Figura 3-1. Capas de la Ionosfera. [19] 3.1.1 Capa D Destaca por ser la más próxima a la Tierra. Esta capa abarca desde los 60 hasta los 90 km de distancia con respecto a la superficie terrestre aproximandamente. Es una capa crítica en cuanto a comunicaciones se refiere ya que, al ser muy absorbente, limita mucho la comunicación, aunque también dependerá de la sensibilidad del receptor. Destaca también por ser una capa diurna, es decir, únicamente aparece de dia ya que en ausencia del Sol desaparece. A
Recomendación ITU-R P.1147 12 12 Figura 4-1. Ejemplo de situación para el cálculo de la ganancia. Como se puede apreciar, la línea que une ambas estaciones está sobre agua, y además, el agua es salada puesto que en este caso se trata del Océano Atlántico. Para el cálculo de la ganancia se hace imprescindible calcular previamente dos distancias para cada estación, s1 y s2, siendo éstas la distancia desde el nodo hasta el mar y la distancia desde el nodo hasta la siguiente sección de tierra, pero ambas distancias calculadas sobre la línea que une ambas estaciones y es aquí el motivo principal por la que dicha ganancia no se aplica si hay mar en los alrededores pero no sobre esta linea, ya que estas distancias se estan calculando empleando dicho procedimiento, por lo que el no tenerlo en cuenta dejaría de tener sentido el cálculo. Los puntos a partir de los cuales de calcula s1 y s2 se especifican en el mismo formato en el que se introduce las ubicaciones de las estaciones. Como se puede intuir, dicha norma no es aplicable en todas las situaciones ya que debe estar dentro de unos límites teóricos que hagan viable el cálculo y que tenga sentido. Para ello, se realiza la obtención de dos variables, r1 y r2. 𝑟1= 103∗ (𝐺02𝑞1∗𝑓 ⁄) (𝑘𝑚) ( 4-1) 𝑟2= 103∗ (𝐺02𝑞2∗𝑓 ⁄) (𝑘𝑚) ( 4-2) Siendo: G0: ganancia debida a la proximdad del mar cuando la estación se encuentra cerca de la costa (dB). f: frecuencia de transmisión empleada (kHz).
13 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 q1: constante con valor de 0.3 en ondas kilométricas y 1.4 en ondas hectométricas. q2: constante con valor de 0.25 en ondas kilométricas y 1.2 en ondas hectométricas. En las siguientes imágenes se puede apreciar diferentes valores tanto de r1 como de r2 para algunas frecuencias, en función de la distancia expresada en kilómetros en ambos casos. Figura 4-2. Algunos valores de r1. [21]
Recomendación ITU-R P.1147 14 14 Figura 4-3. Algunos valores de r2. [22] Dependiendo del caso con el que se esté trabajando, el valor de G0 estará previamente definido o no. Cuando la distancia de separación entre las estaciones sea superior a 6500 km y se esté trabajando con ondas hectométricas, G0 = 10 dB. El otro caso es cuando la distancia de separación entre éstas sea superior a 5000 km y estemos en ondas kilométricas, entonces G0 = 4.1 dB. Solo en el caso en el que no se cumpla ninguna de estas dos condiciones se debe de especificar el valor de dicha variable. En la siguiente imagen se puede apreciar los distintos valores que toma G0 en función de la distancia entre nodos y la banda de trabajo empleada, donde la A hace referencia a la Banda de Ondas Hectométricas y la B a la Banda de Ondas Kilométricas.
15 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 Figura 4-4. Ganancia debida a la proximidad del mar, G0. [23] Cuando r1 > s1 se puede continuar con el cálculo de la ganancia, careciendo el caso contrario de sentido y finalizando el procedimiento en este punto. El siguiente paso es obtener dos correcciones, c1 y c2, las cuales hacen referencia a las distancias s1 y s2 anteriormente calculadas. 𝑐1= 𝐺0∗ 𝑠1 𝑟1 ( 4-3) 𝑐2=𝛼∗(1 − 𝑠2 𝑟2) 𝑝𝑎𝑟𝑎 𝑠2 < 𝑟2 𝑐2=0 𝑝𝑎𝑟𝑎 𝑠2 ≥ 𝑟2 ( 4-4) Donde α hace referencia a la proporción de tierrra existente en el trayecto en el que se calcula r2 y s2 y perteneciendo al rango 0 < α ≤ 1, pero para nuestro caso tomará un valor de 0.5 ya que se carece de datos realtivos al terreno sobre el que se trabajará. Por último, solo nos falta calcular la ganancia final que se produce, para lo cual: 𝐺𝑠= 𝐺0− 𝑐1− 𝑐2 𝑝𝑎𝑟𝑎 (𝑐1+𝑐2) < 𝐺0 𝐺𝑠=0 𝑝𝑎𝑟𝑎 (𝑐1+𝑐2) ≥ 𝐺0 ( 4-5)
Recomendación ITU-R P.1147 16 16 Hay que destacar que todo este procedimiento hay que realizarlo por separado para cada estación, es decir, tanto para transmisor como para receptor y la ganancia total devuelta sería la suma de las dos obtenidas en decibelios. 4.2 Fuerza cimomotriz Como bien se ha explicado en el punto 3.2, la fuerza cimomotriz en un vector que depende de la intensidad del campo eléctrico por la distancia que separa dicho punto de la antena transmisora. En nuestro caso, y para el cálculo de dicha variable, dependerá del tipo de antena que sea el transmisor, diferenciando los casos donde sea omnidireccional o no, y por lo tanto, separando los casos en los que la ganancia horizontal se toma como nula o no, respectivamente. Para la determinación de este parámetro se usará la siguiente fórmula: 𝑉=𝑃𝑜𝑡𝑅𝑎𝑑+ 𝐺ℎ+ 𝐺𝑣 (𝑑𝐵(300𝑉)) ( 4-6) Siendo: PotRad: potencia radiada por parte del transmisor (dB(1kW)) Gh: ganancia horizontal de la antena transmisora (dB) Gv: ganancia vertical de la antena transmisora (dB) Hay que destacar que la potencia radiada se especificará en decibelios por encima del valor de referencia (dB(1kW)), es decir, si tomamos el valor de referencia especificado en la recomendación, siendo éste de 300 V, se estaría especificando un valor de potencia radiada distinto de cero, pero al tener que indicar dicho valor en unidades por encima del de referencia, se puede considerar como nulo dicho parámetro para el cáluclo aunque realmente no lo fuese, y por tanto, se tendría un valor de fuerza cimomotriz (dB(kW)) nulo, por lo que no intervendría en el cálulo, como se puede apreciar en la siguiente imagen. Figura 4-5. Relación de valores para la fuerza cimomotriz. [26]
17 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 4.3 Pérdida por acoplamiento de polarización Otro de los tipos de atenuaciones que podemos sufrir con este tipo de transmisiones es debido a la polarización, sin embargo, se simplifica mucho el procedimiento para el cálculo. Puesto que es una variable que dependerá de valores como la inclinación magnética y el acimut del trayecto respecto a la dirección este- Oeste en grados, se deberá de calcular por separado para ambas estaciones, ya que estos parámetros tendrán valores distintos tanto para el transmisor como para el receptor, dependiendo de la ubicación en la que éstos se encuentren. En el caso en el que se trabaje en la banda de ondas kilométricas, la atenuación se anula. Cuando se trabaje en la banda de ondas hectométricas, se tendrán los siguientes casos: 𝐿𝑝= 180∗(36+𝜃2+𝐼2)−0.5−2 𝑝𝑎𝑟𝑎 𝐼 ≤ 45° 𝐿𝑝=0 𝑝𝑎𝑟𝑎 𝐼 > 45° ( 4-7) Para obtener los valores tanto de la inclinación como del acimut del trayecto se usan las gráficas situadas en el Anexo II, los cuales dependen de la ubicación de cada antena. Una vez se han calculado estos datos para ambos nodos, el resultado final será la suma de ambos, en decibelios. 4.4 Distancia real del trayecto de propagación Internamente, además de la distancia que se calcula como separación entre los nodos, la función hace uso de otra distancia que tomará dos posibles valores en función del valor que separa a ambas estaciones, en kilómetros. 𝑝=𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎 𝑝𝑎𝑟𝑎 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎 >1000 𝑝= (𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎2+ 40000)12 ⁄ 𝑝𝑎𝑟𝑎 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎 ≤1000 ( 4-8) 4.5 Factor de pérdida que incorpora los efectos de la absorción inosoférica y factores conexos Como bien se ha explicado en 3.1, la Ionosfera es un conjunto de capas que varian en función del momento del día, o más bien, en función de la incidencia directa del Sol con éstas. Por ese motivo, y al tener partículas que se pueden ionizar, la onda que pretende rebotar en dichas capas puede sufrir mayor o menor atenuación en función de las capas que se encuentren presentes en el momento del impacto, por lo que la elección del momento de la comunicación mediante este procedimiento resulta clave para que se pueda realizar de manera satisfactoria. Una medida de todas las pérdidas que se pueden dar en relación a estos fenómenos es lo que se pretende calcular justo en este punto, por lo que ya se puede intuir que se trata de un apartado de enorme relevancia en el resultado final de la intensidad que se intenta calcular. Para comenzar a trabajar con este punto hay que diferenciar dos posibles situaciones, las cuales tienen que ver con la distancia entre las estaciones, estando por un lado aquellas donde sea mayor que 3000 km y aquellas en las que no. En función de eso, el trayecto de separación entre los nodos se dividirá en dos partes iguales o se mantendrá en uno solo, y dependiendo de esa circunstancia, se deberá calcular una o dos latitudes
Recomendación ITU-R P.1147 18 18 geomagnéticas (la cual hace referencia al punto medio de cada trayecto), Ф, de la siguiente forma: Ф= sin−1[sinα∗sin(78.5°)+ cosα ∗ cos(78.5°)∗ cos(69°+ β)] (°) ( 4-9) Siendo: α: latitud geográfica del punto medio en cuestión (°) β: longitud geográfica del punto medio en cuestión (°) En función de la posible separación anterior, se calculará Ф en cada punto medio de cada trayecto. A continuación se muestra una imagen donde se puede apreciar los distintos valores que toma Ф en función de la ubicación, estando ambos ejes en grados. Figura 4-6. Valores para la latitud geomagnética. [24]
19 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 Sin embargo, se realiza una aproximación del valor de Ф, es decir, cuando Ф > 60°, Ф = 60° y cuando Ф < −60°, Ф = −60°. El siguiente paso es calcular el coeficiente de pérdida básico, k, para el cual hay que señalar que se tiene que calcular tantos como número de trayectos en los que se haya dividido el recorrido que separa a ambas estaciones, y para éste hay que usar la siguiente expresión: 𝑘= 2𝜋 +4.95∗ tan2Φ (4-10) Mediante la siguiente gráfica podemos apreciar el rango de valores que puede abarcar, dependiendo directamente del valor de Ф en grados, como bien se puede apreciar en (6-9). Figura 4-7. Valores para el coeficiente de pérdida básico. [25] En el caso en el que se haya calculado dos coeficientes de pérdida básicos, k1 y k2, se debe hacer una media entre ambos valores para poder calcular la atenuación sufrida. Para el caso donde solo tengamos un valor se puede usar directamente en la siguiente expresión: 𝐿𝑎= 𝑘∗ √𝑝 1000 (𝑑𝐵) ( 4-11)
Recomendación ITU-R P.1147 20 20 4.6 Factor de pérdida horaria Como se ha comentado en puntos anteriores, la hora de transmisión es el factor clave a tener en cuenta cuando se emplea la ionosfera como método de transmisión, pudiendo hacer que ésta no se realice de forma efectiva si se lleva a cabo en momentos en los que el sol está presente. Aún no estando presente, si estamos cerca de que se produzca tanto el amanecer como el anochecer, o si hace poco que se produjo alguno de estos dos se producen unas pérdidas que hay que tenerlas en cuenta y que dependen en gran medida de la zona en la que se pretenda transmitir y del punto medio del trayecto, ya que en cada punto tendremos una hora distinta debido al uso horario correspondiente que posea esa ubicación y de la hora de amanecer y anochecer. Para tener en cuenta todo lo anterior se utiliza una variable, denominada t, para medir el número de horas que faltan para que se produzca un evento o el número de horas transcurridas después de que éste se haya producido. Dependiendo de cual sea el evento más próximo, se emplea una de las siguientes fórmulas para calcular la atenuación. La evolución de las siguientes fórmulas se puede apreciar en el Anexo I. 𝐿𝑡𝑜𝑐𝑎𝑠𝑜 =12.4−9.248∗𝑡+2.892∗𝑡2−0.3343∗𝑡3 − 1<𝑡<4 ( 4-12) 𝐿𝑡𝑜𝑟𝑡𝑜 =9.6+12.2∗𝑡+5.62∗𝑡2+0.86∗𝑡3 − 3<𝑡<1 Las horas que no pertenecen a ese rango pueden ser por dos posibles motivos. El primero de ellos, y el más ideal, es que se transmita de madrugada sin presencia cercana del sol y, por lo tanto, la atenuación existente se toma como 0 dB. El segundo de ellos es que se transmita en un tramo temporal intermedio entre los dos intervalos, estando el sol en su punto álgido diario, por lo que se hace inviable llevar a cabo esta transmisión, tomando un valor límite de 30 dB como atenuación e imposibilitando la comunicación. Esta atenuación no debe calcularse para puntos de latitud elevada ni momentos del año en los que no se aprecia la salida o puesta del sol, imposibilitanto el cálculo del amanecer o anochecer y, por lo tanto, no tener referencia sobre cuando será el momento ideal para transmistir. 4.7 Factor de pérdida que incorpora el efecto de la actividad solar La actividad solar juega un papel muy importante en esta norma ya que de ella depende en gran medida la existencia de las capas de la Ionosfera, pero, si gracias a esta actividad las capas están presente también tiene su lado negativo y es que su presencia provoca una pérdida que se traduce negativamente en nuestra transmisión, por lo que tenemos que intentar que dicho valor sea lo más bajo posible y, de este modo, afecte poco a nuestro caso. Para calcular dicha atenuación, como ya se hiciera en casos anteriores, lo primero que debemos de hacer es, en función de la distancia de separación entre las estaciones, diferenciar dos casos. El primero de ellos, cuando la distancia sea mayor de 3000 km y se divida el tramo en dos partes iguales, o cuando ésta sea inferior a dicha cantidad y se mantenga un único recorrido. En función de la posible división se calcula Ф en el punto medio de cada trayecto existente. En este cálculo toma un valor importante la frecuencia de transmisión, ya que en función de cual sea la banda de trabajo, las pérdidas se pueden anular o no, siendo éste el caso de cuando se trabaja en la banda de ondas kilométricas, es decir, 𝑓 ∈ [150−300] (𝑘𝐻𝑧). Cuando la banda de trabajo es la de ondas hectométricas, es decir,
21 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 𝑓 ∈[300−1700] (𝑘𝐻𝑧) entra en juego la latitud geomagnética en el punto medio calculada con anterioridad, Ф, ya que en función de su valor se utilizará una ecuación u otra para el cálculo de la atenuación. Además del valor de Ф, un aspecto clave es la posición que tiene dicho punto en la Tierra, es decir, si el punto justo donde se calcula la latitud geomagnética pertenece a la región europea, el parámetro b tomará un valor, y si no, tomará otro. Sin embargo, este aspecto no se puede determinar con total claridad por lo que se opta únicamente por tener en cuenta la posición del receptor, obviando la ubicación de la/s latitud/es geomagnética/s y, en función de si el receptor pertenece a Europa o no, b tomará uno de los siguientes valores: 𝑏= ((|Φ|− 45) 3) 𝑐𝑢𝑎𝑛𝑑𝑜 𝑅𝑋 ∉𝐸𝑢𝑟𝑜𝑝𝑎 𝑏=1 𝑐𝑢𝑎𝑛𝑑𝑜 𝑅𝑋 ∈ 𝐸𝑢𝑟𝑜𝑝𝑎 ( 4-13) Y de este modo se obtiene el valor de 𝐿𝑟 como: 𝐿𝑟=𝑏 ∗ (𝑅100 ⁄)∗ (𝑝1000 ⁄ ) 𝑐𝑢𝑎𝑛𝑑𝑜 |Ф|>45° 𝐿𝑟=0 𝑐𝑢𝑎𝑛𝑑𝑜 |Ф|≤45° ( 4-14) Como se puede apreciar en (6-12), el valor de R hace referencia al número de manchas solares suavizado y depende justo del momento en el que se decida transmitir. En el caso en el que el trayecto haya sido dividido en dos tramos, se tendrían que calcular dos 𝐿𝑟, cuyo resultado final sería la suma de los dos en dB.
Programa en Python 28 28 5.3.3. media_R() Función que se encarga de calcular la media de manchas solares suavizadas, R, en función del mes en que se produce la transmisión. Hay que destacar que dicha función se basa en valores pasados, puesto que hacer un programa estático con valores que pueden cambiar en cualquier momento resulta complejo. Para hacer que dicha media sea lo más real y ajustada posible se ha tomado valores de todas las manchas solares dadas mensualmente desde 1995 hasta 2017, realizando una media entre todos los meses iguales, de la siguiente url: https://www.spaceweatherlive.com/es/actividad-solar/ciclo-solar [7]. Una vez se tiene el valor de cada mes, el último paso es averiguar en que mes se produce la transmisión, para lo cual se hace uso de funciones de Python con la que se extrae la fecha actual recibiendo una cadena en el formato dd/mm/aaaa, por lo que únicamente tendríamos que dividir la cadena y quedarnos con aquella parte que nos interesa. Una vez averiguamos el número del mes, se obtiene R, número de manchas solares suavizadas para dicho mes y se devuelve como resultado de la función. 5.3.4. activSolar_Lr(p, freq, latTX, longTX, latRX, longRX, banda, estacion, distancia, R) Función encargada de calcular las pérdidas de los efectos de la actividad solar, recibiendo para ello como parámetros las dos distancias ya calculadas anteriormente, p y distancia, la frecuencia de trabajo, freq, la ubicación tanto del transmisor como del receptor, la banda de trabajo y el valor de las manchas solares suavizado, R. También recibe como parámetro una variable que hace referencia a si el receptor se encuentra dentro de Europa, la cual recibe el nombre de estacion. Lo primero de todo, como ya se hiciera para el cálculo de La, es diferenciar los casos donde el trayecto supera los 3000 kilómetros de distancia entre los nodos y el que no. Para el caso donde si se supera, se debe calcular el punto medio del tramo para poder determinar la latitud geomagnética, Ф, en el punto medio de cada tramo dividido, ya que para cada uno de ellos se calculará una atenuación. Solo faltaría tener en cuenta la banda de trabajo y, para cada caso, calcular la atenuación con la fórmula adecuada. El resultado final será la suma de ambas atenuaciones calculadas en decibelios, Lr, valor que se devolverá como resultado. Para el caso donde el trayecto no supere los 3000 kilómetros, el procedimiento a seguir sería similar al ya explicado pero sin dividir el trayecto, por lo que solo se calcularía un valor de cada variable y el resultado final sería el cálculo de la atenuación en decibelios. 5.3.5. acoplaPol_Lp(banda, ITX, IRX, latTX, longTX, latRX, longRX, decTX, decRX) Función encargada de calcular la atenuación sufrida para las dos estaciones debido a la polarización. Aunque el cálculo sea simple, como se puede observar en el punto 4.3, el cálculo del acimut respecto a una de las dos direcciones magnéticas en un proceso complejo que requiere de una explicación exhaustiva previa para poder llegar a ese valor, para lo cual nos hemos basado en [28]. El primer paso es determinar el nodo “B”, es decir, aquella estación que se encuentra más cerca de alguno de los dos polos, en una de las siguientes situaciones: si ambas están en el hemisferio norte, “B” será aquella más cercana al Polo Norte, si al menos una está en el hemisferio norte, ésta será “B”, y si ambas están en el hemisferio sur, “B” será la más cercana al Polo Sur. Puesto que estamos calculando distancias en la superficie de una esfera, éstas se realizarán basándonos en el
29 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 método presente del punto 5.2.1. El siguiente paso es calcular el ángulo “C”, que se puede encontrar en [28], que dependerá del valor de las longitudes de las estaciones, seguido de los ángulos “X” e “Y”, también presentes en el mismo sitio web. Dependiendo de donde se encuentren nuestas estaciones (si ambas están en el hemisferio sur o no), se usará la fórmula correspondiente para calcular el acimut en ambos casos y para ambas estaciones. Después, siguiendo la explicación realizada en el punto 3.6, se corregirá la declinación magnética [8], sumando o restando dicho valor a los ángulos calculados anteriormente. Y, por último, para cumplir la condición expuesta en la norma donde |𝜃|≤90°, dependiendo del cuadrante al que pertenezca nuestro ángulo calculado se realizará la correspondiente resta con el este u oeste magnético, obteniendo de esta forma 𝜃𝑇𝑋 y 𝜃𝑅𝑋, representando el acimut del trayecto medido en grados con respecto a la dirección magnética este-oeste tanto para el transmisor como para el receptor. El siguiente paso sería determinar, en función de la frecuencia de trabajo, la banda en la que se realiza la transmisión para comprobar si se puede anular dicha atenuación o no. En caso de que no se anule porque se trabaje en la banda de ondas hectométricas, se realizará una comprobación con la inclinación magnética de cada antena, 𝐼𝑇𝑋 y 𝐼𝑅𝑋, para calcular la correspondiente atenucación en caso de que no se cumpla la condición expuesta en 4.3. Dicha atenuación se calculará tanto para el TX como para el RX, sumando ambos valores al final en decibelios, que será el resultado devuelto por la función. 5.3.6. perdHor_Lt() Función encargada de calcular la atenuación producida por el factor horario correspondiente. Lo primero que se realiza para comenzar el procedimiento es obtener la fecha y hora local del momento en el que se ejecuta el programa mediante [6], obteniendo una cadena con una serie de datos en la que incluye día, mes, año, hora y minutos y separándola a través de funciones internas de python [5] para obtener la información que nos interesa. Dentro de la función nos marcamos varios objetivos, el primero de ellos, calcular la hora tanto del amanecer como del anochecer en el punto medio del trayecto tratado, para lo cual se le pasa a la función la ubicación tanto del TX como del RX, la distancia del trayecto y el uso horario que posee el transmisor según su ubicación, y se seguirá el procedimiento que se encuentra redactado en el Anexo III. El segundo objetivo se basa en calcular el número de horas que faltan para que se produzca un evento, amanecer o anochecer, o el número de horas que han pasado desde que alguno sucedió. Según el evento y la diferencia existente se obtendrá un valor de atenuación o, por el contrario, estará definido por no pertenecer a los intervalos definidos en (4-12). Dicho valor será independiente de la frecuencia de transmisión y solo se calculará una vez por cada ejecución del programa.
Programa en Python 30 30
31 6 RESOLUCIÓN ANALÍTICA A continuación se presenta una serie de ejemplos para su correspondiente resolución y posterior comparación con la salida que dará el programa, pues se pretende comparar ambos resultados para demostrar que el programa realizado funciona correctamente. En concreto se tratará tres casos, cada uno de ellos diferentes pues las ubicaciones serán distintas en todos ellos y las cuales hemos sacado de Google Earth [17], pero en cada uno de ellos se usará dos frecuencias distintas para apreciar con mejor claridad la diferencia existente entre trabajar con ondas kilométricas o hectométricas, y las diferencias reflejadas en las variables Lp, Lr y Gs. También se podrá apreciar la diferencia entre si la estación receptora pertenece a Europa o no, y cual es el efecto a la hora de transmitir, que como en el caso de la frecuencia, se tomará solo dos horas de referencia, cerca del amanecer y cerca del ocaso, y se irá rotando en cada caso para poder comprobar en cada uno de ellos cual es el efecto de transmitir en un momento u otro. El procedimiento para el cálculo de la hora a la que se producen los eventos estará definido en el Anexo III, no quedando reflejado el cálculo de la hora en cada caso para no hacer demasiado denso dicho punto y además, para los tres casos sigue una linea procedimental similar por lo que sería repetitivo. En el anexo se explicará a modo genérico quedando bien marcado donde hay que sustituir los valores en cada caso para que el cálculo sea efectivo. Destacar, por otro lado, que para el cálculo final de E se hará uso de una constante denominada A, la cual tomará varios valores en función de la frecuencia o de la ubicación del punto medio en el caso de ondas hectométricas. Para ondas kilométricas vale 110.2, para ondas hectométricas 107 salvo si el punto medio está situado en la parte de la Región 3 (definida por la ITU-R) al sur del paralelo de 11º siendo en ese caso de 110. Por último, hay que tener en cuenta que en los cálculos siguientes se realizará una aproximación hasta el tercer decimal, por lo que pueden diferir con los resultados que calcule el programa. Aunque la diferencia puede ser mínima, cuando se hablan de decibelios el error de aproximación es más sensible.
Resolución Analítica 32 32 6.1 Caso 1. Río de Janeiro → Buenos Aires Se pretende transmitir desde Río de Janeiro hasta Buenos Aires. Se recuerda que el mismo ejemplo se resolverá dos veces pero con algunos datos distintos. Comenzamos con el primer ejemplo. La situación geográfica es la siguiente. Figura 6-1. Ubicación del primer caso. Los datos a introducir por parte del usuario son los siguientes: - Frecuencia de transmisión: 299000 Hz - Latitud y Longitud en formato decimal para el transmisor: -22.9110137º ; -43.2093727º - Latitud y Longitud en formato decimal para el receptor: -34.6075616º ; -58.437076º - Si la estación receptora está dentro de la región europea: se marca la opción “No” - La inclinación en grados para el transmisor: -29.6º - La inclinación en grados para el receptor: -36º - Si la antena transmisora es omnidireccional o no: se marca la opción “Si” - La potencia radiada para el transmisor: 0 dB(kW) - La ganancia vertical para el transmisor: 0 dB - La ganancia horizontal para el transmisor: 0 dB - Si el transmisor se encuentra cerca de agua dulce o no: se marca la opción “No” - Si el receptor se encuentra cerca de agua dulce o no: se marca la opción “No”
33 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 - Ganancia debida a la proximidad del mar: 3.9 dB - Latitud y Longitud del punto más cercano al mar para el transmisor en formato decimal: -23.013056º; -43.32167º - Latitud y Longitud del punto más cercano a la siguiente sección de tierra para el transmisor en formato decimal: -27.4º ; -48.41278º - Latitud y Longitud del punto más cercano al mar para el receptor en formato decimal: -34.559444º; -58.36111º - Latitud y Longitud del punto más cercano a la siguiente sección de tierra para el receptor en formato decimal: -34.31111º ; -57.96833º - Declinación magnética para el transmisor en grados: -18º - Declinación magnética para el receptor en grados: -3º - Uso horario del punto medio del trayecto: -3 - Uso horario del transmisor: -3 Puesto que la frecuencia de transmisión es de 299 kHz, pertenece al rango de ondas kilométricas, como bien se puede ver en el punto 3.3. El siguiente paso es obtener la distancia entre los nodos, para ello: ∆𝑙𝑎𝑡=𝑙𝑎𝑡𝑅𝑋 − 𝑙𝑎𝑡𝑇𝑋= −34.6075616°+22.9110137°=−𝟏𝟏.𝟔𝟗𝟕° ( 6-1) ∆𝑙𝑜𝑛𝑔=𝑙𝑜𝑛𝑔𝑅𝑋 −𝑙𝑜𝑛𝑔𝑇𝑋= −58.437076°+43.2093727°=−𝟏𝟓.𝟐𝟐𝟖° ( 6-2) 𝑎=sin2(∆𝑙𝑎𝑡 2)+cos(𝑙𝑎𝑡𝑇𝑋)∗cos(𝑙𝑎𝑡𝑅𝑋)∗sin2(∆𝑙𝑜𝑛𝑔 2)= ( 6-3) =sin2(−11.697° 2)+cos(−22.9110137°)∗cos(−34.6075616°)∗sin2(−15.228° 2)=𝟎.𝟎𝟐𝟑𝟕 𝒓𝒂𝒅 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎=2∗𝑅𝑎∗tan−1(√𝑎 √1−𝑎)=2∗6378∗tan−1(√0.0237 √1−0.0237)=𝟏𝟗𝟕𝟏.𝟏𝟖𝟑 𝒌𝒎 ( 6-4) Una vez hemos calculado la distancia, el siguiente paso sería calcular la distancia real del trayecto de propagación, p. En este caso, mediante el punto 4.4: 𝑝=𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎=𝟏𝟗𝟕𝟏.𝟏𝟖𝟑 km ( 6-5) A continuación calculamos el punto medio del trayecto, ya que se necesitará para realizar diversas operaciones, y tras éste se calcula la latitud geomagnética, Ф, en dicho punto mediante (4-9). 𝑙𝑎𝑡𝑃𝑀= (𝑙𝑎𝑡𝑇𝑋+𝑙𝑎𝑡𝑅𝑋) 2=(−22.9110137°−34.6075616°) 2=−𝟐𝟖.𝟕𝟓𝟗𝟑° ( 6-6) 𝑙𝑜𝑛𝑔𝑃𝑀= (𝑙𝑜𝑛𝑔𝑇𝑋+𝑙𝑜𝑛𝑔𝑅𝑋) 2=(−43.2093727°−58.437076°) 2=−𝟓𝟎.𝟖𝟐𝟑° ( 6-7) Ф= sin−1[sin𝑙𝑎𝑡𝑃𝑀∗sin(78.5°)+ cos𝑙𝑎𝑡𝑃𝑀 ∗ cos(78.5°)∗ cos(69°+ β)] = ( 6-8)
Resolución Analítica 34 34 = sin−1[sin(−28.7593°)∗sin(78.5°)+ cos(−28.7593°) ∗ cos(78.5°)∗ cos(69°−50.823)]= =−𝟎.𝟑𝟏𝟎𝟑𝟖 𝒓𝒂𝒅 ↔ −𝟏𝟕.𝟕𝟖𝟑𝟒° Vamos ahora con el cálculo de La. Puesto que la distancia entre los nodos es inferior a 3000 km solo habrá un único tramo que separe a ambas estaciones. Haciendo uso de (4-10) y (4-11) respectivamente: 𝑘= 2𝜋+4.95∗ tan2Φ= 2𝜋 + 4.95∗ tan2(−0.31038)=𝟔.𝟕𝟗𝟐𝟒 ( 6-9) 𝐿𝑎= 𝑘∗ √𝑝 1000= 6.7924 ∗ √1971.183 1000 =𝟗.𝟓𝟑𝟔𝟒 𝒅𝑩 ( 6-10) El siguiente cálculo se realizará para determinar las pérdidas que hacen referencia al efecto de la actividad solar, es decir, Lr. En este caso, al trabajar en la banda de ondas kilométricas: 𝐿𝑟=𝟎 𝒅𝑩. Lo mismo sucede para las pérdidas por acoplamiento de polarización. En este caso, al ser la inclinación y el acimut distinto para cada estación se deberá de calcular un valor para cada uno pero cuando se trabaja en la banda de ondas kilométricas: 𝐿𝑝=𝐿𝑝𝑇𝑋 =𝐿𝑝𝑅𝑋=𝟎 𝒅𝑩. La siguiente variable a calcular es la ganancia por proximidad al mar, Gs. Puesto que 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎= 𝟏𝟗𝟕𝟏.𝟏𝟖𝟑 𝒌𝒎 y estamos trabajando en la banda de ondas kilométricas según la frecuencia de transmisión usada, 𝐺0=𝟑.𝟗 𝒅𝑩, valor introducido por el usuario ya que no se cumplen las condiciones especificadas por la recomendación para que dicho valor esté ya establecido. En nuestro caso, al ser ambas ubicaciones próximas al mar y, además, siendo de agua salada, se precisa el cálculo en ambos nodos para dicha variable. En primer lugar, para el TX, se averigua la distancia desde el terminal al mar, s1TX, y la máxima distancia para la cual hay que calcular esta ganancia, r1TX, mediante (4-1). Recordemos que para s1TX la información introducida por el usuario son coordenadas en formato decimal y para el cual se hace uso del procedimiento que comienza en el punto (6-1). ∆𝑙𝑎𝑡=𝑙𝑎𝑡𝑅𝑋 − 𝑙𝑎𝑡𝑇𝑋= −23.013056°+22.9110137°=−𝟎.𝟏𝟎𝟐° ( 6-11) ∆𝑙𝑜𝑛𝑔=𝑙𝑜𝑛𝑔𝑅𝑋 −𝑙𝑜𝑛𝑔𝑇𝑋= −43.32167°+43.2093727°=−𝟎.𝟏𝟏𝟐° ( 6-12) 𝑎=sin2(∆𝑙𝑎𝑡 2)+cos(𝑙𝑎𝑡𝑇𝑋)∗cos(𝑙𝑎𝑡𝑅𝑋)∗sin2(∆𝑙𝑜𝑛𝑔 2)= ( 6-13) =sin2(−0.102° 2)+cos(−22.9110137°)∗cos(−23.013056°)∗sin2(−0.112° 2)=𝟏.𝟔∗𝟏𝟎−𝟔 𝒓𝒂𝒅 𝑠1𝑇𝑋 =2∗𝑅𝑎∗tan−1(√𝑎 √1−𝑎)=2∗6378∗tan−1(√1.6∗10−6 √1−1.6∗10−6)=𝟏𝟔.𝟏𝟔𝟖 𝒌𝒎 ( 6-14) 𝑟1𝑇𝑋 = 103∗ (𝐺02𝑞1∗𝑓 ⁄)= 103∗ (3.920.3∗299 ⁄)=𝟏𝟔𝟗.𝟓𝟔𝟓 𝒌𝒎 ( 6-15)
35 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 Como 𝑟1𝑇𝑋 >𝑠1𝑇𝑋 se puede seguir con el cálculo de la ganancia para el transmisor puesto que se cumple la condición, por lo que calculamos el factor de corrección correspondiente a esta parte mediante (4-3). 𝑐1𝑇𝑋 = 𝐺0∗ 𝑠1𝑇𝑋 𝑟1𝑇𝑋 = 3.9 ∗ 16.168 169.565=𝟎.𝟑𝟕𝟏𝟖𝟔 ( 6-16) Vamos con el cálculo de la distancia a la siguiente sección de tierra, s2TX, para lo cual habrá que repetir el procedimiento que comienza en el punto (6-11) y r2TX. ∆𝑙𝑎𝑡=𝑙𝑎𝑡𝑅𝑋 − 𝑙𝑎𝑡𝑇𝑋= −27.4°+22.9110137°=−𝟒.𝟒𝟖𝟗° ( 6-17) ∆𝑙𝑜𝑛𝑔=𝑙𝑜𝑛𝑔𝑅𝑋 −𝑙𝑜𝑛𝑔𝑇𝑋= −48.41278°+43.2093727°=−𝟓.𝟐𝟎𝟑° ( 6-18) 𝑎=sin2(∆𝑙𝑎𝑡 2)+cos(𝑙𝑎𝑡𝑇𝑋)∗cos(𝑙𝑎𝑡𝑅𝑋)∗sin2(∆𝑙𝑜𝑛𝑔 2)= ( 6-19) =sin2(−4.489° 2)+cos(−22.9110137°)∗cos(−27.4°)∗sin2(−5.203° 2)=𝟑.𝟏𝟕𝟖∗𝟏𝟎−𝟑 𝒓𝒂𝒅 𝑠2𝑇𝑋 =2∗𝑅𝑎∗tan−1(√𝑎 √1−𝑎)=2∗6378∗tan−1(√3.178∗10−3 √1−3.178∗10−3)=𝟕𝟏𝟗.𝟓𝟑 𝒌𝒎 ( 6-20) 𝑟2𝑇𝑋 = 103∗ (𝐺02𝑞2∗𝑓 ⁄)= 103∗ (3.920.25∗299 ⁄)=𝟐𝟎𝟑.𝟒𝟕𝟖 𝒌𝒎 ( 6-21) Mediante el uso de (4-4) se obtiene 𝑐2𝑇𝑋 =𝟎. Por último, haciendo uso de (4-5) se obtendría la ganancia correspondiente a la parte que hace referencia al transmisor. 𝐺𝑠𝑇𝑋=𝐺0−𝑐1𝑇𝑋−𝑐2𝑇𝑋 =3.9 − 0.37186=𝟑.𝟓𝟐𝟖𝟏𝟒 𝒅𝑩 ( 6-23) Ahora habría que realizar justo el mismo procedimiento pero para el RX: ∆𝑙𝑎𝑡=𝑙𝑎𝑡𝑅𝑋 − 𝑙𝑎𝑡𝑇𝑋= −34.6075616°+34.559444°=−𝟎.𝟎𝟒𝟖° ( 6-23) ∆𝑙𝑜𝑛𝑔=𝑙𝑜𝑛𝑔𝑅𝑋 −𝑙𝑜𝑛𝑔𝑇𝑋= −58.437076°+58.36111°=−𝟎.𝟎𝟕𝟔° ( 6-24) 𝑎=sin2(∆𝑙𝑎𝑡 2)+cos(𝑙𝑎𝑡𝑇𝑋)∗cos(𝑙𝑎𝑡𝑅𝑋)∗sin2(∆𝑙𝑜𝑛𝑔 2)= ( 6-25) =sin2(−0.048° 2)+cos(−34.55944°)∗cos(−34.6075616°)∗sin2(−0.076° 2)=𝟒.𝟕𝟒∗𝟏𝟎−𝟕 𝒓𝒂𝒅 𝑠1𝑅𝑋=2∗𝑅𝑎∗tan−1(√𝑎 √1−𝑎)=2∗6378∗tan−1(√4.74∗10−7 √1−4.74∗10−7)=𝟖.𝟕𝟖𝟒 𝒌𝒎 ( 6-26) 𝑟1𝑅𝑋= 103∗ (𝐺02𝑞1∗𝑓 ⁄)= 103∗ (3.920.3∗299 ⁄)=𝟏𝟔𝟗.𝟓𝟔𝟓 𝒌𝒎 ( 6-27)
Resolución Analítica 36 36 Como 𝑟1𝑅𝑋>𝑠1𝑅𝑋 se puede seguir con el cálculo de la ganancia para el receptor puesto que se cumple la condición, por lo que calculamos el factor de corrección correspondiente a esta parte mediante (4-3). 𝑐1𝑅𝑋= 𝐺0∗ 𝑠1𝑅𝑋 𝑟1𝑅𝑋= 3.9 ∗ 8.784 169.565=𝟎.𝟐𝟎𝟏𝟗 ( 6-28) Vamos con el cálculo de la distancia a la siguiente sección de tierra, s2RX, para lo cual habrá que repetir el procedimiento que comienza en el punto (6-23). ∆𝑙𝑎𝑡=𝑙𝑎𝑡𝑅𝑋 − 𝑙𝑎𝑡𝑇𝑋= −34.6075616°+34.31111°=−𝟎.𝟐𝟗𝟔° ( 6-29) ∆𝑙𝑜𝑛𝑔=𝑙𝑜𝑛𝑔𝑅𝑋 −𝑙𝑜𝑛𝑔𝑇𝑋= −58.437076°+57.96833°=−𝟎.𝟒𝟔𝟗° ( 6-30) 𝑎=sin2(∆𝑙𝑎𝑡 2)+cos(𝑙𝑎𝑡𝑇𝑋)∗cos(𝑙𝑎𝑡𝑅𝑋)∗sin2(∆𝑙𝑜𝑛𝑔 2)= ( 6-31) =sin2(−0.296° 2)+cos(−34.3111°)∗cos(−34.6075616°)∗sin2(−0.496° 2)=𝟏.𝟖∗𝟏𝟎−𝟓 𝒓𝒂𝒅 𝑠2𝑅𝑋=2∗𝑅𝑎∗tan−1(√𝑎 √1−𝑎)=2∗6378∗tan−1(√1.8∗10−5 √1−1.8∗10−5)=𝟓𝟒.𝟐𝟏 𝒌𝒎 ( 6-32) 𝑟2𝑅𝑋= 103∗ (𝐺02𝑞2∗𝑓 ⁄)= 103∗ (3.920.25∗299 ⁄)=𝟐𝟎𝟑.𝟒𝟕𝟖 𝒌𝒎 ( 6-33) Mediante el uso de (4-4) se obtiene c2RX: 𝑐2𝑅𝑋=𝛼∗(1 − 𝑠2 𝑟2)=0.5 ∗ (1 − 54.21 203.478)=𝟏.𝟒𝟑𝟎𝟓 ( 6-44) Haciendo uso de (4-5) se obtiene la ganancia correspondiente a la parte que hace referencia al receptor. 𝐺𝑠𝑅𝑋=𝐺0−𝑐1𝑅𝑋−𝑐2𝑅𝑋=3.9−0.2019−1.4305=𝟐.𝟐𝟔𝟕𝟔 𝒅𝑩 ( 6-35) Por último, solo faltaría sumar las ganancias correspondientes obtenidas para el transmisor y receptor para obtener el resultado final. 𝐺𝑠=𝐺𝑠𝑇𝑋+𝐺𝑠𝑅𝑋=3.52814+2.2676=𝟓.𝟕𝟗𝟓𝟕𝟒 𝒅𝑩 ( 6-36) El siguiente cálculo es para determinar las pérdidas debidas a la hora de transmisión. Dicho cálculo es independiente de la frecuencia por lo que servirá también para el siguiente paso, cuando se modifique ésta. Lo primero que debemos de calcular es la hora tanto del amanecer como del anochecer en el punto medio del trayecto siguiendo el procedimiento descrito en el Anexo III. Para este caso, las horas obtenidas son las siguientes. Amenece a las 06:44h y anochece a las 18:06h. Como bien se describió en el punto 4.6 la hora de ejecución del programa marcará la hora de transmisión, siendo en este caso a las 20:30h. En este caso, al compartir uso horario tanto el TX como el punto medio, la hora de transmisión no se verá modificada en el
37 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 punto medio. Puesto que el evento más próximo con respecto la hora de transmisión en el punto medio es el anochecer, se calcula t (medido en horas sin tener en cuenta los minutos) como la diferencia entre éstos, siendo de +2h, puesto que medido en horas, se transmite a las 20h y anochece a las 18h. Según (4-12): 𝐿𝑡𝑜𝑐𝑎𝑠𝑜 =12.4−9.248∗𝑡+2.892∗𝑡2−0.3343∗𝑡3=𝟐.𝟕𝟗𝟕𝟔 𝒅𝑩 ( 6-37) Por último, calculamos la intensidad de campo medido en dBV/m mediante: 𝐸=𝐺𝑠+𝑉+𝐴−20∗log𝑝−𝐿𝑎−𝐿𝑟−𝐿𝑝−𝐿𝑡−120= ( 6-38) =110.2+5.79574−20∗log(1971.183)−9.5364−2.7976−120=−𝟖𝟐.𝟐𝟑𝟐𝟒 𝒅𝑩𝑽/𝒎 Como bien se ha dicho al principio de esta sección, se variará la frecuencia a una que pertenezca al rango de ondas hectométricas. Para este apartado se utilizará una frecuencia de 1500 kHz, por lo que se verán cambios en las variables Lp, Lr y Gs. Únicamente se calcularán aquellos parámetros que se vean afectados por dicho cambio. Comenzamos calculando el parámtro de Lr. Hacemos uso de (6-8) donde hemos obtenido con anterioridad el valor de Ф, el cual lo necesitamos en grados. Para este caso, Φ= −𝟏𝟕.𝟕𝟖𝟑°. Empleando (4-13): 𝐿𝑟= 𝟎 𝒅𝑩, puesto que Ф no supera el valor de 45°. El siguiente paso seria resolver el cálculo de Gs, donde solo se calcularán aquellos valores que dependan de la frecuencia, ya que saldrán resultados distintos de los calculados con anterioridad. En este caso, puesto que hemos cambiado de banda de trabajo, 𝐺0=𝟖.𝟓 𝒅𝑩, valor de nuevo introducido por el usuario puesto que siguen sin cumplirse las condiciones que marca la norma para que sea un valor predefinido. De nuevo, se calcula primero la parte correspondiente al TX y se finaliza con el RX. 𝑟1𝑇𝑋 = 103∗ (𝐺02𝑞1∗𝑓 ⁄)= 103∗ (8.521.4∗1500 ⁄)=𝟑𝟒.𝟒𝟎𝟓 𝒌𝒎 ( 6-39) Puesto que 𝑟1𝑇𝑋 >𝑠1𝑇𝑋: 𝑐1𝑇𝑋 = 𝐺0∗ 𝑠1𝑇𝑋 𝑟1𝑇𝑋 = 8.5 ∗ 16.168 34.405=𝟑.𝟗𝟗𝟒𝟒 ( 6-40) 𝑟2𝑇𝑋 = 103∗ (𝐺02𝑞2∗𝑓 ⁄)= 103∗ (8.521.2∗1500 ⁄)=𝟒𝟎.𝟏𝟑𝟗 𝒌𝒎 ( 6-41) Mediante (4-4): 𝑐2𝑇𝑋 =0 ( 6-42) 𝐺𝑠𝑇𝑋=𝐺0−𝑐1𝑇𝑋−𝑐2𝑇𝑋 =8.5−3.9944=𝟒.𝟓𝟎𝟓𝟔 𝒅𝑩 ( 6-43) Se realiza el mismo procedimiento ahora para la otra estación. 𝑟1𝑅𝑋= 103∗ (𝐺02𝑞1∗𝑓 ⁄)= 103∗ (8.521.4∗1500 ⁄)=𝟑𝟒.𝟒𝟎𝟓 𝒌𝒎 ( 6-44)
Resolución Analítica 44 44 𝑎=sin2(∆𝑙𝑎𝑡 2)+cos(𝑙𝑎𝑡𝑇𝑋)∗cos(𝑙𝑎𝑡𝑅𝑋)∗sin2(∆𝑙𝑜𝑛𝑔 2)= ( 6-91) =sin2(−12.46184° 2)+cos(43.28861°)∗cos(55.7504461°)∗sin2(94.1389° 2)=𝟎.𝟐𝟑𝟏𝟒 𝒓𝒂𝒅 𝑠1𝑇𝑋 =2∗𝑅𝑎∗tan−1(√𝑎 √1−𝑎)=2∗6378∗tan−1(√0.2314 √1−0.2314)=𝟔𝟒𝟎𝟏.𝟒𝟖𝟔𝟒 𝒌𝒎 ( 6-92) 𝑟1𝑇𝑋 = 103∗ (𝐺02𝑞1∗𝑓 ⁄)= 103∗ (4.120.3∗299 ⁄)=𝟏𝟖𝟕.𝟒𝟎𝟐 𝒌𝒎 ( 6-93) Como 𝑟1𝑇𝑋 <𝑠1𝑇𝑋 implica que 𝐺𝑠𝑇𝑋=𝟎 𝒅𝑩, puesto que se incumple la condición impuesta por la norma. Ahora habría que realizar justo el mismo procedimiento pero para el RX: ∆𝑙𝑎𝑡=𝑙𝑎𝑡𝑅𝑋 − 𝑙𝑎𝑡𝑇𝑋= 35.679444°−37.2258°=−𝟏.𝟓𝟒𝟔𝟑𝟔° ( 6-94) ∆𝑙𝑜𝑛𝑔=𝑙𝑜𝑛𝑔𝑅𝑋 −𝑙𝑜𝑛𝑔𝑇𝑋= 139.768611°−138.3175°=𝟏.𝟒𝟓𝟏𝟏° ( 6-95) 𝑎=sin2(∆𝑙𝑎𝑡 2)+cos(𝑙𝑎𝑡𝑇𝑋)∗cos(𝑙𝑎𝑡𝑅𝑋)∗sin2(∆𝑙𝑜𝑛𝑔 2)= ( 6-96) =sin2(−1.54636° 2)+cos(35.679444°)∗cos(37.2258°)∗sin2(1.4511° 2)=𝟐.𝟖𝟓∗𝟏𝟎−𝟒 𝒓𝒂𝒅 𝑠1𝑅𝑋=2∗𝑅𝑎∗tan−1(√𝑎 √1−𝑎)=2∗6378∗tan−1(√2.85∗10−4 √1−2.85∗10−4)=𝟐𝟏𝟓.𝟓𝟏𝟏 𝒌𝒎 ( 6-97) 𝑟1𝑅𝑋= 103∗ (𝐺02𝑞1∗𝑓 ⁄)= 103∗ (4.120.3∗299 ⁄)= 𝟏𝟖𝟕.𝟒𝟎𝟐𝟒 𝒌𝒎 ( 6-98) Como 𝑟1𝑅𝑋<𝑠1𝑅𝑋 sucedería lo mismo que para el TX, por lo que 𝐺𝑠𝑅𝑋=𝟎 𝒅𝑩. Por último: 𝐺𝑠=𝐺𝑠𝑇𝑋+𝐺𝑠𝑅𝑋=𝟎 𝒅𝑩 ( 6-99) Al igual que en el caso anterior, mediante el procedimiento descrito en el Anexo III se calcula la hora tanto del anochecer como del amanecer en el punto medio del trayecto tratado, siendo este caso para el amanecer 07:21h y para el anochecer 20:52h. Para este caso tenemos que tener en cuenta además que, a diferencia del caso anterior, el uso horario en el punto medio es distinto al uso horario del transmisor, siendo de +5 horas la diferencia horaria entre éstos. Por lo que, si se transmite a las 13:30h hora local para el TX, esta hora en realidad en el punto medio es 18:30h. El evento más próximo que se produce en el punto medio teniendo en cuenta la anterior hora es el anochecer, por lo que se calcula t, medido en horas, siendo este caso de: 𝑡=18−20=−𝟐𝒉→𝑳𝒕𝒐𝒄𝒂𝒔𝒐 =𝟑𝟎 𝒅𝑩 ( 6-100) Por último, realizamos el cálculo de E mediante:
45 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 𝐸=𝐺𝑠+𝑉+𝐴−20∗log𝑝−𝐿𝑎−𝐿𝑟−𝐿𝑝−𝐿𝑡−120= ( 6-101) =−25.23016−30+110.2−120−20∗log(7491.79)=−𝟏𝟒𝟐.𝟓𝟐𝟏𝟗 𝒅𝑩𝑽/𝒎 Como en el caso anterior, variamos ahora la frecuencia para comprobar los cambios que se producen al trabajar en bandas distintas. De nuevo, solo se calculan aquellas variables que dependan de la frecuencia para simplificar el procedimiento. Comenzamos calculando el parámtro de Lr. Para ello, y como en el caso anterior, debemos dividir el tramo en dos partes iguales puesto que la distancia entre los nodos es mayor que 3000 km. Empleando (4-13). Φ1=42.849° →𝐿𝑟1=𝟎 𝒅𝑩 ( 6-102) Φ2=29.697° →𝐿𝑟2=𝟎 𝒅𝑩 ( 6-103) 𝐿𝑟=𝐿𝑟1+𝐿𝑟2=𝟎 𝒅𝑩 ( 6-104) El siguiente paso seria resolver el cálculo de Gs, donde solo se calcularán aquellos valores que dependan de la frecuencia. Puesto que hemos cambiado de banda de trabajo, 𝐺0=𝟏𝟎 𝒅𝑩, donde de nuevo se cumplen las condiciones para que sea un valor predefinido. Se calcula primero la parte correspondiente al TX y se finaliza con el RX. 𝑟1𝑇𝑋 = 103∗ (𝐺02𝑞1∗𝑓 ⁄)= 103∗ (1021.4∗1500 ⁄)= 𝟒𝟕.𝟔𝟏𝟗 𝒌𝒎 ( 6-105) Puesto que 𝑠1𝑇𝑋 >𝑟1𝑇𝑋, ya que s1TX no cambia: 𝐺𝑠𝑇𝑋=0 𝒅𝑩 ( 6-106) Se realiza el mismo procedimiento ahora para la otra estación. 𝑟1𝑅𝑋= 103∗ (𝐺02𝑞1∗𝑓 ⁄)= 103∗ (1021.4∗1500 ⁄)= 𝟒𝟕.𝟔𝟏𝟗 𝒌𝒎 ( 6-107) Como 𝑠1𝑅𝑋>𝑟1𝑅𝑋, ya que s1RX no cambia: 𝐺𝑠𝑅𝑋=0 𝒅𝑩 ( 6-108) Por último, el resultado final será la suma de los dos valores obtenidos. 𝐺𝑠=𝐺𝑠𝑇𝑋+𝐺𝑠𝑅𝑋=𝟎 𝒅𝑩 ( 6-109) Acto seguido, la siguiente variable que se vería modificada por la frecuencia sería Lp, por lo que se pasa a calcularla. Sin embargo, puesto que ambas inclinaciones son superiores a 45° se anula dicha atenuación, por lo
Resolución Analítica 46 46 que, 𝐿𝑝=𝟎 𝒅𝑩 Por último, calculamos E: 𝐸=𝐺𝑠+𝑉+𝐴−20∗log𝑝−𝐿𝑎−𝐿𝑟−𝐿𝑝−𝐿𝑡−120= ( 6-110) =−25.23016−30+107−120−20∗log(7491.79)=−𝟏𝟒𝟓.𝟕𝟐𝟏𝟗 𝒅𝑩𝑽/𝒎 6.3 Caso 3. Jerusalén → Bruselas En este caso el nodo transmisor estaría situado en Jerusalén y el receptor en Bruselas, siendo su situación geográfica la siguiente. Figura 6-3. Ubicación del último caso. Los datos a introducir por parte del usuario son los siguientes: - Frecuencia de transmisión: 299000 Hz - Latitud y Longitud en formato decimal para el transmisor: 31.778345º ; 35.2250786º - Latitud y Longitud en formato decimal para el receptor: 50.8465573º ; 4.351697º - Si la estación receptora está dentro de la región europea: se marca la opción “Si” - La inclinación en grados para el transmisor: 47º
47 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 - La inclinación en grados para el receptor: 65.5º - Si la antena transmisora es omnidireccional o no: se marca la opción “Si” - La potencia radiada para el transmisor: 0 dB(kW) - La ganancia vertical para el transmisor: 0 dB - La ganancia horizontal para el transmisor: 0 dB - Si el transmisor se encuentra cerca de agua dulce o no: se marca la opción “No” - Si el receptor se encuentra cerca de agua dulce o no: se marca la opción “No” - Ganancia debida a la proximidad del mar: 2.9 dB - Latitud y Longitud del punto más cercano al mar para el transmisor en formato decimal: 32.18833º; 34.8044º - Latitud y Longitud del punto más cercano a la siguiente sección de tierra para el transmisor en formato decimal: 36.31583º ; 30.2444º - Latitud y Longitud del punto más cercano al mar para el receptor en formato decimal: 40.85417º; 24.33138º - Latitud y Longitud del punto más cercano a la siguiente sección de tierra para el receptor en formato decimal: 40.71306º ; 24.53361º - Declinación magnética para el transmisor en grados: 2.5º - Declinación magnética para el receptor en grados: -4.7º - Uso horario en el punto medio del trayecto: 2 - Uso horario del transmisor: 3 Como se ha comentado en casos anteriores, transmitir con esta frecuencia implica estar trabajando en la banda de ondas kilométricas. El primer paso es obtener la distancia entre los nodos, para ello: ∆𝑙𝑎𝑡=𝑙𝑎𝑡𝑅𝑋−𝑙𝑎𝑡𝑇𝑋=50.8465573°−31.778345°=𝟏𝟗.𝟎𝟔𝟖𝟐° ( 6-111) ∆𝑙𝑜𝑛𝑔=𝑙𝑜𝑛𝑔𝑅𝑋 −𝑙𝑜𝑛𝑔𝑇𝑋= 4.351697°−35.2250786°=−𝟑𝟎.𝟖𝟕𝟑𝟑𝟖° ( 6-112) 𝑎=sin2(∆𝑙𝑎𝑡 2)+cos(𝑙𝑎𝑡𝑇𝑋)∗cos(𝑙𝑎𝑡𝑅𝑋)∗sin2(∆𝑙𝑜𝑛𝑔 2)= ( 6-113) =sin2(19.0682° 2)+cos(50.8465573°)∗cos(31.778345°)∗sin2(−30.87338° 2)=𝟎.𝟎𝟔𝟓𝟓 𝒓𝒂𝒅 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎=2∗𝑅𝑎∗tan−1(√𝑎 √1−𝑎)=2∗6378∗tan−1(√0.0655 √1−0.0655)=𝟑𝟑𝟎𝟏.𝟑𝟗 𝒌𝒎 ( 6-14) Una vez se obtiene la distancia, se pasa a calcular la distancia real del trayecto de propagación, p, mediante (4- 8): 𝑝=𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎=𝟑𝟑𝟎𝟏.𝟑𝟗 𝒌𝒎 ( 6-115) A continuación calculamos el punto medio del trayecto y tras éste se calcula la latitud geomagnética, Ф, en dicho punto mediante (4-9) y para cada uno de los tramos divididos, puesto que la distancia entre nodos es
Resolución Analítica 48 48 superior a 3000 km, por lo que el tramo se divide en dos partes iguales. 𝑙𝑎𝑡𝑃𝑀= (𝑙𝑎𝑡𝑇𝑋+𝑙𝑎𝑡𝑅𝑋) 2=(31.778345°+50.8465573°) 2=𝟒𝟏.𝟑𝟏𝟐𝟒𝟓° ( 6-116) 𝑙𝑜𝑛𝑔𝑃𝑀= (𝑙𝑜𝑛𝑔𝑇𝑋+𝑙𝑜𝑛𝑔𝑅𝑋) 2=(35.2250786°+4.351697°) 2=𝟏𝟗.𝟕𝟖𝟖𝟒° ( 6-117) 𝑙𝑎𝑡𝑃𝑀1= (𝑙𝑎𝑡𝑇𝑋+𝑙𝑎𝑡𝑃𝑀) 2=(31.778345°+41.31245°) 2=𝟑𝟔.𝟓𝟒𝟓𝟒° ( 6-118) 𝑙𝑜𝑛𝑔𝑃𝑀1= (𝑙𝑜𝑛𝑔𝑇𝑋+𝑙𝑜𝑛𝑔𝑃𝑀) 2=(35.2250786°+19.7884°) 2=𝟐𝟕.𝟓𝟎𝟔𝟕° ( 6-119) 𝑙𝑎𝑡𝑃𝑀2= (𝑙𝑎𝑡𝑃𝑀+𝑙𝑎𝑡𝑅𝑋) 2=(41.31245°+50.8465573°) 2=𝟒𝟔.𝟎𝟕𝟗𝟓° ( 6-120) 𝑙𝑜𝑛𝑔𝑃𝑀2= (𝑙𝑜𝑛𝑔𝑃𝑀+𝑙𝑜𝑛𝑔𝑅𝑋) 2=(19.7884°+4.351697°) 2=𝟏𝟐.𝟎𝟕° ( 6-121) Ф1= sin−1[sin𝑙𝑎𝑡𝑃𝑀1∗sin(78.5°)+ cos𝑙𝑎𝑡𝑃𝑀1 cos(78.5°)∗ cos(69°+𝑙𝑜𝑛𝑔𝑃𝑀1)] = ( 6-122) = sin−1[sin(36.5454°)∗sin(78.5°)+ cos(36.5454°) ∗ cos(78.5°)∗ cos(69°+27.5067°)]= =𝟎.𝟔𝟎𝟎𝟖𝟔𝟓 𝒓𝒂𝒅 ↔𝟑𝟒.𝟒𝟐𝟕° Ф2= sin−1[sin𝑙𝑎𝑡𝑃𝑀2∗sin(78.5°)+ cos𝑙𝑎𝑡𝑃𝑀2∗ cos(78.5°)∗ cos(69°+𝑙𝑜𝑛𝑔𝑃𝑀2 )] = ( 6-123) = sin−1[sin(46.0795°)∗sin(78.5°)+ cos(46.0795°) ∗ cos(78.5°)∗ cos(69°+12.07°)]= = 𝟎.𝟖𝟏𝟒𝟑𝟗𝟒 𝒓𝒂𝒅 ↔𝟒𝟔.𝟔𝟔𝟏° Vamos ahora con el cálculo de La. Haciendo uso de (4-10) y (4-11) respectivamente, y para cada tramo: 𝑘1= 2𝜋+ 4.95∗ tan2Ф1= 2𝜋+4.95∗ tan2(0.600865)=𝟖.𝟔𝟎𝟖𝟔𝟏𝟑 ( 6-124) 𝑘2= 2𝜋+ 4.95∗ tan2Ф2= 2𝜋+4.95∗ tan2(0.814394)=𝟏𝟏.𝟖𝟒𝟐𝟑 ( 6-125) 𝑘= (𝑘1+𝑘2)2 ⁄=(8.608613+11.8423)2 ⁄=𝟏𝟎.𝟐𝟐𝟓𝟒𝟔 ( 6-126) 𝐿𝑎= 𝑘∗ √𝑝 1000= 𝐿𝑎= 10.22546∗ √3301.39 1000 =𝟏𝟖.𝟓𝟕𝟗𝟒 𝒅𝑩 ( 6-127) El siguiente cálculo se realizará para determinar las pérdidas que hacen referencia al efecto de la actividad solar, es decir, Lr. Al trabajar en la banda de ondas kilométricas: 𝐿𝑟= 𝐿𝑟1= 𝐿𝑟2=𝟎 𝒅𝑩. Para las pérdidas por acoplamiento de polarización, puesto que se trabaja en la banda de ondas kilométricas: 𝐿𝑝=𝟎 𝒅𝑩.
49 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 Calculamos ahora la ganancia por proximidad al mar, Gs. En este caso, puesto que 𝑑𝑖𝑠𝑡𝑎𝑛𝑐𝑖𝑎= 𝟑𝟑𝟎𝟏.𝟑𝟗 𝒌𝒎 y la banda de trabajo es la banda de ondas kilométricas, 𝐺0=𝟐.𝟗 𝒅𝑩, valor introducido por parte del usuario. Para el TX, en primer lugar, se averigua la distancia desde el terminal al mar, s1TX, y la máxima distancia para la cual hay que calcular esta ganancia, r1TX, mediante (4-1). Para calcular s1TX se hace uso del procedimiento que comienza en el punto (6-1). ∆𝑙𝑎𝑡=𝑙𝑎𝑡𝑅𝑋 − 𝑙𝑎𝑡𝑇𝑋= 32.18833°−31.778345°=𝟎.𝟒𝟎𝟗𝟗𝟖𝟓° ( 6-128) ∆𝑙𝑜𝑛𝑔=𝑙𝑜𝑛𝑔𝑅𝑋 −𝑙𝑜𝑛𝑔𝑇𝑋= 34.8044°−35.2250786°=−𝟎.𝟒𝟐𝟎𝟔𝟖° ( 6-129) 𝑎=sin2(∆𝑙𝑎𝑡 2)+cos(𝑙𝑎𝑡𝑇𝑋)∗cos(𝑙𝑎𝑡𝑅𝑋)∗sin2(∆𝑙𝑜𝑛𝑔 2)= ( 6-130) =sin2(0.409985° 2)+cos32.1883(°)∗cos(31.778345°)∗sin2(−0.42068° 2)=𝟐.𝟐𝟒𝟖∗𝟏𝟎−𝟓 𝒓𝒂𝒅 𝑠1𝑇𝑋 =2∗𝑅𝑎∗tan−1(√𝑎 √1−𝑎)=2∗6378∗tan−1(√2.248∗10−5 √1−2.248∗10−5)=𝟔𝟎.𝟒𝟖𝟓 𝒌𝒎 ( 6-131) 𝑟1𝑇𝑋 = 103∗ (𝐺02𝑞1∗𝑓 ⁄)= 103∗ (2.920.3∗299 ⁄)=𝟗𝟑.𝟕𝟓𝟕 𝒌𝒎 ( 6-132) Como 𝑟1𝑇𝑋 >𝑠1𝑇𝑋 se puede seguir con el cálculo de la ganancia para el transmisor, por lo que calculamos el factor de corrección mediante (4-3). 𝑐1𝑇𝑋 = 𝐺0∗ 𝑠1𝑇𝑋 𝑟1𝑇𝑋 = 2.9 ∗ 60.4857 93.757 =𝟏.𝟖𝟕𝟎𝟗 ( 6-133) Vamos con el cálculo de la distancia a la siguiente sección de tierra, s2TX, para lo cual habrá que repetir el procedimiento que comienza en el punto (6-11) y r2TX. ∆𝑙𝑎𝑡=𝑙𝑎𝑡𝑅𝑋 − 𝑙𝑎𝑡𝑇𝑋= 36.31583°−31.778345°=𝟒.𝟓𝟑𝟕° ( 6-134) ∆𝑙𝑜𝑛𝑔=𝑙𝑜𝑛𝑔𝑅𝑋 −𝑙𝑜𝑛𝑔𝑇𝑋= 30.2444°−35.2250786°=−𝟒.𝟗𝟖𝟏° ( 6-135) 𝑎=sin2(∆𝑙𝑎𝑡 2)+cos(𝑙𝑎𝑡𝑇𝑋)∗cos(𝑙𝑎𝑡𝑅𝑋)∗sin2(∆𝑙𝑜𝑛𝑔 2)= ( 6-136) =sin2(4.537° 2)+cos(36.31583°)∗cos(31.778345°)∗sin2(−4.981° 2)=𝟐.𝟖𝟔∗𝟏𝟎−𝟑 𝒓𝒂𝒅 𝑠2𝑇𝑋 =2∗𝑅𝑎∗tan−1(√𝑎 √1−𝑎)=2∗6378∗tan−1(√2.86∗10−3 √1−2.86∗10−3)=𝟔𝟖𝟐.𝟓𝟑𝟗 𝒌𝒎 ( 6-137) 𝑟2𝑇𝑋 = 103∗ (𝐺02𝑞2∗𝑓 ⁄)= 103∗ (2.920.25∗299 ⁄)=𝟏𝟏𝟐.𝟓𝟎𝟖𝟑𝟔 𝒌𝒎 ( 6-138)
Resolución Analítica 50 50 Mediante el uso de (4-4) se obtiene 𝑐2𝑇𝑋 =𝟎. Por último, haciendo uso de (4-5) se obtendría la ganancia correspondiente a la parte que hace referencia al transmisor. 𝐺𝑠𝑇𝑋=𝐺0−𝑐1𝑇𝑋−𝑐2𝑇𝑋 =2.9−1.8709=𝟏.𝟎𝟐𝟗𝟏 𝒅𝑩 ( 6-139) Ahora realizamos el mismo procedimiento para el RX: ∆𝑙𝑎𝑡=𝑙𝑎𝑡𝑅𝑋 − 𝑙𝑎𝑡𝑇𝑋= 50.8465573°−40.85417°=𝟗.𝟗𝟗𝟐° ( 6-140) ∆𝑙𝑜𝑛𝑔=𝑙𝑜𝑛𝑔𝑅𝑋 −𝑙𝑜𝑛𝑔𝑇𝑋= 4.351697°−24.33138°=−𝟏𝟗.𝟗𝟖° ( 6-141) 𝑎=sin2(∆𝑙𝑎𝑡 2)+cos(𝑙𝑎𝑡𝑇𝑋)∗cos(𝑙𝑎𝑡𝑅𝑋)∗sin2(∆𝑙𝑜𝑛𝑔 2)= ( 6-142) =sin2(9.992° 2)+cos(50.8465573°)∗cos(40.85417°)∗sin2(−19.98° 2)=𝟎.𝟎𝟐𝟏𝟗𝟓𝟔 𝒓𝒂𝒅 𝑠1𝑅𝑋=2∗𝑅𝑎∗tan−1(√𝑎 √1−𝑎)=2∗6378∗tan−1(√0.021956 √1−0.021956)=𝟏𝟖𝟗𝟕.𝟏𝟏 𝒌𝒎 ( 6-143) 𝑟1𝑅𝑋= 103∗ (𝐺02𝑞1∗𝑓 ⁄)= 103∗ (2.920.3∗299 ⁄)=𝟗𝟑.𝟕𝟓𝟕 𝒌𝒎 ( 6-144) Como 𝑟1𝑅𝑋<𝑠1𝑅𝑋 no se cumple la condición marcada por la norma, por lo que: 𝐺𝑠𝑅𝑋=𝟎 𝒅𝑩 ( 6-145) Por último, solo faltaría sumar las ganancias correspondientes obtenidas para el transmisor y receptor para obtener el resultado final. 𝐺𝑠=𝐺𝑠𝑇𝑋+𝐺𝑠𝑅𝑋=3.52814+ 0=𝟏.𝟎𝟐𝟗𝟏 𝒅𝑩 ( 6-146) Mediante el procedimiento descrito en el Anexo III se calcula la hora del amanecer, siendo 06:03h y la hora del anochecer, siendo de 19:21h para el punto medio del trayecto tratado en este caso. Al igual que en el caso anterior, la hora de transmisión difiere con la hora que habrá en el punto medio puesto que los usos horarios son distintos, habiendo una hora menos en el punto medio. Puesto que se transmite a las 00:30h, hora local para el TX, en el punto medio serán las 23:30h. El evento más próximo de producirse es el anochecer, por lo que se debe calcular t, medido en horas, respecto a la hora que anochece en el punto medio. 𝑡=23−19=𝟒𝒉→𝑳𝒕𝒐𝒄𝒂𝒔𝒐 =𝟎 𝒅𝑩 ( 6-147) Para finalizar con esta parte se calcula E mediante: 𝐸=𝐺𝑠+𝑉+𝐴−20∗log𝑝−𝐿𝑎−𝐿𝑟−𝐿𝑝−𝐿𝑡−120= ( 6-148)
51 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 =−18.5794+1.0291+110.2−120−20∗log(3301.39)=−𝟗𝟕.𝟕𝟐𝟒𝟐 𝒅𝑩𝑽/𝒎 Para este apartado, como ya se ha hecho anteriormente, se utilizará una frecuencia de 1500 kHz, por lo que se verán cambios en las variables Lp, Lr y Gs. Comenzamos calculando el parámtro de Lr. Hacemos uso de (6-8) donde hemos obtenido con anterioridad el valor de Ф, el cual lo necesitamos en grados. Φ1=34.427° →𝐿𝑟1=𝟎 𝒅𝑩 ( 6-149) Φ2=46.661° →𝐿𝑟2=𝑏∗(𝑅100 ⁄)∗(𝑝2000 ⁄ )=1∗(68100 ⁄)∗(3301.392∗1000 ⁄)= ( 6-150) =𝟏.𝟏𝟐𝟐𝟒𝟕 𝒅𝑩 Donde 𝑏=𝟏 debido a que la estación receptora está situada en Europa y 𝑅=𝟔𝟖, el número de manchas solares suavizado y obtenido para el mes en el que se ha realizado la transmisión, siendo en este caso el mes de junio y cuyo valor se ha explicado en 5.3.3 como se ha obtenido. 𝐿𝑟=𝐿𝑟1+𝐿𝑟2=𝟏.𝟏𝟐𝟐𝟒𝟕 𝒅𝑩 ( 6-151) El siguiente paso seria resolver el cálculo de Gs. Puesto que hemos cambiado de banda de trabajo, 𝐺0= 𝟔 𝒅𝑩, valor de nuevo introducido por el usuario. De nuevo, se calcula primero la parte correspondiente al TX y se finaliza con el RX. 𝑟1𝑇𝑋 = 103∗ (𝐺02𝑞1∗𝑓 ⁄)= 103∗ (621.4∗1500 ⁄)=𝟏𝟕.𝟏𝟒𝟐𝟖𝟔 𝒌𝒎 ( 6-152) Puesto que 𝑟1𝑇𝑋 <𝑠1𝑇𝑋: 𝐺𝑠𝑇𝑋= 𝟎 𝒅𝑩 ( 6-153) Se realiza el mismo procedimiento ahora para la otra estación. 𝑟1𝑅𝑋= 103∗ (𝐺02𝑞1∗𝑓 ⁄)= 103∗ (621.4∗1500 ⁄)=𝟏𝟕.𝟏𝟒𝟐𝟖𝟔 𝒌𝒎 ( 6-154) Puesto que 𝑟1𝑅𝑋<𝑠1𝑅𝑋: 𝐺𝑠𝑅𝑋=𝟎 𝒅𝑩 ( 6-155) Por último, el resultado final será la suma de los dos valores obtenidos. 𝐺𝑠=𝐺𝑠𝑇𝑋+𝐺𝑠𝑅𝑋=𝟎 𝒅𝑩 ( 6-156)
Resolución Analítica 52 52 La siguiente variable que se calculará será 𝐿𝑝, sin embargo, al igual que sucede en el caso anterior, las inclinaciones de las dos estaciones son superiores a 45°, por lo que se vuelve a anular dicha atenuación, 𝐿𝑝= 𝟎 𝒅𝑩 Se calcula E por último mediante: 𝐸=𝐺𝑠+𝑉+𝐴−20∗log𝑝−𝐿𝑎−𝐿𝑟−𝐿𝑝−𝐿𝑡−120= (6-157) =−18.5794−1.12247+107−120−20∗log(3301.79)=−𝟏𝟎𝟑.𝟎𝟕𝟔𝟖 𝒅𝑩𝑽/𝒎
53 7 COMPARACIÓN DE RESULTADOS El fin de este apartado no es otro que corroborar el correcto funcionamiento del programa realizado en Python, justificando los cálculos hechos en el apartado anterior y demostrando que la salida que ofrece el programa es practicamente similar, teniendo en cuenta los errores de aproximación que tanto el programa comete a la hora de redondear como nosotros hemos podido realizar con la calculadora. La estructura de este apartado es similar a la del caso anterior para facilitar la correcta lectura, teniendo tres casos diferentes en los que, para cada uno de ellos se modificará la frecuencia para poder apreciar con mayor detalle como se comportan las distintas variabes que dependen de ésta, y de este modo, realizar un análisis con mejores posibilidades. Por último, cabe recordar que el programa tomará los valores de fecha y hora del momento justo de la ejecución, el cual se podrá ver en las distintas imágenes que estarán en este apartado. 7.1 Caso 1. Río de Janeiro → Buenos Aires Para el primer caso, donde la frecuencia toma un valor de 299 kHz, los datos a introducir son los siguientes: Figura 7-1. Datos de entrada. Caso 1-a El programa ofrece la siguiente salida:
Conclusiones 60 60 Por tanto, llegados a este punto, considero un acierto total la elección y realiación de este trabajo, aportandome nuevos conocimientos, confianza, seguridad y abriéndome puertas que quizás nunca habría planteado abrirlas, por lo que animo a toda persona con dudas, no solo en esta decisión, sino en general, a salir de la zona de confort y enfrentarse a nuevos retos. La dificultad del momento te hará aprender mucho más de lo que te imaginabas.
61 REFERENCIAS [1] Jose Miguel, «Fórmula de Haversine,» 2011. [En linea]. Available: https://www.genbeta.com/desarrollo/como-calcular-la-distancia-entre-dos-puntos-geograficos-en-c- formula-de-haversine [2] Radiocommunication sector of ITU, «Frecuency bands - TABLE 1 (ITU-R V.431-8),» 2016. [3] Roberto Ferrero, «The twenty-four solar cycle,» 2019. [En linea]. Available: https://blog.cielosboreales.com/el-ciclo-solar-24/. [4] Javier Montero, «Trigonometry in python,» 2013. [En linea]. Available: http://elclubdelautodidacta.es/wp/2013/03/trigonometria-en-python/. [5] Javier Montero, «Strings in python,» 2013. [En linea]. Available: http://elclubdelautodidacta.es/wp/2013/10/python-troceando-y-recomponiendo-strings/. [6] Diego Caraballo, «Obtener fecha y hora actual en python,» [En linea]. Available: http://www.pythondiario.com/2014/05/obtener-fecha-y-hora-actual-en-python.html. [7] SpaceWeatherLive, [En linea]. Available: https://www.spaceweatherlive.com/es/actividad-solar/ciclo-solar. [8] David, «Meteo y orientación,» 2017. [En linea]. Available: https://thetrekkinglife.com/articulos/orientacion/111-los-tres-tipos-de-norte-y-la-declinacion-magnetica. [9] Radiocommunication sector of ITU, «Recommendation ITU-R BS.561-2, Definiciones de la radiación en radiodifusión (ondas kilométricas, hectométricas y decamétricas),» 2002. [10] Radiocommunication sector of ITU, «Recommendation ITU-R P.1147-4, Predicción de la intensidad de campo de ondas de cielo en frecuencias entre aproximadamente 150 y 1 700 kHz,» 2015. [11] Capas de la Tierra ORG, [En linea]. Available: https://www.capasdelatierra.org/ionosfera/. [12] Gabriela Briceño V., «Ionosphere,» [En linea]. Available: https://www.euston96.com/ionosfera/. [13] Geokov, «Declinación magnética - Inclinación magnética,» [En linea]. Available: http://geokov.com/education/magnetic-declination-inclination.aspx.
Referencias 62 62 [14] University of Granada, «History about Ionosphere,» [En linea]. Available: http://electronica.ugr.es/~amroldan/asignaturas/curso01-02/tv2/Ionosfera.htm. [15] Space Academy, «Historia del descubrimiento Ionosférico,» [En linea]. Available: https://www.spaceacademy.net.au/library/notes/earlyion.htm. [16] Ian Poole, «Radio waves and the Ionosphere,» 1999. [17] Google, «Google Earth,» [En línea]. Available: https://www.google.es/intl/es/earth/index.htm. [18] Dave Anderson, «Space Environment Topics - Figure 2,» 1999. [19] Amateur Radio Colombia, «Propagación de las ondas electromagnéticas - Imagen Capas de la Ionosfera,» 2017. [En linea]. Available: http://hamradio.sabanalarga.org/propagacion.html. [20] Carlos S. Chinea, «Las fórmulas de la trigonometría esférica - Imagen Ángulo sobre un círculo máximo,» 2002. [En linea] Available: http://casanchi.com/mat/formulaesferica.pdf. [21] Radiocommunication sector of ITU, «Rec. P.1147-4 - Figure 8a,» 2015. [22] Radiocommunication sector of ITU, «Rec. P.1147-4 - Figure 8b,» 2015. [23] Radiocommunication sector of ITU, «Rec. P.1147-4 - Figure 1,» 2015. [24] Radiocommunication sector of ITU, «Rec. P.1147-4 - Figure 10,» 2015. [25] Radiocommunication sector of ITU, «Rec. P.1147-4 - Figure 9,» 2015. [26] Radiocommunication sector of ITU, «Rec. BS.561-2 - Table 1,» 2002. [27] SailandTrip, «Declinación Magnética,» 2015. [En linea]. Available: https://sailandtrip.com/declinacionmagnetica/. [28] UTFSM, «Determinación de angulos,» 2010. [En linea]. Available: http://www2.elo.utfsm.cl. [29] Jon Clements, «stack overflow - converting float to hhmm format,» 2014. [En linea]. Available: https://stackoverflow.com/questions/27496889/converting-a-float-to-hhmm-format. [xx] O. Autor, «Otra cita distinta,» revista, p. 12, 2001.
63 GLOSARIO Sensibilidad: Mínimo nivel de potencia que necesita recibir el receptor para poder diferenciar dicha recepción del ruido y, de esta forma, poder realizar todas las operaciones de demodulación de la señal de manera correcta. ITU-R: International Telecommunication Union of Radiocommunications es el organismo encargdo a nivel interncacional de gestionar el espectro radioeléctrico con el objetivo de que su uso sea lo más óptimo posible, además de establecer todas las normas y recomendaciones que se deben respetar para que dicho fin se produzca. Refracción: Se denomina refracción al cambio de dirección que experimenta una onda cuando intenta pasar de un medio a otro y no lo consigue, motivado por la diferencia existentes entre los índices de refracción de los distintos medios que intervienen en la acción.
64
65 ANEXO I
66
67 ANEXO II
Anexo II 68 68
69 ANEXO III A continuación se detalla el procedimiento usado para el cálculo de la hora a la que suceden los eventos, es decir, la hora tanto del amanecer como del anochecer en el punto medio del trayecto que se esté estudiando en cada caso. Para ello, se realizará una explicación de forma genérica teniendo en cuenta que los valores introducidos en las fórmulas cambiarán según el caso con el que se esté trabajando. Cabe recordar que la función que recoge los siguientes detalles recibe como parámetros las coordenadas de las ubicaciones de las dos estaciones, la distancia del trayecto y el uso horario del transmisor que dependerá de su situación geográfica. Lo primero de todo es calcular las coordenadas del punto medio del trayecto, para lo cual se reciben los datos de los nodos. El siguiente paso es, como ya se explicó en el punto 5.3.6 obtener mediante funciones internas de python una cadena de caracteres con información del dia, mes, año, hora y minutos del momento justo en el que se ejecuta el programa para despues trocearla y quedarnos con la información que nos interesa, siendo en este caso toda la información anterior citada pero almacenadas en variables por separado. En función del mes y día se determinará N, variable que contabiliza el número de días transcurridos que lleva el año, comprobando antes si el año en cuestión es bisiesto para tenerlo en cuenta. Se definirán otras constantes como Z, distancia cenital del sol, siendo de 90.8333° tanto para el amanecer como para el anochecer. Por último, tendremos S’, que valdrá 6 h en el caso en el que se calcule la hora del orto o 18 h cuando se calcule la hora del ocaso. Como bien se explicó en el 5.3.6, no se podrá calcula la atenuación Lt para latitudes elevadas, marcando dicho límite en 65°, y siendo comparada con la latitud en el punto medio anteriormente calculada. Se calcula la fecha del suceso, Y, siendo β la longitud del punto medio calculado y S’ dependiendo de si el evento es el ocaso o el orto. 𝑌=𝑁+(𝑆′−(𝛽15 ⁄)) 24 (𝑑𝑖𝑎𝑠) ( I) El siguiente paso es calcular la anomalía media del sol, M, y su longitud, L. 𝑀=0.9856∗𝑌−3.289 (°) ( II) 𝐿=𝑀+1.916∗sin(𝑀)+0.02∗sin(2𝑀)+282.634 (°) ( III) El siguiente paso es determinar la ascensión recta del sol, RA, junto con su declinación, s, mediante:
Anexo IV 76 76 #-------COLUMNAS PARA LOS RADIOBUTTONS----------# varOption = IntVar() varOption1 = IntVar() varOption2 = IntVar() varOption3 = IntVar() #1 implica si; 0 implica no r1 = Radiobutton(miFrame, text = "Si", variable = varOption, value = 1) r1.grid(row = 0, column = 3, sticky = "w") r2 = Radiobutton(miFrame, text = "No", variable = varOption, value = 0) r2.grid(row = 0, column = 3, sticky = "e") r3 = Radiobutton(miFrame, text = "Si", variable = varOption1, value = 1) r3.grid(row = 1, column = 3, sticky = "w") r4 = Radiobutton(miFrame, text = "No", variable = varOption1, value = 0) r4.grid(row = 1, column = 3, sticky = "e") r5 = Radiobutton(miFrame, text = "Si", variable = varOption2, value = 1) r5.grid(row = 2, column = 3, sticky = "w") r6 = Radiobutton(miFrame, text = "No", variable = varOption2, value = 0) r6.grid(row = 2, column = 3, sticky = "e") r7 = Radiobutton(miFrame, text = "Si", variable = varOption3, value = 1) r7.grid(row = 3, column = 3, sticky = "w") r8 = Radiobutton(miFrame, text = "No", variable = varOption3, value = 0) r8.grid(row = 3, column = 3, sticky = "e") #----------------FUNCIONES-------------------# def clicked(): freq = float(cuadroFrec.get()) latTX = float(cuadroLatTX.get()) longTX = float(cuadroLongTX.get()) latRX = float(cuadroLatRX.get()) longRX = float(cuadroLongRX.get()) estacion = varOption.get() if estacion == 1: estacion = "s"
77 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 else: estacion = "n" ITX = float(cuadroInclinacionTX.get()) IRX = float(cuadroInclinacionRX.get()) omni = varOption1.get() if omni == 1: omni = "s" else: omni = "n" potRad = float(cuadroPotRad.get()) Gv = float(cuadroGv.get()) Gh = float(cuadroGh.get()) dulceTX = varOption2.get() if dulceTX == 1: dulceTX = "s" else: dulceTX = "n" dulceRX = varOption3.get() if dulceRX == 1: dulceRX = "s" else: dulceRX = "n" Go1 = float(cuadroGo1.get()) marLatTX = float(cuadroMarLatTX.get()) marLongTX = float(cuadroMarLongTX.get()) seccLatTX = float(cuadroSeccLatTX.get()) seccLongTX = float(cuadroSeccLongTX.get()) marLatRX = float(cuadroMarLatRX.get()) marLongRX = float(cuadroMarLongRX.get()) seccLatRX = float(cuadroSeccLatRX.get())
Anexo IV 78 78 seccLongRX = float(cuadroSeccLongRX.get()) decTX = float(cuadroDecTX.get()) decRX = float(cuadroDecRX.get()) utc_zone = float(cuadroUtcTX.get()) utc_zone_PM = float(cuadroUtcPM.get()) #En este punto debemos continuar con la ejecucion del programa puesto que ya hemos configurado todas las variables callStart(freq, latTX, latRX, longTX, longRX, estacion, ITX, IRX, omni, potRad, Gv, Gh, dulceTX, dulceRX, Go1, marLatTX, marLongTX, seccLatTX, seccLongTX, marLatRX, marLongRX, seccLatRX, seccLongRX, decTX, decRX, utc_zone, utc_zone_PM) def callStart(freq, latTX, latRX, longTX, longRX, estacion, ITX, IRX, omni, potRad, Gv, Gh, dulceTX, dulceRX, Go1, marLatTX, marLongTX, seccLatTX, seccLongTX, marLatRX, marLongRX, seccLatRX, seccLongRX, decTX, decRX, utc_zone, utc_zone_PM): c = float(3e8) #lamb = c / freq #comprobamos que el rango de frecuencias es el correcto if (freq < 150000 or freq > 1700000): messagebox.showinfo("Simulador de Python", "La frecuencia introducida no cumple con los limites establecidos.") else: #datos para la estacion transmisora y receptora #h_TX = float(input("Introduzca la altura de la antena transmisora (mástil) en metros: ")) #h_RX = float(input("Introduzca la altura de la antena receptora (mástil) en metros: ")) #Comprobamos que las latitudes introducidas cumplen con el limite maximo de grados posibles #Como se puede apreciar por ejemplo en las figuras 5,6,10 de la norma, en caso contrario, se finalizaria el programa if abs(latTX) > 90: messagebox.showinfo("Simulador de Python", "La latitud correspondiente al transmisor no puede ser mayor de 90 grados.") elif abs(latRX) > 90: messagebox.showinfo("Simulador de Python", "La latitud correspondiente al receptor no puede ser mayor de 90 grados.")
79 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 elif abs(longTX) > 180: messagebox.showinfo("Simulador de Python", "La longitud correspondiente al transmisor no puede ser mayor de 180 grados.") elif abs(longRX) > 180: messagebox.showinfo("Simulador de Python", "La longitud correspondiente al receptor no puede ser mayor de 180 grados.") else: #comprobamos que tanto el tx como el rx poseen ubicaciones distintas if latTX == latRX: if longTX == longRX: messagebox.showinfo("Simulador de Python", "La ubicacion del transisor y receptor debe ser distinta.") #comprobamos con que tipo de onda estamos trabajando #Ya damos por hecho que el rango de frecuencias es el correcto, de lo contrario habria finalizado el programa if (30000 <= freq and freq <= 300000): banda = "KM" else: banda = "HM" #obtenemos la distancia del enlace en km distancia = distance(latTX, longTX, latRX, longRX) #comprobamos que la distancia cumple los limites establecidos por la norma (km) if (distancia < 50 or distancia > 12000): messagebox.showinfo("Simulador de Python", "La distancia debe de estar dentro del rango 50-12000 km.") elif (distancia > 7500 and banda == "KM"): messagebox.showinfo("Simulador de Python", "Para la banda kilométrica la distancia no puede ser superior a 7500 km.") else: #el siguiente paso es obtener la distancia real del trayecto p = trayectoProp_P(distancia) #Llamamos a la funcion correspondiente para obtener el numero de manchas solares suavizado R = media_R() #Llamamos a la funcion distance para obtener las distancias necesarias para que se pueda ejecutar la funcion Gs
Anexo IV 80 80 #ya que esta necesita las distancias desde las estaciones al mar y a la siguiente seccion de tierra dentro del circulo #maximo, y esa funcion emplea dicho metodo para calcular distancias, tanto para TX como para RX s1TX = distance(latTX, longTX, marLatTX, marLongTX) s2TX = distance(latTX, longTX, seccLatTX, seccLongTX) s1RX = distance(marLatRX, marLongRX, latRX, longRX) s2RX = distance(seccLatRX, seccLongRX, latRX, longRX) #ya tenemos p, que junto con los datos que ya tenemos se usara para llamar a las funciones encargadas de realizar las llamadas a funciones #en los otros archivos #comenzamos con el archivo atenuations_Functions, que devuelve la suma de todas las atenuaciones presentes en la norma L1 = callAtenuations(p, freq, latTX, longTX, latRX, longRX, banda, estacion, distancia, R, ITX, IRX, decTX, decRX, utc_zone, utc_zone_PM) #puesto que hemos devuelto una tupla, sumamos todos los valores L = L1[0] + L1[1] + L1[2] + L1[3] #realizamos lo mismo pero con el otro archivo, que devuelve la suma de algunos parametros F1 = callSome(freq, latTX, longTX, latRX, longRX, banda, distancia, omni, potRad, Gv, Gh, dulceTX, dulceRX, s1TX, s2TX, s1RX, s2RX, Go1) #puesto que hemos devuelto una tupla, sumamos todos los valores F = F1[0] + F1[1] #El siguiente paso seria calcular el valor de A correspondiente que usa la formula principal #Para ello debemos de calcular el punto medio del trayecto, ya que depende de donde este situado valdra #un valor u otro, siempre y cuando trabajemos en onda hectometrica if banda == "KM": A = 110.2 else:
81 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 #latitud y longitud del punto medio general latPM = (latTX + latRX)/2 longPM = (longTX + longRX)/2 #Lo siguiente seria comprobar si esta al sur del paralelo 11º dentro de la Region 3 definida por la ITU-R if longPM > 60 or longPM < -120: if latPM < -11: A = 110 else: A = 107 else: A = 107 print("A: ", A) print("Distancia real del trayecto de propagación, p (km) : ", p) #Una vez tenemos ya todos los parametros lo siguiente es usar la formula principal y calcular el campo #Le restamos 120 para pasarlo de dBmicroV a dBV ya que no tengo forma de expresar el caracter griego E = A + F - L - 20*math.log10(p) -120 print("Valor mediano anual de las intensidades de campo medianas semihorarias, E (dBV/m) : ", E) return btn = Button(miFrame, text = "Listo", command = clicked) btn.grid(column = 2, row = 13) raiz.mainloop() atenuations.py import math import sys import time from tkinter import * from functions import * import datetime from datetime import datetime
Anexo IV 82 82 #Funcion encargada de llamar a todas las demas para obtener los datos necesarios def callAtenuations(p, freq, latTX, longTX, latRX, longRX, banda, estacion, distancia, R, ITX, IRX, decTX, decRX, utc_zone, utc_zone_PM): #con los parametros recibidos comenzamaos a llamar a todas las funciones definidas aqui La = absIonosf_La(p, latTX, longTX, latRX, longRX, distancia) print("Atenuación debida a la absorción ionosférica y factores conexos, La (dB) : ",La) Lr = activSolar_Lr(p, freq, latTX, longTX, latRX, longRX, banda, estacion, distancia, R) print("Atenuación debida al efecto de la actividad solar, Lr (dB) : ",Lr) Lp = acoplaPol_Lp(banda, ITX, IRX, latTX, longTX, latRX, longRX, decTX, decRX) print("Atenuación debida a la pérdida por acoplamiento de polarización, Lp (dB) : ",Lp) Lt = perd_Lt(latTX, longTX, latRX, longRX, distancia, utc_zone, utc_zone_PM) print("Atenuación debida a la pérdida horaria, Lt (dB) : ", Lt) #devolvemos los valores en una tupla por si tenemos que hacer uso de ellos por separado L = [La, Lr, Lp, Lt] return L #Funcion que se encarga de determinar los efectos de la absorcion ionosferica, enfoque, #perdidas del terminal y perdidas entre secciones de multiples saltos #Recibe como parametro de entrada la distancia real del trayecto de propagacion, latitud y longitud de la estacion TX y RX y la distancia #Las coordenadas Norte y Este se consideran positivas, el resto negativas, aunque al introducirlas por teclado #al principio del programa ya estamos teniendo en cuenta dicha informacion def absIonosf_La(p, latTX, longTX, latRX, longRX, distancia): #si distancia es mayor que 3000 km debemos de calcular el punto medio de los dos trayectos en los que se #dividira el trayecto if distancia > 3000: #latitud y longitud del punto medio general latPM = (latTX + latRX)/2 longPM = (longTX + longRX)/2
83 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 #calculamos ahora la latitud y longitud del punto medio del primer trayecto latPM1 = (latTX + latPM)/2 longPM1 = (longTX + longPM)/2 #calculamos ahora la latitud y longitud del punto medio del segundo trayecto latPM2 = (latPM + latRX)/2 longPM2 = (longPM + longRX)/2 #calculamos la latitud geomagnetica de cada trayecto dividido rad=math.pi/180 a1 = math.sin(rad*latPM1)*math.sin(rad*78.5) b1 = math.cos(rad*latPM1)*math.cos(rad*78.5)*math.cos((rad*69)+(rad*longPM1)) latGeo1 = math.asin(a1+b1) if math.degrees(latGeo1) < -60: latGeo1 = -60 elif math.degrees(latGeo1) > 60: latGeo1 = 60 else: latGeo1 = math.degrees(latGeo1) k1 = (2*math.pi+4.95*math.tan(rad*latGeo1)*math.tan(rad*latGeo1)) #vamos con el segundo trayecto a2 = math.sin(rad*latPM2)*math.sin(rad*78.5) b2 = math.cos(rad*latPM2)*math.cos(rad*78.5)*math.cos((rad*69)+(rad*longPM2)) latGeo2 = math.asin(a2+b2) if math.degrees(latGeo2) < -60: latGeo2 = -60 elif math.degrees(latGeo2) > 60: latGeo2 = 60 else: latGeo2 = math.degrees(latGeo2) k2 = (2*math.pi+4.95*math.tan(rad*latGeo2)*math.tan(rad*latGeo2)) #el valor de k sera la media entre los valores anteriores calculados k = (k1 + k2)/2 #y por ultimo calculamos las perdidas La = k*math.sqrt(p/1000)
Anexo IV 84 84 else: latPM = (latTX + latRX)/2 longPM = (longTX + longRX)/2 #calculamos la latitud geomagnetica del trayecto rad=math.pi/180 a = math.sin(rad*latPM)*math.sin(rad*78.5) b = math.cos(rad*latPM)*math.cos(rad*78.5)*math.cos((rad*69)+(rad*longPM)) latGeo = math.asin(a + b) if math.degrees(latGeo) < -60: latGeo = -60 elif math.degrees(latGeo) > 60: latGeo = 60 else: latGeo = math.degrees(latGeo) k = (2*math.pi+4.95*math.tan(rad*latGeo)*math.tan(rad*latGeo)) #y por ultimo calculamos las perdidas La = k*math.sqrt(p/1000) return La #Funcion que incorpora el efecto de la actividad solar #Recibira como parametro la distancia real del trayecto ya calculada, frecuencia, posiciones y banda de frecuencia, si la estacion #receptora pertenece a Europa, la distancia y el valor de las manchas solares suavizado en R #Se debera diferenciar la region europea puesto que cambiara el parametro b dentro de ella def activSolar_Lr(p, freq, latTX, longTX, latRX, longRX, banda, estacion, distancia, R): #si distancia es mayor que 3000 km debemos dividir el trayecto en dos tramos if distancia > 3000: latPM = (latTX + latRX)/2 longPM = (longTX + longRX)/2 #calculamos ahora la latitud y longitud del punto medio del primer trayecto latPM1 = (latTX + latPM)/2 longPM1 = (longTX + longPM)/2
85 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 #calculamos ahora la latitud y longitud del punto medio del segundo trayecto latPM2 = (latPM + latRX)/2 longPM2 = (longPM + longRX)/2 #calculamos la latitud geomagnetica de cada trayecto dividido rad = math.pi/180 a1 = math.sin(rad*latPM1)*math.sin(rad*78.5) b1 = math.cos(rad*latPM1)*math.cos(rad*78.5)*math.cos((rad*69)+(rad*longPM1)) latGeo1 = math.asin(a1+b1) #Realizamos las comprobaciones pertinentes if math.degrees(latGeo1) < -60: latGeo1 = -60 elif math.degrees(latGeo1) > 60: latGeo1 = 60 else: latGeo1 = math.degrees(latGeo1) #vamos con el segundo trayecto a2 = math.sin(rad*latPM2)*math.sin(rad*78.5) b2 = math.cos(rad*latPM2)*math.cos(rad*78.5)*math.cos((rad*69)+(rad*longPM2)) latGeo2 = math.asin(a2+b2) #Realizamos las comprobaciones pertinentes if math.degrees(latGeo2) < -60: latGeo2 = -60 elif math.degrees(latGeo2) > 60: latGeo2 = 60 else: latGeo2 = math.degrees(latGeo2) #vamos con el primer tramo if banda == "KM": Lr1 = 0 else: if abs(latGeo1) <= 45: Lr1 = 0 else: #Preguntamos si la estacion receptora se encuentra en Europa if estacion == "s": b = 1 Lr1 = b*(R/100)*((p/2)/1000)
Anexo IV 92 92 #Lo primero que hara la funcion es comprobar el mes en que se produce la transmision, y en funcion de esa #informacion y de los datos que tenemos de la web SpaceWeatherLive se calcula el valor R, numero de manchas solares #suavizado, y cuya informacion sera a partir de 1995 hasta 2017 fecha = time.strftime("%d/%m/%y") #obtenemos el mes. Usamos el metodo split para separar la cadena fechav2 = fecha.split("/") mes = int(fechav2[1]) #El siguiente paso, es seleccionar el mes correspondientes, una vez ya tenemos la media calculada de manchas solares por mes #Aunque en el calculo de la media de R salgan decimales, aproximamos al entero por abajo if mes == 1: R = 68 elif mes == 2: R = 68 elif mes == 3: R = 68 elif mes == 4: R = 68 elif mes == 5: R = 68 elif mes == 6: R = 68 elif mes == 7: R = 68 elif mes == 8: R = 68 elif mes == 9: R = 68 elif mes == 10: R = 67 elif mes == 11: R = 67 else: R = 68 return R #Fucion encargada de calcular las perdidas horarias relacionadas con la ubicacion del transmisor y la hora a la que se transmite #Recibe para ello las ubicaciones, distancia del trayecto y uso horario del TX. Tras seguir el procedimiento descrito #en el anexo 3 se obtiene tanto la hora de amanecer como la de anochecer y, dependiendo de la hora a la que se ejecute el
93 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 #programa, t tomara un valor u otro y de ello dependera el valor de atenuacion que se calcule. Sera independiente de la freq def perd_Lt(latTX, longTX, latRX, longRX, distancia, utc_zone, utc_zone_PM): #tomamos como punto de referencia el punto medio del trayecto para calcular la hora de puesta/salida del sol lat = (latTX + latRX)/2 long = (longTX + longRX)/2 #obtenemos los datos de la fecha actual con los valores separados #Para periodos en los que no se aprecia la puesta salida del Sol no se debe calcular el factor de perdida horaria #Basandonos en la fig.11 -> dias 6 y 18 de marzo y septiembre ahora = datetime.now() y = int(ahora.year) m = int(ahora.month) d = int(ahora.day) #crompobamos que no estamos en nignuno de esos dias; en caso de estarlo activamos una bandera para evitar #entrar en el procedimiento del calculo bandera = 0 if m == 3 or m == 9: if d == 6 or d == 18: bandera = 1 #realmente esta bandera no haria falta puesto que si estamos en esos dias se sale del programa sys.exit() #segun la norma, para latitudes menores a 65 grados if abs(lat) < 65 and bandera == 0: #cogemos hora local justo en el momento de la ejecucion del programa trxhour = ahora.hour trxminute = ahora.minute #definimos las variables necesarias para la ejecucion de la funcion Z = 90.833 #definimos una variable para realizar los calculos con las funciones trigonometricas rad = math.pi/180 #calculamos el numero de dia del año comprobando si el año en cuestion es bisiesto if y % 4 == 0: if y % 100 == 0: if y % 400 == 0:
Anexo IV 94 94 #El año es bisiesto bandera = 1 else: #el año no es bisiesto bandera = 0 else: #el año es bisiesto bandera = 1 else: #el año no es bisiesto bandera = 0 #Ya tenemos si el año es bisiesto, por lo que solo falta sumar el computo total de dias, en funcion del numero de meses #que llevan pasados, a la cual la denominaremos N if m == 1: N = d elif m == 2: N = 31 + d elif m == 3: N = 59 + d elif m == 4: N = 90 + d elif m == 5: N = 120 + d elif m == 6: N = 151 + d elif m == 7: N = 181 + d elif m == 8: N = 212 + d elif m == 9: N = 243 + d elif m == 10: N = 273 + d elif m == 11: N = 304 + d else: N = 334 + d #Se tiene en cuenta el 1 de mas en año bisiesto if bandera == 1 and m > 2: N = N + 1 #1) Calculamos la longitud del observador, B (horas) B = long/15 #2) Calculamos la fecha del suceso, Y (dias) Yaman = N + ((6 - B)/24)
95 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 Yanoc = N + ((18 - B)/24) #3) Calculamos la anomalia media del sol, M (grados) Maman = (0.9856*Yaman) - 3.289 Manoc = (0.9856*Yanoc) - 3.289 #4) Se calcula la longitud del sol, L (grados) -> debe pertenecer al rango [0,360] L1 = Maman + 1.916*math.sin(rad*Maman) + 0.02*math.sin(2*rad*Maman) + 282.634 L2 = Manoc + 1.916*math.sin(rad*Manoc) + 0.02*math.sin(2*rad*Manoc) + 282.634 #hacemos que pertenezca a ese rango en caso de no serlo if L1 < 0: Laman = L1 + 360 elif L1 > 360: Laman = L1 - 360 else: Laman = L1 #repetimos procedimiento para la otra variable #hacemos que pertenezca a ese rango en caso de no serlo if L2 < 0: Lanoc = L2 + 360 elif L2 > 360: Lanoc = L2 - 360 else: Lanoc = L2 #5) Calculamos la ascension del Sol, RA (grados) RA1 = math.degrees(math.atan(0.91764 * math.tan(rad*Laman))) RA2 = math.degrees(math.atan(0.91764 * math.tan(rad*Lanoc))) #como antes, hacemos que pertenezca al rango [0,360] if RA1 < 0: RAaman = RA1 + 360 elif RA1 > 360: RAaman = RA1 - 360 else: RAaman = RA1 #como antes, hacemos que pertenezca al rango [0,360] if RA2 < 0: RAanoc = RA2 + 360 elif RA2 > 360: RAanoc = RA2 - 360 else: RAanoc = RA2
Anexo IV 96 96 #RA debe pertenecer al mismo cuadrante que L L_quad_aman = (math.floor(Laman/90))*90 RA_quad_aman = (math.floor(RAaman/90))*90 RAaman = RAaman + (L_quad_aman - RA_quad_aman) #duplicamos procedimiento #RA debe pertenecer al mismo cuadrante que L L_quad_anoc = (math.floor(Lanoc/90))*90 RA_quad_anoc = (math.floor(RAanoc/90))*90 RAanoc = RAanoc + (L_quad_anoc - RA_quad_anoc) #convertimos RA a horas RAaman = RAaman / 15 RAanoc = RAanoc / 15 #6) Calculamos la declinacion del sol, s sensaman = 0.39782 * math.sin(rad*Laman) cossaman = math.cos(math.asin(sensaman)) sensanoc = 0.39782 * math.sin(rad*Lanoc) cossanoc = math.cos(math.asin(sensanoc)) #7) Se calcula la hora solar local, H Haman = (math.cos(rad*Z) - (sensaman * math.sin(rad*lat)) / (cossaman * math.cos(rad*lat))) Hanoc = (math.cos(rad*Z) - (sensanoc * math.sin(rad*lat)) / (cossanoc * math.cos(rad*lat))) # Extremo norte/sur no se produce ocaso/orto if Haman > 1 or Hanoc > 1: sys.exit() elif Haman < -1 or Hanoc < -1: sys.exit() #8) Se calcula la hora media local del suceso #si es amanecer sun_local_hour_aman = (360 - math.degrees(math.acos(Haman))) / 15 #si es anochecer sun_local_hour_anoc = math.degrees(math.acos(Hanoc)) / 15 evento_aman = sun_local_hour_aman + RAaman - (0.06571 * Yaman) - 6.622 evento_anoc = sun_local_hour_anoc + RAanoc - (0.06571 * Yanoc) - 6.622 #hora final; hora amanecer/anochecer
97 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 time_utc_aman = evento_aman - (long / 15) + utc_zone result_aman = '{0:02.0f}:{1:02.0f}'.format(*divmod(time_utc_aman*60, 60)) time_utc_anoc = evento_anoc - (long / 15) + utc_zone result_anoc = '{0:02.0f}:{1:02.0f}'.format(*divmod(time_utc_anoc*60, 60)) #imprimimos directamente la hora del amanecer print("Hora del amanecer: ", result_aman) #Para el anochecer hay que realizar un procedimiento previo #debemos de restar a 24:00h, para ello creamos dos variables enteras hora1 = 24 #separamos la cadena que debemos de restar a 24:00h en hora y minutos cad = result_anoc.split(':') localhora = int(cad[0]) localminut = int(cad[1]) #si los minutos son 60 se pone 00 if localminut == 60: localminut = 0 #se suma porque la hora esta negativa al ser anochecer; con los minutos no porque el signo de restar #se quedo en la variable de horas hora11 = str(hora1 + localhora) minut = str(localminut) #si la variable minut tiene un unico digito hay que añadirle un cero por la izquierda if minut == "1" or minut == "2" or minut == "3" or minut == "4" or minut == "5" or minut == "6" or minut == "7" or minut == "8" or minut == "9" or minut == "0": minut1 = str(0) + minut anochece = hora11 + ":" + minut1 print("Hora del anochecer: ", anochece) #si no imprimimos normal else: anochece = hora11 + ":" + minut print("Hora del anochecer: ", anochece) #El siguiente paso es definir el rango correcto para cada tipo, calcular t: las horas de diferencia entre #cuando ocurre el evento y cuando se transmite, y si estamos dentro del rango calcular la atenuacion; #si no estamos dentro, Lt = 30 dB o Lt = 0 dB
Anexo IV 98 98 #vamos primero para el amanecer aman = result_aman.split(':') aman_hour = int(aman[0]) #el paso previo a realizar es calcular la hora la hora a la que se transmite en el punto medio, ya que la hora introducida la coge con referencia al transmisor if utc_zone > utc_zone_PM: trxhour = trxhour - (utc_zone - utc_zone_PM) elif utc_zone < utc_zone_PM: trxhour = trxhour + (utc_zone_PM - utc_zone) else: trxhour = trxhour #se calcula la diferencia con respecto a la hora de la transmision aman_t = trxhour - aman_hour #hacemos lo propio con el anochecer anoc = anochece.split(':') anoc_hour = int(anoc[0]) #se calcula la diferencia con respecto a la hora de la transmision anoc_t = trxhour - anoc_hour #Calculamos la atenuacion para el amanecer if -3 < aman_t < 1: Lt_aman = 9.6 + 12.2*aman_t + 5.62*aman_t**2 + 0.86*aman_t**3 elif (aman_hour + 1) <= trxhour <= (anoc_hour - 1) and trxhour < 12: Lt_aman = 30 bandera = 1 #Para que no sume la misma atenuacion dos veces else: Lt_aman = 0 #Calculamos la atenuacion para el anochecer if -1 < anoc_t < 4: Lt_anoc = 12.4 - 9.248*anoc_t + 2.892*anoc_t**2 - 0.3343*anoc_t**3 elif (aman_hour + 1) <= trxhour <= (anoc_hour - 1) and (bandera == 0): Lt_anoc = 30 else: Lt_anoc = 0 #por ultimo se suman los valores ya que solo tendremos un procedimiento en cuenta #en cada ejecucion Lt = Lt_anoc + Lt_aman
99 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 return Lt functions.py import math import sys import time from tkinter import * #Funcion que determina la distancia entre las dos estaciones que se estan manejando #El numero 1 hace referencia a la estacion transmisora y el 2 a la receptora def distance(lat1, long1, lat2, long2): #definimos el radio de la Tierra (km) Ra = 6378 rad = math.pi/180 #calculamos la diferencia entre coordenadas dlat = lat2-lat1 dlong = long2-long1 a = (math.sin(rad*dlat/2))*(math.sin(rad*dlat/2)) + math.cos(rad*lat1)*math.cos(rad*lat2)*(math.sin(rad*dlong/2))*(math.sin(rad*d long/2)) #distancia entre las dos estaciones #distancia=2*R*math.asin(math.sqrt(a))*1000 #calculamos la distancia del enlace distancia = 2*Ra*math.atan2(math.sqrt(a), math.sqrt(1-a)) return distancia #Funcion que calcula la distancia real del trayecto de propagacion #Tomara como parametro de entrada la distancia medida sobre el suelo def trayectoProp_P(distancia): #tendremos que diferenciar dos casos, si distancia es < o > que 1000 km if distancia <= 1000: p = (distancia**2 + 40000)**0.5 else: p = distancia
Anexo IV 100 100 return p #Funcion encargada de llamar a una parte de las funciones para obtener los valores necesarios def callSome (freq, latTX, longTX, latRX, longRX, banda, distancia, omni, potRad, Gv, Gh, dulceTX, dulceRX, s1TX, s2TX, s1RX, s2RX, Go1): #con los parametros recibidos comenzamos a llamar a todas las funciones definidas aqui Gs = gananProxMar_Gs(freq, distancia, banda, dulceTX, dulceRX, s1TX, s2TX, s1RX, s2RX, Go1) print("Ganancia debida a la proximidad del mar, Gs (dB) : ", Gs) V = fuerzaCimo_V(omni, potRad, Gv, Gh) print("Valor de fuerza cimomotriz, V(dB(300 V)) : ",V) #devolvemos una tupla con los valores separados por si hay que hacer uso de ellos S = [Gs, V] return S #Funcion que determina la fuerza cimomotriz del transmisor def fuerzaCimo_V(omni, potRad, Gv, Gh): #En primer lugar, se ha de especificar si la antena transmisora es direccional u omnidireccional. Para el caso de una antena #vertical se considerará omnidireccional, pero se le debe de dar la opcion al usuario de poder cambiar esa opcion if omni == "s": #debido a que es omnidireccional se anula la ganancia horizontal Gh = 0 #Considerando una fuerza cimomotriz de referencia de 300 V implica una potencia radiada de 1 kW y una ganancia vertical de #0 dB. La potencia radiada se especificara en dBs por encima de dicho valor, y en este caso, tambien se debera de incluir #valor para la ganancia vertical, puesto que ya no tomamos el valor de referencia; considerando el valor de referencia, #estaremos suponiendo una potencia radiada de 1 kW y 0 dB de ganancia vertical, por lo que V = 0, ya que la potencia #iria en decibelios por encima de dicho valor
101 Simulador en Python para el cálculo de la intensidad de campo de la onda ionosférica según la Rec. ITU-R P.1147 #Por ultimo debemos de indicar el valor de la ganancia vertical, que sera en funcion de la altura de la antena transmisora #y lambda; si suponemos el valor de referencia, Gv = 0 #El valor de la fuerza cimomotriz sera el siguiente V = potRad + Gv else: #Considerando una fuerza cimomotriz de referencia de 300 V implica una potencia radiada de 1 kW y una ganancia vertical de #0 dB. La potencia radiada se especificara en dBs por encima de dicho valor, y en este caso, tambien se debera de incluir #valor para la ganancia vertical, puesto que ya no tomamos el valor de referencia; considerando el valor de referencia, #estaremos suponiendo una potencia radiada de 1 kW y 0 dB de ganancia vertical, por lo que V = 0, ya que la potencia iria en #decibelios por encima de dicho valor #Por ultimo debemos de indicar el valor de la ganancia vertical, que sera en funcion de la altura de la antena transmisora #y lambda; si suponemos el valor de referencia, Gv = 0 #Al no ser la antena omnidireccional tambien se debe de especificar un valor para dicha ganancia. #El valor de la fuerza cimomotriz sera el siguiente V = potRad + Gv + Gh return V #Funcion que determina la ganancia debida a la proximidad del mar; se aplica a cada terminal en caso de que se encuentran cerca del mar #Recibira como parametro la frecuencia de trabajo, la distancia del trayecto y la banda, la ganancia por proximidad del mar #y las coordenadas tanto para TX como para RX de los puntos mas cercanos a mar y a la siguiente seccion de tierra def gananProxMar_Gs(freq, distancia, banda, dulceTX, dulceRX, s1TX, s2TX, s1RX, s2RX, Go1): #La primera comprobacion a realizar seria si el agua que tiene cerca el nodo es dulce o no, en caso de ser dulce no se aplica if dulceTX == "n": #Calculamos el valor de r1 tanto para TX como para RX, puesto que nos marcara el limite