ingeniería inversa CANbus

2

Estoy luchando con la ingeniería inversa de CANbus. Puede ser una pregunta tonta pero me irrita.

EstossonlostráficosquesurgenalpresionarlosbotonesAyBqueestánlevantandoel1.Ejedelrobotalfinal.PresionandoelbotónAcambiaelvalor"09" en el nodo 181h y El botón B cambia el valor "C8" en 281h. Si no estoy equivocado, tengo que alimentar a los RPDO para replicar la acción de elevación en lugar de enviar los mensajes "0A 00 09 00 00 00 00 FF" a 181h y "00 00 00 C8 6F BD 00 FF" a 281h. Así que básicamente vuelvo a enviar los mensajes de RPDO a RPDO.

¿Hayalgomalhastaahora?(Debeser...delocontrariohabríafuncionado)

Comopuedeverenlacapturadepantallaanterior,manullayenviólosmensajespresionandocadalíneaconlabarraespaciadora.YparecequeentremismensajesdeTxaparecenmuchosmensajesdeRx.¿Esestatalvezlarazónporlaqueelrobotnoreacciona?

ACTUALIZACIÓN:

ElmensajeTPDO"0A 00 09 00 00 00 00 FF" surgido del presionar el botón A se ignora porque siempre que escribo un mensaje TPDO 0A 00 09 00 00 00 FF, se sobrescribe con su valor predeterminado 0A 00 0A 00 00 00 00 FF tan rápido que mi mensaje es como "no llegó". El tipo de transmisión de TPDO es actualmente asíncrono con el temporizador de eventos de 50 ms. Esto hace que mi TPDO se sobrescriba de alguna manera con el valor predeterminado 0A 00 0A cada 50 ms. ¿Alguien sabe cómo manejar este problema? Pensé esto asíncrono. el tipo de transmisión con 50ms significa que el TPDO debe verificarse cada 50 ms y si hubo un cambio - > transmisión. Pero, ¿de dónde proviene este valor predeterminado de 0A 00 0A 00 00 00 FF?

Otra pregunta: pensé todo el tiempo que tenía que escribir el valor de los RPDO en RPDO para replicar la acción. Pero parece que solo al presionar el botón A las RPDO no cambian en absoluto. Entonces, ¿cómo puedo replicar la acción de presionar A de Putton?

ACTUALIZACIÓN 2 : la velocidad de bits es de 125 kBits / s. Estoy usando CANopen para poder controlar el robot con mi computadora, en lugar de usar el control remoto. El robot que estoy usando es Brokk 170. A continuación puede encontrar un archivo de Excel donde se encuentran los mensajes CAN grabados. Esos mensajes CAN surgen cuando encendí el robot usando el controlador del robot. Transmití los mensajes hasta el mensaje con el número 107, ya que el valor 0A 00 0A 00 00 00 00 FF indica que el robot ahora está encendido. Pero de alguna manera la secuencia transmitida no enciende el robot. Ahora estoy tratando de encontrar una manera de bloquear los mensajes del control remoto.

enlace

    
pregunta Joe

1 respuesta

2

Esto se parece al tráfico de CANopen (RPDO también se menciona en la pregunta). 0x80 es SYNC, y parece se envía a intervalos regulares (aproximadamente cada 26 ms, 38-39 Hz). Y Algunos dispositivos responden a los mensajes SYNC enviando mensajes con ID 0x181 y 0x281. Pero eso es solo una conjetura en este punto.

También podría ser que el contenido de los ID 0x181 y 0x281 sean puntos de ajuste a un servo (por lo tanto, el mismo dispositivo envía 0x80, 0x181 y 0x281) y que la posición de retroalimentación está contenida en los mensajes 0x301.

Debería ser posible correlacionar las posiciones físicas de la Robot con los mensajes. Un punto de ajuste se establece (probablemente) inmediatamente y las posiciones reales faltan detrás.

Nota: 181h no es un nodo y no le estás enviando mensajes. 181h es un ID de mensaje CAN. Como es probable que CANopen, 0x181 es el mensaje "PDO1, transmitir" para el dispositivo con ID 1. Tenga en cuenta que es no siempre está claro si el ID del dispositivo indica qué dispositivo lo envía o si el dispositivo es el destino.

Type            Function code: Device ID range:
                Binary Decimal ID in  Hex             Decimal
                               CAN ID
--------------------------------------------------------------------
NMT             0000   0       No     0 - 0             0 -    0
SYNC            0001   1       No     0x80  -  0x80   128 -  128
Emergency       0001   1       Yes    0x81  -  0xFF   129 -  255
Time stamp      0010   2       No     0x100 - 0x100   256 -  256
PDO1, transmit  0011   3       Yes    0x181 - 0x1FF   385 -  511
PDO1, receive   0100   4       Yes    0x201 - 0x27F   513 -  639
PDO2, transmit  0101   5       Yes    0x281 - 0x2FF   641 -  767
PDO2, receive   0110   6       Yes    0x301 - 0x37F   769 -  895
PDO3, transmit  0111   7       Yes    0x381 - 0x3FF   897 - 1023
PDO3, receive   1000   8       Yes    0x401 - 0x47F  1025 - 1151
PDO4, transmit  1001   9       Yes    0x481 - 0x4FF  1153 - 1279
PDO4, receive   1010  10       Yes    0x501 - 0x57F  1281 - 1407
SDO, transmit   1011  11       Yes    0x581 - 0x5FF  1409 - 1535
SDO, receive    1100  12       Yes    0x601 - 0x67F  1537 - 1663
NMT error ctrl  1110  14       Yes    0x701 - 0x77F  1793 - 1919
    
respondido por el Peter Mortensen

Lea otras preguntas en las etiquetas