Espiando camiones



No importa cuán trivial pueda parecer, en el siglo XXI, los camiones no solo transportan mercancías del punto A al punto B, sino que son sistemas bastante complejos de componentes conectados por una red. La recopilación de información de estos componentes, complementada por las capacidades de los dispositivos móviles modernos que pueden determinar su ubicación a través del sistema GPS y tener comunicaciones móviles, revela grandes oportunidades para optimizar el transporte, administrar la flota y, de alguna manera, incluso el comportamiento de los conductores. Todo esto se llama telemática de transporte, a lo que se dedica este artículo.

Tengo que advertirle que no he usado el idioma ruso en los últimos 25 años con demasiada frecuencia, así que no se sorprenda si la estructura de la oración o las palabras utilizadas parecen extrañas.

Ya he trabajado durante un total de 13 años en el campo de la telemática del transporte, 5 años ayudando a monitorear los recolectores de basura, 8 años para camiones de combustible. Estas dos opciones tenían mucho en común, pero también muchas cosas diferentes.

Primero, un poco sobre el general


La primera y principal función es el seguimiento por GPS. Puede ver por dónde pasaba el camión, puede determinar dónde perdió su posición y dónde fue encontrado nuevamente, en tiempo casi real.

Si no hay conexión con el servidor, la pista se graba en la memoria de la computadora de a bordo. En ausencia de recepción GPS, es posible el monitoreo indirecto a través de las posiciones de las torres GSM. Hubo un tiempo en que nos asociamos con OpenCellId, un banco de datos abierto de la ubicación de las estaciones base GSM (más sobre esto se escribió aquí ), donde cargaba alrededor de un millón de coordenadas cada semana, pero desafortunadamente la asociación se cerró cuando OpenCellId se vendió a una compañía india que convirtió el servicio pagó incluso por los asistentes, y sin embargo, nuestro único sistema proporcionó aproximadamente una cuarta parte de todas las coordenadas que recibieron.

Al desconectarse, los datos no se pierden, simplemente se escriben con menos frecuencia para que la memoria interna no esté demasiado llena. La cantidad de datos de la pista también depende de qué tan rápido viaja el camión. Por lo general, la frecuencia de la recopilación de datos aumenta en proporción a la velocidad para que la pista en el mapa se vea más suave, pero algunos clientes no están interesados ​​en los datos sobre dónde viaja el automóvil a alta velocidad; en tales casos, el automóvil generalmente se encuentra en la carretera, donde de todos modos no sucede nada interesante .

La segunda función principal, que a menudo se implementa por separado de la primera, tanto que se usa hierro adicional para esto, es trabajar directamente con el controlador. La pantalla de la tableta muestra una lista de tareas para el conductor con las direcciones de los clientes a los que debe dirigirse. Por lo general, el controlador está obligado a seleccionar una tarea de la lista, "iniciar" esta tarea, y al realizar la tarea "finalizar", es posible ingresar datos adicionales.
Por lo tanto, en la oficina en tiempo real se puede ver con qué está ocupado específicamente el conductor cuando comenzó a trabajar, cuando se realizó el trabajo. Gracias a esta oportunidad, será posible calcular en la oficina cuánto trabajó realmente el conductor y cuánto le costó a la compañía este viaje en particular. Al mismo tiempo, toda la información necesaria, que antes solo estaba en papel, se envía de manera inmediata y automática a los sistemas informáticos. Para este trabajo adicional, el conductor tiene varias comodidades, como: activar automáticamente la navegación hacia el objetivo o la capacidad de imprimir inmediatamente todos los documentos necesarios, en lugar de completar formularios.

Luego viene el monitoreo de FMS y varios sensores. Los camiones modernos tienen un sistema de control de motor digital bastante sofisticado, y para facilitar la recopilación de información para tales computadoras a bordo, siete fabricantes de camiones europeos crearon juntos el formato FMS (Sistema de gestión de flotas), una interfaz estandarizada para conectarse (solo lectura) al sistema de control de motores. a través de CAN-Bus, en el que en tiempo real están presentes los parámetros principales del camión, como la velocidad, el kilometraje, el consumo de combustible en un determinado formato estándar.

Básicamente, esta información sirve para verificar la calidad del trabajo de los conductores: qué tan económicamente conducen, pero es bastante posible atrapar a los ladrones. Por ejemplo, si el nivel de combustible en el tanque cae más rápido de lo normal, especialmente si el camión está parado en este momento, la situación es inequívoca.

Además, parte de la información proviene de un tacógrafo digital, un instrumento obligatorio en la Unión Europea que registra los períodos de trabajo de los conductores y la velocidad del vehículo. Por lo tanto, sin conectarse al tacógrafo, puede averiguar directamente cuándo un conductor en particular se puso al volante o terminó el trabajo. Los diferentes sensores suelen ser entradas digitales, por lo que puede comprobar dónde está incluido (faros, cinturón de seguridad, etc.). Un ejemplo básico para este tipo de sensores es que la computadora a bordo monitorea el freno de mano, y solo si el freno está activado, deja de bloquear el teléfono; muchas compañías que transportan mercancías peligrosas prohíben que los conductores hablen por teléfono mientras conducen.

Dado que los módems GSM se usan en dispositivos telemáticos, esto significa que, en principio, se pueden usar como teléfonos móviles, entonces el conductor no necesitará dar un medio de comunicación. Al mismo tiempo, puede controlar cómo se utilizará esta herramienta de comunicación: el bloqueo del teléfono con un freno de mano, sobre el que escribí anteriormente, bloqueo del teléfono fuera de la red doméstica, permiso para llamar solo a ciertos números.

También se reciben y envían SMS, por lo que a veces hay que escuchar las quejas de los conductores que a menudo se encontraban cerca de la frontera (las tarifas aumentan constantemente, lo que llevó a un dilema). banco de datos), pero los mensajes no se recibirán en absoluto.

Hay otra característica útil asociada con el uso de un módem GSM: cuando se recibe una señal de un registrador de datos de eventos (EDR), la computadora a bordo puede marcar automáticamente un número de teléfono específico.

Ahora un poco sobre las diferencias


Para los camiones de basura, lo principal es dónde ir y cuánto recoger. En consecuencia, una tarea bastante importante era conectar las básculas que están integradas en el elevador de los contenedores de basura y pesarlas automáticamente al levantarlas. Por este peso, a los clientes comerciales se les factura por el trabajo.

A los conductores, a su vez, se les puede otorgar una bonificación por trabajo rápido, por lo que deben saber cuánto tiempo tomó sacudir el contenedor y qué tan rápido se recogió el contenedor después de que el camión de basura llegó a su destino.

Para hacer esto, era necesario conectar el joystick de control del elevador a una entrada digital, que no siempre fue tan simple como parece en la etapa de planificación. Una vez, un técnico profundizó en la electricidad de un camión durante tanto tiempo que el conductor se cansó de esperar y se fue a su casa, y el técnico y yo nos quedamos. Todo está conectado, parece funcionar, y la señal se va, pero sin un controlador no podríamos hacer un escaneo completo.

A la mañana siguiente estábamos esperando una gran separación del cliente: el técnico hizo algo mal y el elevador levantó el contenedor solo la mitad de la altura necesaria. En otra ocasión hubo un problema con la electricidad del camión, de la cual se tuvo que extraer uno de los fusibles. Después de eso, el camión ignoró por completo la llave de contacto y no se apagó en absoluto, y funcionó en vacío hasta que se agotó el diesel en el tanque.

Dado que hay muchos fabricantes de complementos para camiones de basura, existe un número correspondientemente grande de protocolos diferentes para las básculas integradas en el elevador, y para cada uno de ellos tuvimos que escribir funciones separadas. En algunas escalas no había ninguna interfaz para telemática, la única salida de información era a su impresora especial a través de RS232. Aquí ya teníamos que soldar el cable en Y y extraer la información necesaria del flujo de datos para la impresora.


Comprobación de pesos

También estaba la tarea de capacitar a nuevos conductores que aún no conocen la ruta. Esto se hizo de la siguiente manera: un conductor experimentado viaja a lo largo de la ruta más óptima, se registra su seguimiento GPS, se optimiza manualmente para la cantidad de puntos y luego se envía al sistema de navegación para principiantes.

En ese momento, los navegadores no tenían la oportunidad de descargar las pistas grabadas, por lo que tuvimos que establecer cada punto "manualmente", monitorear el sistema de navegación, y cuando solo quedaban unos pocos metros, reemplazarlo con el siguiente para que el navegador no tuviera tiempo de anunciar felizmente el logro del objetivo. Pero fue posible colgar una ventana con información sobre el navegador, esto se usó para comentarios en los que el conductor podía ver las características del objetivo: cuál es la forma más conveniente de llamar, a quién pedir papeles, etc.

Hay otros requisitos para los camiones de combustible, el énfasis está más en el hecho de que los conductores tienen una mala tendencia a robar combustible. Y si en Europa occidental es más probable que se trate de solitarios, en el este el robo de gasolina se lleva a cabo por bandas enteras que envían a sus conductores a las empresas de transporte.

Es imposible cruzar este negocio, por lo que la mayoría de las funciones antirrobo están diseñadas para atrapar a los ladrones en la escena del crimen. La herramienta principal para esto son las geofences. De manera simple: dibuje círculos en el mapa alrededor de lugares donde se permiten ciertas acciones. Si estas acciones ocurren fuera de la ubicación especificada, se envía una notificación al administrador.

Luego viene el monitoreo de esas mismas acciones, que pueden ser muchas. Se describen las aletas del sistema de drenaje del tanque, el drenaje de líquido del tanque, el cinturón de seguridad abierto e incluso una parada durante más de 5 minutos. El monitoreo del sistema de drenaje con mayor frecuencia atrapa a los conductores que desean obtener ganancias a expensas de otra persona: durante varios días seguidos reciben alertas de que el combustible se está drenando fuera de la cerca. La pista muestra que el conductor en el lugar donde pasó las ciruelas no debería haber estado en absoluto. Al día siguiente, la policía lo estaba esperando allí.

Otra opción es un tanque de gasolina, que emite una señal continua cuando está cerrado. Si la señal desaparece, el tanque de gasolina está abierto o el cable de señal está cortado, significa que alguien está lentamente deseando drenar el combustible mientras el conductor está durmiendo. El sistema emite un pitido, el conductor se despierta y conduce a los ladrones con la ayuda de tal o cual madre.

Sobre la técnica utilizada



Aplicom serie f

Cuando comencé mi trabajo con la telemática de transporte en 2003, prácticamente no había dispositivos adecuados, relativamente universales en el mercado para los que pudiera escribir mis programas. La elección en ese momento, en general, se limitaba a las series Aplicom C / F y Owasys Owa2x.

El primer dispositivo fue hecho por nativos de Nokia, funcionaba en su propio sistema operativo (OS95A), que era una variante del sistema operativo para teléfonos Nokia antiguos, incluso aquellos que tenían dos líneas de pantalla de texto. El desarrollo se llevó a cabo en C99 por el compilador CodeWarrior ARM, y fue bastante incómodo debido al compilador desactualizado y al sistema operativo bastante primitivo, que en realidad se compiló con el programa que escribí para el dispositivo.

El segundo dispositivo fue hecho por inmigrantes de la rama española de Ericsson, tenía un procesador un poco más rápido, pero un puerto RS232 menos y funcionaba bajo Linux bastante antiguo. El desarrollo fue llevado a cabo por el mismo GCC antiguo (2.95.3) con todas las consecuencias derivadas de esto (errores, funciones de lenguaje inoperantes, soporte francamente malo para C ++ y optimización de código deficiente).

Posteriormente, Aplicom portó Linux a sus máquinas, pero para entonces ya era demasiado tarde. El mayor inconveniente de los dispositivos Aplicom era la falta de un sistema de archivos, era necesario escribir en la memoria Flash más o menos directamente en las celdas y, de hecho, el fabricante a menudo no recomendaba escribir en esta memoria.

Por otro lado, Owa2x tenía una gran ventaja: Linux, y una gran cantidad de deficiencias, solo dos puertos RS232, lo que hacía aún más difícil depurar a través de la consola, el controlador CAN-Bus con errores, que colgaba regularmente, usando un puerto RS232 interno para GPS y para GSM que utiliza un multiplexor, lo que provocó que el GPS se congelara cuando GSM se iniciaba o se detenía, un sistema de archivos que se descomprimía en un disco RAM en cada inicio, lo que hacía imposible reemplazar permanentemente cualquier archivo del sistema y postre, muelle entatsiya, cuyo uso fue menor que la de papel higiénico.

Cuando visité la oficina del fabricante y les mostré todos estos problemas (que no resolvieron más tarde, simplemente diciendo que ahora están haciendo un nuevo hardware, Owa3x, en el que todo será mejor), les dejé la documentación de Aplikom para tomar un ejemplo (ejemplo comenzó a tomar después de unos 6 años, cuando ya estaban haciendo la próxima generación: Owa4x).


Owa2x intermitente

Cuando salió Owa3x, al principio estaba muy feliz. Había un compilador más nuevo (GCC 4.3), un procesador rápido, tres puertos RS232 y, finalmente, una ranura para tarjeta microSD. Ahora era posible poner el programa en una tarjeta, para que luego, en todo caso, simplemente se pudiera reemplazar. Sin embargo, me alegré temprano.

Se mantuvieron errores de arquitectura, como un sistema de archivos desempaquetado y el mismo multiplexor para GPS y GSM, y el primer error se hizo más grave: el firmware se hizo mucho más grande y el módem continuó admitiendo solo GPRS, la versión con soporte UMTS fue mucho más costosa, y esto es 2011 año.

La gente hacía hierro como solía hacerlo. Luego resultó que las tarjetas MicroSD se transmiten si escribe regularmente en ellas. Viven aproximadamente un año, después de lo cual mueren, y el programa deja de comenzar. Al principio intentaron hacer varias secciones en la tarjeta, y una, donde el programa es de solo lectura. No ayudó, y fue bastante contraproducente: el controlador de la tarjeta no fue diseñado para tal perversión.

Ahora el programa está en la memoria interna del dispositivo, y solo hay datos en la tarjeta, por lo que si la tarjeta deja de funcionar, simplemente se cambia. No lo hice antes, porque a menudo había problemas con el sistema de archivos de la memoria interna, los archivos se rompían regularmente, lo que el fabricante finalmente pudo solucionar con el firmware.


Owa3x

Hace dos años, decidí hacer una refactorización seria y reescribir parte del programa, porque antes simplemente adquiría todo tipo de funciones de manera no sistemática. Al mismo tiempo, decidí deshacerme de la dependencia del impulso, que infló en gran medida tanto la fuente como el binario, y estandarizar el enfoque para resolver problemas, o a menudo utilizamos la función de impulso, la función c ++ o el clásico de C para lograr el mismo efecto.

Fue más fácil deshacerse del impulso reescribiendo un programa para C ++ 11, que al mismo tiempo simplificaría muchas otras cosas, que solo se basa en el rango en lugar de iteradores de kilómetros.

Al final resultó que, la compatibilidad con C ++ 11 bajo GCC 4.3 está absolutamente torcida, incluso los programas mínimos que utilizan STL no se han compilado. Hubo una respuesta oficial del fabricante de que otro compilador en este hardware no es compatible, pero 4.7.3 funciona de manera no oficial si carga el libstdc ++ correspondiente, que funcionó más o menos, pero no fue realista.

Luego tuve que cruzarlo con un erizo ya: tomé GCC 4.8.3 (4.9 no hubiera funcionado, cambiaron algo en el ABI), puse libstdc ++ de mi GCC 4.3 en él y copié los archivos de sistema incluidos, que contenían errores , desde allí, hasta que comenzó a compilarse. Por extraño que parezca, todo este diseño funcionó, y no está mal.

Durante algún tiempo, la mezcla resultante de bibliotecas e inclusiones podría incluso usarse en clang, pero los binarios no eran óptimos y había más errores: clang a veces compilaba llamadas a algunas funciones que la biblioteca antigua simplemente no tenía, pero al menos de esta manera hubo errores estilísticos que GCC perdonó.

Campfire Tales


  • Cuando comencé a trabajar en este campo, era un estudiante en prácticas absolutamente ecológico. La compañía en la que conseguí trabajo acababa de vender lo que, en general, era una presentación de PowerPoint, y me enviaron inmediatamente a este negocio.

    Aparentemente, mi nuevo empleador no se tomó todo esto en serio, a pesar de que el cliente tendría que tomar el programa en tres meses, y el aprendiz que comenzó a escribirlo antes de que renuncie.

    Entonces no sabía cómo programar en C, antes de eso solo escribí dos programas para Turbo Pascal, principalmente para bibliotecas de feeds. El lenguaje C me golpeó terriblemente: ¡cuántas oportunidades de dispararte en el pie!

    Después de un tiempo, las cosas comenzaron, y el programa, aunque fue escrito de manera muy torcida, funcionó, pero llegué descaradamente tarde. En ese momento tuve la suerte de que justo en ese momento se introdujo un nuevo sistema alemán de pago de carreteras, que en general también tenía el mismo control de vehículos, y su desarrollador TollCollect también llegó muy tarde, convirtiéndose en un hazmerreír de todo el país. En este contexto, los clientes tomaron nuestro retraso durante varios meses con comprensión.
  • Imagine que la computadora de a bordo murió mientras actualizaba un programa que descargó a través del móvil. Algo no funcionó en absoluto, la computadora dejó de cargarse. No hay nada que hacer, debe ir al camión, instalar la actualización manualmente a través del puerto serie.
    Un representante del cliente me llevó a la base donde se encontraba el camión, del que tenía llaves. , , , , . , . , , .
  • - , , . , , — , , , . , , , , , FIFO .
  • , , . , , — Renault Kerax, , .

    , 20 , - , , , . .
  • . , . , , - . , , .


Owa3x

Conclusión


La era de estas computadoras de a bordo especializadas para telemática de transporte está llegando a su fin gradualmente: son muy específicas, se producen en pequeños lotes y, debido a esto, técnicamente están muy por detrás de los dispositivos móviles modernos: teléfonos y tabletas, en los que no solo los procesadores son más rápidos y tienen más memoria, sino que también cuestan una gran cantidad de bloques de programas, que de lo contrario tendrá que escribir usted mismo, incluso cosas tan básicas como una simple conexión a Internet móvil.

Y el desarrollo de aplicaciones en tabletas modernas es sin duda mucho más conveniente. Sin embargo, no podrán reemplazar por completo el equipo clásico de telemática de transporte, por lo que para recopilar la cantidad máxima de información necesita una gran cantidad de puertos de entrada / salida, desde el tipo RS232 serie ordinario hasta el tipo CAN-Bus especializado. Para conectar todo esto a una tableta normal en Android, necesita una gran cantidad de periféricos, o tabletas a pequeña escala y altamente especializadas indecentemente caras, pero incluso dicho dispositivo tiene un inconveniente grave: el controlador puede apagarlo fácilmente y toda la información se detendrá.

Las computadoras a bordo, que en el futuro seguirán siendo el papel de dichos centros de información para tabletas, funcionarán mientras el camión tenga energía (aunque hay bromistas en los talleres que las conectan al encendido) y recopilan información incluso si no hay conexión.

Muchas gracias al usuario de hdablin por su apoyo y ayuda en la edición del artículo.

Source: https://habr.com/ru/post/es408243/


All Articles