¿Cómo puedo medir la latencia en un bus CAN?

4

Dado un bus CAN con un maestro y 4 controladores de motor, hay una manera de medir el tiempo entre el envío de un comando desde el maestro (por ejemplo, PC o PLC) y la ejecución de dicho comando (por ejemplo, el motor en movimiento)?

    
pregunta mohsen

2 respuestas

3

Con un analizador lógico multicanal (o alcance) puede medir las señales CANH / CANL y la señal que impulsa el motor y calcular la diferencia.

Vea a continuación uno muy barato. Los analizadores lógicos (como a continuación) también tienen la posibilidad de interpretar protocolos de comunicación como CAN, SPI, U (S) ART, I2C, MIDI, DMX, etc.

Este tiene ocho canales, si desea medir el CANL / CANH y probablemente varias señales por controlador de motor simultáneamente, puede usar dos analizadores y CANL / CANH para ambos analizadores (es decir, conecte CANL / CANH a dos líneas de señal de ambos analizadores).

    
respondido por el Michel Keijzers
3

La forma más sencilla sería implementar la prueba en su diseño.

Dado que usa un bus CAN, asumo que tiene una placa principal y una placa de controlador de motor.

Aquí tiene dos demoras distintas: la demora del bus CAN y la demora del conductor del motor, con su pregunta pidiendo la suma de ellas.

El retardo del bus CAN se puede medir fácilmente tomando el tiempo entre un mensaje y el acuse de recibo, dividido por 2 (en unos pocos mensajes para tener un valor estadísticamente significativo, vea la nota de abajo).

Si tiene un sensor de posición o velocidad en su motor, puede enviar un mensaje de "confirmación de arranque del motor" desde su tablero de controladores a su tablero principal. Luego, envíe su comando y espere a que la CAN pueda interrumpir. El tiempo que acaba de medir es:

Retardo del bus CAN + retardo del conductor del motor + retardo del bus CAN.

Ya que calculó el retraso de su bus CAN anteriormente, puede calcular el retraso del motor.

Otra forma de detectar un motor en funcionamiento sería monitorear la corriente del motor.

Esto también le brinda la oportunidad de agregar funciones de depuración de software e informar al usuario sobre el funcionamiento incorrecto del equipo con mensajes como "Error 64: Motor que no responde: Motor # 3. El motor puede estar bloqueado y no conectado correctamente".

Ahora, para ser justos, si la placa del motor es simplemente un controlador conectado a CAN, el retraso del bus CAN es el único valor útil y el retraso del controlador del motor es insignificante.

Nota sobre el retraso:

Dado que utiliza un bus de comunicación, debe aceptar tener alguna variación en el retraso. Por ejemplo, puede enviar su comando cuando otro dispositivo en el bus acaba de comenzar a transmitir, o tiene un error de transmisión y debe comenzar de nuevo. en la mayoría de los casos de uso, no importará, pero si lo hace, es posible que deba reconsiderar su arquitectura.

    
respondido por el Sclrx

Lea otras preguntas en las etiquetas