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 hängen – und sendet Betriebsdaten zyklisch, ohne Polling. Diese Seite fasst die Protokoll-Dokumentation des Inverters PY-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 beliebig viele Antriebe einen Bus, ohne dass der Host Botschaften auseinanderhalten muss – jede Adresse ist im Identifier lesbar.
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.
Jede Telemetrie-Botschaft trägt 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 eine Dual-Core-Variante: ein Kern rechnet die Motorregelung, der zweite führt Kundencode aus – verbunden über eine Inter-Prozessor-Schnittstelle mit Referenzbeispielen.
Anschluss
| Gehäusevariante | D-Sub 15 HD mit Persystems-Belegung; Adapter INV-CAN-ADAPT auf D-Sub 9 mit CAN-Standardbelegung |
| Embedded-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.
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 spricht der PY-60V-120A zusätzlich DroneCAN mit esc.Status und NodeStatus nach Standard – siehe DroneCAN-ESC.
Wie sind die Werte kodiert?
Jede Telemetrie-Botschaft trägt 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?
Die vollständige Dokumentation mit allen Parametern, Botschaften und dem Ablauf des Firmware-Updates 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.
