¿Puedo conectar un puerto “J1708” a mi computadora?

3
  

Esta pregunta está relacionada con otra pregunta que publiqué aquí en el nuevo sitio de Ingeniería inversa.

Estoy trabajando con una pequeña agencia de transporte público en un proyecto de código abierto que nos ayudará a ofrecer datos en tiempo real a los desarrolladores locales. Un dato clave que necesitamos es la ruta de autobús actual en la que se encuentra un vehículo determinado. Actualmente, solo hay un único sistema electrónico que conoce esta información: la unidad lógica del vehículo (VLU) con la que está equipado cada vehículo.

Cuando un conductor de autobús comienza una ruta, escribe su número de identificación en el teclado de la unidad de control del operador (OCU). Este número de identificación se envía a la VLU, que luego muestra el texto apropiado en las señales LED en el bus.

En la OCU, hay dos puertos DB9F. En el manual, se describen como "PUERTOS J1708". Uno de ellos está conectado a la VLU, y el otro está disponible para que lo conecte. Al conectarme a él, obtengo algunos datos que puedes leer en mi otra pregunta .

Esencialmente, estoy cuestionando si mi computadora está conectada correctamente a la OCU. Actualmente, solo estoy ejecutando un cable de serie simple y recto de 6 pies (DB9 M / F) entre el puerto serie de mi computadora y cualquiera de los "PUERTOS J1708". Siempre puedo obtener los mismos datos de esta manera, pero estoy empezando a dudar de que los datos se estén transmitiendo correctamente ...

Ahora estoy bastante seguro de que estoy usando el cable equivocado o algo así. Aquí hay un diagrama del cable que se ejecuta entre la OCU y la VLU: J1708.png

¿Necesito un cable similar para conectar la OCU a mi computadora? Si es así, ¿por qué sigue enviándome datos no aleatorios cuando uso un cable DB9 simple y simple?

    
pregunta drewbug

3 respuestas

9

El protocolo SAE J1708 es un protocolo de bajo nivel diseñado para su uso en aplicaciones de vehículos pesados y está basado en RS485 pero utilizando resistencias pull-up / pull-down en lugar de la terminación de la línea (por lo tanto, los pines RTX + y RTX- mostrados en su diagrama de cable).

El protocolo es básicamente 8N1 en serie, pero los mensajes se separan entre sí mediante un tiempo de espera inactivo (un mínimo de 10 bits - a 9600 baudios, esto equivale a 1,25 milisegundos). Los mensajes constan de un identificador de mensaje (MID) seguido de uno o más bytes de datos y un byte de suma de comprobación. La suma de control debe ser el complemento a dos de la suma de ocho bits del MID y todos los bytes de datos (un mensaje se considera válido si la suma de ocho bits de todos los caracteres, incluidos el MID, los bytes de datos y la suma de comprobación es igual a 0) . La longitud total del mensaje no puede exceder los 21 bytes.

No puede conectar esto directamente a su PC sin al menos un convertidor de RS485 a RS232; puede escapar sin las resistencias pull-up / pull-down para la prueba, pero debe asegurarse de que cualquier resistencia de terminación esté abierta.

Mirando este diagrama de cable, parece que tiene un lado del bus conectado al pin de recepción de la PC RS232 (RXD) y el otro conectado al detector de datos (DCD). Mientras que sus señales están fuera del rango definido por RS232, sospecho que habrá suficiente señal para que el puerto vea algo.

En mi humilde opinión, el protocolo J1708 ha sido mal diseñado, particularmente para entornos ruidosos como los sistemas automotrices tienden a serlo. No hay un valor de encabezado claramente definido (el MID es binario y todos los valores son válidos), no hay una indicación clara de la longitud del paquete (esto es mucho peor cuando se combina con J1587, que es el protocolo de nivel superior más comúnmente usado) y la suma de comprobación seguirá siendo ser correcto si dos o más paquetes se unen (lo que es muy fácil de hacer sin un hardware de detección de inactividad decente).

A continuación se muestra un circuito de interfaz simple para sus requisitos (solo recepción). Sin embargo, debido a la naturaleza del protocolo J1708, esto no debe usarse en conjunto con un convertidor de RS232 a USB, ya que generalmente causan estragos en la sincronización de la señal al convertir el flujo RS232 en bloques USB, y pueden causar que dos o más paquetes ser combinados.

    
respondido por el timrorr
3

Advertencia: ¡J1708 no es lo mismo que RS-485!

La única vez que puede usar un puerto RS485 en el bus J1708 es si NUNCA transmitir. El receptor es compatible pero el transmisor no lo es. Así que si usted solo quiero leer los datos, cualquier interfaz RS485 debería estar bien (simplemente no transmitir). Pero como algunos de los datos que probablemente desearía ver son "por solicitud", deberá transmitirlos y es allí donde se complica más.

Y también, como dijo Timrorr en su excelente respuesta, también hay consideraciones de tiempo estrictas, por lo que incluso si solo está leyendo, es probable que tenga problemas de tiempo como lo describió (porque los mensajes están separados por tiempo de inactividad, lo que requiere alguna otra interrupción de alta velocidad en el hardware de su computadora para detectar las pausas de separación de mensajes)

    
respondido por el RufusVS
0

Según Wikipedia, J1708 se basa en un puerto RS-485 físico.

Hay muchas interfaces RS-485 disponibles por ahí. También hay recursos para crear interfaces de RS-232 a RS-485 usted mismo. Esto puede ayudar con sus actividades de ingeniería inversa.

    
respondido por el Adam Lawrence

Lea otras preguntas en las etiquetas

Comentarios Recientes

Esta guía fue escrita para PCGS con las fechas precisas de hora y minuto de J1708. Se puede encontrar información adicional sobre los PPI precisos en la página de los mejores valores de 12 horas y 30/30/30 minutos náuticos de la base de datos de certificación de minutos náuticos. Valor Mes 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 Mes 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 Mes 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 Mes 00 01 02 03 04 05 06 07 08 09 10... Lees verder