4 votos

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

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

1 votos

Basta con utilizar un osciloscopio de 2 canales. El canal 1 es CAN alto o bajo, y el canal 2 es el voltaje del motor. Dispara en el canal 1. Asegúrate de que no hay otro tráfico en el bus. Envía un único mensaje.

3voto

Spike Puntos 304

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

Más abajo encontrarás uno muy barato. Los analizadores lógicos (como los de abajo) 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 quieres medir el CANL/CANH y probablemente múltiples señales por conductor de motor simultáneamente, podrías usar dos analizadores y usar CANL/CANH para ambos analizadores (es decir, conectar CANL/CANH a dos líneas de señal de ambos analizadores).

enter image description here

3voto

Wolver1n3 Puntos 126

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

Dado que utilizas un bus CAN, supongo que tienes una placa principal y una placa de controladores de motor.

Aquí tienes dos retardos distintos: el retardo del bus CAN y el retardo del controlador del motor, y tu pregunta pide la suma de ambos.

El retardo del bus CAN puede medirse fácilmente tomando el tiempo entre un mensaje y el acuse de recibo, dividido por 2 (sobre unos pocos mensajes para tener un valor estadísticamente significativo, véase la nota inferior).

Si tienes un sensor de posición o velocidad en tu motor, podrías enviar un mensaje de "reconocimiento de arranque del motor" desde tu placa de control a tu placa principal. Luego, envía tu comando y espera la interrupción CAN. El tiempo que acabas de medir es:

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

Ya que has calculado antes el retardo del bus CAN, puedes calcular el retardo del motor.

Otra forma de detectar un motor en marcha sería controlar la corriente del motor.

Esto también le da la oportunidad de añadir funciones de depuración de software, e informar al usuario sobre el mal funcionamiento del equipo con mensajes como "Error 64: Motor que no responde: Motor nº 3. El motor puede estar atascado o mal cableado".

Ahora para ser justos, si tu placa de motor es simplemente un driver conectado a CAN, el retardo del bus CAN es el único valor útil y el retardo del driver del motor es insignificante.

Nota sobre el retraso:

Dado que utiliza un bus de comunicación, debe aceptar tener algunos variación del retraso. Por ejemplo, podrías enviar tu comando cuando otro dispositivo en el bus acaba de empezar a transmitir, o tener un error de transmisión y necesitar empezar de nuevo. en la mayoría de los casos de uso, no importará, pero si lo hace, puede que necesites repensar tu arquitectura.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X