Módulo de socket CAN-Bus de smartCORE
Descripción
El módulo canbus pone a disposición la interfaz de hardware del bus CAN a través del Fast Message Dispatcher.
Para ello
- por un lado, se distribuyen (dispatch) los mensajes leídos del bus CAN
- por otro lado, se proporciona un mecanismo de escritura
En principio, el módulo puede operar con cualquier Fast Message Receiver. En el contexto del bus CAN resultan adecuados
- el Fast Message Producer (genérico) ("fmproducer")
- el módulo receptor DBC ("dbc")
Interfaces y protocolos utilizados
- CAN-Bus
- Fast Message Dispatching
Configuración JSON
En la siguiente sección se describe la configuración JSON completa del módulo y se explican los distintos parámetros.
Configuración de ejemplo (mínima)
{
"module":"CANBus1",
"factory":"canbus",
"config":{
"interface":1
}
}
Configuración de ejemplo (máxima)
{
"module":"CANBus1",
"factory":"canbus",
"config":{
"fmd":"CANBus1",
"priority":80,
"writeBufferSize":1024,
"interface":1,
"bitrate":500000,
"listenOnly":false,
"maxBurstDurationUs":0,
"dispatchCanIdAsDataPrefix":false,
"smioUtcClock":"0x010"
}
}
Lista de parámetros
| Nombre del parámetro | Obligatorio | Tipo de datos | Rango de valores recomendado | Valor predeterminado | Descripción |
|---|---|---|---|---|---|
| fmd | No | STRING | Nombre de la instancia del módulo | Nombre del Fast Message Dispatcher | |
| priority | No | INT | 1 - 99 | 80 | Prioridad de planificación (scheduling) de la interfaz CAN-Bus |
| writeBufferSize | No | INT | 1 - | 8192 | Número máx. de tramas en el búfer de escritura |
| interface | SÍ | INT o STRING | 1 - | N/A | Índice o nombre de la interfaz CAN-Bus (véase la documentación de smartDEVICE) |
| bitrate | No | INT | 1 - | 500000 | Velocidad de transmisión de la interfaz CAN-Bus |
| listenOnly | No | BOOL | false, true | false | Indicador listen-only de la interfaz CAN-Bus |
| maxBurstDurationUs | No | INT | 0 - | 0 | Max Burst Duration [us] de la interfaz CAN-Bus |
| dispatchCanIdAsDataPrefix | No | BOOL | false, true | false | Escribe delante de la trama de datos CAN-Bus reenviada el CAN ID de 32 bits en representación Little Endian. Resulta útil para Fast Message Receivers independientes del CAN ID, como p. ej. CAN RAW y depuración |
| keepEFFFlag 1 | No | BOOL | false, true | false | Normalmente, el indicador EFF del direccionamiento CAN se establece automáticamente según el rango de valores en el que se encuentre el CAN ID (11 / 29 bits). Para la interpretación, el bit puede transmitirse al fmproducer. En ese caso, las direcciones de 29 bits deben indicarse con el desplazamiento 2147483648 (0x80000000). |
| smioUtcClock 2 | No | INT o STRING | 0, 1 - 0x7FF | 0 | CAN ID en el que la hora del sistema se envía cada 10 segundos a todos los smartIO con firmware ESP32 (véase Hora de los smartIO). 0 desactiva la función. Como STRING también son posibles indicaciones hexadecimales como "0x010". |
Hora de los smartIO (smioUtcClock)
Los smartIO con firmware ESP32 (p. ej. smartIO 8x24) no disponen de un reloj en tiempo real con batería de respaldo. Toman su hora de un mensaje CAN cuyo CAN ID se configura en el smartIO con SYStem:UTC (predeterminado 0x010).
Si smioUtcClock está definido, el módulo canbus envía este mensaje cada 10 segundos como difusión (broadcast) a todos los smartIO del bus. No hay acuse de recibo. El CAN ID del módulo canbus y el del smartIO deben coincidir.
| Byte | Contenido |
|---|---|
| 0 - 5 | Hora del sistema en milisegundos desde 1970-01-01 UTC, 48 bits, Motorola (big endian) |
| 6 | 0 |
| 7 | Suma de comprobación: suma de los bytes 0 - 6 (módulo 256) |
Se envía la hora del sistema del dispositivo smartCORE tal cual. Si el reloj del sistema no es correcto, los smartIO también reciben la hora incorrecta.
Con "listenOnly": true se ignora smioUtcClock.
Información del módulo
| Información | Valor |
|---|---|
| Autor | optiMEAS GmbH |
| desde smartCORE | 0.120 |
| Tipo de módulo | Dispatcher (Producer) |
| Dependencias | cualquier módulo Fast Message Receiver (p. ej. "dbc", "fmproducer") |