SPARK MAX Kontrol Arayüzleri

SPARK MAX, servo tarzı PWM, kontrolör alan ağı (CAN) ve USB olmak üzere üç farklı arayüz ile kontrol edilebilir. Aşağıdaki bölümlerde bu arayüzlerin çalışması ve protokolleri açıklanmaktadır. Fiziksel bağlantılar hakkında daha fazla bilgi için Kontrol Bağlantıları bölümüne bakın.

PWM Arayüzü

SPARK MAX, çıkış görev döngüsü için bir kontrol olarak standart bir servo tarzı PWM sinyalini kabul edebilir. PWM portu CAN portu ile paylaşılsa da, SPARK MAX gelen sinyal tipini otomatik olarak algılar ve buna göre yanıt verir. SPARK MAX'a bir PWM kablosunun nasıl bağlanacağı hakkında ayrıntılar için CAN/PWM Portu bölümüne bakın.

SPARK MAX, 1000µs ila 2000µs fabrika varsayılan darbe aralığına yanıt verir. Bu darbeler sırasıyla tam geri ve tam ileri dönüşe karşılık gelir ve 1500µs (±%5 varsayılan giriş ölü bandı) nötr konumdur, yani dönüş yoktur. Giriş ölü bandı REV Hardware Client veya CAN arayüzü ile yapılandırılabilir. Aşağıdaki tabloda, varsayılan darbe aralığının çıkış davranışıyla nasıl eşleştiği açıklanmaktadır.

PWM Darbe Eşlemesi

CAN Arayüzü

SPARK MAX bir robot CAN ağına bağlanabilir. CAN, SPARK MAX içinde gelişmiş özellikler sağlayan çift yönlü bir iletişim veriyoludur. SPARK MAX, her iki uç noktasında da uygun sonlandırma dirençlerine sahip bir CAN ağına bağlanmalıdır. CAN veri yolu kablolama gereksinimleri için lütfen FIRST Robotics Competition Robot Kurallarına bakın. CAN portu PWM portu ile paylaşılsa da, SPARK MAX gelen sinyal türünü otomatik olarak algılar ve buna göre yanıt verir. SPARK MAX, genişletilmiş bir ID (29 bit) ile standart CAN çerçeveleri kullanır ve genişletilmiş ID'nin bitlerini tanımlamak için FRC CAN protokolünü kullanır:

CAN Paket Yapısı

ExtID [28:24]

ExtID [23:16]

ExtID [15:10]

ExtID [9:6]

ExtID [5:0]

Cihaz Tipi

Üretici firma

API Sınıfı

API İndeksi

Cihaz Kimliği

CAN veri yolundaki her cihaza benzersiz bir CAN ID numarası atanmalıdır. Kutudan çıkar çıkmaz, SPARK MAX'a 0 cihaz kimliği atanır. 0 olan tüm SPARK MAX CAN kimliklerinin 1 ila 62 arasında kullanılmayan herhangi bir kimlikle değiştirilmesi şiddetle tavsiye edilir. CAN ID'leri, SPARK MAX'ı bir Windows bilgisayara bağlayarak ve REV Hardware Client'ı kullanarak değiştirilebilir. Diğer SPARK MAX yapılandırma parametreleri hakkında ayrıntılar için bkz.

CAN erişilebilir özellikleri ve bunlara nasıl erişileceği hakkında ek bilgi SPARK MAX API Bilgileri bölümünde bulunabilir.

Periyodik Durum Çerçeveleri

SPARK MAX, verileri periyodik olarak roboRIO'ya geri gönderir. Motor konumu ve sıcaklık gibi sık erişilen verilere çeşitli API'ler kullanılarak erişilebilir. Veriler, periyodik bir hızda gönderilen birkaç CAN “çerçevesine” bölünür. Bu oran kod içinde manuel olarak değiştirilebilir, ancak diğer parametrelerin aksine, bu ayar bir güç döngüsü boyunca devam etmez. Hız, minimum 1 ms ile maksimum 32767 ms arasında herhangi bir yere ayarlanabilir. Aşağıdaki tabloda her bir durum çerçevesi ve mevcut verileri açıklanmaktadır.

Periyodik Durum 0 - Varsayılan Oran: 10ms

Mevcut Veriler

Açıklama

Uygulanan **** Çıkış

Motor kontrolöründen motorlara gönderilen gerçek değer. Çerçeve bu değeri 16 bit işaretli tamsayı olarak saklar ve roboRIO SDK tarafından -1 ile 1 arasında bir kayan nokta değerine dönüştürülür. Bu değer aynı zamanda tüm takipçi kontrolörler tarafından çıkışlarını ayarlamak için kullanılır.

Arızalar

Her bit kontrol ünitesindeki farklı bir hatayı temsil eder. Hata ortadan kalktığında bu hata parçaları otomatik olarak silinir.

Sabit Arızalar

Hatalar alanıyla aynıdır, ancak bitler bir güç çevrimi veya bir ' Clear Faults' (Hataları Temizle) komutu gönderilinceye kadar sıfırlanmaz.

Takipçidir

Kontrolör başka bir kontrolörü takip edecek şekilde yapılandırılmışsa doğru olan tek bir parça.

Periyodik Durum 1 - Varsayılan Oran: 20ms

Mevcut Veriler

Açıklama

Motor Hızı

Seçilen sensör kullanılarak RPM cinsinden motor hızının 32 bit IEEE floating-point gösterimi.

Motor Sıcaklığı

8 bitlik işaretlenmemiş değeri temsil eder: Firmware sürümü 1.0.381 - 0 = 0V ve 255 = 3.3V ile sıcaklık sensörünün voltajı. Güncel aygıt yazılımı sürümleri - NEO Fırçasız Motor için °C cinsinden motor sıcaklığı.

Motor Voltajı

roboRIO SDK tarafından kayan nokta voltaj değerine (Volt cinsinden) dönüştürülen 12 bit sabit nokta değeri. Bu, kontrol ünitesine giriş voltajıdır.

Motor Akımı

roboRIO SDK tarafından kayan nokta akım değerine (Amper cinsinden) dönüştürülen 12 bit sabit nokta değeri. Bu, motorun ham faz akımıdır.

Periyodik Durum 2 - Varsayılan Oran: 20ms

Mevcut Veriler

Açıklama

Motor Position

32-bit IEEE floating-point representation of the motor position in rotations.

Periyodik Durum 3 - Varsayılan Oran: 50ms

Mevcut Veriler

Açıklama

Analog Sensör Voltajı

roboRIO SDK tarafından kayan nokta voltaj değerine (Volt cinsinden) dönüştürülen 10 bit sabit nokta değeri. Bu, analog sensör tarafından çıkarılan voltajdır.

Analog Sensör Hızı

roboRIO SDK tarafından kayan nokta voltaj değerine (RPM cinsinden) dönüştürülen 22 bit sabit nokta değeri. Bu, analog sensör tarafından bildirilen hızdır.

Analog Sensör Konumu

Analog sensör tarafından bildirilen RPM cinsinden hızın 32 bit IEEE kayan noktalı gösterimi.

Periyodik Durum 4 - Varsayılan Oran: 20ms

Mevcut Veriler

Açıklama

Alternatif Kodlayıcı Hızı

Alternatif kodlayıcının RPM cinsinden hızının 32 bit IEEE floating-point gösterimi.

Alternatif Kodlayıcı Konumu

Alternatif kodlayıcının dönüşlerindeki konumun 32 bit IEEE kayan noktalı gösterimi.

Periyodik Durum 5 - Varsayılan Oran: 200ms

Mevcut Veriler

Açıklama

Görev Döngüsü Mutlak Kodlayıcı Konumu

Görev döngüsü mutlak kodlayıcısının konumunun 32 bit IEEE floating-point gösterimi.

Görev Döngüsü Mutlak Kodlayıcı Mutlak Açı

Görev döngüsü mutlak kodlayıcısının mutlak açısının 16 bitlik tamsayı gösterimi.

Periyodik Durum 6 - Varsayılan Oran: 200ms

Mevcut Veriler

Açıklama

Görev Döngüsü Mutlak Kodlayıcı Hızı

Görev döngüsü mutlak kodlayıcısının RPM cinsinden hızının 32 bit IEEE floating-point gösterimi.

Görev Döngüsü Mutlak Kodlayıcı Frekansı

Görev döngüsü sinyalinin gönderildiği frekansın 16 bitlik işaretsiz tamsayı gösterimi.

Kullanım Durumu Örnekleri

roboRIO üzerinde Pozisyon Kontrolü

Bir kullanıcı, bir konumu tutmak için roboRIO üzerinde kendi PID döngüsünü uygulamak istiyor. Bu döngüyü 100Hz'de (her 10ms'de bir) çalıştırmak istiyorlar, ancak Periyodik Durum 2'deki motor konumu verileri 20Hz'de (her 50ms'de bir) gönderiliyor.

Kullanıcı arayarak bu hızı 10ms olarak değiştirebilir:

Sözde kod

setPeriodicFrameRate(PeriodicFrame.kStatus2, 10);

Yüksek CAN Kullanımı

Bir kullanıcının çok sayıda bağlı CAN cihazı vardır ve CAN veri yolu kullanımını en aza indirmek ister. Herhangi bir telemetri geri bildirimine ihtiyaç duymazlar ve sadece hataları kontrol eden birkaç takipçi cihaza sahiptirler.

Kullanıcı takip eden cihazlarda telemetri çerçeve hızlarını düşük ayarlayabilir ve Periyodik Durum 0 çerçeve hızını düşük ayarlayabilir:

Sözde kod

leader.setPeriodicFrameRate(PeriodicFrame.kStatus1, 500);
leader.setPeriodicFrameRate(PeriodicFrame.kStatus2, 500);
follower.setPeriodicFrameRate(PeriodicFrame.kStatus0, 100);
follower.setPeriodicFrameRate(PeriodicFrame.kStatus1, 500);
follower.setPeriodicFrameRate(PeriodicFrame.kStatus2, 500);

Daha Hızlı Takipçi Bant Genişliği

Kullanıcı, takipçi cihazların daha hızlı bir şekilde güncellenmesini ister: 200Hz (her 5 ms'de bir).

Bunu başarmak için Periyodik Durum 0 çerçevesi artırılabilir.

Sözde kod

leader.setPeriodicFrameRate(PeriodicFrame.kStatus0, 5);

USB Arayüzü

SPARK MAX, REV Hardware Client çalıştıran bir bilgisayara USB bağlantısı aracılığıyla yapılandırılabilir ve kontrol edilebilir. USB arayüzü standart bir CDC (USB'den Seri'ye) sürücüsü kullanır. Komut arayüzü CAN'a benzer, aynı ID ve veri yapısını kullanır, ancak her zaman tam 12 baytlık bir paket gönderir ve alır. Doğrudan cihazla konuşurken CAN kimliği atlanır (DNC). Ancak, ID'nin üç MSB'si alternatif komutların seçilmesine izin verir:

  • 0b000 - Standart komut - CAN ID atlanmış (DNC)

  • 0b001 - Genişletilmiş komut - USB'ye özel

USB üzerinden gönderilen tüm komutlar bir yanıt alır. İlgili CAN komutunun yanıt almaması durumunda, USB arayüzü bir Ack komutu alır.

USB Paket Yapısı

ExtID [31:29]

ExtID [28:24]

ExtID [23:16]

ExtID [15:10]

ExtID [9:6]

ExtID [5:0]

USB Komut Türü

Cihaz Tipi (2)

Üretici (0x15)

API Sınıfı

API İndeksi

Cihaz ID

Last updated

Was this helpful?