Technik · CAN-Schnittstelle
PersyCAN – das CAN-Protokoll der Persystems-Inverter
Sollwerte, Parameter, Telemetrie und Firmware-Update über einen Bus. PersyCAN nutzt 29-Bit-Identifier mit Geräteadresse, damit mehrere Inverter am selben CAN-Bus hängen – und sendet Betriebsdaten zyklisch, ohne Polling. Diese Seite fasst die Protokoll-Dokumentation des Inverters INV-60V-120A zusammen.
Auf einen Blick
| Identifier | 29 Bit (CAN 2.0B, Extended Frame), Geräteadresse im Identifier |
| Standardadresse | 0x0A – Befehle an 0x0A000000, Telemetrie ab 0x1A000003 |
| Broadcast | 0x01000000 – Arm, Disarm und Fehlerlog für alle Geräte am Bus |
| Telemetrie | zyklisch: Betriebsdaten alle 100 ms, Signalzustand alle 10 ms |
| Galvanische Trennung | CAN-Transceiver und PPM-Eingang isoliert von der Leistungsstufe |
| Anschluss | D-Sub 15 HD (Gehäusevariante); Adapter auf D-Sub 9 mit CAN-Standardbelegung |
Adressierung
Ein Bus, mehrere Inverter.
PersyCAN arbeitet mit erweiterten 29-Bit-Identifiern. Die zweite Hexadezimalstelle des Identifiers ist die Geräteadresse n: Befehle an einen Inverter tragen den Identifier 0x0n000000, seine Telemetrie kommt unter 0x1n0000xx. Ab Werk ist die Adresse 0x0A eingestellt. So teilen sich mehrere Antriebe einen Bus, ohne dass der Host Botschaften auseinanderhalten muss – jede Adresse ist im Identifier lesbar. Von Hand vergeben muss sie niemand: PersyCAN beherrscht eine dynamische Adressvergabe wie die Node-Allocation in DroneCAN. Mehrere Inverter mit derselben Werksadresse werden über den Discovery-Mechanismus automatisch auf eigene CAN-IDs verteilt, und bekannte Geräte bekommen nach einem Neustart ihre alte Adresse zurück – auch wenn nur ein Gerät neu gestartet wurde.
Befehle an den Inverter
| Identifier | Daten (8 Byte) | Bedeutung |
|---|---|---|
0x0n000000 | 10 01 D0 07 00 00 00 00 | 16-Bit-Schreibbefehl auf den Drehzahlsollwert: 10 01 adressiert den Sollwert, D0 07 ist 2000 min⁻¹ (0x07D0, Little Endian). Die maximale Drehzahl ist intern begrenzt. |
0x0n000000 | 13 0D 01 00 00 00 00 00 | Setup-Parameter schreiben: 13 0D adressiert AutoArmOnInput, 01 00 aktiviert das automatische Scharfschalten bei gültigem Signal (Einstellung geht beim Neustart verloren). |
0x0n00000A | – | Firmware-Update: Antwort auf die Update-Anfrage des Inverters. |
0x01000000 | 00 00 00 00 00 00 00 00 | Broadcast an alle Geräte: PPM-Sollwert deaktivieren (disarm). |
0x01000000 | 01 00 00 00 00 00 00 00 | Broadcast: PPM-Sollwert scharfschalten (arm). |
0x01000000 | 02 00 00 00 00 00 00 00 | Broadcast: Fehlerlog aller Geräte auslösen. |
Der Sollwert kann als Drehzahl oder als Drehmoment vorgegeben werden; welcher Regelmodus aktiv ist, wird als Parameter eingestellt. Neben CAN nimmt der Inverter ein klassisches PWM/PPM-Signal an – das Signal wird auf Bereich, Timing, Timeout und Rauschen geprüft, und ein expliziter Arming-Zustand verhindert unbeabsichtigtes Anlaufen.
Telemetrie
Betriebsdaten ohne Polling.
Die meisten Telemetrie-Botschaften tragen vier 16-Bit-Werte (Little Endian). Die Skalierung gibt an, durch welchen Faktor der Rohwert zu teilen ist.
| Identifier | Zyklus | Inhalt | Skalierung |
|---|---|---|---|
0x1n000003 | 100 ms | Phasenstrom (Effektivwert) · DC-Strom (gefiltert) · DC-Spannung · MOSFET-Temperatur | ÷10 A · ÷10 A · ÷10 V · ÷100 °C |
0x1n000006 | 100 ms | Id ist · Iq ist · Id soll · Iq soll | ÷100 A |
0x1n000007 | 100 ms | Ud · Uq · Fehlerintegral Ud · Fehlerintegral Uq | ÷100 V · ÷100 V · ÷1000 · ÷1000 |
0x1n000008 | 100 ms | MotionCtrlState · ErrorState · maximale Zykluszeit (interne Qualitätskennzahl) · Firmware-Version (dev·patch·minor·major, je 4 Bit) | uint16 |
0x1n00000C | 100 ms | Drehzahl ist · Drehzahl soll · Drehzahl maximal · Drehmoment ist | int16 min⁻¹ · ÷1000 Nm |
0x1n000013 | 100 ms | Motortemperatur (NTC) | ÷100 °C |
0x1n000005 | 10 ms | armed · inverted · PPM-Zustand · valid · PPM-Rohwert · PPM-Wert | bool · bool · uint8 · bool · uint16 · uint16 |
0x1n000004 | 10 ms | Zähler Rohsignal · Zähler gültige Signale · Pulsdauer · Pausendauer | 1 · 1 · 100 ns · 100 ns |
0x1n00000B | 2 ms | Update-Prozess-Anfrage (nur während des Firmware-Updates) | – |
0x1n00000F | bei Fehler oder auf Anfrage | Fehlerlog: Zustand beim letzten Überstrom oder auf Broadcast-Anfrage | – |
Damit sieht das Host-System jederzeit, was der Antrieb tut: die Ströme in der d- und q-Achse zeigen, ob der Regler im Feldschwächbereich arbeitet, die MOSFET- und Motortemperatur zeigen den thermischen Spielraum, und die Zykluszeit-Kennzahl verrät, ob die Regelung unter Last sauber läuft.
Zustände und Fehlercodes
Was der Inverter meldet.
MotionCtrlState
| Wert | Zustand |
|---|---|
0x0000 | STO – Safe Torque Off, Motor im Freilauf |
0x00F2 | waitingForSetpoint – wartet auf Sollwert (STO oder ASC, je nach Parameter) |
0x00F3 | ControlActive – Regelung aktiv |
0xFF00 | HardFault |
PPM-Zustand
| Wert | Zustand |
|---|---|
| 0 | disarmed |
| 1 | invalid |
| 2 | armed |
| 3 | armed, Signal ungültig |
| 4 | armed, Signal gültig |
| 5 | enabled always |
ErrorState
| Code | Fehler |
|---|---|
| 0 | OK |
| 30 | Überstromschutz ausgelöst |
| 41 | PPM-Signal ungültig |
| 42 | PPM-Timeout |
| 43 | PPM-Inversionsfehler |
| 44 | Übertemperatur |
| 45 | PPM-Signal verrauscht |
Im sicheren Zustand ist der Treiber abgeschaltet. Ob der Motor dabei frei läuft (Safe Torque Off) oder kurzgeschlossen wird (Active Short Circuit), ist per Parameter wählbar. Überstrom-, Kurzschluss-, Übertemperatur- und Unterspannungsschutz greifen in Hardware und Software; bei zu hoher MOSFET- oder Motortemperatur wird der Strom automatisch reduziert.
Konfiguration, Logging, Firmware
Alles über denselben Bus.
Das Persystems-Konfigurationstool verbindet sich über CAN mit dem Inverter. Damit stellen Sie Motorparameter, Stromgrenzen, Regelmodus und die Zuordnung des Sollwertsignals ein und nehmen einen neuen Motor in Betrieb. Während des Betriebs zeichnet das Tool Phasen- und DC-Ströme, Spannungen und Reglerzustände in Echtzeit auf – für Reglerabstimmung und Diagnose.
Auch das Firmware-Update läuft über den Bus, und das Fehlerlog mit dem Zustand beim letzten Abschalten lässt sich jederzeit auslesen. Für Anwendungen, die eigene Logik nah am Antrieb brauchen, gibt es die Dual-Core-Variante: Der Controller hat zwei Kerne – einer rechnet die Motorregelung, der zweite führt Ihren Code aus, verbunden über eine Inter-Prozessor-Schnittstelle mit Referenzbeispielen (mehr dazu).
Anschluss
| Gehäusevariante | D-Sub 15 HD mit Persystems-Belegung; Adapter INV-CAN-ADAPT auf D-Sub 9 mit CAN-Standardbelegung |
| Einbauplatine | D-Sub 15 HD wie bei der Gehäusevariante |
| Aero-Variante | CAN/PPM und Motor-NTC über Molex-PicoBlade-Steckverbinder |
| Signale | CAN_H, CAN_L, CAN_GND und PPM-Eingang – galvanisch getrennt von der Leistungsstufe |
| Verdrahtung | Signalmassen auf das Host-System beziehen, nicht auf die Batterie; DC-Leitungen kurz und verdrillt |
Häufige Fragen
PersyCAN in der Praxis.
Können mehrere Inverter am selben CAN-Bus betrieben werden?
Ja. Die Geräteadresse steht im 29-Bit-Identifier: Befehle gehen an 0x0n000000, Telemetrie kommt von 0x1n0000xx – n ist die Adresse des Inverters. Der Broadcast-Identifier 0x01000000 erreicht alle Geräte gleichzeitig, etwa zum Scharfschalten oder zum Auslösen des Fehlerlogs. Die Adressen müssen nicht von Hand vergeben werden: Geräte mit derselben Werksadresse verteilt PersyCAN über den Discovery-Mechanismus automatisch auf eigene CAN-IDs – wie die dynamische Node-Zuweisung in DroneCAN.
Muss ich die Telemetrie abfragen?
Nein. Der Inverter sendet seine Betriebsdaten zyklisch: alle 100 ms Ströme, Spannungen, Temperaturen, Drehzahl, Drehmoment, Regler- und Fehlerzustand; alle 10 ms den Zustand des Sollwertsignals. Das Host-System hört nur mit.
Unterstützt der Inverter auch DroneCAN?
Ja. Für Flugsteuerungen lässt sich der INV-60V-120A auf DroneCAN umschalten und spricht dann esc.Status und NodeStatus nach Standard – nicht gleichzeitig mit PersyCAN, aber im laufenden Betrieb wechselbar; siehe DroneCAN-ESC.
Wie sind die Werte kodiert?
Die meisten Telemetrie-Botschaften tragen vier 16-Bit-Werte im Little-Endian-Format; die Skalierung steht in der Tabelle oben (zum Beispiel Phasenstrom in 0,1 A, Id/Iq in 0,01 A, Drehmoment in 0,001 Nm). Der Drehzahlsollwert 2000 min⁻¹ wird als D0 07 übertragen (0x07D0).
Wo bekomme ich die vollständige Protokollbeschreibung?
Anschlussbelegung, Signalwege, Fehlerbehandlung und den Ablauf des Firmware-Updates beschreibt die technische Dokumentation des Inverters unter esc.persystems.org (englisch). Die vollständige Protokollbeschreibung mit allen Parametern und Botschaften schicken wir Ihnen auf Anfrage als PDF – zusammen mit dem Konfigurationstool für Windows.
Kontakt
Protokoll-Dokumentation und Konfigurationstool anfragen.
Schreiben Sie uns, welche Anwendung Sie anbinden wollen – Sie bekommen die vollständige PersyCAN-Beschreibung und eine Antwort direkt aus der Entwicklung.
