FRC CAN Cihaz Özellikleri

This document seeks to describe the basic functions of the current FRC® CAN system and the requirements for any new CAN devices seeking to work with the system.

adresleme

FRC CAN düğümleri, ID’yi 5 bileşene bölen, önceden tanımlanmış bir şemaya dayalı olarak tanımlar:

Cihaz Türü

Bu, bahsedilen aygıtın türünü açıklayan 5 bitlik bir değerdir. Aşağıda yeni tanımlanmış cihaz türlerinin bir tablosu bulunmaktadır. Rezerve bölümünden yeni tür bir cihaz edinmek istiyorsanız, lütfen FIRST’ten talepte bulununuz.

Cihaz Türleri

Yayın Mesajları - Broadcast

0

Robot Kontrolörü

1

Motor Sürücüsü

2

Röle Kontrolörü

3

Gyro Sensörü

4

İvmeölçer

5

Ultrasonik Sensör

6

Dişli Sensörü

7

Güç Dağıtım Modülü - Power Distribution Module

8

Pnömatik Kontrolörü

9

Çeşitli

10

IO Breakout

11

Rezerve

12-30

Fabrika Yazılımı güncellemesi

31

Üretici firma

Bu, CAN cihazının üreticisini belirten 8 bitlik bir değerdir. Şu anda atanan değerler aşağıdaki tabloda bulunabilir. Reserved havuzundan bir üretici kimliğinin atanmasını istiyorsanız, lütfen FIRST’a bir istek gönderin.

Üretici firma

Yayın -Broadcast

0

NI

1

Luminary Micro

2

DEKA

3

CTR Electronics

4

REV Robotics

5

Grapple

6

MindSensors

7

Team Use

8

Kauai Labs

9

Copperforge

10

Playing With Fusion

11

Studica

12

The Thrifty Bot

13

Redux Robotics

14

AndyMark

15

Vivid Hosting

16

Rezerve

17-255

API / Mesaj Tanımlayıcı

The API or Message Identifier is a 10-bit value that identifies a particular command or message type. These identifiers are unique for each Manufacturer + Device Type combination (so an API identifier that may be a “Voltage Set” for a Luminary Micro Motor Controller may be a “Status Get” for a CTR Electronics Motor Controller or Current Get for a CTR Power Distribution Module).

Mesaj tanımlayıcı 2 alt alana ayrılmıştır: 6 bit API Sınıfı ve 4 bit API Dizini-Index.

API Sınıfı

API Sınıfı, bir API gruplaması için 6 bitlik bir tanımlayıcıdır. Benzer mesajlar tek bir API Sınıfı altında gruplandırılır. Jaguar Motor Controller için API Sınıflarının bir örneği aşağıdaki tabloda gösterilmektedir.

API Sınıfı

Gerilim Kontrol Modu

0

Hız Kontrol Modu

1

Gerilim Kompanzasyon Modu

2

Pozisyon Kontrol Modu

3

Mevcut Kontrol Modu

4

Durum

5

Periyodik Durum

6

Yapılandırma

7

Ack - onay

8

API Dizini

API Dizini, bir API Sınıfı içindeki belirli bir mesaj için 4 bitlik bir tanımlayıcıdır. Jaguar Motor Controller Hız Kontrolü API Sınıfı için API Dizini değerlerinin bir örneği aşağıdaki tabloda gösterilmektedir.

API Dizini

Enable Control - Kontrolü Etkinleştir

0

Disable Control - Kontrolü Devre Dışı Bırak

1

Set Setpoint - Ayar Noktasını Ayarla

2

P Sabiti

3

I Sabiti

4

D Sabiti

5

Set Reference - Referans Ayarla

6

Trusted Enable

7

Trusted Set No Ack

8

Güvenilir Ayar Noktası No Ack

10

Set Setpoint No Ack - Ayar Noktasını Ayarla Onay Yok

11

Device NUmber - Cihaz numarası

Aygıt Numarası, belirli bir türdeki aygıtın numarasını gösteren 6 bitlik bir miktardır. Cihazlar, FRC Kontrol Sisteminin diğer bileşenleri ile eşleşmesi için varsayılan cihaz kimliği 0 olmalıdır. Cihaz 0x3F, cihaza özel yayın mesajları için ayrılabilir.

CAN addressing bit mapping.

Protected Frames - Korumalı Çerçeveler

Aktüatör kontrol yeteneğini uygulayan FRC CAN Düğümleri (motor kontrolörleri, röleler, pnömatik kontrolörleri vb.), Robotun etkinleştirildiğini ve komutların ana robot kontrolöründen (yani roboRIO) geldiğini doğrulamak için bir yol uygulamalıdır.

Yayın Mesajları - Broadcast

Yayın mesajları, cihaz türü ve üretici alanları 0 olarak ayarlanarak tüm düğümlere gönderilen mesajlardır. Yayın mesajları için API Sınıfı 0’dır. Şu anda tanımlanmış yayın mesajları aşağıdaki tabloda gösterilmektedir:

Description - Açıklama

Disable - Devre dışı bırak

0

System Halt - Sistem durdu

1

System Reset

2

Device Assign - Cihaz Atama

3

Device Query - Cihaz Sorgusu

4

Heartbeat - Kalp atışı

5

Sync

6

Update - Güncelleme

7

Firmware Sürümü

8

Enumerate - Numaralandır

9

System Resume - Sistem Devam Ettirme

10

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

FRC CAN Düğümleri için Gereksinimler

CAN Düğümlerinin FRC Sisteminde kullanım için kabul edilmesi için, aşağıdakileri yapmaları gerekir:

  • Öngörülen FRC formatıyla eşleşen Arbitration ID Kimliklerini kullanarak iletişim kurun:

    • Geçerli, kullanılan bir CAN Cihaz Tipi (Tablo 1’e göre - CAN Cihaz Tipleri)

    • Geçerli, yayınlanmış bir Üretici Kimliği (Tablo 2’ye göre - CAN Üretici Kodları)

    • API Sınıf (ları) ve Dizin (leri) Cihaz üreticisi tarafından atanır ve belgelendirilir.

    • Cihaz tipinin birden fazla biriminin aynı ağda birlikte var olması amaçlanıyorsa, kullanıcı tarafından seçilebilen bir cihaz numarası.

  • Yayın Mesajları bölümünde ayrıntılı olarak açıklanan minimum Yayın mesajı gereksinimlerini destekleyin.

  • 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 20 ms. The heartbeat has a full CAN ID of 0x01011840 (which is the NI Manufacturer ID, RobotController type, Device ID 0 and API ID 0x061). It is an 8 byte CAN packet with the following bitfield layout.

Description - Açıklama

Byte

Width (bits)

Match time (seconds)

8

8

Match number

6-7

10

Replay number

6

6

Red alliance

5

1

Enabled

5

1

Autonomous mode

5

1

Test mode

5

1

System watchdog

5

1

Tournament type

5

3

Time of day (year)

4

6

Time of day (month)

3-4

4

Time of day (day)

3

5

Time of day (seconds)

2-3

6

Time of day (minutes)

1-2

6

Time of day (hours)

1

5

struct [[gnu::packed]] RobotState {
  uint64_t matchTimeSeconds : 8;
  uint64_t matchNumber : 10;
  uint64_t replayNumber : 6;
  uint64_t redAlliance : 1;
  uint64_t enabled : 1;
  uint64_t autonomous : 1;
  uint64_t testMode : 1;
  uint64_t systemWatchdog : 1;
  uint64_t tournamentType : 3;
  uint64_t timeOfDay_yr : 6;
  uint64_t timeOfDay_month : 4;
  uint64_t timeOfDay_day : 5;
  uint64_t timeOfDay_sec : 6;
  uint64_t timeOfDay_min : 6;
  uint64_t timeOfDay_hr : 5;
};

If the System watchdog flag is set, motor controllers are enabled. If 100 ms 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.

Note that all fields except Enabled, Autonomous mode, Test mode, and System watchdog will contain invalid values until an arbitrary time after the Driver Station connects.