Excepto por el primer mensaje, este es el tráfico típico SDO (CANopen ), con pares de solicitud / respuesta:
0x665 SDO request (range 0x600 - 0x67F, depending on the node ID)
0x5E5 SDO response (range 0x580 - 0x5FF, depending on the node ID)
Para el primer par, un sorteo muerto es el 0x4B en el primer byte de la respuesta. Esto indica que los datos devueltos tienen un tamaño de dos bytes (para un byte y cuatro bytes, es 0x4F y 0x43, respectivamente). El 0x40 en el primer byte de la solicitud indica que es una solicitud de lectura (el estándar usa un término diferente, "Subir", con el significado opuesto al de Internet (descarga): proviene del perspectiva del dispositivo direccionado).
La solicitud CAN ID es 0x600 + ID de nodo. La respuesta CAN ID es 0x580 + ID de nodo. Así:
665 Read request to device with node ID 0x65
5E5 Read response from device with node ID 0x65
Para los SDO, el índice y subíndice CANopen está en el segundo, tercer y cuarto byte (el byte menos significativo primero para el índice CANopen). Entonces, para el primer par, 40 78 60 00, el solicitante dice: "Dispositivo en el ID de nodo 0x65 (101), dame tu valor almacenado en 6078sub0" .
En este caso, la información fluye desde el dispositivo direccionado a quien realizó la solicitud (el solicitante no puede verse desde el registro del bus CAN, pero generalmente es un controlador central en el sistema o una herramienta de servicio que se ejecuta en una PC (normalmente un adaptador USB a CAN)).
Por lo tanto, para el tráfico mostrado, se realizan solicitudes de lectura (la respuesta para la última no se incluye en el registro de bus CAN publicado):
6078sub0 (2 bytes, 0xDB00 = 219)
6064sub0 (4 bytes, 0x005E7DE4 - 6,192,612)
6041sub0 (2 bytes, 0x0227 - 551)
6041sub0 (2 bytes, 0x0227 - 551)
606Csub0 (?? bytes)
Extrañamente, la solicitud para 6041sub0 se repite.
Además, aunque los SDO generalmente son solo para información de configuración, el rango de índice CANopen 0x6000 a 0x6FFF se usa generalmente para información no relacionada con la configuración, como las cantidades medidas o el estado.
Sumergiéndose en el manual
Los índices / subíndices SDO se pueden consultar en el manual (he incluido valores reales del registro de bus CAN de muestra):
6078sub0 Motor current, 219 mA
6064sub0 "Position Actual Internal Value" is 6,192,612
6041sub0 Statusword, 0x0227 = 0000 0010 0010 0111, meaning:
"ready to switch on",
"switched on",
"operation enabled",
"quick stop"
"remote"
606Csub0 "Velocity Actual Value". The value is not included,
but it is a 32-bit signed integer.
El primer mensaje
Suponiendo que el primer mensaje también es CANopen, 4E5 F0 16 00 00: Para todos los mensajes CANopen CAN, el ID es un código de función de cuatro bits (0-15) seguido de un ID de nodo de siete bits. En este caso, 0x4E5 = 1001 1100101b. Por lo tanto, el código de función es 1001b = 9, que significa "PDO4, transmitir". La dirección del flujo de información para las PDO (a pesar de, en este caso, "transmitir") es una cuestión de definición (depende de la aplicación). El ID de nodo es 1100101b = 0x65.
El ID de nodo para el PDO es el mismo que para los SDO.
La información en este PDO, "Transmitir PDO 4", está contenida en SDO 0x1A03, "Transmitir PDO Mapping Parameter 4". Si no se ha cambiado el valor predeterminado, los datos en el PDO son los mismos que SDO 0x60FAsub0, un entero con signo de 32 bits:
el esfuerzo de control como la salida del bucle de control de posición. En la función de control de posición, la notación del esfuerzo de control depende del modo y, por lo tanto, no se especifica.
Conclusión
El dispositivo motor con ID de nodo 0x65 envía el esfuerzo de control (probablemente a intervalos de tiempo regulares) utilizando un PDO .
Un controlador o una ventana de monitor en tiempo real en una herramienta de servicio lee y muestra otras cantidades / estados medidos desde el mismo dispositivo motor usando SDOs .