Dynamisches Modbus-Mapping
Mittels dynamischem Modbus-Mapping können Sie beliebige feste Registeradressen einer neuen Registeradresse zuordnen. Durch Neuordnung des Sequenzblocks wird ein Lese-/Schreibzugriff auf die neu abgebildeten Parameter möglich.
Generell werden alle Parameter als 32-Bit-Werte abgebildet und belegen mindestens zwei Modbus-Register. Parameter mit einer Datenbreite von 64 Bit belegen vier Modbus-Register. Alle 64-Bit-Parameter werden als 32-Bit-Parameter abgebildet, beginnend bei Registeradresse 2000 (siehe Mapping von 64-Bit-Parametern auf 32-Bit-Parameter).
Konfiguration des dynamischen Mappings
Die Startadresse für dynamisch abgebildete Parameter lautet 8192 (0x2000).
Vorgehensweise zum Mapping:
- Aktivieren Sie dynamisches Mapping, indem Sie den Wert 1 (als 32-Bit Wert) in die Registeradresse 4096 (0x1000) schreiben. Das Schreiben von 1 aktiviert den Konfigurationsmodus für dynamisches Mapping. Das Schreiben von Null aktiviert den „Run“-Modus, in dem Sie den abgebildeten Parameter verwenden können.
- Das Mapping ist jetzt Register-orientiert. Schreiben Sie jetzt die gültige feste Registeradresse des Parameters, den Sie abbilden möchten, in eine bei 8192 beginnende Adresse. Für das Mapping eines 32-Bit-Parameters müssen Sie die beiden entsprechenden Register abbilden.
Beispiel
AOUT.VSCALE
Schreiben Sie 36 (high) in Adresse 8192 und 37 (low) in Adresse 8193.
Das Register-orientierte Mapping erlaubt die Optimierung der Datenbreite für Blocktransfers. Für das Mapping eines Parameters mit einer Datenbreite von 16 Bit muss nur das Low-Wort-Register abgebildet werden.
-
Beispiel
MODBUS.DIO
Schreiben Sie 941 in Adresse 8194.
Die festen Adressen für MODBUS.DIO lauten 940 (höherwertiges Wort) und 941 (niederwertiges Wort). Dabei ist nur das Low-Wort (16-Bit-Wert) von Interesse, da nur dieses den Istwert enthält.
-
Aktivieren Sie dynamisches Mapping, indem Sie den Wert 0 (als 32-Bit Wert) in die Registeradresse 4096 (0x1000) schreiben. Durch Deaktivierung des dynamischen Mappings wird ein Modus aufgerufen, in dem Sie auf den Wert des abgebildeten Parameters zugreifen und das abgebildete Register verwenden können.
Das bei Adresse 0 startende feste Mapping ist nach wie vor gültig.
Nachfolgend ist ein Beispiel für den kompletten Mapping-Prozess aufgeführt:
Beispiel
Gehen Sie zum Re-Mapping von MODBUS.DIO (16-Bit), MODBUS.DRVSTAT (16-Bit) und DRV.MOTIONSTAT (32-Bit) wie folgt vor:
- Dynamisches Mapping aktivieren.
-
Block Write Transfer auf Adresse 0x2000 (8192).
Werte: 941, 945, 268, 269
-
Modbus-Telegramm:
Funktion: 0x10; Adresse: 0x20, 0x00; Anzahl Register: 0x00, 0x04; Datenlänge in Byte: 0x08; Daten: 0x03, 0xAD, 0x03, 0xB1, 0x01, 0x0C, 0x01, 0x0d
-
Dynamisches Mapping deaktivieren.
- Führen Sie den Befehl DRV.NVSAVE aus, um die Mapping-Tabelle im nichtflüchtigen Speicher abzulegen.
-
Die neu abgebildeten Adressen lauten:
0x2000: MODBUS.DIO
0x2001: MODBUS.DRVSTAT
0x2002: DRV.MOTIONSTAT (höherwertiges Wort)
0x2003: DRV.MOTIONSTAT (niederwertiges Wort)
Speichern und Rücksetzen dynamischen Mappings
Verwenden Sie zum Speichern und Rücksetzen von dynamischem Mapping folgende Parameter:
- DRV.NVSAVE. Parameter UND Dynamic Mapping Tabelle dauerhaft speichern.
- DRV.RSTVAR. Parameter auf Default Werte setzen UND Dybanic Mapping Tabelle löschen.
Dynamisches Modbus-Mapping per WorkBench Terminal
WorkBench bietet eine Schnittstelle zur Konfiguration des dynamischen Mappings. Auf diese Weise können Sie die dynamische Mapping-Tabelle in der WorkBench Parameterdatei speichern.
Modbus-Übersicht
Ein Wert wird durch eine Registeradresse identifiziert; jedes Register ist ein 16-Bit-Wort. Zur Gewährleistung der Abwärtskompatibilität muss jeder AKD Parameter über eine feste Registeradresse verfügen. Die für den Parameterzugriff erforderliche Anzahl an Registern ist jedoch vom Datentyp des Parameters abhängig. Bei Änderung des Datentyps eines Parameters kann sich daher auch die Anzahl der Register ändern, was zu Änderungen der Registeradressen für alle folgenden Parameter führt. Um diese Registerwechsel zu vermeiden, werden alle Parameter entweder als 32-Bit-Worte (2 Register) oder als 64-Bit-Worte (4 Register) abgebildet.
Der für Modbus-Daten spezifizierte Datentyp lautet Big Endian. Eine niederwertigere Registeradresse weist eine höhere Signifikanz auf.
32-Bit-Beispiel:
Registeradresse 0 → höherwertiges 16-Bit-Wort
Registeradresse 1 → niederwertiges 16-Bit -Wort
Dynamisches Mapping über Telnet
Die folgenden Parameter können für dynamisches Mapping in WorkBench gesetzt werden.
| Parameter | Funktion |
|---|---|
| MODBUS.DYNMAP1 | Dynamisches Mapping aktivieren. |
| MODBUS.DYNMAP 0 | Dynamisches Mapping deaktivieren. |
| MODBUS.CLRDYNMAP | Dynamische Mapping-Tabelle löschen. |
Mappen Sie eine kompletten Parameter unter Verwendung der Registeradresse. Mappen Sie alle Register von höherwertig auf niederwertig.
Beispiel
PL.CMD (Registeradresse 570)
MODBUS.DYNMAP 1
MODBUS.CLRDYNMAP (optional)
MODBUS.ADDR8192 570
MODBUS.ADDR8193 571
MODBUS.ADDR8194 572
MODBUS.ADDR8195 573
...
MODBUS.DYNMAP 0
Mappen Sie nur das signifikante Register eines 8-Bit-Parameters. CAP0.EVENT, Registeradresse 58, wird als 32-Bit-Wert abgebildet. 58 ist das höherwertige 16-Bit-Word und 59 das niederwertige 16-Bit-Wort, das den Parameterwert enthält. Lediglich Register 59 muss abgebildet werden:
MODBUS.ADDR8196 59
Skalierung von Parametern
Sie können Parameter, auf die Sie über Modbus zugegriffen haben, skalieren. Diese Skalierung ist unabhängig von den Einheiten von UNIT.PIN und UNIT.POUT. Stattdessen werden die benutzerseitigen Einheiten durch MODBUS-Parameter festgelegt:
- MODBUS.PIN (Vorgabewert = 1)
- MODBUS.POUT (Vorgabewert = 1)
- MODBUS.PSCALE (Vorgabewert = 20)
Mit den o.g.Vorgabewerten lauten die Einheiten wie folgt:
- Position [counts (PSCALE Bit pro Umdrehung)]
- Drehzahl [counts/s]
- Beschleunigung / Verzögerung [counts/s2]
- Strom (Drehmoment) [mA]
Beispiel für Modbus-Skalierung
Wenn MODBUS.PSCALE = 20, liegen alle Positionsangaben im 20-Bit-Format vor.
POSITION = 2^20 COUNTS/Umdrehung
DREHZAHL = 2^20 COUNTS/S
ACC/DEC = 2^20/S^2
Daraus ergeben sich 2^20 oder 1.048.576 Positionseinheiten pro Umdrehung. Dies betrifft alle Parameter (Drehzahl in Positionseinheiten/s, Beschleunigung und Verzögerung in Positionseinheiten/s^2).
-
-
Bei 20 Bits pro Umdrehung und 32 Bits verfügbaren Daten können Sie 32 Bits-20 Bits = 12 Bits an Umdrehungen (4096 Umdrehungen) haben, bevor die 32-Bit-Daten voll sind und ins Negative gehen.
Die anderen Skalierungsfaktoren in Modbus sind MODBUS.PIN und MODBUS.POUT.
MODBUS.PIN und MODBUS.POUT liefern das Skalierungsverhältnis zur Verknüpfung der Modbus-Positionsauflösung mit der Auflösung für die Einheiten der Servoverstärker-Position (oder skalieren Sie einfach Modbus-Nutzereinheiten). Dies ermöglicht die Arbeit mit benutzerspezifischen Einheiten über Modbus.
Als Beispiel: Die Nutzereinheiten des Servoverstärkers sind auf 10.000 counts/Umdrehung gesetzt:
UNIT.PIN = 10.000
UNIT.POUT = 1
Dann müssen Sie die Modbus-Einheiten so einrichten, dass sie diese widerspiegeln:
MODBUS.PIN = 2^MODBUS.PSCALE = 1.048.576
MODBUS.POUT = UNIT.PIN/UNIT.POUT * 1.000 = 10.000.000
Verwenden Sie dies auch, um das Fehlen eines Dezimalpunkts in Modbus-Daten zu berücksichtigen.
Nehmen Sie dann in Modbus folgende Einstellung vor:
Counts/Umdrehung = 10.000
In Modbus würden Sie 10,000,000 lesen, die Daten stellen jedoch 10,000.000 dar, da Modbus nur Ganzzahlen anzeigt.
Modbus-spezifische Register (Parameter)
Die folgenden Parameter bieten einen Schnellzugriff auf digitale E/A, Statusinformationen und Befehle.
| Parameter | Bit |
|---|---|
| MODBUS.DIO |
Bit 0 bis 6: DIN.STATES Bit 16 und 17: DOUT.STATES |
| MODBUS.DRVSTAT |
Erfasste Parameter: Bit 0: DRV.ACTIVE (Servoverstärker aktiv) Bit 1: STO.STATUS (STO-Status) Bit 2: HWLS.POSSTATE (positiver HW-Endschalter) Bit 3: HWLS.NEGSTATE (negativer HW-Endschalter) Bit 4: SWLS.STATE (positiver SW-Endschalter) Bit 5: SWLS.STATE (negativer SW-Endschalter) |
| MODBUS.DRV |
Bit 0: DRV.STOP (zur Ausführung 1 schreiben) Bit 1: DRV.EN (zur Freigabe des Servoverstärkers 1 schreiben) und DRV.DIS (zur Deaktivierung des Servoverstärkers 0 schreiben) |
| MODBUS.HOME |
Bit 0: HOME.MOVE (zur Ausführung 1 schreiben) Bit 1: HOME.SET (zur Ausführung 1 schreiben) |
| MODBUS.MOTOR |
Bit 0: MOTOR.BRAKE Bit 1: MOTOR.BRAKERLS |
| MODBUS.MT |
Bit 0: MT.CLEAR (Zahl von MT.NUM) Bit 1: MT.CONTINUE Bit 2: MT.LOAD (Zahl von MT.NUM) Bit 3: MT.SET Bit 4: MT.MOVE (Zahl von MT.NUM) Hinweis: Wenn sowohl Bit 2 als auch Bit 4 gesetzt ist, wird zunächst MT.SET und dann MT.MOVE ausgeführt, um den Fahrauftrag zu starten. |
| MODBUS.SM |
Bit 0: Eine Richtung (setzt SM.MODE auf 0 oder 1) Bit 1: Bewegung starten Flankengesteuert:
|
32-Bit- vs. 16-Bit-Werte
Modbus bildet alle Parameter entweder als 32-Bit- oder als 64-Bit-Werte ab. Die Mindestdatenbreite von 32 Bit unterstützt die Abwärtskompatibilität, d. h. eine Änderung der internen Datenbreite hat keine Auswirkungen auf die Registeradressen nachfolgender Parameter. Das dynamische Mapping erlaubt nur die Abbildung von Registern, die für die Anwendung relevant sind, und reduziert auf diese Weise den Kommunikationsaufwand.
Mapping von 64-Bit-Parametern auf 32-Bit-Parameter
Alle 64-Bit-Parameter werden als 32-Bit-Parameter abgebildet, beginnend bei Registeradresse 2000. Nur das niederwertige 32-Bit-Wort wird mit derselben Skalierung abgebildet wie der 64-Bit-Parameter. Kapitel 7 beinhaltet die allgemeine Mapping-Tabelle (Abschnitt 7.2) und die Tabelle für das Mapping von 64 Bit auf 32 Bit (Abschnitt 7.3).
Error Register
Die Fehlerregister MODBUS.FAULT1 (Registeradresse 954) bis MODBUS.FAULT10 (Registeradresse 972) beinhalten des Fehlerstatus des Servoverstärkers.
Sie können den aktuellen Fehlerstatus wie folgt abfragen:
- Lesen Sie MODBUS.FAULT1.
- Wenn MODBUS.FAULT1 Null ist, dann weist der Servoverstärker keine Fehler auf.
- Ein Wert von MODBUS.FAULT1 ungleich Null ist eine Fehlernummer.
- Ist MODBUS.FAULT1 ungleich Null, enthalten die folgenden Fehlerregister (MODBUS.FAULT2 bis MODBUS.FAULT10) mögliche weitere Fehlernummern.
- Ein Wert von Null gibt an, dass keine weiteren Fehler vorliegen.
Mapping-Tabelle
Die Tabelle unten enthält Modbus-Adressen und -Attribute. Die Attribute werden wie folgt beschrieben:
| Attribut |
Beschreibung |
|---|---|
| 64-Bit-Parameter | Parameter ist intern ein 64-Bit-Parameter. |
| 8-Bit, 16-Bit, 32-Bit | Interne Datengröße, abgebildet als 32 Bit (2 Register). |
| 64-Bit | Interne Datengröße, abgebildet als 64 Bit (4 Register). |
| Niederwertiges 32-Bit-Wort | Intern ein 64-Bit-Wert, nur das niederwertige 32-Bit-Wort wird abgebildet (2 Register). |
| Mit Vorzeichen |
Vorzeichen-Bit ist signifikant (negative/positive Werte werden akzeptiert). |
| Befehl | Führt einen Befehl aus. |
| Befehl, Datenbreite | Führt einen Befehl mit numerischem Argument aus (z. B. MT.NUM). |






