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.
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.