¿Qué tipo de conocimientos de programación necesitan los ingenieros para trabajar en la industria aeroespacial?

En el sector aeroespacial, a menudo se trata de integración de hardware de bajo nivel, y el control estricto de la sincronización suele ser bastante importante. Por lo tanto, a menudo trabaja en sistemas integrados (generalmente C / C ++) y sistemas operativos en tiempo real. Para que los componentes de hardware trabajen juntos de una manera estrechamente integrada, debe interactuar directamente con los pines de E / S … por ejemplo, utilizando bit-banging para construir un controlador de software para un nuevo componente de hardware (como una radio personalizada) que necesita ser controlado directamente desde la CPU. Además de la experiencia práctica con procesadores integrados y las herramientas de depuración como los osciloscopios, necesita al menos algo de experiencia en ingeniería eléctrica para comprender los diseños de circuitos.

Algunos de los sistemas de nivel superior en un satélite o cohete ejecutan un sistema operativo Unix con una pila TCP / IP completa y lenguajes de nivel superior como Java. En vehículos más grandes, he visto la canalización de comunicaciones a una estación terrestre (telemetría sobre el rendimiento del vehículo, alimentación de video, etc.) construida en Linux + Java. Para este tipo de sistemas de nivel superior, la base de habilidades es la ingeniería de software más parecida al desarrollo web en Internet. Excepto que tiene que asumir interrupciones de red casi constantes y pérdida de paquetes, ¡y el ancho de banda estará muy limitado! Por lo tanto, debe usar los protocolos de mensajería adecuados para superar ese tipo de restricciones.

Los ingenieros de la industria aeroespacial necesitan programación para hacer cálculos, análisis y pruebas. Para esto, necesitan herramientas de software más que programación de software, aunque siempre necesitará alguna capacidad de programación básica. Y luego, también necesitan comprender lo suficiente sobre los lenguajes de software para trabajar con los ingenieros de software.

Matlab / Simulink se usa para muchas disciplinas de ingeniería (aeroespacial, controles de vuelo, etc.), cualquiera que tenga que hacer cálculos o simulaciones. Adruno se usa en algunos lugares. Labview a menudo se usa para conectar equipos y pruebas en el laboratorio. Los aerodinámicos que realizan CFD e ingenieros estructurales con varios diseños estructurales y análisis de tensiones tendrán sus propios sistemas de análisis especializados. A menudo, estos son internos y propios de la empresa aeroespacial en particular.

Para los lenguajes, C es esencial en todas partes. A veces se necesitan Python o R o C ++ o Java . A menudo las personas tendrán una computadora con Windows, a veces para hacer todo, a veces solo para enviar correos electrónicos y tarjetas de tiempo mientras usan una caja de Linux para computación seria.

En la categoría general de “conocimiento de programación” también hay cosas como requisitos UML y herramientas de diseño de sistemas, sistemas de informes de problemas, el repositorio de requisitos de DOORS, etc. Los ingenieros aeroespaciales a menudo no tienen que poner su código en repositorios como GIT, pero la gente quienes SÍ necesitan usar GIT son:

Los ingenieros de software son completamente diferentes de las otras disciplinas de ingeniería, porque no les importa por qué tiene que funcionar de la manera en que lo hace, pero todo el software de vuelo es su producto en el vehículo. Necesitan conocer los lenguajes específicos utilizados para hacer software de vuelo, tierra, incrustado, operaciones y mantenimiento, así como procesos formales para la documentación, desarrollo y prueba de software. Por lo general, solo los ingenieros de software crearán un código que realmente vuela, aunque lo que hace está especificado por todos esos otros ingenieros (controles de vuelo, aviónica, ingenieros de sistemas, etc.). El código de vuelo a menudo se escribe en C. Algunas veces C ++ y otras Ada (para proyectos de defensa), pero algunas de las características orientadas a objetos están paralizadas o prohibidas. Deben estar familiarizados con la creación de código incrustado, donde se desarrolla en una estación de trabajo (Windows, Linux), pero el código está dirigido (compilado, etc.) a una CPU especializada incrustada dentro del equipo de aviónica, y el binario se carga en el equipo para pruebas de laboratorio, en tierra y en vuelo. La computadora de destino NUNCA tendrá Windows; a veces ejecutará una versión de Linux, y a veces ejecutará un RTOS como VxWorks. (También hay algunas cajas que no se ejecutan en un sistema operativo: ejecutan código en el metal desnudo, escribiendo su propia función ejecutiva). Deben saber cómo hacer pilas para controlar las transacciones de red Ethernet (aunque los vehículos a menudo tienen otras redes también, como ARINC 429 o MIL-STD-1553B). También necesitan conocer algunos gráficos, como la API de OpenGL.

Es más probable que el código de tierra, operaciones y mantenimiento (que no sea parte de un vehículo de vuelo) esté en un lenguaje de alto orden, a menudo C ++, a veces Java o Ada. He visto algunos Perl y Python.

Los ingenieros de software también son llamados a hacer “programación científica”: implementaciones especiales de ese código de análisis que necesitan los ingenieros de aeronaves. Utilizan software de estación de trabajo o incluso de mainframe o supercomputadora para calcular cargas estructurales, simulaciones dinámicas, propiedades electromagnéticas de materiales, etc., etc., etc. Utilizan lenguajes como el código de tierra anterior. A veces, obtendrá código antiguo en FORTRAN o incluso ensamblado para reescribir.

No suelen llamarse “ingenieros”, pero la última parte importante del software en el sector aeroespacial es la TI . Además de las personas que mantienen las redes en funcionamiento, y la nube, y todas esas estaciones de trabajo, hay desarrolladores que escriben el sitio web externo de la compañía y la intranet interna, aplicaciones de recursos humanos, aplicaciones comerciales, etc., etc., etc.

En primer lugar, tenga en cuenta las diversas ramas secundarias en el sector aeroespacial. La competencia en el uso de pocos lenguajes de programación es altamente beneficiosa para obtener un trabajo / desempeñarse bien en lo académico / investigación, así como para completar la tarea dada en el lugar de trabajo.

Si va por la dinámica del espacio, debería conversar bien con MATLAB. La simulación de las órbitas, la trayectoria del cohete y la estabilidad de los sistemas generalmente se realizan con MATLAB.

Si va a trabajar con CFD, se recomienda C a medida que avanza en CFD, debe escribir su propio código. La función definida por el usuario en Fluent debe escribirse en C.

Si va a utilizar Avionics / UAV, para programar Adruno, aprenda C / C ++ ya que sus códigos son simplemente un conjunto de estos idiomas. Una vez más, MATLAB es una ventaja adicional para el análisis de estabilidad.

Si va a realizar trabajos experimentales en aerodinámica / propulsión, aprender el lenguaje G del software Labview podría ser útil.

Sin embargo, muchos trabajos de automatización que vienen para ingenieros aeroespaciales piden lenguaje Python . Este lenguaje es muy simple y muy útil para cualquier ingeniero.

En pocas palabras, MATLAB, C / C ++, Python son los lenguajes de programación necesarios para un ingeniero aeroespacial.

La industria aeroespacial es enorme. Hay cientos de roles de ingeniería diferentes que uno podría ocupar en varios lugares en la industria. Algunos, diablos, la mayoría de esos roles no requieren habilidades de programación de ningún tipo. Aquellos involucrados en aviónica en su mayoría requieren cierta comprensión del software en general, pero a menos que su rol requiera realmente escribir código, no necesita mucho.

Para los roles que sí involucran la codificación real, el énfasis es HEAVILMENTE en los procesos de desarrollo controlados por los muslos, principalmente utilizando la metodología de cascada que fue abandonada por los métodos ágiles por todos los demás hace más de una década. La prueba del código está más allá. Lo hacen porque se cree que produce código altamente confiable con pocos errores graves. Hace que el desarrollo sea casi inimaginablemente lento y extremadamente caro.

Las habilidades necesarias para hacer esto bien no se trata de lenguajes o marcos específicos, se trata principalmente de la capacidad de documentar su código y escribirlo para que sea fácilmente comprobable y se adhiera con precisión a los requisitos.

Hay muchísimas respuestas a esto, porque construir un avión es enormemente complicado. La manera fácil de ingresar es Matlab o LabView. Ambos tienen una gran demanda, se usan en todas partes, pero principalmente en I + D, y si eres bueno en ellos, encontrarás trabajo aquí. Si eres bueno en cosas de bajo nivel en tiempo real, hazlo; Hay toneladas de eso. Incluso si solo haces secuencias de comandos. Hay miles y miles de expertos en informática en esta empresa. Todos especializados en diferentes cosas. Soy un experto en TestWorks, que es un software completamente inútil que, sin embargo, puede ganarse la vida con la programación.

La conclusión es que necesitas conocimiento. Cualquier conocimiento ¿Sabes algo? Excelente. Completa una solicitud.

Eche un vistazo (vea el enlace a continuación) a las respuestas anteriores a una pregunta similar.

¿Qué conjunto de habilidades debo desarrollar para buscar una carrera en la industria aeroespacial en un futuro próximo?

En mi universidad, trabajamos mucho con Matlab para la mayoría de los cálculos, simulaciones, controles …

Pero también aprendemos que C # tiene algunos conocimientos sobre más contenido orientado a la interfaz de usuario.

También trabajamos un poco con Arduino en materia de electrónica, y para aquellos interesados ​​en los servicios web, tenemos algunas materias optativas sobre SWIM.