Especificaciones del dispositivo FRC CAN

Este documento busca describir las funciones básicas del sistema CAN FRC® actual y los requisitos para cualquier dispositivo CAN nuevo que busque trabajar con el sistema.

Direccionamiento

Los nodos FRC CAN asignan ID de arbitraje basados ​​en un esquema predefinido que divide la ID en 5 componentes:

Tipo de dispositivo

Este es un valor de 5 bits que describe el tipo de dispositivo al que se dirige. Una tabla de los tipos de dispositivos asignados actualmente se puede encontrar a continuación. Si desea que se asigne un nuevo tipo de dispositivo del grupo Reservado, envíe una solicitud a FIRST.

Tipos de dispositivo

Mensajes de difusión

0

Controlador del robot

1

Controlador del motor

2

Controlador de relé

3

Sensor giroscópico

4

Acelerómetro

5

Sensor ultrasónico

6

Sensor de dientes de engranaje

7

Módulo de distribución de energía

8

Controlador Neumático

9

Miscellaneous

10

IO Breakout

11

Reservado

12-30

Actualización de firmware

31

Fabricante

Este es un valor de 8 bits que indica el fabricante del dispositivo CAN. Los valores asignados actualmente se pueden encontrar en la tabla a continuación. Si desea que se asigne un ID de fabricante del grupo Reservado, envíe una solicitud a FIRST.

Fabricante

Emisión

0

NI

1

Luminary Micro

2

DEKA

3

CTR Electronics

4

REV Robotics

5

Grapple

6

MindSensors

7

Uso del equipo

8

Kauai Labs

9

Copperforge

10

Playing With Fusion

11

Studica

12

The Thrifty Bot

13

Redux Robotics

14

Reservado

15-255

API / Identificador de mensaje

El identificador de la API o del mensaje es un valor de 10 bits que identifica un comando o un tipo de mensaje particular. Estos identificadores son únicos para cada combinación de Fabricante + Tipo de Dispositivo (por lo que un identificador de API que puede ser un «Voltage Set» para un Luminary Micro Motor Controller puede ser un «Status Get» para un CTR Electronics Motor Controller o Current Get para un CTR Power Distribution Module).

El identificador del mensaje se divide en 2 subcampos: la clase API de 6 bits y el índice API de 4 bits.

Clase API

La clase API es un identificador de 6 bits para una agrupación API. Los mensajes similares se agrupan en una sola clase de API. En la tabla a continuación se muestra un ejemplo de las clases API para el controlador de motor Jaguar.

Clase API

Modo de control de voltaje

0

Modo de control de velocidad

1

Modo de compensación de voltaje

2

Modo de control de posición

3

Modo de control actual

4

Estado

5

Estado periódico

6

Configuración

7

Ack

8

Índice API

El índice API es un identificador de 4 bits para un mensaje en particular dentro de una clase API. En la tabla a continuación se muestra un ejemplo de los valores del índice API para la clase API de control de velocidad del controlador de motor Jaguar.

Índice API

Control Enable

0

Control Disable

1

Establecer punto de ajuste

2

Constante P

3

Constante I

4

Constante D

5

Establecer referencia

6

Trusted Enable

7

Confianza sin reconocimiento

8

Punto de ajuste de confianza sin reconocimiento

10

Establecer punto de ajuste sin reconocimiento

11

Número del dispositivo

Número de dispositivo es una cantidad de 6 bits que indica el número del dispositivo de un tipo particular. Los dispositivos deben tener el ID de dispositivo 0 para que coincida con otros componentes del sistema de control FRC. El dispositivo 0x3F puede reservarse para mensajes de difusión específicos del dispositivo.

CAN addressing bit mapping.

Marcos Protegidos

Los nodos FRC CAN que implementan la capacidad de control del actuador (controladores de motor, relés, controladores neumáticos, etc.) deben implementar una forma de verificar que el robot esté habilitado y que los comandos se originen con el controlador principal del robot (es decir, el roboRIO).

Mensajes de difusión

Los mensajes de difusión son mensajes enviados a todos los nodos estableciendo el tipo de dispositivo y los campos del fabricante en 0. La clase de API para mensajes de difusión es 0. Los mensajes de difusión definidos actualmente se muestran en la tabla a continuación:

Descripción

Inhabilitar

0

Sistema detenido

1

Reinicio de sistema

2

Asignar dispositivo

3

Consulta de dispositivo

4

Heartbeat

5

Sincronizar

6

Actualizar

7

Versión de firmware

8

Enumerar

9

Reanudar sistema

10

Devices should disable immediately when receiving the Disable message (arbID 0). Implementation of other broadcast messages is optional.

Requisitos para los nodos FRC CAN

Para que los nodos CAN sean aceptados para su uso en el sistema FRC, deben:

  • Comuníquese utilizando ID de arbitraje que coincidan con el formato FRC prescrito:

    • Un tipo de dispositivo CAN emitido válido (según la Tabla 1 - Tipos de dispositivo CAN)

    • Una ID de fabricante válida y emitida (según la Tabla 2 - Códigos de fabricante de CAN)

    • Clase(s) e índice(s) API asignados y documentados por el fabricante del dispositivo

    • Un número de dispositivo seleccionable por el usuario si se pretende que varias unidades del tipo de dispositivo coexistan en la misma red.

  • Admite los requisitos mínimos de mensajes de transmisión como se detalla en la sección Mensajes de transmisión.

  • If controlling actuators, utilize a scheme to assure that the robot is issuing commands, is enabled, and is still present.

  • Provide software library support for LabVIEW, C++, and Java or arrange with FIRST® or FIRST’s Control System Partners to provide such interfaces.

Universal Heartbeat

The roboRIO provides a universal CAN heartbeat that any device on the bus can listen and react to. This heartbeat is sent every 20ms. The heartbeat has a full CAN ID of 0x01011840 (which is the NI Manufacturer ID, RobotController type, Device ID 0 and API ID 0x062). It is an 8 byte CAN packet. The important byte in here is byte 5 (index 4). The layout is the following bitfield.

Descripción

Width

RedAlliance

1

Enabled

1

Autonomous

1

Test

1

WatchdogEnabled

1

Reservado

3

The flag to watch for is WatchdogEnabled. If that flag is set, that means motor controllers are enabled.

If 100ms has passed since this packet was received, the robot program can be considered hung, and devices should act as if the robot has been disabled.