edcManual

Willkommen

Herzlich Willkommen im edcManual!

Dieses technische Handbuch beinhaltet die Sicherheitshinweise, technischen Kenndaten und Informationen zur Inbetriebnahme der Antriebsregler und Erweiterungsmodule der Firma ENGEL.
Es soll Ihnen helfen unsere Produkte mit ihren vielseitigen Möglichkeiten optimal und sicher zu bedienen.

Bitte lesen Sie daher dieses Dokument "bevor Sie das Gerät in Betrieb nehmen" sorgfältig durch und bewahren Sie es immer in der Nähe des Gerätes auf, um es bei Bedarf schnell verfügbar zu haben.
Das edcManual ist in folgende Kapitel gegliedert:
  • Einführung - Ein Überblick über verwendete Symbole und Begriffe und die grundlegende Dokumentenkonvention
  • Installation - Sicherheitshinweise im Umgang mit unseren Produkten, grundlegende Informationen zur Verdrahtung von Leistungs- und Elektronikspannung sowie der Bussysteme, und grundlegende Informationen zu den verschiedenen Rückführungen
  • edcTools - Eine Übersicht über die Inbetriebnahmesoftware
  • Antriebsregler - Technische Informationen zu den verschiedenen Antriebsreglern, Klemmenbelegungen und technische Zeichnungen
  • Erweiterungsmodule - Technische Informationen zu den verschiedenen Erweiterungsmodulen wie Bremschopper, IO-Module oder Gateways
  • Parameterliste für die Geräte - Ein Dictionary der verschiedenen Steuerungsparameter und Objekte für die Antriebsregler und IO-Module
  • Application Notes - Anwendungshinweise und Beispiele zu dem grundlegenden Umgang mit unseren Produkten
  • MPU2 - Eine Übersicht über die anwendungsspezifische Programmierung der "Motion Process Unit" mit Funktionsbeschreibungen und Beispielprogrammen
  • Kommunikationschnittstellen - Ene Übersicht über die Kommunikationschnittstellen unserer Produkte
  • Service - Grundlegende Informationen zum Service wie Kontaktdaten, Gewährleistung, Transport, Lagerung und Entsorgung

Vor der Inbetriebnahme sind unbedingt die Sicherheitshinweise zu lesen und zu beachten! Bei Missachtung wird Tod, schwere Körperverletzung und/oder erheblichen Sachschaden eintreten, wenn die entsprechende Vorsichtsmaßnahmen nicht getroffen werden.

Sollten Sie noch weitere Fragen haben, so stehen wir Ihnen selbstverständlich gerne zur Verfügung. Wenden Sie sich hierzu an unseren Kundendienst. Der für Sie zuständige Kundendienst kann dem Abschnitt "Service - Info" entnommen werden.

ENGEL Elektromotoren AG - Änderungen und Irrtümer vorbehalten


Inhalt - Einführung

Verwendete Symbole

Begriffe

Dokumentkonvention


Verwendete Symbole

Symbol | Signalwort | Bedeutung
 | Gefahr ! | Warnt vor unmittelbar drohenden Gefahr. Bei Missachtung wird Tod, schwere Körperverletzung und/oder erheblichen Sachschaden eintreten, wenn die entsprechende Vorsichtsmaßnahmen nicht getroffen werden.
 | Warnung ! | Warnt vor möglicher Gefahr. Bei Missachtung kann Tod, schwere Körperverletzung und/oder erheblichen Sachschaden eintreten, wenn die entsprechendeVorsichtsmaßnahmen nicht getroffen werden.
 | Vorsicht ! | Warnt vor einer möglichen gefährlichen Situation. Bei Missachtung kann Körperverletzung und/oder Sachschaden eintreten, wenn die entsprechende Vorsichtsmaßnahmen nichtgetroffen werden.
 | Wichtig ! | Symbolisiert wichtige Information über das Gerät oder deren Betrieb.
 | Hardware | Hardware bezogener Hinweis.
 | Tipp | Symbolisiert einen nützlichen Tipp.
 | Quellcode | Markiert ein Abschnitt mit Quellcode.
 | Beispiel | Symbolisiert Beispiele.


Begriffe

Begriff | Bedeutung
MPU | Motion Process Unit. Von ENGEL entwickelte Einheit für Programmierung von logischen Verknüpfungen und Abläufen (SPS-Funktionalität).
MPU2 | Motion Process Unit 2. Von ENGEL entwickelte Einheit für Programmierung von logischen Verknüpfungen und Abläufen (SPS-Funktionalität) - Programmierung in Python-Sprache
CAN | Controller Area Network
CANopen | Kommunikationsprotokoll für CAN-Bus Systeme. CANopen basiert auf CAL (CAN Application Layer).
COB | Communications Object
COB-ID | CAN Communication Object Identifier
Node-ID | CAN Node Identifier
PDO | Process Data Object
RxPDO | Receive-PDO
TxPDO | Transmit-PDO
SDO | Service Data Object
EDS | Electronic Data Sheet
PWM | Pulse Width Modulation
AIN | Analoger Eingang
AOUT | Analoger Ausgang
DIN | Digitaler Eingang
DOUT | Digitaler Ausgang
Baudrate | Geschwindigkeit der Übertragung oder Kommunikation
CAN Master | „Kommandozentrale" auf dem CAN Bus
Bus | Ein Kommunikationsnetz, in dem alle Teilnehmer über passive Verbindungen erreicht werden können und Kommunikation ist in beiden Richtungen möglich
DSP 402 | CANopen Geräteprofil für Treiber und Controller
Hall sensors | Sensoren zur Bestimmung der Position eines Rotors
Incremental encoder | Digitaler Positionsveränderungsgeber. Eine interne Logik verarbeitet ein Signal der Fotodioden und erzeugt zwei Rechtecksignale mit einer Phasenverschiebung von 90°.

Markenrechtliche Hinweise:

CiA® und CANopen® sind eingetragene Gemeinschaftsmarken der CAN in Automation e.V..
EtherCAT® ist eine eingetragene Marke und patentierte Technologie, lizensiert durch die Beckhoff Automation GmbH, Deutschand.
PROFIBUS® ist ein eingetragenes Markenzeichen der PROFIBUS and PROFINET International (PI).
PROFIBUS DP® ist ein eingetragenes Markenzeichen der Siemens AG.


Dokumentkonvention

Parameter

Die Parameter der Geräte werden durch Index (16-Bit Wert) und Subindex (8-Bit Wert) adressiert.

Schreibweise (Index = 0x6040, Subindex = 0):

Präfix „0x" oder Suffix „h" bei der Zahlen bedeutet, dass diese Zahl in der HEX-Notation geschrieben wurde.

Beispiel: 0x6040 or 6040h

Die Indices der Parameter werden üblicherweise in HEX-Notation geschrieben.

Hinweise

Die Hinweise werden wie im folgenden Beispiel markiert:

"Beschreibung eines nützlichen Tipps"

Quellcode - Listings

Die Programmbeispiele werden wie folgt dargestellt:

QUELLCODE

from mc.dsa
        import *

d = Dsa(1)

d.Enable()
d.ModeVel()
d.Vel()


Inhalt - Installation

Elektromagnetische Verträglichkeit (EMV)

Steckverbindersysteme

Kommunikationsschnittstellen

Sicherheitshinweise

Motor

Versorgungsspannung

Rückführung

Bremschopper

Magnetischer Encoder-Chip


Inhalt - Elektromagnetische Verträglichkeit (EMV)

Wozu Elektromagnetische Verträglichkeit

Sicherheitshinweise

Angewandte Normen

Was sind Drehzahlveränderliche elektrische Antriebe (PDS - Power Drive System)?

EMV-gerechte Verkabelung und Installation


Wozu Elektromagnetische Verträglichkeit

Die Antriebsregler der EDC-Reihe sind Geräte mit getakteten Endstufen. Um eine hohe Effizienz und geringe Verlustleistung zu erreichen, werden pulsweitenmodulierte Signale (PWM) mit hoher Frequenz eingesetzt. Diese können eine erhöhte Störaussendung bewirken. Daher müssen bei der Planung einer Maschine bzw. Anlage mit Antriebsreglern immer die Grundsätze der EMV-gerechten Verkablung berücksichtigt werden.


Sicherheitshinweise

Komponenten und Endanwendung

Die Geräte der EDC-Reihe sind keine End-User-Produkte und sind für die Verwendung eine Endanwendung(Maschine oder Anlage) bestehend aus einer Einspeisevorrichtung/Netzteil, einer Peripherie und einem Motor vorgesehen. Dementsprechend ist der Hersteller des Endproduktes(Maschine oder Anlage) für die Einhaltung der EMV Richtlinien und Grenzwerte in der Endanwendung verantwortlich.

Konformität der Endanwendung

Die Antriebsregler wurden hinsichtlich ihrer elektromagnetischen Verträglichkeit getestet. Die Konformität des Gerätes lässt jedoch keine generelle Aussage über der Konformität des Endproduktes(Maschine oder Anlage) zu.
Die Konformität des Endproduktes muss zusammen mit angeschlossen Teilen wie dem Netzteil, dem Motor, einer SPS-Steuerung und sonstiger Peripherie vom Hersteller des Endproduktes geprüft werden. Hierbei können neben den im Antriebsregler selbst verbauten Schutz- und Filterelementen noch zusätzlich Maßnahmen zum Erreichen der Konformität erforderlich werden (geschirmte Kabel, externe Schutzelemente, Netzfilter).

Elektrostatisch empfindliche Geräte und Komponenten

Bei Installation, Inbetriebnahme und Service der Geräte müssen Schutzmaßnahme gegen die Einwirkung von elektrostatischen Entladungen (ESD) eingehalten werden. Das betrifft insbesondere antistatische Kleidung, antistatische Werkzeuge und einer antistatische Arbeitsumgebung. Die Geräte müssen diesbezüglich mit besondere Sorgfalt behandelt werden.
Zum Schutz gegen elektrostatische Entladungen im Betrieb müssen an das Gerät alle Steckverbinder angesteckt werden, auch wenn die darauf befindlichen Signale nicht benutzt werden. Die Steckverbinder dienen als Schutz gegen Berührung.
Leiterplatten ohne Gehäuse dürfen nur von geschultem Personal in einer antistatischen Umgebung verarbeitet werden.


Angewandte Normen

Produktnorm

  • IEC/EN 61800-3 - Drehzahlveränderliche elektrische Antriebe Teil 3: EMV-Anforderungen einschließlich spezieller Prüfverfahren

    • Fachgrundnormen

  • IEC/EN 61000-6-2 - Störfestigkeit für Industriebereiche

  • IEC/EN 61000-6-4 - Störaussendung für Industriebereiche

    • Grundnormen

  • IEC/EN 55016 (CISPR16) - Geräte, Einrichtungen und Verfahren zur Messung der hochfrequenten Störaussendung (Funkstörungen) und Störfestigkeit

  • EC/EN 61000-4-2 - Störfestigkeit gegen schnelle Transienten

  • IEC/EN 61000-4-4 - Störfestigkeit gegen die Entladung statischer Elektrizität

  • IEC/EN 61000-4-5 - Störfestigkeit gegen Stoßspannungen

  • IEC/EN 61000-4-6 - Störfestigkeit gegen Hochfrequenz, asymmetrisch

  • IEC/EN 61000-4-6 - Störfestigkeit gegen Elektromagnetisches HF-Feld, amplitudenmoduliert

    • ENGEL Elektromotoren AG - Änderungen und Irrtümer vorbehalten


Was sind Drehzahlveränderliche elektrische Antriebe (PDS - Power Drive System)?

Die den Antriebsreglern zu Grunde liegende Produktnorm für die Elektromagnetische Verträglichkeit ist die DIN EN 16800-3 „Drehzahlveränderliche elektrische Antriebe Teil 3: EMV-Anforderungen einschließlich spezieller Prüfverfahren“.
Ein Drehzahlveränderlicher elektrische Antrieb ist eine Antriebssystem bestehend aus Einspeiseabschnitt, dem Antriebsmodul, dem Motor und verschiedenen Hilfseinrichtungen.
Die Abbildung zeigt die Struktur und die Schnittstellen zwischen den einzelnen Teilen.

Abbildung: Blockschaltbild Drehzahlveränderlicher elektrischer Antrieb

Blockschaltbild Drehzahlveränderlicher elektrischer Antrieb
Die EDC-Antriebsregler stellen das Basis Antriebsmodul (BDM - Basic Drive Modul) dar. Schnittstellen gibt es zur Einspeisung (Trafo, Netzteil), dem Motor, zu internen Hilfseinrichtungen (Sensoren/Geber) und zur Prozessperipherie (z.B. SPS/IPC über I/O und Feldbus).


EMV-gerechte Verkabelung und Installation

Allgemein

  • ESD gerechte Arbeitsumgebung und Ausrüstung bei Installation, Inbetriebnahme und Wartung der Geräte

  • Die Geräte müssen über ein isoliertes Netzteil mit Gleichspannung versorgt werden

  • Die Geräte sind nicht dafür konzipiert direkt an ein Gleichstrom- oder Wechselstromnetz angeschlossen zu werden

  • Alle Kabel müssen geschirmt ausgelegt werden

  • Nicht geschirmte Kabel können in der Endanwendung dazu führen, dass die Grenzwerte für die Abstrahlung überschritten werden

  • Zudem können bei ungeschirmten Kabeln empfindliche Signale (z.B. Encoder oder Hall) gestört werden

  • Die Kabellängen bei den Signalleitungen dürfen 30m nicht überschreiten

  • Die Versorgungsleitungen für Up und Ue dürfen nicht länger als 3m sein

  • Werden größere Leitungslängen benötigt müssen Filter bzw. Schutzelemente für Signal und Versorgungsleitungen vorgesehen werden

  • Der Kabelschirm muss an beiden Enden auf PE oder Chassis-Ground angeschlossen werden

  • Der FE Anschluss der Regler muss an PE oder an Chassie-Ground der Maschine bzw. Anlage angeschlossen werden

  • Geräteseitiger Schirmanschluss und FE Anbindung sollten so kurz wie möglich an einen gemeinsamen Punkt angeschlossen werden

  • Für die Anbindung von Schirm an PE oder FE müssen hochfrequenztaugliche Verbidungen benutzt werden (z.B. Erdungsbänder oder andere Verbindungen mit großer Oberfläche) Litzen mit Ringkabelschuhen sind dafür ungeeignet

  • Die Masse der DC-Versorgung für Up und Ue muss am Netzteil an PE angeschlossen werden

    • Achtung, der Funktionserde- oder FE-Anschluss ist kein Schutzleiteranschluss. FE dient als Schirmanschluss zur Abführung von EMV-technischen Störungen.

  • Bei Geräten ohne FE-Anschluss werden die Schirme direkt an PE angeschlossen, Masse und PE werden am Netzteil verbunden

  • Die Kühlkörper der Geräte sind intern an den FE-Pin angeschlossen

  • Bei der Verlegung der Kabel sollten Signalkabel stets von Kabeln der Spannungsversorgung oder den Motorphasen räumlich getrennt verlegt werden

  • Differentielle Signale (z.B. Encoder A und /A) sollten in einem geschirmten Kabel und paarweise verdrillt geführt werden

  • Für die Verdrahtung von Bus-Signalen (z.B. CAN-Bus) müssen Kabel mit den entsprechenden Eigenschaften (verdrillte Leistungen, Schirm, passende Wellenwiderstand usw.) verwendet werden

    • Beispiel Verdrahtung

    Elektrostatisch empfindliche Geräte und Komponenten

    Bei Installation, Inbetriebnahme und Service der Geräte müssen Schutzmaßnahme gegen die Einwirkung von elektrostatischen Entladungen (ESD) eingehalten werden. Das betrifft insbesondere antistatische Kleidung, antistatische Werkzeuge und einer antistatische Arbeitsumgebung. Die Geräte müssen diesbezüglich mit besondere Sorgfalt behandelt werden.
    Zum Schutz gegen elektrostatische Entladungen im Betrieb müssen an das Gerät alle Steckverbinder angesteckt werden, auch wenn die darauf befindlichen Signale nicht benutzt werden. Die Steckverbinder dienen als Schutz gegen Berührung.
    Leiterplatten ohne Gehäuse dürfen nur von geschultem Personal in einer antistatischen Umgebung verarbeitet werden.


Inhalt - Steckverbindersysteme

Übersicht

Gerät EDC-E2

Gerät EDC-E4-Modul/Bus

Gerätefamilie EDC-B4x

Gerätefamilie EDC-B4x-Modul

Gerätefamilie EDC-B6x

Gerätefamilie EDC-B6x-Modul

Gerätefamilie EDC-E2x

Gerätefamilie EDC-E4x

Gerätefamilie EDC-E4x-Modul

Gerätefamilie EDC-E5x

Gerätefamilie EDC-E6x

Gerätefamilie EDC-E6x-Modul

Gerätefamilie EDC-S4x

Gerätefamilie EDC-S4x-Modul

Gerätefamilie EDC-S6x

Gerätefamilie EDC-S6x-Modul

Gerätefamilie ERL-Lx


Übersicht

Die folgende Tabelle zeigt, welche Steckverbindersysteme bei den Standard-Baugruppen zum Einsatz kommen:

Baugruppe | Weidmueller BLZF 3.5 | Weidmueller S2L 3.5 | Weidmueller SV7.62HP | Tyco Electronics Junior Power Timer | Molex Microfit 3.0 | JST PH-Serie | JST PA-Serie | SAMTEC (Modul-Varianten)
EDC-E2x |  | x | x |  |  |  |  |
EDC-E4x | x | x |  |  |  |  |  | x
EDC-E5x | x |  |  |  |  |  | x |
EDC-E6x |  |  |  |  | x | x |  | x
EDC-E2 |  | x |  | x |  |  |  |
EDC-E4 | x | x |  |  |  |  |  | x
EDC-E5/6 |  |  |  |  | x | x |  | x


Gerät EDC-E2

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!

Verarbeitung der Zugfederklemmen Weidmueller B2L 3.5
Die Antriebsregler EDC-E2 verwenden Steckverbinder mit Zugfedertechnik für ein bzw. feindrähtige Leiter. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit dem Steckverbinder verwendet werden können.

Klemme | Bezeichnung Art.-Nr. | Klemmbereich (Querschnitt d) mm2 |  |  |  | Abisolierlänge mm
 |  | eindrähtig H05(07)V-U | feindrähtig H05(07)V-K | feindrähtig mit AEH | feindrähtig mit AEH und Kunststoffkragen
X2 | B2L 3.5/14 1727680000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
X3 | B2L 3.5/12 1727670000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
X4 | B2L 3.5/6 1727640000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
Weitere Information finden Sie unter www.weidmueller.com.

Achten Sie darauf, dass die Adern korrekt auf den abisolierten Teil des Leiters und nicht auf die Isolierung geklemmt sind.

Verarbeitung der Crimp-Steckverbinder Tyco Electronics Junior Power Timer
Die Antriebsregler EDC-E2 verwenden Steckverbinder mit Crimptechnik für die Leistungsseite. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit den Steckverbinder verwendet werden können.

Klemme | Bezeichnung / Art.-Nr. | Leiterquerschnitt d [mm2] | Max. Durchmesser der Isolierung D [mm] | Abisolierlänge [mm]
X1 | - Crimp-Gehäuse - 929504-2 - Crimp-Kontakt - 927777-3 - Crimp-Werkzeug- Handzange 539635-1 Matrize 539674-2 | >1 ... 2,5 | 3,1 | ~3,3
Weitere Information finden Sie unter www.tycoelectronics.com.

Die Verwendung nicht vom Hersteller spezifizierter Werkzeuge kann die Zuverlässigkeit der Crimp-Verbindung bis hin zum Ausfall beeinträchtigen.


Gerät EDC-E4-Modul/Bus

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!
2mm Raster Modul-Leisten
Die Modul-Varianten verwenden überwiegend 2mm Raster Steckverbinder der Firma SAMTEC. Zu beachten sind bei der Auswahl von Alternativen zum einen die Strombelastbarkeit und die Bauform der Stecker (Löttechnik und Höhe). Mechanisch vergleichbare Steckverbinder gibt es zum Bsp. von der Firma W+P.

Die Abbildung zeigt die gängigen Varianten:

Klemme | Bezeichnung / Art.-Nr. - Träger-Board (SMT) - Träger-Board (THT) | Hersteller | Gesamthöhe - PCB <-> PCB [mm] | Strombelastbarkeit [A]
X1 | - TW-24-03-L-D-170-SM - TW-24-03-L-D-170-230 | SAMTEC | 12 | 3A@Ta=80°C

Beachten Sie bitte die Einstecktiefe (typ. 3,2 mm) und den Querschnitt (typ. 0,5 x 0,5 mm) der Pins.
Weitere Information finden Sie unter www.samtec.com.

Flachbandkabel-Verbinder für Bus-Optionen
Neben den 2mm Leisten kommen beim EDC-E4 noch 1,27mm Steckverbinder für Flachbandkabel zum Einsatz. Die Steckverbinder der µMatch-Serie von Tyco/AMP kommen bei der Anbindung verschieden interner Bus-Optionen an den EDC-E4 zum Einsatz.

Klemme | Bezeichnung / Art.-Nr. - Träger-Board (SMT) - Träger-Board (THT) - Flachbandkabel | Hersteller | Flachbandkabel | Strombelastbarkeit [A]
X2 | - 7-188275-8 - 7-215079-8 - 2 Stück 215083-8 | Tyco/AMP | 8x AWG28-24 | 1,5A
X3 | - 7-188275-8 - 7-215079-8 - 2 Stück 215083-8 | Tyco/AMP | 8x AWG28-24 | 1,5A
Weitere Information finden Sie unter www.te.com.


Steckverbindersysteme

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!
Verarbeitung der Zugfederklemmen Weidmueller B2L 3.5 und BLZF 3.5
Die Antriebsregler der EDC-B4x Reihe verwenden Steckverbinder mit Zugfedertechnik für ein bzw. feindrähtige Leiter. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit dem Steckverbinder verwendet werden können.

Klemme | Bezeichnung Art.-Nr. | Klemmbereich (Querschnitt d) mm2 |  |  |  | Abisolierlänge mm
 |  | eindrähtig H05(07)V-U | feindrähtig H05(07)V-K | feindrähtig mit AEH | feindrähtig mit AEH und Kunststoffkragen
X1 | BLZF 3.5/180/6 1690460000 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1 | 10
X2 | B2L 3.5/14 1727680000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
X3 | B2L 3.5/12 1727670000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
Weitere Information finden Sie unter www.weidmueller.com.

Achten Sie darauf, dass die Adern korrekt auf den abisolierten Teil des Leiters und nicht auf die Isolierung geklemmt sind.


Steckverbindersysteme

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!
2mm Raster Modul-Leisten
Die Modul-Varianten verwenden überwiegend 2mm Raster Steckverbinder der Firma SAMTEC. Zu beachten sind bei der Auswahl von Alternativen zum einen die Strombelastbarkeit und die Bauform der Stecker (Löttechnik und Höhe). Mechanisch vergleichbare Steckverbinder gibt es zum Bsp. von der Firma W+P.

Die Abbildung zeigt die gängigen Varianten:

Klemme | Bezeichnung / Art.-Nr. - Träger-Board (SMT) - Träger-Board (THT) | Hersteller | Gesamthöhe - PCB <-> PCB [mm] | Strombelastbarkeit [A]
X1 | - TW-16-02-L-D-170-SM - TW-16-03-L-D-170-230 | SAMTEC | 12 | 3A@Ta=80°C
X2 | - TW-16-02-L-D-170-SM - TW-16-03-L-D-170-230 | SAMTEC | 12 | 1A

Beachten Sie bitte die Einstecktiefe (typ. 3,2 mm) und den Querschnitt (typ. 0,5 x 0,5 mm) der Pins.
Weitere Information finden Sie unter www.samtec.com.


Steckverbindersysteme

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!
Verarbeitung der Crimp-Steckverbinder MOLEX Microfit 3.0
Die Antriebsregler der EDC-B6x Reihe verwenden Steckverbinder mit Crimptechnik für die I/O und die Leistungsseite. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit dem Steckverbinder der Leistungsseite verwendet werden können.

Klemme | Bezeichnung / Art.-Nr. | Leiterquerschnitt d [AWG] [mm2] | Max. Durchmesser der Isolierung D [mm] | Abisolierlänge A [mm]
X2 | - Crimp-Gehäuse - 43645-0500 - Crimp-Kontakt - 43030-0001 - Crimp-Werkzeug - Handzange 63819-0000 | AWG 20 ... 24 0,2 ... 0,519 | 1,85 | 2,54 ... 2,92
Weitere Information finden Sie unter www.molex.com.

Die Verwendung nicht vom Hersteller spezifizierter Werkzeuge kann die Zuverlässigkeit der Crimp-Verbindung bis hin zum Ausfall beeinträchtigen.

Verarbeitung der Crimp-Steckverbinder JST PH-Serie
Die folgende Übersicht zeigt, welche Leiterquerschnitte mit dem Steckverbinder der I/O verwendet werden können.

Klemme | Bezeichnung / Art.-Nr. | Leiterquerschnitt d [AWG] [mm2] | Max. Durchmesser der Isolierung D [mm] | Abisolierlänge A [mm]
X1 | - Crimp-Gehäuse - PHR-15 - Crimp-Kontakt - SPH-002T-P0.5S - Crimp-Werkzeug - Handzange WC-240 | AWG 24 ... 30 0,05 ... 0,22 | 1,5 | ~1,5 ... 2
Weitere Information finden Sie unter www.jst.com.

Die Verwendung nicht vom Hersteller spezifizierter Werkzeuge kann die Zuverlässigkeit der Crimp-Verbindung bis hin zum Ausfall beeinträchtigen.


Steckverbindersysteme

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!
2mm Raster Modul-Leisten
Die Modul-Varianten verwenden überwiegend 2mm Raster Steckverbinder der Firma SAMTEC. Zu beachten sind bei der Auswahl von Alternativen zum einen die Strombelastbarkeit und die Bauform der Stecker (Löttechnik und Höhe). Mechanisch vergleichbare Steckverbinder gibt es zum Bsp. von der Firma W+P.

Die Abbildung zeigt die gängigen Varianten:

Klemme | Bezeichnung / Art.-Nr. - Träger-Board (SMT) - Träger-Board (THT) | Hersteller | Gesamthöhe - PCB <-> PCB [mm] | Strombelastbarkeit [A]
X1 | - TMM-116-01-L-D-SM - TMM-116-01-L-D | SAMTEC | 10,4 (SMT)* 9,12 (THT)* | 1A
X2 | - TMM-108-01-L-D-SM - TMM-108-01-L-D | SAMTEC | 10,4 (SMT)* 9,12 (THT)* | 3A@Ta=80°C

Beachten Sie bitte die Einstecktiefe (typ. 3,2 mm) und den Querschnitt (typ. 0,5 x 0,5 mm) der Pins.
Weitere Information finden Sie unter www.samtec.com.


Steckverbindersysteme

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!
Verarbeitung der Zugfederklemmen Weidmueller B2L 3.5
Die Antriebsregler der EDC-E2x Reihe verwenden Steckverbinder mit Zugfedertechnik für ein bzw. feindrähtige Leiter. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit dem Steckverbinder verwendet werden können.

Klemme | Bezeichnung Art.-Nr. | Klemmbereich (Querschnitt d) mm2 |  |  |  | Abisolierlänge mm
 |  | eindrähtig H05(07)V-U | feindrähtig H05(07)V-K | feindrähtig mit AEH | feindrähtig mit AEH und Kunststoffkragen
X2 | B2L 3.5/14 1727680000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
X3 | B2L 3.5/12 1727670000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
X4 | B2L 3.5/6 1727640000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
Weitere Information finden Sie unter www.weidmueller.com.

Achten Sie darauf, dass die Adern korrekt auf den abisolierten Teil des Leiters und nicht auf die Isolierung geklemmt sind.

Verarbeitung der Schraubklemmen Weidmueller BVZ 7.62
Die Antriebsregler der EDC-E2x Reihe verwenden Steckverbinder mit Schraubtechnik für die Leistungsseite. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit dem Steckverbinder verwendet werden können.

Klemme | Bezeichnung Art.-Nr. | Klemmbereich (Querschnitt d) mm2 |  |  |  | Abisolierlänge mm
 |  | eindrähtig H05(07)V-U | feindrähtig H05(07)V-K | feindrähtig mit AEH | feindrähtig mit AEH und Kunststoffkragen
X1 | BVZ 7.62HP/06 1929970000 | 0,2 ... 6 | 0,5 ... 6 | 0,25 ... 6 | 0,25 ... 6 | 12
Weitere Information finden Sie unter www.weidmueller.com.


Steckverbindersysteme

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!
Verarbeitung der Zugfederklemmen Weidmueller B2L 3.5 und BLZF 3.5
Die Antriebsregler der EDC-E4x Reihe verwenden Steckverbinder mit Zugfedertechnik für ein bzw. feindrähtige Leiter. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit dem Steckverbinder verwendet werden können.

Klemme | Bezeichnung Art.-Nr. | Klemmbereich (Querschnitt d) mm2 |  |  |  | Abisolierlänge mm
 |  | eindrähtig H05(07)V-U | feindrähtig H05(07)V-K | feindrähtig mit AEH | feindrähtig mit AEH und Kunststoffkragen
X1 | BLZF 3.5/180/6 1690460000 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1 | 10
X2 | B2L 3.5/14 1727680000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
X3 | B2L 3.5/12 1727670000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
X4 | B2L 3.5/6 1727640000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
Weitere Information finden Sie unter www.weidmueller.com.

Achten Sie darauf, dass die Adern korrekt auf den abisolierten Teil des Leiters und nicht auf die Isolierung geklemmt sind.


Steckverbindersysteme

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!
Die Antriebsregler der EDC-E5x Reihe können mit Steckverbindern mit Zugfedertechnik oder Schraubtechnik für ein bzw. feindrähtige Leiter verwendet werden. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit welchem Steckverbinder verwendet werden können.

Verarbeitung der Zugfederklemmen Weidmueller BLZF 3.5

Klemme | Bezeichnung Art.-Nr. | Klemmbereich (Querschnitt d) mm2 |  |  |  | Abisolierlänge mm
 |  | eindrähtig H05(07)V-U | feindrähtig H05(07)V-K | feindrähtig mit AEH | feindrähtig mit AEH und Kunststoffkragen
X1 | BLZF 3.5/180/5 1690450000 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1 | 10
X6 | BLZF 3.5/180/3 1690430000 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1 | 10

Verarbeitung der Schrubklemmen Weidmueller BL 3.5

Mit dieser Klemmenart kann ein höherer Dauerstrom erreicht werden,

Klemme | Bezeichnung Art.-Nr. | Klemmbereich (Querschnitt d) mm2 |  |  |  | Abisolierlänge mm
 |  | eindrähtig H05(07)V-U | feindrähtig H05(07)V-K | feindrähtig mit AEH | feindrähtig mit AEH und Kunststoffkragen
X1 | BLZF 3.5/180/5 1690450000 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1 | 10
X6 | BLZF 3.5/180/3 1690430000 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1 | 10
Weitere Information finden Sie unter www.weidmueller.com.

Achten Sie darauf, dass die Adern korrekt auf den abisolierten Teil des Leiters und nicht auf die Isolierung geklemmt sind.

Verarbeitung der Crimp-Steckverbinder JST PA-Serie
Die folgende Übersicht zeigt, welche Leiterquerschnitte mit den Steckverbinder der PA-Serie verwendet werden können

Klemme | Bezeichnung / Art.-Nr. | Leiterquerschnitt d [AWG] [mm2] | Max. Durchmesser der Isolierung D [mm] | Abisolierlänge A [mm]
X2 | - Crimp-Gehäuse - PAP-05V-S - Crimp-Kontakt - SPHD-001T-P0.5 - Crimp-Werkzeug - Handzange WC-610 | AWG 22 ... 26 0,13 ... 0,33 | 1,0 ... 1,5 | ~1,5 ... 2
X3 | - Crimp-Gehäuse - PAP-03V-S - Crimp-Kontakt - SPHD-001T-P0.5 - Crimp-Werkzeug - Handzange WC-610 | AWG 22 ... 26 0,13 ... 0,33 | 1,0 ... 1,5 | ~1,5 ... 2
X4 | - Crimp-Gehäuse - PAP-13V-S - Crimp-Kontakt - SPHD-001T-P0.5 - Crimp-Werkzeug - Handzange WC-610 | AWG 22 ... 26 0,13 ... 0,33 | 1,0 ... 1,5 | ~1,5 ... 2
X5 | - Crimp-Gehäuse - PAP-10V-S - Crimp-Kontakt - SPHD-001T-P0.5 - Crimp-Werkzeug - Handzange WC-610 | AWG 22 ... 26 0,13 ... 0,33 | 1,0 ... 1,5 | ~1,5 ... 2
Weitere Information finden Sie unter www.jst.com.

Die Verwendung nicht vom Hersteller spezifizierter Werkzeuge kann die Zuverlässigkeit der Crimp-Verbindung bis hin zum Ausfall beeinträchtigen.


Steckverbindersysteme

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!
Verarbeitung der Crimp-Steckverbinder MOLEX Microfit 3.0
Die Antriebsregler der EDC-E6x Reihe verwenden Steckverbinder mit Crimptechnik für die I/O und die Leistungsseite. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit dem Steckverbinder der Leistungsseite verwendet werden können.

Klemme | Bezeichnung / Art.-Nr. | Leiterquerschnitt d [AWG] [mm2] | Max. Durchmesser der Isolierung D [mm] | Abisolierlänge A [mm]
X2 | - Crimp-Gehäuse - 43645-0500 (Bus-Varianten des Reglers 43645-0600) - Crimp-Kontakt - 43030-0001 - Crimp-Werkzeug - Handzange 63819-0000 | AWG 20 ... 24 0,2 ... 0,519 | 1,85 | 2,54 ... 2,92
Weitere Information finden Sie unter www.molex.com.

Die Verwendung nicht vom Hersteller spezifizierter Werkzeuge kann die Zuverlässigkeit der Crimp-Verbindung bis hin zum Ausfall beeinträchtigen.

Verarbeitung der Crimp-Steckverbinder JST PH-Serie
Die folgende Übersicht zeigt, welche Leiterquerschnitte mit dem Steckverbinder der I/O verwendet werden können.

Klemme | Bezeichnung / Art.-Nr. | Leiterquerschnitt d [AWG] [mm2] | Max. Durchmesser der Isolierung D [mm] | Abisolierlänge A [mm]
X1 | - Crimp-Gehäuse - PHR-15 - Crimp-Kontakt - SPH-002T-P0.5S - Crimp-Werkzeug - Handzange WC-240 | AWG 24 ... 30 0,05 ... 0,22 | 1,5 | ~1,5 ... 2
Weitere Information finden Sie unter www.jst.com.

Die Verwendung nicht vom Hersteller spezifizierter Werkzeuge kann die Zuverlässigkeit der Crimp-Verbindung bis hin zum Ausfall beeinträchtigen.


Steckverbindersysteme

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!
Verarbeitung der Zugfederklemmen Weidmueller B2L 3.5 und BLZF 3.5
Die Antriebsregler der EDC-S4x Reihe verwenden Steckverbinder mit Zugfedertechnik für ein bzw. feindrähtige Leiter. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit dem Steckverbinder verwendet werden können.

Klemme | Bezeichnung Art.-Nr. | Klemmbereich (Querschnitt d) mm2 |  |  |  | Abisolierlänge mm
 |  | eindrähtig H05(07)V-U | feindrähtig H05(07)V-K | feindrähtig mit AEH | feindrähtig mit AEH und Kunststoffkragen
X1 | BLZF 3.5/180/7 1690470000 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1 | 10
X2 | B2L 3.5/14 1727680000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
X3 | B2L 3.5/12 1727670000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
X4 | B2L 3.5/6 1727640000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
Weitere Information finden Sie unter www.weidmueller.com.

Achten Sie darauf, dass die Adern korrekt auf den abisolierten Teil des Leiters und nicht auf die Isolierung geklemmt sind.


Steckverbindersysteme

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!
Verarbeitung der Crimp-Steckverbinder MOLEX Microfit 3.0
Die Antriebsregler der EDC-S6x Reihe verwenden Steckverbinder mit Crimptechnik für die I/O und die Leistungsseite. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit dem Steckverbinder der Leistungsseite verwendet werden können.

Klemme | Bezeichnung / Art.-Nr. | Leiterquerschnitt d [AWG] [mm2] | Max. Durchmesser der Isolierung D [mm] | Abisolierlänge A [mm]
X2 | - Crimp-Gehäuse - 43645-0600 - Crimp-Kontakt - 43030-0001 - Crimp-Werkzeug - Handzange 63819-0000 | AWG 20 ... 24 0,2 ... 0,519 | 1,85 | 2,54 ... 2,92
Weitere Information finden Sie unter www.molex.com.

Die Verwendung nicht vom Hersteller spezifizierter Werkzeuge kann die Zuverlässigkeit der Crimp-Verbindung bis hin zum Ausfall beeinträchtigen.

Verarbeitung der Crimp-Steckverbinder JST PH-Serie
Die folgende Übersicht zeigt, welche Leiterquerschnitte mit dem Steckverbinder der I/O verwendet werden können.

Klemme | Bezeichnung / Art.-Nr. | Leiterquerschnitt d [AWG] [mm2] | Max. Durchmesser der Isolierung D [mm] | Abisolierlänge A [mm]
X1 | - Crimp-Gehäuse - PHR-15 - Crimp-Kontakt - SPH-002T-P0.5S - Crimp-Werkzeug - Handzange WC-240 | AWG 24 ... 30 0,05 ... 0,22 | 1,5 | ~1,5 ... 2
Weitere Information finden Sie unter www.jst.com.

Die Verwendung nicht vom Hersteller spezifizierter Werkzeuge kann die Zuverlässigkeit der Crimp-Verbindung bis hin zum Ausfall beeinträchtigen.


Steckverbindersysteme

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!
Verarbeitung der Zugfederklemmen Weidmueller BLZF 3.5
Die Geräte der ERL-Lxx Reihe verwenden Steckverbinder mit Zugfedertechnik für ein bzw. feindrähtige Leiter. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit dem Steckverbinder verwendet werden können.

Klemme | Bezeichnung Art.-Nr. | Klemmbereich (Querschnitt d) mm2 |  |  |  | Abisolierlänge mm
 |  | eindrähtig H05(07)V-U | feindrähtig H05(07)V-K | feindrähtig mit AEH | feindrähtig mit AEH und Kunststoffkragen
X1 | BLZF 3.5/180/6 1690460000 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1 | 10
Weitere Information finden Sie unter www.weidmueller.com.

Achten Sie darauf, dass die Adern korrekt auf den abisolierten Teil des Leiters und nicht auf die Isolierung geklemmt sind.


Inhalt - Kommunikationsschnittstellen

CAN-Bus


CAN-Bus

Die Leistungsversorgungsspannung kann teilweise lebensgefährlich hoch sein. Um Verletzungen oder Kurzschlüsse am Gerät zu vermeiden, schließen Sie die Spannungsversorgung zu diesem Zeitpunkt noch nicht an.

Leitungsmerkmale

Für die Verbindung der CAN-Bus Teilnehmer muss eine Leitung, die der Norm ISO 11898 entspricht, eingesetzt werden. Die Leitung muss folgende Hauptmerkmale aufweisen:

  • paarweise verdrillt
  • mit Schirmgeflecht
  • Wellenwiderstand von 120 Ohm

Verdrahtung

Für das CAN-Bus-Kabel benötigen Sie nur drei der standardmäßig vier vorhandenen Adern. Wählen Sie sich eines der verdrillten Aderpaaren aus, und ordnen Sie die Farbe Grün der CAN-Low-Leitung und Gelb der CAN-High-Leitung zu (verhindert Gleichtaktstörungen). Das zweite Adernpaar (Braun und/oder Weiß) können Sie doppelt nehmen und für CAN-GND verwenden. Behalten Sie die Farben für CAN-Low und CAN-High bei, um Fehler zu vermeiden.

Die CAN-High Leitung wird an den CAN-Hi Pin und die CAN-Low Leitung wird an den CAN-Lo Pin des Gerätes angeschlossen. Die Verkabelung des CAN-GND entnehmen Sie bitte den folgenden Zeichnungen.

Die Masseführung hängt von dem Anlagentyp ab und muss immer individuell betrachtet werden.
Galvanisch getrennte Geräte:

Nicht galvanisch getrennte Geräte mit dem gleichen Bezugspotential:

Der CAN-GND der galvanisch getrennten Geräte ist genau einmal (und nirgendwo anders) mit dem Bezugspotential der nicht galvanisch getrennten Geräte zu verbinden. Dies kann entweder über die Masse der Spannungsversorgung (*1) oder über den CAN-GND (*2) der nicht galvanisch getrennten Geräte geschehen.

Nicht galvanisch getrennte Geräte mit unterschiedlichen Bezugspotential:

Topologie

Der CAN-Bus darf nur als Linie aufgebaut werden. Sternstrukturen sind nicht zulässig.

Baudrate | Maximale Gesamtbuslänge
10 kbits/s | 6,7 km
20 kbits/s | 3,3 km
50 kbits/s | 1,3 km
125 kbits/s | 530 m
250 kbits/s | 270 m
500 kbits/s | 130 m
1 Mbits/s | 40 m
Auszug aus CiA-DR 303-1:
Buslänge [m] | Längenabhängiger Widerstand [mΩ/m] | Kabelquerschnitt [mm2]
0 bis 40 | 70 | 0,25 bis 0,34
40 bis 300 | <60 | 0,34 bis 0,60
300 bis 600 | <40 | 0,50 bis 0,60
600 bis 1000 | <26 | 0,75 bis 0,80

Abschlusswiderstände

Der gesamte CAN-Bus ist an beiden Enden mit je einem Abschlusswiderstand von 120 Ohm zu terminieren. Dies dient zur Vermeidung von Leitungsreflektionen. Es sind nur 2 Abschlusswiderstände pro CAN-Bus erlaubt.

In der Standardausführung des CAN-Sticks ist bereits ein Abschlusswiderstand im Gerät enthalten.

Stichleitungen

Die Stichleitungslänge sollte 2cm nicht überschreiten. Längere Stichleitungen können Leitungsreflektionen verursachen.

An einem Zwischenstecker dürfen nicht mehr als 2 CAN-Kabel angeschlossen werden, da so der Bus unerlaubterweise verzweigt werden würde.

Schirmung

Es wird empfohlen den Schirm des CAN-Kabels einseitig in der Nähe des Masters aufzulegen. Dabei ist darauf zu achten dass der Schirm großflächig und niederohmig durch z.B. eine Kabelschelle mit der Anlagen-Erde verbunden wird. Verdrillung des Schirms ist unbedingt zu vermeiden.

Beispielkabel

Hersteller: U.I. LAPP GmbH
Internet: www.lappkabel.de
Bezeichnung: UNITRONIC BUS CAN
Artikel Nr.: 2170 273 T

Problembehebung

Error Frames

Error Frames signalisieren unter anderem Fehler in der CAN-Bus Verkabelung, Vergabe der Knotenadressen (NodeId) oder Einstellungen der Baudrate. Durch eine hohe Anzahl an Error Frames können die Geräte in den "Bus-Off" Zustand übergehen. Das Gerät mit den meisten entdeckten Error Frames ist nicht zwingend die Ursache für das Problem. Trägt ein Knoten überdurchschnittlich stark zum Busverkehr bei (z.B. durch ereignisgesteuerte PDOs eines sich schnell ändernden Messwerts), werden seine Telegramme mit hoher Wahrscheinlichkeit gestört, wodurch der Fehlerzähler des Teilnehmers als erster kritische Werte erreicht.

NodeId

Für jedes CAN-Datentelegramm darf es nur einen eindeutigen Absender geben. Doppelt vorkommende Knotenadresse innerhalb eines Netzwerks sind dadurch unbedingt zu vermeiden.

Test:
Überprüfen Sie die Einstellung der Knotenadresse jedes Teilnehmers. Funktioniert die CAN-Kommunikation zeitweise, kann die Adressvergabe durch Aufzeichnen der Boot-Up-Nachrichten bei Einschalten der Geräte überprüft werden. Besteht die Möglichkeit einzelne Geräte aus und wieder einzuschalten, kann zusätzlich ein Vertauschen der Knotenadressen diagnostiziert werden.

Baudrate

Alle Teilnehmer eines Netzwerks müssen zwingend die gleiche Baudrate eingestellt haben. Falls möglich, sollte zusätzlich bei Sondergeräten überprüft werden, ob die Bittiming Parameter (Abtastzeitpunkt, Sync Jump Width, Oszillator) mit den CANopen-Definitionen überein stimmen.

Test:
Überprüfen Sie die Einstellung der Baudrate jedes Teilnehmers. Schließen Sie dazu das Gerät einzeln an einen PC an. Mittels edcTools können Sie nach dem Gerät suchen lassen. Aktivieren Sie dazu das Häkchen "Baudrate suchen" und klicken Sie dann auf "Geräte suchen". Das angeschlossene Gerät erscheint in der Liste und die Baudrate des Geräts wird automatisch im Auswahlfeld am oberen Bildschirmrand angezeigt.

Test der CAN-Verkabelung

Die nachfolgenden Tests können durchgeführt werden um die CAN-Bus Verkabelung zu überprüfen. Gehen Sie dabei strikt nach der gegebenen Reihenfolge vor, da die Tests teilweise voneinander abhängig sind. Beachten Sie zusätzlich dass das Netzwerk nicht aktiv sein sollte (keine Kommunikation).

Netzwerkabschluss und Signalleitungen

Schalten Sie für diesen Test alle CAN-Bus Teilnehmer ab. Die Ergebnisse könnten sonst durch einen aktiven CAN-Transceiver verfälscht werden. Prüfen Sie zunächst ob alle Signalleitungen korrekt angeklemmt sind (zu lange Litzenisolation in Federklemmen => kein Kontakt, High/Low Signal vertauscht usw.).

Test:
Ermitteln Sie den Widerstand zwischen CAN-High und CAN-Low (gegebenenfalls bei jedem Gerät). Liegt der Messwert über einem Widerstand von 65 Ohm, deutet dies auf den Bruch einer Signalleitung oder einen fehlenden Abschlusswiderstand hin. Ist der Messwert kleiner als 50 Ohm, könnte dies auf einen Kurzschluss auf der CAN-Leitung, überzählige Abschlusswiderstände (Achtung: Abschlusswiderstand bereits im CAN-Stick enthalten) oder fehlende Transceiver hinweisen.

Test:
Prüfen Sie den CAN-Bus auf Kurzschlüsse zwischen CAN-Ground und den Signalleitungen. Des Weiteren sollten Sie auf einen Kurzschluss zwischen Schirm des CAN-Bus Kabels und der Signalleitungen prüfen.

Test:
Trennen Sie eine eventuelle Verbindung zwischen Schirm des CAN-Bus Kabels und CAN-Ground und überprüfen Sie dann auf einen Kurzschluss zwischen den beiden.

Topologie

CAN-Bus toleriert innerhalb der Bustopologie nur kurze Stichleitungen. Beachten Sie dies bei der Konzeption und Verkabelung Ihrer Anlage. Die maximale Leitungslänge ist abhängig von der verwendeten Baudrate (siehe oben). Es passiert häufig dass die verlegte Leitungslänge stark unterschätzt wird.

Test:
Messen Sie die tatsächliche Leitungslänge und beachten Sie die Topologieregeln.

Schirmung und Erdung

Die Stromversorgung der Anlage und der Schirm der Kommunikationsleitungen sollten einmalig und niederohmig (nicht verdrillt sondern über Leitungsschellen) beim Netzteil geerdet werden. Jegliche Verbindungen des CAN-Kabels müssen die Signalleitungen, CAN-GND und den Leitungsschirm durchverbinden.

Test:
Messen Sie mit einem DC-Strommeßgerät den Strom zwischen der Masse der Spannungsversorgung und dem Schirm des CAN-Bus Kabels am vom Netzteil entferntesten Ende des Busses. Fließt kein Ausgleichsstrom, ist der Schirm nicht durchgängig verbunden bzw. das Netzteil ist nicht richtig geerdet! Ist das Netzteil in der Mitte des CAN-Netzes angeordnet, so sollte dieser Test an beiden Enden der CAN-Bus Leitung durchgeführt werden.

Test:
Trennen Sie den Schirm an mehreren Stellen auf und messen Sie den Strom zwischen den Verbindungsstücken. Ist ein Stromfluss vorhanden, deutet dies darauf hin dass der Schirm an mehreren Stellen geerdet ist (Erdschleife).

Potentialunterschiede

Für diesen Test muss der Schirm durchgängig sein und es darf kein Stromfluss auf dem Schirm vorhanden sein (vorher testen!).

Test:
Ermitteln Sie die Spannung zwischen Schirm und CAN-GND (Elektronik-Ground wenn kein CAN-GND vorhanden) an jedem CAN-Teilnehmer und notieren diese. Errechnen Sie anhand ihrer Aufzeichnungen den Potentialunterschied zwischen allen Teilnehmern des CAN-Netzwerks. Der maximale Potentialunterschied sollte niemals 5V überschreiten.

Fehler erkennen und lokalisieren

Um Fehler innerhalb eines Netzwerkes zu lokalisieren wird in der Praxis oft ein Teil des CAN-Netzwerks abgehängt und beobachtet, wann der Fehler verschwindet. Hierbei sollte jedoch beachtet werden, dass das Problem teilweise auch nur vermindert bzw. verschleiert werden kann, ohne es zu lösen.
Masseschleifen, Potentialunterschiede, EMV und Signalverfälschungen könnten solche Fehlerquellen darstellen, welche durch Verkleinerung des Netzwerks nicht mehr erkennbar sind. Auch die verringerte Buslast führt dazu dass externe Störungen seltener Effekte auf CAN-Telegramme nehmen können.

Protokollprobleme

Es kann in seltenen Fällen vorkommen dass einzelne Teilnehmer von Fremdherstellern, Protokollprobleme auf dem Bus verursachen. Dies kann z.B. durch fehlerhafte oder unvollständige CANopen-Implementierung, unglückliches Timing im Boot-Up usw. verursacht werden.

Weitere Information finden Sie unter www.can-cia.org.


Sicherheitshinweise

Der sichere Betrieb des Gerätes in der Endanwendung ist grundsätzlich gewährleistet, wenn die Hinweise hinsichtlich Installation und Betrieb in diesem technischen Handbuch und am Gerät beachtet werden.

Der störungsfreie Betrieb setzt entsprechenden Transport und Lagerung nach den entsprechenden Vorgaben voraus (siehe Transport / Lagerung).
Befolgen Sie die Anweisungen für den Aufbau und die Einrichtung genau.

Montage/Demontage darf nur im spannungslosen Zustand erfolgen.

Stellen Sie sicher, dass die Anwendung immer über eine Notabschaltung verfügt (z.B. NOTAUS-Schalter) und diese stets zugänglich ist.

Im Inneren des Gerätes befinden sich berührungsgefährliche Kreise, die bei Kontakt zum Tode führen können.

Die Baugruppe verfügt nicht über eine Überstromschutzeinrichtung. Bei der Installation des Gerätes ist eine geeignete Überstromschutzeinrichtung mit den, dem jeweiligem Gerät entsprechenden Eigenschaften, im Versorgungskreis erforderlich.

Die Baugruppe verfügt nicht über eine Netz-Trennvorrichtung. Bei der Installation der Geräte ist eine geeignete Netz-Trennvorrichtung im Versorgungskreis erforderlich.

Vor dem Einschalten des Gerätes ist unbedingt sicher zu stellen, dass die Netzspannung mit der zulässigen Versorgungsspannung des Gerätes übereinstimmt.
Die Kenndaten des Gerätes können den technischen Daten im Kapitel "Antriebsregler" oder "Erweiterungsmodule", unter der entsprechenden Gerätefamilie und des entsprechenden Gerätes, entnommen werden.

Ein Ausfall der Rückführung oder die Einstellung einer falschen Polarität der Rückführung kann zu ungeregeltem Verhalten führen.

Ungeregeltes Verhalten kann zu Gefahr für Mensch und Maschine führen.

Das Gerät darf nur durch autorisiertes Personal geöffnet bzw. repariert werden.

Öffnen Sie niemals das Gerät und führen Sie keine Reparaturen am Gerät selbst durch. Wenden Sie sich hierzu an den für Sie zuständigen Kundendienst. Die Adressdaten entnehmen Sie dem Abschnitt "Service - Info".

Rückspeisungen kann zur Erhöhung die Zwischenkreisspannung führen.

Sehen Sie eine Schutz der Elektronik des Reglers gegen Rückspeisung vor. Mögliche Schutzmechanismen bei langsamen Spannungsrückspeisungen können durch die Software realsiert werden. ( DEV_UpOff_Stotterbremse)
Schutzmechanismen gegen schnelle Rückspeisungen müssen Hardwareseitig realisiert werden. (Bspw. durch Bremschopper)

Die in diesem technischen Handbuch beschriebenen Produkte sind für den Einbau bestimmte Einzelkomponenten.

In der Endanwendung müssen die folgenden Anforderungen, unter Berücksichtigung des speziellen Einsatzes und den damit geltenden anerkannten Regeln für die Sicherheit und Funktion, erfüllt sein:

  • Anforderungen für den Bediener-Berührschutz
  • Anforderung für den Brandschutz
  • Anforderung für Luft- und Kriechstrecken

Stellen Sie vor der Installation sicher, dass die technischen Voraussetzungen erfüllt sind:

  • Überprüfen Sie die Anforderungen an das elektrische Netz und ob das vorhandene Netz geeignet ist.
  • Überprüfen Sie die Anforderungen an die elektrischen Leitungen und stellen Sie die entsprechenden Leitungen bereit.
  • Überprüfen Sie die Eigenschaften der Anschlüsse und konfigurieren Sie die Leitungen entsprechend.

Wählen Sie bitte einen Montage-Ort, der keine Umweltbedingungen aufweist, die außerhalb der zulässigen Bereiche liegen.
Die Kenndaten des Gerätes können den technischen Daten im Kapitel "Antriebsregler" oder "Erweiterungsmodule", unter der entsprechenden Gerätefamilie und des entsprechenden Gerätes, entnommen werden.

Verwenden Sie ausschließlich die mitgelieferten bzw. von uns freigegeben Ersatz- und Zubehörteile.

Der Einsatz nicht zugelassener Ersatz- und Zubehörteile kann die Gerätefunktion und Ihre Sicherheit erheblich beeinträchtigen.

Ein sicherer Betrieb des Gerätes ist nicht mehr möglich wenn:

  • das Gehäuse, durch zu hohe mechanische Beanspruchung beschädigt ist
  • Wasser in das Geräteinnere gelangt ist
  • Gegenstände durch die Lüftungsöffnungen in das Geräteinnere gelangt sind
  • Rauch aus dem Geräteinneren kommt
  • die Netzanschlussleitung beschädigt ist
  • es nicht mehr einwandfrei arbeitet

Im Zweifel kontaktieren Sie den für Sie zuständigen Kundendienst. Die Adressdaten entnehmen Sie dem Abschnitt "Service - Info".

Vertauschen Sie nicht die Spannungsversorgungsleitungen!

Die gesamte Motorschaltung ist auf gepolte Gleichspannung ausgelegt. Wenn Sie den Plus- und den Minuspol vertauschen, nimmt die Elektronik einen schweren Schaden.

Die Spannungsversorgungen müssen ausreichend dimensioniert sein. Die Leistungsaufnahme der Geräte entnehmen Sie den technische Daten.
Die Kenndaten des Gerätes können den technischen Daten im Kapitel "Antriebsregler" oder "Erweiterungsmodule", unter der entsprechenden Gerätefamilie und des entsprechenden Gerätes, entnommen werden.

Für die Elektronik ist eine Spannungsversorgung ohne Schwankungen empfehlenswert. Nach den CANopen-Protokollen ist darüber hinaus eine Abschaltung des Gerätes vorgesehen, wenn die Versorgungsspannung 9 V unterschreitet.

Achten Sie darauf, dass die Netzanschlussleitung so verlegt wird, dass Personen nicht über das Kabel stolpern oder Gegenstände die Netzanschlussleitung beschädigen können.

Das Gerät darf nur an einer Versorgungsspannung mit einwandfreiem Schutzleiter angeschlossen werden. Bei fehlerhaftem Schutzleiteranschluss werden die Sicherheits- und EMV-Anforderungen nicht eingehalten.

Die Geräte dürfen nur von qualifiziertem Personal nach den entsprechenden Normen eingebaut und eingerichtet werden.

Bitte beachten Sie die regionalen Normen im Einsatzgebiet der Komponenten. Beachten Sie bitte auch die Sicherheitshinweise der zu steuernden Geräte und Maschinen.

Als qualifiziert gilt eine Person dann,

  • wenn sie aufgrund ihrer Erfahrung mögliche Gefahren erkennen und vermeiden kann,
  • wenn ihr die Unfallverhütungsvorschriften für die eingesetzten Geräte bekannt sind,
  • wenn sie gemäß den Normen Stromkreise und Geräte in Betrieb setzen und installieren darf.

Da das Gerät Wärme erzeugt, ist in der Endanwendung für eine ausreichende Luftzirkulation zum Abtransport der Wärme zu sorgen.

Vermeiden Sie andauernd hohe Luftfeuchtigkeit und Kondenswasserbildung. Schützen Sie das Gerät vor Feuchtigkeit und Chemikalien.

Schalten Sie wenn ein beschriebener Fehler vorliegt sofort Ihr Gerät aus, ziehen Sie den Stecker der Anschlussleitung aus der Versorgungsspannung und kontaktieren Sie umgehend den für Sie zuständigen Kundendienst. Die Adressdaten entnehmen Sie dem Abschnitt "Service - Info".

Wir weisen ausdrücklich darauf hin, dass Produkthaftungs- und Gewährleistungsansprüche nicht geltend gemacht werden können, wenn das Gerät nicht entsprechend den beschriebenen Hinweisen in dieser Betriebsanleitung und den Hinweisen auf dem Gerät sowie bestimmungswidrig betrieben wird!


Motor

Die Leistungsversorgungsspannung kann teilweise lebensgefährlich hoch sein. Um Verletzungen oder Kurzschlüsse am Gerät zu vermeiden, schließen Sie die Spannungsversorgung zu diesem Zeitpunkt noch nicht an.

Bürstenloser Motor (BLDC)

Bei einem bürstenlosen Motor werden die 3 Motorphasen A, B und C an den entsprechenden Pins auf dem Motor-Stecker angeschlossen. Demzufolge kommt Phase A in den Pin Ma, Phase B in den Pin Mb und Phase C in den Pin Mc.
Bevor die Motorleitungen angeschlossen werden, sollten Sie sich noch einmal in der Dokumentation ihres Motors vergewissern, welche die entsprechenden Leitungen sind. Werden die Phasen nicht korrekt angeschlossen, wird sich der Motor nicht drehen.

Informationen zum Kommutierungsschema sind im Applikation Note AN_CommutationScheme.

Bürstenbehafteter Motor (DC)

Bei einem bürstenbehafteten Motor (DC) werden die 2 Motorleitungen Plus(+) und Minus(-) an die Pins auf dem Motor-Stecker angeschlossen. Dort kommt die Plusleitung in den Pin Ma und die Minusleitung in den Pin Mb.

Schließen sie die Minusleitung nicht an Pin GND an! Der Motor wird sich dann nicht drehen.
Normalerweise kann man bei bürstenbehafteten Motoren die Anschlüsse anhand ihrer Farbe identifizieren. Standardmäßig ist dort die Plusleitung rot und die Minusleitung schwarz.

Schrittmotor

Bei einem Schrittmotor werden die 4 Motorphasen A, B, C und D an den entsprechenden Pins auf dem Motor-Stecker angeschlossen. Demzufolge kommt Phase A in den Pin Ma, Phase B in den Pin Mb, Phase C in den Pin Mc und Phase D in den Pin Md.
Bevor die Motorleitungen angeschlossen werden, sollten Sie sich noch einmal in der Dokumentation ihres Motors vergewissern, welche die entsprechenden Leitungen sind. Werden die Phasen nicht korrekt angeschlossen, wird sich der Motor nicht drehen.


Versorgungsspannung

Beachten Sie vor dem Anschließen die Sicherheitshinweise für die Installation!
Es müssen beide Versorgungsspannungen angeschlossen sein, damit der Regler korrekt läuft.

Vertauschen Sie nicht die Spannungsversorgungsleitungen!

Die gesamte Motorschaltung ist auf gepolte Gleichspannung ausgelegt. Wenn Sie den Plus- und den Minuspol vertauschen, nimmt die Elektronik einen schweren Schaden. Bei der Spannungsversorgung des Antriebsreglers wird der Einsatz von jeweils zwei getrennt angelegten Quellen für z.B. die Klemmen X1 und X2 empfohlen (getrennte Netzteile).

Leistung Up

Die Versorgungsspannung wird über die Pins der Power-Stecker verbunden. Dabei wird die Plusleitung an Pin +Up und die Masseleitung an Pin GND angeschlossen.

Elektronik Ue

Die Versorgungsspannung wird über die Pins der I/O-Stecker verbunden. Dabei wird die Plusleitung an Pin +Ue und die Masseleitung an Pin GND angeschlossen.

Wenn Leistung und Elektronik aus dem selben Netzteil gespeist werden kann es zu Rückspeisungen bei Bremsvorgängen kommen.

Sehen Sie eine Schutz der Elektronik des Reglers gegen Rückspeisung vor. Mögliche Schutzmechanismen bei langsamen Spannungsrückspeisungen können durch die Software realsiert werden. ( DEV_UpOff_Stotterbremse)
Schutzmechanismen gegen schnelle Rückspeisungen müssen Hardwareseitig realisiert werden. (Bspw. durch Bremschopper)

+U5V Geberversorgung

Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Verdrahtung

Die Leistungsseite und die Elektronikseite sind auf dem Regler nicht galvanisch getrennt. Die Masse für die Elektronik und für die Leistung sind intern verbunden.

Belegung der Versorgungsstecker

Prinzipiell sollten bei den Antriebsreglern der EDCFamilien die Versorgungsstecker nicht unter Spannung eingesteckt werden. Lässt sich das jedoch bei einer Anwendung nicht vermeiden, so sollten einige Regeln bei der Belegung der Steckverbinder (auch in den Kabelbäumen zum Gerät) beachtet werden:
  • die Masse muss immer zuerst angeschlossen werden
  • Steckverbinder mit voreilendem Masse Pin sind zu bevorzugen
  • sind Steckverbinder mit zwei unterschiedlichen Versorgungsspannungen (z.B. Up = 48VDC, Ue = 24VDC) belegt, so muss die Anordnung auf dem Steckverbinder so gewählt werden, dass die beiden Spannungen nicht vor der Masse kontaktieren
ungünstige Belegung eines Steckverbinders

Wird der Steckverbinder, wie im Bild dargestellt, schräg eingesteckt, kontaktieren beide Versorgungsspannungen (rote Litzen) vor der Masseleitung (blaue Litze). Sind die beiden Versorgungsspannungen unterschiedlich z.B. Up = 48VDC und Ue = 24VDC, so können Ladeströme, durch die im Gerät integrierten Elektrolytkondensatoren, von der höheren Spannung Up in die Spannung Ue fließen. Dabei kann das Gerät selbst oder Geräte in der Peripherie beschädigt werden.

günstige Belegung eines Steckverbinders

Wird der Steckverbinder wie im Bild dargestellt schräg eingesteckt, kontaktieren zunächst die Versorgungsspannung (rote Litzen rechts). Danach kontaktiert die Masseleitung. Zuletzt kontaktiert die Versorgungsspannung auf dem linken Pin. Dadurch wird sichergestellt, dass die Ladeströme immer zur Masse fließen und nie zwischen den Versorgungsspannungen.


Rückführung

Die Leistungsversorgungsspannung kann teilweise lebensgefährlich hoch sein. Um Verletzungen oder Kurzschlüsse am Gerät zu vermeiden, schließen Sie die Spannungsversorgung zu diesem Zeitpunkt noch nicht an.

Hallsensoren

Bei einem bürstenlosen Motor werden die Motorwicklungen nicht über Schleifbürsten sondern über Hallsensoren angesteuert. Damit eine Drehbewegung stattfindet, müssen die Hallsensoren in einer festgelegten Reihenfolge die entsprechenden Motorwicklungen ansteuern.

Es ist unbedingt notwendig, dass die Hallsensoren korrekt angeschlossen sind. Sonst wird sich der Motor nicht oder mit dem reduzierten Drehmoment drehen
Bevor die Hallsensoren angeschlossen werden, sollten Sie sich noch einmal in der Dokumentation Ihres Motors vergewissern, welche die entsprechenden Leitungen sind.

Die 3 Hallsensoren H1, H2 und H3 werden an den entsprechenden Pins auf dem Hall-Stecker angeschlossen. Somit kommt Sensor H1 in den Pin H1, Sensor H2 in den Pin H2 und Sensor H3 in den Pin H3. Die 5V Versorgungsspannung für die Hallsensoren wird an Pin +U5V und die Masseleitung an Pin GND angeschlossen. Sollte Ihr Motor zusätzlich über negierte Hallsensorspuren verfügen, schließen Sie diese an Pin /H1, Pin /H2 und Pin /H3 an.

Encoder

Verfügt ihr Motor über einen inkrementellen Encoder, werden die Leitungen an den entsprechenden Pins auf dem Encoder-Stecker angeschlossen.
Die meisten Encoder haben 2 Spuren (Spur A und Spur B) und einen Index. Spur A wird am Pin A, Spur B am Pin B und der Index am Pin Inx angeschlossen. Die 5V Versorgungsspannung für den Encoder wird an Pin +U5V und die Masseleitung an Pin GND angeschlossen. Sollte Ihr Motor zusätzlich über negierte Encoderspuren verfügen, schließen Sie diese an Pin /A, Pin /B und Pin /Inx an.


Bremschopper

Allgemein

Wenn man einen Motor abbremst, wird die Bewegungsenergie wieder freigesetzt. Im 4Q-Betrieb wird die frei werdende Bewegungsenergie als elektrische Energie in den Zwischenstromkreis der Netzversorgung zurückgeführt. Wenn keine anderen Verbraucher (z.B. andere Regler) diese Energie entnehmen, kann sich die Spannung im Zwischenstromkreis auf einen Wert erhöhen, der Schaden an elektrischen Schaltungen verursachen kann. In diesem Fall, muss ein angemessen ausgelegtes, externes Überspannungsschutzmodul verwendet werden, um Schäden zu verhindern. Diese Überspannungsschutzmodule (z.B. ENGEL ERL-L40) schließen bei Überschreiten eines bestimmten Spannungswertes die Leitungen über einen Widerstand kurz und dissipieren so die überschüssige Energie als Wärme. Langsame Spannungsanstiege können von dem Regler selbst erkannt werden und zur Abschaltung des Motors führen. Schnelle Spannungsanstiege können von dem Überspannungsschutzmodul erkannt und in Wärme umgewandelt werden. Dennoch ist nicht ausgeschlossen, dass sehr schnelle Spannungsanstiege zur Beschädigung des Gerätes führen. Da geringe Schwankungen normal sind, ist es wichtig, dass der Regler eine höhere Spannung vertragen kann, als das Netzteil maximal liefert.

Verdrahtung

Gemeinsame Versorgung +Ue und +Up:

Gemeinsame Versorgung + Ue und +Up ohne Rückspeisung:

Getrennte Versorgung +Ue und +Up:

Getrennte Versorgung +Ue und +Up mit erhöhter Bremsleistung (Imax = 2 x 70A):


Magnetischer Encoder-Chip

Folgende Punkte müssen bei der Montage des Reglers mit dem magnetischen Encoder-Chip beachtet werden:
  1. Die Messinghülse wird empfohlen, um den Magneten magnetisch von der Motorwelle zu entkoppeln.
  2. Der empfohlene Abstand zwischen dem Sensorchip und dem Magneten beträgt 0,5 mm.
  3. Der Magnet muss zentriert auf der Welle aufgebracht werden, und direkt mittig unter dem Sensorchip platziert werden.
Empfohlener Magnettyp: NdFeB-N35H

Die Abmaße der jeweiligen Leiterplatte entnehmen Sie bitte der aktuellen *.dxf Datei des Gerätes.

Zoom:

Falsche Montage des Reglers / Magnetes am Motor kann dazu führen, dass der Motor nicht korrekt durch den Regler angesteuert wird.


Inhalt - edcTools

Einführung

Kommunikationsaufbau

DC Status

DC Konfiguration

DC PID

DC Oszilloskop

DC Steuerung

MPU2

Kommunikationskonfiguration

CAN Konfiguration

Firmwareupdate


Einführung

Beschreibung

Mit dem Programm edcTools soll die Inbetriebnahme der ENGEL EDC-Geräte unterstützt werden. Dazu verwendet das Programm den CAN-Bus als Kommunikationsschnittstelle zwischen den Geräten und dem Rechner. Dadurch dass edcTools auf den ENGEL-Parametern basiert, ist die Inbetriebnahme von Geräten anderer Hersteller nicht möglich. Für den Zugriff auf den CAN-Bus wird ein Schnittstellenadapter benötigt: der CAN-Stick. Der CAN-Stick wird an einen USB-Anschluss des Rechners angeschlossen und wandelt die Kommandos des Programms in CAN-Nachrichten um und sendet diese an die EDC-Geräte. Schnittstellenadapter von anderen Herstellern werden von edcTools nicht unterstützt.

Start der Applikation

Die edcTools werden immer mit dem Programm PLC mitgeliefert. Beide werden zusammen auf dem PC installiert. Nach der Installation des Programms befindet sich die entsprechende Verknüpfung auf dem Desktop. Nach dem Start von edcTools wird das folgende Fenster gezeigt.

Tools

Die folgenden Tools stehen im edcTools zur Verfügung:

DC Status | Zeigt den aktuellen Status des EDC-Gerätes (u.a. Sollwerte, Istwerte, Begrenzungen, I/O's, Zustand und MPU-Status)
DC Konfiguration | Konfiguriert die Grundparameter des EDC-Gerätes (u.a. Motortyp, Rückführung, Drehgeberauflösung, Funktion der digitalen Eingänge und Ausgänge, Begrenzungen)
DC PID | Setzt die Parameter der PI- und PID-Regler des EDC-Gerätes
DC Oszilloskop | Zeichnet Daten vom EDC-Gerät auf und visualisiert diese (z.B. Drehzahl, Motorstrom, u.s.w.)
DC Steuerung | Ermöglicht Vorgabe und Anfahren von zehn verschiedenen Datensätzen (Geschwindigkeit, Position, Beschleunigung und Verzögerung)
MPU2 | Ermöglicht das Kompilieren, Übertragen auf das Gerät und Steuern eines MPU Programms.
Kommunikationskonfiguartion | Konfiguriert die Kommunikationsparameter DS301 des EDC-Geräts(u.a. RxPdo, TxPdo und NMT)
CAN Konfiguration | Setzt die CAN-Parameter des Gerätes (NodeId, CAN-Baudrate, Autooperational)
Firmwareupdate | Aktualisiert oder ändert die Firmware des ENGEL-Gerätes

Sprache

Das edcTools unterstützt derzeit zwei Sprachen: Englisch und Deutsch. Um die Sprache zu ändern, wählen Sie die Option Konfiguration auf der Menüleiste und dann Einstellungen. Die Einstellungen des edcTools werden erst nach dem Neustart des Programms geändert.


Kommunikationsaufbau

Es gibt zwei Möglichkeiten, die Kommunikation mit dem Gerät aufzubauen: manuell und durch Scannen. In beiden Fällen muss man die richtige Baudrate des CAN-Busses definieren (Auswahlfeld Baudrate). Die Standardbaudrate für alle ENGEL-Geräte ist 125 kBit/s. Das Auswahlfeld SDO für Kommunikation definiert den COB-ID-Typ, der für die Kommunikation mit dem Gerät verwendet wird. SDO1 bedeutet, dass das Programm 11-bit CAN-ID (CAN base frame) verwendet. Bei SDO2 wird eine 29-bit CAN-ID (CAN extended frame) benutzt. Ist die Option SDO2 + SDO1 gewählt, entscheidet das Programm selbst, welche COB-ID am besten passt. Um ein bestimmtes Gerät zu der Geräteliste hinzufügen, muss man in dem Feld KnotenID die richtige Adresse des Gerätes eingeben und die Taste Gerät verbinden drücken. Ist das Gerät nicht erreichbar, wird die folgende Information mit einigen Hinweisen zur Diagnose angezeigt.

Die Geräte können auch durch das Scannen des Busses gefunden werden. Um den Scan-Vorgang zu starten muss man die Taste Geräte suchen drücken. Ist die Baudrate des CAN-Busses nicht bekannt, sollte man die Option Baudrate suchen setzen und das Scannen erneut durchführen. Die gefundenen Geräte werden auf der Geräteliste gezeigt. Durch die Markierung auf der Geräteliste wählt man das aktive Gerät. Die Firmwareversion und der Gerätekode werden auf dem Panel Geräteinformation unter der Geräteliste angezeigt.

Über den Button Mehr können erweiterte Geräteinformationen angezeigt und in die Zwischenablage kopiert werden.

Das Programm edcTools ermöglicht auch eine Vorbereitung der Konfiguration ohne Verbindung mit dem Gerät. Mit der Taste Virtuelles Gerät hinzufügen (offline) kann man ein virtuelles Gerät DSA (virtual) hinzufügen. Hierbei steht allerdings nur das Tool DC Konfiguration zur Verfügung. Die restlichen Tools bleiben inaktiv.


DC Status

Funktion

Das Tool DC Status zeigt den aktuellen Status des EDC-Gerätes (u.a. Sollwerte, Istwerte, Begrenzungen, I/O's, Zustand und MPU-Status). Die Werte im Fenster werden zyklisch (jede 100ms) vom Gerät abgefragt. Die konstanten Werte, die sich auf dem Panel Geräteinformationen befinden, werden nur einmalig (beim Öffnen des Fensters) vom Gerät abgelesen.

Tabs

  • Basis - zeigt die aktuellen Basis Informationen über das Gerät an (Strombegrenzungen, MPU Informationen, etc.)

  • Regelkreis - zeigt aktuelle Werte der Regelkreise an (Targetstrom, Kommandostrom, etc.)

  • Rückführung - zeigt aktuelle Werte zu den Rückführungen an (Indexposition, Indexpulse, etc.)

Parameterhilfe

Nach dem Klicken mit der rechten Maustaste auf dem entsprechenden Wert des Parameters wird ein Kontextmenü gezeigt. Wählen Sie die Funktion Parameterhilfe, um die genaue Beschreibung des Parameters zu öffnen.


DC Konfiguration

Funktion

Das Tool DC Konfiguration ermöglicht es die Konfiguration der Grundparameter des EDC-Gerätes (u.a. Motortyp, Rückführung, Drehgeberauflösung, Funktion der digitalen Eingänge und Ausgänge, Begrenzungen) durchzuführen. Beim Öffnen des Fensters werden die aktuelle Werte vom EDC-Gerät abgelesen. Die Übertragung der Parameterwerte findet nach dem Drücken der Taste Setzen statt.

Beschreibung der Tasten:
  • Speichern im Gerät - die im Tool gesetzten Parameterwerte werden zum Gerät geschickt und in einem internen EEPROM (nichtflüchtiger Speicher) gespeichert
  • Defaultwerte im Gerät setzen - alle Parameter vom 0x3000 Bereich (im Gerät und im Tool) werden auf Defaultwert gesetzt. Dabei werden die Werte nicht im EEPROM gespeichert
  • Defaultwerte - alle Parameter im Tool werden auf Defaultwert gesetzt. Die Parameter im Gerät bleiben unverändert
  • Setzen - die im Tool gesetzte Parameterwerte werden zum Gerät übertragen

Tabs

Die Parameter des Gerätes wurden auf den Tabs nach Funktion gruppiert. Die folgenden Tabs sind momentan verfügbar:
  • Basis - beinhaltet die Basisparameter des EDC-Gerätes, wie Motortyp, Motorpolarität, Rückführungen und Informationen über Motor und Drehgeber. Das Panel Betriebsart, Freigabe & Sollwerte ist standardmäßig deaktiviert und sollte nur dann aktiviert werden, wenn diese Parameter im Gerät gespeichert werden sollen. Zu Testzwecken kann man das Gerät mit dem Tool DC Steuerung ansteuern.
  • Rückführung - beinhaltet die Parameter für die Einstellung der unterschiedlichen Encoder, wie z.B. Inkrementaler, SSI, SPI , virtueller und Quasi Absolut Encoder. Außerdem sind verschiedene Tuningfunktionen in diesem Tab verfügbar.
  • Strom - beinhaltet die Parameter für die Strombegrenzung (statische und dynamische), Stromsollwertquelle und die Stromrampen
  • Drehzahl - beinhaltet die Parameter für den Drehzahlmodus (VEL) und Positioniermodus (POS), wie z.B. Drehzahlsollwertquelle, Drehzahlbegrenzung, Rampen und Blockierungsüberwachung
  • SDrehzahl - beinhaltet die Parameter für den Drehzahlmodus ohne Rampen (SVEL), wie z.B. SDrehzahlsollwertquelle und SDrehzahlbegrenzung
  • Positionierung - beinhaltet die Parameter für den Positioniermodus (POS), wie z.B. Schleppfehlereinstellungen, Positionsbegrenzung und Einstellungen von Positionerreicht
  • Referenzierung - beinhaltet die Parameter, die notwendig sind, um eine Referenzfahrt durchzuführen, wie z.B. Referenzierungsmethode, Geschwindigkeiten und Offsets
  • PID-Regler - beinhaltet die Parameter der PI- und PID-Regler des EDC-Gerätes. Sowohl die Schrittweite der einzelnen Werte als auch der prozentuale Anstieg der Parametergruppe kann man im Kontextmenü anpassen. Das Kontextmenü wird nach dem Klicken mit der rechten Maustaster auf der entsprechenden Taste gezeigt.

  • Bremsmanagement - beinhaltet die Parameter des Bremsmanagements
  • Faktorgruppe - beinhaltet die Parameter der Faktorgruppe. Mit den Parametern kann man die Einheiten der Parameter anpassen
  • E/A - beinhaltet die Parameter, die sowohl die Zuordnung der digitalen Eingänge und Ausgänge zu den bestimmten Funktionen, als auch die Einstellungen der analogen Eingänge ermöglichen
  • Sonstige - beinhaltet sonstige Parameter, wie z.B. PWM-Frequenz und PWM-Modus.
  • Benutzer - ermöglicht die Eingabe spezifischer Parameter, die standardmäßig nicht im Tool DC Konfiguration vorhanden sind

  • Export - ermöglicht den Export der Parameter in unterschiedlichen Formaten in eine Datei. Neben den fest definierten Formaten (PC Python-Skript, MPU2 Programm, MPU2 Modul oder CSV-Datei) gibt es eine Möglichkeit ein eigenes Exportformat zu definieren. Die exportierte Datei kann man nicht wieder importieren oder im edcTools öffnen (für diesen Zweck steht die PAR-Datei zur Verfügung). Bei der aktivierten Option Speichern mit Parameterdatei werden die Parameter automatisch mit der PAR-Datei auf dem PC gespeichert. Durch ein Exportfilter entscheidet man, ob alle oder nur geänderte Parameter exportiert werden sollen.

Tuning

Die verschiedenen Tuningfunktionen werden je nach Reglertyp, Motortyp und Rückführung verfügbar. Das Tuning soll helfen die Einstellung der Rückführung an den Motor anzupassen. Es stehen dazu folgende Funktionen zur verfügung:

  • Ermittle Tuningstrom - Ermittelt einen Tuningstrom. Der Strom wird bei den verschiedenen Tunings verwendet. Er kann auch manuell eingegeben werden. Funktioniert nur, wenn der Motor über einen Encoder verfügt.
  • Ermittle Motorpolanzahl - Ermittelt die Polanzahl eines BLDC Motors. Funktioniert nur, wenn der Motor über einen Encoder verfügt und die Auflösung des Encoders korrekt eingestellt ist.
  • Ermittle Encoderauflösung - Ermittlet die Encoderauflösung. Funktioniert nur, wenn die Motorpolanzahl korrekt eingestellt ist. Zu hohe oder zu niedrige Tuningströme können den Wert verfälschen.
  • Prüfte Drehzahlabweichung - Prüft die Drehzahlabweichung in positiver und negativer Richtung bei dem eingestellten Tuningstrom.
  • Prüfe korrekte HALL Verkabelung - Prüft die Verkabelung der HALL Sensoren zu den Motorphasen und schlägt Änderungen vor, wenn notwendig.
  • Ermittle HALL Signal Zuordnung - Ermittelt die softwareseitige Zuordnung der HALL Sensoren zu den Motorphasen. Dadurch wird ein Tauschen der HALL Signale bzw. Motorphasen überflüssig.
  • Kommutierungsabgleich - Ermittelt die Kommutierungs-Referenzposition. Nur für Sin/Cos oder Magnetencoderchip Geräte.
  • Optimiere Sensorsignale - Optimiert die Sensorsignale des Sin/Cos- bzw. Magnetencoderchip-Gebers. Nur für Sin/Cos oder Magnetencoderchip Geräte.
  • Prüfe Positionsabweichung - Prüft die Positionsabweichung. Nur für Sin/Cos oder Magnetencoderchip Geräte.
  • Kommutierungsabgleich löschen - Löscht die Kommutierungs-Referenzposition. Nur für Sin/Cos oder Magnetencoderchip Geräte.
  • Sensorsignal-Tuning zurücksetzen - Löscht die Sensorsignal-Optimierung. Nur für Sin/Cos oder Magnetencoderchip Geräte.

Tunings werden dazu führen dass der Motor sich ruckartig bewegt!
Stellen Sie sicher, dass der Motor richtig befestig ist, die Welle freif drehbar ist und die Anwendung immer über eine funktionierde Notabschaltung verfügt (z.B. NOTAUS-Schalter) und diese stets zugänglich ist.

Ein zu hoher Tuningstrom kann den Motor beschädigen. Der Tuningstrom darf den maximal zulässigen Nennstrom des Motors nicht überschreiten.

Konfiguration auf dem PC speichern / vom PC öffnen

Das Tools ermöglicht die vorbereitende Konfiguration des Gerätes auf dem Rechner als PAR-Datei zu speichern und wieder vom PC zu öffnen. Um die Konfiguration der Parameter als eine PAR-Datei zu speichern, wählen Sie Datei -> Speichern als.

Um die Konfiguration wieder aus einer PAR-Datei im Tool zu öffnen, wählen Sie Datei -> Laden.

Geräteaktionen

Auf der Menüleiste des Fensters unter Gerät befinden sich verschiedene Aktionen, die ausgeführt werden können. Die folgende Aktionen sind verfügbar:
  • Lesen der Parameter aus dem Gerät - alle im Tool verfügbaren Parameter werden aus dem Gerät gelesen
  • Schreiben der Parameter ins Gerät - alle im Tool verfügbaren Parameter werden ins Gerät geschrieben
  • Speichern der Parameter im Gerät - alle im Tool verfügbaren Parameter werden ins Gerät geschrieben und dann gespeichert
  • Setzen der Parameter auf Defaultwerte (ohne zu Speichern) - alle Parameter des 0x3000 Bereichs (im Gerät und im Tool) werden auf Defaultwert gesetzt. Dabei werden die Werte nicht im EEPROM gespeichert.
  • Zurücksetzen der 3000h Parameter auf Defaultwerte - alle Parameter des 0x3000 Bereichs (im Gerät und im Tool) werden auf Defaultwert gesetzt. Dabei werden die Werte auch im EEPROM gespeichert.
  • Zurücksetzen der Kommunikationsparameter auf Defaultwerte - alle Parameter des 0x1000 Bereichs (Kommunikationsparameter) (im Gerät und im Tool) werden auf Defaultwert gesetzt. Dabei werden die Werte auch im EEPROM gespeichert.
  • Zurücksetzen der CANopen-DS402 Parameter auf Defaultwerte - alle Parameter des 0x6000 Bereichs (CANopen-DS402 Parameter) (im Gerät und im Tool) werden auf Defaultwert gesetzt. Dabei werden die Werte auch im EEPROM gespeichert.
  • Löschen des MPU-Programms - das MPU-Programm wird im Gerät gelöscht.
  • CPU des Geräts zurücksetzen - Die CPU des Geräts wird zurückgesetzt. Dabei gehen alle nicht gespeicherten Parameter im Gerät verloren.
  • Auslieferungszustand wiederherstellen - Der Auslieferungszustand wird wiederhergestellt, d.h. die Parameter von allen Bereichen werden auf Defaultwert gesetzt, MPU-Programm wird gelöscht und Autooperational zurückgesetzt.

Hilfe

Nach dem Klicken mit der rechten Maustaste auf dem entsprechenden Wert des Parameters wird ein Kontextmenü gezeigt. Wählen Sie die Funktion Parameterhilfe, um die genaue Beschreibung des Parameters zu öffnen.

Die komplette Parameterliste ist unter Hilfe -> Parameterliste zu finden.


DC PID

Funktion

Das Tool DC PID ermöglicht die Konfiguration der Parameter der PI- und PID-Regler des EDC-Gerätes. Die Parameter aus diesem Tool befinden sich auch in der DC Konfiguration auf dem Panel PID-Regeler. Beim Öffnen des Fensters werden die aktuelle Werte vom EDC-Gerät abgelesen. Die Übertragung der Parameterwerte findet nach dem Drücken der Taste Setzen statt.

Beschreibung der Tasten:
  • Defaultwerte - alle Parameter im Tool werden auf Defaultwert gesetzt. Die Parameter im Gerät bleiben unverändert.
  • Setzen - die im Tool gesetzten Parameterwerte werden zum Gerät geschickt

Sowohl die Schrittweite der einzelnen Werte als auch der prozentuale Anstieg der Parametergruppe kann man im Kontextmenü anpassen. Das Kontextmenü wird nach dem Klicken mit der rechten Maustaste auf der entsprechenden Taste gezeigt.

Parameterhilfe

Nach dem Klicken mit der rechten Maustaste auf den entsprechenden Wert des Parameters wird ein Kontextmenü gezeigt. Wählen Sie die Funktion Parameterhilfe, um die genaue Beschreibung des Parameters zu öffnen.


DC Oszilloskop

Funktion

Das Tool DC Oszilloskop ermöglicht die Aufnahme und die Visualisierung der vom Gerät abgelesenen Daten, wie z.B. Drehzahl oder Motorstrom. Die Aufnahme der Daten startet nach dem Drücken der Taste Start.

Die Parameter, die aufgenommen werden sollen, kann man durch Setzen des entsprechenden Häkchens aktivieren. Die folgenden Optionen sind möglich:
  • Glättung - Die Kurven auf dem Diagramm kann man falls nötig glätten. Es stehen drei Optionen zur Verfügung: no - keine Glättung, sp - Spline-Glättung, bz - Glättung mit Bezier-Kurven. Die Glättung der Kurven ist manchmal notwendig um Rauschen von Signalen zu entfernen (z.B. bei der Aufnahme des Motorstroms).
  • Plot Nr. - die Nummer des Diagramms auf denen die Kurve gezeigt wird. Es stehen 4 Diagramme (0 .. 3) zu Verfügung.
  • Norm. - Normalisierung der Kurven. Unter Normalisierung versteht man die Skalierung des Wertbereiches einer Variablen auf einen Bereich von 0 bis 1. Die Normalisierung kann dazu dienen, Ergebnisse mit unterschiedlicher Skalierung vergleichbar zu machen.
  • FFT - Schnelle Fourier-Transformation. Wenn das Signal ein hochfrequentes Rauschen enthält, können Sie die FFT-Filterungsmethode verwenden. Der Filter entfernt das gesamte Hochfrequenzrauschen und hinterlässt das niederfrequente Nutzsignal.

Die Aufnahmezeit definiert die Dauer der gesamten Aufzeichnung in Millisekunden. Die Abtastzeit ist eine Zeit der zyklischen Abfrage der Parameter in Millisekunden.

Die Aufnahme der Parameter kann man entweder einmal oder zyklisch durchführen. Ist die Option Einmal gesetzt, wird die Aufnahme nur einmalig gemacht. Ansonsten wird die Aufnahme zyklisch durchgeführt. Den Auslöser der Aufnahme kann man zwischen Manuell (die Aufnahme startet nach dem Drücken der Taster Start) und Bei Sollwertsetzen (die Aufnahme startet nach dem Drücken der Taster Start und bei der Änderung des Sollwertes) wählen. Das Setzen des Sollwertes muss innerhalb des Tools erfolgen. Den Start der Aufnahme kann man auch um die Zeit, die sich im Feld Triggerverzögerung befindet, verzögern.

Die Berechnung der Motordrehzahl erfolgt mit der Hilfe der Position.


DC Steuerung

Funktion

Das Tool DC Steuerung ermöglicht die Ansteuerung des EDC-Gerätes. Im Fenster werden dabei auch der aktuelle Status und Istwerte des Gerätes gezeigt.

Beschreibung der Tasten:
  • Fehler löschen - eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor)
  • Halt - es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe auf die Drehzahl 0 ab
  • Quickstop - es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe auf die Drehzahl 0 ab
  • Fortsetzen - Fortsetzen der Bewegung nach QuickStop oder Halt
  • Freigabe - Betrieb der Leistungsstufe des Antriebsreglers freigeben
  • Sperren - Betrieb der Leistungsstufe des Antriebsreglers sperren

Tabs

  • Steuerung - ermöglicht Vorgabe und Anfahren von zehn verschiedenen Datensätzen und Auswahl der Betriebsart. Die Datensätze können in einer automatischen
    Abfolge angefahren werden. Für jeden Datensatz kann eine separate Rampe eingestellt werden. Das Panel ändert sich je nach Betriebsart.

  • Jog - ermöglicht den Jog-Betrieb, d.h. der Antrieb kann per Knopfdruck gesteuert werden. Es können Rampen für die Steuerung angepasst werden. Das Panel ändert sich je nach Betriebsart. Mit der Option "Endstufe sperren nach dem Loslassen der Taste" kann man wählen, ob der Antrieb über Halt (aktives Bremsen) oder Endstufe-Sperren (Ausrollen) gestoppt wird.

  • Homing - ermöglicht den Start, Abbruch, Halt und den Restart der Referenzfahrt und zeigt den aktuellen Referenzierungsstatus des Gerätes.

  • E/A-Steuerung - zeigt den Zustand und ermöglicht die Steuerung der digitalen Ausgängen und die Simulation der digitalen und analogen Eingängen.

  • Sonstiges - ermöglicht die Speicherung der SSI-Encoder-Position und zeigt dessen Status.


MPU2

Funktion

Mit dem Tool MPU2 können MPU Programme kompiliert, auf das Gerät übertragen und gesteuert werden. Auch Statusinformationen, wie z.B. die Größe des Programms oder MPU Fehlercodes werden angezeigt.

Beschreibung der Tasten:
  • Fehler löschen - Löscht den MPU-Fehler.
  • Start - Startet das MPU-Programm wenn noch nicht gestartet oder unterbrochen wurde.
  • Abbruch - Unterbricht das laufende MPU-Programm.
  • Fortsetzen - Nimmt die Fortsetzung des MPU-Programms an der Stelle auf, wo es durch die Taste Abbruch unterbrochen wurde.
  • Löschen - Löscht das MPU-Programm aus dem Gerät.

Tabs

  • Kompilieren & Laden - Mit diesem Tool kann ein MPU-Programm ausgewählt, kompiliert und auf das Gerät übertragen werden. Es können auch bereits kompilierte Programme (*.mx Dateien) auf das Gerät übertragen werden. In dem Textfeld "Nachrichten" wird die Ausgabe des Compilers angezeigt (z.B. die Compiler Version, Globale Variablen oder Fehler). Befindet sich bereits ein MPU-Programm auf dem Gerät, können nur die globalen Variablen für Diagnosezwecke generiert werden. Dafür muss man die dazugehörigen mx-Datei wählen und aller Häkchen in den Optionen entfernen.

  • Globale Variablen - Mit diesem Tool können alle globalen Variablen des MPU-Programms ausgelesen und auch gesetzt werden. Es wird der Name, die Adresse (Index und Subindex), sowie der Wert der Variablen angezeigt. Die Variablen können automatisch gepollt, oder per Tastendruck ausgelesen werden. Es besteht auch die Möglichkeit ausschließlich Benutzer-Variablen anzeigen zu lassen, und Änderung dieser im Gerät zu speichern.


Kommunikationskonfiguration

Funktion

Mit dem Tool Kommunikationskonfiguration können die Kommunikationsparameter und das PDO Mapping für das Gerät eingestellt und auf das Gerät übertragen werden. Die Einstellungen können auch in einer Datei gespeichert und wieder geladen, sowie in verschiedenen Formaten (z.B. als Skript) exportiert werden.

Beschreibung der Tasten:
  • Speichern im Gerät - Schreibt alle in der Oberfläche eingestellten Parameter in das Gerät und speichert sie im EEPROM.
  • Defaultwerte im Gerät setzen - Setzt die Defaultwerte in der Oberfläche und im Gerät. Die Werte werden nicht im EEPROM gespeichert.
  • Defaultwerte- Setzt die Defaultwerte nur in der Oberfläche.
  • Setzen - Überträgt die in der Oberfläche eingestellten Werte in das Gerät.

Tabs

Rx PDO

In diesem Tab können die Einstellungen für die verschiedenen Rx PDOs vorgenommen werden. Auf der linken Seite kann das entsprechende RxPDO gewählt werden. Auf der rechten Seite kann die COB-ID des PDOs angepasst werden. Die Auswahlfelder "ungültig", "kein RTR" und "extended COB-ID" werden direkt als Änderung der COB-ID übernommen. Es lässt sich auch die "Inhibit Time" und die Übertragungsart des PDOs einstellen. In dem Feld mit der Tabelle "Mapping" lässt sich eine Liste mit den zu mappenden Objekten erstellen. Wenn der Index und der Subindex des Objekts eingegeben wird, wird der Name des Objekts automatisch in die Liste eingetragen. Auch die Länge des Objekts muss in der Liste vorgegeben werden. Mit der Checkbox Signed kann eingestellt werden, ob der übertragene Datensatz als vorzeichenbehaftet interpretiert werden soll. Das ist dann notwendig, wenn ein schmaler Datensatz in ein breiteres Objekt geschrieben wird. Wenn beispielsweise der Parameter VEL_DesiredValue (4 Byte) mit einer Länge von 2 Byte im RxPDO gemappt wird, und es soll eine Sollgeschwindigkeit von -1 gesendet werden, kann der Regler ohne die Option Signed nicht entscheiden, ob die gesendete -1 (Hexadezimal 0xFFFF) als 65535 oder als -1 interpretieren werden soll. Ohne die Option Signed wird der Regler die gesendete -1 als 65535 interpretieren. Wenn die Länge des Parameters mit der Länge des gemappten Objekts übereinstimmt, ist die Option Signed nicht notwendig.

Die Länge des gemappten Objekts kann 1, 2 oder 4 Byte betragen. Die Datenlänge des gemappten Objekts kann kürzer sein als die des eigentlichen Parameters aber nicht länger. Bspw. kann das Objekt VEL_DesiredValue (Datenlängen int32 -> 4 Byte) mit einer Datenlänge von 1, 2 oder 4 Byte gemappt werden, das Objekt DEV_Mode (Datenlänge int8 -> 1 Byte) aber nicht mit einer Datenlänge größer 1.

Beschreibung der Tasten:
  • Benutze Quick-Command Mapping - Lädt das Quick-Command Mapping (AN_ENGEL_QuickCommand) für das ausgewählte RxPDO in die Oberfläche.

Tx PDO

In diesem Tab können die Einstellungen für die verschiedenen Tx PDOs vorgenommen werden. Auf der linken Seite kann das entsprechende RxPDO gewählt werden. Auf der rechten Seite kann die COB-ID des PDOs angepasst werden. Die Auswahlfelder "ungültig", "kein RTR" und "extended COB-ID" werden direkt als Änderung der COB-ID übernommen. Es lässt sich auch die "Inhibit Time" und die Übertragungsart des PDOs einstellen. In dem Feld mit der Tabelle "Mapping" lässt sich eine Liste mit den zu mappenden Objekten erstellen. Wenn der Index und der Subindex des Objekts eingegeben wird, wird der Name des Objekts automatisch in die Liste eingetragen. Auch die Länge des Objekts muss in der Liste vorgegeben werden.

Die Länge des gemappten Objekts kann 1, 2 oder 4 Byte betragen. Die Datenlänge des gemappten Objekts kann kürzer sein als die des eigentlich Parameters aber nicht länger. Bspw. kann das Objekt POS_ActualPosition (Datenlängen int32 -> 4 Byte) mit einer Datenlänge von 1, 2 oder 4 Byte gemappt werden, das Objekt DEV_ErrorReg (Datenlänge int16 -> 2 Byte) aber nicht mit einer Datenlänge größer 2.

Beschreibung der Tasten:
  • Benutze Quick-Command Mapping - Lädt das Quick-Command Mapping (AN_ENGEL_QuickCommand) für das ausgewählte TxPDO in die Oberfläche.

Sonstiges

In diesem Tab können sonstige Kommunikationskonfigurationen vorgenommen werden. Zu den sonstigen Einstellungen zählen "SYNC-Signal", "Guarding", "Emergency-Nachricht", "Zeitstempel-Nachricht", die Einstellung für den "Heartbeat" sowie "Reaktion auf Kommunikationsfehler", "Nachricht beim Bootup des Geräts" und "Auto-Operational". Diese Einstellungen sind übergreifend, d.h. sie sind nicht an spezielle PDOs gebunden sondern allgemein gültig.

Genaue Beschreibungen zu den verschiedenen Optionen finden sich in den Kapiteln COP_RxPDO1_CommunicationParameter_HighestSubindexSupported, COP_RxPDO1_CommunicationParameter_TransmissionType, COP_RxPDO1_CommunicationParameter_InhibitTime, COP_CobId_Guarding, COP_CobId_Sync und COP_ConsumerHeartbeatTime_HighestSubindexSupported

NMT

In diesem Tab kann das Network Management (NMT) gesteuert werden.

Beschreibung der Tasten:
  • Start Node - Versetzt das gewählt Gerät in den Operational Zustand.
  • Enter Pre-Operational - Versetzt das gewählte Gerät in den Pre-Operational Zustand.
  • Start Node (Alle) - Versetzt alle Geräte am Can-Bus in den Operational Zustand.
  • Enter Pre-Operational (Alle) - Versetzt alle Geräte am Can-Bus in den Pre-Operational Zustand.

Eine funktionierende PDO-Kommunkaiton setzt den Operational Zustand der Kommunikationsteilnehmer voraus. Die gelbe LED an dem Gerät signalisiert den NMT Zustand des Geräts (leuchtet die LED, ist das Gerät im Pre-Operational Zustand; leuchtet sie nicht, ist das Gerät im Operational Zustand).

Export

In diesem Tab können die Einstellungen in verschiedene Formate exportiert werden. Die Standardformate für den Export sind "PC-Skript", "MPU2 Programm", "MPU2 Modul", "CSV Standard" und "CSV Decimal". Mit der Option "Benutzerspezifisch" lassen sich aber auch benutzerspezifische Formate generieren.

Beschreibung der Tasten:
  • Speichern als - Speichert die Einstellungen in dem gewählten Format (wie angezeigt). Die Option "Speichern mit Parameterdatei" ermöglicht das Speichern der Einstellungen automatisch beim Speichern der Parameter in der MCC-Datei (Menü Datei->Speichern).

Um die Länge der Exportdatei zu verringern und sie übersichtlich zu halten kann die Option "Nur geänderte Parameter" im Exportfilter gewählt werden.


CAN Konfiguration

Funktion

Das Tool CAN Konfiguration ermöglicht die Anpassung der CAN-Parameter, wie NodeId und Baudrate. Beim Öffnen des Fensters werden die aktuellen Werte vom EDC-Gerät abgelesen. Die Übertragung der Parameterwerte findet nach dem Drücken der Taste Setzen statt.

Die KnotenID definiert die CAN-Adresse des Gerätes und die Baudrate die Übertragungsgeschwindigkeit der Nachrichten im CAN-Netzwerk.

Beschreibung der Tasten:
  • Defaultwerte - alle Parameter im Tool werden auf Defaultwert gesetzt. Die Parameter im Gerät bleiben unverändert.
  • Setzen - die im Tool gesetzten Parameterwerte werden zum Gerät übertragen.


Firmwareupdate

Funktion

Das Tool Firmwareupdate ermöglicht ein Update der Firmware im Gerät.

Firmware Update im Fehlerfall

Falls das Gerät nicht mehr erreichbar ist, besteht die Möglichkeit das Gerät im Bootloadermodus mit einer neuen Firmware zu beschreiben. Dazu muss ein virtuelles Gerät im edcTools angelegt werden. Dann läßt sich in dem Feld "Node-ID" eine Knoten Id des zu updatenden Gerätes eintragen. Daraufhin muss das Gerät ausgeschaltet werden. Sobald das Gerät ausgeschaltet ist, muss das Firmware Update gestartet werden. Das Update wartet auf ein Gerät im Bootloadermodus. Wird das Gerät nun eingeschaltet, wird das Firmware Update durchgeführt.

Die Node-ID und die Baudrate des Geräts müssen korrekt eingestellt sein, damit der Firmware Updater das Gerät im Bootloadermodus erreichen kann.


Inhalt - Antriebsregler

Gerätefamilie EDC-B4x

Gerätefamilie EDC-B5x

Gerätefamilie EDC-B6x

Gerätefamilie EDC-E2x

Gerätefamilie EDC-E4x

Gerätefamilie EDC-E5x

Gerätefamilie EDC-E6x

Gerätefamilie EDC-F5x

Gerätefamilie EDC-S4x

Gerätefamilie EDC-S6x


Inhalt - Gerätefamilie EDC-B4x

EDC-B40

EDC-B40-Modul

EDC-B45

EDC-B45-Modul


Inhalt - EDC-B40

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert *3
Artikelnummer | 1504909 (HC Version 1504911)
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 25 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 30 A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 25 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | nein
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH (HC Version) | 110 x 22.5(40) x 77 mm
- Gewicht (HC Version) | 110 (310) g
- Montage | Hutschiene / Wand
- Steckverbinder | Feder-/Schraubklemmen
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 250 us
- Drehzahlregler (SVEL) | 500 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Hall-Sensoren
- Signale | H1,/H1,H2,/H2,H3,/H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal (24V tolerant) | 5 V
- Signal-Typ | differentiell, open collector, single ended
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 6..30 V
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | 0..10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz

*3 Änderungen und Irrtümer vorbehalten.


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | Ma | Motorphase A
 | X1.5 | Mb | Motorphase B
 | X1.6 | Mc | Motorphase C
 | X2.1 | H1 | Hallsensorsignal 1
 | X2.2 | H2 | Hallsensorsignal 2
 | X2.3 | H3 | Hallsensorsignal 3
 | X2.4 | res. | Reserviert
 | X2.5 | res. | Reserviert
 | X2.6 | res. | Reserviert
 | X2.7 | +U5V | 5V Geberversorgung (Hall)
 | X2.8 | /H1 | Hallsensorsignal 1 negiert
 | X2.9 | /H2 | Hallsensorsignal 2 negiert
 | X2.10 | /H3 | Hallsensorsignal 3 negiert
 | X2.11 | res. | Reserviert
 | X2.12 | res. | Reserviert
 | X2.13 | res. | Reserviert
 | X2.14 | GND | Masse Geberversorgung
 | X3.1 | +Ue24V | Versorgungsspannung Elektronik
 | X3.2 | Ain0 | Analoger Eingang 0
 | X3.3 | Din0 | Digitaler Eingang 0
 | X3.4 | Din1 | Digitaler Eingang 1
 | X3.5 | Din2 | Digitaler Eingang 2
 | X3.6 | Din3 | Digitaler Eingang 3
 | X3.7 | GND | Masse Elektronik
 | X3.8 | res. | Reserviert
 | X3.9 | res. | Reserviert
 | X3.10 | CAN Hi | CAN High
 | X3.11 | CAN Lo | CAN Low
 | X3.12 | CAN GND | CAN Ground


Anzeigeelemente

LED | Farbe | Zustand | Beschreibung
LED0 "Power" | grün | leuchtet | Normalbetrieb
 |  | leuchtet nicht | Versorgungsspannung fehlt
 |  | blinkt | Bootloader-Modus (keine Firmware)
LED1 "State" | gelb | leuchtet | CANopen Pre-Operational Zustand (PDOs nicht aktiv)
 |  | leuchtet nicht | CANopen Operational Zustand (PDOs aktiv)
 |  | blinkt | Bootloader-Modus (blinkt bei eingehender Nachricht)
LED2 "Error" | rot | leuchtet | Allgemeiner Fehler
 |  | leuchtet nicht | kein Fehler (Normalbetrieb)
 |  | blinkt | Pulsanzahl 1: Kurzschluss
 |  |  | Pulsanzahl 2: Leistungsspannung fehlt
 |  |  | Pulsanzahl 3: Übertemperatur
 |  |  | Pulsanzahl 4: Kommunikationsfehler

Sind die HEX-Schalter beim Einschalten auf 00h gesetzt, setzt der Regler die Werte der Parameter zurück. Dabei kann man die folgende Sequenz beobachten:

- die grüne LED0 "Power" blinkt 10s im 500ms Takt
- die gelbe LED1 "State" blinkt 4 mal
- beide LED's blinken im 100 ms Takt


Beschaltungsbeispiele

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Bürstenloser Motor

Bürstenbehafteter Motor

Schalter

Potentiometer

SPS - IO Ansteuerung


Abmessungen

ENGEL Elektromotoren AG - Änderungen und Irrtümer vorbehalten


Inhalt - EDC-Bxx

Parameter 1000h (DS301)

Parameter 2000h

Parameter 3000h (DSA)

Parameter 5000h (MPU)


Inhalt - EDC-B40-Modul

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert *3
Artikelnummer | 1504910
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 25 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 30 A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 25 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | nein
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 97.5 x 71 x 13 mm
- Gewicht | 55 g
- Montage | Backplane
- Steckverbinder | Stiftleiste
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 250 us
- Drehzahlregler (SVEL) | 500 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Hall-Sensoren
- Signale | H1,/H1,H2,/H2,H3,/H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal (24V tolerant) | 5 V
- Signal-Typ | differentiell, open collector, single ended
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 6..30 V
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | 0..10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz

*3 Änderungen und Irrtümer vorbehalten.


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | CAN Hi | CAN High
 | X1.2 | CAN Lo | CAN Low
 | X1.3 | res. | Reserviert
 | X1.4 | res. | Reserviert
 | X1.5 | res. | Reserviert
 | X1.6 | res. | Reserviert
 | X1.7 | Din2 | Digitaler Eingang 2
 | X1.8 | Din3 | Digitaler Eingang 3
 | X1.9 | Din0 | Digitaler Eingang 0
 | X1.10 | Din1 | Digitaler Eingang 1
 | X1.11 | Ain0 | Analoger Eingang 0
 | X1.12 | Ain1 | Analoger Eingang 1
 | X1.13 | res. | Reserviert
 | X1.14 | res. | Reserviert
 | X1.15 | res. | Reserviert
 | X1.16 | res. | Reserviert
 | X1.17 | res. | Reserviert
 | X1.18 | res. | Reserviert
 | X1.19 | res. | Reserviert
 | X1.20 | res. | Reserviert
 | X1.21 | res. | Reserviert
 | X1.22 | res. | Reserviert
 | X1.23 | res. | Reserviert
 | X1.24 | res. | Reserviert
 | X1.25 | res. | Reserviert
 | X1.26 | res. | Reserviert
 | X1.27 | H3 | Hallsensorsignal 3
 | X1.28 | /H3 | Hallsensorsignal 3 negiert
 | X1.29 | H2 | Hallsensorsignal 2
 | X1.30 | /H2 | Hallsensorsignal 2 negiert
 | X1.31 | H1 | Hallsensorsignal 1
 | X1.32 | /H1 | Hallsensorsignal 1 negiert
 | X2.1 | +U5V | 5V Geberversorgung (Hall)
 | X2.2 | GND | Masse Geberversorgung
 | X2.3 | res. | Reserviert
 | X2.4 | res. | Reserviert
 | X2.5 | +Ue24V | Versorgungsspannung Elektronik
 | X2.6 | +Ue24V | Versorgungsspannung Elektronik
 | X2.7 | res. | Reserviert
 | X2.8 | res. | Reserviert
 | X2.9 | res. | Reserviert
 | X2.10 | res. | Reserviert
 | X2.11 | Mc | Motorphase C
 | X2.12 | Mc | Motorphase C
 | X2.13 | Mc | Motorphase C
 | X2.14 | Mc | Motorphase C
 | X2.15 | Mb | Motorphase B
 | X2.16 | Mb | Motorphase B
 | X2.17 | Mb | Motorphase B
 | X2.18 | Mb | Motorphase B
 | X2.19 | Ma | Motorphase A
 | X2.20 | Ma | Motorphase A
 | X2.21 | Ma | Motorphase A
 | X2.22 | Ma | Motorphase A
 | X2.23 | GND | Masse Leistung und Elektronik
 | X2.24 | GND | Masse Leistung und Elektronik
 | X2.25 | GND | Masse Leistung und Elektronik
 | X2.26 | GND | Masse Leistung und Elektronik
 | X2.27 | +Up | Versorgungsspannung Leistung
 | X2.28 | +Up | Versorgungsspannung Leistung
 | X2.29 | +Up | Versorgungsspannung Leistung
 | X2.30 | +Up | Versorgungsspannung Leistung
 | X2.31 | FE | Funktionserde
 | X2.32 | FE | Funktionserde


Inhalt - EDC-B45

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert *3
Artikelnummer | 1504948 (HC Version 1504949)
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 40 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 50 A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | nein
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH (HC Version) | 110 x 22.5(40) x 77 mm
- Gewicht (HC Version) | 110 (310) g
- Montage | Hutschiene / Wand
- Steckverbinder | Feder-/Schraubklemmen
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 250 us
- Drehzahlregler (SVEL) | 500 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Hall-Sensoren
- Signale | H1,/H1,H2,/H2,H3,/H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal (24V tolerant) | 5 V
- Signal-Typ | differentiell, open collector, single ended
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 6..30 V
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 2.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | 0..10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz

*3 Änderungen und Irrtümer vorbehalten.


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | Ma | Motorphase A
 | X1.5 | Mb | Motorphase B
 | X1.6 | Mc | Motorphase C
 | X2.1 | H1 | Hallsensorsignal 1
 | X2.2 | H2 | Hallsensorsignal 2
 | X2.3 | H3 | Hallsensorsignal 3
 | X2.4 | res. | Reserviert
 | X2.5 | res. | Reserviert
 | X2.6 | res. | Reserviert
 | X2.7 | +U5V | 5V Geberversorgung (Hall)
 | X2.8 | /H1 | Hallsensorsignal 1 negiert
 | X2.9 | /H2 | Hallsensorsignal 2 negiert
 | X2.10 | /H3 | Hallsensorsignal 3 negiert
 | X2.11 | res. | Reserviert
 | X2.12 | res. | Reserviert
 | X2.13 | res. | Reserviert
 | X2.14 | GND | Masse Geberversorgung
 | X3.1 | +Ue24V | Versorgungsspannung Elektronik
 | X3.2 | Ain0 | Analoger Eingang 0
 | X3.3 | Din0 | Digitaler Eingang 0
 | X3.4 | Din1 | Digitaler Eingang 1
 | X3.5 | Din2 | Digitaler Eingang 2
 | X3.6 | Din3 | Digitaler Eingang 3
 | X3.7 | GND | Masse Elektronik
 | X3.8 | res. | Reserviert
 | X3.9 | Dout0 | Digitaler Ausgang 0
 | X3.10 | CAN Hi | CAN High
 | X3.11 | CAN Lo | CAN Low
 | X3.12 | CAN GND | CAN Ground


Inhalt - EDC-B45-Modul

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1504942
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 40 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 50 A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | nein
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 97.5 x 71 x 13 mm
- Gewicht | 55 g
- Montage | Backplane
- Steckverbinder | Stiftleiste
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 250 us
- Drehzahlregler (SVEL) | 500 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Hall-Sensoren
- Signale | H1,/H1,H2,/H2,H3,/H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal (24V tolerant) | 5 V
- Signal-Typ | differentiell, open collector, single ended
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 6..30 V
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 2.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | +/- 10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | CAN Hi | CAN High
 | X1.2 | CAN Lo | CAN Low
 | X1.3 | res. | Reserviert
 | X1.4 | res. | Reserviert
 | X1.5 | res. | Reserviert
 | X1.6 | res. | Reserviert
 | X1.7 | Din2 | Digitaler Eingang 2
 | X1.8 | Din3 | Digitaler Eingang 3
 | X1.9 | Din0 | Digitaler Eingang 0
 | X1.10 | Din1 | Digitaler Eingang 1
 | X1.11 | Ain0 | Analoger Eingang 0
 | X1.12 | Ain1 | Analoger Eingang 1
 | X1.13 | res. | Reserviert
 | X1.14 | res. | Reserviert
 | X1.15 | res. | Reserviert
 | X1.16 | res. | Reserviert
 | X1.17 | res. | Reserviert
 | X1.18 | res. | Reserviert
 | X1.19 | res. | Reserviert
 | X1.20 | res. | Reserviert
 | X1.21 | res. | Reserviert
 | X1.22 | res. | Reserviert
 | X1.23 | res. | Reserviert
 | X1.24 | res. | Reserviert
 | X1.25 | res. | Reserviert
 | X1.26 | res. | Reserviert
 | X1.27 | H3 | Hallsensorsignal 3
 | X1.28 | /H3 | Hallsensorsignal 3 negiert
 | X1.29 | H2 | Hallsensorsignal 2
 | X1.30 | /H2 | Hallsensorsignal 2 negiert
 | X1.31 | H1 | Hallsensorsignal 1
 | X1.32 | /H1 | Hallsensorsignal 1 negiert
 | X2.1 | +U5V | 5V Geberversorgung (Hall)
 | X2.2 | GND | Masse Geberversorgung
 | X2.3 | Dout0 | Digitaler Ausgang 0
 | X2.4 | res. | Reserviert
 | X2.5 | +Ue24V | Versorgungsspannung Elektronik
 | X2.6 | +Ue24V | Versorgungsspannung Elektronik
 | X2.7 | res. | Reserviert
 | X2.8 | res. | Reserviert
 | X2.9 | res. | Reserviert
 | X2.10 | res. | Reserviert
 | X2.11 | Mc | Motorphase C
 | X2.12 | Mc | Motorphase C
 | X2.13 | Mc | Motorphase C
 | X2.14 | Mc | Motorphase C
 | X2.15 | Mb | Motorphase B
 | X2.16 | Mb | Motorphase B
 | X2.17 | Mb | Motorphase B
 | X2.18 | Mb | Motorphase B
 | X2.19 | Ma | Motorphase A
 | X2.20 | Ma | Motorphase A
 | X2.21 | Ma | Motorphase A
 | X2.22 | Ma | Motorphase A
 | X2.23 | GND | Masse Leistung und Elektronik
 | X2.24 | GND | Masse Leistung und Elektronik
 | X2.25 | GND | Masse Leistung und Elektronik
 | X2.26 | GND | Masse Leistung und Elektronik
 | X2.27 | +Up | Versorgungsspannung Leistung
 | X2.28 | +Up | Versorgungsspannung Leistung
 | X2.29 | +Up | Versorgungsspannung Leistung
 | X2.30 | +Up | Versorgungsspannung Leistung
 | X2.31 | FE | Funktionserde
 | X2.32 | FE | Funktionserde


Inhalt - Gerätefamilie EDC-B5x

EDC-B50

EDC-B55


Inhalt - EDC-B50

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert *3
Artikelnummer | 1507890
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 25 A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 25 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | nein
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 78 x 74 x 28 mm
- Gewicht | 100 g
- Montage | Wand
- Steckverbinder | Feder-/Schraubklemmen, Crimp-Technik
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 250 us
- Drehzahlregler (SVEL) | 500 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Hall-Sensoren
- Signale | H1,H2,H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal | 5 V
- Signal-Typ | open collector, single ended
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 6..30 V
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | 0..10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz

*3 Änderungen und Irrtümer vorbehalten.


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | +Ue24V | Versorgungsspannung Elektronik
 | X1.5 | GND | Masse Elektronik
 | X2.1 | Ain0 | Analoger Eingang 0
 | X2.2 | res. | Reserviert
 | X2.3 | Ain1 | Analoger Eingang 1
 | X2.4 | res. | Reserviert
 | X2.5 | res. | Reserviert
 | X3.1 | CAN Hi | CAN High
 | X3.2 | CAN Lo | CAN Low
 | X3.3 | CAN GND | CAN Ground
 | X4.1 | res. | Reserviert
 | X4.2 | Din0 | Digitaler Eingang 0
 | X4.3 | Din1 | Digitaler Eingang 1
 | X4.4 | Din2 | Digitaler Eingang 2
 | X4.5 | Din3 | Digitaler Eingang 3
 | X4.6 | res. | Reserviert
 | X4.7 | res. | Reserviert
 | X4.8 | res. | Reserviert
 | X4.9 | res. | Reserviert
 | X4.10 | res. | Reserviert
 | X4.11 | res. | Reserviert
 | X4.12 | res. | Reserviert
 | X4.13 | res. | Reserviert
 | X5.1 | H1 | Hallsensorsignal 1
 | X5.2 | H2 | Hallsensorsignal 2
 | X5.3 | H3 | Hallsensorsignal 3
 | X5.4 | res. | Reserviert
 | X5.5 | res. | Reserviert
 | X5.6 | res. | Reserviert
 | X5.7 | res. | Reserviert
 | X5.8 | res. | Reserviert
 | X5.9 | +U5V | 5V Geberversorgung (Hall)
 | X5.10 | GND | Masse Geberversorgung
 | X6.1 | Ma | Motorphase A
 | X6.2 | Mb | Motorphase B
 | X6.3 | Mc | Motorphase C


Steckverbindersysteme

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!
Verarbeitung der Zugfederklemmen Weidmueller BLZF 3.5
Die Antriebsregler der EDC-B5x Reihe verwenden Steckverbinder mit Zugfedertechnik für einbzw. feindrähtige Leiter. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit den Steckverbinder verwendet werden können.

Klemme | Bezeichnung Art.-Nr. | Klemmbereich (Querschnitt d) mm2 |  |  |  | Abisolierlänge mm
 |  | eindrähtig H05(07)V-U | feindrähtig H05(07)V-K | feindrähtig mit AEH | feindrähtig mit AEH und Kunststoffkragen
X1 | BLZF 3.5/180/5 1690450000 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1 | 10
X6 | BLZF 3.5/180/3 1690430000 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1 | 10
Weitere Information finden Sie unter www.weidmueller.com.

Achten Sie darauf, dass die Adern korrekt auf den abisolierten Teil des Leiters und nicht auf die Isolierung geklemmt sind.

Verarbeitung der Crimp-Steckverbinder JST PA-Serie
Die folgende Übersicht zeigt, welche Leiterquerschnitte mit den Steckverbinder der PA-Serie verwendet werden können

Klemme | Bezeichnung / Art.-Nr. | Leiterquerschnitt d [AWG] [mm2] | Max. Durchmesser der Isolierung D [mm] | Abisolierlänge A [mm]
X2 | - Crimp-Gehäuse - PAP-05V-S - Crimp-Kontakt - SPHD-001T-P0.5 - Crimp-Werkzeug - Handzange WC-610 | AWG 22 ... 26 0,13 ... 0,33 | 1,0 ... 1,5 | ~1,5 ... 2
X3 | - Crimp-Gehäuse - PAP-03V-S - Crimp-Kontakt - SPHD-001T-P0.5 - Crimp-Werkzeug - Handzange WC-610 | AWG 22 ... 26 0,13 ... 0,33 | 1,0 ... 1,5 | ~1,5 ... 2
X4 | - Crimp-Gehäuse - PAP-13V-S - Crimp-Kontakt - SPHD-001T-P0.5 - Crimp-Werkzeug - Handzange WC-610 | AWG 22 ... 26 0,13 ... 0,33 | 1,0 ... 1,5 | ~1,5 ... 2
X5 | - Crimp-Gehäuse - PAP-10V-S - Crimp-Kontakt - SPHD-001T-P0.5 - Crimp-Werkzeug - Handzange WC-610 | AWG 22 ... 26 0,13 ... 0,33 | 1,0 ... 1,5 | ~1,5 ... 2
Weitere Information finden Sie unter www.jst.com.

Die Verwendung nicht vom Hersteller spezifizierter Werkzeuge kann die Zuverlässigkeit der Crimp-Verbindung bis hin zum Ausfall beeinträchtigen.


Anzeigeelemente

LED | Farbe | Zustand | Beschreibung
LED0 "Power" | grün | leuchtet | Normalbetrieb
 |  | leuchtet nicht | Versorgungsspannung fehlt
 |  | blinkt | Bootloader-Modus (keine Firmware)
LED1 "State" | gelb | leuchtet | CANopen Pre-Operational Zustand (PDOs nicht aktiv)
 |  | leuchtet nicht | CANopen Operational Zustand (PDOs aktiv)
 |  | blinkt | Bootloader-Modus (blinkt bei eingehenden Nachricht)
LED2 "Error" | rot | leuchtet | Allgemeiner Fehler
 |  | leuchtet nicht | kein Fehler (Normalbetrieb)
 |  | blinkt | Pulsanzahl 1: Kurzschluss
 |  |  | Pulsanzahl 2: Leistungsspannung fehlt
 |  |  | Pulsanzahl 3: Übertemperatur
 |  |  | Pulsanzahl 4: Kommunikationsfehler


Inhalt - EDC-B55

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1511719
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 50 A
- Dauerausgangsstrom*1 | 7 A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | nein
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 78 x 74 x 28 mm
- Gewicht | 100 g
- Montage | Wand
- Steckverbinder | Feder-/Schraubklemmen, Crimp-Technik
Umgebung
- Schutzart | IP20
- Temperaturbereich | -25..55 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..90 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 250 us
- Drehzahlregler (SVEL) | 500 us
- Drehzahlregler (VEL) | 1000, 2000*3 us
- Positionierregler (POS) | 1000, 2000*3 us
Hall-Sensoren
- Signale | H1,H2,H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal | 5 V
- Signal-Typ | Open Collector, Single Ended, 5V Pull Up intern 920 Ohm
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Pegel @Ta = 25°C | -30..5 V
- High-Pegel @Ta = 25°C | 7.5..30 V
Digitale Ausgänge
- Anzahl | 4 (Dout0..3)
- Dauerausgangsstrom | 0.3 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | +/- 10 V, 12 Bit, differentiell, 200 kOhm Eingangsimpedanz
CAN-Bus
- Protokoll | DS301
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1Endstufe aus, 5V Ausgang (Geberversorgung) ist unbelastet
*2Anschlusskabel mit maximal möglichem Leitungsquerschnitt, PWM-Frequenz 25 kHz, Umgebungstemperatur 40 °C, t > 40 °C Derating
*3Standardwert

keine Garantie, da der Wert empirisch ermittelt wurde, bitte beachten Sie die Applikation Notes zur Ermittlung des Dauerstromes


Klemmenbelegung und Abbildung

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | +Ue24V | Versorgungsspannung Elektronik
 | X1.5 | GND | Masse Elektronik
 | X2.1 | +Ain0 | Analoger Eingang 0, Plus
 | X2.2 | -Ain0 | Analoger Eingang 0, Minus
 | X2.3 | +Ain1 | Analoger Eingang 1, Plus
 | X2.4 | -Ain1 | Analoger Eingang 1, Minus
 | X2.5 | res. | Reserviert
 | X3.1 | CAN Hi | CAN High
 | X3.2 | CAN Lo | CAN Low
 | X3.3 | CAN GND | Masse für CAN
 | X4.1 | res. | Reserviert
 | X4.2 | Din0 | Digitaler Eingang 0
 | X4.3 | Din1 | Digitaler Eingang 1
 | X4.4 | Din2 | Digitaler Eingang 2
 | X4.5 | Din3 | Digitaler Eingang 3
 | X4.6 | res. | Reserviert
 | X4.7 | res. | Reserviert
 | X4.8 | res. | Reserviert
 | X4.9 | res. | Reserviert
 | X4.10 | Dout0 | Digitaler Ausgang 0
 | X4.11 | Dout1 | Digitaler Ausgang 1
 | X4.12 | Dout2 | Digitaler Ausgang 2
 | X4.13 | Dout3 | Digitaler Ausgang 3
 | X5.1 | H1 | Hallsensorsignal 1
 | X5.2 | H2 | Hallsensorsignal 2
 | X5.3 | H3 | Hallsensorsignal 3
 | X5.4 | res. | Reserviert
 | X5.5 | res. | Reserviert
 | X5.6 | res. | Reserviert
 | X5.7 | res. | Reserviert
 | X5.8 | res. | Reserviert
 | X5.9 | +U5V | 5V Geberversorgung (Hall)
 | X5.10 | GND | Masse Geberversorgung
 | X6.1 | Ma | Motorphase A
 | X6.2 | Mb | Motorphase B
 | X6.3 | Mc | Motorphase C


Inhalt - Gerätefamilie EDC-B6x

EDC-B60

EDC-B60-Modul

EDC-B65

EDC-B65-Modul


Inhalt - EDC-B60

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1511990
Absolut max. Rating
- Spannung (Zerstörungsgrenze) Up kein Verpolungsschutz | 80 V
- Dauerspannung (Zerstörungsgrenze) Ue kein Verpolungsschutz | 33 V
- Kurzfristige Spitzenspannung < 1s Ue (Zerstörungsgrenze) kein Verpolungsschutz | 37 V
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V*1 | typ. 20 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 15 A
- Dauerausgangsstrom @ Up=24V*2 | 5 A
- Dauerausgangsstrom @ Up=48V*2 | 4.3 A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 12.5, 25*3 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | nein
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 74 x 45.5 x 14 mm
- Gewicht | 30 g
- Montage | Wand
- Steckverbinder | Crimp-Technik
Umgebung
- Schutzart | IP20
- Temperaturbereich | -25..55 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..90 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 250 us
- Drehzahlregler (SVEL) | 500 us
- Drehzahlregler (VEL) | 1000, 2000*3 us
- Positionierregler (POS) | 1000, 2000*3 us
CAN-Bus
- Protokoll | DS301
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein
Geberversorgung (Hall-Sensoren)
- Ausgangsspannung | 5 V
- Maximaler Ausgangsstrom | 0.2 A
Hall-Sensoren
- Signale | H1,H2,H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal | 0..5 V
- Signal-Typ | open collector, single ended
Digitale Eingänge
- Anzahl | 3 (Din0..2)
- Low-Pegel | 0..5 V
- High-Pegel | 8..30 V
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | 0..10 V, 12 Bit, single ended

Änderungen und Irrtümer vorbehalten
*1Endstufe aus, 5V Ausgang (Geberversorgung) ist unbelastet
*2Anschlusskabel mit maximal möglichem Leitungsquerschnitt, PWM-Frequenz 25 kHz, Umgebungstemperatur 40 °C, t > 40 °C Derating
*3Standardwert

keine Garantie, da der Wert empirisch ermittelt wurde, bitte beachten Sie die Applikation Notes zur Ermittlung des Dauerstromes


Klemmenbelegung und Abbildung

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | GND | Masse Geberversorgung
 | X1.2 | +U5V | 5V Geberversorgung (Hall)
 | X1.3 | res. | Reserviert
 | X1.4 | res. | Reserviert
 | X1.5 | H3 | Hallsensorsignal 3
 | X1.6 | H2 | Hallsensorsignal 2
 | X1.7 | H1 | Hallsensorsignal 1
 | X1.8 | CAN Lo | CAN Low
 | X1.9 | CAN Hi | CAN High
 | X1.10 | Din2 | Digitaler Eingang 2
 | X1.11 | Din1 | Digitaler Eingang 1
 | X1.12 | Din0 | Digitaler Eingang 0
 | X1.13 | Ain0 | Analoger Eingang 0
 | X1.14 | GND | Masse Elektronik
 | X1.15 | +Ue | Versorgungsspannung Elektronik
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | GND | Masse Leistung
 | X2.3 | Ma | Motorphase A
 | X2.4 | Mb | Motorphase B
 | X2.5 | Mc | Motorphase C


Anzeigeelemente

LED | Farbe | Zustand | Beschreibung
LED0 "Power" | grün | leuchtet | Normalbetrieb
 |  | leuchtet nicht | Versorgungsspannung fehlt
 |  | blinkt | Bootloader-Modus (keine Firmware)
LED1 "State" | gelb | leuchtet | CANopen Pre-Operational Zustand (PDOs nicht aktiv)
 |  | leuchtet nicht | CANopen Operational Zustand (PDOs aktiv)
 |  | blinkt | Bootloader-Modus (blinkt bei eingehender Nachricht)
LED2 "Error" | rot | leuchtet | Allgemeiner Fehler
 |  | leuchtet nicht | kein Fehler (Normalbetrieb)
 |  | blinkt | Pulsanzahl 1: Kurzschluss
 |  |  | Pulsanzahl 2: Leistungsspannung fehlt
 |  |  | Pulsanzahl 3: Übertemperatur
 |  |  | Pulsanzahl 4: Kommunikationsfehler


Inhalt - EDC-B60-Modul

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert *3
Artikelnummer | 1504906
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 20 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 15 A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 25 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | nein
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 52.5 x 41 x 11 mm
- Gewicht | 18 g
- Montage | Backplane
- Steckverbinder | Stiftleiste
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 250 us
- Drehzahlregler (SVEL) | 500 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Hall-Sensoren
- Signale | H1,H2,H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal | 5 V
- Signal-Typ | open collector, single ended
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 6..30 V
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | 0..10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz

*3 Änderungen und Irrtümer vorbehalten.


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | res. | Reserviert
 | X1.2 | res. | Reserviert
 | X1.3 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X1.4 | res. | Reserviert
 | X1.5 | res. | Reserviert
 | X1.6 | res. | Reserviert
 | X1.7 | res. | Reserviert
 | X1.8 | res. | Reserviert
 | X1.9 | H3 | Hallsensorsignal 3
 | X1.10 | res. | Reserviert
 | X1.11 | H2 | Hallsensorsignal 2
 | X1.12 | res. | Reserviert
 | X1.13 | H1 | Hallsensorsignal 1
 | X1.14 | res. | Reserviert
 | X1.15 | CAN Lo | CAN Low
 | X1.16 | res. | Reserviert
 | X1.17 | CAN Hi | CAN High
 | X1.18 | res. | Reserviert
 | X1.19 | res. | Reserviert
 | X1.20 | res. | Reserviert
 | X1.21 | Din2 | Digitaler Eingang 2
 | X1.22 | res. | Reserviert
 | X1.23 | Din1 | Digitaler Eingang 1
 | X1.24 | res. | Reserviert
 | X1.25 | Din0 | Digitaler Eingang 0
 | X1.26 | res. | Reserviert
 | X1.27 | Ain0 | Analoger Eingang 0
 | X1.28 | res. | Reserviert
 | X1.29 | Ain1 | Analoger Eingang 1
 | X1.30 | Din3 | Digitaler Eingang 3
 | X1.31 | GND | Masse Geberversorgung
 | X1.32 | res. | Reserviert
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | res. | Reserviert
 | X2.3 | +Up | Versorgungsspannung Leistung
 | X2.4 | res. | Reserviert
 | X2.5 | GND | Masse Leistung und Elektronik
 | X2.6 | GND | Masse Leistung und Elektronik
 | X2.7 | Ma | Motorphase A
 | X2.8 | +Ue | Versorgungsspannung Elektronik
 | X2.9 | Ma | Motorphase A
 | X2.10 | +Ue | Versorgungsspannung Elektronik
 | X2.11 | Mb | Motorphase B
 | X2.12 | Mb | Motorphase B
 | X2.13 | Mc | Motorphase C
 | X2.14 | res. | Reserviert
 | X2.15 | Mc | Motorphase C
 | X2.16 | res. | Reserviert


Inhalt - EDC-B65

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert *3
Artikelnummer | 1504907
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 30 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 15 A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | nein
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 74 x 45.5 x 14 mm
- Gewicht | 30 g
- Montage | Wand
- Steckverbinder | Crimp-Technik
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 250 us
- Drehzahlregler (SVEL) | 500 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Hall-Sensoren
- Signale | H1,H2,H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal | 5 V
- Signal-Typ | open collector, single ended
Digitale Eingänge
- Anzahl | 3 (Din0..2)
- Low-Schaltschwelle | -10..5 V
- High-Schaltschwelle | 6..30 V
- Bemerkung | Din2 parallel zu Dout0
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 1.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
- Bemerkung | Dout0 parallel zu Din2
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | +/- 10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz

*3 Änderungen und Irrtümer vorbehalten.


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | GND | Masse Geberversorgung
 | X1.2 | +U5V | 5V Geberversorgung (Hall)
 | X1.3 | res. | Reserviert
 | X1.4 | res. | Reserviert
 | X1.5 | H3 | Hallsensorsignal 3
 | X1.6 | H2 | Hallsensorsignal 2
 | X1.7 | H1 | Hallsensorsignal 1
 | X1.8 | CAN Lo | CAN Low
 | X1.9 | CAN Hi | CAN High
 | X1.10 | Din2/Dout0 | Digitaler Eingang 2 / Digitaler Ausgang 0
 | X1.11 | Din1 | Digitaler Eingang 1
 | X1.12 | Din0 | Digitaler Eingang 0
 | X1.13 | Ain0 | Analoger Eingang 0
 | X1.14 | GND | Masse Elektronik
 | X1.15 | +Ue | Versorgungsspannung Elektronik
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | GND | Masse Leistung
 | X2.3 | Ma | Motorphase A
 | X2.4 | Mb | Motorphase B
 | X2.5 | Mc | Motorphase C


Inhalt - EDC-B65-Modul

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert *3
Artikelnummer | 1504908
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 30 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 15 A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | nein
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 52.5 x 41 x 11 mm
- Gewicht | 18 g
- Montage | Backplane
- Steckverbinder | Stiftleiste
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 250 us
- Drehzahlregler (SVEL) | 500 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Hall-Sensoren
- Signale | H1,H2,H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal | 5 V
- Signal-Typ | open collector, single ended
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 6..30 V
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 1.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | +/- 10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz

*3 Änderungen und Irrtümer vorbehalten.


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | res. | Reserviert
 | X1.2 | res. | Reserviert
 | X1.3 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X1.4 | res. | Reserviert
 | X1.5 | res. | Reserviert
 | X1.6 | res. | Reserviert
 | X1.7 | res. | Reserviert
 | X1.8 | res. | Reserviert
 | X1.9 | H3 | Hallsensorsignal 3
 | X1.10 | res. | Reserviert
 | X1.11 | H2 | Hallsensorsignal 2
 | X1.12 | res. | Reserviert
 | X1.13 | H1 | Hallsensorsignal 1
 | X1.14 | res. | Reserviert
 | X1.15 | CAN Lo | CAN Low
 | X1.16 | res. | Reserviert
 | X1.17 | CAN Hi | CAN High
 | X1.18 | res. | Reserviert
 | X1.19 | Dout0 | Digitaler Ausgang 0
 | X1.20 | res. | Reserviert
 | X1.21 | Din2 | Digitaler Eingang 2
 | X1.22 | res. | Reserviert
 | X1.23 | Din1 | Digitaler Eingang 1
 | X1.24 | res. | Reserviert
 | X1.25 | Din0 | Digitaler Eingang 0
 | X1.26 | res. | Reserviert
 | X1.27 | Ain0 | Analoger Eingang 0
 | X1.28 | res. | Reserviert
 | X1.29 | Ain1 | Analoger Eingang 1
 | X1.30 | Din3 | Digitaler Eingang 3
 | X1.31 | GND | Masse Geberversorgung
 | X1.32 | res. | Reserviert
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | res. | Reserviert
 | X2.3 | +Up | Versorgungsspannung Leistung
 | X2.4 | FE | Funktionserde
 | X2.5 | GND | Masse Leistung und Elektronik
 | X2.6 | GND | Masse Leistung und Elektronik
 | X2.7 | Ma | Motorphase A
 | X2.8 | +Ue | Versorgungsspannung Elektronik
 | X2.9 | Ma | Motorphase A
 | X2.10 | +Ue | Versorgungsspannung Elektronik
 | X2.11 | Mb | Motorphase B
 | X2.12 | Mb | Motorphase B
 | X2.13 | Mc | Motorphase C
 | X2.14 | res. | Reserviert
 | X2.15 | Mc | Motorphase C
 | X2.16 | res. | Reserviert


Inhalt - Gerätefamilie EDC-E2x

EDC-E20

EDC-E20XC

EDC-E25

EDC-E25XC

EDC-E27

EDC-E27XC


Inhalt - EDC-E20

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1503583
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 55 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 50 A
- Dauerausgangsstrom @ Up=24V*2 | 30 A
- Dauerausgangsstrom @ Up=48V*2 | 21 A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 111 x 100 x 30 mm
- Gewicht | 250 g
- Montage | Wand
- Steckverbinder | Feder-/Schraubklemmen
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | inkremental
- Signale | A,/A,B,/B,Inx,/Inx
- Max. Frequenz pro Spur | 500 kHz
- Eingangssignal (24V tolerant) | 5 V
- Signal-Typ | differentiell, open collector, single ended
Hall-Sensoren
- Signale | H1,/H1,H2,/H2,H3,/H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal (24V tolerant) | 5 V
- Signal-Typ | differentiell, open collector, single ended
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 6..30 V
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 2.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | 0..10 V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | Ma | Motorphase A
 | X1.5 | Mb | Motorphase B
 | X1.6 | Mc | Motorphase C
 | X2.1 | H1 | Hallsensorsignal 1
 | X2.2 | H2 | Hallsensorsignal 2
 | X2.3 | H3 | Hallsensorsignal 3
 | X2.4 | A | Inkrementalgeber - Spur A
 | X2.5 | B | Inkrementalgeber - Spur B
 | X2.6 | Inx | Inkrementalgeber - Index
 | X2.7 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X2.8 | /H1 | Hallsensorsignal 1 negiert
 | X2.9 | /H2 | Hallsensorsignal 2 negiert
 | X2.10 | /H3 | Hallsensorsignal 3 negiert
 | X2.11 | /A | Inkrementalgeber - Spur A negiert
 | X2.12 | /B | Inkrementalgeber - Spur B negiert
 | X2.13 | /Inx | Inkrementalgeber - Index negiert
 | X2.14 | GND | Masse Geberversorgung
 | X3.1 | +Ue24V | Versorgungsspannung Elektronik
 | X3.2 | +Ain0 | Analoger Eingang 0
 | X3.3 | Din0 | Digitaler Eingang 0
 | X3.4 | Din1 | Digitaler Eingang 1
 | X3.5 | Din2 | Digitaler Eingang 2
 | X3.6 | Din3 | Digitaler Eingang 3
 | X3.7 | GND | Masse Elektronik
 | X3.8 | res. | Reserviert
 | X3.9 | Dout0 | Digitaler Ausgang 0
 | X3.10 | CAN Hi | CAN High
 | X3.11 | CAN Lo | CAN Low
 | X3.12 | CAN GND | CAN Ground


Bedienelemente

Einstellmöglichkeiten über HEX-Schalter

CAN-Bus-Adresse

Die CAN-Bus-Adresse (Node-ID) kann mittels der HEX-Schalter, die sich auf der Unterseite des Geräts befinden, verändert werden. Die eingestellte Adresse liegt hexadezimal vor.

Node-ID |  | Beschreibung
0 |  | Nicht erlaubt
1..127 | 01h..7Fh | Nach dem Einschalten ist das Gerät im Zustand "Pre-Operational"
128..255 | 80h..FFh | Nicht erlaubt
Die CAN-Bus-Adresse kann auch mittels Software verändert werden (siehe Parameter DS2000_CopConfigParam_UserNodeId und edcTools-CAN Konfiguration)

Jede Adresse darf nur einmal im Netzwerk vorkommen! Eine Änderung der Knotenadresse per HEX-Schalter oder Software ist erst nach erneunten Einschalten des Gerätes wirksam.

Beachten Sie bitte, dass die Software-Node-ID (siehe Parameter DS2000_CopConfigParam_UserNodeId) eine höhere Priorität als die Node-ID über die HEX-Schalter hat. Das Gerät akzeptiert nur die über die HEX-Schalter gesetzte Node-ID, wenn der Parameter DS2000_CopConfigParam_UserNodeId auf den Wert -1 gesetzt ist. Möchten Sie den Wert dieses Parameters über die HEX-Schalter auf den Defaultwert zurücksetzen, folgen Sie die Tipps aus dem Abschnitt "Parameter zurücksetzen".

Parameter zurücksetzen

Sind die HEX-Schalter beim Einschalten auf 00h gesetzt, setzt der Regler die Werte der Parameter zurück. Dabei kann man die folgende Sequenz beobachten:

- die grüne LED0 "Power" blinkt 10s im 500ms Takt
- die gelbe LED1 "State" blinkt 4 mal
- beide LED's blinken im 100 ms Takt

Die Sequenz wird beendet, wenn die grüne und gelbe LED leuchten. Danach muss man die Node-ID des Gerätes einstellen und neustarten.

Beachten Sie bitte, dass dabei das MPU-Programm nicht aus dem Gerät gelöscht wird.

CAN-Bus-Baudrate

Die Standardübertragungsgeschwindigkeit der Geräte beträgt 125 kbit/s. Sie kann sowohl softwareseitig (siehe Parameter DS2000_CopConfigParam_UserBaudrate und edcTools-CAN Konfiguration) als auch über die HEX-Schalter auf unten beschriebene Art und Weise verändert werden.

 Aktion
 Anzeige

1

Gerät ausschalten

2

HEX-Schalter auf 00h einstellen

3

Gerät einschalten

die grüne LED blinkt im 500 ms Takt

4

Innerhalb von 10 sec muss der HEX-Schalter-Hi auf den Wert "F" gesetzt werden. Die Drehrichtung des HEX-Schalters ist dabei nicht wichtig.

die grüne LED blinkt im 200 ms Takt

5

Innerhalb von 10 sec muss mit dem HEX-Schalter Lo ein Index der Übertragungsgeschwindigkeit eingestellt werden.

Index 0 - Baudrate 1 Mbit/s

Index 1 - Baudrate 800 kbit/s
Index 2 - Baudrate 500 kbit/s
Index 3 - Baudrate 250 kbit/s
Index 4 - Baudrate 125 kbit/s
Index 5 - Baudrate 100 kbit/s
Index 6 - Baudrate 50 kbit/s
Index 7 - Baudrate 20 kbit/s
Index 8 - Baudrate 10 kbit/s

Modul bestätigt Übernahme oder zeigt Fehler an. Wird ein unterstützter Index gewählt, blinkt die gelbe LED mehrmals. Anschließend blinken die grüne und gelbe LED im 100 ms Takt. Falls ein ungültiger oder nicht unterstützter Index eingestellt wird, wird es durch schnelles Blinken der roten und grünen LED signalisiert.

6

Anschließend, während die grüne und gelbe LED blinken, kann die Node-ID auf die korrekte Adresse eingestellt werden. Altenativ können Sie auch abwarten, das Gerät ausschalten und die Node-ID in Ruhe einstellen.

Um die Default-Baudrate im Gerät zu setzen, folgen Sie die Tipps aus dem Abschnitt "Parameter zurücksetzen".

Beachten Sie bitte, dass die Software-Baudrate (siehe Parameter DS2000_CopConfigParam_UserBaudrate) eine höhere Priorität als die Baudrate über die HEX-Schalter hat. Das Gerät akzeptiert nur die Änderungen der Baudrate über die HEX-Schalter, wenn der Parameter DS2000_CopConfigParam_UserBaudrate auf den Wert -1 gesetzt ist. Möchten Sie den Wert dieses Parameters über die HEX-Schalter auf den Defaultwert zurücksetzen, folgen Sie die Tipps aus dem Abschnitt "Parameter zurücksetzen".


Beschaltungsbeispiele

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

EMV-gerechte Verdrahtung

Achten Sie bei der Installation des Geräts auf die Einhaltung der Bedinugnen für elektromagnitische Verträglichkeit (siehe EMV-gerechte Verkabelung und Installation)

Elektrostatisch empfindliche Geräte und Komponenten

Bei Installation, Inbetriebnahme und Service der Geräte müssen Schutzmaßnahme gegen die Einwirkung von elektrostatischen Entladungen (ESD) eingehalten werden. Das betrifft insbesondere antistatische Kleidung, antistatische Werkzeuge und einer antistatische Arbeitsumgebung. Die Geräte müssen diesbezüglich mit besondere Sorgfalt behandelt werden.
Zum Schutz gegen elektrostatische Entladungen im Betrieb müssen an das Gerät alle Steckverbinder angesteckt werden, auch wenn die darauf befindlichen Signale nicht benutzt werden. Die Steckverbinder dienen als Schutz gegen Berührung.
Leiterplatten ohne Gehäuse dürfen nur von geschultem Personal in einer antistatischen Umgebung verarbeitet werden.

Bürstenloser Motor mit Encoder (single-ended Leitungen)

Bürstenloser Motor mit Encoder (differenziale Leitungen)

Bürstenbehafteter Motor

Schalter

Potentiometer

SPS - IO Ansteuerung

Regler im SVEL-Modus mit SPS


Inhalt - EDC-Exx

Parameter 1000h (DS301)

Parameter 2000h

Parameter 3000h (DSA)

Parameter 5000h (MPU)

Parameter 6000h (DS402)


Inhalt - EDC-E20XC

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1512409
Absolut max. Rating
- Spannung (Zerstörungsgrenze) Up kein Verpolungsschutz | 80 V
- Dauerspannung (Zerstörungsgrenze) Ue kein Verpolungsschutz | 33 V
- Kurzfristige Spitzenspannung < 1s Ue (Zerstörungsgrenze) kein Verpolungsschutz | 37 V
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V*1 | typ. 70 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 160 A
- Dauerausgangsstrom @ Up=48V 2 mit Kühlkörper (Art.Nr. 1511832) | 60 A 70 A
- Max. Ausgangsspannung | 90% Up
- PWM-Frequenz | 25, 32*3, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 111 x 100 x 40 mm
- Gewicht | 414 g
- Montage | Wand
- Steckverbinder | Feder-/Schraubklemmen
Umgebung
- Schutzart | IP20
- Temperaturbereich*4 | -40..55 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..90 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*3 us
- Positionierregler (POS) | 1000, 2000*3 us
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein
Geberversorgung (Drehgeber/Hall)
- Ausgangsspannung | 5 V
- Maximaler Ausgangsstrom | 0.2 A
Drehgeber
- Typ | inkremental
- Signale | A,/A,B,/B,Inx,/Inx
- Max. Frequenz pro Spur | 500 kHz
- Eingangssignal (24V tolerant) | 0..5 V
- Signal-Typ | differentiell, open collector, single ended
Hall-Sensoren
- Signale | H1,/H1,H2,/H2,H3,/H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal (24V tolerant) | 0..5 V
- Signal-Typ | differentiell, open collector, single ended
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Pegel | 0..5 V
- High-Pegel | 8..30 V
- Bemerkung | Din5 parallel zu Dout2
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 0.7 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | +/- 10V, 12 Bit, differentiell

Änderungen und Irrtümer vorbehalten
*1 Endstufe aus, 5V Ausgang (Geberversorgung) ist unbelastet
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz
*3 Standardwert
*4 < - 25°C, das Einstellen der Node ID ist nur über Firmwareparameter gewährleistet, da die Funktion der HEX-Schalter nicht für den gesamten Temperaturbereich garantiert werden kann


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | +Up | Versorgungsspannung Leistung
 | X1.2 | GND | Masse Leistung
 | X1.3 | Ma | Motorphase A
 | X1.4 | Mb | Motorphase B
 | X1.5 | Mc | Motorphase C
 | X2.1 | H1 | Hallsensorsignal 1
 | X2.2 | H2 | Hallsensorsignal 2
 | X2.3 | H3 | Hallsensorsignal 3
 | X2.4 | A | Inkrementalgeber - Spur A
 | X2.5 | B | Inkrementalgeber - Spur B
 | X2.6 | Inx | Inkrementalgeber - Index
 | X2.7 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X2.8 | /H1 | Hallsensorsignal 1 negiert
 | X2.9 | /H2 | Hallsensorsignal 2 negiert
 | X2.10 | /H3 | Hallsensorsignal 3 negiert
 | X2.11 | /A | Inkrementalgeber - Spur A negiert
 | X2.12 | /B | Inkrementalgeber - Spur B negiert
 | X2.13 | /Inx | Inkrementalgeber - Index negiert
 | X2.14 | GND | Masse Geberversorgung
 | X3.1 | +Ue24V | Versorgungsspannung Elektronik
 | X3.2 | +Ain0 | Analoger Eingang 0, Plus
 | X3.3 | Din0 | Digitaler Eingang 0
 | X3.4 | Din1 | Digitaler Eingang 1
 | X3.5 | Din2 | Digitaler Eingang 2
 | X3.6 | Din3 | Digitaler Eingang 3
 | X3.7 | GND | Masse Elektronik
 | X3.8 | -Ain0 | Analoger Eingang 0, Minus
 | X3.9 | Dout0 | Digitaler Ausgang 0
 | X3.10 | CAN Hi | CAN High
 | X3.11 | CAN Lo | CAN Low
 | X3.12 | CAN GND | Masse für CAN


Steckverbindersysteme

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!
Verarbeitung der Zugfederklemmen Weidmueller B2L 3.5
Die Antriebsregler der EDC-E2xXC Reihe verwenden Steckverbinder mit Zugfedertechnik für ein bzw. feindrähtige Leiter. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit dem Steckverbinder verwendet werden können.

Klemme | Bezeichnung Art.-Nr. | Klemmbereich (Querschnitt d) mm2 |  |  |  | Abisolierlänge mm
 |  | eindrähtig H05(07)V-U | feindrähtig H05(07)V-K | feindrähtig mit AEH | feindrähtig mit AEH und Kunststoffkragen
X2 | B2L 3.5/14 1727680000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
X3 | B2L 3.5/12 1727670000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
X4 | B2L 3.5/6 1727640000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
Weitere Information finden Sie unter www.weidmueller.com.

Achten Sie darauf, dass die Adern korrekt auf den abisolierten Teil des Leiters und nicht auf die Isolierung geklemmt sind.

Verarbeitung der Schraubklemmen Weidmueller LU 10.16
Die Antriebsregler der EDC-E2xXC Reihe verwenden Klemmen Schraubtechnik für die Leistungsseite. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit dem Steckverbinder verwendet werden können.

Klemme | Bezeichnung | Klemmbereich (Querschnitt d) mm2 |  |  |  | Abisolierlänge mm
 |  | eindrähtig H05(07)V-U | feindrähtig H05(07)V-K | feindrähtig mit AEH | feindrähtig mit AEH und Kunststoffkragen
X1 | LU 10.16 | 0,5 ... 16 | 0,5 ... 16 | 2,5 ... 10 | 2,5 ... 10 | 12
Weitere Information finden Sie unter www.weidmueller.com.


Inhalt - EDC-E25

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1511110
Absolut max. Rating
- Spannung (Zerstörungsgrenze) Up kein Verpolungsschutz | 80 V
- Dauerspannung (Zerstörungsgrenze) Ue kein Verpolungsschutz | 33 V
- Kurzfristige Spitzenspannung < 1s Ue (Zerstörungsgrenze) kein Verpolungsschutz | 37 V
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 70 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 100 A
- Dauerausgangsstrom @ Up=24V*1 | 35 A
- Dauerausgangsstrom @ Up=48V*1 | 26 A
- Max. Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*2, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 111 x 100 x 30 mm
- Gewicht | 380 g
- Montage | Wand
- Steckverbinder | Feder-/Schraubklemmen
Umgebung
- Schutzart | IP20
- Temperaturbereich*3 | -40..55 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*2 us
- Positionierregler (POS) | 1000, 2000*2 us
Geberversorgung (Drehgeber/Hall)
- Ausgangsspannung | 5 V
- Maximaler Ausgangsstrom | 0.2 A
Drehgeber
- Typ | inkremental
- Signale | A,/A,B,/B,Inx,/Inx
- Max. Frequenz pro Spur | 500 kHz
- Eingangssignal (24V tolerant) | 0..5 V
- Signal-Typ | differentiell, open collector, single ended
Hall-Sensoren
- Signale | H1,/H1,H2,/H2,H3,/H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal (24V tolerant) | 0..5 V
- Signal-Typ | differentiell, open collector, single ended
Digitale Eingänge
- Anzahl | 8 (Din0..7)
- Low-Pegel | 0..5 V
- High-Pegel | 8..30 V
Digitale Ausgänge
- Anzahl | 2 (Dout0..1)
- Dauerausgangsstrom | 2.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | +/- 10V, 12 Bit, differentiell
- Anzahl | 1 (Ain1)
- Signal-Typ | +/- 10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | ja

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | Ma | Motorphase A
 | X1.5 | Mb | Motorphase B
 | X1.6 | Mc | Motorphase C
 | X2.1 | H1 | Hallsensorsignal 1
 | X2.2 | H2 | Hallsensorsignal 2
 | X2.3 | H3 | Hallsensorsignal 3
 | X2.4 | A | Inkrementalgeber - Spur A
 | X2.5 | B | Inkrementalgeber - Spur B
 | X2.6 | Inx | Inkrementalgeber - Index
 | X2.7 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X2.8 | /H1 | Hallsensorsignal 1 negiert
 | X2.9 | /H2 | Hallsensorsignal 2 negiert
 | X2.10 | /H3 | Hallsensorsignal 3 negiert
 | X2.11 | /A | Inkrementalgeber - Spur A negiert
 | X2.12 | /B | Inkrementalgeber - Spur B negiert
 | X2.13 | /Inx | Inkrementalgeber - Index negiert
 | X2.14 | GND | Masse Geberversorgung
 | X3.1 | +Ue24V | Versorgungsspannung Elektronik
 | X3.2 | +Ain0 | Analoger Eingang 0, Plus
 | X3.3 | Din0 | Digitaler Eingang 0
 | X3.4 | Din1 | Digitaler Eingang 1
 | X3.5 | Din2 | Digitaler Eingang 2
 | X3.6 | Din3 | Digitaler Eingang 3
 | X3.7 | GND | Masse Elektronik
 | X3.8 | -Ain0 | Analoger Eingang 0, Minus
 | X3.9 | Dout0 | Digitaler Ausgang 0
 | X3.10 | CAN Hi | CAN High
 | X3.11 | CAN Lo | CAN Low
 | X3.12 | CAN GND | Masse für CAN
 | X4.1 | Ain1 | Analoger Eingang 1
 | X4.2 | Din4 | Digitaler Eingang 4
 | X4.3 | Din5 | Digitaler Eingang 5
 | X4.4 | Din6 | Digitaler Eingang 6
 | X4.5 | Dout1 | Digitaler Ausgang 1
 | X4.6 | Din7 | Digitaler Eingang 7


Inhalt - EDC-E25XC

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1512002
Absolut max. Rating
- Spannung (Zerstörungsgrenze) Up kein Verpolungsschutz | 80 V
- Dauerspannung (Zerstörungsgrenze) Ue kein Verpolungsschutz | 33 V
- Kurzfristige Spitzenspannung < 1s Ue (Zerstörungsgrenze) kein Verpolungsschutz | 37 V
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V*1 | typ. 70 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 160 A
- Dauerausgangsstrom @ Up=48V 2 mit Kühlkörper (Art.Nr. 1511832) | 60 A 70 A
- Max. Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*3, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 111 x 100 x 40 mm
- Gewicht | 414 g
- Montage | Wand
- Steckverbinder | Feder-/Schraubklemmen
Umgebung
- Schutzart | IP20
- Temperaturbereich*4 | -40..55 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..90 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*3 us
- Positionierregler (POS) | 1000, 2000*3 us
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | ja
Geberversorgung (Drehgeber/Hall)
- Ausgangsspannung | 5 V
- Maximaler Ausgangsstrom | 0.2 A
Drehgeber
- Typ | inkremental
- Signale | A,/A,B,/B,Inx,/Inx
- Max. Frequenz pro Spur | 500 kHz
- Eingangssignal (24V tolerant) | 0..5 V
- Signal-Typ | differentiell, open collector, single ended
Hall-Sensoren
- Signale | H1,/H1,H2,/H2,H3,/H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal (24V tolerant) | 0..5 V
- Signal-Typ | differentiell, open collector, single ended
Digitale Eingänge
- Anzahl digitaler Eingänge davon Hardwareenable Eingänge | 8 2 (Din6..7)
- Low-Pegel | 0..5 V
- High-Pegel | 8..30 V
- Bemerkung | Din5 parallel zu Dout2
Digitale Ausgänge
- Anzahl | 3 (Dout0..2)
- Dauerausgangsstrom | 0.7 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
- Bemerkung | Dout2 parallel zu Din5
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | +/- 10V, 12 Bit, differentiell
- Anzahl | 1 (Ain1)
- Signal-Typ | +/- 10V, 12 Bit, single ended

Änderungen und Irrtümer vorbehalten
*1 Endstufe aus, 5V Ausgang (Geberversorgung) ist unbelastet
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz
*3 Standardwert
*4 < - 25°C, das Einstellen der Node ID ist nur über Firmwareparameter gewährleistet, da die Funktion der HEX-Schalter nicht für den gesamten Temperaturbereich garantiert werden kann


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | +Up | Versorgungsspannung Leistung
 | X1.2 | GND | Masse Leistung
 | X1.3 | Ma | Motorphase A
 | X1.4 | Mb | Motorphase B
 | X1.5 | Mc | Motorphase C
 | X2.1 | H1 | Hallsensorsignal 1
 | X2.2 | H2 | Hallsensorsignal 2
 | X2.3 | H3 | Hallsensorsignal 3
 | X2.4 | A | Inkrementalgeber - Spur A
 | X2.5 | B | Inkrementalgeber - Spur B
 | X2.6 | Inx | Inkrementalgeber - Index
 | X2.7 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X2.8 | /H1 | Hallsensorsignal 1 negiert
 | X2.9 | /H2 | Hallsensorsignal 2 negiert
 | X2.10 | /H3 | Hallsensorsignal 3 negiert
 | X2.11 | /A | Inkrementalgeber - Spur A negiert
 | X2.12 | /B | Inkrementalgeber - Spur B negiert
 | X2.13 | /Inx | Inkrementalgeber - Index negiert
 | X2.14 | GND | Masse Geberversorgung
 | X3.1 | +Ue24V | Versorgungsspannung Elektronik
 | X3.2 | +Ain0 | Analoger Eingang 0, Plus
 | X3.3 | Din0 | Digitaler Eingang 0
 | X3.4 | Din1 | Digitaler Eingang 1
 | X3.5 | Din2 | Digitaler Eingang 2
 | X3.6 | Din3 | Digitaler Eingang 3
 | X3.7 | GND | Masse Elektronik
 | X3.8 | -Ain0 | Analoger Eingang 0, Minus
 | X3.9 | Dout0 | Digitaler Ausgang 0
 | X3.10 | CAN Hi | CAN High
 | X3.11 | CAN Lo | CAN Low
 | X3.12 | CAN GND | Masse für CAN
 | X4.1 | Ain1 | Analoger Eingang 1
 | X4.2 | Din4 | Digitaler Eingang 4
 | X4.3 | Din5/Dout2 | Digitaler Eingang 5 / Digitaler Ausgang 2
 | X4.4 | STO1 | STO Kanal 1
 | X4.5 | Dout1 | Digitaler Ausgang 1
 | X4.6 | STO2 | STO Kanal 2


Beschaltungsbeispiele

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

EMV-gerechte Verdrahtung

Achten Sie bei der Installation des Geräts auf die Einhaltung der Bedinugnen für elektromagnitische Verträglichkeit (siehe EMV-gerechte Verkabelung und Installation)

Elektrostatisch empfindliche Geräte und Komponenten

Bei Installation, Inbetriebnahme und Service der Geräte müssen Schutzmaßnahme gegen die Einwirkung von elektrostatischen Entladungen (ESD) eingehalten werden. Das betrifft insbesondere antistatische Kleidung, antistatische Werkzeuge und einer antistatische Arbeitsumgebung. Die Geräte müssen diesbezüglich mit besondere Sorgfalt behandelt werden.
Zum Schutz gegen elektrostatische Entladungen im Betrieb müssen an das Gerät alle Steckverbinder angesteckt werden, auch wenn die darauf befindlichen Signale nicht benutzt werden. Die Steckverbinder dienen als Schutz gegen Berührung.
Leiterplatten ohne Gehäuse dürfen nur von geschultem Personal in einer antistatischen Umgebung verarbeitet werden.

Bürstenloser Motor mit Encoder (single-ended Leitungen)

Bürstenloser Motor mit Encoder (differenzielle Leitungen)

Bürstenbehafteter Motor

Schalter

Potentiometer


Inhalt - EDC-E27

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1504936
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 70 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 100 A
- Dauerausgangsstrom @ Up=24V*2 | 35 A
- Dauerausgangsstrom @ Up=48V*2 | 26 A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 111 x 100 x 30 mm
- Gewicht | 380 g
- Montage | Wand
- Steckverbinder | Feder-/Schraubklemmen
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | sin / cos
- Signale | +Sin,-Sin,+Cos,-Cos
- Auflösung | 13 Bit pro Sinusperiode
- Eingangssignal | 1 V Spitze-Spitze, differentiell
- Signal-Typ | Sinus/Cosinus, analog, differentiell
Digitale Eingänge
- Anzahl | 7 (Din0..6)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 8..30 V
Digitale Ausgänge
- Anzahl | 2 (Dout0..1)
- Dauerausgangsstrom | 2.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | +/- 10V, 12 Bit, differentiell
- Anzahl | 1 (Ain1)
- Signal-Typ | +/- 10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | ja

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | Ma | Motorphase A
 | X1.5 | Mb | Motorphase B
 | X1.6 | Mc | Motorphase C
 | X2.1 | res. | Reserviert
 | X2.2 | res. | Reserviert
 | X2.3 | res. | Reserviert
 | X2.4 | +Sin | Drehgeber, Sinussignal
 | X2.5 | +Cos | Drehgeber, Cosinussignal
 | X2.6 | res. | Reserviert
 | X2.7 | +U5V | 5V Geberversorgung (Drehgeber)
 | X2.8 | res. | Reserviert
 | X2.9 | res. | Reserviert
 | X2.10 | res. | Reserviert
 | X2.11 | -Sin | Drehgeber, Sinussignal negiert
 | X2.12 | -Cos | Drehgeber, Cosinussignal negiert
 | X2.13 | res. | Reserviert
 | X2.14 | GND | Masse Geberversorgung
 | X3.1 | +Ue24V | Versorgungsspannung Elektronik
 | X3.2 | +Ain0 | Analoger Eingang 0, Plus
 | X3.3 | Din0 | Digitaler Eingang 0
 | X3.4 | Din1 | Digitaler Eingang 1
 | X3.5 | Din2 | Digitaler Eingang 2
 | X3.6 | Din3 | Digitaler Eingang 3
 | X3.7 | GND | Masse Elektronik
 | X3.8 | -Ain0 | Analoger Eingang 0, Minus
 | X3.9 | Dout0 | Digitaler Ausgang 0
 | X3.10 | CAN Hi | CAN High
 | X3.11 | CAN Lo | CAN Low
 | X3.12 | CAN GND | CAN Ground
 | X4.1 | Ain1 | Analoger Eingang 1
 | X4.2 | Din4 | Digitaler Eingang 4
 | X4.3 | Din5 | Digitaler Eingang 5
 | X4.4 | Din6 | Digitaler Eingang 6
 | X4.5 | Dout1 | Digitaler Ausgang 1
 | X4.6 | res. | Reserviert


Beschaltungsbeispiele

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

EMV-gerechte Verdrahtung

Achten Sie bei der Installation des Geräts auf die Einhaltung der Bedinugnen für elektromagnitische Verträglichkeit (siehe EMV-gerechte Verkabelung und Installation)

Elektrostatisch empfindliche Geräte und Komponenten

Bei Installation, Inbetriebnahme und Service der Geräte müssen Schutzmaßnahme gegen die Einwirkung von elektrostatischen Entladungen (ESD) eingehalten werden. Das betrifft insbesondere antistatische Kleidung, antistatische Werkzeuge und einer antistatische Arbeitsumgebung. Die Geräte müssen diesbezüglich mit besondere Sorgfalt behandelt werden.
Zum Schutz gegen elektrostatische Entladungen im Betrieb müssen an das Gerät alle Steckverbinder angesteckt werden, auch wenn die darauf befindlichen Signale nicht benutzt werden. Die Steckverbinder dienen als Schutz gegen Berührung.
Leiterplatten ohne Gehäuse dürfen nur von geschultem Personal in einer antistatischen Umgebung verarbeitet werden.

Bürstenloser Motor mit Encoder (differentielle Leitungen)

Bürstenbehafteter Motor

Schalter

Potentiometer

SPS - IO Ansteuerung


Inhalt - EDC-E27XC

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1511988
Absolut max. Rating
- Spannung (Zerstörungsgrenze) Up kein Verpolungsschutz | 80 V
- Dauerspannung (Zerstörungsgrenze) Ue kein Verpolungsschutz | 33 V
- Kurzfristige Spitzenspannung < 1s Ue (Zerstörungsgrenze) kein Verpolungsschutz | 37 V
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V*1 | typ. 70 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 160 A
- Dauerausgangsstrom @ Up=48V 2 mit Kühlkörper (Art.Nr. 1511832) | 60 A 70 A
- Max. Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*3, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 111 x 100 x 40 mm
- Gewicht | 414 g
- Montage | Wand
- Steckverbinder | Feder-/Schraubklemmen
Umgebung
- Schutzart | IP20
- Temperaturbereich*4 | -40..55 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..90 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*3 us
- Positionierregler (POS) | 1000, 2000*3 us
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | ja
Geberversorgung (Drehgeber)
- Ausgangsspannung | 5 V
- Maximaler Ausgangsstrom | 0.2 A
Drehgeber
- Typ | sin / cos
- Signale | +Sin,-Sin,+Cos,-Cos
- Auflösung | 13 Bit pro Sinusperiode
- Eingangssignal | 1 V Spitze-Spitze, differentiell
- Signal-Typ | Sinus/Cosinus, analog, differentiell
Digitale Eingänge
- Anzahl digitaler Eingänge davon Hardwareenable Eingänge | 8 2 (Din6..7)
- Low-Pegel | 0..5 V
- High-Pegel | 8..30 V
- Bemerkung | Din5 parallel zu Dout2
Digitale Ausgänge
- Anzahl | 3 (Dout0..2)
- Dauerausgangsstrom | 0.7 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
- Bemerkung | Dout2 parallel zu Din5
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | +/- 10V, 12 Bit, differentiell
- Anzahl | 1 (Ain1)
- Signal-Typ | +/- 10V, 12 Bit, single ended

Änderungen und Irrtümer vorbehalten
*1 Endstufe aus, 5V Ausgang (Geberversorgung) ist unbelastet
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz
*3 Standardwert
*4 < - 25°C, das Einstellen der Node ID ist nur über Firmwareparameter gewährleistet, da die Funktion der HEX-Schalter nicht für den gesamten Temperaturbereich garantiert werden kann


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | +Up | Versorgungsspannung Leistung
 | X1.2 | GND | Masse Leistung
 | X1.3 | Ma | Motorphase A
 | X1.4 | Mb | Motorphase B
 | X1.5 | Mc | Motorphase C
 | X2.1 | res. | Reserviert
 | X2.2 | res. | Reserviert
 | X2.3 | res. | Reserviert
 | X2.4 | +Sin | Drehgeber, Sinussignal
 | X2.5 | +Cos | Drehgeber, Cosinussignal
 | X2.6 | res. | Reserviert
 | X2.7 | +U5V | 5V Geberversorgung (Drehgeber)
 | X2.8 | res. | Reserviert
 | X2.9 | res. | Reserviert
 | X2.10 | res. | Reserviert
 | X2.11 | -Sin | Drehgeber, Sinussignal negiert
 | X2.12 | -Cos | Drehgeber, Cosinussignal negiert
 | X2.13 | res. | Reserviert
 | X2.14 | GND | Masse Geberversorgung
 | X3.1 | +Ue24V | Versorgungsspannung Elektronik
 | X3.2 | +Ain0 | Analoger Eingang 0, Plus
 | X3.3 | Din0 | Digitaler Eingang 0
 | X3.4 | Din1 | Digitaler Eingang 1
 | X3.5 | Din2 | Digitaler Eingang 2
 | X3.6 | Din3 | Digitaler Eingang 3
 | X3.7 | GND | Masse Elektronik
 | X3.8 | -Ain0 | Analoger Eingang 0, Minus
 | X3.9 | Dout0 | Digitaler Ausgang 0
 | X3.10 | CAN Hi | CAN High
 | X3.11 | CAN Lo | CAN Low
 | X3.12 | CAN GND | Masse für CAN
 | X4.1 | Ain1 | Analoger Eingang 1
 | X4.2 | Din4 | Digitaler Eingang 4
 | X4.3 | Din5/Dout2 | Digitaler Eingang 5 / Digitaler Ausgang 2
 | X4.4 | STO1 | STO Kanal 1
 | X4.5 | Dout1 | Digitaler Ausgang 1
 | X4.6 | STO2 | STO Kanal 2


Beschaltungsbeispiele

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

EMV-gerechte Verdrahtung

Achten Sie bei der Installation des Geräts auf die Einhaltung der Bedinugnen für elektromagnitische Verträglichkeit (siehe EMV-gerechte Verkabelung und Installation)

Elektrostatisch empfindliche Geräte und Komponenten

Bei Installation, Inbetriebnahme und Service der Geräte müssen Schutzmaßnahme gegen die Einwirkung von elektrostatischen Entladungen (ESD) eingehalten werden. Das betrifft insbesondere antistatische Kleidung, antistatische Werkzeuge und einer antistatische Arbeitsumgebung. Die Geräte müssen diesbezüglich mit besondere Sorgfalt behandelt werden.
Zum Schutz gegen elektrostatische Entladungen im Betrieb müssen an das Gerät alle Steckverbinder angesteckt werden, auch wenn die darauf befindlichen Signale nicht benutzt werden. Die Steckverbinder dienen als Schutz gegen Berührung.
Leiterplatten ohne Gehäuse dürfen nur von geschultem Personal in einer antistatischen Umgebung verarbeitet werden.

Bürstenloser Motor mit Encoder (differentielle Leitungen)

Bürstenbehafteter Motor

Schalter

Potentiometer


Inhalt - Gerätefamilie EDC-E4x

EDC-E40

EDC-E40-Modul

EDC-E42

EDC-E45

EDC-E45-Modul

EDC-E47


Inhalt - EDC-E40

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1503591 (HC Version 1503596)
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 50 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 30 A
- Dauerausgangsstrom @ Up=24V*2 (HC Version) | 10 A (12.5) A
- Dauerausgangsstrom @ Up=48V*2 (HC Version) | 8.5 A (12.5) A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH (HC Version) | 110 x 22.5(40) x 77 mm
- Gewicht (HC Version) | 110 (310) g
- Montage | Hutschiene / Wand
- Steckverbinder | Feder-/Schraubklemmen
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | inkremental
- Signale | A,/A,B,/B,Inx,/Inx
- Max. Frequenz pro Spur | 500 kHz
- Eingangssignal (24V tolerant) | 5 V
- Signal-Typ | differentiell, open collector, single ended
Hall-Sensoren
- Signale | H1,/H1,H2,/H2,H3,/H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal (24V tolerant) | 5 V
- Signal-Typ | differentiell, open collector, single ended
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 6..30 V
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 2.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | 0..10 V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | Ma | Motorphase A
 | X1.5 | Mb | Motorphase B
 | X1.6 | Mc | Motorphase C
 | X2.1 | H1 | Hallsensorsignal 1
 | X2.2 | H2 | Hallsensorsignal 2
 | X2.3 | H3 | Hallsensorsignal 3
 | X2.4 | A | Inkrementalgeber - Spur A
 | X2.5 | B | Inkrementalgeber - Spur B
 | X2.6 | Inx | Inkrementalgeber - Index
 | X2.7 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X2.8 | /H1 | Hallsensorsignal 1 negiert
 | X2.9 | /H2 | Hallsensorsignal 2 negiert
 | X2.10 | /H3 | Hallsensorsignal 3 negiert
 | X2.11 | /A | Inkrementalgeber - Spur A negiert
 | X2.12 | /B | Inkrementalgeber - Spur B negiert
 | X2.13 | /Inx | Inkrementalgeber - Index negiert
 | X2.14 | GND | Masse Geberversorgung
 | X3.1 | +Ue24V | Versorgungsspannung Elektronik
 | X3.2 | Ain0 | Analoger Eingang 0
 | X3.3 | Din0 | Digitaler Eingang 0
 | X3.4 | Din1 | Digitaler Eingang 1
 | X3.5 | Din2 | Digitaler Eingang 2
 | X3.6 | Din3 | Digitaler Eingang 3
 | X3.7 | GND | Masse Elektronik
 | X3.8 | res. | Reserviert
 | X3.9 | Dout0 | Digitaler Ausgang 0
 | X3.10 | CAN Hi | CAN High
 | X3.11 | CAN Lo | CAN Low
 | X3.12 | CAN GND | CAN Ground


Inhalt - EDC-E40-Modul

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1503589
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 50 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 30 A
- Dauerausgangsstrom @ Up=24V*2 | 10 A
- Dauerausgangsstrom @ Up=48V*2 | 8.5 A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 97.5 x 71 x 13 mm
- Gewicht | 55 g
- Montage | Backplane
- Steckverbinder | Stiftleiste
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | inkremental
- Signale | A,/A,B,/B,Inx,/Inx
- Max. Frequenz pro Spur | 500 kHz
- Eingangssignal (24V tolerant) | 5 V
- Signal-Typ | differentiell, open collector, single ended
Hall-Sensoren
- Signale | H1,/H1,H2,/H2,H3,/H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal (24V tolerant) | 5 V
- Signal-Typ | differentiell, open collector, single ended
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 6..30 V
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 2.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | 0..10 V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | CAN Hi | CAN High
 | X1.2 | CAN Lo | CAN Low
 | X1.3 | res. | Reserviert
 | X1.4 | res. | Reserviert
 | X1.5 | res. | Reserviert
 | X1.6 | res. | Reserviert
 | X1.7 | Din2 | Digitaler Eingang 2
 | X1.8 | Din3 | Digitaler Eingang 3
 | X1.9 | Din0 | Digitaler Eingang 0
 | X1.10 | Din1 | Digitaler Eingang 1
 | X1.11 | Ain0 | Analoger Eingang 0
 | X1.12 | Ain1 | Analoger Eingang 1
 | X1.13 | SpiMISO | mcSPI Master In Slave Out
 | X1.14 | Spi/SS | mcSPI Slave Select
 | X1.15 | SpiMOSI | mcSPI Master Out Slave In
 | X1.16 | SpiSCK | mcSPI Clock
 | X1.17 | Rx0 | UART0 Receive Signal
 | X1.18 | Tx0 | UART0 Transmit Signal
 | X1.19 | Erw1 | mcSPI Erweiterungssignal 1
 | X1.20 | Erw2 | mcSPI Erweiterungssignal 2
 | X1.21 | Inx | Inkrementalgeber - Index
 | X1.22 | /Inx | Inkrementalgeber - Index negiert
 | X1.23 | B | Inkrementalgeber - Spur B
 | X1.24 | /B | Inkrementalgeber - Spur B negiert
 | X1.25 | A | Inkrementalgeber - Spur A
 | X1.26 | /A | Inkrementalgeber - Spur A negiert
 | X1.27 | H3 | Hallsensorsignal 3
 | X1.28 | /H3 | Hallsensorsignal 3 negiert
 | X1.29 | H2 | Hallsensorsignal 2
 | X1.30 | /H2 | Hallsensorsignal 2 negiert
 | X1.31 | H1 | Hallsensorsignal 1
 | X1.32 | /H1 | Hallsensorsignal 1 negiert
 | X2.1 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X2.2 | GND | Masse Geberversorgung
 | X2.3 | Dout0 | Digitaler Ausgang 0
 | X2.4 | res. | Reserviert
 | X2.5 | +Ue24V | Versorgungsspannung Elektronik
 | X2.6 | +Ue24V | Versorgungsspannung Elektronik
 | X2.7 | res. | Reserviert
 | X2.8 | res. | Reserviert
 | X2.9 | res. | Reserviert
 | X2.10 | res. | Reserviert
 | X2.11 | Mc | Motorphase C
 | X2.12 | Mc | Motorphase C
 | X2.13 | Mc | Motorphase C
 | X2.14 | Mc | Motorphase C
 | X2.15 | Mb | Motorphase B
 | X2.16 | Mb | Motorphase B
 | X2.17 | Mb | Motorphase B
 | X2.18 | Mb | Motorphase B
 | X2.19 | Ma | Motorphase A
 | X2.20 | Ma | Motorphase A
 | X2.21 | Ma | Motorphase A
 | X2.22 | Ma | Motorphase A
 | X2.23 | GND | Masse Leistung und Elektronik
 | X2.24 | GND | Masse Leistung und Elektronik
 | X2.25 | GND | Masse Leistung und Elektronik
 | X2.26 | GND | Masse Leistung und Elektronik
 | X2.27 | +Up | Versorgungsspannung Leistung
 | X2.28 | +Up | Versorgungsspannung Leistung
 | X2.29 | +Up | Versorgungsspannung Leistung
 | X2.30 | +Up | Versorgungsspannung Leistung
 | X2.31 | FE | Funktionserde
 | X2.32 | FE | Funktionserde


Inhalt - EDC-E42

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1504954 (HC Version 1504960)
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 50 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 30 A
- Dauerausgangsstrom @ Up=24V*2 (HC Version) | 10 A (12.5) A
- Dauerausgangsstrom @ Up=48V*2 (HC Version) | 8.5 A (12.5) A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH (HC Version) | 110 x 22.5(40) x 77 mm
- Gewicht (HC Version) | 110 (310) g
- Montage | Hutschiene / Wand
- Steckverbinder | Feder-/Schraubklemmen
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | sin / cos
- Signale | +Sin,-Sin,+Cos,-Cos
- Auflösung | 13 Bit pro Sinusperiode
- Eingangssignal | 1 V Spitze-Spitze, differentiell
- Signal-Typ | Sinus/Cosinus, analog, differentiell
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 6..30 V
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 2.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | 0..10 V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | Ma | Motorphase A
 | X1.5 | Mb | Motorphase B
 | X1.6 | Mc | Motorphase C
 | X2.1 | res. | Reserviert
 | X2.2 | res. | Reserviert
 | X2.3 | res. | Reserviert
 | X2.4 | +Sin | Drehgeber, Sinussignal
 | X2.5 | +Cos | Drehgeber, Cosinussignal
 | X2.6 | res. | Reserviert
 | X2.7 | +U5V | 5V Geberversorgung (Drehgeber)
 | X2.8 | res. | Reserviert
 | X2.9 | res. | Reserviert
 | X2.10 | res. | Reserviert
 | X2.11 | -Sin | Drehgeber, Sinussignal negiert
 | X2.12 | -Cos | Drehgeber, Cosinussignal negiert
 | X2.13 | res. | Reserviert
 | X2.14 | GND | Masse Geberversorgung
 | X3.1 | +Ue24V | Versorgungsspannung Elektronik
 | X3.2 | Ain0 | Analoger Eingang 0
 | X3.3 | Din0 | Digitaler Eingang 0
 | X3.4 | Din1 | Digitaler Eingang 1
 | X3.5 | Din2 | Digitaler Eingang 2
 | X3.6 | Din3 | Digitaler Eingang 3
 | X3.7 | GND | Masse Elektronik
 | X3.8 | res. | Reserviert
 | X3.9 | Dout0 | Digitaler Ausgang 0
 | X3.10 | CAN Hi | CAN High
 | X3.11 | CAN Lo | CAN Low
 | X3.12 | CAN GND | CAN Ground


Inhalt - EDC-E45

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1503603 (HC Version 1503608)
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 60 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 50 A
- Dauerausgangsstrom @ Up=24V*2 (HC Version) | 10 A (12.5) A
- Dauerausgangsstrom @ Up=48V*2 (HC Version) | 8.5 A (12.5) A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH (HC Version) | 110 x 22.5(40) x 77 mm
- Gewicht (HC Version) | 110 (310) g
- Montage | Hutschiene / Wand
- Steckverbinder | Feder-/Schraubklemmen
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | inkremental
- Signale | A,/A,B,/B,Inx,/Inx
- Max. Frequenz pro Spur | 500 kHz
- Eingangssignal (24V tolerant) | 5 V
- Signal-Typ | differentiell, open collector, single ended
Hall-Sensoren
- Signale | H1,/H1,H2,/H2,H3,/H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal (24V tolerant) | 5 V
- Signal-Typ | differentiell, open collector, single ended
Digitale Eingänge
- Anzahl | 8 (Din0..7)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 8..30 V
Digitale Ausgänge
- Anzahl | 2 (Dout0..1)
- Dauerausgangsstrom | 2.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | +/- 10V, 12 Bit, differentiell
- Anzahl | 1 (Ain1)
- Signal-Typ | +/- 10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | Ma | Motorphase A
 | X1.5 | Mb | Motorphase B
 | X1.6 | Mc | Motorphase C
 | X2.1 | H1 | Hallsensorsignal 1
 | X2.2 | H2 | Hallsensorsignal 2
 | X2.3 | H3 | Hallsensorsignal 3
 | X2.4 | A | Inkrementalgeber - Spur A
 | X2.5 | B | Inkrementalgeber - Spur B
 | X2.6 | Inx | Inkrementalgeber - Index
 | X2.7 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X2.8 | /H1 | Hallsensorsignal 1 negiert
 | X2.9 | /H2 | Hallsensorsignal 2 negiert
 | X2.10 | /H3 | Hallsensorsignal 3 negiert
 | X2.11 | /A | Inkrementalgeber - Spur A negiert
 | X2.12 | /B | Inkrementalgeber - Spur B negiert
 | X2.13 | /Inx | Inkrementalgeber - Index negiert
 | X2.14 | GND | Masse Geberversorgung
 | X3.1 | +Ue24V | Versorgungsspannung Elektronik
 | X3.2 | +Ain0 | Analoger Eingang 0, Plus
 | X3.3 | Din0 | Digitaler Eingang 0
 | X3.4 | Din1 | Digitaler Eingang 1
 | X3.5 | Din2 | Digitaler Eingang 2
 | X3.6 | Din3 | Digitaler Eingang 3
 | X3.7 | GND | Masse Elektronik
 | X3.8 | -Ain0 | Analoger Eingang 0, Minus
 | X3.9 | Dout0 | Digitaler Ausgang 0
 | X3.10 | CAN Hi | CAN High
 | X3.11 | CAN Lo | CAN Low
 | X3.12 | CAN GND | CAN Ground
 | X4.1 | Ain1 | Analoger Eingang 1
 | X4.2 | Din4 | Digitaler Eingang 4
 | X4.3 | Din5 | Digitaler Eingang 5
 | X4.4 | Din6 | Digitaler Eingang 6
 | X4.5 | Dout1 | Digitaler Ausgang 1
 | X4.6 | Din7 | Digitaler Eingang 7


Inhalt - EDC-E45-Modul

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1503601
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 60 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 50 A
- Dauerausgangsstrom @ Up=24V*2 | 10 A
- Dauerausgangsstrom @ Up=48V*2 | 8.5 A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 97.5 x 71 x 13 mm
- Gewicht | 55 g
- Montage | Backplane
- Steckverbinder | Stiftleiste
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | inkremental
- Signale | A,/A,B,/B,Inx,/Inx
- Max. Frequenz pro Spur | 500 kHz
- Eingangssignal (24V tolerant) | 5 V
- Signal-Typ | differentiell, open collector, single ended
Hall-Sensoren
- Signale | H1,/H1,H2,/H2,H3,/H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal (24V tolerant) | 5 V
- Signal-Typ | differentiell, open collector, single ended
Digitale Eingänge
- Anzahl | 8 (Din0..7)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 8..30 V
Digitale Ausgänge
- Anzahl | 2 (Dout0..1)
- Dauerausgangsstrom | 2.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | +/- 10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | CAN Hi | CAN High
 | X1.2 | CAN Lo | CAN Low
 | X1.3 | Din6 | Digitaler Eingang 6
 | X1.4 | Din7 | Digitaler Eingang 7
 | X1.5 | Din4 | Digitaler Eingang 4
 | X1.6 | Din5 | Digitaler Eingang 5
 | X1.7 | Din2 | Digitaler Eingang 2
 | X1.8 | Din3 | Digitaler Eingang 3
 | X1.9 | Din0 | Digitaler Eingang 0
 | X1.10 | Din1 | Digitaler Eingang 1
 | X1.11 | Ain0 | Analoger Eingang 0
 | X1.12 | Ain1 | Analoger Eingang 1
 | X1.13 | SpiMISO | mcSPI Master In Slave Out
 | X1.14 | Spi/SS | mcSPI Slave Select
 | X1.15 | SpiMOSI | mcSPI Master Out Slave In
 | X1.16 | SpiSCK | mcSPI Clock
 | X1.17 | Rx0 | UART0 Receive Signal
 | X1.18 | Tx0 | UART0 Transmit Signal
 | X1.19 | Erw1 | mcSPI Erweiterungssignal 1
 | X1.20 | Erw2 | mcSPI Erweiterungssignal 2
 | X1.21 | Inx | Inkrementalgeber - Index
 | X1.22 | /Inx | Inkrementalgeber - Index negiert
 | X1.23 | B | Inkrementalgeber - Spur B
 | X1.24 | /B | Inkrementalgeber - Spur B negiert
 | X1.25 | A | Inkrementalgeber - Spur A
 | X1.26 | /A | Inkrementalgeber - Spur A negiert
 | X1.27 | H3 | Hallsensorsignal 3
 | X1.28 | /H3 | Hallsensorsignal 3 negiert
 | X1.29 | H2 | Hallsensorsignal 2
 | X1.30 | /H2 | Hallsensorsignal 2 negiert
 | X1.31 | H1 | Hallsensorsignal 1
 | X1.32 | /H1 | Hallsensorsignal 1 negiert
 | X2.1 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X2.2 | GND | Masse Geberversorgung
 | X2.3 | Dout0 | Digitaler Ausgang 0
 | X2.4 | Dout1 | Digitaler Ausgang 1
 | X2.5 | +Ue24V | Versorgungsspannung Elektronik
 | X2.6 | +Ue24V | Versorgungsspannung Elektronik
 | X2.7 | res. | Reserviert
 | X2.8 | res. | Reserviert
 | X2.9 | res. | Reserviert
 | X2.10 | res. | Reserviert
 | X2.11 | Mc | Motorphase C
 | X2.12 | Mc | Motorphase C
 | X2.13 | Mc | Motorphase C
 | X2.14 | Mc | Motorphase C
 | X2.15 | Mb | Motorphase B
 | X2.16 | Mb | Motorphase B
 | X2.17 | Mb | Motorphase B
 | X2.18 | Mb | Motorphase B
 | X2.19 | Ma | Motorphase A
 | X2.20 | Ma | Motorphase A
 | X2.21 | Ma | Motorphase A
 | X2.22 | Ma | Motorphase A
 | X2.23 | GND | Masse Leistung und Elektronik
 | X2.24 | GND | Masse Leistung und Elektronik
 | X2.25 | GND | Masse Leistung und Elektronik
 | X2.26 | GND | Masse Leistung und Elektronik
 | X2.27 | +Up | Versorgungsspannung Leistung
 | X2.28 | +Up | Versorgungsspannung Leistung
 | X2.29 | +Up | Versorgungsspannung Leistung
 | X2.30 | +Up | Versorgungsspannung Leistung
 | X2.31 | FE | Funktionserde
 | X2.32 | FE | Funktionserde


Inhalt - EDC-E47

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1504972 (HC Version 1504978)
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 60 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 50 A
- Dauerausgangsstrom @ Up=24V*2 (HC Version) | 10 A (12.5) A
- Dauerausgangsstrom @ Up=48V*2 (HC Version) | 8.5 A (12.5) A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH (HC Version) | 110 x 22.5(40) x 77 mm
- Gewicht (HC Version) | 110 (310) g
- Montage | Hutschiene / Wand
- Steckverbinder | Feder-/Schraubklemmen
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | sin / cos
- Signale | +Sin,-Sin,+Cos,-Cos
- Auflösung | 13 Bit pro Sinusperiode
- Eingangssignal | 1 V Spitze-Spitze, differentiell
- Signal-Typ | Sinus/Cosinus, analog, differentiell
Digitale Eingänge
- Anzahl | 7 (Din0..6)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 8..30 V
Digitale Ausgänge
- Anzahl | 2 (Dout0..1)
- Dauerausgangsstrom | 2.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | +/- 10V, 12 Bit, differentiell
- Anzahl | 1 (Ain1)
- Signal-Typ | +/- 10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Inhalt - Gerätefamilie EDC-E5x

EDC-E50

EDC-E51-Lp

EDC-E52

EDC-E55

EDC-E55-Modul

EDC-E55-Lp

EDC-E56-Lp

EDC-E57


Inhalt - EDC-E50

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1511720
Absolut max. Rating
- Spannung (Zerstörungsgrenze) Up kein Verpolungsschutz | 100 V
- Dauerspannung (Zerstörungsgrenze) Ue kein Verpolungsschutz | 33 V
- Kurzfristige Spitzenspannung < 1s Ue (Zerstörungsgrenze) kein Verpolungsschutz | 37 V
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V*1 | typ. 60 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 25 A
- Dauerausgangsstrom*2 | 8 A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 25, 32*3, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 78 x 74 x 28 mm
- Gewicht | 100 g
- Montage | Wand
- Steckverbinder | Feder-/Schraubklemmen, Crimp-Technik
Umgebung
- Schutzart | IP20
- Temperaturbereich | -25..55 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..90 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*3 us
- Positionierregler (POS) | 1000, 2000*3 us
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein
Geberversorgung (Drehgeber/Hall)
- Ausgangsspannung | 5 V
- Maximaler Ausgangsstrom | 0.2 A
Drehgeber
- Typ | inkremental
- Signale | A,B,Inx
- Max. Frequenz pro Spur | 100 kHz
- Eingangssignal | 0..5 V
- Signal-Typ | Open Collector, Single Ended, 920 Ohm Eingangsimpedanz
Hall-Sensoren
- Signale | H1,H2,H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal | 0..5 V
- Signal-Typ | Open Collector, Single Ended, 5V Pull Up intern 920 Ohm
Digitale Eingänge
- Anzahl | 8 (Din0..7)
- Low-Pegel @Ta = 25°C | 0..5 V
- High-Pegel @Ta = 25°C | 8..30 V
Digitale Ausgänge
- Anzahl | 4 (Dout0..3)
- Dauerausgangsstrom | 0.3 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | 0..10 V, 12 Bit, Single Ended, 20 kOhm Eingangsimpedanz
- Anzahl | 1 (Ain2)
- Signal-Typ | 0 .. 5V, 12 Bit, Single Ended, 5V Pull Up intern 1,5 kOhm

Änderungen und Irrtümer vorbehalten
*1 Endstufe aus, 5V Ausgang (Geberversorgung) ist unbelastet
*2 Umgebungstemperatur 40 °C Derating, keine Garantie, da der Wert empirisch ermittelt wurde
*3 Standardwert


Klemmenbelegung und Abbildung

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | +Ue24V | Versorgungsspannung Elektronik
 | X1.5 | GND | Masse Elektronik
 | X2.1 | Ain0 | Analoger Eingang 0
 | X2.2 | res. | Reserviert
 | X2.3 | Ain1 | Analoger Eingang 1
 | X2.4 | res. | Reserviert
 | X2.5 | Ain2 | Analoger Eingang 2 (5V)
 | X3.1 | CAN Hi | CAN High
 | X3.2 | CAN Lo | CAN Low
 | X3.3 | res. | Reserviert
 | X4.1 | res. | Reserviert
 | X4.2 | Din0 | Digitaler Eingang 0
 | X4.3 | Din1 | Digitaler Eingang 1
 | X4.4 | Din2 | Digitaler Eingang 2
 | X4.5 | Din3 | Digitaler Eingang 3
 | X4.6 | Din4 | Digitaler Eingang 4
 | X4.7 | Din5 | Digitaler Eingang 5
 | X4.8 | Din6 | Digitaler Eingang 6
 | X4.9 | Din7 | Digitaler Eingang 7
 | X4.10 | Dout0 | Digitaler Ausgang 0
 | X4.11 | Dout1 | Digitaler Ausgang 1
 | X4.12 | Dout2 | Digitaler Ausgang 2
 | X4.13 | Dout3 | Digitaler Ausgang 3
 | X5.1 | H1 | Hallsensorsignal 1
 | X5.2 | H2 | Hallsensorsignal 2
 | X5.3 | H3 | Hallsensorsignal 3
 | X5.4 | A | Inkrementalgeber - Spur A
 | X5.5 | res. | Reserviert
 | X5.6 | B | Inkrementalgeber - Spur B
 | X5.7 | res. | Reserviert
 | X5.8 | Inx | Inkrementalgeber - Index
 | X5.9 | +U5V | 5V Geberversorgung (Drehgeber)
 | X5.10 | GND | Masse Geberversorgung
 | X6.1 | Ma | Motorphase A
 | X6.2 | Mb | Motorphase B
 | X6.3 | Mc | Motorphase C


Beschaltungsbeispiele

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

EMV-gerechte Verdrahtung

Achten Sie bei der Installation des Geräts auf die Einhaltung der Bedinugnen für elektromagnitische Verträglichkeit (siehe EMV-gerechte Verkabelung und Installation)

Elektrostatisch empfindliche Geräte und Komponenten

Bei Installation, Inbetriebnahme und Service der Geräte müssen Schutzmaßnahme gegen die Einwirkung von elektrostatischen Entladungen (ESD) eingehalten werden. Das betrifft insbesondere antistatische Kleidung, antistatische Werkzeuge und einer antistatische Arbeitsumgebung. Die Geräte müssen diesbezüglich mit besondere Sorgfalt behandelt werden.
Zum Schutz gegen elektrostatische Entladungen im Betrieb müssen an das Gerät alle Steckverbinder angesteckt werden, auch wenn die darauf befindlichen Signale nicht benutzt werden. Die Steckverbinder dienen als Schutz gegen Berührung.
Leiterplatten ohne Gehäuse dürfen nur von geschultem Personal in einer antistatischen Umgebung verarbeitet werden.

Bürstenloser Motor mit Encoder (single-ended Leitungen)

Bürstenbehafteter Motor

Schalter

Potentiometer

SPS - IO Ansteuerung

Regler im SVEL-Modus mit SPS


Inhalt - EDC-E51-Lp

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Magnetischer Encoder-Chip

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1511723
Absolut max. Rating
- Spannung (Zerstörungsgrenze) Up kein Verpolungsschutz | 100 V
- Dauerspannung (Zerstörungsgrenze) Ue kein Verpolungsschutz | 33 V
- Kurzfristige Spitzenspannung < 1s Ue (Zerstörungsgrenze) kein Verpolungsschutz | 37 V
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V*1 | typ. 60 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 25 A
- Dauerausgangsstrom*2 | 8 A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 25, 32*3, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 70 x 50 x 18 mm
- Gewicht | 50 g
- Montage | Wand
- Steckverbinder | Feder-/Schraubklemmen, Crimp-Technik
Umgebung
- Schutzart | IP00
- Temperaturbereich | -25..55 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..90 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*3 us
- Positionierregler (POS) | 1000, 2000*3 us
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein
Sensor supply (Hall)
- Ausgangsspannung | 5 V
- Maximaler Ausgangsstrom | 0.2 A
Encoder
- Typ | Magnetsensor
- Signale | A, B
- Auflösung | 12 Bit pro Wellenumdrehung kHz
- Signal-Typ | Magnetsensor für Magnet auf der Motorwelle
Hall-Sensoren
- Signale | H1,H2,H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal | 0..5 V
- Signal-Typ | Open Collector, Single Ended, 5V Pull Up intern 920 Ohm
Digitale Eingänge
- Anzahl | 8 (Din0..7)
- Low-Pegel @Ta = 25°C | 0..5 V
- High-Pegel @Ta = 25°C | 8..30 V
Digitale Ausgänge
- Anzahl | 4 (Dout0..3)
- Dauerausgangsstrom | 0.3 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | 0..10 V, 12 Bit, Single Ended, 20 kOhm Eingangsimpedanz
- Anzahl | 1 (Ain2)
- Signal-Typ | 0 .. 5V, 12 Bit, Single Ended, 5V Pull Up intern 1,5 kOhm

Änderungen und Irrtümer vorbehalten
*1 Endstufe aus, 5V Ausgang (Geberversorgung) ist unbelastet
*2 Umgebungstemperatur 40 °C Derating, keine Garantie, da der Wert empirisch ermittelt wurde
*3 Standardwert


Klemmenbelegung und Abbildung

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | +Ue24V | Versorgungsspannung Elektronik
 | X1.5 | GND | Masse Elektronik
 | X2.1 | Ain0 | Analoger Eingang 0
 | X2.2 | res. | Reserviert
 | X2.3 | Ain1 | Analoger Eingang 1
 | X2.4 | res. | Reserviert
 | X2.5 | Ain2 | Analoger Eingang 2 (5V)
 | X3.1 | CAN Hi | CAN High
 | X3.2 | CAN Lo | CAN Low
 | X3.3 | res. | Reserviert
 | X4.1 | res. | Reserviert
 | X4.2 | Din0 | Digitaler Eingang 0
 | X4.3 | Din1 | Digitaler Eingang 1
 | X4.4 | Din2 | Digitaler Eingang 2
 | X4.5 | Din3 | Digitaler Eingang 3
 | X4.6 | Din4 | Digitaler Eingang 4
 | X4.7 | Din5 | Digitaler Eingang 5
 | X4.8 | Din6 | Digitaler Eingang 6
 | X4.9 | Din7 | Digitaler Eingang 7
 | X4.10 | Dout0 | Digitaler Ausgang 0
 | X4.11 | Dout1 | Digitaler Ausgang 1
 | X4.12 | Dout2 | Digitaler Ausgang 2
 | X4.13 | Dout3 | Digitaler Ausgang 3
 | X5.1 | H1 | Hallsensorsignal 1
 | X5.2 | H2 | Hallsensorsignal 2
 | X5.3 | H3 | Hallsensorsignal 3
 | X5.4 | res. | Reserviert
 | X5.5 | res. | Reserviert
 | X5.6 | res. | Reserviert
 | X5.7 | res. | Reserviert
 | X5.8 | res. | Reserviert
 | X5.9 | +U5V | 5V Geberversorgung (Drehgeber)
 | X5.10 | GND | Masse Geberversorgung
 | X6.1 | Ma | Motorphase A
 | X6.2 | Mb | Motorphase B
 | X6.3 | Mc | Motorphase C


Beschaltungsbeispiele

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

EMV-gerechte Verdrahtung

Achten Sie bei der Installation des Geräts auf die Einhaltung der Bedinugnen für elektromagnitische Verträglichkeit (siehe EMV-gerechte Verkabelung und Installation)

Elektrostatisch empfindliche Geräte und Komponenten

Bei Installation, Inbetriebnahme und Service der Geräte müssen Schutzmaßnahme gegen die Einwirkung von elektrostatischen Entladungen (ESD) eingehalten werden. Das betrifft insbesondere antistatische Kleidung, antistatische Werkzeuge und einer antistatische Arbeitsumgebung. Die Geräte müssen diesbezüglich mit besondere Sorgfalt behandelt werden.
Zum Schutz gegen elektrostatische Entladungen im Betrieb müssen an das Gerät alle Steckverbinder angesteckt werden, auch wenn die darauf befindlichen Signale nicht benutzt werden. Die Steckverbinder dienen als Schutz gegen Berührung.
Leiterplatten ohne Gehäuse dürfen nur von geschultem Personal in einer antistatischen Umgebung verarbeitet werden.

Schalter

Potentiometer

SPS - IO Ansteuerung


Inhalt - EDC-E52

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1511848
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 25 A
- Dauerausgangsstrom*2 | 6 A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 25, 32*2, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 78 x 74 x 28 mm
- Gewicht | 100 g
- Montage | Wand
- Steckverbinder | Feder-/Schraubklemmen, Crimp-Technik
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..40 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*2 us
- Positionierregler (POS) | 1000, 2000*2 us
Drehgeber
- Typ | sin / cos
- Signale | +Sin,-Sin,+Cos,-Cos
- Auflösung | 13 Bit pro Sinusperiode
- Eingangssignal | 1 V Spitze-Spitze, differentiell
- Signal-Typ | Sinus/Cosinus, analog, differentiell, 1,085 kOhm
Digitale Eingänge
- Anzahl | 8 (Din0..7)
- Low-Pegel @Ta = 25°C | -30..5 V
- High-Pegel @Ta = 25°C | 7.5..30 V
Digitale Ausgänge
- Anzahl | 4 (Dout0..3)
- Dauerausgangsstrom | 0.3 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | 0..10 V, 12 Bit, Single Ended, 20 kOhm Eingangsimpedanz
- Anzahl | 1 (Ain2)
- Signal-Typ | 0 .. 5V, 12 Bit, Single Ended, 5V Pull Up intern 1,5 kOhm
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | +Ue24V | Versorgungsspannung Elektronik
 | X1.5 | GND | Masse Elektronik
 | X2.1 | Ain0 | Analoger Eingang 0
 | X2.2 | res. | Reserviert
 | X2.3 | Ain1 | Analoger Eingang 1
 | X2.4 | res. | Reserviert
 | X2.5 | Ain2 | Analoger Eingang 2 (5V)
 | X3.1 | CAN Hi | CAN High
 | X3.2 | CAN Lo | CAN Low
 | X3.3 | CAN GND | Masse für CAN
 | X4.1 | res. | Reserviert
 | X4.2 | Din0 | Digitaler Eingang 0
 | X4.3 | Din1 | Digitaler Eingang 1
 | X4.4 | Din2 | Digitaler Eingang 2
 | X4.5 | Din3 | Digitaler Eingang 3
 | X4.6 | Din4 | Digitaler Eingang 4
 | X4.7 | Din5 | Digitaler Eingang 5
 | X4.8 | Din6 | Digitaler Eingang 6
 | X4.9 | Din7 | Digitaler Eingang 7
 | X4.10 | Dout0 | Digitaler Ausgang 0
 | X4.11 | Dout1 | Digitaler Ausgang 1
 | X4.12 | Dout2 | Digitaler Ausgang 2
 | X4.13 | Dout3 | Digitaler Ausgang 3
 | X5.1 | res. | Reserviert
 | X5.2 | res. | Reserviert
 | X5.3 | res. | Reserviert
 | X5.4 | +Sin | Drehgeber, Sinussignal
 | X5.5 | -Sin | Drehgeber, Sinussignal negiert
 | X5.6 | +Cos | Drehgeber, Cosinussignal
 | X5.7 | -Cos | Drehgeber, Cosinussignal negiert
 | X5.8 | res. | Reserviert
 | X5.9 | +U5V | 5V Geberversorgung (Drehgeber)
 | X5.10 | GND | Masse Geberversorgung
 | X6.1 | Ma | Motorphase A
 | X6.2 | Mb | Motorphase B
 | X6.3 | Mc | Motorphase C


Inhalt - EDC-E55

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1511721
Absolut max. Rating
- Spannung (Zerstörungsgrenze) Up kein Verpolungsschutz | 100 V
- Dauerspannung (Zerstörungsgrenze) Ue kein Verpolungsschutz | 33 V
- Kurzfristige Spitzenspannung < 1s Ue (Zerstörungsgrenze) kein Verpolungsschutz | 37 V
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V*1 | typ. 60 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 50 A
- Dauerausgangsstrom*2 | 10 A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*3, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 78 x 74 x 28 mm
- Gewicht | 100 g
- Montage | Wand
- Steckverbinder | Feder-/Schraubklemmen, Crimp-Technik
Umgebung
- Schutzart | IP20
- Temperaturbereich | -25..55 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..90 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*3 us
- Positionierregler (POS) | 1000, 2000*3 us
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein
Geberversorgung (Drehgeber/Hall)
- Ausgangsspannung | 5 V
- Maximaler Ausgangsstrom | 0.2 A
Drehgeber
- Typ | inkremental
- Signale | A,/A,B,/B,Inx
- Max. Frequenz pro Spur | 500 kHz
- Eingangssignal (24V tolerant) | 0..5 V
- Signal-Typ | Differential, Open Collector, Single Ended, 2,5 kOhm Eingangsimpedanz
Hall-Sensoren
- Signale | H1,H2,H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal | 0..5 V
- Signal-Typ | Open Collector, Single Ended, 5V Pull Up intern 920 Ohm
Digitale Eingänge
- Anzahl | 8 (Din0..7)
- Low-Pegel @Ta = 25°C | 0..5 V
- High-Pegel @Ta = 25°C | 8..30 V
Digitale Ausgänge
- Anzahl | 4 (Dout0..3)
- Dauerausgangsstrom | 0.3 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | +/- 10 V, 12 Bit, differentiell, 200 kOhm Eingangsimpedanz
- Anzahl | 1 (Ain2)
- Signal-Typ | 0 .. 5V, 12 Bit, Single Ended, 5V Pull Up intern 1,5 kOhm

Änderungen und Irrtümer vorbehalten
*1 Endstufe aus, 5V Ausgang (Geberversorgung) ist unbelastet
*2 Umgebungstemperatur 40 °C Derating, keine Garantie, da der Wert empirisch ermittelt wurde
*3 Standardwert


Klemmenbelegung und Abbildung

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | +Ue24V | Versorgungsspannung Elektronik
 | X1.5 | GND | Masse Elektronik
 | X2.1 | +Ain0 | Analoger Eingang 0, Plus
 | X2.2 | -Ain0 | Analoger Eingang 0, Minus
 | X2.3 | +Ain1 | Analoger Eingang 1, Plus
 | X2.4 | -Ain1 | Analoger Eingang 1, Minus
 | X2.5 | Ain2 | Analoger Eingang 2 (5V)
 | X3.1 | CAN Hi | CAN High
 | X3.2 | CAN Lo | CAN Low
 | X3.3 | res. | Reserviert
 | X4.1 | res. | Reserviert
 | X4.2 | Din0 | Digitaler Eingang 0
 | X4.3 | Din1 | Digitaler Eingang 1
 | X4.4 | Din2 | Digitaler Eingang 2
 | X4.5 | Din3 | Digitaler Eingang 3
 | X4.6 | Din4 | Digitaler Eingang 4
 | X4.7 | Din5 | Digitaler Eingang 5
 | X4.8 | Din6 | Digitaler Eingang 6
 | X4.9 | Din7 | Digitaler Eingang 7
 | X4.10 | Dout0 | Digitaler Ausgang 0
 | X4.11 | Dout1 | Digitaler Ausgang 1
 | X4.12 | Dout2 | Digitaler Ausgang 2
 | X4.13 | Dout3 | Digitaler Ausgang 3
 | X5.1 | H1 | Hallsensorsignal 1
 | X5.2 | H2 | Hallsensorsignal 2
 | X5.3 | H3 | Hallsensorsignal 3
 | X5.4 | A | Inkrementalgeber - Spur A
 | X5.5 | /A | Inkrementalgeber - Spur A negiert
 | X5.6 | B | Inkrementalgeber - Spur B
 | X5.7 | /B | Inkrementalgeber - Spur B negiert
 | X5.8 | Inx | Inkrementalgeber - Index
 | X5.9 | +U5V | 5V Geberversorgung (Drehgeber)
 | X5.10 | GND | Masse Geberversorgung
 | X6.1 | Ma | Motorphase A
 | X6.2 | Mb | Motorphase B
 | X6.3 | Mc | Motorphase C


Inhalt - EDC-E55-Modul

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1511968
Absolut max. Rating
- Spannung (Zerstörungsgrenze) Up kein Verpolungsschutz | 100 V
- Dauerspannung (Zerstörungsgrenze) Ue kein Verpolungsschutz | 33 V
- Kurzfristige Spitzenspannung < 1s Ue (Zerstörungsgrenze) kein Verpolungsschutz | 37 V
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 50 A
- Dauerausgangsstrom*2 | 10 A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*2, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 70 x 50 x 18 mm
- Gewicht | 50 g
- Montage | Backplane
- Steckverbinder | Stiftleiste
Umgebung
- Schutzart | IP00
- Temperaturbereich | -25..55 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Geberversorgung (Drehgeber/Hall)
- Ausgangsspannung | 5 V
- Maximaler Ausgangsstrom | 0.2 A
Drehgeber
- Typ | inkremental
- Signale | A,/A,B,/B,Inx
- Max. Frequenz pro Spur | 100 kHz
- Eingangssignal | 0..5 V
- Signal-Typ | differentiell, open collector, single ended
Hall-Sensoren
- Signale | H1,H2,H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal | 0..5 V
- Signal-Typ | open collector, single ended
Digitale Eingänge
- Anzahl | 8 (Din0..7)
- Low-Pegel | 0..5 V
- High-Pegel | 8..30 V
Digitale Ausgänge
- Anzahl | 4 (Dout0..3)
- Dauerausgangsstrom | 0.3 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | +/- 10 V, 12 Bit, differentiell, 200 kOhm Eingangsimpedanz
- Anzahl | 1 (Ain2)
- Signal-Typ | 0 .. 5V, 12 Bit, Single Ended, 5V Pull Up intern 1,5 kOhm
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | FE | Funktionserde
 | X1.3 | +Up | Versorgungsspannung Leistung
 | X1.4 | +Up | Versorgungsspannung Leistung
 | X1.5 | +Up | Versorgungsspannung Leistung
 | X1.6 | +Up | Versorgungsspannung Leistung
 | X1.7 | GND | Masse Leistung
 | X1.8 | GND | Masse Leistung
 | X1.9 | GND | Masse Leistung
 | X1.10 | GND | Masse Leistung
 | X1.11 | +Ue24V | Versorgungsspannung Elektronik
 | X1.12 | +Ue24V | Versorgungsspannung Elektronik
 | X1.13 | GND | Masse Elektronik
 | X1.14 | GND | Masse Elektronik
 | X1.15 | GND | Masse Elektronik
 | X1.16 | GND | Masse Elektronik
 | X2.1 | +Ain0 | Analoger Eingang 0, Plus
 | X2.2 | -Ain0 | Analoger Eingang 0, Minus
 | X2.3 | +Ain1 | Analoger Eingang 1, Plus
 | X2.4 | -Ain1 | Analoger Eingang 1, Minus
 | X2.5 | Ain2 | Analoger Eingang 2 (5V)
 | X3.1 | CAN Hi | CAN High
 | X3.2 | CAN Lo | CAN Low
 | X3.3 | res. | Reserviert
 | X4.1 | res. | Reserviert
 | X4.2 | Din0 | Digitaler Eingang 0
 | X4.3 | Din1 | Digitaler Eingang 1
 | X4.4 | Din2 | Digitaler Eingang 2
 | X4.5 | Din3 | Digitaler Eingang 3
 | X4.6 | Din4 | Digitaler Eingang 4
 | X4.7 | Din5 | Digitaler Eingang 5
 | X4.8 | Din6 | Digitaler Eingang 6
 | X4.9 | Din7 | Digitaler Eingang 7
 | X4.10 | Dout0 | Digitaler Ausgang 0
 | X4.11 | Dout1 | Digitaler Ausgang 1
 | X4.12 | Dout2 | Digitaler Ausgang 2
 | X4.13 | Dout3 | Digitaler Ausgang 3
 | X5.1 | res. | Reserviert
 | X5.2 | GND | Masse Geberversorgung
 | X5.3 | Erw5 | mcSPI expansion signal 5
 | X5.4 | +U5V | 5V Geberversorgung (Drehgeber)
 | X5.5 | Erw3 | mcSPI expansion signal 3
 | X5.6 | Inx | Inkrementalgeber - Index
 | X5.7 | Erw4 | mcSPI expansion signal 4
 | X5.8 | /B | Inkrementalgeber - Spur B negiert
 | X5.9 | SpiMISO | mcSPI Master In Slave Out
 | X5.10 | B | Inkrementalgeber - Spur B
 | X5.11 | Spi/SS | mcSPI Slave Select
 | X5.12 | /A | Inkrementalgeber - Spur A negiert
 | X5.13 | SpiMOSI | mcSPI Master Out Slave In
 | X5.14 | A | Inkrementalgeber - Spur A
 | X5.15 | SpiCLK | mcSPI Clock
 | X5.16 | H3 | Hallsensorsignal 3
 | X5.17 | Erw1 | mcSPI Erweiterungssignal 1
 | X5.18 | H2 | Hallsensorsignal 2
 | X5.19 | Erw2 | mcSPI Erweiterungssignal 2
 | X5.20 | H1 | Hallsensorsignal 1
 | X6.1 | Ma | Motorphase A
 | X6.2 | Ma | Motorphase A
 | X6.3 | Ma | Motorphase A
 | X6.4 | Ma | Motorphase A
 | X6.5 | Mb | Motorphase B
 | X6.6 | Mb | Motorphase B
 | X6.7 | Mb | Motorphase B
 | X6.8 | Mb | Motorphase B
 | X6.9 | Mc | Motorphase C
 | X6.10 | Mc | Motorphase C
 | X6.11 | Mc | Motorphase C
 | X6.12 | Mc | Motorphase C
 | X7.1 | Id6 | Node-ID Bit 6
 | X7.2 | Id5 | Node-ID Bit 5
 | X7.3 | Id7 | Node-ID Bit 7
 | X7.4 | Id4 | Node-ID Bit 4
 | X7.5 | GND | Masse
 | X7.6 | GND | Masse
 | X7.7 | Id2 | Node-ID Bit 2
 | X7.8 | Id1 | Node-ID Bit 1
 | X7.9 | Id3 | Node-ID Bit 3
 | X7.10 | Id0 | Node-ID Bit 0


Steckverbindersysteme

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!

2mm Raster Modul-Leisten
Die Modul-Varianten verwenden überwiegend 2mm Raster Steckverbinder der Firma SAMTEC. Zu beachten sind bei der Auswahl von Alternativen zum einen die Strombelastbarkeit und die Bauform der Stecker (Löttechnik und Höhe). Mechanisch vergleichbare Steckverbinder gibt es zum Bsp. von der Firma W+P.

Die Abbildung zeigt die gängigen Varianten:

Klemme | Bezeichnung / Art.-Nr. - Träger-Board (SMT) - Träger-Board (THT) | Hersteller | Gesamthöhe - PCB <-> PCB [mm] | Strombelastbarkeit [A]
I | - TMM-116-01-L-D-SM - TMM-116-01-L-D | SAMTEC | 10,4 (SMT)* 9,12 (THT)* | 1
II | - TMM-108-01-L-D-SM - TMM-108-01-L-D | SAMTEC | 10,4 (SMT)* 9,12 (THT)* | 3A@Ta=80°C
X1 | ? | SAMTEC | 10,4 (SMT)* 9,12 (THT)* | ?
X2 | ? | JST | 10,4 (SMT)* 9,12 (THT)* | 0.7
X3 | ? | JST | 10,4 (SMT)* 9,12 (THT)* | ?
X4 | ? | JST | 10,4 (SMT)* 9,12 (THT)* | ?
X5 | ? | SAMTEC | 10,4 (SMT)* 9,12 (THT)* | ?
X6 | ? | SAMTEC | 10,4 (SMT)* 9,12 (THT)* | ?
X7 | ? | SAMTEC | 10,4 (SMT)* 9,12 (THT)* | ?

Beachten Sie bitte die Einstecktiefe (typ. 3,2 mm) und den Querschnitt (typ. 0,5 x 0,5 mm) der Pins.
Weitere Information finden Sie unter www.samtec.com.


Beschaltungsbeispiele

Elektrostatisch empfindliche Geräte und Komponenten

Bei Installation, Inbetriebnahme und Service der Geräte müssen Schutzmaßnahme gegen die Einwirkung von elektrostatischen Entladungen (ESD) eingehalten werden. Das betrifft insbesondere antistatische Kleidung, antistatische Werkzeuge und einer antistatische Arbeitsumgebung. Die Geräte müssen diesbezüglich mit besondere Sorgfalt behandelt werden.
Zum Schutz gegen elektrostatische Entladungen im Betrieb müssen an das Gerät alle Steckverbinder angesteckt werden, auch wenn die darauf befindlichen Signale nicht benutzt werden. Die Steckverbinder dienen als Schutz gegen Berührung.
Leiterplatten ohne Gehäuse dürfen nur von geschultem Personal in einer antistatischen Umgebung verarbeitet werden.

Node-Id über Hex-Schalter

Die Eingänge für die Hex-Schalter Node-Id sind Low-Aktiv. Um die Node-Id 1 über die Hex-schalter einzustellen muss die folgende Konfiguration verwendet werden.


Inhalt - EDC-E55-Lp

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer |
Absolut max. Rating
- Spannung (Zerstörungsgrenze) Up kein Verpolungsschutz | 100 V
- Dauerspannung (Zerstörungsgrenze) Ue kein Verpolungsschutz | 33 V
- Kurzfristige Spitzenspannung < 1s Ue (Zerstörungsgrenze) kein Verpolungsschutz | 37 V
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V*1 | typ. 60 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 50 A
- Dauerausgangsstrom*2 | 14 A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*3, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 87 x 74 x 28 mm
- Gewicht | 154 g
- Montage | Wand
- Steckverbinder | Feder-/Schraubklemmen, Crimp-Technik
Umgebung
- Schutzart | IP20
- Temperaturbereich | -25..55 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..90 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*3 us
- Positionierregler (POS) | 1000, 2000*3 us
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein
Geberversorgung (Drehgeber/Hall)
- Ausgangsspannung | 5 V
- Maximaler Ausgangsstrom | 0.2 A
Drehgeber
- Typ | inkremental
- Signale | A,/A,B,/B,Inx
- Max. Frequenz pro Spur | 500 kHz
- Eingangssignal (24V tolerant) | 0..5 V
- Signal-Typ | Differential, Open Collector, Single Ended, 2,5 kOhm Eingangsimpedanz
Hall-Sensoren
- Signale | H1,H2,H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal | 0..5 V
- Signal-Typ | Open Collector, Single Ended, 5V Pull Up intern 920 Ohm
Digitale Eingänge
- Anzahl | 8 (Din0..7)
- Low-Pegel @Ta = 25°C | 0..5 V
- High-Pegel @Ta = 25°C | 8..30 V
Digitale Ausgänge
- Anzahl | 4 (Dout0..3)
- Dauerausgangsstrom | 0.3 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | +/- 10 V, 12 Bit, differentiell, 200 kOhm Eingangsimpedanz
- Anzahl | 1 (Ain2)
- Signal-Typ | 0 .. 5V, 12 Bit, Single Ended, 5V Pull Up intern 1,5 kOhm

Änderungen und Irrtümer vorbehalten
*1 Endstufe aus, 5V Ausgang (Geberversorgung) ist unbelastet
*2 Umgebungstemperatur 40 °C Derating, keine Garantie, da der Wert empirisch ermittelt wurde
*3 Standardwert


Inhalt - EDC-E56-Lp

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Beschaltungsbeispiele

Magnetischer Encoder-Chip

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1511724
Absolut max. Rating
- Spannung (Zerstörungsgrenze) Up kein Verpolungsschutz | 100 V
- Dauerspannung (Zerstörungsgrenze) Ue kein Verpolungsschutz | 33 V
- Kurzfristige Spitzenspannung < 1s Ue (Zerstörungsgrenze) kein Verpolungsschutz | 37 V
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V*1 | typ. 60 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 50 A
- Dauerausgangsstrom*2 | 10 A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*3, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 70 x 50 x 18 mm
- Gewicht | 50 g
- Montage | Wand
- Steckverbinder | Feder-/Schraubklemmen, Crimp-Technik
Umgebung
- Schutzart | IP00
- Temperaturbereich | -25..55 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..90 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*3 us
- Positionierregler (POS) | 1000, 2000*3 us
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein
Sensor supply (Hall)
- Ausgangsspannung | 5 V
- Maximaler Ausgangsstrom | 0.2 A
Encoder
- Typ | Magnetsensor
- Signale | A, B
- Auflösung | 12 Bit pro Wellenumdrehung kHz
- Signal-Typ | Magnetsensor für Magnet auf der Motorwelle
Hall-Sensoren
- Signale | H1,H2,H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal | 0..5 V
- Signal-Typ | Open Collector, Single Ended, 5V Pull Up intern 920 Ohm
Digitale Eingänge
- Anzahl | 8 (Din0..7)
- Low-Pegel @Ta = 25°C | 0..5 V
- High-Pegel @Ta = 25°C | 8..30 V
Digitale Ausgänge
- Anzahl | 4 (Dout0..3)
- Dauerausgangsstrom | 0.3 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | +/- 10 V, 12 Bit, differentiell, 200 kOhm Eingangsimpedanz
- Anzahl | 1 (Ain2)
- Signal-Typ | 0 .. 5V, 12 Bit, Single Ended, 5V Pull Up intern 1,5 kOhm

Änderungen und Irrtümer vorbehalten
*1 Endstufe aus, 5V Ausgang (Geberversorgung) ist unbelastet
*2 Umgebungstemperatur 40 °C Derating, keine Garantie, da der Wert empirisch ermittelt wurde
*3 Standardwert


Klemmenbelegung und Abbildung

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | +Ue24V | Versorgungsspannung Elektronik
 | X1.5 | GND | Masse Elektronik
 | X2.1 | +Ain0 | Analoger Eingang 0, Plus
 | X2.2 | -Ain0 | Analoger Eingang 0, Minus
 | X2.3 | +Ain1 | Analoger Eingang 1, Plus
 | X2.4 | -Ain1 | Analoger Eingang 1, Minus
 | X2.5 | Ain2 | Analoger Eingang 2 (5V)
 | X3.1 | CAN Hi | CAN High
 | X3.2 | CAN Lo | CAN Low
 | X3.3 | res. | Reserviert
 | X4.1 | res. | Reserviert
 | X4.2 | Din0 | Digitaler Eingang 0
 | X4.3 | Din1 | Digitaler Eingang 1
 | X4.4 | Din2 | Digitaler Eingang 2
 | X4.5 | Din3 | Digitaler Eingang 3
 | X4.6 | Din4 | Digitaler Eingang 4
 | X4.7 | Din5 | Digitaler Eingang 5
 | X4.8 | Din6 | Digitaler Eingang 6
 | X4.9 | Din7 | Digitaler Eingang 7
 | X4.10 | Dout0 | Digitaler Ausgang 0
 | X4.11 | Dout1 | Digitaler Ausgang 1
 | X4.12 | Dout2 | Digitaler Ausgang 2
 | X4.13 | Dout3 | Digitaler Ausgang 3
 | X5.1 | H1 | Hallsensorsignal 1
 | X5.2 | H2 | Hallsensorsignal 2
 | X5.3 | H3 | Hallsensorsignal 3
 | X5.4 | res. | Reserviert
 | X5.5 | res. | Reserviert
 | X5.6 | res. | Reserviert
 | X5.7 | res. | Reserviert
 | X5.8 | res. | Reserviert
 | X5.9 | +U5V | 5V Geberversorgung (Drehgeber)
 | X5.10 | GND | Masse Geberversorgung
 | X6.1 | Ma | Motorphase A
 | X6.2 | Mb | Motorphase B
 | X6.3 | Mc | Motorphase C


Inhalt - EDC-E57

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1512015
Absolut max. Rating
- Spannung (Zerstörungsgrenze) Up kein Verpolungsschutz | 100 V
- Dauerspannung (Zerstörungsgrenze) Ue kein Verpolungsschutz | 33 V
- Kurzfristige Spitzenspannung < 1s Ue (Zerstörungsgrenze) kein Verpolungsschutz | 37 V
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 50 A
- Dauerausgangsstrom @ Up=24V*1 | TBD A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*2, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 78 x 74 x 28 mm
- Gewicht | 100 g
- Montage | Wand
- Steckverbinder | Feder-/Schraubklemmen, Crimp-Technik
Umgebung
- Schutzart | IP20
- Temperaturbereich | -25..55 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*2 us
- Positionierregler (POS) | 1000, 2000*2 us
Geberversorgung
- Ausgangsspannung | 5 V
- Maximaler Ausgangsstrom | 0.2 A
Drehgeber
- Typ | sin / cos
- Signale | +Sin,-Sin,+Cos,-Cos
- Auflösung | 13 Bit pro Sinusperiode
- Eingangssignal | 1 V Spitze-Spitze, differentiell
- Signal-Typ | Sinus/Cosinus, analog, differentiell, 1,085 kOhm
Digitale Eingänge
- Anzahl | 8 (Din0..7)
- Low-Pegel @Ta = 25°C | 0..5 V
- High-Pegel @Ta = 25°C | 7.5..30 V
Digitale Ausgänge
- Anzahl | 4 (Dout0..3)
- Dauerausgangsstrom | 0.3 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | +/- 10 V, 12 Bit, differentiell, 200 kOhm Eingangsimpedanz
- Anzahl | 1 (Ain2)
- Signal-Typ | 0 .. 5V, 12 Bit, Single Ended, 5V Pull Up intern 1,5 kOhm
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | +Ue24V | Versorgungsspannung Elektronik
 | X1.5 | GND | Masse Elektronik
 | X2.1 | +Ain0 | Analoger Eingang 0, Plus
 | X2.2 | -Ain0 | Analoger Eingang 0, Minus
 | X2.3 | +Ain1 | Analoger Eingang 1, Plus
 | X2.4 | -Ain1 | Analoger Eingang 1, Minus
 | X2.5 | Ain2 | Analoger Eingang 2 (5V)
 | X3.1 | CAN Hi | CAN High
 | X3.2 | CAN Lo | CAN Low
 | X3.3 | CAN GND | Masse für CAN
 | X4.1 | res. | Reserviert
 | X4.2 | Din0 | Digitaler Eingang 0
 | X4.3 | Din1 | Digitaler Eingang 1
 | X4.4 | Din2 | Digitaler Eingang 2
 | X4.5 | Din3 | Digitaler Eingang 3
 | X4.6 | Din4 | Digitaler Eingang 4
 | X4.7 | Din5 | Digitaler Eingang 5
 | X4.8 | Din6 | Digitaler Eingang 6
 | X4.9 | Din7 | Digitaler Eingang 7
 | X4.10 | Dout0 | Digitaler Ausgang 0
 | X4.11 | Dout1 | Digitaler Ausgang 1
 | X4.12 | Dout2 | Digitaler Ausgang 2
 | X4.13 | Dout3 | Digitaler Ausgang 3
 | X5.1 | res. | Reserviert
 | X5.2 | res. | Reserviert
 | X5.3 | res. | Reserviert
 | X5.4 | +Sin | Drehgeber, Sinussignal
 | X5.5 | -Sin | Drehgeber, Sinussignal negiert
 | X5.6 | +Cos | Drehgeber, Cosinussignal
 | X5.7 | -Cos | Drehgeber, Cosinussignal negiert
 | X5.8 | res. | Reserviert
 | X5.9 | +U5V | 5V Geberversorgung (Drehgeber)
 | X5.10 | GND | Masse Geberversorgung
 | X6.1 | Ma | Motorphase A
 | X6.2 | Mb | Motorphase B
 | X6.3 | Mc | Motorphase C


Beschaltungsbeispiele

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

EMV-gerechte Verdrahtung

Achten Sie bei der Installation des Geräts auf die Einhaltung der Bedinugnen für elektromagnitische Verträglichkeit (siehe EMV-gerechte Verkabelung und Installation)

Elektrostatisch empfindliche Geräte und Komponenten

Bei Installation, Inbetriebnahme und Service der Geräte müssen Schutzmaßnahme gegen die Einwirkung von elektrostatischen Entladungen (ESD) eingehalten werden. Das betrifft insbesondere antistatische Kleidung, antistatische Werkzeuge und einer antistatische Arbeitsumgebung. Die Geräte müssen diesbezüglich mit besondere Sorgfalt behandelt werden.
Zum Schutz gegen elektrostatische Entladungen im Betrieb müssen an das Gerät alle Steckverbinder angesteckt werden, auch wenn die darauf befindlichen Signale nicht benutzt werden. Die Steckverbinder dienen als Schutz gegen Berührung.
Leiterplatten ohne Gehäuse dürfen nur von geschultem Personal in einer antistatischen Umgebung verarbeitet werden.

Bürstenloser Motor mit Encoder (differenziale Leitungen)

Bürstenbehafteter Motor

Schalter

Potentiometer

SPS - IO Ansteuerung


Inhalt - Gerätefamilie EDC-E6x

EDC-E60

EDC-E60-Modul

EDC-E61-Lp

EDC-E61-Modul

EDC-E62

EDC-E62-Modul

EDC-E65

EDC-E65-Modul

EDC-E66-Lp

EDC-E66-Modul

EDC-E67

EDC-E67-Modul


Inhalt - EDC-E60

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1503615
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 25 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 15 A
- Dauerausgangsstrom @ Up=24V*2 | 5 A
- Dauerausgangsstrom @ Up=48V*2 | 4.3 A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 74 x 45.5 x 14 mm
- Gewicht | 30 g
- Montage | Wand
- Steckverbinder | Crimp-Technik
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | inkremental
- Signale | A,B,Inx
- Max. Frequenz pro Spur | 100 kHz
- Eingangssignal | 5 V
- Signal-Typ | open collector, single ended
Hall-Sensoren
- Signale | H1,H2,H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal | 5 V
- Signal-Typ | open collector, single ended
Digitale Eingänge
- Anzahl | 3 (Din0..2)
- Low-Schaltschwelle | -10..5 V
- High-Schaltschwelle | 6..30 V
- Bemerkung | Din2 parallel zu Dout0
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 1.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
- Bemerkung | Dout0 parallel zu Din2
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | 0..10 V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | GND | Masse Geberversorgung
 | X1.2 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X1.3 | B | Inkrementalgeber - Spur B
 | X1.4 | A | Inkrementalgeber - Spur A
 | X1.5 | H3/Inx | Hallsensorsignal 3 / Inkrementalgeber - Index
 | X1.6 | H2 | Hallsensorsignal 2
 | X1.7 | H1 | Hallsensorsignal 1
 | X1.8 | CAN Lo | CAN Low
 | X1.9 | CAN Hi | CAN High
 | X1.10 | Din2/Dout0 | Digitaler Eingang 2 / Digitaler Ausgang 0
 | X1.11 | Din1 | Digitaler Eingang 1
 | X1.12 | Din0 | Digitaler Eingang 0
 | X1.13 | Ain0 | Analoger Eingang 0
 | X1.14 | GND | Masse Elektronik
 | X1.15 | +Ue | Versorgungsspannung Elektronik
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | GND | Masse Leistung
 | X2.3 | Ma | Motorphase A
 | X2.4 | Mb | Motorphase B
 | X2.5 | Mc | Motorphase C


Inhalt - EDC-E60-Modul

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1503613
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 25 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 15 A
- Dauerausgangsstrom @ Up=24V*2 | 5 A
- Dauerausgangsstrom @ Up=48V*2 | 4.3 A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 52.5 x 41 x 11 mm
- Gewicht | 18 g
- Montage | Backplane
- Steckverbinder | Stiftleiste
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | inkremental
- Signale | A,B,Inx
- Max. Frequenz pro Spur | 100 kHz
- Eingangssignal | 5 V
- Signal-Typ | open collector, single ended
Hall-Sensoren
- Signale | H1,H2,H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal | 5 V
- Signal-Typ | open collector, single ended
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 6..30 V
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 1.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | 0..10 V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | Inx | Inkrementalgeber - Index
 | X1.2 | Id7 | Node-ID Bit 7
 | X1.3 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X1.4 | Id6 | Node-ID Bit 6
 | X1.5 | B | Inkrementalgeber - Spur B
 | X1.6 | Id5 | Node-ID Bit 5
 | X1.7 | A | Inkrementalgeber - Spur A
 | X1.8 | Id4 | Node-ID Bit 4
 | X1.9 | H3 | Hallsensorsignal 3
 | X1.10 | Id3 | Node-ID Bit 3
 | X1.11 | H2 | Hallsensorsignal 2
 | X1.12 | Id2 | Node-ID Bit 2
 | X1.13 | H1 | Hallsensorsignal 1
 | X1.14 | Id1 | Node-ID Bit 1
 | X1.15 | CAN Lo | CAN Low
 | X1.16 | Id0 | Node-ID Bit 0
 | X1.17 | CAN Hi | CAN High
 | X1.18 | Erw2 | mcSPI Erweiterungssignal 2
 | X1.19 | Dout0 | Digitaler Ausgang 0
 | X1.20 | Erw1 | mcSPI Erweiterungssignal 1
 | X1.21 | Din2 | Digitaler Eingang 2
 | X1.22 | SpiSCK | mcSPI Clock
 | X1.23 | Din1 | Digitaler Eingang 1
 | X1.24 | SpiMOSI | mcSPI Master Out Slave In
 | X1.25 | Din0 | Digitaler Eingang 0
 | X1.26 | Spi/SS | mcSPI Slave Select
 | X1.27 | Ain0 | Analoger Eingang 0
 | X1.28 | SpiMISO | mcSPI Master In Slave Out
 | X1.29 | Ain1 | Analoger Eingang 1
 | X1.30 | Din3 | Digitaler Eingang 3
 | X1.31 | GND | Masse Geberversorgung
 | X1.32 | res. | Reserviert
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | res. | Reserviert
 | X2.3 | +Up | Versorgungsspannung Leistung
 | X2.4 | res. | Reserviert
 | X2.5 | GND | Masse Leistung und Elektronik
 | X2.6 | GND | Masse Leistung und Elektronik
 | X2.7 | Ma | Motorphase A
 | X2.8 | +Ue | Versorgungsspannung Elektronik
 | X2.9 | Ma | Motorphase A
 | X2.10 | +Ue | Versorgungsspannung Elektronik
 | X2.11 | Mb | Motorphase B
 | X2.12 | Mb | Motorphase B
 | X2.13 | Mc | Motorphase C
 | X2.14 | res. | Reserviert
 | X2.15 | Mc | Motorphase C
 | X2.16 | res. | Reserviert


Beschaltungsbeispiele

EMV-gerechte Verdrahtung

Achten Sie bei der Installation des Geräts auf die Einhaltung der Bedinugnen für elektromagnitische Verträglichkeit (siehe EMV-gerechte Verkabelung und Installation)

Elektrostatisch empfindliche Geräte und Komponenten

Bei Installation, Inbetriebnahme und Service der Geräte müssen Schutzmaßnahme gegen die Einwirkung von elektrostatischen Entladungen (ESD) eingehalten werden. Das betrifft insbesondere antistatische Kleidung, antistatische Werkzeuge und einer antistatische Arbeitsumgebung. Die Geräte müssen diesbezüglich mit besondere Sorgfalt behandelt werden.
Zum Schutz gegen elektrostatische Entladungen im Betrieb müssen an das Gerät alle Steckverbinder angesteckt werden, auch wenn die darauf befindlichen Signale nicht benutzt werden. Die Steckverbinder dienen als Schutz gegen Berührung.
Leiterplatten ohne Gehäuse dürfen nur von geschultem Personal in einer antistatischen Umgebung verarbeitet werden.

Node-Id über Hex-Schalter

Die Eingänge für die Hex-Schalter Node-Id sind Low-Aktiv. Um die Node-Id 1 über die Hex-schalter einzustellen muss die folgende Konfiguration verwendet werden.


Inhalt - EDC-E61-Lp

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Magnetischer Encoder-Chip

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1505015
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 30 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 15 A
- Dauerausgangsstrom @ Up=24V*2 | 5 A
- Dauerausgangsstrom @ Up=48V*2 | 4.3 A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | nein
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 52.5 x 41 x 11 mm
- Gewicht | 18 g
- Montage | Verschraubung am Motor
- Steckverbinder | Crimp-Technik
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | Magnetsensor
- Signale | A, B, Inx Spuren intern
- Auflösung | 12 Bit pro Wellenumdrehung
- Signal-Typ | Magnetsensor mit Magnet auf der Motorwelle
Digitale Eingänge
- Anzahl | 3 (Din0..2)
- Low-Schaltschwelle | -10..5 V
- High-Schaltschwelle | 6..30 V
- Bemerkung | Din2 parallel zu Dout0
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 1.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
- Bemerkung | Dout0 parallel zu Din2
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | 0..10 V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | GND | Masse Geberversorgung
 | X1.2 | +U5V | 5V Hilfsspannung
 | X1.3 | res. | Reserviert
 | X1.4 | res. | Reserviert
 | X1.5 | res. | Reserviert
 | X1.6 | res. | Reserviert
 | X1.7 | res. | Reserviert
 | X1.8 | CAN Lo | CAN Low
 | X1.9 | CAN Hi | CAN High
 | X1.10 | Din2/Dout0 | Digitaler Eingang 2 / Digitaler Ausgang 0
 | X1.11 | Din1 | Digitaler Eingang 1
 | X1.12 | Din0 | Digitaler Eingang 0
 | X1.13 | Ain0 | Analoger Eingang 0
 | X1.14 | GND | Masse Elektronik
 | X1.15 | +Ue | Versorgungsspannung Elektronik
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | GND | Masse Leistung
 | X2.3 | Ma | Motorphase A
 | X2.4 | Mb | Motorphase B
 | X2.5 | Mc | Motorphase C


Inhalt - EDC-E61-Modul

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Magnetischer Encoder-Chip

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1505014
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 30 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 15 A
- Dauerausgangsstrom @ Up=24V*2 | 5 A
- Dauerausgangsstrom @ Up=48V*2 | 4.3 A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | nein
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 52.5 x 41 x 11 mm
- Gewicht | 18 g
- Montage | Backplane, Verschraubung am Motor
- Steckverbinder | Stiftleiste
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | Magnetsensor
- Signale | A, B, Inx Spuren intern
- Auflösung | 12 Bit pro Wellenumdrehung
- Signal-Typ | Magnetsensor mit Magnet auf der Motorwelle
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 6..30 V
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 1.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | 0..10 V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | res. | Reserviert
 | X1.2 | Id7 | Node-ID Bit 7
 | X1.3 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X1.4 | Id6 | Node-ID Bit 6
 | X1.5 | res. | Reserviert
 | X1.6 | Id5 | Node-ID Bit 5
 | X1.7 | res. | Reserviert
 | X1.8 | Id4 | Node-ID Bit 4
 | X1.9 | res. | Reserviert
 | X1.10 | Id3 | Node-ID Bit 3
 | X1.11 | res. | Reserviert
 | X1.12 | Id2 | Node-ID Bit 2
 | X1.13 | res. | Reserviert
 | X1.14 | Id1 | Node-ID Bit 1
 | X1.15 | CAN Lo | CAN Low
 | X1.16 | Id0 | Node-ID Bit 0
 | X1.17 | CAN Hi | CAN High
 | X1.18 | Erw2 | mcSPI Erweiterungssignal 2
 | X1.19 | Dout0 | Digitaler Ausgang 0
 | X1.20 | Erw1 | mcSPI Erweiterungssignal 1
 | X1.21 | Din2 | Digitaler Eingang 2
 | X1.22 | SpiSCK | mcSPI Clock
 | X1.23 | Din1 | Digitaler Eingang 1
 | X1.24 | SpiMOSI | mcSPI Master Out Slave In
 | X1.25 | Din0 | Digitaler Eingang 0
 | X1.26 | Spi/SS | mcSPI Slave Select
 | X1.27 | Ain0 | Analoger Eingang 0
 | X1.28 | SpiMISO | mcSPI Master In Slave Out
 | X1.29 | Ain1 | Analoger Eingang 1
 | X1.30 | Din3 | Digitaler Eingang 3
 | X1.31 | GND | Masse Geberversorgung
 | X1.32 | res. | Reserviert
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | res. | Reserviert
 | X2.3 | +Up | Versorgungsspannung Leistung
 | X2.4 | res. | Reserviert
 | X2.5 | GND | Masse Leistung und Elektronik
 | X2.6 | GND | Masse Leistung und Elektronik
 | X2.7 | Ma | Motorphase A
 | X2.8 | +Ue | Versorgungsspannung Elektronik
 | X2.9 | Ma | Motorphase A
 | X2.10 | +Ue | Versorgungsspannung Elektronik
 | X2.11 | Mb | Motorphase B
 | X2.12 | Mb | Motorphase B
 | X2.13 | Mc | Motorphase C
 | X2.14 | res. | Reserviert
 | X2.15 | Mc | Motorphase C
 | X2.16 | res. | Reserviert


Inhalt - EDC-E62

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1505024
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 30 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 15 A
- Dauerausgangsstrom @ Up=24V*2 | 5 A
- Dauerausgangsstrom @ Up=48V*2 | 4.3 A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 74 x 45.5 x 14 mm
- Gewicht | 30 g
- Montage | Wand
- Steckverbinder | Crimp-Technik
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | sin / cos
- Signale | +Sin,-Sin,+Cos,-Cos
- Auflösung | 13 Bit pro Sinusperiode
- Eingangssignal | 1 V Spitze-Spitze, differentiell
- Signal-Typ | Sinus/Cosinus, analog, differentiell
Digitale Eingänge
- Anzahl | 3 (Din0..2)
- Low-Schaltschwelle | -10..5 V
- High-Schaltschwelle | 6..30 V
- Bemerkung | Din2 parallel zu Dout0
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 1.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
- Bemerkung | Dout0 parallel zu Din2
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | 0..10 V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | GND | Masse Geberversorgung
 | X1.2 | +U5V | 5V Geberversorgung (Drehgeber)
 | X1.3 | +Cos | Drehgeber, Cosinussignal
 | X1.4 | +Sin | Drehgeber, Sinussignal
 | X1.5 | res. | Reserviert
 | X1.6 | -Cos | Drehgeber, Cosinussignal negiert
 | X1.7 | -Sin | Drehgeber, Sinussignal negiert
 | X1.8 | CAN Lo | CAN Low
 | X1.9 | CAN Hi | CAN High
 | X1.10 | Din2/Dout0 | Digitaler Eingang 2 / Digitaler Ausgang 0
 | X1.11 | Din1 | Digitaler Eingang 1
 | X1.12 | Din0 | Digitaler Eingang 0
 | X1.13 | Ain0 | Analoger Eingang 0
 | X1.14 | GND | Masse Elektronik
 | X1.15 | +Ue | Versorgungsspannung Elektronik
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | GND | Masse Leistung
 | X2.3 | Ma | Motorphase A
 | X2.4 | Mb | Motorphase B
 | X2.5 | Mc | Motorphase C


Inhalt - EDC-E62-Modul

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1505022
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 30 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 15 A
- Dauerausgangsstrom @ Up=24V*2 | 5 A
- Dauerausgangsstrom @ Up=48V*2 | 4.3 A
- Ausgangsspannung | 90% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 52.5 x 41 x 11 mm
- Gewicht | 18 g
- Montage | Backplane
- Steckverbinder | Stiftleiste
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | sin / cos
- Signale | +Sin,-Sin,+Cos,-Cos
- Auflösung | 13 Bit pro Sinusperiode
- Eingangssignal | 1 V Spitze-Spitze, differentiell
- Signal-Typ | Sinus/Cosinus, analog, differentiell
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 6..30 V
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 1.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | 0..10 V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | res. | Reserviert
 | X1.2 | Id7 | Node-ID Bit 7
 | X1.3 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X1.4 | Id6 | Node-ID Bit 6
 | X1.5 | +Cos | Drehgeber, Cosinussignal
 | X1.6 | Id5 | Node-ID Bit 5
 | X1.7 | +Sin | Drehgeber, Sinussignal
 | X1.8 | Id4 | Node-ID Bit 4
 | X1.9 | res. | Reserviert
 | X1.10 | Id3 | Node-ID Bit 3
 | X1.11 | -Cos | Drehgeber, Cosinussignal negiert
 | X1.12 | Id2 | Node-ID Bit 2
 | X1.13 | -Sin | Drehgeber, Sinussignal negiert
 | X1.14 | Id1 | Node-ID Bit 1
 | X1.15 | CAN Lo | CAN Low
 | X1.16 | Id0 | Node-ID Bit 0
 | X1.17 | CAN Hi | CAN High
 | X1.18 | Erw2 | mcSPI Erweiterungssignal 2
 | X1.19 | Dout0 | Digitaler Ausgang 0
 | X1.20 | Erw1 | mcSPI Erweiterungssignal 1
 | X1.21 | Din2 | Digitaler Eingang 2
 | X1.22 | SpiSCK | mcSPI Clock
 | X1.23 | Din1 | Digitaler Eingang 1
 | X1.24 | SpiMOSI | mcSPI Master Out Slave In
 | X1.25 | Din0 | Digitaler Eingang 0
 | X1.26 | Spi/SS | mcSPI Slave Select
 | X1.27 | Ain0 | Analoger Eingang 0
 | X1.28 | SpiMISO | mcSPI Master In Slave Out
 | X1.29 | Ain1 | Analoger Eingang 1
 | X1.30 | Din3 | Digitaler Eingang 3
 | X1.31 | GND | Masse Geberversorgung
 | X1.32 | res. | Reserviert
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | res. | Reserviert
 | X2.3 | +Up | Versorgungsspannung Leistung
 | X2.4 | res. | Reserviert
 | X2.5 | GND | Masse Leistung und Elektronik
 | X2.6 | GND | Masse Leistung und Elektronik
 | X2.7 | Ma | Motorphase A
 | X2.8 | +Ue | Versorgungsspannung Elektronik
 | X2.9 | Ma | Motorphase A
 | X2.10 | +Ue | Versorgungsspannung Elektronik
 | X2.11 | Mb | Motorphase B
 | X2.12 | Mb | Motorphase B
 | X2.13 | Mc | Motorphase C
 | X2.14 | res. | Reserviert
 | X2.15 | Mc | Motorphase C
 | X2.16 | res. | Reserviert


Inhalt - EDC-E65

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1511658
Absolut max. Rating
- Spannung (Zerstörungsgrenze) Up kein Verpolungsschutz | 80 V
- Dauerspannung (Zerstörungsgrenze) Ue kein Verpolungsschutz | 33 V
- Kurzfristige Spitzenspannung < 1s Ue (Zerstörungsgrenze) kein Verpolungsschutz | 37 V
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V*1 | typ. 40 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 15 A
- Dauerausgangsstrom @ Up=24V*2 | 5 A
- Dauerausgangsstrom @ Up=48V*2 | 4.3 A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*3, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 74 x 45.5 x 14 mm
- Gewicht | 30 g
- Montage | Wand
- Steckverbinder | Crimp-Technik
Umgebung
- Schutzart | IP20
- Temperaturbereich | -25..55 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..90 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*3 us
- Positionierregler (POS) | 1000, 2000*3 us
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein
Geberversorgung (Drehgeber/Hall)
- Ausgangsspannung | 5 V
- Maximaler Ausgangsstrom | 0.2 A
Drehgeber
- Typ | inkremental
- Signale | A,B,Inx
- Max. Frequenz pro Spur | 100 kHz
- Eingangssignal | 0..5 V
- Signal-Typ | open collector, single ended
Hall-Sensoren
- Signale | H1,H2,H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal | 0..5 V
- Signal-Typ | open collector, single ended
Digitale Eingänge
- Anzahl | 3 (Din0..2)
- Low-Pegel | 0..5 V
- High-Pegel | 8..30 V
- Bemerkung | Din2 parallel zu Dout0
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 1.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
- Bemerkung | Dout0 parallel zu Din2
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | +/- 10V, 12 Bit, single ended

Änderungen und Irrtümer vorbehalten
*1 Endstufe aus, 5V Ausgang (Geberversorgung) ist unbelastet
*2 Umgebungstemperatur 40 °C Derating, keine Garantie, da der Wert empirisch ermittelt wurde
*3 Standardwert


Klemmenbelegung und Abbildung

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | GND | Masse Geberversorgung
 | X1.2 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X1.3 | B | Inkrementalgeber - Spur B
 | X1.4 | A | Inkrementalgeber - Spur A
 | X1.5 | H3/Inx | Hallsensorsignal 3 / Inkrementalgeber - Index
 | X1.6 | H2 | Hallsensorsignal 2
 | X1.7 | H1 | Hallsensorsignal 1
 | X1.8 | CAN Lo | CAN Low
 | X1.9 | CAN Hi | CAN High
 | X1.10 | Din2/Dout0 | Digitaler Eingang 2 / Digitaler Ausgang 0
 | X1.11 | Din1 | Digitaler Eingang 1
 | X1.12 | Din0 | Digitaler Eingang 0
 | X1.13 | Ain0 | Analoger Eingang 0
 | X1.14 | GND | Masse Elektronik
 | X1.15 | +Ue | Versorgungsspannung Elektronik
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | GND | Masse Leistung
 | X2.3 | Ma | Motorphase A
 | X2.4 | Mb | Motorphase B
 | X2.5 | Mc | Motorphase C


Inhalt - EDC-E65-Modul

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1503571
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 40 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 15 A
- Dauerausgangsstrom @ Up=24V*2 | 5 A
- Dauerausgangsstrom @ Up=48V*2 | 4.3 A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 52.5 x 41 x 11 mm
- Gewicht | 18 g
- Montage | Backplane
- Steckverbinder | Stiftleiste
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | inkremental
- Signale | A,B,Inx
- Max. Frequenz pro Spur | 100 kHz
- Eingangssignal | 5 V
- Signal-Typ | open collector, single ended
Hall-Sensoren
- Signale | H1,H2,H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal | 5 V
- Signal-Typ | open collector, single ended
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -10..5 V
- High-Schaltschwelle | 6..30 V
- Bemerkung | Din3 parallel zu Dout1
Digitale Ausgänge
- Anzahl | 2 (Dout0..1)
- Dauerausgangsstrom | 1.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
- Bemerkung | Dout1 parallel zu Din3
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | +/- 10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | Inx | Inkrementalgeber - Index
 | X1.2 | Id7 | Node-ID Bit 7
 | X1.3 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X1.4 | Id6 | Node-ID Bit 6
 | X1.5 | B | Inkrementalgeber - Spur B
 | X1.6 | Id5 | Node-ID Bit 5
 | X1.7 | A | Inkrementalgeber - Spur A
 | X1.8 | Id4 | Node-ID Bit 4
 | X1.9 | H3 | Hallsensorsignal 3
 | X1.10 | Id3 | Node-ID Bit 3
 | X1.11 | H2 | Hallsensorsignal 2
 | X1.12 | Id2 | Node-ID Bit 2
 | X1.13 | H1 | Hallsensorsignal 1
 | X1.14 | Id1 | Node-ID Bit 1
 | X1.15 | CAN Lo | CAN Low
 | X1.16 | Id0 | Node-ID Bit 0
 | X1.17 | CAN Hi | CAN High
 | X1.18 | Erw2 | mcSPI Erweiterungssignal 2
 | X1.19 | Dout0 | Digitaler Ausgang 0
 | X1.20 | Erw1 | mcSPI Erweiterungssignal 1
 | X1.21 | Din2 | Digitaler Eingang 2
 | X1.22 | SpiSCK | mcSPI Clock
 | X1.23 | Din1 | Digitaler Eingang 1
 | X1.24 | SpiMOSI | mcSPI Master Out Slave In
 | X1.25 | Din0 | Digitaler Eingang 0
 | X1.26 | Spi/SS | mcSPI Slave Select
 | X1.27 | Ain0 | Analoger Eingang 0
 | X1.28 | SpiMISO | mcSPI Master In Slave Out
 | X1.29 | Ain1 | Analoger Eingang 1
 | X1.30 | Din3/Dout1 | Digitaler Eingang 3 / Digitaler Ausgang 1
 | X1.31 | GND | Masse Geberversorgung
 | X1.32 | res. | Reserviert
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | res. | Reserviert
 | X2.3 | +Up | Versorgungsspannung Leistung
 | X2.4 | FE | Funktionserde
 | X2.5 | GND | Masse Leistung und Elektronik
 | X2.6 | GND | Masse Leistung und Elektronik
 | X2.7 | Ma | Motorphase A
 | X2.8 | +Ue | Versorgungsspannung Elektronik
 | X2.9 | Ma | Motorphase A
 | X2.10 | +Ue | Versorgungsspannung Elektronik
 | X2.11 | Mb | Motorphase B
 | X2.12 | Mb | Motorphase B
 | X2.13 | Mc | Motorphase C
 | X2.14 | res. | Reserviert
 | X2.15 | Mc | Motorphase C
 | X2.16 | res. | Reserviert


Inhalt - EDC-E66-Lp

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Magnetischer Encoder-Chip

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1505032
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 45 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 15 A
- Dauerausgangsstrom @ Up=24V*2 | 5 A
- Dauerausgangsstrom @ Up=48V*2 | 4.3 A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | nein
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 52.5 x 41 x 11 mm
- Gewicht | 18 g
- Montage | Verschraubung am Motor
- Steckverbinder | Crimp-Technik
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | Magnetsensor
- Signale | A, B, Inx Spuren intern
- Auflösung | 12 Bit pro Wellenumdrehung
- Signal-Typ | Magnetsensor mit Magnet auf der Motorwelle
Digitale Eingänge
- Anzahl | 3 (Din0..2)
- Low-Schaltschwelle | -10..5 V
- High-Schaltschwelle | 6..30 V
- Bemerkung | Din2 parallel zu Dout0
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 1.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
- Bemerkung | Dout0 parallel zu Din2
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | +/- 10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Inhalt - EDC-E66-Modul

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Magnetischer Encoder-Chip

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1505031
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 45 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 15 A
- Dauerausgangsstrom @ Up=24V*2 | 5 A
- Dauerausgangsstrom @ Up=48V*2 | 4.3 A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | nein
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 52.5 x 41 x 11 mm
- Gewicht | 18 g
- Montage | Backplane, Verschraubung am Motor
- Steckverbinder | Stiftleiste
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | Magnetsensor
- Signale | A, B, Inx Spuren intern
- Auflösung | 12 Bit pro Wellenumdrehung
- Signal-Typ | Magnetsensor mit Magnet auf der Motorwelle
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -10..5 V
- High-Schaltschwelle | 6..30 V
- Bemerkung | Din3 parallel zu Dout1
Digitale Ausgänge
- Anzahl | 2 (Dout0..1)
- Dauerausgangsstrom | 1.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
- Bemerkung | Dout1 parallel zu Din3
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | +/- 10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | res. | Reserviert
 | X1.2 | Id7 | Node-ID Bit 7
 | X1.3 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X1.4 | Id6 | Node-ID Bit 6
 | X1.5 | res. | Reserviert
 | X1.6 | Id5 | Node-ID Bit 5
 | X1.7 | res. | Reserviert
 | X1.8 | Id4 | Node-ID Bit 4
 | X1.9 | res. | Reserviert
 | X1.10 | Id3 | Node-ID Bit 3
 | X1.11 | res. | Reserviert
 | X1.12 | Id2 | Node-ID Bit 2
 | X1.13 | res. | Reserviert
 | X1.14 | Id1 | Node-ID Bit 1
 | X1.15 | CAN Lo | CAN Low
 | X1.16 | Id0 | Node-ID Bit 0
 | X1.17 | CAN Hi | CAN High
 | X1.18 | Erw2 | mcSPI Erweiterungssignal 2
 | X1.19 | Dout0 | Digitaler Ausgang 0
 | X1.20 | Erw1 | mcSPI Erweiterungssignal 1
 | X1.21 | Din2 | Digitaler Eingang 2
 | X1.22 | SpiSCK | mcSPI Clock
 | X1.23 | Din1 | Digitaler Eingang 1
 | X1.24 | SpiMOSI | mcSPI Master Out Slave In
 | X1.25 | Din0 | Digitaler Eingang 0
 | X1.26 | Spi/SS | mcSPI Slave Select
 | X1.27 | Ain0 | Analoger Eingang 0
 | X1.28 | SpiMISO | mcSPI Master In Slave Out
 | X1.29 | Ain1 | Analoger Eingang 1
 | X1.30 | Din3/Dout1 | Digitaler Eingang 3 / Digitaler Ausgang 1
 | X1.31 | GND | Masse Geberversorgung
 | X1.32 | res. | Reserviert
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | res. | Reserviert
 | X2.3 | +Up | Versorgungsspannung Leistung
 | X2.4 | FE | Funktionserde
 | X2.5 | GND | Masse Leistung und Elektronik
 | X2.6 | GND | Masse Leistung und Elektronik
 | X2.7 | Ma | Motorphase A
 | X2.8 | +Ue | Versorgungsspannung Elektronik
 | X2.9 | Ma | Motorphase A
 | X2.10 | +Ue | Versorgungsspannung Elektronik
 | X2.11 | Mb | Motorphase B
 | X2.12 | Mb | Motorphase B
 | X2.13 | Mc | Motorphase C
 | X2.14 | res. | Reserviert
 | X2.15 | Mc | Motorphase C
 | X2.16 | res. | Reserviert


Inhalt - EDC-E67

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1605040
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 45 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 15 A
- Dauerausgangsstrom @ Up=24V*2 | 5 A
- Dauerausgangsstrom @ Up=48V*2 | 4.3 A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 74 x 45.5 x 14 mm
- Gewicht | 30 g
- Montage | Wand
- Steckverbinder | Crimp-Technik
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | sin / cos
- Signale | +Sin,-Sin,+Cos,-Cos
- Auflösung | 13 Bit pro Sinusperiode
- Eingangssignal | 1 V Spitze-Spitze, differentiell
- Signal-Typ | Sinus/Cosinus, analog, differentiell
Digitale Eingänge
- Anzahl | 3 (Din0..2)
- Low-Schaltschwelle | -10..5 V
- High-Schaltschwelle | 6..30 V
- Bemerkung | Din2 parallel zu Dout0
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 1.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
- Bemerkung | Dout0 parallel zu Din2
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | +/- 10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Inhalt - EDC-E67-Modul

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1505038
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 45 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 15 A
- Dauerausgangsstrom @ Up=24V*2 | 5 A
- Dauerausgangsstrom @ Up=48V*2 | 4.3 A
- Ausgangsspannung | 100% Up
- PWM-Frequenz | 25, 32*1, 50 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 52.5 x 41 x 11 mm
- Gewicht | 18 g
- Montage | Backplane
- Steckverbinder | Stiftleiste
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | sin / cos
- Signale | +Sin,-Sin,+Cos,-Cos
- Auflösung | 13 Bit pro Sinusperiode
- Eingangssignal | 1 V Spitze-Spitze, differentiell
- Signal-Typ | Sinus/Cosinus, analog, differentiell
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -10..5 V
- High-Schaltschwelle | 6..30 V
- Bemerkung | Din3 parallel zu Dout1
Digitale Ausgänge
- Anzahl | 2 (Dout0..1)
- Dauerausgangsstrom | 1.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
- Bemerkung | Dout1 parallel zu Din3
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | +/- 10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | res. | Reserviert
 | X1.2 | Id7 | Node-ID Bit 7
 | X1.3 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X1.4 | Id6 | Node-ID Bit 6
 | X1.5 | +Cos | Drehgeber, Cosinussignal
 | X1.6 | Id5 | Node-ID Bit 5
 | X1.7 | +Sin | Drehgeber, Sinussignal
 | X1.8 | Id4 | Node-ID Bit 4
 | X1.9 | res. | Reserviert
 | X1.10 | Id3 | Node-ID Bit 3
 | X1.11 | -Cos | Drehgeber, Cosinussignal negiert
 | X1.12 | Id2 | Node-ID Bit 2
 | X1.13 | -Sin | Drehgeber, Sinussignal negiert
 | X1.14 | Id1 | Node-ID Bit 1
 | X1.15 | CAN Lo | CAN Low
 | X1.16 | Id0 | Node-ID Bit 0
 | X1.17 | CAN Hi | CAN High
 | X1.18 | Erw2 | mcSPI Erweiterungssignal 2
 | X1.19 | Dout0 | Digitaler Ausgang 0
 | X1.20 | Erw1 | mcSPI Erweiterungssignal 1
 | X1.21 | Din2 | Digitaler Eingang 2
 | X1.22 | SpiSCK | mcSPI Clock
 | X1.23 | Din1 | Digitaler Eingang 1
 | X1.24 | SpiMOSI | mcSPI Master Out Slave In
 | X1.25 | Din0 | Digitaler Eingang 0
 | X1.26 | Spi/SS | mcSPI Slave Select
 | X1.27 | Ain0 | Analoger Eingang 0
 | X1.28 | SpiMISO | mcSPI Master In Slave Out
 | X1.29 | Ain1 | Analoger Eingang 1
 | X1.30 | Din3/Dout1 | Digitaler Eingang 3 / Digitaler Ausgang 1
 | X1.31 | GND | Masse Geberversorgung
 | X1.32 | res. | Reserviert
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | res. | Reserviert
 | X2.3 | +Up | Versorgungsspannung Leistung
 | X2.4 | FE | Funktionserde
 | X2.5 | GND | Masse Leistung und Elektronik
 | X2.6 | GND | Masse Leistung und Elektronik
 | X2.7 | Ma | Motorphase A
 | X2.8 | +Ue | Versorgungsspannung Elektronik
 | X2.9 | Ma | Motorphase A
 | X2.10 | +Ue | Versorgungsspannung Elektronik
 | X2.11 | Mb | Motorphase B
 | X2.12 | Mb | Motorphase B
 | X2.13 | Mc | Motorphase C
 | X2.14 | res. | Reserviert
 | X2.15 | Mc | Motorphase C
 | X2.16 | res. | Reserviert


Inhalt - Gerätefamilie EDC-F5x

EDC-F55


Inhalt - EDC-F55

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1511722
Absolut max. Rating
- Spannung (Zerstörungsgrenze) Up kein Verpolungsschutz | 80 V
- Dauerspannung (Zerstörungsgrenze) Ue kein Verpolungsschutz | 33 V
- Kurzfristige Spitzenspannung < 1s Ue (Zerstörungsgrenze) kein Verpolungsschutz | 37 V
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V*1 | typ. 60 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 50 A
- Dauerausgangsstrom*2 | 10 A
- PWM-Frequenz | 32 kHz
- PWM-Modus | symmetrisch / asymmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | ja
- bürstenlose Motoren | ja
- Linearmotoren | ja
- Schrittmotoren | nein
Mechanische Daten
- Abmessungen LxBxH | 78 x 74 x 28 mm
- Gewicht | 100 g
- Montage | Wand
- Steckverbinder | Feder-/Schraubklemmen, Crimp-Technik
Umgebung
- Schutzart | IP20
- Temperaturbereich | -25..55 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..90 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*3 us
- Positionierregler (POS) | 1000, 2000*3 us
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | ja
Geberversorgung (Drehgeber/Hall)
- Ausgangsspannung | 5 V
- Maximaler Ausgangsstrom | 0.2 A
Drehgeber
- Typ | inkremental
- Signale | A,/A,B,/B,Inx
- Max. Frequenz pro Spur | 500 kHz
- Eingangssignal (24V tolerant) | 0..5 V
- Signal-Typ | Differential, Open Collector, Single Ended, 2,5 kOhm Eingangsimpedanz
Hall-Sensoren
- Signale | H1,H2,H3
- Max. Frequenz pro Spur | 10 kHz
- Eingangssignal | 0..5 V
- Signal-Typ | Open Collector, Single Ended, 5V Pull Up intern 920 Ohm
Digitale Eingänge
- Anzahl digitale Eingänge | 6 (Din0..5)
- Anzahl Hardware-Enable Eingänge | 2 (EN-A..B)
- Low voltage @Ta = 25°C | 0..5 V
- High voltage @Ta = 25°C | 8..30 V
Digitale Ausgänge
- Anzahl | 4 (Dout0..3)
- Dauerausgangsstrom | 0.3 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | +/- 10 V, 12 Bit, differentiell, 200 kOhm Eingangsimpedanz
- Anzahl | 1 (Ain2)
- Signal-Typ | 0 .. 5V, 12 Bit, Single Ended, 5V Pull Up intern 1,5 kOhm

Änderungen und Irrtümer vorbehalten
*1Endstufe aus, 5V Ausgang (Geberversorgung) ist unbelastet
*2Anschlusskabel mit maximal möglichem Leitungsquerschnitt, PWM-Frequenz 32 kHz, Umgebungstemperatur 40 °C, t > 40 °C Derating
keine Garantie, da der Wert empirisch ermittelt wurde, bitte beachten Sie die Applikation Notes zur Ermittlung des Dauerstromes


Klemmenbelegung und Abbildung

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | +Ue24V | Versorgungsspannung Elektronik
 | X1.5 | GND | Masse Elektronik
 | X2.1 | +Ain0 | Analoger Eingang 0, Plus
 | X2.2 | -Ain0 | Analoger Eingang 0, Minus
 | X2.3 | +Ain1 | Analoger Eingang 1, Plus
 | X2.4 | -Ain1 | Analoger Eingang 1, Minus
 | X2.5 | Ain2 | Analoger Eingang 2 (5V)
 | X3.1 | CAN Hi | CAN High
 | X3.2 | CAN Lo | CAN Low
 | X3.3 | res. | Reserviert
 | X4.1 | EN-A | Hardware-Enable Kanal A
 | X4.2 | Din0 | Digitaler Eingang 0
 | X4.3 | Din1 | Digitaler Eingang 1
 | X4.4 | Din2 | Digitaler Eingang 2
 | X4.5 | Din3 | Digitaler Eingang 3
 | X4.6 | Din4 | Digitaler Eingang 4
 | X4.7 | Din5 | Digitaler Eingang 5
 | X4.8 | res. | Reserviert
 | X4.9 | EN-B | Hardware-Enable Kanal B
 | X4.10 | Dout0 | Digitaler Ausgang 0
 | X4.11 | Dout1 | Digitaler Ausgang 1
 | X4.12 | Dout2 | Digitaler Ausgang 2
 | X4.13 | Dout3 | Digitaler Ausgang 3
 | X5.1 | H1 | Hallsensorsignal 1
 | X5.2 | H2 | Hallsensorsignal 2
 | X5.3 | H3 | Hallsensorsignal 3
 | X5.4 | A | Inkrementalgeber - Spur A
 | X5.5 | /A | Inkrementalgeber - Spur A negiert
 | X5.6 | B | Inkrementalgeber - Spur B
 | X5.7 | /B | Inkrementalgeber - Spur B negiert
 | X5.8 | Inx | Inkrementalgeber - Index
 | X5.9 | +U5V | 5V Geberversorgung (Drehgeber)
 | X5.10 | GND | Masse Geberversorgung
 | X6.1 | Ma | Motorphase A
 | X6.2 | Mb | Motorphase B
 | X6.3 | Mc | Motorphase C


Steckverbindersysteme

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!
Verarbeitung der Zugfederklemmen Weidmueller BLZF 3.5
Die Antriebsregler der EDC-F5x Reihe verwenden Steckverbinder mit Zugfedertechnik für einbzw. feindrähtige Leiter. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit den Steckverbinder verwendet werden können.

Klemme | Bezeichnung Art.-Nr. | Klemmbereich (Querschnitt d) mm2 |  |  |  | Abisolierlänge mm
 |  | eindrähtig H05(07)V-U | feindrähtig H05(07)V-K | feindrähtig mit AEH | feindrähtig mit AEH und Kunststoffkragen
X1 | BLZF 3.5/180/5 1690450000 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1 | 10
X6 | BLZF 3.5/180/3 1690430000 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1 | 10
Weitere Information finden Sie unter www.weidmueller.com.

Achten Sie darauf, dass die Adern korrekt auf den abisolierten Teil des Leiters und nicht auf die Isolierung geklemmt sind.

Verarbeitung der Crimp-Steckverbinder JST PA-Serie
Die folgende Übersicht zeigt, welche Leiterquerschnitte mit den Steckverbinder der PA-Serie verwendet werden können

Klemme | Bezeichnung / Art.-Nr. | Leiterquerschnitt d [AWG] [mm2] | Max. Durchmesser der Isolierung D [mm] | Abisolierlänge A [mm]
X2 | - Crimp-Gehäuse - PAP-05V-S - Crimp-Kontakt - SPHD-001T-P0.5 - Crimp-Werkzeug - Handzange WC-610 | AWG 22 ... 26 0,13 ... 0,33 | 1,0 ... 1,5 | ~1,5 ... 2
X3 | - Crimp-Gehäuse - PAP-03V-S - Crimp-Kontakt - SPHD-001T-P0.5 - Crimp-Werkzeug - Handzange WC-610 | AWG 22 ... 26 0,13 ... 0,33 | 1,0 ... 1,5 | ~1,5 ... 2
X4 | - Crimp-Gehäuse - PAP-13V-S - Crimp-Kontakt - SPHD-001T-P0.5 - Crimp-Werkzeug - Handzange WC-610 | AWG 22 ... 26 0,13 ... 0,33 | 1,0 ... 1,5 | ~1,5 ... 2
X5 | - Crimp-Gehäuse - PAP-10V-S - Crimp-Kontakt - SPHD-001T-P0.5 - Crimp-Werkzeug - Handzange WC-610 | AWG 22 ... 26 0,13 ... 0,33 | 1,0 ... 1,5 | ~1,5 ... 2
Weitere Information finden Sie unter www.jst.com.

Die Verwendung nicht vom Hersteller spezifizierter Werkzeuge kann die Zuverlässigkeit der Crimp-Verbindung bis hin zum Ausfall beeinträchtigen.


Inhalt - EDC-Fxx

Parameter 1000h (DS301)

Parameter 2000h

Parameter 3000h (DSA)

Parameter 5000h (MPU)

Parameter 6000h (DS402)


Inhalt - Gerätefamilie EDC-S4x

EDC-S40

EDC-S40-Modul

EDC-S45

EDC-S45-Modul


Inhalt - EDC-S40

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert *3
Artikelnummer | 1504986 (HC Version 1504992)
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 35 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 20 A
- Ausgangsspannung | 85% Up
- PWM-Frequenz | 25, 32, 50*1 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | nein
- bürstenlose Motoren | nein
- Linearmotoren | nein
- Schrittmotoren | ja
Mechanische Daten
- Abmessungen LxBxH (HC Version) | 110 x 22.5(40) x 77 mm
- Gewicht (HC Version) | 110 (310) g
- Montage | Hutschiene / Wand
- Steckverbinder | Feder-/Schraubklemmen
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 6..30 V
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | 0..10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz

*3 Änderungen und Irrtümer vorbehalten.


Klemmenbelegung und Abbildung

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | Ma | Motorphase A
 | X1.5 | Mb | Motorphase B
 | X1.6 | Mc | Motorphase C
 | X1.7 | Md | Motorphase D
 | X2.1 | res. | Reserviert
 | X2.2 | res. | Reserviert
 | X2.3 | res. | Reserviert
 | X2.4 | res. | Reserviert
 | X2.5 | res. | Reserviert
 | X2.6 | res. | Reserviert
 | X2.7 | res. | Reserviert
 | X2.8 | res. | Reserviert
 | X2.9 | res. | Reserviert
 | X2.10 | res. | Reserviert
 | X2.11 | res. | Reserviert
 | X2.12 | res. | Reserviert
 | X2.13 | res. | Reserviert
 | X2.14 | res. | Reserviert
 | X3.1 | +Ue24V | Versorgungsspannung Elektronik
 | X3.2 | Ain0 | Analoger Eingang 0
 | X3.3 | Din0 | Digitaler Eingang 0
 | X3.4 | Din1 | Digitaler Eingang 1
 | X3.5 | Din2 | Digitaler Eingang 2
 | X3.6 | Din3 | Digitaler Eingang 3
 | X3.7 | GND | Masse Elektronik
 | X3.8 | res. | Reserviert
 | X3.9 | res. | Reserviert
 | X3.10 | CAN Hi | CAN High
 | X3.11 | CAN Lo | CAN Low
 | X3.12 | CAN GND | CAN Ground


Steckverbindersysteme

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!
Verarbeitung der Zugfederklemmen Weidmueller B2L 3.5 und BLZF 3.5
Die Antriebsregler der EDC-S4x Reihe verwenden Steckverbinder mit Zugfedertechnik für ein bzw. feindrähtige Leiter. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit dem Steckverbinder verwendet werden können.

Klemme | Bezeichnung Art.-Nr. | Klemmbereich (Querschnitt d) mm2 |  |  |  | Abisolierlänge mm
 |  | eindrähtig H05(07)V-U | feindrähtig H05(07)V-K | feindrähtig mit AEH | feindrähtig mit AEH und Kunststoffkragen
X1 | BLZF 3.5/180/7 1690470000 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1,5 | 0,2 ... 1 | 10
X2 | B2L 3.5/14 1727680000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
X3 | B2L 3.5/12 1727670000 | 0,2 ... 1 | 0,2 ... 1 | 0,13 ... 0,34 | 0,13 ... 0,34 | 7
Weitere Information finden Sie unter www.weidmueller.com.

Achten Sie darauf, dass die Adern korrekt auf den abisolierten Teil des Leiters und nicht auf die Isolierung geklemmt sind.


Beschaltungsbeispiele

Schrittmotor

Schalter


Inhalt - EDC-Sxx

Parameter 1000h (DS301)

Parameter 2000h

Parameter 3000h (DSA)

Parameter 5000h (MPU)

Parameter 6000h (DS402)


Inhalt - EDC-S40-Modul

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert *3
Artikelnummer | 1504984
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 35 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 20 A
- Ausgangsspannung | 85% Up
- PWM-Frequenz | 25, 32, 50*1 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | nein
- bürstenlose Motoren | nein
- Linearmotoren | nein
- Schrittmotoren | ja
Mechanische Daten
- Abmessungen LxBxH | 97.5 x 71 x 13 mm
- Gewicht | 55 g
- Montage | Backplane
- Steckverbinder | Stiftleiste
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 6..30 V
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | 0..10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz

*3 Änderungen und Irrtümer vorbehalten.


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | CAN Hi | CAN High
 | X1.2 | CAN Lo | CAN Low
 | X1.3 | res. | Reserviert
 | X1.4 | res. | Reserviert
 | X1.5 | res. | Reserviert
 | X1.6 | res. | Reserviert
 | X1.7 | Din2 | Digitaler Eingang 2
 | X1.8 | Din3 | Digitaler Eingang 3
 | X1.9 | Din0 | Digitaler Eingang 0
 | X1.10 | Din1 | Digitaler Eingang 1
 | X1.11 | Ain0 | Analoger Eingang 0
 | X1.12 | Ain1 | Analoger Eingang 1
 | X1.13 | SpiMISO | mcSPI Master In Slave Out
 | X1.14 | Spi/SS | mcSPI Slave Select
 | X1.15 | SpiMOSI | mcSPI Master Out Slave In
 | X1.16 | SpiSCK | mcSPI Clock
 | X1.17 | Rx0 | UART0 Receive Signal
 | X1.18 | Tx0 | UART0 Transmit Signal
 | X1.19 | Erw1 | mcSPI Erweiterungssignal 1
 | X1.20 | Erw2 | mcSPI Erweiterungssignal 2
 | X1.21 | res. | Reserviert
 | X1.22 | res. | Reserviert
 | X1.23 | res. | Reserviert
 | X1.24 | res. | Reserviert
 | X1.25 | res. | Reserviert
 | X1.26 | res. | Reserviert
 | X1.27 | res. | Reserviert
 | X1.28 | res. | Reserviert
 | X1.29 | res. | Reserviert
 | X1.30 | res. | Reserviert
 | X1.31 | res. | Reserviert
 | X1.32 | res. | Reserviert
 | X2.1 | +U5V | 5V Hilfsspannung
 | X2.2 | GND | Masse Geberversorgung
 | X2.3 | res. | Reserviert
 | X2.4 | res. | Reserviert
 | X2.5 | +Ue24V | Versorgungsspannung Elektronik
 | X2.6 | +Ue24V | Versorgungsspannung Elektronik
 | X2.7 | Md | Motorphase D
 | X2.8 | Md | Motorphase D
 | X2.9 | Md | Motorphase D
 | X2.10 | Md | Motorphase D
 | X2.11 | Mc | Motorphase C
 | X2.12 | Mc | Motorphase C
 | X2.13 | Mc | Motorphase C
 | X2.14 | Mc | Motorphase C
 | X2.15 | Mb | Motorphase B
 | X2.16 | Mb | Motorphase B
 | X2.17 | Mb | Motorphase B
 | X2.18 | Mb | Motorphase B
 | X2.19 | Ma | Motorphase A
 | X2.20 | Ma | Motorphase A
 | X2.21 | Ma | Motorphase A
 | X2.22 | Ma | Motorphase A
 | X2.23 | GND | Masse Leistung und Elektronik
 | X2.24 | GND | Masse Leistung und Elektronik
 | X2.25 | GND | Masse Leistung und Elektronik
 | X2.26 | GND | Masse Leistung und Elektronik
 | X2.27 | +Up | Versorgungsspannung Leistung
 | X2.28 | +Up | Versorgungsspannung Leistung
 | X2.29 | +Up | Versorgungsspannung Leistung
 | X2.30 | +Up | Versorgungsspannung Leistung
 | X2.31 | FE | Funktionserde
 | X2.32 | FE | Funktionserde


Inhalt - EDC-S45

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert *3
Artikelnummer | 1505001 (HC Version 1505007)
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 60 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 20 A
- Ausgangsspannung | 85% Up
- PWM-Frequenz | 25, 32, 50*1 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | nein
- bürstenlose Motoren | nein
- Linearmotoren | nein
- Schrittmotoren | ja
Mechanische Daten
- Abmessungen LxBxH (HC Version) | 110 x 22.5(40) x 77 mm
- Gewicht (HC Version) | 110 (310) g
- Montage | Hutschiene / Wand
- Steckverbinder | Feder-/Schraubklemmen
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | inkremental
- Signale | A,/A,B,/B,Inx,/Inx
- Max. Frequenz pro Spur | 500 kHz
- Eingangssignal (24V tolerant) | 5 V
- Signal-Typ | differentiell, open collector, single ended
Digitale Eingänge
- Anzahl | 8 (Din0..7)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 8..30 V
Digitale Ausgänge
- Anzahl | 2 (Dout0..1)
- Dauerausgangsstrom | 2.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | +/- 10V, 12 Bit, differentiell
- Anzahl | 1 (Ain1)
- Signal-Typ | +/- 10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz

*3 Änderungen und Irrtümer vorbehalten.


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | Ma | Motorphase A
 | X1.5 | Mb | Motorphase B
 | X1.6 | Mc | Motorphase C
 | X1.7 | Md | Motorphase D
 | X2.1 | res. | Reserviert
 | X2.2 | res. | Reserviert
 | X2.3 | res. | Reserviert
 | X2.4 | A | Inkrementalgeber - Spur A
 | X2.5 | B | Inkrementalgeber - Spur B
 | X2.6 | Inx | Inkrementalgeber - Index
 | X2.7 | +U5V | 5V Geberversorgung (Drehgeber)
 | X2.8 | res. | Reserviert
 | X2.9 | res. | Reserviert
 | X2.10 | res. | Reserviert
 | X2.11 | /A | Inkrementalgeber - Spur A negiert
 | X2.12 | /B | Inkrementalgeber - Spur B negiert
 | X2.13 | /Inx | Inkrementalgeber - Index negiert
 | X2.14 | GND | Masse Geberversorgung
 | X3.1 | +Ue24V | Versorgungsspannung Elektronik
 | X3.2 | +Ain0 | Analoger Eingang 0, Plus
 | X3.3 | Din0 | Digitaler Eingang 0
 | X3.4 | Din1 | Digitaler Eingang 1
 | X3.5 | Din2 | Digitaler Eingang 2
 | X3.6 | Din3 | Digitaler Eingang 3
 | X3.7 | GND | Masse Elektronik
 | X3.8 | -Ain0 | Analoger Eingang 0, Minus
 | X3.9 | Dout0 | Digitaler Ausgang 0
 | X3.10 | CAN Hi | CAN High
 | X3.11 | CAN Lo | CAN Low
 | X3.12 | CAN GND | CAN Ground
 | X4.1 | Ain1 | Analoger Eingang 1
 | X4.2 | Din4 | Digitaler Eingang 4
 | X4.3 | Din5 | Digitaler Eingang 5
 | X4.4 | Din6 | Digitaler Eingang 6
 | X4.5 | Dout1 | Digitaler Ausgang 1
 | X4.6 | Din7 | Digitaler Eingang 7


Beschaltungsbeispiele

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Schrittmotor ohne Encoder

Schrittmotor mit Encoder (single-ended Leitungen)

Schalter

Potentiometer

SPS - IO Ansteuerung


Inhalt - EDC-S45-Modul

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert *3
Artikelnummer | 1504999
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 60 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 20 A
- Ausgangsspannung | 85% Up
- PWM-Frequenz | 25, 32, 50*1 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | nein
- bürstenlose Motoren | nein
- Linearmotoren | nein
- Schrittmotoren | ja
Mechanische Daten
- Abmessungen LxBxH | 97.5 x 71 x 13 mm
- Gewicht | 55 g
- Montage | Backplane
- Steckverbinder | Stiftleiste
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | inkremental
- Signale | A,/A,B,/B,Inx,/Inx
- Max. Frequenz pro Spur | 500 kHz
- Eingangssignal (24V tolerant) | 5 V
- Signal-Typ | differentiell, open collector, single ended
Digitale Eingänge
- Anzahl | 8 (Din0..7)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 8..30 V
Digitale Ausgänge
- Anzahl | 2 (Dout0..1)
- Dauerausgangsstrom | 2.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | +/- 10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz

*3 Änderungen und Irrtümer vorbehalten.


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | CAN Hi | CAN High
 | X1.2 | CAN Lo | CAN Low
 | X1.3 | Din6 | Digitaler Eingang 6
 | X1.4 | Din7 | Digitaler Eingang 7
 | X1.5 | Din4 | Digitaler Eingang 4
 | X1.6 | Din5 | Digitaler Eingang 5
 | X1.7 | Din2 | Digitaler Eingang 2
 | X1.8 | Din3 | Digitaler Eingang 3
 | X1.9 | Din0 | Digitaler Eingang 0
 | X1.10 | Din1 | Digitaler Eingang 1
 | X1.11 | Ain0 | Analoger Eingang 0
 | X1.12 | Ain1 | Analoger Eingang 1
 | X1.13 | SpiMISO | mcSPI Master In Slave Out
 | X1.14 | Spi/SS | mcSPI Slave Select
 | X1.15 | SpiMOSI | mcSPI Master Out Slave In
 | X1.16 | SpiSCK | mcSPI Clock
 | X1.17 | Rx0 | UART0 Receive Signal
 | X1.18 | Tx0 | UART0 Transmit Signal
 | X1.19 | Erw1 | mcSPI Erweiterungssignal 1
 | X1.20 | Erw2 | mcSPI Erweiterungssignal 2
 | X1.21 | Inx | Inkrementalgeber - Index
 | X1.22 | /Inx | Inkrementalgeber - Index negiert
 | X1.23 | B | Inkrementalgeber - Spur B
 | X1.24 | /B | Inkrementalgeber - Spur B negiert
 | X1.25 | A | Inkrementalgeber - Spur A
 | X1.26 | /A | Inkrementalgeber - Spur A negiert
 | X1.27 | res. | Reserviert
 | X1.28 | res. | Reserviert
 | X1.29 | res. | Reserviert
 | X1.30 | res. | Reserviert
 | X1.31 | res. | Reserviert
 | X1.32 | res. | Reserviert
 | X2.1 | +U5V | 5V Geberversorgung (Drehgeber)
 | X2.2 | GND | Masse Geberversorgung
 | X2.3 | Dout0 | Digitaler Ausgang 0
 | X2.4 | Dout1 | Digitaler Ausgang 1
 | X2.5 | +Ue24V | Versorgungsspannung Elektronik
 | X2.6 | +Ue24V | Versorgungsspannung Elektronik
 | X2.7 | Md | Motorphase D
 | X2.8 | Md | Motorphase D
 | X2.9 | Md | Motorphase D
 | X2.10 | Md | Motorphase D
 | X2.11 | Mc | Motorphase C
 | X2.12 | Mc | Motorphase C
 | X2.13 | Mc | Motorphase C
 | X2.14 | Mc | Motorphase C
 | X2.15 | Mb | Motorphase B
 | X2.16 | Mb | Motorphase B
 | X2.17 | Mb | Motorphase B
 | X2.18 | Mb | Motorphase B
 | X2.19 | Ma | Motorphase A
 | X2.20 | Ma | Motorphase A
 | X2.21 | Ma | Motorphase A
 | X2.22 | Ma | Motorphase A
 | X2.23 | GND | Masse Leistung und Elektronik
 | X2.24 | GND | Masse Leistung und Elektronik
 | X2.25 | GND | Masse Leistung und Elektronik
 | X2.26 | GND | Masse Leistung und Elektronik
 | X2.27 | +Up | Versorgungsspannung Leistung
 | X2.28 | +Up | Versorgungsspannung Leistung
 | X2.29 | +Up | Versorgungsspannung Leistung
 | X2.30 | +Up | Versorgungsspannung Leistung
 | X2.31 | FE | Funktionserde
 | X2.32 | FE | Funktionserde


Inhalt - Gerätefamilie EDC-S6x

EDC-S60

EDC-S60-Modul

EDC-S65

EDC-S65-Modul


Inhalt - EDC-S60

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1511664
Absolut max. Rating
- Spannung (Zerstörungsgrenze) Up kein Verpolungsschutz | 80 V
- Dauerspannung (Zerstörungsgrenze) Ue kein Verpolungsschutz | 33 V
- Kurzfristige Spitzenspannung < 1s Ue (Zerstörungsgrenze) kein Verpolungsschutz | 37 V
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V*1 | typ. 30 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 10 A
- Dauerausgangsstrom @ Up=24V*2 | 3.5 A
- Dauerausgangsstrom @ Up=48V*2 | 3 A
- Ausgangsspannung | 85% Up
- PWM-Frequenz | 32 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | nein
- bürstenlose Motoren | nein
- Linearmotoren | nein
- Schrittmotoren | ja
Mechanische Daten
- Abmessungen LxBxH | 74 x 45.5 x 14 mm
- Gewicht | 30 g
- Montage | Wand
- Steckverbinder | Crimp-Technik
Umgebung
- Schutzart | IP20
- Temperaturbereich | -25..55 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..90 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*3 us
- Positionierregler (POS) | 1000, 2000*3 us
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein
Hilfsspannung
- Ausgangsspannung | 5 V
- Maximaler Ausgangsstrom | 0.2 A
Digitale Eingänge
- Anzahl | 3 (Din0..2)
- Low-Pegel | 0..5 V
- High-Pegel | 8..30 V
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | 0..10 V, 12 Bit, single ended

Änderungen und Irrtümer vorbehalten
*1Endstufe aus, 5V Ausgang (Geberversorgung) ist unbelastet
*2Anschlusskabel mit maximal möglichem Leitungsquerschnitt, Umgebungstemperatur 40 °C, t > 40 °C Derating
*3Standardwert

keine Garantie, da der Wert empirisch ermittelt wurde, bitte beachten Sie die Applikation Notes zur Ermittlung des Dauerstromes


Klemmenbelegung und Abbildung

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | GND | Masse Geberversorgung
 | X1.2 | +U5V | 5V Hilfsspannung
 | X1.3 | res. | Reserviert
 | X1.4 | res. | Reserviert
 | X1.5 | res. | Reserviert
 | X1.6 | res. | Reserviert
 | X1.7 | res. | Reserviert
 | X1.8 | CAN Lo | CAN Low
 | X1.9 | CAN Hi | CAN High
 | X1.10 | Din2 | Digitaler Eingang 2
 | X1.11 | Din1 | Digitaler Eingang 1
 | X1.12 | Din0 | Digitaler Eingang 0
 | X1.13 | Ain0 | Analoger Eingang 0
 | X1.14 | GND | Masse Elektronik
 | X1.15 | +Ue | Versorgungsspannung Elektronik
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | GND | Masse Leistung
 | X2.3 | Ma | Motorphase A
 | X2.4 | Mb | Motorphase B
 | X2.5 | Mc | Motorphase C
 | X2.6 | Md | Motorphase D


Beschaltungsbeispiele

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Schrittmotor

Schalter


Inhalt - EDC-S60-Modul

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert *3
Artikelnummer | 1505046
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 30 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 10 A
- Ausgangsspannung | 85% Up
- PWM-Frequenz | 25, 32, 50*1 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | nein
- bürstenlose Motoren | nein
- Linearmotoren | nein
- Schrittmotoren | ja
Mechanische Daten
- Abmessungen LxBxH | 52.5 x 41 x 11 mm
- Gewicht | 18 g
- Montage | Backplane
- Steckverbinder | Stiftleiste
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -30..5 V
- High-Schaltschwelle | 6..30 V
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | 0..10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz

*3 Änderungen und Irrtümer vorbehalten.


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | res. | Reserviert
 | X1.2 | Id7 | Node-ID Bit 7
 | X1.3 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X1.4 | Id6 | Node-ID Bit 6
 | X1.5 | res. | Reserviert
 | X1.6 | Id5 | Node-ID Bit 5
 | X1.7 | res. | Reserviert
 | X1.8 | Id4 | Node-ID Bit 4
 | X1.9 | res. | Reserviert
 | X1.10 | Id3 | Node-ID Bit 3
 | X1.11 | res. | Reserviert
 | X1.12 | Id2 | Node-ID Bit 2
 | X1.13 | res. | Reserviert
 | X1.14 | Id1 | Node-ID Bit 1
 | X1.15 | CAN Lo | CAN Low
 | X1.16 | Id0 | Node-ID Bit 0
 | X1.17 | CAN Hi | CAN High
 | X1.18 | Erw2 | mcSPI Erweiterungssignal 2
 | X1.19 | res. | Reserviert
 | X1.20 | Erw1 | mcSPI Erweiterungssignal 1
 | X1.21 | Din2 | Digitaler Eingang 2
 | X1.22 | SpiSCK | mcSPI Clock
 | X1.23 | Din1 | Digitaler Eingang 1
 | X1.24 | SpiMOSI | mcSPI Master Out Slave In
 | X1.25 | Din0 | Digitaler Eingang 0
 | X1.26 | Spi/SS | mcSPI Slave Select
 | X1.27 | Ain0 | Analoger Eingang 0
 | X1.28 | SpiMISO | mcSPI Master In Slave Out
 | X1.29 | Ain1 | Analoger Eingang 1
 | X1.30 | Din3 | Digitaler Eingang 3
 | X1.31 | GND | Masse Geberversorgung
 | X1.32 | res. | Reserviert
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | res. | Reserviert
 | X2.3 | +Up | Versorgungsspannung Leistung
 | X2.4 | res. | Reserviert
 | X2.5 | GND | Masse Leistung und Elektronik
 | X2.6 | GND | Masse Leistung und Elektronik
 | X2.7 | Ma | Motorphase A
 | X2.8 | +Ue | Versorgungsspannung Elektronik
 | X2.9 | Ma | Motorphase A
 | X2.10 | +Ue | Versorgungsspannung Elektronik
 | X2.11 | Mb | Motorphase B
 | X2.12 | Mb | Motorphase B
 | X2.13 | Mc | Motorphase C
 | X2.14 | Md | Motorphase D
 | X2.15 | Mc | Motorphase C
 | X2.16 | Md | Motorphase D


Inhalt - EDC-S65

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert
Artikelnummer | 1511665
Absolut max. Rating
- Spannung (Zerstörungsgrenze) Up kein Verpolungsschutz | 80 V
- Dauerspannung (Zerstörungsgrenze) Ue kein Verpolungsschutz | 33 V
- Kurzfristige Spitzenspannung < 1s Ue (Zerstörungsgrenze) kein Verpolungsschutz | 37 V
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V*1 | typ. 35 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 10 A
- Dauerausgangsstrom @ Up=24V*2 | 3.5 A
- Dauerausgangsstrom @ Up=48V*2 | 3 A
- Ausgangsspannung | 85% Up
- PWM-Frequenz | 32 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | nein
- bürstenlose Motoren | nein
- Linearmotoren | nein
- Schrittmotoren | ja
Mechanische Daten
- Abmessungen LxBxH | 74 x 45.5 x 14 mm
- Gewicht | 30 g
- Montage | Wand
- Steckverbinder | Crimp-Technik
Umgebung
- Schutzart | IP20
- Temperaturbereich | -25..55 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..90 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*3 us
- Positionierregler (POS) | 1000, 2000*3 us
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein
Geberversorgung (Drehgeber)
- Ausgangsspannung | 5 V
- Maximaler Ausgangsstrom | 0.2 A
Drehgeber
- Typ | inkremental
- Signale | A,B,Inx
- Max. Frequenz pro Spur | 100 kHz
- Eingangssignal | 0..5 V
- Signal-Typ | open collector, single ended
Digitale Eingänge
- Anzahl | 3 (Din0..2)
- Low-Pegel | 0..5 V
- High-Pegel | 8..30 V
- Bemerkung | Din2 parallel zu Dout0
Digitale Ausgänge
- Anzahl | 1 (Dout0)
- Dauerausgangsstrom | 1.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
- Bemerkung | Dout0 parallel zu Din2
Analoge Eingänge
- Anzahl | 1 (Ain0)
- Signal-Typ | +/- 10V, 12 Bit, single ended

Änderungen und Irrtümer vorbehalten
*1Endstufe aus, 5V Ausgang (Geberversorgung) ist unbelastet
*2Anschlusskabel mit maximal möglichem Leitungsquerschnitt, Umgebungstemperatur 40 °C, t > 40 °C Derating
*3Standardwert

keine Garantie, da der Wert empirisch ermittelt wurde, bitte beachten Sie die Applikation Notes zur Ermittlung des Dauerstromes


Klemmenbelegung und Abbildung

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | GND | Masse Geberversorgung
 | X1.2 | +U5V | 5V Geberversorgung (Drehgeber)
 | X1.3 | B | Inkrementalgeber - Spur B
 | X1.4 | A | Inkrementalgeber - Spur A
 | X1.5 | Inx | Inkrementalgeber - Index
 | X1.6 | res. | Reserviert
 | X1.7 | res. | Reserviert
 | X1.8 | CAN Lo | CAN Low
 | X1.9 | CAN Hi | CAN High
 | X1.10 | Din2/Dout0 | Digitaler Eingang 2 / Digitaler Ausgang 0
 | X1.11 | Din1 | Digitaler Eingang 1
 | X1.12 | Din0 | Digitaler Eingang 0
 | X1.13 | Ain0 | Analoger Eingang 0
 | X1.14 | GND | Masse Elektronik
 | X1.15 | +Ue | Versorgungsspannung Elektronik
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | GND | Masse Leistung
 | X2.3 | Ma | Motorphase A
 | X2.4 | Mb | Motorphase B
 | X2.5 | Mc | Motorphase C
 | X2.6 | Md | Motorphase D


Inhalt - EDC-S65-Modul

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Beschaltungsbeispiele

Abmessungen

Parameterliste (Dictionary)


Technische Daten

Beschreibung | Wert *3
Artikelnummer | 1506122
Leistung
- Versorgungsspannung Elektronik Ue | 9..30 V
- Stromaufnahme Elektronik @ Ue=24V | typ. 35 mA
- Versorgungsspannung Leistung Up | 9..60 V
- Maximaler Ausgangsstrom | 10 A
- Ausgangsspannung | 85% Up
- PWM-Frequenz | 25, 32, 50*1 kHz
- PWM-Modus | symmetrisch
- Min. Anschlussinduktivität | 200 uH
Motortypen
- bürstenbehaftete Motoren | nein
- bürstenlose Motoren | nein
- Linearmotoren | nein
- Schrittmotoren | ja
Mechanische Daten
- Abmessungen LxBxH | 52.5 x 41 x 11 mm
- Gewicht | 18 g
- Montage | Backplane
- Steckverbinder | Stiftleiste
Umgebung
- Schutzart | IP00
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
Reglerzykluszeiten
- Stromregler (CURR) | 125 us
- Drehzahlregler (SVEL) | 250 us
- Drehzahlregler (VEL) | 1000, 2000*1 us
- Positionierregler (POS) | 1000, 2000*1 us
Drehgeber
- Typ | inkremental
- Signale | A,B,Inx
- Max. Frequenz pro Spur | 100 kHz
- Eingangssignal | 5 V
- Signal-Typ | open collector, single ended
Digitale Eingänge
- Anzahl | 4 (Din0..3)
- Low-Schaltschwelle | -10..5 V
- High-Schaltschwelle | 6..30 V
- Bemerkung | Din3 parallel zu Dout1
Digitale Ausgänge
- Anzahl | 2 (Dout0..1)
- Dauerausgangsstrom | 1.5 A
- Lasten | resistiv, induktiv
- Ausgangsspannung | Versorgungsspannung Elektronik Ue
- Signal-Typ | plusschaltend
- Bemerkung | Dout1 parallel zu Din3
Analoge Eingänge
- Anzahl | 2 (Ain0..1)
- Signal-Typ | +/- 10V, 12 Bit, single ended
CAN-Bus
- Protokoll | DS301
- Geräteprofil | DS402
- Max. Baudrate | 1 Mbit/s
- CAN Spezifikation | 2.0B
- Galvanisch getrennt | nein

*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz

*3 Änderungen und Irrtümer vorbehalten.


Klemmenbelegung und Abbildung

+U5V Geberversorgung
Über den Pin +U5V werden 5V vom Regler zur Versorgung der Motorgeber bereitgestellt. Es darf keine Spannung von extern an diesen Pin angelegt werden!

Wenn an den +U5V Pin des Reglers eine Spannung angelegt wird, kann dies zur Zerstörung des Gerätes führen.

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | Inx | Inkrementalgeber - Index
 | X1.2 | Id7 | Node-ID Bit 7
 | X1.3 | +U5V | 5V Geberversorgung (Hall und Drehgeber)
 | X1.4 | Id6 | Node-ID Bit 6
 | X1.5 | B | Inkrementalgeber - Spur B
 | X1.6 | Id5 | Node-ID Bit 5
 | X1.7 | A | Inkrementalgeber - Spur A
 | X1.8 | Id4 | Node-ID Bit 4
 | X1.9 | res. | Reserviert
 | X1.10 | Id3 | Node-ID Bit 3
 | X1.11 | res. | Reserviert
 | X1.12 | Id2 | Node-ID Bit 2
 | X1.13 | res. | Reserviert
 | X1.14 | Id1 | Node-ID Bit 1
 | X1.15 | CAN Lo | CAN Low
 | X1.16 | Id0 | Node-ID Bit 0
 | X1.17 | CAN Hi | CAN High
 | X1.18 | Erw2 | mcSPI Erweiterungssignal 2
 | X1.19 | Dout0 | Digitaler Ausgang 0
 | X1.20 | Erw1 | mcSPI Erweiterungssignal 1
 | X1.21 | Din2 | Digitaler Eingang 2
 | X1.22 | SpiSCK | mcSPI Clock
 | X1.23 | Din1 | Digitaler Eingang 1
 | X1.24 | SpiMOSI | mcSPI Master Out Slave In
 | X1.25 | Din0 | Digitaler Eingang 0
 | X1.26 | Spi/SS | mcSPI Slave Select
 | X1.27 | Ain0 | Analoger Eingang 0
 | X1.28 | SpiMISO | mcSPI Master In Slave Out
 | X1.29 | Ain1 | Analoger Eingang 1
 | X1.30 | Din3/Dout1 | Digitaler Eingang 3 / Digitaler Ausgang 1
 | X1.31 | GND | Masse Geberversorgung
 | X1.32 | res. | Reserviert
 | X2.1 | +Up | Versorgungsspannung Leistung
 | X2.2 | res. | Reserviert
 | X2.3 | +Up | Versorgungsspannung Leistung
 | X2.4 | FE | Funktionserde
 | X2.5 | GND | Masse Leistung und Elektronik
 | X2.6 | GND | Masse Leistung und Elektronik
 | X2.7 | Ma | Motorphase A
 | X2.8 | +Ue | Versorgungsspannung Elektronik
 | X2.9 | Ma | Motorphase A
 | X2.10 | +Ue | Versorgungsspannung Elektronik
 | X2.11 | Mb | Motorphase B
 | X2.12 | Mb | Motorphase B
 | X2.13 | Mc | Motorphase C
 | X2.14 | Md | Motorphase D
 | X2.15 | Mc | Motorphase C
 | X2.16 | Md | Motorphase D


Inhalt - Erweiterungsmodule

Bremschopper ER-Lx

Gateways CAN


Inhalt - Bremschopper ER-Lx

ER-L40

ER-L41

ER-L60-30

ER-L60-60


Inhalt - ER-L40

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Berechnung des externen Bremswiderstandes

Berechnung der Zykluszeit

Leistungskurve

Installation


Technische Daten

Beschreibung | Wert
Artikelnummer | 1506795
Leistung
- Versorgungsspannung Elektronik Up | 18..60 V
- Stromaufnahme Elektronik | typ. 10 mA
- Bremsspitzenstrom @ Ubr=60V | 60 A
- Bremsdauerstrom @ Ta = 40°C | 10 A
Bremswiderstand
- Einstellbare Bremsspannung Ubr | 18..60 V
- Einschaltschwelle | Ubr + 1.7 V (+/- 4%)
- Ausschaltschwelle | Ubr + 0.7 V (+/- 4%)
- Bremswiderstand @ Ubr=60V | min. 1 Ohm (extern)
- Maximale Einschaltdauer | 100 %
- Integrierte Elektrolytkondensatoren | 400 uF
Mechanische Daten
- Abmessungen LxBxH | 110 x 22.5 x 77 mm
- Gewicht | 110 g
- Montage | Hutschiene / Wand
- Steckverbinder | Feder-/Schraubklemmen
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Fehlererkennung
- Kurzschluss Bremswiderstand | ja
- Bremswiderstand fehlt / defekt | ja
- Übertemperatur Elektronik | ja
- Übertemperatur Bremswiderstand | nein
Digital Ausgang
- Anzahl | 1 (/Error)
- Dauerausgangsstrom | typ. 10 mA
- Lasten | resistiv
- Ausgangsspannung | Up (24V max.)
- Signal-Typ | plusschaltend

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | /Error | Error Ausgang
 | X1.5 | Rd1 | Bremswiderstand
 | X1.6 | Rd2 | Bremswiderstand


Anzeigeelemente

LED | Farbe | Zustand | Beschreibung
LED0 "Power" | grün | leuchtet | Leistungsspannung liegt an (Normalbetrieb)
 |  | leuchtet nicht | Leistungsspannung fehlt
LED1 "State" | gelb | leuchtet | Energie wird über den Widerstand dissipiert
 |  | leuchtet nicht | Normalbetrieb
LED2 "Error" | rot | leuchtet | Fehler
 |  | leuchtet nicht | kein Fehler (Normalbetrieb)


Bedienelemente

Bei diesem Bremschopper muss eingestellt werden, ab welcher Spannung der Widerstand Energie dissipieren soll. Da alle Netzversorgungen Toleranzen aufweisen (z.B. rechnet man bei ± 25% bei einer 24V-Versorgungsspannung mit Spannungen im Bereich von 18 bis 30 V), muss man Schwankungen zulassen. Deswegen ist es notwendig eine Spannung einzustellen, die gleich oder größer als die maximale Versorgungsspannung ist ( also wie im oberen Beispiel 30V).
Die Einstellung erfolgt durch zwei Drehschalter auf der Unterseite des Moduls. Mit Hilfe eines Schraubenziehers kann man einen Wert von 00 bis 99 einstellen. Wobei „Z“ für die Zehner und „E“ für die Einer steht. Es gilt aber nur der Arbeitsbereich aus den technischen Daten (siehe "Einstellbare Bremsspannung Ubr").

Eine zu niedrig eingestellte Spannung kann zur Zerstörung des Bremschoppers oder des Dissipationswiderstands führen.


Berechnung des externen Bremswiderstandes

Der Widerstandswert ist von der Leistung, die maximal zurückgespeist werden kann, abhängig, d.h. im Endeffekt von der Bremsspannung Up, auf die begrenzt werden soll und der Stromgrenze des Reglers. Bei einem 4-Q Regler kann man den Brems- und Beschleunigungsvorgang als äquivalent betrachten. Ist also die Stromgrenze z.B. auf 10A eingestellt, kann der Regler auch nicht mehr als diese 10A zurückspeisen. Beispiel:

Up = 50V
Im max = 10A

Rb = Up / Im max = 50V / 10A
Rb = 5 Ohm

Somit fließt solange ein Strom von 10A durch den Bremswiderstand von Rb = 5Ohm, bis die Spannung unter die Ausschaltschwelle des Bremschoppers sinkt.

Der Widerstand sollte 20 % kleiner dimensioniert werden, um evtl. auftretende Toleranzen abzufangen. Prinzipiell kann man den Widerstand auch noch weiter verkleinern. Zu beachten ist allerdings, dass dadurch die Spitzenströme, ebenso wie die Welligkeit auf der Versorgungsspannung, durch das Bremsmodul steigen können. Um das zu vermeiden kann man eine größere Kapazität (Kondensatoren) in die Versorgung einbauen.

Die Spitzenleistung für den Widerstand ergibt sich aus:

Pmax = Up
      * Im max = 50V * 10A
Pmax = 500W

Zu beachten ist auch, dass die Bremsenergie in Wärme umgewandelt wird. Ein ausreichend bemessener Kühlkörper ist oft entscheidend für die Dauerleistung des Bremswiderstandes.

Die Installation des mcER-L4x/L6x an den Regler ist unproblematisch. Den Spannungswert stellt man beim mcER-L4x über die Drehschalter ein. Beim mcER-L6x ist die Bremsspannung fest eingestellt und auf dem Gerät gekennzeichnet: mcER-L60-30 bedeutet, dass die Bremsspannung auf 30V eingestellt ist. Wichtig dabei ist, dass der Spannungswert oberhalb der maximalen Versorgungsspannung (ausgehend von der Ausschaltschwelle einschließlich der Toleranzen des Netzteils und des Bremschoppers) gewählt wird. D.h. bei Up = 24V +/- 20% den Wert auf z.B. 30V oder höher einstellen.

Eine Überlastung des Bremswiderstandes kann zu dessen Zerstörung führen. Dabei entstehen sehr hohe Temperaturen am Bremswiderstand die zu einem Brand des Widerstand bzw. benachbarten Baugruppen führen können.
Für diesen Fall sind entsprechende Brandschutzmaßnahmen am bzw. im Umfeld des Bremwiderstandes vorzusehen. Um den Bremswiderstand und den Bremschopper vor Überlastung zu schützen muss eine Sicherung in der Zuleitung zum Bremschopper vorgesehen werden. Der Bremschopper verfügt nicht über eine interne Sicherung. Zudem sind die Angaben des Herstellers des Bremswiderstandes zur Dimensionierung, Derating und Leistungsfähigkeit und Absicherung zu beachten.

  • Der Spannungswert des Bremschoppers muss oberhalb der maximalen Versorgungsspannung (ausgehend von der Ausschaltschwelle einschließlich der Toleranzen des Netzteils und des Bremschoppers) eingestellt werden. Wird der Spannungswert zu niedrig eingestellt besteht die Gefahr, dass der Bremschopper dauerhaft Strom abführt und der Widerstand somit überlastet wird.
  • Wird der Widerstand zu groß dimensioniert kann nicht genügend Strom abgeführt werden und die Spannung steigt über die eingestellte Bremsspannung. In diesem Fall wäre der Bremschopper dauerhaft aktiv.
  • Bei einem Defekt des Widerstandes steigt die Spannung im Zwischenkreis an und es kann zu einer Beschädigung der Elektronik kommen.

Der Bremschopper verfügt nicht über eine interne Sicherung. In der Zuleitung zum Bremschopper muss eine Sicherung vorgesehen werden.

Für die Absicherung einer möglichen Fehleinstellung hat der Anwender zu sorgen.

Die genannten Beispiele sollen nur allgemein die Vorgehensweise bei der Berechnung des Bremswiderstandes verdeutlichen. Praktische Anwendungen müssen immer für sich betrachtet werden! Bitte konsultieren Sie immer auch den Hersteller des Bremswiderstandes zu den Themen Dimensionierung, Derating und Leistungsfähigkeit.


Berechnung der Zykluszeit

Diese Application Note beschreibt die Berechnung von Zykluszeiten für den Bremschopper mcER-L40.

Für allgemeine Informationen zur Berechnung von Zykluszeiten schauen Sie in das Kapitel Berechnung der Zykluszeit.

Die folgenden Berechnung gelten ausschließlich für das Gerät mcER-L40. Der angeschlossene Bremswiderstand muss, nach dem gleichen Schema, separat Berechnet werden.

Begriffe

Abkürung | Bedeutung | Beschreibung
In | Dauerstrom | Der Strom, den das Gerät ohne Pause regulieren kann.*
Ip | Spitzenstrom | Kurzfristig auftretender hoher Strom.
ton | Betriebsdauer | Die Zeit, in welcher Strom durch das Gerät fließt.
toff | Abkühlzeit | Die Zeit, in welcher kein Strom fließt und sich das Gerät abkühlen kann.
Irms | Effektivstrom | Effektivstrom des Zyklus
- | Leistungskurve | Abhängigkeit zwischen dem Spitzenstrom (Ip) und der Betriebsdauer (ton). Diese Kurve zeigt, wie lang der Regler bestimmten Strom regeln kann.
*unter bestimmten Bedinungen, siehe Datenblatt des Geräts

Berechnung der Zykluszeit

Die maximale Impulsdauer in Abhängigkeit des Stromes kann aus der Leistungskurve des Bremschoppers (siehe Leistungskurve mcER-L40) entnommen werden.
Der maximale Dauerstrom für den Bremschopper mcER-L40 beträgt 10A.

Das bedeutet, dass der Effektivstrom nicht größer als 10A und die Einschaltdauer ton nicht größer als auf der Leistungskurve dargestellt sein darf.

Für die Berechnung des Effektivstroms kann folgende Formel verwendet werden.

Anhand dieser Daten muss die minimale Abkühlzeit berechnet werden.

Die oben angegebenen Formeln gelten für Rechtecksignale. Die echten Signale sollten approximiert werden oder der reale Effektivstrom muss berechnet werden.


Leistungskurve

ENGEL Elektromotoren AG - Änderungen und Irrtümer vorbehalten


Installation

Allgemein

Wenn man einen Motor abbremst, wird die Bewegungsenergie wieder freigesetzt. Im 4Q-Betrieb wird die frei werdende Bewegungsenergie als elektrische Energie in den Zwischenstromkreis der Netzversorgung zurückgeführt. Wenn keine anderen Verbraucher (z.B. andere Regler) diese Energie entnehmen, kann sich die Spannung im Zwischenstromkreis auf einen Wert erhöhen, der Schaden an elektrischen Schaltungen verursachen kann. In diesem Fall, muss ein angemessen ausgelegtes, externes Überspannungsschutzmodul verwendet werden, um Schäden zu verhindern. Diese Überspannungsschutzmodule (z.B. ENGEL mcER-L40) schließen bei Überschreiten eines bestimmten Spannungswertes die Leitungen über einen Widerstand kurz und dissipieren so die überschüssige Energie als Wärme. Langsame Spannungsanstiege können von dem Regler selbst erkannt werden und zur Abschaltung des Motors führen. Schnelle Spannungsanstiege können von dem Überspannungsschutzmodul erkannt und in Wärme umgewandelt werden. Dennoch ist nicht ausgeschlossen, dass sehr schnelle Spannungsanstiege zur Beschädigung des Gerätes führen. Da geringe Schwankungen normal sind, ist es wichtig, dass der Regler eine höhere Spannung vertragen kann, als das Netzteil maximal liefert.

Fehlererkennung

Für die Erkennung des Widerstandes werden die Phasen ausgeblendet in denen der Bremschopper Strom über den Widerstand abführt. In diesen Phasen kann nicht erkannt werden, ob ein Widerstand vorhanden ist. Sobald die Spannung genügend gesunken ist und der Bremschopper zurück in den Normalbetrieb geht, wird ein Defekt am Widerstand sofort erkannt und der Bremschopper geht in den Fehlerzustand und bleibt dort bis das Problem am Widerstand beseitigt wird. Ein Kurzschluss im Bremswiderstand wird in jeder Betriebsart des Bremschoppers erkannt.

Eine Überlastung des Bremswiderstandes kann zu dessen Zerstörung führen. Dabei entstehen sehr hohe Temperaturen am Bremswiderstand die zu einem Brand des Widerstands bzw. benachbarten Baugruppen führen können.
Für diesen Fall sind entsprechende Brandschutzmaßnahmen am bzw. im Umfeld des Bremwiderstandes vorzusehen. Um den Bremswiderstand und den Bremschopper vor Überlastung zu schützen muss eine Sicherung in der Zuleitung zum Bremschopper vorgesehen werden. Der Bremschopper verfügt nicht über eine interne Sicherung. Zudem sind die Angaben des Herstellers des Bremswiderstandes zur Dimensionierung, Derating, Leistungsfähigkeit und Absicherung zu beachten.

Verdrahtung

Der Fehlerausgang muss von einer übergeordneten Steuerung oder dem zu schützenden Antriebsregler ausgewertet werden.

Der Bremschopper verfügt nicht über eine interne Sicherung. In der Zuleitung zum Bremschopper muss eine Sicherung vorgesehen werden.

Durch die Entstehung von hohen Temperaturen am Bremswiderstand müssen in der Endanwendung Schutzmaßnahmen gegen Berührung des Bremswiderstandes getroffen werden. Auch hier sind Herstellerangaben des Bremswiderstandes zu beachten.

Gemeinsame Versorgung +Ue und +Up:

Gemeinsame Versorgung + Ue und +Up ohne Rückspeisung:

Getrennte Versorgung +Ue und +Up:

Getrennte Versorgung +Ue und +Up mit erhöhter Bremsleistung (Imax = 2 x 70A):


Inhalt - ER-L41

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Bedienelemente

Berechnung der Leistung

Installation


Technische Daten

Beschreibung | Wert
Artikelnummer | 1506796
Leistung
- Versorgungsspannung Elektronik Up | 18..60 V
- Stromaufnahme Elektronik | typ. 10 mA
- Maximaler Bremsstrom @ Ubr=60V | 24 A
- Dauer-Bremsstrom @ Ta = 40°C | 3 A
Bremswiderstand
- Einstellbare Bremsspannung Ubr | 18..75 V
- Einschaltschwelle | Ubr + 1.7 V (+/- 4%)
- Ausschaltschwelle | Ubr + 0.7 V (+/- 4%)
- Bremswiderstand | 2.5 Ohm (integriert)
- Maximale Einschaltdauer | 100 %
- Integrierte Elektrolytkondensatoren | 440 uF
Mechanische Daten
- Abmessungen LxBxH | 110 x 40 x 77 mm
- Gewicht | 380 g
- Montage | Hutschiene / Wand
- Steckverbinder | Feder-/Schraubklemmen
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Fehlererkennung
- Kurzschluss Bremswiderstand | ja
- Bremswiderstand fehlt / defekt | ja
- Übertemperatur Elektronik | ja
- Übertemperatur Bremswiderstand | ja
Digital Ausgang
- Anzahl | 1 (/Error)
- Dauerausgangsstrom | typ. 10 mA
- Lasten | resistiv
- Ausgangsspannung | Up (24V max.)
- Signal-Typ | plusschaltend

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | FE | Funktionserde
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | GND | Masse Leistung
 | X1.4 | /Error | Error Ausgang
 | X1.5 | reserved | Reserviert
 | X1.6 | reserved | Reserviert


Berechnung der Leistung

Die Bremsmodule vom Typ mcER-L41 verfügen über einen internen Bremswiderstand mit einem Wert von Rb = 2,5 Ohm. Die Verlustleistung im Dauerbetrieb beträgt PD = 25W. Daraus ergibt sich ein Dauerstrom ID von:

ID = sqrt( PD / Rb) = sqrt( 25W / 2,5 Ohm) = 3,16A

Im Mittel kann der mcER-L41 einen Strom von 3,16A bei Ta = 40°C abführen.

Für Anwendungen mit zyklischen Bremsvorgängen und Impulslast sind höhere Bremsströme möglich. Hierzu muss man die Impulscharakteristik des Bremswiderstands heranziehen. Im mcER-L41 wird ein Widerstand der Serie BRQ von Isabellenhütte (siehe www.isabellenhuette.de) verwendet. Die Charakteristik ist meist in Form eines Diagramms in den Datenblättern der Bremswiderstände zu finden.

Das Diagramm kommt aus dem Datenblatt für die Serie BRQ von Isabellenhütte (Ausgabe BRQ-2012-04-16)

Aus diesem Diagramm kann man die maximale Leistung PPeak in Abhängigkeit von der Impulsbreite tImpuls ablesen. Nimmt man nun eine Bremsspannung von UBr = 70V an, so ergibt sich folgende Impulsleistung (Punkt 1 auf dem Diagramm):

PPeak = UBr2 / Rb = 70V 2 / 2,5Ohm = 1960W

Mit dieser Leistung kann man aus dem Kennlinienfeld die zulässige Impulsdauer ablesen (Punkt 2 muss im Arbeitsbereich liegen, d.h. unterhalb der schwarzen Kurve). Man erhält dabei einen Wert von ca. tImpuls = 1,5s (Punkt 3 auf dem Diagramm). Die Einschaltdauer D ergibt sich mit Hilfe der Dauerleistung PD wie folgt:

D = PD / PPeak = 25W / 1960W = 0,012 = 1,2%

Daraus ergibt sich der folgenden Fahrzyklus:

tBrems = tImpuls = 1,5s

tPause = tImpuls/D = 1,5s / 0,012 = 125s

Bei hohen Impulsleistungen muss dem Bremswiderstand, über die Einschaltdauer, ausreichend Zeit zur Verfügung gestellt werden, um sich wieder abzukühlen.

Die Übertemperaturabschaltung des mcER-L41 dient nicht dazu den Arbeitsbereich des Bremschoppers zu begrenzen. Vielmehr soll im Fehlerfall die thermische Zerstörung des Gerätes verhindert werden. Der fortwährender Betrieb des Gerätes an der Übertemperaturgrenze ist nicht zulässig und kann die Zuverlässigkeit und die Lebensdauer des Gerätes bis hin zum Ausfall reduzieren.

Die genannten Beispiele sollen nur allgemein die Vorgehensweise bei der Berechnung des Bremswiderstandes verdeutlichen. Praktische Anwendungen müssen immer für sich betrachtet werden!


Inhalt - ER-L60-30

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Berechnung des externen Bremswiderstandes

Installation


Technische Daten

Beschreibung | Wert
Artikelnummer | 1511525
Absolut max. Rating
- Spannung (Zerstörungsgrenze) kein Verpolungsschutz | 100 V
Leistung
- Versorgungsspannung Elektronik Up | 18..30 V
- Stromaufnahme Elektronik | typ. 10 mA
- Bremsspitzenstrom @ Ubr=30V | 60 A
- Bremsdauerstrom @ Ta = 40°C | 5 A
Bremswiderstand
- Bremseinsatzspannung Ubr | 30 V
- Bremswiderstand @ Ubr=30V | min. 0.5 Ohm (extern)
- Maximale Einschaltdauer | 100 %
- Integrierte Elektrolytkondensatoren | 100 uF
Mechanische Daten
- Abmessungen LxBxH | 74 x 45.5 x 14 mm
- Gewicht | 30 g
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Fehlererkennung
- Kurzschluss Bremswiderstand | ja
- Bremswiderstand fehlt / defekt | ja
- Übertemperatur Elektronik | ja
- Übertemperatur Bremswiderstand | nein
Digital Ausgang
- Anzahl | 1 (/ERR)
- Dauerausgangsstrom | typ. 10 mA
- Lasten | resistiv
- Ausgangsspannung | Up (24V max.)
- Signal-Typ | plusschaltend

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

Stecker | Klemme | Signal | Beschreibung
 | X1.1 | GND | Masse Leistung
 | X1.2 | +Up | Versorgungsspannung Leistung
 | X1.3 | Rd1 | Bremswiderstand
 | X1.4 | /Error | Error Ausgang
 | X1.5 | Rd2 | Bremswiderstand


Steckverbindersysteme

Um den Motor mit Nennstrom zu betreiben, müssen die Querschnitte der Verbindungskabel an den jeweiligen Betriebsstrom nach gültigen nationalen Normen ausgelegt werden.
Für die Nennwerte des Gerätes müssen die maximal möglichen Querschnitte der Steckverbinder eingesetzt werden.
Eine minimale Leitungslänge von 20cm muss eingehalten werden!
Verarbeitung der Crimp-Steckverbinder MOLEX Microfit 3.0
Die Geräte der mcER-L6x Reihe verwenden Steckverbinder mit Crimptechnik. Die folgende Übersicht zeigt, welche Leiterquerschnitte mit dem Steckverbinder verwendet werden können.

Klemme | Bezeichnung / Art.-Nr. | Leiterquerschnitt d [AWG] [mm2] | Max. Durchmesser der Isolierung D [mm] | Abisolierlänge A [mm]
X1 | - Crimp-Gehäuse - 43645-0500 (Bus-Varianten des Reglers 43645-0600) - Crimp-Kontakt - 43030-0001 - Crimp-Werkzeug - Handzange 63819-0000 | AWG 20 ... 24 0,2 ... 0,519 | 1,85 | 2,54 ... 2,92
Weitere Information finden Sie unter www.molex.com.

Die Verwendung nicht vom Hersteller spezifizierter Werkzeuge kann die Zuverlässigkeit der Crimp-Verbindung bis hin zum Ausfall beeinträchtigen.


Installation

Allgemein

Wenn man einen Motor abbremst, wird die Bewegungsenergie wieder freigesetzt. Im 4Q-Betrieb wird die frei werdende Bewegungsenergie als elektrische Energie in den Zwischenstromkreis der Netzversorgung zurückgeführt. Wenn keine anderen Verbraucher (z.B. andere Regler) diese Energie entnehmen, kann sich die Spannung im Zwischenstromkreis auf einen Wert erhöhen, der Schaden an elektrischen Schaltungen verursachen kann. In diesem Fall, muss ein angemessen ausgelegtes, externes Überspannungsschutzmodul verwendet werden, um Schäden zu verhindern. Diese Überspannungsschutzmodule (z.B. ENGEL mcER-L60) schließen bei Überschreiten eines bestimmten Spannungswertes die Leitungen über einen Widerstand kurz und dissipieren so die überschüssige Energie als Wärme. Langsame Spannungsanstiege können von dem Regler selbst erkannt werden und zur Abschaltung des Motors führen. Schnelle Spannungsanstiege können von dem Überspannungsschutzmodul erkannt und in Wärme umgewandelt werden. Dennoch ist nicht ausgeschlossen, dass sehr schnelle Spannungsanstiege zur Beschädigung des Gerätes führen. Da geringe Schwankungen normal sind, ist es wichtig, dass der Regler eine höhere Spannung vertragen kann, als das Netzteil maximal liefert.

Fehlererkennung

Für die Erkennung des Widerstandes werden die Phasen ausgeblendet in denen der Bremschopper Strom über den Widerstand abführt. In diesen Phasen kann nicht erkannt werden, ob ein Widerstand vorhanden ist. Sobald die Spannung genügend gesunken ist und der Bremschopper zurück in den Normalbetrieb geht, wird ein Defekt am Widerstand sofort erkannt und der Bremschopper geht in den Fehlerzustand und bleibt dort bis das Problem am Widerstand beseitigt wird. Ein Kurzschluss im Bremswiderstand wird in jeder Betriebsart des Bremschoppers erkannt.

Eine Überlastung des Bremswiderstandes kann zu dessen Zerstörung führen. Dabei entstehen sehr hohe Temperaturen am Bremswiderstand die zu einem Brand des Widerstands bzw. benachbarten Baugruppen führen können.
Für diesen Fall sind entsprechende Brandschutzmaßnahmen am bzw. im Umfeld des Bremwiderstandes vorzusehen. Um den Bremswiderstand und den Bremschopper vor Überlastung zu schützen muss eine Sicherung in der Zuleitung zum Bremschopper vorgesehen werden. Der Bremschopper verfügt nicht über eine interne Sicherung. Zudem sind die Angaben des Herstellers des Bremswiderstandes zur Dimensionierung, Derating, Leistungsfähigkeit und Absicherung zu beachten.

Verdrahtung

Der Fehlerausgang muss von einer übergeordneten Steuerung oder dem zu schützenden Antriebsregler ausgewertet werden.

Der Bremschopper verfügt nicht über eine interne Sicherung. In der Zuleitung zum Bremschopper muss eine Sicherung vorgesehen werden.

Durch die Entstehung von hohen Temperaturen am Bremswiderstand müssen in der Endanwendung Schutzmaßnahmen gegen Berührung des Bremswiderstandes getroffen werden. Auch hier sind Herstellerangaben des Bremswiderstandes zu beachten.

Gemeinsame Versorgung +Ue und +Up:

Gemeinsame Versorgung + Ue und +Up ohne Rückspeisung:

Getrennte Versorgung +Ue und +Up:

Getrennte Versorgung +Ue und +Up mit erhöhter Bremsleistung (Imax = 2 x 70A):


Inhalt - ER-L60-60

Technische Daten

Klemmenbelegung und Abbildung

Steckverbindersysteme

Anzeigeelemente

Berechnung des externen Bremswiderstandes

Installation


Technische Daten

Beschreibung | Wert
Artikelnummer | 1511532
Absolut max. Rating
- Spannung (Zerstörungsgrenze) kein Verpolungsschutz | 100 V
Leistung
- Versorgungsspannung Elektronik Up | 18..60 V
- Stromaufnahme Elektronik | typ. 10 mA
- Bremsspitzenstrom @ Ubr=60V | 60 A
- Bremsdauerstrom @ Ta = 40°C | 5 A
Bremswiderstand
- Bremseinsatzspannung Ubr | 60 V
- Bremswiderstand @ Ubr=60V | min. 1 Ohm (extern)
- Maximale Einschaltdauer | 100 %
- Integrierte Elektrolytkondensatoren | 100 uF
Mechanische Daten
- Abmessungen LxBxH | 74 x 45.5 x 14 mm
- Gewicht | 30 g
Umgebung
- Schutzart | IP20
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Kodierschalter | ja
- Status-LEDs | ja
Fehlererkennung
- Kurzschluss Bremswiderstand | ja
- Bremswiderstand fehlt / defekt | ja
- Übertemperatur Elektronik | ja
- Übertemperatur Bremswiderstand | nein
Digital Ausgang
- Anzahl | 1 (/ERR)
- Dauerausgangsstrom | typ. 10 mA
- Lasten | resistiv
- Ausgangsspannung | Up (24V max.)
- Signal-Typ | plusschaltend

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Inhalt - Gateways CAN

CAN-Stick

CAN-Stick-2


Inhalt - CAN-Stick

Technische Daten

Klemmenbelegung und Abbildung

Anzeigeelemente

Text-Kommandos


Technische Daten

Beschreibung | Wert *3
Artikelnummer | 1212164
Leistung
- Versorgungsspannung Elektronik Ue | 5 V (über USB)
- Stromaufnahme Elektronik | typ. 100 mA
Mechanische Daten
- Abmessungen LxBxH | 60 x 20 x 11 mm
- Gewicht | 30 g
Umgebung
- Schutzart | IP40
- Temperaturbereich | 0..45 °C
- Luftfeuchtigkeit (nicht kondensierend) | 20..80 %
Bedienelemente
- Kodierschalter | nein
- Status-LEDs | ja
CAN-Bus
- CAN Spezifikation | 2.0B
- Max. Baudrate | 1 Mbit/s
- Galvanisch getrennt | ja
- Bus-Abschlußwiderstand | 120 Ohm integriert
USB
- Schnittstelle | USB 2.0
- Unterstützte Betriebssysteme | Windows XP, Windows Vista, Windows 7, Windows 8 (32/64-bit)
- Treiber | Installation von PLC notwendig
- Bemerkung | Die Treiber unterstützen virtuellen COM-Port (VCP)
- Virtueller COM-Port Protokoll | ASCII Protokoll angelehnt an DS309-3

*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz

*3 Änderungen und Irrtümer vorbehalten.


Klemmenbelegung und Abbildung

Stecker | Klemme | Signal | Beschreibung
Steckerseite | X1.1 | res. | Reserviert
 | X1.2 | CAN Hi | CAN High (Farbe des USB-Kabels: weiß)
 | X1.3 | CAN Lo | CAN Low (Farbe des USB-Kabels: grün)
 | X1.4 | res. | Reserviert
 | X1.5 | CAN GND | CAN Ground (Farbe des USB-Kabels: schwarz)


Anzeigeelemente

LED | Farbe | Zustand | Beschreibung
LED0 "Power" | grün | leuchtet | Normalbetrieb
 |  | leuchtet nicht | Versorgungsspannung fehlt
 |  | blinkt | Bootloader-Modus (keine Firmware)
LED1 "State" | gelb | leuchtet nicht | Normalbetrieb
 |  | blinkt | Bootloader-Modus (blinkt bei eingehender Nachricht)
LED2 "Error" | rot | leuchtet | Fehler
 |  | leuchtet nicht | kein Fehler (Normalbetrieb)
LED3 "Rx" | grün | blinkt | blinkt bei eingehender Nachricht
 |  | leuchtet nicht | keine eingehende Nachricht
LED4 "Tx" | gelb | blinkt | blinkt bei ausgehender Nachricht
 |  | leuchtet nicht | keine ausgehende Nachricht


AN1301 ENGEL Text-Kommandos

Nummer | AN1301
Name | AN_ENGEL_TextCommands
Bezeichnung | ENGEL Text-Kommandos
Querverweis | -

Beschreibung

Die Text-Kommandos basieren auf der CiA-Spezifikation DS309-3 (CiA = CAN in Automation).

Jedes Text-Kommando besteht aus Schlüsselworten und Zahlen, die durch Leerzeichen getrennt sind. Jede Kommandoeingabe muss mit CRLF abgeschlossen werden (CR=Carriage return, LF=Line feed) und wird von dem Gerät bestätigt. Die Zahlen können entweder in dezimaler- oder Hex-Notation (mit 0x - Präfix) angegeben werden.

Nur für Geräte mit USB oder RS232 Schnittstelle:
Um den Empfangspuffer von der USB / RS232-Seite zu löschen, kann ein Escape-Zeichen (=0x1B) an das Gerät gesendet werden.
Wenn eine CAN-Nachricht empfangen wurde, wird eine Benachrichtigung über die serielle Schnittstelle unangefordert gesendet.

Nur für Geräte mit Ethernet Schnittstelle:
Wenn eine CAN-Nachricht empfangen wurde, wird eine Benachrichtigung über TCP/IP unangefordert gesendet.

Syntax der Anforderung

"["sequence"]" [[net] node] command

wobei:

sequence | - UNSIGNDE32 Nummer der Anforderung (optional).
net | - Netzwerknummer. Momentan wird diese Nummer ignoriert.
node | - Identifikationsnummer des Knotens nach CANopen (NodeId)
command | - Kommando mit Parametern

Beispiel:

[1] 1 24 write 0x3300 0 i32 1000    # Parameter Index=0x3300 Subindex=0 vom Gerät mit NodeId=24 wird über SDO (Service Data Object) mit dem Wert=1000 beschrieben.
1 24 write 0x3300 0 i32 1000        # das Gleiche, aber ohne <sequence>
24 write 0x3300 0 i32 1000          # das Gleiche, aber ohne <sequence> und ohne <net>

Syntax der Antwort

"["sequence"]" response

wobei:

sequence | - UNSIGNDE32 Nummer der Anforderung (nur dann, wenn bei der Anforderung angegeben).
response | - Antworten: OK Error: <error_code>
Die Fehlercodes (error_code) sind im Kapitel "Fehlercodes" beschrieben.

Syntax der Benachrichtigung

[net] MSG cob_id len_in_bytes value0 [..value7]

wobei:

net

- Netzwerknummer. Momentan wird diese Nummer ignoriert.

Beispiel:

MSG 0x00000181 3 0x11 0x22 0x33      # CAN-Nachricht mit ID=0x181 und 3 Datenbytes=0x11 0x22 0x33
MSG 0x00000182 1 0x56 0x78           # CAN-Nachricht mit ID=0x182 und 2 Datenbytes=0x56 0x78

Kommandos

Das Gerät unterstützt eine Untermenge der DS309-Kommandos und zusätzlich ENGEL-spezifische Kommandos.

Kommando
 Beschreibung

info version
 Gibt Version-Informationen zurück.

Beispiel:
   info version
       0x0139 0x15010001 1.82.02.40 0 128 1.10 0.0

wobei:
- vendor_id = 0x0139
- product_code = 0x15010001
- firmware_version = 1.82.02.40
- serial_number = 0
- network_class = 128
- protocol_version = 1.10
- implementation_class = 0.0

[net] init baudrate
 Setzt die CAN-Übertragungsgeschwindigkeit und aktiviert den CAN-Bus.
baudrate  = 1000,800,500,250,125,100,50,20 [kBit/s]
oder
       -1 = CAN-Deaktivieren
        0 = 1000 kBit/s
    1 = 800 kBit/s
    2 = 500 kBit/s
    3 = 250 kBit/s
    4 = 125 kBit/s
    5 = 100 kBit/s
    6 = 50 kBit/s
    7 = 20 kBit/s
Beispiel:
   init 125
[net] set network value
 Setzt ein Defaultwert für "net"

Beispiel:
   1 set network 2

[net] set node value
 Setzt ein Defaultwert für "node"

Beispiel:
   1 set node 0x21

[[net] node] start
 Setzt ein CANopen-Gerät in Operational-Zustand. Beim "node" gleich 0 schickt man eine Broadcast-Nachricht.

Beispiel:
   5 start
   0 start

[[net] node] stop
 Setzt ein CANopen-Gerät in Stop-Zustand. Beim "node" gleich 0 schickt man eine Broadcast-Nachricht.

Beispiel:
   5 stop
   0 stop

[[net] node] preop[erational]
 Setzt ein CANopen-Gerät in PreOperational-Zustand. Beim "node" gleich 0 schickt man eine Broadcast-Nachricht.

Beispiel:
   5 preop
   0 preop

[[net] node] reset node
 Setzt ein CANopen-Gerät in Reset-Zustand. Beim "node" gleich 0 schickt man eine Broadcast-Nachricht.

Beispiel:
   5 reset node
   0 reset node

[[net] node] reset comm[unication]
 Setzt ein CANopen-Gerät in ResetCommunication-Zustand. Beim "node" gleich 0 schickt man eine Broadcast-Nachricht.

Beispiel:
   5 reset comm
   0 reset comm

[[net] node] r[ead] index subindex datatype
 Liest ein Parameter über CANopen-Protokoll (SDO-Read). Die unterstützten Datentypen (datatype) wurden im Kapitel "Datentypen" beschrieben.

Beispiel:
   5 r 0x3001 0 i32

[[net] node] w[rite] index subindex datatype value
 Beschreibt ein Parameter über CANopen-Protokoll (SDO-Write). Die unterstützten Datentypen (datatype) wurden im Kapitel "Datentypen" beschrieben.

Beispiel:
   5 w 0x3300 0 i32 -1000

[net] set sdo_timeout value
 Setzt ein Timeout-Wert in Millisekunden für die Read- und Write-Kommandos (SDO-Transfer). Defaultwert ist auf 200 ms eingestellt.

Beispiel:
   set sdo_timeout 1000

[net] w[rite] m[sg] cob_id len_in_bytes value0[..value7]
 Sendet einen CAN-Nachricht mit ID=cob_id und Daten value0..value7. Das Kommando ist unabhängig von den CANopen-Protokollen. Es handelt sich um reine CAN-Nachrichten. Wenn das 29 Bit vom "cob_id" gesetzt ist, dann handelt es sich um eine 29-Bit lange Id-Nummer (extended Id) der CAN-Nachricht.

Beispiel:
   w m 0x201 2  0x11 0x22
   w m 0x20000201 2  0x11 0x22

[net] r[ead] m[sg] cob_id [len_in_bytes]
 Sendet einen Remote-Frame mit ID=cob_id. Das Kommando ist unabhängig von den CANopen-Protokollen. Es handelt sich um reine CAN-Nachrichten. Wenn das 29 Bit vom "cob_id" gesetzt ist, dann handelt es sich um eine 29-Bit lange Id-Nummer (extended Id) der CAN-Nachricht.

Beispiel:
   r m 0x181
   r m 0x20000181

[net] mc set echo value
 ACHTUNG: Das Kommando steht nur bei Geräten mit RS232- oder USB-Schnittstelle zur Verfügung (z.B. CAN-Stick, CAN-USB, CAN-RS).

Echo: 1=aktivieren / 0=deaktivieren

Beispiel:
   mc set echo 1

[net] mc set rs232_baudrate value
 ACHTUNG: Das Kommando steht nur bei Geräten mit RS232-Schnittstelle zur Verfügung (z.B. CAN-RS).

Stellt die Übertragungsrate der seriellen Schnittstelle ein. Die Einstellung wird erst nach einem Neustart des Gerätes übernommen. Ein Neustart kann z.B. über "mc reset cpu" ausgelöst werden.

Unterstützte Baudraten:
- 2400
- 4800
- 9600 (Standard)
- 14400
- 19200
- 56000
- 57600
- 115200

Beispiel:
   mc set rs232_baudrate 115200

[net] mc store ALL
 ACHTUNG: Das Kommando steht nur bei Geräten mit RS232-Schnittstelle zur Verfügung (z.B. CAN-RS).

Speichert eingestellte Parameter im internem EEPROM (u.A. rs232_baudrate).

mc reset cpu
 ACHTUNG: Das Kommando steht nur bei Geräten mit RS232-Schnittstelle zur Verfügung (z.B. CAN-RS).

Löst einen Neustart des Gerätes aus.

Datentypen

Der Datentyp (datatype) wird als ein String bei den Kommandos "read" und "write" angegeben. Das Gerät unterstützt folgende Datentypen von der DS309-3 Spezifikation:

      i8   - Integer 8-Bit
      i16  - Integer 16-Bit
      i32  - Integer 32-Bit
      u8   - Unsigned Integer 8-Bit
      u16  - Unsigned Integer 16-Bit
      u32  - Unsigned Integer 32-Bit

Zusätzlich zu den Datentypen von der DS309-3 Spezifikation, können folgende Datentypen bei "read"-Kommando verwendet werden (ENGEL-Erweiterung). Dann erfolgt die Ausgabe des gelesenen Wertes in Hex-Notation:

      xi8  - Integer 8-Bit
      xi16 - Integer 16-Bit
      xi32 - Integer 32-Bit
      xu8  - Unsigned Integer 8-Bit
      xu16 - Unsigned Integer 16-Bit
      xu32 - Unsigned Integer 32-Bit

Fehlercodes

Wenn ein Befehl nicht interpretiert werden konnte oder nicht korrekt ausgeführt wurde, dann kommt folgende Antwort (siehe auch: "Syntax der Antwort"):

"["sequence"]" Error error_code

error_code | Beschreibung
100 | Das Kommando wird nicht unterstützt.
101 | Fehler der Syntax - das Kommando konnte nicht interpretiert werden.
-541 | SdoWriteError - SDO-Objekt konnte nicht beschrieben werden.
-542 | SdoReadError - SDO-Objekt konnte nicht gelesen werden.
-571 | BadCommand - Wert des Kommandos ist außerhalb des zulässigen Bereiches.
-582 | TxTimeout - Zeitüberschreitung beim Senden (z.B. Baudrate stimmt nicht überein, fehlender Abschlusswiderstand oder defekte CAN-Bus-Leitung).
-583 | ResponseTimeout - Zeitüberschreitung beim Warten auf eine Antwort (z.B. Gerät ist ausgeschaltet und antwortet nicht).

Beispiel

Informationsrichtung:
< Anforderung an das Gerät
> Antwort oder Benachrichtigung vom Gerät

<	info version
>	0x0139 0x15010001 1.92.03.00 0 128 1.10 0.0

<	init 125
>	OK

<	5 start
>	MSG 0x00000185 8 0x50 0x00 0x00 0x00 0x00 0x00 0xF6 0x00

<	5 stop
>	OK

<	5 r 0x3020 0 xi32
>	0x2545

<	0 start
>	MSG 0x00000184 8 0x10 0x00 0x00 0x00 0x00 0x00 0x00 0x00
>	MSG 0x00000181 8 0x10 0x00 0x00 0x00 0x00 0x00 0x00 0x00
>	MSG 0x00000183 8 0x10 0x00 0x00 0x00 0x00 0x00 0x00 0x00
>	MSG 0x00000185 8 0x50 0x00 0x00 0x00 0x00 0x00 0xF6 0x00
>	MSG 0x00000182 8 0x10 0x00 0x00 0x00 0x00 0x00 0x00 0x00

Beachten Sie bitte, dass jede Zeile aus dem Beispiel mit <CR><LF> beendet ist.


Inhalt - CAN-Stick-2

Technische Daten

Klemmenbelegung und Abbildung

Anzeigeelemente

Bedienelemente

Text-Kommandos


Technische Daten

Beschreibung | Wert
Artikelnummer | 1510168
Leistung
- Versorgungsspannung Elektronik Ue | 5 V (über USB)
- Stromaufnahme Elektronik | typ. 100 mA
Mechanische Daten
- Abmessungen LxBxH | 60 x 20 x 11 mm
- Gewicht | 30 g
Umgebung
- Schutzart | IP30
- Temperaturbereich | 0..70 °C
- Luftfeuchtigkeit (nicht kondensierend) | 5..85 %
Bedienelemente
- Bus Abschlusswiderstand Schalter | ja
- Kodierschalter | nein
- Status-LEDs | ja
CAN-Bus
- CAN Spezifikation | 2.0B
- Max. Baudrate | 1 Mbit/s
- Galvanisch getrennt | ja
- Bus-Abschlußwiderstand | 120 Ohm zu-/abschaltbar
USB
- Schnittstelle | USB 2.0
- Unterstützte Betriebssysteme | Windows XP, Windows Vista, Windows 7, Windows 8 (32/64-bit)
- Treiber | Installation von PLC notwendig
- Bemerkung | Die Treiber unterstützen virtuellen COM-Port (VCP)
- Virtueller COM-Port Protokoll | ASCII Protokoll angelehnt an DS309-3

Änderungen und Irrtümer vorbehalten
*1 Standardwert
*2 Umgebungstemperatur 40 °C, PWM-Frequenz 32 kHz


Klemmenbelegung und Abbildung

Stecker | Klemme | Signal | Beschreibung
Steckerseite | X1.1 | res. | Reserviert
 | X1.2 | CAN Hi | CAN High (Farbe des USB-Kabels: weiß)
 | X1.3 | CAN Lo | CAN Low (Farbe des USB-Kabels: grün)
 | X1.4 | res. | Reserviert
 | X1.5 | CAN GND | Masse für CAN (Farbe des USB-Kabels: schwarz)


Bedienelemente

Einstellmöglichkeiten des Abschlusswiderstandes über RT-Schalter

Bus-Abschlusswiderstand

Über den RT Schalter kann ein Abschlusswiderstand von 120Ohm auf dem Bus zu- oder abgeschlaten werden.
Schalterstellung | Beschreibung
Off | Widerstand nicht aktiv
On | Widerstand aktiv


Inhalt - Application Notes

AN10xx Parametrierung des Reglers

AN12xx Installation der Geräte

AN13xx Kommunikation

AN14xx Profil DSA (3000h Parameter - ENGEL)

AN15xx Profil DS402

AN50xx spezifische Klassen

AN80xx Hardware-Design


Inhalt - AN10xx Parametrierung des Reglers

AN1000 | AN_ControllerStructure | Reglerstruktur
AN1001 | AN_BasicConfiguration | Grundkonfiguration
AN1002 | AN_PidTuningDigital | PID Tuning - für DC und BLDC Motoren mit digitaler Rückführung (Encoder, Hall)
AN1003 | AN_PidTuningAnalogDC | PID Tuning - für DC Motoren mit EMK Rückführung (Elektromotorische Kraft)
AN1004 | AN_PIDControllerTheory | PID-Regler Theorie


AN1000 Reglerstruktur

Nummer | AN1000
Name | AN_ControllerStructure
Bezeichnung | Reglerstruktur
Querverweis | AN_BasicConfiguration, AN_PidTuningDigital, AN_PidTuningAnalogDC

Beschreibung

Ein PID-Regler (Proportional-Integral-Differential-Regler) ist ein allgemeiner Regelkreis. Der PID-Regler berechnet eine Stellgröße aus der Regelabweichung (Differenz) zwischen einer gemessenen Regelgröße (Istwert) und einem gewünschten Führungsgröße (Sollwert). Ziel des PID-Reglers ist es, die Regelabweichung zu minimieren.

Jeder Regler der Firma ENGEL besitzt eine integrierte Kaskade von drei Reglern (Vel/Pos, SVel and Curr Regler), wobei die Betriebsart des Reglers definiert, welcher Regler aktiv ist. Der Regler unterstützt normalerweise vier Betriebsmodi:
  • CURR - Stromregler
  • SVEL - Drehzahlregler ohne Rampen (untergeordneter Drehzahlregler)
  • VEL - Drehzahlregler mit Rampen
  • POS - Positionierregler

Stromregler (CURR)
Im Strommodus ist nur der CURR PI Regler aktiv. Der Rest ist deaktiviert.

Untergeordneter Drehzahlregler (SVEL)
Im SVEL-Modus sind beide CURR PI und SVEL PI Regler aktiviert. Der Positionierregler bleibt inaktiv.

Drehzahlregler (VEL)
Im Drehzahlmodus mit EMK-Rückführung für VEL Regler bleibt der SVEL PI Regler inaktiv. Die ganze Regelung der Drehzahl erfolgt im VEL PID Regler

Im Drehzahlmodus mit digitaler Rückführung (Encoder/Hall) wird die Regelung der Drehzahl durch eine Positionierbewegung realisiert. Wobei der Regler praktisch ins Unendliche positioniert. Diese Position wird dabei nie erreicht, so das der Regler quasi nur die Geschwindigkeit regelt. Um die klassische Drehzahlregelung zu bekommen, muss man den Parameter VEL_Kvff auf 1000 und VEL_Kp, VEL_Ki und VEL_Kd auf 0 setzen.

Positioniermodus (POS)
Im Positioniermodus sind alle Regler aktiv. Der CURR PI Regler regelt den Strom, SVEL PI die Drehzahl und VEL PID die Position des Motors.


AN1001 Grundkonfiguration

Nummer | AN1001
Name | AN_BasicConfiguration
Bezeichnung | Grundkonfiguration
Querverweis | AN_ControllerStructure, AN_PidTuningDigital, AN_PidTuningAnalogDC

Beschreibung

1. Lesen Sie zuerst die Sicherheitshinweise für den Regler durch.

2. Die folgenden Schritte erfordern die Standardeinstellungen aller Geräteparameter.

3. Führen Sie die Konfiguration des Reglers mit einer reduzierten Strombegrenzung durch, wenn Sie nicht sicher sind, ob die Parameter korrekt sind.

4. Es muss ein Notfall-Schalter zum Abschalten der Spannungsversorgung des Reglers installiert werden .

Die Änderungen einiger Parameter können zu einer gefährlichen Bewegung der Motorwelle führen. Es ist die Aufgabe des Benutzers, alle notwendigen Schritte zu ergreifen, um die Gefahr durch die unkontrollierte Bewegung der Motorwelle zu reduzieren. Deswegen führen Sie die ersten Tests mit dem Motor ohne Last und mit freier Motorwelle durch.
Die folgenden Schritte zeigen, wie die grundlegenden Parameter des Motors mit der Hilfe von edcTools gesetzt werden sollen. Es wird davon ausgegangen, dass die Hardware funktioniert und richtig angeschlossen ist.

1. Öffnen Sie das Fenster "DC Konfiguration".

2. Wählen Sie den Motortyp ( MOTOR_Type). Es gibt zwei Typen zum Auswählen: bürstenbehafteter Motor (DC) und bürstenloser Motor (BLDC).

3. Wählen Sie die Rückführung des Vel/Pos ( VEL_Feedback) und SVel ( SVEL_Feedback) Reglers. Die Rückführung definiert die Quelle des Signales, die zur Regelung genommen wird. Beachten Sie, dass nicht jede Rückführung für jeden Motortyp verwendet werden kann. Die höchste Genauigkeit der Regelung erhalten Sie, wenn beide Rückführungen auf Inkrementalencoder gesetzt sind.

Es gibt 3 Regeln für die Verwendung der Rückführungen:
  • Bürstenbehafteter Motor ohne Encoder
    • Vel/Pos Rückführung auf EMK (elektromotorische Kraft)
    • SVel ist inaktiv
  • Bürstenbehafteter und bürstenloser Motor mit Encoder
    • Vel/Pos Rückführung auf Ink. Encoder
    • SVel Rückführung auf Ink. Encoder
  • Bürstenloser Motor nur mit Hallsensoren
    • Vel/Pos Rückführung auf Hallsensoren
    • SVel Rückführung auf Hallsensoren (Bei Motoren mit geringer Polzahl kann die Einstellung EMK-Rückführung zu einem besseren Regelverhalten führen)
4. Je nach gewählten Rückführung ist es wichtig, die verschiedenen Parameter für Position- und Drehzahlregelung anzupassen:
- Die Nenndrehzahl ( MOTOR_Nn) und Nennspannung ( MOTOR_Un) des Motors sind wichtig, wenn die EMK-Rückführung für Drehzahlregelung gewählt ist.
- Die Motorpolanzahl ( MOTOR_PolN) muss eingegeben werden, wenn die Hall-Rückführung für Position- und/oder Drehzahlregelung gewählt ist.
- Die Geberauflösung ( MOTOR_ENC_Resolution) wird benötigt, wenn die Encoder-Rückführung für Position- und/oder Drehzahlregelung gewählt ist.

5. Setzen Sie zuerst eine kleine Geschwindigkeit (z.B. 100 U/min) und aktivieren Sie die Endstufe des Reglers. Der Motor sollte anfangen sich zu drehen. Stimmt die Geschwindigkeit des Motors mit dem Sollwert, ist die Motorpolarität ( MOTOR_Polarity) richtig. Dreht sich der Motor mit der maximalen Geschwindigkeit, ändern Sie die Polarität der gewählten Rückführung. Die Einstellung dieser Parameter wird benötigt, weil es verschiedene Definitionen der Drehrichtung der Motorwelle in Abhängigkeit von der Spannung gibt.

6. Wenn Sie die Drehrichtung der Motorwelle ändern wollen, invertieren Sie alle Bits des Parameters Motorpolarität.

Richtung | gegen Richtung


AN1002 PID Tuning - für DC und BLDC Motoren mit digitaler Rückführung (Encoder, Hall)

Nummer | AN1002
Name | AN_PidTuningDigital
Bezeichnung | PID Tuning - für DC und BLDC Motoren mit digitaler Rückführung (Encoder, Hall)
Querverweis | AN_ControllerStructure, AN_BasicConfiguration

Beschreibung

Die Defaultwerte wurden so gewählt, dass der Regler mit einem breiten Spektrum von unbelasteten Motoren stabil arbeitet. Dieser Defaultwert ist also nicht optimal für alle Motoren und Belastungsfälle. Die Anleitung zeigt den Weg, wie man die PID/PI Parameter des EDCReglers anpassen kann.

1. Bei Einstellungen der PID/PI Parameter ist besondere Vorsicht geboten. Bei einem instabilen Regler (in der Regel bei zu großen PID-Parameterwerten) kann die Drehzahl unkontrolliert und ruckartig ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen!

2. Machen Sie zuerst das Tuning des Reglers mit dem Motor ohne Last.
Die Anpassung der PID/PI Paramter wird im Positioniermodus (POS) gemacht. Um die Diagramme zu erzeugen, wird das DC Oszilloskop mit den folgenden Einstellungen verwendet. Man bekommt die höchste Genauigkeit der Darstellung, wenn die Einheit der Geschwindigkeit Inkrementen/Sekunde und der Position Inkrementen ist.

Die "bz-Glättung" der aktuellen Geschwindigkeit wurde aktiviert, weil die Berechnung der Geschwindigkeit über die Position erfolgt und auf dem PC stattfindet.

CURR Regler
Die Einstellung der PI-Stromregler kann auf verschiedene Methoden erfolgen.
  1. Automatische Optimierung:
    Ermittlung der Reglerparameter mit dem Tuning Algorythmus. Der Algorythmus ermittelt Sprungantworten mit verschiedenen Regelparametern und versucht darüber geeignete Werte zu ermitteln. Diese Methode funktoniert nur bei bürstenlosen Gleichstrommotoren.

    Tunings werden dazu führen dass der Motor sich ruckartig bewegt!
    Stellen Sie sicher, dass der Motor richtig befestig ist, die Welle freif drehbar ist und die Anwendung immer über eine funktionierde Notabschaltung verfügt (z.B. NOTAUS-Schalter) und diese stets zugänglich ist.

    Ein zu hoher Tuningstrom kann den Motor beschädigen. Der Tuningstrom darf den maximal zulässigen Nennstrom des Motors nicht überschreiten.

  2. Berechnen:
    Ermittelung der Regelparameter mit einer Kalkulation. Diese Kalkulation ermittelt die Werte rechnerisch. Als Eingangsgrößen benötigt werden Wicklungswiderstand, Wicklungsinduktivität, Leistungsspannung und PWM Frequenz.

SVEL Regler
Deaktivieren Sie den PID Pos Regler ( VEL_Kp = 0, VEL_Ki = 0, VEL_Kd = 0) und setzen Sie den Wert der Drehzahlvorsteuerung ( VEL_Kvff) auf 1000. Ab dem Moment ist die Regelung der Position ausgeschaltet (Pos Regler ist inaktiv) und der Drehzahlsollwert geht direkt zu dem SVEL Regler. Die Positionierung erfolgt nur mit der Hilfe der Drehzahlregelung.

Die Positionierung kann ungenau sein, deshalb positionieren Sie nicht auf die Endposition der Maschine.

Bei der Positionierung über längere Strecken kann ein Schleppfehler auftreten. Passen Sie zunächst den Parameter POS_FollowingErrorWindow an. Eine Optimierung der Dynamik und des Schleppfehlers kann später erfolgen.
Die Vergrößung des SVEL_Kp Parameters verbessert die Stabilität der Regelung. Die Vergrößung des SVEL_Ki Parameter bewirkt eine Beschleunigung der Reaktion des Systems, kann aber auch zur Instabilität führen. Die Vergrößung von beiden Parametern macht die Regelung schneller und stabiler. Wenn die Werte der Parameter zu hoch sind, ist die Regelung auch instabil.

Am besten ändern Sie die Werte der Parameter Schritt für Schritt. Wenn Sie keine Reaktion des Systems sehen, vergrößern Sie den Schritt, aber nicht mehr als 100.

Der Regler darf nicht in der Strombegrenzug arbeiten. Wenn der Regler in der Beschleunigungsphase die Strombegrenzung signalisiert (Bit 12 in DEV_Status), reduzieren Sie die Beschleunigung des Motors.
Beispiele der Regelung:
  • Instabile Regelung der Drehzahl (der Parameter SVEL_Kp ist zu klein, z.B. SVEL_Kp = 1, SVEL_Ki = 60). Die Regelung kann auch instabil sein, wenn die Werte der Parameter zu hoch sind.
Aktuelle Drehzahl | Positionsschleppabstand

  • Die Regelung der Drehzahl mit Überschwingen und langer Ausregelzeit (beide Parameter SVEL_Kp und SVEL_Ki sind zu klein, z.B. SVEL_Kp = 60, SVEL_Ki = 60)
Aktuelle Drehzahl | Positionsschleppabstand

  • Die Regelung der Drehzahl mit dem kleinen Überschwingen (beide Parameter SVEL_Kp und SVEL_Ki sind zu klein, z.B. SVEL_Kp = 120, SVEL_Ki = 120)
Aktuelle Drehzahl | Positionsschleppabstand

  • Optimale Regelung der Drehzahl (z.B. SVEL_Kp = 560, SVEL_Ki = 560)
Aktuelle Drehzahl | Positionsschleppabstand

POS Regler
Die Verringerung des Positionsschleppabstandes kann durch eine Anpassung des Parameters VEL_Kp erreicht werden. Je höher der Wert von VEL_Kp, desto schneller die Verringerung des Positionsschleppabstands, aber die Regelung ist "härter"und anfällig für Instabilität. Der Wert des Parameters sollte mit Schritten von 10 geändert werden. Die Anpassung muss so lange fortgesetzt werden, bis der Positionsschleppabstand während der Bewegung akzeptabel ist

Beispiele der Regelung:
  • Die Regelung der Position mit einem kleinen Wert von VEL_Kp Parameter (z.B. VEL_Kp = 10)
Aktuelle Drehzahl | Positionsschleppabstand

  • Die Regelung der Position mit einem höheren Wert von VEL_Kp Parameter (z.B. VEL_Kp = 30)
Aktuelle Drehzahl | Positionsschleppabstand

Beendet der Motor die Bewegung mit der verbleibenden Abweichung zwischen Ist- und Sollposition, erhöhen Sie langsam den Wert des VEL_Ki Parameters. Mit dem VEL_Ki wird diese Abweichung ausgeregelt. Die Erhöhung von VEL_Ki bewirkt zudem eine Beschleunigung des Systems, kann aber auch zur Instabilität führen.
Beispiel der Regelung:
  • Die Regelung der Position mit einem zusätzlichen, kleinen Wert von VEL_Ki Parameter (z.B. VEL_Kp = 100, VEL_Ki = 20)
Aktuelle Drehzahl | Positionsschleppabstand

Machen Sie den Test mit unterschiedlichen Werten der Drehzahl, z.B. 100 Upm und 2000 Upm. Das System muss im gesamten Drehzahlbereich stabil funktionieren.
Die Änderung des VEL_Kd Parameters ist nur dann notwendig, wenn das System sehr dynamisch ist. Die Erhöhung des Wertes verbessert die Dynamik, aber bewirkt, dass das System härter geregelt wird und die Mechanik sich schneller abnutzt (z.B. Getriebe).


AN1003 PID Tuning - für DC Motoren mit EMK Rückführung (Elektromotorische Kraft)

Nummer | AN1003
Name | AN_PidTuningAnalogDC
Bezeichnung | PID Tuning - für DC Motoren mit EMK Rückführung (Elektromotorische Kraft)
Querverweis | AN_ControllerStructure, AN_BasicConfiguration

Beschreibung

Die Defaultwerte wurden so gewählt, dass der Regler mit einem breiten Spektrum von unbelasteten Motoren stabil arbeitet. Dieser Defaultwert ist also nicht optimal für alle Motoren und Belastungsfälle. Die Anleitung zeigt den Weg, wie man die PID/PI Parameter des EDCReglers anpassen kann.

1. Bei Einstellungen der PID/PI Parameter ist besondere Vorsicht geboten. Bei einem instabilen Regler (in der Regel bei zu großen PID-Parameterwerten) kann die Drehzahl unkontrolliert und ruckartig ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen!

2. Machen Sie zuerst das Tuning des Reglers mit dem Motor ohne Last.
Die Anpassung der PID/PI Paramter wird im Drehzahlmodus (VEL) gemacht. Um die Diagramme zu erzeugen, wird das DC Oszilloskop mit den folgenden Einstellungen verwendet.

Der Parameter 3A04.01h (User1) liefert die Information über die aktuelle Drehzahl in Upm and der Parameter 3361.00h (User2) das aktuelle Drehzahlkommando (der Wert der im Rampengenerator generiert wird).

CURR Regler
Die Einstellung der PI-Stromregler kann auf verschiedene Methoden erfolgen.
  1. Automatische Optimierung:
    Ermittlung der Reglerparameter mit dem Tuning Algorythmus. Der Algorythmus ermittelt Sprungantworten mit verschiedenen Regelparametern und versucht darüber geeignete Werte zu ermitteln. Diese Methode funktoniert nur bei bürstenlosen Gleichstrommotoren.

    Tunings werden dazu führen dass der Motor sich ruckartig bewegt!
    Stellen Sie sicher, dass der Motor richtig befestig ist, die Welle freif drehbar ist und die Anwendung immer über eine funktionierde Notabschaltung verfügt (z.B. NOTAUS-Schalter) und diese stets zugänglich ist.

    Ein zu hoher Tuningstrom kann den Motor beschädigen. Der Tuningstrom darf den maximal zulässigen Nennstrom des Motors nicht überschreiten.

  2. Berechnen:
    Ermittelung der Regelparameter mit einer Kalkulation. Diese Kalkulation ermittelt die Werte rechnerisch. Als Eingangsgrößen benötigt werden Wicklungswiderstand, Wicklungsinduktivität, Leistungsspannung und PWM Frequenz.

VEL Regler
Die Vergrößung des VEL_Kp Parameters verbessert die Stabilität der Regelung. Die Vergrößung des VEL_Ki Parameter bewirkt eine Beschleunigung der Reaktion des Systems, kann aber auch zur Instabilität führen. Die Vergrößung von beiden Parametern macht die Regelung schneller und stabiler. Wenn die Werte der Parameter zu hoch sind, ist die Regelung auch instabil.

Der Regler darf nicht in der Strombegrenzug arbeiten. Wenn der Regler in der Beschleunigungsphase die Strombegrenzung signalisiert (Bit 12 in DEV_Status), reduzieren Sie die Beschleunigung des Motors.
Beispiele der Regelung:
  • Die Regelung der Drehzahl mit zu hohem Wert von VEL_Kp Parameter (z.B. VEL_Kp = 100)
Aktuelle Drehzahl

  • Die Regelung der Drehzahl mit zu kleinem Wert von VEL_Kp Parameter (z.B. VEL_Kp = 10). Der Motor erreicht nicht den Drehzahlsollwert.
Aktuelle Drehzahl

  • Die Regelung der Drehzahl mit einem zusätzlichen Wert von VEL_Ki Parameter (z.B. VEL_Kp = 10, VEL_Ki = 10). Der Parameter VEL_Ki eliminiert die Abweichung zwischen Ist- und Soll-Drehzahl.
Aktuelle Drehzahl

  • Die Regelung der Drehzahl mit einem großen Wert von VEL_Kp Parameter (z.B. VEL_Kp = 20, VEL_Ki = 10). Der Parameter VEL_Kp verbessert die Stabilität.
Aktuelle Drehzahl

  • Optimale Regelung der Drehzahl (z.B. VEL_Kp = 50, VEL_Ki = 10).
Aktuelle Drehzahl

Die Änderung des VEL_Kd Parameters ist nur dann notwendig, wenn das System sehr dynamisch ist. Die Erhöhung des Wertes verbessert die Dynamik, aber bewirkt, dass das System härter geregelt wird und die Mechanik sich schneller abnutzt (z.B. Getriebe).


AN1004 PID-Regler Theorie

Nummer | AN1004
Name | AN_PIDControllerTheory
Bezeichnung | PID-Regler Theorie
Querverweis | AN_ControllerStructure, AN_BasicConfiguration, AN_PidTuningDigital, AN_PidTuningAnalogDC

Beschreibung

PID-Regler werden eingesetzt um das Verhalten des Antriebs zu optimieren. Eine gute Einstellung der Regelparameter führt zu einer geringeren Abweichung der Sollwerte zu den Istwerten bezüglich der Position, der Geschwindigkeit und des Stroms.

Grundsätzlich erzeugen die verschiedenen Anteile eines PID-Reglers das Verhalten des Systems wie folgt:

P – Faktor (proportional Faktor):
Der proportionale Verstärkungsfaktor bestimmt das Verhalten der Regelung bei einer Abweichung von Soll- und Istwert. Ein großer P – Faktor führt zu einer schnellen Reduktion der Abweichung aber das System neigt schneller zu Schwingungen. Ein geringer P – Faktor führt zu einem stabilen System aber es kann zu einer großen Abweichung zwischen Soll- und Istwerten, vor allem unter Laständerungen kommen. Außerdem braucht das System länger um den Sollwert zu erreichen. Die stetige Regelabweichung wird durch den P – Faktor unwesentlich verringert.

I – Faktor (intergal Faktor):
Die Funktion des integralen Verstärkungsfaktors liegt darin, die Abweichung zwischen Soll- und Istwert über einen Zeitraum aufzuintegrieren. Innerhalb dieses Zeitraums wird die Abweichung nicht korrigiert um ein „weicheres“ Verhalten des Systems zu erzielen. Ist der I – Faktor zu groß, reagiert das System auf Laständerungen zu stark und es kann zu Schwingungen kommen. Ein zu großer I – Anteil kann auch zu einem instabilen System führen. Bei einem zu kleinen I – Faktor wird die Dynamik des Reglers zu träge. Die stetige Regelabweichung wird durch das Erhöhen des I – Faktors verringert.

D – Faktor (differential Faktor):
Der differential Verstärkungsfaktor dient der Dämpfung des Systems. Ein hoher D – Faktor des Reglers führt somit zu einem trägen aber stabilen Regelverhalten. Durch einen großen P – Faktor hervorgerufene Schwingungen können somit gedämpft werden. Ein geringer D – Faktor führt zu einem dynamischeren Regelverhalten. Das System kann schneller zu Schwingungen neigen. Die stetige Regelabweichung wird durch den D- Faktor nicht verringert.

Alle Regelparameter sind von einander abhängig. Ein Änderung eines Regelparameters kann sich auf das Verhalten der anderen Regelparameter auswirken.

Richtwerte für empirische PID-Regler Einstellung:
Regelparameter | Anstiegszeit tr | Overshoot Mp | Einschwingzeit ts | stetige Regelabweichung eu
Kp ↑ | ↓ | ↑ | ≈ konstant | ↓
Ki ↑ | ↑ | ↓ | ↓ | → 0
Kd ↑ | ≈ konstant | ↓ | ↓ | ≈ konstant
↑ - Erhöhung
↓ - Verringerung
→ 0 - strebt gegen 0


Inhalt - AN12xx Installation der Geräte

AN1200 | AN_CommutationScheme | Kommutierungsschema des BLDC-Motors
AN1201 | AN_CycletimeCalculation | Berechnung der Zykluszeit


AN1200 Kommutierungsschema des BLDC-Motors

Nummer | AN1200
Name | AN_CommutationScheme
Bezeichnung | Kommutierungsschema des BLDC-Motors
Querverweis | -

Beschreibung

Diese Application Note beschreibt das Kommutierungsschema bei bürstenlosen Gleichstrommaschinen von den Antriebsreglern der Firma ENGEL. Die Kommutierung ist der Übergang des Stromflusses von einem Phasenzweig-Paar zu dem nächsten Phasenzweig-Paar. Das Schema und der Ablauf sind von der Art der Kommutierung abhängig.

Blockkommutierung

Bei der Blockkommutierung wird der Stromflussübergang durch die Stellung der Hallsensoren bestimmt. Daraus ergibt sich ein Schema, aus welchem ersichtlich wird, welche Motorphasen bei dem entsprechenden Zustand der Hallsensoren bestromt sind.

Die zur Blockkommutierung entsprechenden Hallsektoren können bei Bedarf softwareseitig angepasst werden.
Das Kommutierungsschema ist von der Winkellage der Hallsensoren abhängig.

120° Hallsensoren

60° Hallsensoren

ENGEL Elektromotoren AG - Änderungen und Irrtümer vorbehalten


AN1201 Berechnung der Zykluszeit

Nummer | AN1201
Name | AN_CycletimeCalculation
Bezeichnung | Berechnung der Zykluszeit
Querverweis | -

Beschreibung

Diese Application Note beschreibt die Berechnung von Zykluszeiten für Geräte von der Firma ENGEL.

Begriffe

Abkürung | Bedeutung | Beschreibung
In | Dauerstrom | Der Strom, den das Gerät ohne Pause regulieren kann.*
Ip | Spitzenstrom | Kurzfristig auftretender hoher Strom.
ton | Betriebsdauer | Die Zeit, in welcher Strom durch das Gerät fließt.
toff | Abkühlzeit | Die Zeit, in welcher kein Strom fließt und sich das Gerät abkühlen kann.
Irms | Effektivstrom | Effektivstrom des Zyklus
- | Leistungskurve | Abhängigkeit zwischen dem Spitzenstrom (Ip) und der Betriebsdauer (ton). Diese Kurve zeigt, wie lang der Regler bestimmten Strom regeln kann.
*unter bestimmten Bedinungen, siehe Datenblatt des Geräts

Folgende Abbildung zeigt einen Beispielzyklus:

Durchführung der Berechnungen

Zwei Bedingungen müssen erfüllt sein, damit das Gerät korrekt arbeitet:

  • Der berechnete Effektivstrom des Zyklus darf nicht höher als der Dauerstrom des Geräts sein :
  • Die maximale Betriebsdauer (ton) darf nicht länger sein, als es auf der Leistungskurve dargestellt ist.

Für die Berechnung des Effektivstroms wird folgende Formel benutzt:

Anhand der folgenden Formel kann die minimale Abkühlzeit berechnet werden:

Die oben angegebenen Formeln gelten für Rechtecksignale. Die echten Signale sollten approximiert werden oder der reale Effektivstrom muss berechnet werden.

Beispiel 1: Berechnung der Abkühlzeit

Problem:

Das Gerät soll den folgenden Zyklus realisieren:

Gerät : EDC-E45

Es soll berechnet werden, wie groß die Abkühlzeit zwischen den Fahrzyklen sein muss.( toff)

Lösung:

Laut der Leistungskurve des Geräts (siehe *Link) beträgt der Dauerstrom des Geräts 10 A. Aus der Kurve kann auch abgelesen werden, dass das Gerät maximal 190 Sekunden einen Strom von 15 A regeln kann. Da die Betriebsdauer in diesem Zyklus (ton) 10 Sekunden und der Spitzenstrom (In) 15 A beträgt und damit kleiner ist als die Werte in der Leistungskurve, kann folgende Berechnung durchgeführt werden.

Zuerst muss der Zyklus approximiert werden. (blaue Linie)

Danach kann die Abkühlzeit (toff) mit der folgenden Formel berechnet werden:

Daraus ergibt sich eine minimale Abkühlzeit von 12,5 [s].

Beispiel 2: Prüfen des Zyklus

Problem:

Der Regler realisiert den folgenden Zyklus

Gerät: EDC-E45

Es soll berechnet werden, ob das Gerät den Zyklus realisieren kann.

Lösung:

Es wird der Effektivstrom (Irms) mit der folgenden Formel berechnet:

Daraus ergibt sich, dass der Effektivstrom (Irms) größer ist, als der maximale Dauerstrom (In) des Geräts (siehe *Link)

Der Fahrzyklus lässt sich mit dem Gerät nicht realisieren, da der Effektivstrom zu groß, bzw. die Abkühlzeit zu klein ist.

Es handelt sich bei dem Beispiel um eine Approximation. Es ist daher möglich, dass der Zyklus doch realisieren ist. Genauere Werte können durch eine genauere Approximation, bzw. durch eine exakte Berechnung des Effektivstromes erhalten werden.


Inhalt - AN13xx Kommunikation

AN1301

AN_ENGEL_TextCommands

 ENGEL Text-Kommandos


Inhalt - AN14xx Profil DSA (3000h Parameter - ENGEL)

AN1400 | AN_ENGEL_QuickCommand | engel quick command
AN1410 | AN_DSA_PosMode_DcMotorWithEncoder | Positioniermodus - DC Motor mit Encoder-Rückführung - relative Positionierung
AN1411 | AN_DSA_PosMode_BldcMotorWithEncoder | Positioniermodus - BLDC Motor mit Encoder-Rückführung - relative Positionierung
AN1420 | AN_DSA_VelMode_DcMotorWithEncoder | Drehzahlmodus - DC Motor mit Encoder-Rückführung
AN1421 | AN_DSA_VelMode_DcMotorWithEmf | Drehzahlmodus - DC Motor mit EMK-Rückführung
AN1422 | AN_DSA_VelMode_BldcMotorWithHall | Drehzahlmodus - BLDC Motor mit Hall-Rückführung
AN1423 | AN_DSA_VelMode_BldcMotorWithEncoder | Drehzahlmodus - BLDC Motor mit Encoder-Rückführung
AN1440 | AN_DSA_CurrentMode_DcMotor | Strommodus - DC Motor
AN1441 | AN_DSA_CurrentMode_BldcMotor | Strommodus - BLDC Motor
AN1470 | AN_DSA_IpMode_DcMotorWithEncoder_Counts | Positioniermodus (Interpolation in Inkrementen) - DC Motor mit Encoder-Rückführung
AN1471 | AN_DSA_IpMode_BldcMotorWithEncoder_Counts | Positioniermodus (Interpolation in Inkrementen) - BLDC Motor mit Encoder-Rückführung
AN1472 | AN_DSA_IpMode_DcMotorWithEncoder_Normalised | Positioniermodus (Interpolation normalisiert) - DC Motor mit Encoder-Rückführung
AN1473 | AN_DSA_IpMode_BldcMotorWithEncoder_Normalised | Positioniermodus (Interpolation normalisiert) - BLDC Motor mit Encoder-Rückführung


AN1400 engel quick command

Nummer | AN1400
Name | AN_ENGEL_QuickCommand
Bezeichnung | engel quick command
Querverweis | -

Beschreibung

Allgemein

Zur Erleichterung der Bedienung der Regler, vor allem über PDOs und um die Buslast zu verringern wurden die Quick-Command - Gerätekommandos eingeführt. Durch diese ist es möglich den Regler, mittels eines Datensatzes und eines Kommandos, schnell und effizient anzusteuern.

Ansteuerung über Quick-Command

Über die Parameter mit dem Index 3000h lassen sich Gerätekommandos ausführen. Mit dem Subindex 00h, 01h bzw. 02h lässt sich das Kommando auswählen, welches ausgeführt werden soll. In den Parametern mit Subindex 10h, 11h und 12h bzw. 20h, 21h und 22h stehen die entsprechenden Daten ( DEV_CmdData0 etc.), z.B. Sollgeschwindigkeit und Zielposition. Die genaue Beschreibung der Parameter befindet sich im Kapitel DEV_Cmd_ExecOnChange.
Der Parameter 3000.70h ( DEV_CmdResult) liefert ein Ergebnis, falls über das Gerätekommando ein Wert abgefragt / gesetzt wurde.

Quick-Command mittels PDO Kommunikation

Damit die PDO Kommunikation des Reglers korrekt funktioniert, muss ein entsprechendes PDO Mapping eingerichtet werden.

RxPDO (Receive PDO):

Bytenummer | B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7
Inhalt | DEV_CmdData0_i16 |  | DEV_CmdData2 | DEV_CmdData1 |  |  |  | DEV_Cmd_ExecOnChange
Index | 3000.20h |  | 3000.12h | 3000.11h |  |  |  | 3000.01h

TxPDO (Transmit PDO):

Bytenummer | B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7
Inhalt | DEV_Status |  | DEV_ErrorReg |  | DEV_CmdResult
Index | 3002.00h |  | 3001.00h |  | 3000.07h

Das Mapping kann mit dem Kommado 0x2A (CMD_SetQCMapping) des Parameters DEV_Cmd_ExecOnChange (dafür wird das RxPDO1 und TxPDO1 verwendet) oder manuell (man kann dafür beliebige PDOs nutzen) gesetzt werden.
Die manuelle Einstellung ist im Kapitel COP_RxPDO1_CommunicationParameter_HighestSubindexSupported beschrieben. Hier befinden sich auch weiterführende Informationen über die PDO Kommunikation, den Aufbau der Datenframes, etc..

Möchte man jetzt beispielsweise eine relative Positionierung mit den Werten 1000 Inkrementen und 1500 U/min ausführen will, muss lediglich ein PDO mit der COB-ID von RxPDO und mit folgenden Daten geschickt werden. Die Daten werden im Little Endian Format übertragen.

Bytenummer | B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7
Befehl | Geschwindigkeit: 05DCh = 1500 |  | - | Position: 03E8h = 1000 |  |  |  | Kommando: MovR
Daten | 0xDC | 0x05 | 0x00 | 0xE8 | 0x03 | 0x00 | 0x00 | 0x34

Die ersten beiden Bytes (B0 und B1) der PDO Nachricht enthalten den Kommandowert 0 (Parameter DEV_CmdData0_i16). In diesem steht 05DCh, was dem Dezimalwert 1500 entspricht.
Das dritte Byte (B2) enthält den Kommandowert 2 (Parameter DEV_CmdData2). Da dieser für das Kommando MovR nicht benötigt wird, wird eine 0 in das Byte geschrieben.
Die Bytes 4 bis 7 (B3 – B6) enthalten den Kommandowert 1 (Parameter DEV_CmdData1). In diesem steht 000003E8h, was dem Dezimalwert 1000 entspricht.
Das achte Byte (B7) enthält das Kommando (Parameter DEV_Cmd_ExecOnChange). In diesem Byte steht der Wert 34h, was dem Kommando MovR entspricht.

Durch diese Vorgehensweise ist es möglich, dem Regler mittels eines PDOs und der Quick-Command Funktion eine breite Palette von möglichen Befehlen zu übermitteln. Vom Wechseln der Betriebsart, dem Freigeben und Sperren der Endstufe, über das Ausführen einer absoluten oder relativen Positionierung bis hin zum Ausführen ganzer Befehlssequenzen.

Eine vollständige Liste der möglichen Befehle befindet sich im Kapitel DEV_Cmd_ExecOnChange.

Quick-Command mittels SDO Kommunikation

In dem unten gezeigten Beispiel wird die SDO Kommunikation verwendet.

Im ersten Befehlsblock werden als erstes die Kommandowerte 0 und 1 mit jeweils dem dezimalen Wert 1000 beschreiben. Danach wird die Befehlsfolge CMD_UserCmd7, also relative Positionierung aufgerufen. Dazu wurde der Wert 77h in den Parameter 3000.01h ( DEV_Cmd_ExecOnChange) geschrieben.

Der Regler wird nun in den Positioniermodus geschaltet und freigegeben. Danach wird der Regler 1000 Inkremente ( DEV_CmdData1) mit einer Sollgeschwindigkeit von 1000 U/min ( DEV_CmdData0) anfahren.

In der darauf folgenden While-Schleife wartet das Skript darauf, dass das „STAT Reached“ Bit im Statusregister ( DEV_Status) gesetzt wird. Sobald der Regler seine Sollposition erreicht hat und das Bit gesetzt wurde, wird der zweite Kommandoblock abgearbeitet.

In diesem werden ebenfalls erst die Kommandowerte 0 und 1 geschrieben und dann ein Kommando aufgerufen. Der Kommandowert 0 ( DEV_CmdData0) wird mit 3762h und der Kommandowert 1 ( DEV_CmdData1) mit 00h beschrieben. Danach wird das Kommando „CMD_Gp“ aufgerufen, indem der Wert 29h in den Parameter 3000.01h ( DEV_Cmd_ExecOnChange) geschrieben wird.

Durch diesen Befehl wird der Wert von dem Parameter 3762.00h abgefragt und in den Parameter 3000.70h ( DEV_CmdResult) geschrieben. In der letzten Zeile wird der Parameter 3000.70h ( DEV_CmdResult) ausgelesen und das Ergebnis ausgegeben.

Dieses Beispiel ließe sich nur ausführen, wenn der Regler vorher richtig parametriert wurde und dient nur dazu, die Funktionsweise von Quick-Command zu verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                         # NodeId = 1

d.SdoWr(0x3000, 0x10, 1000)    # DEV_CmdData0 - Kommandowert 0 = 1000 U/min
d.SdoWr(0x3000, 0x11, 1000)    # DEV_CmdData1 - Kommandowert 1 = 1000 ink
d.SdoWr(0x3000, 0x01, 0x77)    # DEV_Cmd_ExecOnChange - CMD_UserCmd7 - Move Relativ

while (d.SdoRd(0x3002, 0x00) & 0x10==0):  # DEV_Status - warte auf STAT_Reached
   time.sleep(0.1)                        # alle 100 ms Bit abfragen

d.SdoWr(0x3000, 0x10, 0x3762)  # DEV_CmdData0 - Kommandowert 0 = 3762h
d.SdoWr(0x3000, 0x11, 0x00)    # DEV_CmdData1 - Kommandowert 1 = 00h
d.SdoWr(0x3000, 0x01, 0x29)    # DEV_Cmd_ExecOnChange – CMD_Gp lese Parameter

# Auslesen der aktuellen Position
print "aktuelle Position =", d.SdoRd(0x3000, 0x70) # DEV_CmdResult


AN1410 Positioniermodus - DC Motor mit Encoder-Rückführung - relative Positionierung

Nummer | AN1410
Name | AN_DSA_PosMode_DcMotorWithEncoder
Bezeichnung | Positioniermodus - DC Motor mit Encoder-Rückführung - relative Positionierung
Querverweis | -

Beschreibung

Das Beispiel zeigt die relative Positionierung des bürstenbehafteten Motors mit der Encoder-Rückführung über 3000h Parameter.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x3004, 0x00, 0)                  # Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 0)                  # Motortyp - bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x3314, 0x00, 1000)               # PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x3003, 0x00, 7)                  # Betriebsart - Positioniermodus
d.SdoWr(0x3004, 0x00, 1)                  # Endstufe freigeben

d.SdoWr(0x3300, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x3791, 0x00, 2000)               # Zielposition [Ink], relative Positionierung starten


AN1411 Positioniermodus - BLDC Motor mit Encoder-Rückführung - relative Positionierung

Nummer | AN1411
Name | AN_DSA_PosMode_BldcMotorWithEncoder
Bezeichnung | Positioniermodus - BLDC Motor mit Encoder-Rückführung - relative Positionierung
Querverweis | -

Beschreibung

Das Beispiel zeigt die relative Positionierung des bürstenlosen Motors mit der Encoder-Rückführung über 3000h Parameter.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x3004, 0x00, 0)                  # Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 1)                  # Motortyp - bürstenloser Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # Motorpolanzahl
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x3314, 0x00, 1000)               # PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x3003, 0x00, 7)                  # Betriebsart - Positioniermodus
d.SdoWr(0x3004, 0x00, 1)                  # Endstufe freigeben

d.SdoWr(0x3300, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x3791, 0x00, 2000)               # Zielposition [Ink], relative Positionierung starten


AN1420 Drehzahlmodus - DC Motor mit Encoder-Rückführung

Nummer | AN1420
Name | AN_DSA_VelMode_DcMotorWithEncoder
Bezeichnung | Drehzahlmodus - DC Motor mit Encoder-Rückführung
Querverweis | -

Beschreibung

Das Beispiel zeigt die Drehzahlregelung des bürstenbehafteten Motors mit der Encoder-Rückführung über 3000h Parameter.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x3004, 0x00, 0)                  # Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 0)                  # Motortyp - bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x3314, 0x00, 1000)               # PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x3003, 0x00, 3)                  # Betriebsart - Drehzahlmodus
d.SdoWr(0x3004, 0x00, 1)                  # Endstufe freigeben

d.SdoWr(0x3300, 0x00, 1000)               # Drehzahl [Upm]


AN1421 Drehzahlmodus - DC Motor mit EMK-Rückführung

Nummer | AN1421
Name | AN_DSA_VelMode_DcMotorWithEmf
Bezeichnung | Drehzahlmodus - DC Motor mit EMK-Rückführung
Querverweis | -

Beschreibung

Das Beispiel zeigt die Drehzahlregelung des bürstenbehafteten Motors mit der EMK-Rückführung über 3000h Parameter.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x3004, 0x00, 0)                  # Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 0)                  # Motortyp - bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3901, 0x00, 3000)               # Motornenndrehzahl [rpm]
d.SdoWr(0x3902, 0x00, 24000)              # Motornennspannung [mV]

d.SdoWr(0x3310, 0x00, 10)                 # VEL PID-Regler - Proportionalfaktor
d.SdoWr(0x3311, 0x00, 10)                 # VEL PID-Regler - Integralfaktor

d.SdoWr(0x3003, 0x00, 3)                  # Betriebsart - Drehzahlmodus
d.SdoWr(0x3004, 0x00, 1)                  # Endstufe freigeben

d.SdoWr(0x3300, 0x00, 1000)               # Drehzahl [Upm]


AN1422 Drehzahlmodus - BLDC Motor mit Hall-Rückführung

Nummer | AN1422
Name | AN_DSA_VelMode_BldcMotorWithHall
Bezeichnung | Drehzahlmodus - BLDC Motor mit Hall-Rückführung
Querverweis | -

Beschreibung

Das Beispiel zeigt die Drehzahlregelung des bürstenlosen Motors mit der Hall-Rückführung über 3000h Parameter.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x3004, 0x00, 0)                  # Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 1)                  # Motortyp - bürstenloser Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # Motorpolanzahl
d.SdoWr(0x3911, 0x00, 2)                  # Motorpolarität

d.SdoWr(0x3003, 0x00, 3)                  # Betriebsart - Drehzahlmodus
d.SdoWr(0x3004, 0x00, 1)                  # Endstufe freigeben

d.SdoWr(0x3300, 0x00, 1000)               # Drehzahl [Upm]


AN1423 Drehzahlmodus - BLDC Motor mit Encoder-Rückführung

Nummer | AN1423
Name | AN_DSA_VelMode_BldcMotorWithEncoder
Bezeichnung | Drehzahlmodus - BLDC Motor mit Encoder-Rückführung
Querverweis | -

Beschreibung

Das Beispiel zeigt die Drehzahlregelung des bürstenlosen Motors mit der Encoder-Rückführung über 3000h Parameter.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x3004, 0x00, 0)                  # Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 1)                  # Motortyp - bürstenloser Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # Motorpolanzahl
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x3314, 0x00, 1000)               # PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x3003, 0x00, 3)                  # Betriebsart - Drehzahlmodus
d.SdoWr(0x3004, 0x00, 1)                  # Endstufe freigeben

d.SdoWr(0x3300, 0x00, 1000)               # Drehzahl [Upm]


AN1440 Strommodus - DC Motor

Nummer | AN1440
Name | AN_DSA_CurrentMode_DcMotor
Bezeichnung | Strommodus - DC Motor
Querverweis | -

Beschreibung

Das Beispiel zeigt die Stromregelung des bürstenbehafteten Motors über 3000h Parameter.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x3004, 0x00, 0)                  # Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 0)                  # Motortyp - bürstenbehafteter Motor (DC)

d.SdoWr(0x3003, 0x00, 2)                  # Betriebsart - Strommodus
d.SdoWr(0x3004, 0x00, 1)                  # Endstufe freigeben

d.SdoWr(0x3200, 0x00, 500)                # Strom [mA]


AN1441 Strommodus - BLDC Motor

Nummer | AN1441
Name | AN_DSA_CurrentMode_BldcMotor
Bezeichnung | Strommodus - BLDC Motor
Querverweis | -

Beschreibung

Das Beispiel zeigt die Stromregelung des bürstenlosen Motors über 3000h Parameter.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x3004, 0x00, 0)                  # Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 1)                  # Motortyp - bürstenloser  Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # Motorpolanzahl

d.SdoWr(0x3003, 0x00, 2)                  # Betriebsart - Strommodus
d.SdoWr(0x3004, 0x00, 1)                  # Endstufe freigeben

d.SdoWr(0x3200, 0x00, 500)                # Strom [mA]


AN1470 Positioniermodus (Interpolation in Inkrementen) - DC Motor mit Encoder-Rückführung

Nummer | AN1470
Name | AN_DSA_IpMode_DcMotorWithEncoder_Counts
Bezeichnung | Positioniermodus (Interpolation in Inkrementen) - DC Motor mit Encoder-Rückführung
Querverweis | -

Beschreibung

Das Beispiel zeigt die interpolierte Positionierung in Inkrementen des bürstenbehafteten Motors mit der Encoder-Rückführung über 3000h Parameter.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x3004, 0x00, 0)                  # Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 0)                  # Motortyp - bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x3310, 0x00, 10)                 # VEL PID-Regler - Proportionalfaktor
d.SdoWr(0x3314, 0x00, 1000)               # VEL PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x3003, 0x00, 7)                  # Betriebsart - Positioniermodus

d.SdoWr(0x3708, 0x00, 1)                  # Position Betriebsart - Interpolation
d.SdoWr(0x37C2, 0x01, INTERPOLATION_TIME_MS*1000) # Interpolation - Zeit [us]
d.SdoWr(0x37C5, 0x00, 3)                  # Interpolation - Bufferkonfiguration
                                          #    Bit0: 0=InterpData als absolute Position  1: InterpData als relative Position
                                          #    Bit1: 0=InterpData ist normalisiert       1: InterpData ist in Inkrementen

d.SdoWr(0x3004, 0x00, 1)                  # Endstufe freigeben

StartPos  = 0
TargetPos = StartPos

d.SdoWr(0x3762, 0x00, TargetPos)          # aktuelle Position setzen
d.SdoWr(0x37C6, 0x00, TargetPos)          # Interpolation - Daten

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x37C6, 0x00, TargetPos)       # Interpolation - Daten


AN1471 Positioniermodus (Interpolation in Inkrementen) - BLDC Motor mit Encoder-Rückführung

Nummer | AN1471
Name | AN_DSA_IpMode_BldcMotorWithEncoder_Counts
Bezeichnung | Positioniermodus (Interpolation in Inkrementen) - BLDC Motor mit Encoder-Rückführung
Querverweis | -

Beschreibung

Das Beispiel zeigt die interpolierte Positionierung in Inkrementen des bürstenlosen Motors mit der Encoder-Rückführung über 3000h Parameter.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # DS2000_RestoreDefaultParameters_Application - Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - Motortyp - bürstenloser Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN - Motorpolanzahl
d.SdoWr(0x3911, 0x00, 0)                  # MOTOR_Polarity - Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback - VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution - Encoderauflösung in Ink.

d.SdoWr(0x3310, 0x00, 10)                 # VEL_Kp - VEL PID-Regler - Proportionalfaktor
d.SdoWr(0x3314, 0x00, 1000)               # VEL_Kvff - VEL PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Betriebsart - Positioniermodus

d.SdoWr(0x3708, 0x00, 1)                  # POS_Mode - Position Betriebsart - Interpolation
d.SdoWr(0x37C2, 0x01, INTERPOLATION_TIME_MS*1000) # POS_InterpTime - Interpolation - Zeit [us]
d.SdoWr(0x37C5, 0x00, 3)                  # POS_InterpBufConfig - Interpolation - Bufferkonfiguration
                                          #    Bit0: 0=InterpData als absolute Position  1: InterpData als relative Position
                                          #    Bit1: 0=InterpData ist normalisiert       1: InterpData ist in Inkrementen

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Endstufe freigeben

StartPos  = 0
TargetPos = StartPos

d.SdoWr(0x3762, 0x00, TargetPos)          # POS_ActualPosition - aktuelle Position setzen
d.SdoWr(0x37C6, 0x00, TargetPos)          # POS_InterpData - Interpolation - Daten

ts  = d.SdoRd(0x3850, 0x00)               # SYS_Clock - System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # SYS_Clock - System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x37C6, 0x00, TargetPos)       # POS_InterpData - Interpolation - Daten


AN1472 Positioniermodus (Interpolation normalisiert) - DC Motor mit Encoder-Rückführung

Nummer | AN1472
Name | AN_DSA_IpMode_DcMotorWithEncoder_Normalised
Bezeichnung | Positioniermodus (Interpolation normalisiert) - DC Motor mit Encoder-Rückführung
Querverweis | -

Beschreibung

Das Beispiel zeigt die interpolierte Positionierung (normalisiert) des bürstenbehafteten Motors mit der Encoder-Rückführung über 3000h Parameter.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x3004, 0x00, 0)                  # Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 0)                  # Motortyp - bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x3310, 0x00, 10)                 # VEL PID-Regler - Proportionalfaktor
d.SdoWr(0x3314, 0x00, 1000)               # VEL PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x3003, 0x00, 7)                  # Betriebsart - Positioniermodus

d.SdoWr(0x3708, 0x00, 1)                  # Position Betriebsart - Interpolation
d.SdoWr(0x37C2, 0x01, INTERPOLATION_TIME_MS*1000) # Interpolation - Zeit [us]
d.SdoWr(0x37C2, 0x02, 2)                  # Interpolation - Referenz
d.SdoWr(0x37C5, 0x00, 1)                  # Interpolation - Bufferkonfiguration
                                          #    Bit0: 0=InterpData als absolute Position  1: InterpData als relative Position
                                          #    Bit1: 0=InterpData ist normalisiert       1: InterpData ist in Inkrementen

d.SdoWr(0x3004, 0x00, 1)                  # Endstufe freigeben

StartPos  = 0
TargetPos = StartPos

d.SdoWr(0x3762, 0x00, TargetPos)          # aktuelle Position setzen
d.SdoWr(0x37C6, 0x00, TargetPos)          # Interpolation - Daten

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4

   # wenn Referenz 37C2.02h ist 1:
   #    1/2 der Umdrehung -> 0x80000000
   #    1/4 der Umdrehung -> 0x40000000
   #    1/8 der Umdrehung -> 0x20000000
   #    usw...
   #
   # wenn Referenz 37C2.02h ist 2:
   #    1/1 der Umdrehung -> 0x80000000
   #    1/2 der Umdrehung -> 0x40000000
   #    1/4 der Umdrehung -> 0x20000000
   #    usw...

   TargetPos = StartPos + int(sin(angle) * 0x80000000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x37C6, 0x00, TargetPos)       # Interpolation - Daten


AN1473 Positioniermodus (Interpolation normalisiert) - BLDC Motor mit Encoder-Rückführung

Nummer | AN1473
Name | AN_DSA_IpMode_BldcMotorWithEncoder_Normalised
Bezeichnung | Positioniermodus (Interpolation normalisiert) - BLDC Motor mit Encoder-Rückführung
Querverweis | -

Beschreibung

Das Beispiel zeigt die interpolierte Positionierung (normalisiert) des bürstenlosen Motors mit der Encoder-Rückführung über 3000h Parameter.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x3004, 0x00, 0)                  # Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 1)                  # Motortyp - bürstenloser Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # Motorpolanzahl
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x3310, 0x00, 10)                 # VEL PID-Regler - Proportionalfaktor
d.SdoWr(0x3314, 0x00, 1000)               # VEL PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x3003, 0x00, 7)                  # Betriebsart - Positioniermodus

d.SdoWr(0x3708, 0x00, 1)                  # Position Betriebsart - Interpolation
d.SdoWr(0x37C2, 0x01, INTERPOLATION_TIME_MS*1000) # Interpolation - Zeit [us]
d.SdoWr(0x37C2, 0x02, 2)                  # Interpolation - Referenz
d.SdoWr(0x37C5, 0x00, 1)                  # Interpolation - Bufferkonfiguration
                                          #    Bit0: 0=InterpData als absolute Position  1: InterpData als relative Position
                                          #    Bit1: 0=InterpData ist normalisiert       1: InterpData ist in Inkrementen

d.SdoWr(0x3004, 0x00, 1)                  # Endstufe freigeben

StartPos  = 0
TargetPos = StartPos

d.SdoWr(0x3762, 0x00, TargetPos)          # aktuelle Position setzen
d.SdoWr(0x37C6, 0x00, TargetPos)          # Interpolation - Daten

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4

   # wenn Referenz 37C2.02h ist 1:
   #    1/2 der Umdrehung -> 0x80000000
   #    1/4 der Umdrehung -> 0x40000000
   #    1/8 der Umdrehung -> 0x20000000
   #    usw...
   #
   # wenn Referenz 37C2.02h ist 2:
   #    1/1 der Umdrehung -> 0x80000000
   #    1/2 der Umdrehung -> 0x40000000
   #    1/4 der Umdrehung -> 0x20000000
   #    usw...

   TargetPos = StartPos + int(sin(angle) * 0x80000000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x37C6, 0x00, TargetPos)       # Interpolation - Daten


Inhalt - AN15xx Profil DS402

AN1500 | AN_DS402vs3000hParameters | Zusammenhang DS402 und ENGEL 3000h-Parameter
AN1510 | AN_DS402_PosMode_DcMotorWithEncoder | Positioniermodus - DC Motor mit Encoder-Rückführung - relative Positionierung
AN1511 | AN_DS402_PosMode_BldcMotorWithEncoder | Positioniermodus - BLDC Motor mit Encoder-Rückführung - relative Positionierung
AN1520 | AN_DS402_VelMode_DcMotorWithEncoder | Drehzahlmodus - DC Motor mit Encoder-Rückführung
AN1521 | AN_DS402_VelMode_DcMotorWithEmf | Drehzahlmodus - DC Motor mit EMK-Rückführung
AN1522 | AN_DS402_VelMode_BldcMotorWithHall | Drehzahlmodus - BLDC Motor mit Hall-Rückführung
AN1523 | AN_DS402_VelMode_BldcMotorWithEncoder | Drehzahlmodus - BLDC Motor mit Encoder-Rückführung
AN1540 | AN_DS402_TorqueMode_DcMotor | Drehmomentmodus - DC Motor
AN1541 | AN_DS402_TorqueMode_BldcMotor | Drehmomentmodus - BLDC Motor
AN1570 | AN_DS402_IpMode_DcMotorWithEncoder | Interpolationsmodus - DC Motor mit Encoder-Rückführung
AN1571 | AN_DS402_IpMode_BldcMotorWithEncoder | Interpolationsmodus - BLDC Motor mit Encoder-Rückführung


AN1500 Zusammenhang DS402 und ENGEL 3000h-Parameter

Nummer | AN1500
Name | AN_DS402vs3000hParameters
Bezeichnung | Zusammenhang DS402 und ENGEL 3000h-Parameter
Querverweis | -

Beschreibung

Allgemein
DS402 ist ein CANopen-Geräteprofil, welches Parameter im Bereich 6000h-6FFFh für Antriebsregler definiert. Die DS402-Parameter in ENGEL-Antriebsregler basieren auf den 3000h-Parameter. D.h. wenn ein DS402-Parameter beschrieben wird, wird ein 3000h-Parameter mit direktem oder umgerechnetem Wert beschrieben. Direkte Änderungen der 3000h-Parameter werden nicht auf die DS402-Parameter überträgt.

Steuerungsart
Die Steuerung bei dem DS402-Profil erfolgt mittels einer internen Zustandsmaschine, die mit Steuerwort beeinflusst wird. Ein Statusword liefert den aktuellen Zustand der Zustandsmaschine und Statusbits, die u.a. vom Betriebsart abhängig sind. Die genaue Informationen über DS402-Parameter und die DS402-Zustandsmaschine können aus der DS402-Spezifikation von CiA (CAN in Automation) entnommen werden.

Die Steuerung über die 3000h-Parameter ist "Kommandoorientiert". D.h. Beschreiben eines Steuerparameters löst eine Aktion aus.

Der Benutzer soll sich zuerst entweder für Steuerung über DS402- oder 3000h-Parameter entscheiden. Falls DS402-Parameter benutzt werden, dürfen nur solche 3000h-Parameter, verwendet werden, die keine entsprechende DS402-Parameter besitzen.

Wenn die Steuerung über Parameter 3000h erfolgen soll, dann dürfen die 6000h-Parameter nicht verwendet werden. Um den eventuellen Einfluss der 6000h-Parameter im dem Fall zu unterbinden, werden die DS402-Parameter und -Zustandsmaschine bei Reglerfreigabe über den Parameter DEV_Enable (3004.00h) automatisch deaktiviert. Damit wird auch der Schreibzugriff auf die 6000h-Parameter gesperrt. Die Steuerung über die 3000h-Parameter ist universeller und nicht mit DS402-Profil verbunden. Mit den Parameter 3000h können die Antriebsaufgaben komplett, effektiver, einfacher und unabhängig vom Bussystem realisiert werden. Das 3000h-QuickCommand-Interface ermöglicht komplette Parametrierung und Steuerung nur über ein 8Byte-TxPDO (Prozessdaten-Sendeobjekt) und ein 8Byte-RxPDO (Prozessdaten-Empangsobjekt) unabhängig vom Bussystem (CANopen, EtherCAT, PROFIBUS, Ethernet, RS232, RS485, MODBUS, ...)

Vergleich DS402- und 3000h-Steuerung
Beispiel: Freigabe und Positionierung auf absolute Position 123456 mit Geschwindigkeit 1000 rpm.

DS402 |  |  | 3000h-QuickCommand (siehe Parameter DEV_Cmd_ExecOnChange)
Objekt | Name | Aktion | Objekt | Name | Aktion
6060.00h | DS402_ModesOfOperation | = 1 | 3000.10h | DEV_CmdData0 | = 1000
6061.00h | DS402_ModesOfOperationDisplay | Abfrage | 3000.11h | DEV_CmdData1 | = 123456
6040.00h | DS402_ControlWord | = 06h | 3000.01h | DEV_Cmd_ExecOnChange | = 76h (PosMode, Enable, Mova)
6041.00h | DS402_StatusWord | Abfrage | 3002.00h | DEV_Status | Abfrage: STAT_CmdToggle und STAT_CmdError
6040.00h | DS402_ControlWord | = 07h |  |  |
6041.00h | DS402_StatusWord | Abfrage |  |  |
6040.00h | DS402_ControlWord | = 0Fh |  |  |
6041.00h | DS402_StatusWord | Abfrage |  |  |
6081.00h | DS402_PP_ProfileVelocity | = 1000 |  |  |
607A.00h | DS402_PP_TargetPosition | = 123456 |  |  |
6040.00h | DS402_ControlWord | = 1Fh (set new point = 1) |  |  |
6041.00h | DS402_StatusWord | Abfrage: Warten mit Timeout auf ACK |  |  |
6040.00h | DS402_ControlWord | = 0Fh (set new point = 0) |  |  |

Parametrierung
Beispiel: Parametrierung für DS402 - BLDC-Motor, Ink. Encoder, Positionierung in Inkrementen

Index.Subindex | Name | Wert | Bereich | Bedeutung
2011.06h | DS2000_RestoreDefaultParameters_Manufacturer_0x3000 | 0x64616F6C | 2000h | Defaultparameter wiederherstellen (Bereich 0x3000-0x3FFF)
2011.03h | DS2000_RestoreDefaultParameters_Application | 0x64616F6C | 2000h | Defaultparameter wiederherstellen (Bereich 0x6000-0x9FFF)
3910.00h | MOTOR_PolN | 4 | 3000h | Motorpolanzahl
3962.00h | MOTOR_ENC_Resolution | 2000 | 3000h | Encoderauflösung in Inkrementen
3350.00h | VEL_Feedback | 0x96A | 3000h | Drehzahlrückführung
3550.00h | SVEL_Feedback | 0x96A | 3000h | SVel Rückführung
3210.00h | CURR_Kp | 100 | 3000h | PI-Stromregler - Proportionalfaktor
3211.00h | CURR_Ki | 100 | 3000h | PI-Stromregler - Integralfaktor
3310.00h | VEL_Kp | 100 | 3000h | PID-Regler - Proportionalfaktor
3311.00h | VEL_Ki | 100 | 3000h | PID-Regler - Integralfaktor
3314.00h | VEL_Kvff | 1000 | 3000h | PID-Regler - Geschwindigkeitsvorsteuerung
3510.00h | SVEL_Kp | 100 | 3000h | SVel PI-Regler - Proportionalfaktor
3511.00h | SVEL_Ki | 100 | 3000h | SVel PI-Regler - Integralfaktor
6402.00h | DS402_MotorType | 0x8001 | 6000h (DS402) | Motortyp
6060.00h | DS402_ModesOfOperation | 1 | 6000h (DS402) | Betriebsart
608A.00h | DS402_PP_PositionDimensionIndex | 0xAC | 6000h (DS402) | Position in Inkrementen
6065.00h | DS402_PP_FollowingErrorWindow | 1000 | 6000h (DS402) | Positionsschleppfehler - Fenster
6083.00h | DS402_PP_ProfileAcceleration | 60000 | 6000h (DS402) | Drehzahlbeschleunigung
6084.00h | DS402_PP_ProfileDeceleration | 60000 | 6000h (DS402) | Drehzahlverzögerung
6085.00h | DS402_PP_QuickstopDeceleration | 600000 | 6000h (DS402) | Drehzahl-Quickstop-Verzögerung
6081.00h | DS402_PP_ProfileVelocity | 1000 | 6000h (DS402) | Drehzahlsollwert


AN1510 Positioniermodus - DC Motor mit Encoder-Rückführung - relative Positionierung

Nummer | AN1510
Name | AN_DS402_PosMode_DcMotorWithEncoder
Bezeichnung | Positioniermodus - DC Motor mit Encoder-Rückführung - relative Positionierung
Querverweis | -

Beschreibung

Das Beispiel zeigt die relative Positionierung des bürstenbehafteten Motors mit der Encoder-Rückführung mit Hilfe von DS402.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp - bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 1)                  # Betriebsart - Positioniermodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normalerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6081, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x607A, 0x00, 2000)               # Zielposition [Ink]

d.SdoWr(0x6040, 0x00, 0x5F)               # Steuerwort - relative Positionierung starten


AN1511 Positioniermodus - BLDC Motor mit Encoder-Rückführung - relative Positionierung

Nummer | AN1511
Name | AN_DS402_PosMode_BldcMotorWithEncoder
Bezeichnung | Positioniermodus - BLDC Motor mit Encoder-Rückführung - relative Positionierung
Querverweis | -

Beschreibung

Das Beispiel zeigt die relative Positionierung des bürstenlosen Motors mit der Encoder-Rückführung mit Hilfe von DS402.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8001)             # Motortyp - bürstenloser Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # Motorpolanzahl
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 1)                  # Betriebsart - Positioniermodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x3314, 0x00, 1000)               # PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normalerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6081, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x607A, 0x00, 2000)               # Zielposition [Ink]

d.SdoWr(0x6040, 0x00, 0x5F)               # Steuerwort - relative Positionierung starten


AN1520 Drehzahlmodus - DC Motor mit Encoder-Rückführung

Nummer | AN1520
Name | AN_DS402_VelMode_DcMotorWithEncoder
Bezeichnung | Drehzahlmodus - DC Motor mit Encoder-Rückführung
Querverweis | -

Beschreibung

Das Beispiel zeigt die Drehzahlregelung des bürstenbehafteten Motors mit der Encoder-Rückführung mit Hilfe von DS402.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp - bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normalerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


AN1521 Drehzahlmodus - DC Motor mit EMK-Rückführung

Nummer | AN1521
Name | AN_DS402_VelMode_DcMotorWithEmf
Bezeichnung | Drehzahlmodus - DC Motor mit EMK-Rückführung
Querverweis | -

Beschreibung

Das Beispiel zeigt die Drehzahlregelung des bürstenbehafteten Motors mit der EMK-Rückführung mit Hilfe von DS402.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp - bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3901, 0x00, 3000)               # Motornenndrehzahl [rpm]
d.SdoWr(0x3902, 0x00, 24000)              # Motornennspannung [mV]

d.SdoWr(0x3310, 0x00, 10)                 # VEL PID-Regler - Proportionalfaktor
d.SdoWr(0x3311, 0x00, 10)                 # VEL PID-Regler - Integralfaktor

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normalerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


AN1522 Drehzahlmodus - BLDC Motor mit Hall-Rückführung

Nummer | AN1522
Name | AN_DS402_VelMode_BldcMotorWithHall
Bezeichnung | Drehzahlmodus - BLDC Motor mit Hall-Rückführung
Querverweis | -

Beschreibung

Das Beispiel zeigt die Drehzahlregelung des bürstenlosen Motors mit der Hall-Rückführung mit Hilfe von DS402.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8001)             # Motortyp - bürstenloser Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # Motorpolanzahl
d.SdoWr(0x3911, 0x00, 2)                  # Motorpolarität

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normalerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


AN1523 Drehzahlmodus - BLDC Motor mit Encoder-Rückführung

Nummer | AN1523
Name | AN_DS402_VelMode_BldcMotorWithEncoder
Bezeichnung | Drehzahlmodus - BLDC Motor mit Encoder-Rückführung
Querverweis | -

Beschreibung

Das Beispiel zeigt die Drehzahlregelung des bürstenlosen Motors mit der Encoder-Rückführung mit Hilfe von DS402.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8001)             # Motortyp - bürstenloser Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # Motorpolanzahl
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x3314, 0x00, 1000)               # PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normalerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


AN1540 Drehmomentmodus - DC Motor

Nummer | AN1540
Name | AN_DS402_TorqueMode_DcMotor
Bezeichnung | Drehmomentmodus - DC Motor
Querverweis | -

Beschreibung

Das Beispiel zeigt die Drehmomentregelung des bürstenbehafteten Motors mit Hilfe von DS402.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp - bürstenbehafteter Motor (DC)

d.SdoWr(0x6060, 0x00, 4)                  # Betriebsart - Drehmomentmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normalerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6075, 0x00, 800)                # Motornennstrom [mA]
d.SdoWr(0x6072, 0x00, 1000)               # Maximales Drehmoment[o/oo]

d.SdoWr(0x6071, 0x00, 500)                # Zieldrehmoment [o/oo]


AN1541 Drehmomentmodus - BLDC Motor

Nummer | AN1541
Name | AN_DS402_TorqueMode_BldcMotor
Bezeichnung | Drehmomentmodus - BLDC Motor
Querverweis | -

Beschreibung

Das Beispiel zeigt die Drehmomentregelung des bürstenlosen Motors mit Hilfe von DS402.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8001)             # Motortyp - bürstenloser  Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # Motorpolanzahl

d.SdoWr(0x6060, 0x00, 4)                  # Betriebsart - Drehmomentmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normalerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6075, 0x00, 800)                # Motornennstrom [mA]
d.SdoWr(0x6072, 0x00, 1000)               # Maximales Drehmoment[o/oo]

d.SdoWr(0x6071, 0x00, 500)                # Zieldrehmoment [o/oo]


AN1570 Interpolationsmodus - DC Motor mit Encoder-Rückführung

Nummer | AN1570
Name | AN_DS402_IpMode_DcMotorWithEncoder
Bezeichnung | Interpolationsmodus - DC Motor mit Encoder-Rückführung
Querverweis | -

Beschreibung

Das Beispiel zeigt die interpolierte Positionierung in Inkrementen des bürstenbehafteten Motors mit der Encoder-Rückführung mit Hilfe von DS402.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp - bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x3314, 0x00, 1000)               # PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x6060, 0x00, 7)                  # Betriebsart - Interpolationsmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

d.SdoWr(0x60C2, 0x01, 100)                # Interpolationszeit - Wert
d.SdoWr(0x60C2, 0x02, -3)                 # Interpolationszeit - Index

d.SdoWr(0x60C4, 0x06, 1)                  # Interpolationskonfigurationsdaten - Puffer löschen
                                          #  0 = Löscht den Puffer und deaktiviert den Zugriff
                                          #  1 = Aktiviert den Zugriff
                                          # WICHTIG - sonst kein Zugriff zum ip Puffer

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normalerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
d.SdoWr(0x6040, 0x00, 0x1F)               # Steuerwort - ip Modus aktivieren
#------------------------------------------------------------------------------------------

StartPos  = d.SdoRd(0x6064, 0x00)         # aktuelle Position
TargetPos = StartPos

d.SdoWr(0x60C1, 0x01, TargetPos)          # Interpolationsdatensatz - 1.Sollwert

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x60C1, 0x01, TargetPos)       # Interpolationsdatensatz - 1.Sollwert


AN1571 Interpolationsmodus - BLDC Motor mit Encoder-Rückführung

Nummer | AN1571
Name | AN_DS402_IpMode_BldcMotorWithEncoder
Bezeichnung | Interpolationsmodus - BLDC Motor mit Encoder-Rückführung
Querverweis | -

Beschreibung

Das Beispiel zeigt die interpolierte Positionierung in Inkrementen des bürstenlosen Motors mit der Encoder-Rückführung mit Hilfe von DS402.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8001)             # Motortyp - bürstenloser  Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # Motorpolanzahl
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x3314, 0x00, 1000)               # PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x6060, 0x00, 7)                  # Betriebsart - Interpolationsmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

d.SdoWr(0x60C2, 0x01, 100)                # Interpolationszeit - Wert
d.SdoWr(0x60C2, 0x02, -3)                 # Interpolationszeit - Index

d.SdoWr(0x60C4, 0x06, 1)                  # Interpolationskonfigurationsdaten - Puffer löschen
                                          #  0 = Löscht den Puffer und deaktiviert den Zugriff
                                          #  1 = Aktiviert den Zugriff
                                          # WICHTIG - sonst kein Zugriff zum ip Puffer

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normalerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
d.SdoWr(0x6040, 0x00, 0x1F)               # Steuerwort - ip Modus aktivieren
#------------------------------------------------------------------------------------------

StartPos  = d.SdoRd(0x6064, 0x00)         # aktuelle Position
TargetPos = StartPos

d.SdoWr(0x60C1, 0x01, TargetPos)          # Interpolationsdatensatz - 1.Sollwert

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x60C1, 0x01, TargetPos)       # Interpolationsdatensatz - 1.Sollwert


Inhalt - AN50xx spezifische Klassen

AN5000

AN_mcConvertFirmware

 Klasse ConvertFirmware()- Firmware Konvertierung in benutzerspezifisches Format


AN5000 Klasse ConvertFirmware()- Firmware Konvertierung in benutzerspezifisches Format

Nummer | AN5000
Name | AN_mcConvertFirmware
Bezeichnung | Klasse ConvertFirmware()- Firmware Konvertierung in benutzerspezifisches Format
Querverweis | -

Beschreibung

Diese Application Note beschreibt eine Möglichkeit, die Firmware der ENGEL Geräte vom *.sx Dateiformat in eine Liste von Semicodebefehlen zu konvertieren. Dabei kann das Format der Semicodebefehle beliebig gewählt werden.
Dies ermöglicht es beispielsweise die Firmware von einer SPS-Steuerung bzw einem PC-Programm einzulesen und via CAN-Bus auf ein Gerät zu übertragen.

Konvertierung der Firmware via Python Skript

Um die Firmware in das gewünschte Format zu konvertieren, muss die Funktion Convert() der ConvertFirmware-Klasse aufgerufen werden.

# -*- coding: iso-8859-1 -*-
import mc_convert_firmware

NodeId      = 1                              # NodeId des Geräts/ der Geräte (falls mehrere Geräte gleichzeitig aktualisiert werden sollen dann im Format "NodeId = [1,2,3,4]")
FileName    = "mcDSA-E45-RevB-4BL10k.sx"     # Dateiname der Firmwaredatei
Virtual     = True                           # True, wenn kein Gerät während der Kovertierung angeschlossen ist
DeviceCode  = 0x25450001                     # Nur notwendig wenn "Virtual = True"
Version     = "1.89.00.E7"                   # Version der Firmware

cf = mc_convert_firmware.ConvertFirmware()

cf.Convert(node_id = NodeId,
           filename = FileName,
           out_filename = "%s_V%s.py" % (FileName[0:FileName.find('.')], Version),
           virtual_device = Virtual,
           device_code = DeviceCode,
           use_extd_cobid = True,
           deactive_bootup_msg = False,
           #sdo_format = "\"SdoWr;%d;%d;%d;%d;%d\" % (nodeid, index, subindex, value, timeout)",                                 # => Entferne Kommentar in dieser Zeile um eigenes "sdo Format" zu definieren
           #sdo_wr_try_format = "\"SdoWrTry;%d;%d;%d;%d;%d\" % (nodeid, index, subindex, value, timeout)",                       # => Entferne Kommentar in dieser Zeile um eigenes "sdo write try Format" zu definieren
           #pdo_format = "\"PdoWr;%d;%d;%s\" % (cob_id, len(dat), str(dat))",                                                    # => Entferne Kommentar in dieser Zeile um eigenes "pdo format" zu definieren
           #delay_format = "\"Delay;%d\" % (delay)",                                                                             # => Entferne Kommentar in dieser Zeile um eigenes "delay" zu definieren
           #check_crc_format = "\"SdoCk;%d;%d;%d;%d\" % (nodeid, index, subindex, value)",                                       # => Entferne Kommentar in dieser Zeile um eigenes "check crc Format" zu definieren
           #comment_format = "\"''' %s '''\" % (comment)",                                                                       # => Entferne Kommentar in dieser Zeile um eigenes "comment Format" zu definieren
           #comment_format = None,                                                                                               # => Entferne Kommentar in dieser Zeile um eigene Kommentare zu deaktivieren
           #file_header = "mcFw_V%s;%d\n" % (Version, DeviceCode),                                                               # => Entferne Kommentar in dieser Zeile um eigenen Datei Header zu generieren
           #app_header_txt = "=== This part works only, if there is a firmware on the device. (not in bootloader mode) === ",    # => Entferne Kommentar in dieser Zeile um eigenen Header Kommentar zu definieren
           #app_footer_txt = "=============================== Beginning of bootloader mode ==============================="      # => Entferne Kommentar in dieser Zeile um eigenen Footer Kommentar zu definieren
           )

Übergabeparameter der Funktion Convert()

Durch die folgenden Übergabeparameter kann das Ausgabeformat der Semicodebefehle individuell angepasst werden.

Übergabeparameter | Beschreibung | Defaultwert | Wertebereich
node_id | CANopen Knotenadresse des zu programmierenden Gerätes | - | 1...127
bl_node_id | CANopen Knotenadresse des Bootloaders des Geräts (nur bei einigen, wenigen Geräten notwendig, bei welchen der Bootloader eine feste Knotenadresse hat) | - | 1...127
filename | Dateiname / Dateipfad zur Firmwaredatei | - | -
out_filename | Dateiname / Dateipfad zur Ausgabedatei (Ergebnis der Konvertierung) | - | -
virtual_device | Gibt an, ob das Gerät während der Konvertierung via CAN-Bus erreichbar ist, da der Gerätecode abgelesen werden muss. ("virtual_device = False" bedeutet dass das Gerät per CAN-Bus erreichbar ist) | False | True, False
device_code | Der Gerätecode des zu programmierenden Gerätes, falls bekannt. (nur notwendig wenn virtual_device = True). Der Gerätecode ist notwendig um die Firmware an den jeweiligen Prozessor auf dem Gerät anzupassen (Speicherbereiche etc.) | - | 0x10000000 - 0xFFFFFFFF
use_extd_cobid | Wenn dieser Parameter aktiviert ist, werden die CAN-Bus Nachrichten während des Firmwaredownloads mit einen 29-Bit Identifier gesendet, ansonsten 11-Bit Identifier. | True | True, False
deactive_bootup_msg | Deaktiviert die "BootUp"-Nachricht des Gerätes während des Firmwaredownloads. Nach erfolgreichem Download wird die "BootUp"-Nachricht automatisch wieder aktiviert. | False | True, False
sdo_format | Benutzerspezifisches Format für SdoWr Anfragen | - | -
pdo_format | Benutzerspezifisches Format für CAN Nachrichten | - | -
delay_format | Benutzerspezifisches Format für Wartezeiten im Programmablauf | - | -
sdo_wr_try_format | Benutzerspezifisches Format für SdoWr Anfragen, welche ohne Antwort des Geräts abgearbeitet werden. Ist der Übergabeparameter "sdo_wr_try_format" nicht definiert, wird das Format von "sdo_format" genutzt. | - | -
check_crc_format | Benutzerspezifisches Format zur Überprüfung von CRC-Prüfsummen | - | -
comment_format | Benutzerspezifisches Format für Kommentare in der Ausgabedatei (bei "comment_format = None" werden die Kommentare deaktiviert) | "#%s" % (comment) | -
file_header | Benutzerspezifischer Dateikopf | - | -
app_header_txt | Benutzerspezifischer Kommentar für den Dateikopf | === This part works only, if there is a firmware on the device. (not in bootloader mode) === | -
app_footer_txt | Benutzerspezifischer Kommentar für den Dateifuß | =============================== Beginning of bootloader mode =============================== | -

Übertragung der Firmware

Die Firmware kann in jedem Betriebszustand übertragen werden. Dabei ist es unabhängig ob das Gerät sich im Bootloadermodus oder im normalem Betriebsmodus befindet.
Sollte ein Firmwareupdate fehlschlagen, kann es direkt wiederholt werden, ohne dass das Gerät neugestartet werden muss.

Um die konvertierte Firmware auf das Gerät zu übertragen, müssen die exportierten Daten durch das gewünschte Programm / die gewünschte Steuerung eingelesen werden.
Eine Interpretation der Daten selbst ist nicht notwendig. Lediglich die folgenden Semicodebefehle müssen interpretiert und die korrekten Funktionen durch die SPS bzw. das PC-Programm ausgeführt werden.

Zu implementierende Funktionen in der SPS bzw. im PC-Programm

Das Ausgabeformat der Semicodebefehle kann beliebig durch die Übergabeparameter der Convert()-Funktion angepasst werden.
Im folgenden Teil wird jedoch das ENGEL-Standardformat der Semicodebefehle beschrieben, damit die von SPS bzw. dem PC-Programm auszuführenden Funktionen erläutert werden können.

SdoWr(nodeid, index, subindex, value, timeout)

Diese Funktion stellt eine Standard CANopen "SDO download" Nachricht im "expedited" Transfertyp dar (ENGEL intern "SdoWr" genannt) .
Damit wird ein Objekt im Gerät mit einem bestimmten Wert beschrieben. Das Standard-Timeout für diese Nachrichten beträgt 200ms.
Der Datentyp ist immer int32.

Übergabeparameter | Beschreibung
nodeid | CANopen Knotenadresse
index | CANopen Objektindex
subindex | CANopen Objektsubindex
value | Zu übertragender Wert
timeout | Zeitraum in Millisekunden, in welchem eine Antwort von dem Gerät erwartet wird. Falls nicht, ist der Firmwaredownload fehlgeschlagen und muss abgebrochen werden. Außnamen: Beschreiben des Objekts 0x2009.02 mit 0x9999 - es wird keine Antwort erwartet, da das Gerät neustartet. Beschreiben des Objekts 0x2008.02 mit 0x9998 - es wird keine Antwort erwartet, da das Gerät neustartet.

SdoWrTry(nodeid, index, subindex, value, timeout)

Diese Funktion ist identisch mit SdoWr. Der Unterschied ist lediglich, dass im Falle eines SDO Error Codes der Firmwaredownload forgesetzt werden muss.
Dies ist beispielsweise notwendig, wenn das Gerät einen Neustart durchführt.

Übergabeparameter | Beschreibung
nodeid | CANopen Knotenadresse
index | CANopen Objektindex
subindex | CANopen Objektsubindex
value | Zu übertragender Wert
timeout | Zeitraum in Millisekunden, in welchem eine Antwort von dem Gerät erwartet wird. Falls nicht, kann der Firmwaredownload fortgesetzt werden.

PdoWr(cob_id, data)

Diese Funktion stellt einen Standard CAN-Frame mit CobId und Daten dar (ENGEL intern "PdoWr" genannt).

Übergabeparameter | Beschreibung
cobid | CAN Nachricht cob identifier
data | CAN Nachricht Daten (Liste mit bis zu 8 Bytes)

SdoCheck(nodeid, index, subindex, value)

Diese Funktion stellt eine Standard CANopen "SDO upload" Nachricht im "expedited" Transfertyp dar (ENGEL intern "SdoRd" genannt) .
Damit wird der Wert eines Objekt vom Gerät abgelesen. Das Standard-Timeout für diese Nachrichten beträgt 200ms.
Dieser abgelesene Wert muss mit dem Übergabeparameter "value" verglichen werden. Falls sich der vom Gerät gelesene Wert und der Wert dieses Übergabeparameters unterscheiden, ist der Firmwaredownload fehlgeschlagen und muss abgebrochen werden.

Übergabeparameter | Beschreibung
nodeid | CANopen Knotenadresse
index | CANopen Objektindex
subindex | CANopen Objektsubindex
value | Zu vergleichender Wert. Falls sich der vom Gerät gelesene Wert und der Wert dieses Übergabeparameters unterscheiden, ist der Firmwaredownload fehlgeschlagen und muss abgebrochen werden.

Delay(delay)

Wird diese Funktion aufgerufen, muss die Ausführung des Programms für eine definierte Zeitspanne unterbrochen werden.
Dies ist beispielsweise notwendig, wenn das Gerät einen Neustart durchführt. Sollte diese Pause nicht eingehalten werden, können wichtige Nachrichten bei der Übertragung der Firmware verloren gehen.

Übergabeparameter | Beschreibung
delay | Wartezeit in Millisekunden

Sonderfälle

Es existieren einzelne Sonderfälle, welche bei der Implementierung des Firmwaredownloads beachten werden müssen.

SdoWr wird durch einen SDO Error Code quittiert

Zu Beginn der Semicodebefehle wird angenommen, dass sich das Gerät im normalen Betriebsmodus befindet.
Sollte jedoch bereits der Bootloadermodus gestartet sein (z.B. durch einen fehlerhaften Firmwaredownload), wird der erste Block der Nachrichten von dem Gerät durch einen SDO Error Code "Object does not exist" quittiert werden.
In diesem Fall kann der erste Block der Nachrichten (bis zum Ende des Try/Exception Blocks) ignoriert und mit den folgenden Nachrichten fortgefahren werden.

Für diese Objekte kann auch das Format "sdo_wr_try_format" verwendet werden. Ist der Übergabeparameter "sdo_wr_try_format" nicht definiert, wird das Format von "sdo_format" genutzt.

SdoWr liefert keine Antwort

Sollte ein SdoWr keine Antwort liefern, ist der Firmwaredownload fehlgeschlagen und muss abgebrochen werden.
Es gibt jedoch 2 Ausnahmen, welche ignoriert werden müssen.

Ausnahmen:

Beschreiben des Objekts 0x2009.02 mit 0x9999 - es wird keine Antwort erwartet, da das Gerät neu startet.
Beschreiben des Objekts 0x2008.02 mit 0x9998 - es wird keine Antwort erwartet, da das Gerät neu startet.

Für diese Objekte kann auch das Format "sdo_wr_try_format" verwendet werden. Ist der Übergabeparameter "sdo_wr_try_format" nicht definiert, wird das Format von "sdo_format" genutzt.

Prüfmechanismen

Um die Sicherheit des Firmwaredownloads zu gewährleisten, können verschiedene Prüfungen vor dem Prozess durchgeführt werden.

Ist die Firmware mit dem Gerät kompatibel?

Um zu prüfen ob die Firmware mit dem jeweiligen Gerät kompatibel ist, sollte vor dem Abarbeiten der Semicodebefehle der DeviceCode des Gerätes ausgelesen und verglichen werden. Unterscheidet sich der Gerätecode, sollte der Firmwaredownload nicht durchgeführt werden.
Im normalen Betriebsmodus kann der DeviceCode über 3020.00h ( DEV_Code) und 3020.01h ( DEV_SubCode) ausgelesen werden.
Sollte sich das Gerät bereits im Bootloadermodus befinden, kann der vollständige Gerätecode über das Objekt 2008.11h ausgelesen werden. (obere 2 Byte entsprechen DeviceCode, untere 2 Byte entsprechen DeviceSubCode).

Um zu erkennen ob der Regler bereits im Bootloadermodus ist, kann das Objekt 3020.00h ( DEV_Code) gelesen werden (DeviceCode im normalen Betriebsmodus).
Liefert die Anfrage einen SDO Error Code "Object does not exist", befindet sich das Gerät bereits im Bootloadermodus.


Inhalt - AN80xx Hardware-Design

AN8000

AN_HardwareDesign_EagleLibrary

 EAGLE Bibliothek


AN8000 EAGLE Bibliothek

Nummer | AN8000
Name | AN_HardwareDesign_EagleLibrary
Bezeichnung | EAGLE Bibliothek
Querverweis | -

Beschreibung

Bibliothek Version 1.80 - Eagle-Bibliothek für Leiterplattenvarianten der ENGEL-Geräte.

Bibliothek

Diese Application Note beschreibt einige Grundlagen für die Projektenentwicklung mit ENGEL-Geräten und der EAGLE Bibliothek mcModules. Alle notwendige Dateien (Beispiele und Bibliothek) finden Sie in an8000.zip.

Symbol

Enthält schematische Symbole der Steckverbinder der ENGEL-Geräte, unterteilt in Gruppen, wie im Kapitel Klemmenbelegung des jeweiligen Gerätes beschrieben.

Die Symbole X1 (oben) und X2 (unten) stellen die Steckverbinder X1 und X2 des Gerätes mit dem Pinouts dar. Hat das Gerät nur einen Steckverbinder, ist er mit X1 bezeichnet und in einfacher rechteckiger Form dargestellt.

Die speziell entwickelte Form der Symbole ermöglichen einen einfachen Anschluss der Signale auf dem Schaltplan. Es ist auch möglich, die einzelne Teile des Symbols zwischen den verschiedenen Seiten des Schaltplans aufzuteilen.

Package

Enthält Außenabmessungen des Gerätes (benannt: FRAME) sowie die Definitionen der verwendeten Steckverbinder.

Gerät

Enthält die Symbole mit Package.

Vorgehensweise

Schaltplan erstellen

  1. Platzieren Sie die Steckverbinder in der gewünschten Variante (SMD oder THT) in Ihrem Schaltplan (mit dem Befehl ADD).

Layout der Leiterplatte erstellen

  1. Wechseln Sie nun vom Schematic in das Board und fügen Sie das entsprechende FRAME aus der mcModules Bibliothek in das Board ein.
  2. Setzen Sie das Board-Grid auf 3 mil.
  3. Setzen Sie das FRAME in der richtigen Stelle auf dem Board.
  4. Platzieren Sie nun das Steckverbinder-Symbol X1 auf dem mit X1 markierten Platz (Kreuz mit Umrandung) auf dem FRAME.
  5. Prüfen Sie, ob die Pinnummern übereinstimmen. Drehen Sie den Steckverbinder ggf. um 180°.
  6. Wenn es nötig ist, wiederholen Sie die Schritte 4 und 5 mit Stecker X2.

Hinweis

Alle Außenabmessungen des FRAME befinden sich auf 51 tDocu Layer.


Inhalt - Parameterlisten für die Geräte (Dictionary)

EDC-Bxx

EDC-Exx

EDC-Fxx

EDC-Sxx

IO


Inhalt - Parameter 1000h (DS301)

1000.00h | COP_DeviceType | Gerätetyp
1001.00h | COP_ErrorRegister | Fehlerregister
1002.00h | COP_ManufacturerStatusRegister | Statusregister des Herstellers
1003.00h | COP_PredefinedErrorField_NumberOfErrors | Vordefinierte Fehlerfeld - Anzahl der Fehler
1003.01h | COP_PredefinedErrorField_StandardErrorField1 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 1
1003.02h | COP_PredefinedErrorField_StandardErrorField2 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 2
1003.03h | COP_PredefinedErrorField_StandardErrorField3 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 3
1003.04h | COP_PredefinedErrorField_StandardErrorField4 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 4
1003.05h | COP_PredefinedErrorField_StandardErrorField5 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 5
1003.06h | COP_PredefinedErrorField_StandardErrorField6 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 6
1003.07h | COP_PredefinedErrorField_StandardErrorField7 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 7
1003.08h | COP_PredefinedErrorField_StandardErrorField8 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 8
1005.00h | COP_CobId_Sync | COB-ID SYNC
1006.00h | COP_CommunicationCyclePeriod | Zykluszeit der Kommunikation
1008.00h | COP_ManufacturerDeviceName | Gerätename des Herstellers
1009.00h | COP_ManufacturerHardwareVersion | Hardwareversion des Herstellers
100A.00h | COP_ManufacturerSoftwareVersion | Softwareversion des Herstellers
100C.00h | COP_GuardTime | Überwachungszeit
100D.00h | COP_LifeTimeFactor | Überwachungszeitfaktor
100E.00h | COP_CobId_Guarding | COB-ID Node und Life Guarding
1010.00h | COP_StoreParameters_HighestSubindexSupported | Parameterspeicher - Höchster unterstützter Subindex
1010.01h | COP_StoreParameters_All | Parameterspeicher - Alle Parameter speichern
1010.02h | COP_StoreParameters_Communication | Parameterspeicher - Kommunikationsparameter speichern
1010.03h | COP_StoreParameters_Application | Parameterspeicher - Applikationsparameter speichern
1010.05h | COP_StoreParameters_Manufacturer_0x2000 | Parameterspeicher - Herstellersparameter speichern (Bereich 0x2000-0x2FFF)
1010.06h | COP_StoreParameters_Manufacturer_0x3000 | Parameterspeicher - Herstellersparameter speichern (Bereich 0x3000-0x3FFF)
1011.00h | COP_RestoreDefaultParameters_HighestSubindexSupported | Defaultparameter wiederherstellen - Höchster unterstützter Subindex
1011.01h | COP_RestoreDefaultParameters_All | Defaultparameter wiederherstellen - Alle Defaultparameter wiederherstellen
1011.02h | COP_RestoreDefaultParameters_Communication | Defaultparameter wiederherstellen - Kommunikationsdefaultparameter wiederherstellen
1011.03h | COP_RestoreDefaultParameters_Application | Defaultparameter wiederherstellen - Applikationsdefaultparameter wiederherstellen
1011.05h | COP_RestoreDefaultParameters_Manufacturer_0x2000 | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x2000-0x2FFF)
1011.06h | COP_RestoreDefaultParameters_Manufacturer_0x3000 | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x3000-0x3FFF)
1012.00h | COP_CobId_TimeStampMessage | COB-ID Zeitstempel der Meldung
1014.00h | COP_CobId_EmergencyMessage | COB-ID Emergency-Meldung
1016.00h | COP_ConsumerHeartbeatTime_HighestSubindexSupported | Heartbeat-Zeit des Konsumenten - Höchster unterstützter Subindex
1016.01h | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime1 | Heartbeat-Zeit des Konsumenten 1 - Heartbeat-Zeit des Konsumenten
1016.02h | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime2 | Heartbeat-Zeit des Konsumenten 2 - Heartbeat-Zeit des Konsumenten
1016.03h | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime3 | Heartbeat-Zeit des Konsumenten 3 - Heartbeat-Zeit des Konsumenten
1016.04h | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime4 | Heartbeat-Zeit des Konsumenten 4 - Heartbeat-Zeit des Konsumenten
1017.00h | COP_ProducerHeartbeatTime | Heartbeat-Zeit des Produzent
1018.00h | COP_IdentityObject_HighestSubindexSupported | Identitätsobjekt - Höchster unterstützter Subindex
1018.01h | COP_IdentityObject_VendorID | Identitätsobjekt - Vendor-ID
1018.02h | COP_IdentityObject_ProductCode | Identitätsobjekt - Produktcode
1018.03h | COP_IdentityObject_RevisionNumber | Identitätsobjekt - Revisionsnummer
1029.00h | COP_ErrorBehavior_HighestSubindexSupported | Fehlersverhalten - Höchster unterstützter Subindex
1029.01h | COP_ErrorBehavior_CommunicationError | Fehlersverhalten - Kommunkationsfehler
1200.00h | COP_SDO_ServerParameter_HighestSubindexSupported | SDO Server-Parameter - Höchster unterstützter Subindex
1200.01h | COP_SDO_ServerParameter_CobIdClientServer_Rx | SDO Server-Parameter - COB-ID Client -> Server (rx)
1200.02h | COP_SDO_ServerParameter_CobIdServerClient_Tx | SDO Server-Parameter - COB-ID Server -> Client (tx)
1400.00h | COP_RxPDO1_CommunicationParameter_HighestSubindexSupported | RxPDO1 Kommunikationsparameter - Höchster unterstützter Subindex
1400.01h | COP_RxPDO1_CommunicationParameter_CobId | RxPDO1 Kommunikationsparameter - COB-ID benutzt durch RxPDO 1
1400.02h | COP_RxPDO1_CommunicationParameter_TransmissionType | RxPDO1 Kommunikationsparameter - Typ der Transmission
1400.03h | COP_RxPDO1_CommunicationParameter_InhibitTime | RxPDO1 Kommunikationsparameter - Inhibit-time
1600.00h | COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects | RxPDO1 Mapping - Anzahl der gemappten Obiekte in RxPDO 1
1600.01h | COP_RxPDO1_Mapping_1ApplicationObject | RxPDO1 Mapping - Erstes gemapptes Objekt
1600.02h | COP_RxPDO1_Mapping_2ApplicationObject | RxPDO1 Mapping - Zweites gemapptes Objekt
1600.03h | COP_RxPDO1_Mapping_3ApplicationObject | RxPDO1 Mapping - Drittes gemapptes Objekt
1600.04h | COP_RxPDO1_Mapping_4ApplicationObject | RxPDO1 Mapping - Viertes gemapptes Objekt
1600.05h | COP_RxPDO1_Mapping_5ApplicationObject | RxPDO1 Mapping - Fünftes gemapptes Objekt
1600.06h | COP_RxPDO1_Mapping_6ApplicationObject | RxPDO1 Mapping - Sechstes gemapptes Objekt
1600.07h | COP_RxPDO1_Mapping_7ApplicationObject | RxPDO1 Mapping - Siebtes gemapptes Objekt
1600.08h | COP_RxPDO1_Mapping_8ApplicationObject | RxPDO1 Mapping - Achtes gemapptes Objekt
1800.00h | COP_TxPDO1_CommunicationParameter_HighestSubindexSupported | TxPDO1 Kommunikationsparameter - Höchster unterstützter Subindex
1800.01h | COP_TxPDO1_CommunicationParameter_CobId | TxPDO1 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1800.02h | COP_TxPDO1_CommunicationParameter_TransmissionType | TxPDO1 Kommunikationsparameter - Typ der Transmission
1800.03h | COP_TxPDO1_CommunicationParameter_InhibitTime | TxPDO1 Kommunikationsparameter - Inhibit-time
1A00.00h | COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects | TxPDO1 Mapping - Anzahl der gemappten Obiekte in TxPDO 1
1A00.01h | COP_TxPDO1_Mapping_1ApplicationObject | TxPDO1 Mapping - Erstes gemapptes Objekt
1A00.02h | COP_TxPDO1_Mapping_2ApplicationObject | TxPDO1 Mapping - Zweites gemapptes Objekt
1A00.03h | COP_TxPDO1_Mapping_3ApplicationObject | TxPDO1 Mapping - Drittes gemapptes Objekt
1A00.04h | COP_TxPDO1_Mapping_4ApplicationObject | TxPDO1 Mapping - Viertes gemapptes Objekt
1A00.05h | COP_TxPDO1_Mapping_5ApplicationObject | TxPDO1 Mapping - Fünftes gemapptes Objekt
1A00.06h | COP_TxPDO1_Mapping_6ApplicationObject | TxPDO1 Mapping - Sechstes gemapptes Objekt
1A00.07h | COP_TxPDO1_Mapping_7ApplicationObject | TxPDO1 Mapping - Siebtes gemapptes Objekt
1A00.08h | COP_TxPDO1_Mapping_8ApplicationObject | TxPDO1 Mapping - Achtes gemapptes Objekt


1000.00h Gerätetyp

Name | COP_DeviceType
Bezeichnung | Gerätetyp
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | DeviceType()
Querverweis | -

Beschreibung

Liefert die Information über den Gerätetyp zurück. Das Objekt beschreibt den Typ des logischen Geräts und seine Funktionalität. Es besteht aus einem 16-Bit-Bereich, der das Geräteprofil oder das Anwendungsprofil beschreibt, (untere 2 Byte) und einem 16-Bit-Bereich, der die zusätzliche Informationen zu den optionalen Funktionen des Geräts gibt (höhere 2 Byte). Die zusätzliche Information ist über ein Geräteprofil oder ein Anwendungsprofil bestimmt. Z.B.:
  • Geräteprofilnummer 401 (191h):
16th bit - Digitaleingang ist implementiert
17th bit - Digitalausgang ist implementiert
18th bit - Analogeingang ist implementiert
19th bit - Analogausgang ist implementiert
Rest - reserviert

Jede Kombination von Digital-/Analog-, Ein-und Ausgänge ist zulässig.
  • Geräteprofilnummer 402 (192h):
0001h - Frequenzumrichter
0002h - Servoantrieb
0004h - Schrittmotor
0FFFh - Multiple Gerätemodul

Structure of the device type parameter

Mehr Informationen über die "Zusätzliche Information" finden Sie in einer entsprechenden Spezifikation.

WICHTIGER HINWEIS:
In einer EDS-Datei (electronic data sheet) ist dieses Objekt enthalten. Beim Einbinden eines Gerätes in ein Codesys-SPS-Projekt wird die Geräteprofilnummer aus der EDS-Datei mit dem Eintrag im Gerät verglichen. Stimmt der Eintrag nicht, wird das Gerät von der SPS nicht erkannt und der Hochlauf abgebrochen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                        # NodeId = 1

print "DeviceType = ", hex(d.SdoRd(0x1000,0x00))  # Gerätetyp ausgeben


1001.00h Fehlerregister

Name | COP_ErrorRegister
Bezeichnung | Fehlerregister
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 127]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ErrorReg()
Querverweis | -

Beschreibung

Das Objekt liefert die Information über den Fehler zurück. Das CANopen Gerät schreibt den internen Fehler in dieses Objekt. Es ist ein Teil eines Emergency-Objektes.

Bitbelegung:
Bit | Bedeutung
0 | Generischer Fehler
1 | Strom
2 | Spannung
3 | Temperatur
4 | Fehler bei der Kommunikation
Wenn ein bestimmter Fehler auftritt, wird das entsprechende Bit auf 1 gesetzt. Der generische Fehler ist in jeder Fehlersituation gesetzt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

print "ErrorReg = ", hex(d.SdoRd(0x1001,0x00))  # Fehlerregister ausgeben


1002.00h Statusregister des Herstellers

Name | COP_ManufacturerStatusRegister
Bezeichnung | Statusregister des Herstellers
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ManufStatusReg()
Querverweis | -

Beschreibung

Das Objekt wird nicht verwendet und liefert immer 0 zurück.


1003.00h Vordefinierte Fehlerfeld - Anzahl der Fehler

Name | COP_PredefinedErrorField_NumberOfErrors
Bezeichnung | Vordefinierte Fehlerfeld - Anzahl der Fehler
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ErrorField(subindex)
Querverweis | COP_PredefinedErrorField_StandardErrorField1, COP_PredefinedErrorField_StandardErrorField2, COP_PredefinedErrorField_StandardErrorField3, COP_PredefinedErrorField_StandardErrorField4, COP_PredefinedErrorField_StandardErrorField5, COP_PredefinedErrorField_StandardErrorField6, COP_PredefinedErrorField_StandardErrorField7, COP_PredefinedErrorField_StandardErrorField8

Beschreibung

Das Objekt enthält die Liste der letzten aufgetretenen Fehler.
Subindex 0 zeigt die Anzahl der Fehler.
Subindex 1 bis 8 enthält die Fehler, die in dem CANopen Gerät aufgetreten sind und über das Emergency-Objekt signalisiert wurden.
Jeder neue Fehler wird in Subindex 01h gespeichert, die älteren Fehler werden jeweils nach hinten verschoben (LIFO ).
Beschreibt man Subindex 0 mit dem Wert 0, wird der Fehlerspeicher gelöscht. Andere Werte als 00h sind nicht erlaubt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                  # NodeId = 1

err_count = d.SdoRd(0x1003,0x00)
print "Error count =", err_count

for subindex in xrange(1,err_count+1):
   err_field = d.SdoRd(0x1003,subindex)

   print "Subindex:", subindex
   print "    Emergency error code    =", hex(err_field&0xffff)
   print "    Error register(3001.00h)=", hex((err_field >>16)&0xffff)


1003.01h Vordefinierte Fehlerfeld - Normal Fehlerfeld 1

Name | COP_PredefinedErrorField_StandardErrorField1
Bezeichnung | Vordefinierte Fehlerfeld - Normal Fehlerfeld 1
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ErrorField(subindex)
Querverweis | COP_PredefinedErrorField_NumberOfErrors

Beschreibung

Jeder neue Fehler ist in Subindex 01h gespeichert. Die ältere Fehler sind auf die nächste höhere Subindex verschoben. Die Anzahl der möglichen Subindexe ist 08h.

Die Fehlernummern bestehen aus einem 16-Bit Emergency Fehlercode (uint16, siehe Tabelle unten) und einer 16-Bit zusätzlichen Information (int16), die die gleiche Information wie der Paramter DEV_ErrorReg zurückliefert. Der Emergency Fehlercode ist in den unteren 2 Byte (LSB) und die zusätzliche Information in den oberen 2 Byte enthalten (MSB).
Structure of the pre-defined error field
Emergency Fehlercode:
Fehlercode | Beschreibung
0x0000 | Kein Fehler liegt vor.
0x1000 | Generischer Fehler
0x2000 | Strom
0x2100 | Strom, Eingangsseite des Geräts
0x2130 | Strom, Kurzschluss
0x2131 | Strom, Kurzschluss Phasen L1 - L2
0x2132 | Strom, Kurzschluss Phasen L2 - L3
0x2133 | Strom, Kurzschluss Phasen L3 - L1
0x2200 | Strom, im Inneren des Geräts
0x2211 | Interner Strom Nummer 1
0x2212 | Interner Strom Nummer 2
0x2300 | Strom, Ausgangsseite des Geräts
0x2310 | Ausgangstrom zu hoch
0x2320 | Kurzschluss am Ausgang
0x2330 | Load-Dump am Ausgang
0x3000 | Spannung
0x3100 | Electronikspannung
0x3110 | Electronikspannung zu groß
0x3120 | Electronikspannung zu klein
0x3200 | Leistungsspannung
0x3210 | Leistungsspannung zu groß
0x3211 | Überspannung Nummer 1
0x3212 | Überspannung Nummer 2
0x3220 | Leistungsspannung zu klein
0x3221 | Unterspannung Nummer 1
0x3222 | Unterspannung Nummer 2
0x3300 | Ausgangspannung
0x3310 | Ausgangsspannung zu groß
0x3320 | Ausgangsspannung zu klein
0x4000 | Temperatur
0x4200 | Temperatur des Geräts
0x4210 | Übertemperatur des Geräts
0x4220 | Zu niedrige Temperatur des Geräts
0x4300 | Temperatur der Endstufe
0x4310 | Übertemperatur der Endstufe
0x4320 | Zu niedrige Temperatur der Endstufe
0x5000 | Gerät - Hardware
0x5500 | Datenspeicher
0x5510 | Arbeitsspeicher
0x5520 | Programmspeicher
0x5530 | Nicht-flüchtiger Datenspeicher
0x6000 | Gerät - Software
0x6010 | Software-Reset (Watchdog)
0x6100 | Interne Software
0x6200 | Benutzer Software
0x6300 | Datensatz
0x6301 | Datensatz Nummer 1
0x630F | Datensatz Nummer 15
0x6310 | Verlust der Parameter
0x6320 | Parameterfehler
0x7000 | Zusätzliche Module
0x7300 | Sensor
0x7301 | Tacho - Fehler
0x7302 | Tacho - Verpolung
0x7303 | Resolver 1 - Fehler
0x7304 | Resolver 2 - Fehler
0x7305 | Inkrementaler Sensor 1 - Fehler
0x7306 | Inkrementaler Sensor 2 - Fehler
0x7307 | Inkrementaler Sensor 3 - Fehler
0x7310 | Drehzahl
0x7320 | Position
0x8000 | Monitoring
0x8100 | Kommunikation
0x8110 | CAN Overrun
0x8120 | CAN im passiven Modus
0x8130 | Guard-Fehler
0x8140 | Wiederhergestellt von Bus Off
0x8150 | Transmit COB-ID Kollision
0x8200 | Protokollfehler
0x8210 | PDO Länge - Fehler
0x8220 | PDO Länge überschritten
0x8600 | Positionierregler
0x8611 | Schleppabstand
0x8612 | Referenzgrenzwert
0x9000 | Externer Fehler

Beispiel

# -*- coding: iso-8859-1 -*-
import ctypes
from mc.dsa import *

d = Dsa(1)                                  # NodeId = 1

err_count = d.SdoRd(0x1003,0x00)
print "Error count =", err_count

for subindex in xrange(1,err_count+1):
   err_field = d.SdoRd(0x1003,subindex)

   print "Subindex:", subindex
   print "    Emergency error code    =", hex(err_field&0xffff)
   print "    Error register(3001.00h)=", hex((err_field >>16)&0xffff), ctypes.c_int16((err_field >>16)&0xffff).value


1003.02h Vordefinierte Fehlerfeld - Normal Fehlerfeld 2

Name | COP_PredefinedErrorField_StandardErrorField2
Bezeichnung | Vordefinierte Fehlerfeld - Normal Fehlerfeld 2
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ErrorField(subindex)
Querverweis | COP_PredefinedErrorField_NumberOfErrors

Beschreibung

Jeder neue Fehler ist in Subindex 01h gespeichert. Die ältere Fehler sind auf die nächste höhere Subindex verschoben. Die Anzahl der möglichen Subindexe ist 08h.

Die Fehlernummern bestehen aus einem 16-Bit Emergency Fehlercode (uint16, siehe Tabelle unten) und einer 16-Bit zusätzlichen Information (int16), die die gleiche Information wie der Paramter DEV_ErrorReg zurückliefert. Der Emergency Fehlercode ist in den unteren 2 Byte (LSB) und die zusätzliche Information in den oberen 2 Byte enthalten (MSB).
Structure of the pre-defined error field
Emergency Fehlercode:
Fehlercode | Beschreibung
0x0000 | Kein Fehler liegt vor.
0x1000 | Generischer Fehler
0x2000 | Strom
0x2100 | Strom, Eingangsseite des Geräts
0x2130 | Strom, Kurzschluss
0x2131 | Strom, Kurzschluss Phasen L1 - L2
0x2132 | Strom, Kurzschluss Phasen L2 - L3
0x2133 | Strom, Kurzschluss Phasen L3 - L1
0x2200 | Strom, im Inneren des Geräts
0x2211 | Interner Strom Nummer 1
0x2212 | Interner Strom Nummer 2
0x2300 | Strom, Ausgangsseite des Geräts
0x2310 | Ausgangstrom zu hoch
0x2320 | Kurzschluss am Ausgang
0x2330 | Load-Dump am Ausgang
0x3000 | Spannung
0x3100 | Electronikspannung
0x3110 | Electronikspannung zu groß
0x3120 | Electronikspannung zu klein
0x3200 | Leistungsspannung
0x3210 | Leistungsspannung zu groß
0x3211 | Überspannung Nummer 1
0x3212 | Überspannung Nummer 2
0x3220 | Leistungsspannung zu klein
0x3221 | Unterspannung Nummer 1
0x3222 | Unterspannung Nummer 2
0x3300 | Ausgangspannung
0x3310 | Ausgangsspannung zu groß
0x3320 | Ausgangsspannung zu klein
0x4000 | Temperatur
0x4200 | Temperatur des Geräts
0x4210 | Übertemperatur des Geräts
0x4220 | Zu niedrige Temperatur des Geräts
0x4300 | Temperatur der Endstufe
0x4310 | Übertemperatur der Endstufe
0x4320 | Zu niedrige Temperatur der Endstufe
0x5000 | Gerät - Hardware
0x5500 | Datenspeicher
0x5510 | Arbeitsspeicher
0x5520 | Programmspeicher
0x5530 | Nicht-flüchtiger Datenspeicher
0x6000 | Gerät - Software
0x6010 | Software-Reset (Watchdog)
0x6100 | Interne Software
0x6200 | Benutzer Software
0x6300 | Datensatz
0x6301 | Datensatz Nummer 1
0x630F | Datensatz Nummer 15
0x6310 | Verlust der Parameter
0x6320 | Parameterfehler
0x7000 | Zusätzliche Module
0x7300 | Sensor
0x7301 | Tacho - Fehler
0x7302 | Tacho - Verpolung
0x7303 | Resolver 1 - Fehler
0x7304 | Resolver 2 - Fehler
0x7305 | Inkrementaler Sensor 1 - Fehler
0x7306 | Inkrementaler Sensor 2 - Fehler
0x7307 | Inkrementaler Sensor 3 - Fehler
0x7310 | Drehzahl
0x7320 | Position
0x8000 | Monitoring
0x8100 | Kommunikation
0x8110 | CAN Overrun
0x8120 | CAN im passiven Modus
0x8130 | Guard-Fehler
0x8140 | Wiederhergestellt von Bus Off
0x8150 | Transmit COB-ID Kollision
0x8200 | Protokollfehler
0x8210 | PDO Länge - Fehler
0x8220 | PDO Länge überschritten
0x8600 | Positionierregler
0x8611 | Schleppabstand
0x8612 | Referenzgrenzwert
0x9000 | Externer Fehler

Beispiel

# -*- coding: iso-8859-1 -*-
import ctypes
from mc.dsa import *

d = Dsa(1)                                  # NodeId = 1

err_count = d.SdoRd(0x1003,0x00)
print "Error count =", err_count

for subindex in xrange(1,err_count+1):
   err_field = d.SdoRd(0x1003,subindex)

   print "Subindex:", subindex
   print "    Emergency error code    =", hex(err_field&0xffff)
   print "    Error register(3001.00h)=", hex((err_field >>16)&0xffff), ctypes.c_int16((err_field >>16)&0xffff).value


1003.03h Vordefinierte Fehlerfeld - Normal Fehlerfeld 3

Name | COP_PredefinedErrorField_StandardErrorField3
Bezeichnung | Vordefinierte Fehlerfeld - Normal Fehlerfeld 3
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ErrorField(subindex)
Querverweis | COP_PredefinedErrorField_NumberOfErrors

Beschreibung

Jeder neue Fehler ist in Subindex 01h gespeichert. Die ältere Fehler sind auf die nächste höhere Subindex verschoben. Die Anzahl der möglichen Subindexe ist 08h.

Die Fehlernummern bestehen aus einem 16-Bit Emergency Fehlercode (uint16, siehe Tabelle unten) und einer 16-Bit zusätzlichen Information (int16), die die gleiche Information wie der Paramter DEV_ErrorReg zurückliefert. Der Emergency Fehlercode ist in den unteren 2 Byte (LSB) und die zusätzliche Information in den oberen 2 Byte enthalten (MSB).
Structure of the pre-defined error field
Emergency Fehlercode:
Fehlercode | Beschreibung
0x0000 | Kein Fehler liegt vor.
0x1000 | Generischer Fehler
0x2000 | Strom
0x2100 | Strom, Eingangsseite des Geräts
0x2130 | Strom, Kurzschluss
0x2131 | Strom, Kurzschluss Phasen L1 - L2
0x2132 | Strom, Kurzschluss Phasen L2 - L3
0x2133 | Strom, Kurzschluss Phasen L3 - L1
0x2200 | Strom, im Inneren des Geräts
0x2211 | Interner Strom Nummer 1
0x2212 | Interner Strom Nummer 2
0x2300 | Strom, Ausgangsseite des Geräts
0x2310 | Ausgangstrom zu hoch
0x2320 | Kurzschluss am Ausgang
0x2330 | Load-Dump am Ausgang
0x3000 | Spannung
0x3100 | Electronikspannung
0x3110 | Electronikspannung zu groß
0x3120 | Electronikspannung zu klein
0x3200 | Leistungsspannung
0x3210 | Leistungsspannung zu groß
0x3211 | Überspannung Nummer 1
0x3212 | Überspannung Nummer 2
0x3220 | Leistungsspannung zu klein
0x3221 | Unterspannung Nummer 1
0x3222 | Unterspannung Nummer 2
0x3300 | Ausgangspannung
0x3310 | Ausgangsspannung zu groß
0x3320 | Ausgangsspannung zu klein
0x4000 | Temperatur
0x4200 | Temperatur des Geräts
0x4210 | Übertemperatur des Geräts
0x4220 | Zu niedrige Temperatur des Geräts
0x4300 | Temperatur der Endstufe
0x4310 | Übertemperatur der Endstufe
0x4320 | Zu niedrige Temperatur der Endstufe
0x5000 | Gerät - Hardware
0x5500 | Datenspeicher
0x5510 | Arbeitsspeicher
0x5520 | Programmspeicher
0x5530 | Nicht-flüchtiger Datenspeicher
0x6000 | Gerät - Software
0x6010 | Software-Reset (Watchdog)
0x6100 | Interne Software
0x6200 | Benutzer Software
0x6300 | Datensatz
0x6301 | Datensatz Nummer 1
0x630F | Datensatz Nummer 15
0x6310 | Verlust der Parameter
0x6320 | Parameterfehler
0x7000 | Zusätzliche Module
0x7300 | Sensor
0x7301 | Tacho - Fehler
0x7302 | Tacho - Verpolung
0x7303 | Resolver 1 - Fehler
0x7304 | Resolver 2 - Fehler
0x7305 | Inkrementaler Sensor 1 - Fehler
0x7306 | Inkrementaler Sensor 2 - Fehler
0x7307 | Inkrementaler Sensor 3 - Fehler
0x7310 | Drehzahl
0x7320 | Position
0x8000 | Monitoring
0x8100 | Kommunikation
0x8110 | CAN Overrun
0x8120 | CAN im passiven Modus
0x8130 | Guard-Fehler
0x8140 | Wiederhergestellt von Bus Off
0x8150 | Transmit COB-ID Kollision
0x8200 | Protokollfehler
0x8210 | PDO Länge - Fehler
0x8220 | PDO Länge überschritten
0x8600 | Positionierregler
0x8611 | Schleppabstand
0x8612 | Referenzgrenzwert
0x9000 | Externer Fehler

Beispiel

# -*- coding: iso-8859-1 -*-
import ctypes
from mc.dsa import *

d = Dsa(1)                                  # NodeId = 1

err_count = d.SdoRd(0x1003,0x00)
print "Error count =", err_count

for subindex in xrange(1,err_count+1):
   err_field = d.SdoRd(0x1003,subindex)

   print "Subindex:", subindex
   print "    Emergency error code    =", hex(err_field&0xffff)
   print "    Error register(3001.00h)=", hex((err_field >>16)&0xffff), ctypes.c_int16((err_field >>16)&0xffff).value


1003.04h Vordefinierte Fehlerfeld - Normal Fehlerfeld 4

Name | COP_PredefinedErrorField_StandardErrorField4
Bezeichnung | Vordefinierte Fehlerfeld - Normal Fehlerfeld 4
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ErrorField(subindex)
Querverweis | COP_PredefinedErrorField_NumberOfErrors

Beschreibung

Jeder neue Fehler ist in Subindex 01h gespeichert. Die ältere Fehler sind auf die nächste höhere Subindex verschoben. Die Anzahl der möglichen Subindexe ist 08h.

Die Fehlernummern bestehen aus einem 16-Bit Emergency Fehlercode (uint16, siehe Tabelle unten) und einer 16-Bit zusätzlichen Information (int16), die die gleiche Information wie der Paramter DEV_ErrorReg zurückliefert. Der Emergency Fehlercode ist in den unteren 2 Byte (LSB) und die zusätzliche Information in den oberen 2 Byte enthalten (MSB).
Structure of the pre-defined error field
Emergency Fehlercode:
Fehlercode | Beschreibung
0x0000 | Kein Fehler liegt vor.
0x1000 | Generischer Fehler
0x2000 | Strom
0x2100 | Strom, Eingangsseite des Geräts
0x2130 | Strom, Kurzschluss
0x2131 | Strom, Kurzschluss Phasen L1 - L2
0x2132 | Strom, Kurzschluss Phasen L2 - L3
0x2133 | Strom, Kurzschluss Phasen L3 - L1
0x2200 | Strom, im Inneren des Geräts
0x2211 | Interner Strom Nummer 1
0x2212 | Interner Strom Nummer 2
0x2300 | Strom, Ausgangsseite des Geräts
0x2310 | Ausgangstrom zu hoch
0x2320 | Kurzschluss am Ausgang
0x2330 | Load-Dump am Ausgang
0x3000 | Spannung
0x3100 | Electronikspannung
0x3110 | Electronikspannung zu groß
0x3120 | Electronikspannung zu klein
0x3200 | Leistungsspannung
0x3210 | Leistungsspannung zu groß
0x3211 | Überspannung Nummer 1
0x3212 | Überspannung Nummer 2
0x3220 | Leistungsspannung zu klein
0x3221 | Unterspannung Nummer 1
0x3222 | Unterspannung Nummer 2
0x3300 | Ausgangspannung
0x3310 | Ausgangsspannung zu groß
0x3320 | Ausgangsspannung zu klein
0x4000 | Temperatur
0x4200 | Temperatur des Geräts
0x4210 | Übertemperatur des Geräts
0x4220 | Zu niedrige Temperatur des Geräts
0x4300 | Temperatur der Endstufe
0x4310 | Übertemperatur der Endstufe
0x4320 | Zu niedrige Temperatur der Endstufe
0x5000 | Gerät - Hardware
0x5500 | Datenspeicher
0x5510 | Arbeitsspeicher
0x5520 | Programmspeicher
0x5530 | Nicht-flüchtiger Datenspeicher
0x6000 | Gerät - Software
0x6010 | Software-Reset (Watchdog)
0x6100 | Interne Software
0x6200 | Benutzer Software
0x6300 | Datensatz
0x6301 | Datensatz Nummer 1
0x630F | Datensatz Nummer 15
0x6310 | Verlust der Parameter
0x6320 | Parameterfehler
0x7000 | Zusätzliche Module
0x7300 | Sensor
0x7301 | Tacho - Fehler
0x7302 | Tacho - Verpolung
0x7303 | Resolver 1 - Fehler
0x7304 | Resolver 2 - Fehler
0x7305 | Inkrementaler Sensor 1 - Fehler
0x7306 | Inkrementaler Sensor 2 - Fehler
0x7307 | Inkrementaler Sensor 3 - Fehler
0x7310 | Drehzahl
0x7320 | Position
0x8000 | Monitoring
0x8100 | Kommunikation
0x8110 | CAN Overrun
0x8120 | CAN im passiven Modus
0x8130 | Guard-Fehler
0x8140 | Wiederhergestellt von Bus Off
0x8150 | Transmit COB-ID Kollision
0x8200 | Protokollfehler
0x8210 | PDO Länge - Fehler
0x8220 | PDO Länge überschritten
0x8600 | Positionierregler
0x8611 | Schleppabstand
0x8612 | Referenzgrenzwert
0x9000 | Externer Fehler

Beispiel

# -*- coding: iso-8859-1 -*-
import ctypes
from mc.dsa import *

d = Dsa(1)                                  # NodeId = 1

err_count = d.SdoRd(0x1003,0x00)
print "Error count =", err_count

for subindex in xrange(1,err_count+1):
   err_field = d.SdoRd(0x1003,subindex)

   print "Subindex:", subindex
   print "    Emergency error code    =", hex(err_field&0xffff)
   print "    Error register(3001.00h)=", hex((err_field >>16)&0xffff), ctypes.c_int16((err_field >>16)&0xffff).value


1003.05h Vordefinierte Fehlerfeld - Normal Fehlerfeld 5

Name | COP_PredefinedErrorField_StandardErrorField5
Bezeichnung | Vordefinierte Fehlerfeld - Normal Fehlerfeld 5
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ErrorField(subindex)
Querverweis | COP_PredefinedErrorField_NumberOfErrors

Beschreibung

Jeder neue Fehler ist in Subindex 01h gespeichert. Die ältere Fehler sind auf die nächste höhere Subindex verschoben. Die Anzahl der möglichen Subindexe ist 08h.

Die Fehlernummern bestehen aus einem 16-Bit Emergency Fehlercode (uint16, siehe Tabelle unten) und einer 16-Bit zusätzlichen Information (int16), die die gleiche Information wie der Paramter DEV_ErrorReg zurückliefert. Der Emergency Fehlercode ist in den unteren 2 Byte (LSB) und die zusätzliche Information in den oberen 2 Byte enthalten (MSB).
Structure of the pre-defined error field
Emergency Fehlercode:
Fehlercode | Beschreibung
0x0000 | Kein Fehler liegt vor.
0x1000 | Generischer Fehler
0x2000 | Strom
0x2100 | Strom, Eingangsseite des Geräts
0x2130 | Strom, Kurzschluss
0x2131 | Strom, Kurzschluss Phasen L1 - L2
0x2132 | Strom, Kurzschluss Phasen L2 - L3
0x2133 | Strom, Kurzschluss Phasen L3 - L1
0x2200 | Strom, im Inneren des Geräts
0x2211 | Interner Strom Nummer 1
0x2212 | Interner Strom Nummer 2
0x2300 | Strom, Ausgangsseite des Geräts
0x2310 | Ausgangstrom zu hoch
0x2320 | Kurzschluss am Ausgang
0x2330 | Load-Dump am Ausgang
0x3000 | Spannung
0x3100 | Electronikspannung
0x3110 | Electronikspannung zu groß
0x3120 | Electronikspannung zu klein
0x3200 | Leistungsspannung
0x3210 | Leistungsspannung zu groß
0x3211 | Überspannung Nummer 1
0x3212 | Überspannung Nummer 2
0x3220 | Leistungsspannung zu klein
0x3221 | Unterspannung Nummer 1
0x3222 | Unterspannung Nummer 2
0x3300 | Ausgangspannung
0x3310 | Ausgangsspannung zu groß
0x3320 | Ausgangsspannung zu klein
0x4000 | Temperatur
0x4200 | Temperatur des Geräts
0x4210 | Übertemperatur des Geräts
0x4220 | Zu niedrige Temperatur des Geräts
0x4300 | Temperatur der Endstufe
0x4310 | Übertemperatur der Endstufe
0x4320 | Zu niedrige Temperatur der Endstufe
0x5000 | Gerät - Hardware
0x5500 | Datenspeicher
0x5510 | Arbeitsspeicher
0x5520 | Programmspeicher
0x5530 | Nicht-flüchtiger Datenspeicher
0x6000 | Gerät - Software
0x6010 | Software-Reset (Watchdog)
0x6100 | Interne Software
0x6200 | Benutzer Software
0x6300 | Datensatz
0x6301 | Datensatz Nummer 1
0x630F | Datensatz Nummer 15
0x6310 | Verlust der Parameter
0x6320 | Parameterfehler
0x7000 | Zusätzliche Module
0x7300 | Sensor
0x7301 | Tacho - Fehler
0x7302 | Tacho - Verpolung
0x7303 | Resolver 1 - Fehler
0x7304 | Resolver 2 - Fehler
0x7305 | Inkrementaler Sensor 1 - Fehler
0x7306 | Inkrementaler Sensor 2 - Fehler
0x7307 | Inkrementaler Sensor 3 - Fehler
0x7310 | Drehzahl
0x7320 | Position
0x8000 | Monitoring
0x8100 | Kommunikation
0x8110 | CAN Overrun
0x8120 | CAN im passiven Modus
0x8130 | Guard-Fehler
0x8140 | Wiederhergestellt von Bus Off
0x8150 | Transmit COB-ID Kollision
0x8200 | Protokollfehler
0x8210 | PDO Länge - Fehler
0x8220 | PDO Länge überschritten
0x8600 | Positionierregler
0x8611 | Schleppabstand
0x8612 | Referenzgrenzwert
0x9000 | Externer Fehler

Beispiel

# -*- coding: iso-8859-1 -*-
import ctypes
from mc.dsa import *

d = Dsa(1)                                  # NodeId = 1

err_count = d.SdoRd(0x1003,0x00)
print "Error count =", err_count

for subindex in xrange(1,err_count+1):
   err_field = d.SdoRd(0x1003,subindex)

   print "Subindex:", subindex
   print "    Emergency error code    =", hex(err_field&0xffff)
   print "    Error register(3001.00h)=", hex((err_field >>16)&0xffff), ctypes.c_int16((err_field >>16)&0xffff).value


1003.06h Vordefinierte Fehlerfeld - Normal Fehlerfeld 6

Name | COP_PredefinedErrorField_StandardErrorField6
Bezeichnung | Vordefinierte Fehlerfeld - Normal Fehlerfeld 6
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ErrorField(subindex)
Querverweis | COP_PredefinedErrorField_NumberOfErrors

Beschreibung

Jeder neue Fehler ist in Subindex 01h gespeichert. Die ältere Fehler sind auf die nächste höhere Subindex verschoben. Die Anzahl der möglichen Subindexe ist 08h.

Die Fehlernummern bestehen aus einem 16-Bit Emergency Fehlercode (uint16, siehe Tabelle unten) und einer 16-Bit zusätzlichen Information (int16), die die gleiche Information wie der Paramter DEV_ErrorReg zurückliefert. Der Emergency Fehlercode ist in den unteren 2 Byte (LSB) und die zusätzliche Information in den oberen 2 Byte enthalten (MSB).
Structure of the pre-defined error field
Emergency Fehlercode:
Fehlercode | Beschreibung
0x0000 | Kein Fehler liegt vor.
0x1000 | Generischer Fehler
0x2000 | Strom
0x2100 | Strom, Eingangsseite des Geräts
0x2130 | Strom, Kurzschluss
0x2131 | Strom, Kurzschluss Phasen L1 - L2
0x2132 | Strom, Kurzschluss Phasen L2 - L3
0x2133 | Strom, Kurzschluss Phasen L3 - L1
0x2200 | Strom, im Inneren des Geräts
0x2211 | Interner Strom Nummer 1
0x2212 | Interner Strom Nummer 2
0x2300 | Strom, Ausgangsseite des Geräts
0x2310 | Ausgangstrom zu hoch
0x2320 | Kurzschluss am Ausgang
0x2330 | Load-Dump am Ausgang
0x3000 | Spannung
0x3100 | Electronikspannung
0x3110 | Electronikspannung zu groß
0x3120 | Electronikspannung zu klein
0x3200 | Leistungsspannung
0x3210 | Leistungsspannung zu groß
0x3211 | Überspannung Nummer 1
0x3212 | Überspannung Nummer 2
0x3220 | Leistungsspannung zu klein
0x3221 | Unterspannung Nummer 1
0x3222 | Unterspannung Nummer 2
0x3300 | Ausgangspannung
0x3310 | Ausgangsspannung zu groß
0x3320 | Ausgangsspannung zu klein
0x4000 | Temperatur
0x4200 | Temperatur des Geräts
0x4210 | Übertemperatur des Geräts
0x4220 | Zu niedrige Temperatur des Geräts
0x4300 | Temperatur der Endstufe
0x4310 | Übertemperatur der Endstufe
0x4320 | Zu niedrige Temperatur der Endstufe
0x5000 | Gerät - Hardware
0x5500 | Datenspeicher
0x5510 | Arbeitsspeicher
0x5520 | Programmspeicher
0x5530 | Nicht-flüchtiger Datenspeicher
0x6000 | Gerät - Software
0x6010 | Software-Reset (Watchdog)
0x6100 | Interne Software
0x6200 | Benutzer Software
0x6300 | Datensatz
0x6301 | Datensatz Nummer 1
0x630F | Datensatz Nummer 15
0x6310 | Verlust der Parameter
0x6320 | Parameterfehler
0x7000 | Zusätzliche Module
0x7300 | Sensor
0x7301 | Tacho - Fehler
0x7302 | Tacho - Verpolung
0x7303 | Resolver 1 - Fehler
0x7304 | Resolver 2 - Fehler
0x7305 | Inkrementaler Sensor 1 - Fehler
0x7306 | Inkrementaler Sensor 2 - Fehler
0x7307 | Inkrementaler Sensor 3 - Fehler
0x7310 | Drehzahl
0x7320 | Position
0x8000 | Monitoring
0x8100 | Kommunikation
0x8110 | CAN Overrun
0x8120 | CAN im passiven Modus
0x8130 | Guard-Fehler
0x8140 | Wiederhergestellt von Bus Off
0x8150 | Transmit COB-ID Kollision
0x8200 | Protokollfehler
0x8210 | PDO Länge - Fehler
0x8220 | PDO Länge überschritten
0x8600 | Positionierregler
0x8611 | Schleppabstand
0x8612 | Referenzgrenzwert
0x9000 | Externer Fehler

Beispiel

# -*- coding: iso-8859-1 -*-
import ctypes
from mc.dsa import *

d = Dsa(1)                                  # NodeId = 1

err_count = d.SdoRd(0x1003,0x00)
print "Error count =", err_count

for subindex in xrange(1,err_count+1):
   err_field = d.SdoRd(0x1003,subindex)

   print "Subindex:", subindex
   print "    Emergency error code    =", hex(err_field&0xffff)
   print "    Error register(3001.00h)=", hex((err_field >>16)&0xffff), ctypes.c_int16((err_field >>16)&0xffff).value


1003.07h Vordefinierte Fehlerfeld - Normal Fehlerfeld 7

Name | COP_PredefinedErrorField_StandardErrorField7
Bezeichnung | Vordefinierte Fehlerfeld - Normal Fehlerfeld 7
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ErrorField(subindex)
Querverweis | COP_PredefinedErrorField_NumberOfErrors

Beschreibung

Jeder neue Fehler ist in Subindex 01h gespeichert. Die ältere Fehler sind auf die nächste höhere Subindex verschoben. Die Anzahl der möglichen Subindexe ist 08h.

Die Fehlernummern bestehen aus einem 16-Bit Emergency Fehlercode (uint16, siehe Tabelle unten) und einer 16-Bit zusätzlichen Information (int16), die die gleiche Information wie der Paramter DEV_ErrorReg zurückliefert. Der Emergency Fehlercode ist in den unteren 2 Byte (LSB) und die zusätzliche Information in den oberen 2 Byte enthalten (MSB).
Structure of the pre-defined error field
Emergency Fehlercode:
Fehlercode | Beschreibung
0x0000 | Kein Fehler liegt vor.
0x1000 | Generischer Fehler
0x2000 | Strom
0x2100 | Strom, Eingangsseite des Geräts
0x2130 | Strom, Kurzschluss
0x2131 | Strom, Kurzschluss Phasen L1 - L2
0x2132 | Strom, Kurzschluss Phasen L2 - L3
0x2133 | Strom, Kurzschluss Phasen L3 - L1
0x2200 | Strom, im Inneren des Geräts
0x2211 | Interner Strom Nummer 1
0x2212 | Interner Strom Nummer 2
0x2300 | Strom, Ausgangsseite des Geräts
0x2310 | Ausgangstrom zu hoch
0x2320 | Kurzschluss am Ausgang
0x2330 | Load-Dump am Ausgang
0x3000 | Spannung
0x3100 | Electronikspannung
0x3110 | Electronikspannung zu groß
0x3120 | Electronikspannung zu klein
0x3200 | Leistungsspannung
0x3210 | Leistungsspannung zu groß
0x3211 | Überspannung Nummer 1
0x3212 | Überspannung Nummer 2
0x3220 | Leistungsspannung zu klein
0x3221 | Unterspannung Nummer 1
0x3222 | Unterspannung Nummer 2
0x3300 | Ausgangspannung
0x3310 | Ausgangsspannung zu groß
0x3320 | Ausgangsspannung zu klein
0x4000 | Temperatur
0x4200 | Temperatur des Geräts
0x4210 | Übertemperatur des Geräts
0x4220 | Zu niedrige Temperatur des Geräts
0x4300 | Temperatur der Endstufe
0x4310 | Übertemperatur der Endstufe
0x4320 | Zu niedrige Temperatur der Endstufe
0x5000 | Gerät - Hardware
0x5500 | Datenspeicher
0x5510 | Arbeitsspeicher
0x5520 | Programmspeicher
0x5530 | Nicht-flüchtiger Datenspeicher
0x6000 | Gerät - Software
0x6010 | Software-Reset (Watchdog)
0x6100 | Interne Software
0x6200 | Benutzer Software
0x6300 | Datensatz
0x6301 | Datensatz Nummer 1
0x630F | Datensatz Nummer 15
0x6310 | Verlust der Parameter
0x6320 | Parameterfehler
0x7000 | Zusätzliche Module
0x7300 | Sensor
0x7301 | Tacho - Fehler
0x7302 | Tacho - Verpolung
0x7303 | Resolver 1 - Fehler
0x7304 | Resolver 2 - Fehler
0x7305 | Inkrementaler Sensor 1 - Fehler
0x7306 | Inkrementaler Sensor 2 - Fehler
0x7307 | Inkrementaler Sensor 3 - Fehler
0x7310 | Drehzahl
0x7320 | Position
0x8000 | Monitoring
0x8100 | Kommunikation
0x8110 | CAN Overrun
0x8120 | CAN im passiven Modus
0x8130 | Guard-Fehler
0x8140 | Wiederhergestellt von Bus Off
0x8150 | Transmit COB-ID Kollision
0x8200 | Protokollfehler
0x8210 | PDO Länge - Fehler
0x8220 | PDO Länge überschritten
0x8600 | Positionierregler
0x8611 | Schleppabstand
0x8612 | Referenzgrenzwert
0x9000 | Externer Fehler

Beispiel

# -*- coding: iso-8859-1 -*-
import ctypes
from mc.dsa import *

d = Dsa(1)                                  # NodeId = 1

err_count = d.SdoRd(0x1003,0x00)
print "Error count =", err_count

for subindex in xrange(1,err_count+1):
   err_field = d.SdoRd(0x1003,subindex)

   print "Subindex:", subindex
   print "    Emergency error code    =", hex(err_field&0xffff)
   print "    Error register(3001.00h)=", hex((err_field >>16)&0xffff), ctypes.c_int16((err_field >>16)&0xffff).value


1003.08h Vordefinierte Fehlerfeld - Normal Fehlerfeld 8

Name | COP_PredefinedErrorField_StandardErrorField8
Bezeichnung | Vordefinierte Fehlerfeld - Normal Fehlerfeld 8
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ErrorField(subindex)
Querverweis | COP_PredefinedErrorField_NumberOfErrors

Beschreibung

Jeder neue Fehler ist in Subindex 01h gespeichert. Die ältere Fehler sind auf die nächste höhere Subindex verschoben. Die Anzahl der möglichen Subindexe ist 08h.

Die Fehlernummern bestehen aus einem 16-Bit Emergency Fehlercode (uint16, siehe Tabelle unten) und einer 16-Bit zusätzlichen Information (int16), die die gleiche Information wie der Paramter DEV_ErrorReg zurückliefert. Der Emergency Fehlercode ist in den unteren 2 Byte (LSB) und die zusätzliche Information in den oberen 2 Byte enthalten (MSB).
Structure of the pre-defined error field
Emergency Fehlercode:
Fehlercode | Beschreibung
0x0000 | Kein Fehler liegt vor.
0x1000 | Generischer Fehler
0x2000 | Strom
0x2100 | Strom, Eingangsseite des Geräts
0x2130 | Strom, Kurzschluss
0x2131 | Strom, Kurzschluss Phasen L1 - L2
0x2132 | Strom, Kurzschluss Phasen L2 - L3
0x2133 | Strom, Kurzschluss Phasen L3 - L1
0x2200 | Strom, im Inneren des Geräts
0x2211 | Interner Strom Nummer 1
0x2212 | Interner Strom Nummer 2
0x2300 | Strom, Ausgangsseite des Geräts
0x2310 | Ausgangstrom zu hoch
0x2320 | Kurzschluss am Ausgang
0x2330 | Load-Dump am Ausgang
0x3000 | Spannung
0x3100 | Electronikspannung
0x3110 | Electronikspannung zu groß
0x3120 | Electronikspannung zu klein
0x3200 | Leistungsspannung
0x3210 | Leistungsspannung zu groß
0x3211 | Überspannung Nummer 1
0x3212 | Überspannung Nummer 2
0x3220 | Leistungsspannung zu klein
0x3221 | Unterspannung Nummer 1
0x3222 | Unterspannung Nummer 2
0x3300 | Ausgangspannung
0x3310 | Ausgangsspannung zu groß
0x3320 | Ausgangsspannung zu klein
0x4000 | Temperatur
0x4200 | Temperatur des Geräts
0x4210 | Übertemperatur des Geräts
0x4220 | Zu niedrige Temperatur des Geräts
0x4300 | Temperatur der Endstufe
0x4310 | Übertemperatur der Endstufe
0x4320 | Zu niedrige Temperatur der Endstufe
0x5000 | Gerät - Hardware
0x5500 | Datenspeicher
0x5510 | Arbeitsspeicher
0x5520 | Programmspeicher
0x5530 | Nicht-flüchtiger Datenspeicher
0x6000 | Gerät - Software
0x6010 | Software-Reset (Watchdog)
0x6100 | Interne Software
0x6200 | Benutzer Software
0x6300 | Datensatz
0x6301 | Datensatz Nummer 1
0x630F | Datensatz Nummer 15
0x6310 | Verlust der Parameter
0x6320 | Parameterfehler
0x7000 | Zusätzliche Module
0x7300 | Sensor
0x7301 | Tacho - Fehler
0x7302 | Tacho - Verpolung
0x7303 | Resolver 1 - Fehler
0x7304 | Resolver 2 - Fehler
0x7305 | Inkrementaler Sensor 1 - Fehler
0x7306 | Inkrementaler Sensor 2 - Fehler
0x7307 | Inkrementaler Sensor 3 - Fehler
0x7310 | Drehzahl
0x7320 | Position
0x8000 | Monitoring
0x8100 | Kommunikation
0x8110 | CAN Overrun
0x8120 | CAN im passiven Modus
0x8130 | Guard-Fehler
0x8140 | Wiederhergestellt von Bus Off
0x8150 | Transmit COB-ID Kollision
0x8200 | Protokollfehler
0x8210 | PDO Länge - Fehler
0x8220 | PDO Länge überschritten
0x8600 | Positionierregler
0x8611 | Schleppabstand
0x8612 | Referenzgrenzwert
0x9000 | Externer Fehler

Beispiel

# -*- coding: iso-8859-1 -*-
import ctypes
from mc.dsa import *

d = Dsa(1)                                  # NodeId = 1

err_count = d.SdoRd(0x1003,0x00)
print "Error count =", err_count

for subindex in xrange(1,err_count+1):
   err_field = d.SdoRd(0x1003,subindex)

   print "Subindex:", subindex
   print "    Emergency error code    =", hex(err_field&0xffff)
   print "    Error register(3001.00h)=", hex((err_field >>16)&0xffff), ctypes.c_int16((err_field >>16)&0xffff).value


1005.00h COB-ID SYNC

Name | COP_CobId_Sync
Bezeichnung | COB-ID SYNC
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000080h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SyncMsgCobId(cob_id)
Querverweis | COP_CommunicationCyclePeriod,

Beschreibung

Das Objekt beinhaltet die konfigurierte COB-ID vom Synchronisations Objekt (SYNC). Weiter wird festgelegt, ob das Gerät selbst SYNC-Messages erzeugen kann.
Folgendes Bild zeigt die Struktur des Objektes.

Structure of SYNC COB-ID

Beschreibung des SYNC COB-ID:
Bit | Wert | Beschreibung
x | x | nicht verwendet
gen. | 0b | Bit ist nicht änderbar. Zum Erzeugen von SYNC Messages siehe Parameter 2021.01h (Beschreibung unten).
frame | 0b 1b | 11-bit CAN-ID verwendet (CAN base frame) 29-bit CAN-ID verwendet (CAN extended frame)
29-bit CAN-ID | x | 29-bit CAN-ID des CAN extended frame
11-bit CAN-ID | x | 11-bit CAN-ID des CAN base frame
Bit 30 (gen.) ist fest (nicht änderbar). Beim Versuch Bit 30 zu setzen auf 1b, wird der SDO-Befehl mit Abbruch und folgendem Code beendet: (abort code: 0609 0030h).
Das Senden einer SYNC Message startet innerhalb eines Sync-Zyklus nach Setzen vom Parameter 2021.01h = 1.
Zum Beenden der SYNC Übertragung, setze den Parameter 2021.01h = 0.
Es ist nich zulässig 0 bis 29 zu ändern, wenn der Parameter 2021.01h = 1 .

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                   # NodeId = 1

print "SYNC COB-ID:", d.SdoRd(0x1005,0x00)   # actual cob-id
d.SdoWr(0x1005,0x00,0x81)                    # COP_CobId_Sync - set the new cob-id
d.SdoWr(0x1006,0x00,1000000)                 # COP_CommunicationCyclePeriod - SYNC interval - 1s
d.SdoWr(0x2021,0x01,1)                       # DS2000_SyncProducer_Enable - device generates SYNC-MSG


1006.00h Zykluszeit der Kommunikation

Name | COP_CommunicationCyclePeriod
Bezeichnung | Zykluszeit der Kommunikation
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.32
Geräte | Alle
PLC Funktion | -
Querverweis | COP_CobId_Sync,

Beschreibung

Das Objekt setzt das Interval der SYNC-Message (communication cycle period) oder dient der Taktsynchronisation

Der Wert hat die Auflösung von 1000 μs, das heißt folgendende Werte sind möglich: 1000 μs, 2000 μs, 3000 μs, ....etc
Ist der Wert = 0, wird die Übertragung der SYNC-Message abgeschaltet.

Zwei Varianten sind möglich:

1. Das Gerät arbeitet als Producer (Parameter 2021.01 = 1):
Das Gerät sendet zyklisch SYNC Messages (COB Id 0x80) , im Intervall, welches hier eingestellt wird.

2. Das Gerät arbeitet als Consumer (Parameter 2021.01 =0 ):
Das Gerät synchronisiert den internen Clock mit dem SYNC des Producers.
Das kann zur Synchronisation der Taktfequenzen meherer CAN Teilnehmer am Bus verwendet werden, beispielsweise im Interpoaltionsmode

Wichtig !!! Das Kommunikations-Intervall (communication cycle period ) des Consumers muss gleich sein mit dem Intervall des Producers.
Bei falschen Werten wird der interne Clock verstellt, allerdings mit einer Begrenzung von +/- 10% des normalen internen Clocks.
Das bedeutet beispielsweise, dass die Geschwindigkeit des Antriebs sich um +/- 10% vestellt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                   # NodeId = 1

print "SYNC COB-ID:", d.SdoRd(0x1005,0x00)   # actual cob-id
d.SdoWr(0x1005,0x00,0x81)                    # COP_CobId_Sync - set the new cob-id
d.SdoWr(0x1006,0x00,1000000)                 # COP_CommunicationCyclePeriod - SYNC interval - 1s
d.SdoWr(0x2021,0x01,1)                       # DS2000_SyncProducer_Enable - device generates SYNC-MSG


1008.00h Gerätename des Herstellers

Name | COP_ManufacturerDeviceName
Bezeichnung | Gerätename des Herstellers
Datentyp | visible string
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ManufDeviceName()
Querverweis | -

Beschreibung

Das Objekt liefert den Namen des Gerätes zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                  # NodeId = 1

name = d.SdoRd(0x1008,0x00)
name_string = ''

for i in xrange(0,4):
    name_string += chr((name>>i*8)&0xFF)

print "Device name (hex):", hex(name)
print "Device name (str):", name_string


1009.00h Hardwareversion des Herstellers

Name | COP_ManufacturerHardwareVersion
Bezeichnung | Hardwareversion des Herstellers
Datentyp | visible string
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ManufHwVer()
Querverweis | -

Beschreibung

Das Objekt liefert die Hardwareversion des Gerätes zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                  # NodeId = 1

hw_version = d.SdoRd(0x1009,0x00)
hw_version_string = ''

for i in xrange(0,4):
    hw_version_string += chr((hw_version>>i*8)&0xFF)

print "Hardware version(hex):", hex(hw_version)
print "Hardware version(str):", hw_version_string


100A.00h Softwareversion des Herstellers

Name | COP_ManufacturerSoftwareVersion
Bezeichnung | Softwareversion des Herstellers
Datentyp | visible string
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ManufSwVer()
Querverweis | -

Beschreibung

Das Objekt liefert die Softwareversion des Gerätes zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                  # NodeId = 1

sw_version = d.SdoRd(0x100A,0x00)
sw_version_string = ''

for i in xrange(0,4):
    sw_version_string += chr((sw_version>>i*8)&0xFF)

print "Software version(hex):", hex(sw_version)
print "Software version(str):", sw_version_string


100C.00h Überwachungszeit

Name | COP_GuardTime
Bezeichnung | Überwachungszeit
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | GuardTime(time_ms)
Querverweis | COP_LifeTimeFactor

Beschreibung

Der Zeitfaktor multipliziert mit der Guarding Time ergibt die Überwachungszeit für das Life Guarding Protokoll.
Der Wert wird angegeben in ms. Der Wert 0 schaltet die Überwachung und das Guarding Protokoll ab.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

print "Guard time      ", d.SdoRd(0x100C,0x00)  # Abfrage
print "Life time factor", d.SdoRd(0x100D,0x00)  # Abfrage

d.SdoWr(0x100C,0x00,10)                         # neuer Wert
d.SdoWr(0x100D,0x00,10)                         # neuer Wert


100D.00h Überwachungszeitfaktor

Name | COP_LifeTimeFactor
Bezeichnung | Überwachungszeitfaktor
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 255]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | LifeTimeFactor(factor)
Querverweis | COP_GuardTime

Beschreibung

Der Zeitfaktor multipliziert mit der Guarding Time ergibt die Überwachungszeit für das Life Guarding Protokoll.
Der Wert 0 schaltet das Guarding ab.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

print "Guard time      ", d.SdoRd(0x100C,0x00)  # Abfrage
print "Life time factor", d.SdoRd(0x100D,0x00)  # Abfrage

d.SdoWr(0x100C,0x00,10)                         # neuer Wert
d.SdoWr(0x100D,0x00,10)                         # neuer Wert


100E.00h COB-ID Node und Life Guarding

Name | COP_CobId_Guarding
Bezeichnung | COB-ID Node und Life Guarding
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [0000h .. FFFFFFFFh]
Defaultwert | 0700h + NodeId
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | EmcyCobId(cob_id)
Querverweis | -

Beschreibung

Das Objekt legt die COB-ID vom Guarding fest. Der Aufbau ist unten beschrieben..

Datenstruktur:

Beschreibung der Daten:

Bit(s) | Value | Description
31 | 0b | Reserviert
30 | 0b | Reserviert
29 | 0b 1b | 11-bit CAN-ID aktiv (CAN base frame) 29-bit CAN-ID aktiv (CAN extended frame)
11...28 | x | 29-bit CAN-ID of the CAN extended frame
0..10 | x | 11-bit CAN-ID of the CAN base frame
Die Bits 30 und 31 sind nicht änderbar.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

print "Emcy COB-ID:", hex(d.SdoRd(0x1014,0x00)) # Abfrage

new_cob_id = 0x82

d.SdoWr(0x1014,0x00,new_cob_id |  0x80000000)   # Emergency Message - disable
d.SdoWr(0x1014,0x00,new_cob_id & ~0x80000000)   # neue CobId für Emergency Nachricht


Inhalt - Parameter 1000h (DS301) - Parameterspeicher

1010.00h | COP_StoreParameters_HighestSubindexSupported | Parameterspeicher - Höchster unterstützter Subindex
1010.01h | COP_StoreParameters_All | Parameterspeicher - Alle Parameter speichern
1010.02h | COP_StoreParameters_Communication | Parameterspeicher - Kommunikationsparameter speichern
1010.03h | COP_StoreParameters_Application | Parameterspeicher - Applikationsparameter speichern
1010.05h | COP_StoreParameters_Manufacturer_0x2000 | Parameterspeicher - Herstellersparameter speichern (Bereich 0x2000-0x2FFF)
1010.06h | COP_StoreParameters_Manufacturer_0x3000 | Parameterspeicher - Herstellersparameter speichern (Bereich 0x3000-0x3FFF)


1010.00h Parameterspeicher - Höchster unterstützter Subindex

Name | COP_StoreParameters_HighestSubindexSupported
Bezeichnung | Parameterspeicher - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 06h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_StoreParameters_All, COP_StoreParameters_Communication, COP_StoreParameters_Application, COP_StoreParameters_Manufacturer_0x2000, COP_StoreParameters_Manufacturer_0x3000

Beschreibung

Mit diesem Objekt werden Parameterbereiche remanent im Gerät gespeichert.

Folgende Parametergruppen werden unterstützt:
  • Sub-index 00h enthält die Anzahl der unterstützen Subindizes.
  • Sub-index 01h - Speichert alle Parameter des Gerätes.
  • Sub-index 02h - Speichert die Kommunikationsparameter (Index von 1000h bis 1FFFh).
  • Sub-index 03h - Speichert die Applikationsparameter (Index von 6000h bis 9FFFh).
  • Sub-index 05h - Speichert Herstellerspezifische Parameter Bereich 1 (Index von 2000h bis 2FFFh)
  • Sub-index 06h - Speichert Herstellerspezifische Parameter Bereich 2 (Index von 3000h bis 3FFFh)
Zur Vermeidung des unbeabsichtigten Speicherns, wird ein spezielles Codewort benötigt, welches auf den entsprechenden Subindex geschrieben wird. Es werden die ASCII-Zeichen für "save" geschrieben:

Storage write access signature

Nach Schreiben des korrekten Codes auf den entsprechenden Subindexes, werden die Parameter gespeichert. Nach erfolgtem Speichern erfolgt die Rückbestätigung des Schreibbefehls (SDO download initiate response). Wenn das Speichern fehlschlägt, antwortet das Gerät mit einer SDO Abbruch Messages (abort code: 0606 0000h).
Wird ein falscher Code geschrieben, wird das Speichern abgelehnt und das Gerät antwortet mit einer Abbruch Message
(abort code: 0800 002xh).
Beim Lesen des entsprechenden Subindexes liefert das Gerät Informationen über die Speicherfunktionalität nach folgendem Format:

Storage read access structure

Struktur des gelesenen Wertes:

Bit | Wert | Beschreibung
auto | 0b 1b | Das CANopen- Gerät speichert keine Parameter selbständig Das CANopen- Gerät speichert Parameter selbständig
cmd | 0b 1b | Das CANopen- Gerät speichert keine Parameter per Kommando Das CANopen- Gerät speichert Parameter per Kommando
Selbständiges Speichern bedeutet, das dass CANopen-Gerät die Parameter selbstätig im remanenten Speicher ablegt ohne speziellen Speicherbefehl .


1010.01h Parameterspeicher - Alle Parameter speichern

Name | COP_StoreParameters_All
Bezeichnung | Parameterspeicher - Alle Parameter speichern
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SaveParam_All()
Querverweis | COP_StoreParameters_HighestSubindexSupported, COP_StoreParameters_Communication, COP_StoreParameters_Application, COP_StoreParameters_Manufacturer_0x2000, COP_StoreParameters_Manufacturer_0x3000

Beschreibung

Das Objekt steuert das Speichern aller Parameter im nichtflüchtigen Speicher.

Siehe auch COP_StoreParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x1010,0x01,0x65766173,timeout=21000)   # alle Parameter speichern


1010.02h Parameterspeicher - Kommunikationsparameter speichern

Name | COP_StoreParameters_Communication
Bezeichnung | Parameterspeicher - Kommunikationsparameter speichern
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SaveParam_Comm()
Querverweis | COP_StoreParameters_HighestSubindexSupported, COP_StoreParameters_All, COP_StoreParameters_Application, COP_StoreParameters_Manufacturer_0x2000, COP_StoreParameters_Manufacturer_0x3000

Beschreibung

Das Objekt speichert die Kommunikationsparameter im nichflüchtigen Speicher. (Index 1000h - 1FFFh) .

Siehe auch COP_StoreParameters_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x1010,0x02,0x65766173,timeout=21000)   # Parameter speichern


1010.03h Parameterspeicher - Applikationsparameter speichern

Name | COP_StoreParameters_Application
Bezeichnung | Parameterspeicher - Applikationsparameter speichern
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SaveParam_App()
Querverweis | COP_StoreParameters_HighestSubindexSupported, COP_StoreParameters_All, COP_StoreParameters_Communication, COP_StoreParameters_Manufacturer_0x2000, COP_StoreParameters_Manufacturer_0x3000

Beschreibung

Das Objekt speichert die Applikationsparameter im nichflüchtigen Speicher. (index from 6000h to 9FFFh) .

Siehe auch COP_StoreParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x1010,0x03,0x65766173,timeout=21000)   # Parameter speichern


1010.05h Parameterspeicher - Herstellersparameter speichern (Bereich 0x2000-0x2FFF)

Name | COP_StoreParameters_Manufacturer_0x2000
Bezeichnung | Parameterspeicher - Herstellersparameter speichern (Bereich 0x2000-0x2FFF)
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SaveParam_2000()
Querverweis | COP_StoreParameters_HighestSubindexSupported, COP_StoreParameters_All, COP_StoreParameters_Communication, COP_StoreParameters_Application, COP_StoreParameters_Manufacturer_0x3000

Beschreibung

Das Objekt speichert die herstellerspezifischen Parameter Teil 1 im nichflüchtigen Speicher. (Index 2000h bis 2FFFh).

Siehe auch COP_StoreParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x1010,0x05,0x65766173,timeout=21000)   # Parameter speichern


1010.06h Parameterspeicher - Herstellersparameter speichern (Bereich 0x3000-0x3FFF)

Name | COP_StoreParameters_Manufacturer_0x3000
Bezeichnung | Parameterspeicher - Herstellersparameter speichern (Bereich 0x3000-0x3FFF)
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SaveParam_3000()
Querverweis | COP_StoreParameters_HighestSubindexSupported, COP_StoreParameters_All, COP_StoreParameters_Communication, COP_StoreParameters_Application, COP_StoreParameters_Manufacturer_0x2000

Beschreibung

Das Objekt speichert die herstellerspezifischen Parameter Teil 2 im nichflüchtigen Speicher(Index 3000h bis 3FFFh) .

Siehe auch: COP_StoreParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x1010,0x06,0x65766173,timeout=21000)   # Parameter speichern


Inhalt - Parameter 1000h (DS301) - Defaultparameter wiederherstellen

1011.00h | COP_RestoreDefaultParameters_HighestSubindexSupported | Defaultparameter wiederherstellen - Höchster unterstützter Subindex
1011.01h | COP_RestoreDefaultParameters_All | Defaultparameter wiederherstellen - Alle Defaultparameter wiederherstellen
1011.02h | COP_RestoreDefaultParameters_Communication | Defaultparameter wiederherstellen - Kommunikationsdefaultparameter wiederherstellen
1011.03h | COP_RestoreDefaultParameters_Application | Defaultparameter wiederherstellen - Applikationsdefaultparameter wiederherstellen
1011.05h | COP_RestoreDefaultParameters_Manufacturer_0x2000 | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x2000-0x2FFF)
1011.06h | COP_RestoreDefaultParameters_Manufacturer_0x3000 | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x3000-0x3FFF)


1011.00h Defaultparameter wiederherstellen - Höchster unterstützter Subindex

Name | COP_RestoreDefaultParameters_HighestSubindexSupported
Bezeichnung | Defaultparameter wiederherstellen - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 06h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RestoreDefaultParameters_All, COP_RestoreDefaultParameters_Communication, COP_RestoreDefaultParameters_Application, COP_RestoreDefaultParameters_Manufacturer_0x2000, COP_RestoreDefaultParameters_Manufacturer_0x3000

Beschreibung

Mit diesem Objekt werden Parameterbereiche entsprechend Kommunikationsprofil des Gerätes auf Werkseinstellungen zurückgesetzt.

Folgende Parametergruppen werden unterstützt:
  • Sub-index 00h enthält die Anzahl der unterstützen Subindizes.
  • Sub-index 01h - Rücksetzen aller Parameter des Gerätes.
  • Sub-index 02h - Rücksetzen der Kommunikationsparameter (Index von 1000h bis 1FFFh).
  • Sub-index 03h - Rücksetzen der Applikationsparameter (Index von 6000h bis 9FFFh).
  • Sub-index 05h - Rücksetzen der Herstellerspezifischen Parameter Bereich 1 (Index von 2000h bis 2FFFh)
  • Sub-index 06h - Rücksetzen der Herstellerspezifischen Parameter Bereich 2 (Index von 3000h bis 3FFFh)
Zur Vermeidung des unbeabsichtigten Rücksetzens, wird ein spezielles Codewort benötigt, welches auf den entsprechenden Subindex geschrieben wird. Es werden die ASCII-Zeichen für "load" geschrieben:

Restore default write access signature

Nach Schreiben des korrekten Codes auf den entsprechenden Subindexes, werden die Parameter auf Default zurückgesetzt. Nach erfolgtem Rücksetzen erfolgt die Rückbestätigung des SDO-Schreibbefehls (SDO download initiate response). Wenn das Rücksetzen fehlschlägt, antwortet das Gerät mit einer SDO Abbruch Messages (abort code: 0606 0000h).
Wird ein falsche Code geschrieben, wird das Rücksetzen abgeleht und das Gerät antwortet mit einer Abbruch Message
(abort code: 0800 002xh).

Die Defaultwerte werden nach Reset des Gerätes übernommen (NMT Service Reset Node für Subindex von 01h, 03h, 05h, 06h, NMT Service Reset Kommunikations für Subindex (02h) oder Spannungsreset.

Beim Lesen des entsprechenden Subindexes liefert das Gerät Informationen über die Restore-Funktionalität nach folgendem Format:

Restore default read access structure

Struktur des gelesenen Wertes:

Bit | Wert | Beschreibung
cmd | 0b 1b | CANopen - Gerät unterstützt kein Rücksetzen der Parameter CANopen - Gerät unterstützt Rücksetzen der Parameter


1011.01h Defaultparameter wiederherstellen - Alle Defaultparameter wiederherstellen

Name | COP_RestoreDefaultParameters_All
Bezeichnung | Defaultparameter wiederherstellen - Alle Defaultparameter wiederherstellen
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | LoadParam_All()
Querverweis | COP_RestoreDefaultParameters_HighestSubindexSupported, COP_RestoreDefaultParameters_Communication, COP_RestoreDefaultParameters_Application, COP_RestoreDefaultParameters_Manufacturer_0x2000, COP_RestoreDefaultParameters_Manufacturer_0x3000

Beschreibung

Mit diesem Objekt werden alle Parameter im Gerät zurückgesetzt.

Siehe auch COP_RestoreDefaultParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x1011,0x01,0x64616F6C)                 # Alle Defaultparameter wiederherstellen


1011.02h Defaultparameter wiederherstellen - Kommunikationsdefaultparameter wiederherstellen

Name | COP_RestoreDefaultParameters_Communication
Bezeichnung | Defaultparameter wiederherstellen - Kommunikationsdefaultparameter wiederherstellen
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | LoadParam_Comm()
Querverweis | COP_RestoreDefaultParameters_HighestSubindexSupported, COP_RestoreDefaultParameters_All, COP_RestoreDefaultParameters_Application, COP_RestoreDefaultParameters_Manufacturer_0x2000, COP_RestoreDefaultParameters_Manufacturer_0x3000

Beschreibung

Mit diesem Objekt werden die Kommunikationsparameter auf Default rückgesetzt (Index 1000h - 1FFFh) .

Siehe auch COP_RestoreDefaultParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x1011,0x02,0x64616F6C)                 # Defaultparameter wiederherstellen


1011.03h Defaultparameter wiederherstellen - Applikationsdefaultparameter wiederherstellen

Name | COP_RestoreDefaultParameters_Application
Bezeichnung | Defaultparameter wiederherstellen - Applikationsdefaultparameter wiederherstellen
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | LoadParam_App()
Querverweis | COP_RestoreDefaultParameters_HighestSubindexSupported, COP_RestoreDefaultParameters_All, COP_RestoreDefaultParameters_Communication, COP_RestoreDefaultParameters_Manufacturer_0x2000, COP_RestoreDefaultParameters_Manufacturer_0x3000

Beschreibung

Mit diesem Objekt werden die Applikationsparameter rückgesetzt (Index 6000h - 9FFFh).

Siehe auch COP_RestoreDefaultParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x1011,0x03,0x64616F6C)                 # Defaultparameter wiederherstellen


1011.05h Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x2000-0x2FFF)

Name | COP_RestoreDefaultParameters_Manufacturer_0x2000
Bezeichnung | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x2000-0x2FFF)
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | LoadParam_2000()
Querverweis | COP_RestoreDefaultParameters_HighestSubindexSupported, COP_RestoreDefaultParameters_All, COP_RestoreDefaultParameters_Communication, COP_RestoreDefaultParameters_Application, COP_RestoreDefaultParameters_Manufacturer_0x3000

Beschreibung

Mit diesem Objekt werden die Herstellerspezifischen Parameter Bereich 1 rückgesetzt (Index 2000h - 2FFFh) .

Siehe auch COP_RestoreDefaultParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x1011,0x05,0x64616F6C)                 # Defaultparameter wiederherstellen


1011.06h Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x3000-0x3FFF)

Name | COP_RestoreDefaultParameters_Manufacturer_0x3000
Bezeichnung | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x3000-0x3FFF)
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | LoadParam_3000()
Querverweis | COP_RestoreDefaultParameters_HighestSubindexSupported, COP_RestoreDefaultParameters_All, COP_RestoreDefaultParameters_Communication, COP_RestoreDefaultParameters_Application, COP_RestoreDefaultParameters_Manufacturer_0x2000

Beschreibung

Mit diesem Objekt werden die Herstellerspezifischen Parameter Bereich 2 rückgesetzt (Index 3000h - 3FFFh).

Siehe auch COP_RestoreDefaultParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x1011,0x06,0x64616F6C)                 # Defaultparameter wiederherstellen


1012.00h COB-ID Zeitstempel der Meldung

Name | COP_CobId_TimeStampMessage
Bezeichnung | COB-ID Zeitstempel der Meldung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 100h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | TimeStampCobId(cob_id)
Querverweis | -

Beschreibung

Das Objekt legt die COB-ID des Time-Stamp Objektes (Zeitstempel) fest. Es wird festgelegt, ob das Gerät den Zeitstempel empfängt (Consumer) oder selbst generiert. Der Aufbau ist unten beschrieben.

Datenstruktur:

Structure of TIME COB-ID

Beschreibung der Daten:

Bit(s) | Value | Description
31 | 0b 1b | Das Gerät empfängt den Zeitstempel nicht Das Gerät empfängt den Zeitstempel
30 | 0b | Das Bit ist nicht änderbar. Das CANopen Gerät generiert keinen Zeitstempel
29 | 0b 1b | 11-bit CAN-ID aktiv (CAN base frame) 29-bit CAN-ID aktiv (CAN extended frame)
11...28 | x | 29-bit CAN-ID of the CAN extended frame
0..10 | x | 11-bit CAN-ID of the CAN base frame
Bit 30 ist nicht änderbar. Das Gerät kann keinen Zeitstempel generieren. Beim Versuch dieses Bit zu setzen wird eine SDO Abbruch Message erzeugt (abort code: 0609 0030h). Die Bits 0 bis 29 können nicht geändert werden solange Bit 31=1 (Objekt aktiv).

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

print "COB-ID:", hex(d.SdoRd(0x1012,0x00))      # Abfrage

new_cob_id = 0x101

d.SdoWr(0x1012,0x00,new_cob_id & ~0xC0000000)   # TimeStamp - disable
d.SdoWr(0x1012,0x00,new_cob_id)                 # neuer CobId


1014.00h COB-ID Emergency-Meldung

Name | COP_CobId_EmergencyMessage
Bezeichnung | COB-ID Emergency-Meldung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000080h + NodeId
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | EmcyCobId(cob_id)
Querverweis | -

Beschreibung

Das Objekt legt die CobId der EMCY Message (Fehlermeldung) fest.

Datenstruktur:

Structure of the EMCY Identifier

Beschreibung EMCY COB-ID:
Bit(s) | Wert | Description
31 | 0b 1b | EMCY ist vohanden/ gültig EMCY ist nicht vohanden/ ungültig
30 | 0b | reserviert (immer 0b)
29 | 0b 1b | 11-bit CAN-ID valid (CAN base frame) 29-bit CAN-ID valid (CAN extended frame)
11..28 | x | 29-bit CAN-ID of the CAN extended frame
0..10 | x | 11-bit CAN-ID of the CAN base frame
Die Bits 0 bis 29 können nicht geändert werden, solange das Bit 31 =0 (Objekt aktiv/ gültig) .

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

print "Emcy COB-ID:", hex(d.SdoRd(0x1014,0x00)) # Abfrage

new_cob_id = 0x82

d.SdoWr(0x1014,0x00,new_cob_id |  0x80000000)   # Emergency Message - disable
d.SdoWr(0x1014,0x00,new_cob_id & ~0x80000000)   # neue CobId für Emergency Nachricht


Inhalt - Parameter 1000h (DS301) - Heartbeat

1016.00h | COP_ConsumerHeartbeatTime_HighestSubindexSupported | Heartbeat-Zeit des Konsumenten - Höchster unterstützter Subindex
1016.01h | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime1 | Heartbeat-Zeit des Konsumenten 1 - Heartbeat-Zeit des Konsumenten
1016.02h | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime2 | Heartbeat-Zeit des Konsumenten 2 - Heartbeat-Zeit des Konsumenten
1016.03h | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime3 | Heartbeat-Zeit des Konsumenten 3 - Heartbeat-Zeit des Konsumenten
1016.04h | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime4 | Heartbeat-Zeit des Konsumenten 4 - Heartbeat-Zeit des Konsumenten
1017.00h | COP_ProducerHeartbeatTime | Heartbeat-Zeit des Produzent


1016.00h Heartbeat-Zeit des Konsumenten - Höchster unterstützter Subindex

Name | COP_ConsumerHeartbeatTime_HighestSubindexSupported
Bezeichnung | Heartbeat-Zeit des Konsumenten - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [00h .. 7Fh]
Defaultwert | 04h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.00.A1
Geräte | Alle
PLC Funktion | -
Querverweis | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime1

Beschreibung

Mit der Consumer heartbeat time wird das Überwachungsinterval für ein CANopen-Gerät festgegelegt, der zyklisch ein Heartbeat Telegramm sendet (Heartbeat producer). Die Überwachungszeit muss höher sein als das Intrval des sendenden Gerätes. Die Überwachung beginnt mit dem Empfang des ersten Heartbeats. Es können bis zu 4 CAN-Teilnehmer überwacht werden.

Funktion der Subindizes:
  • Subindex 00h - Anzahl der unterstützten Heartbeat producer.
  • Subindex 01h - 04h Überwachung Teilnehmer 1..4.

Structure of Consumer heartbeat time

Beim Setzen von Heartbeat time = 0 , Node ID = 0 oder größer 127 wird die Überwachung deaktiviert. Das Heartbeat Intervall wird in Millisekunden angegeben. Beim Versuch, eine zweite Überwachung für den gleichen CAN-Teilnehmer einzurichten, antwortet das Gerät mit SDO Fehlercode (abort code: 0604 0043h).

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

nr       = 1
node_id  = 127
time_ms  = 1000

# Aktueller Wert ablesen
value = d.SdoRd(0x1016,nr)
print "Consumer heartbeat - time[ms]:", (value & 0xFFFF)
print "Consumer heartbeat - node id :", (value >> 16) & 0xFF

# Heartbeat Time setzen
d.SdoWr(0x1016,nr, ((node_id & 0xFF) << 16) | (time_ms & 0xFFFF))


1016.01h Heartbeat-Zeit des Konsumenten 1 - Heartbeat-Zeit des Konsumenten

Name | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime1
Bezeichnung | Heartbeat-Zeit des Konsumenten 1 - Heartbeat-Zeit des Konsumenten
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [ms]
Betriebsart | Alle
Verfügbar ab | 1.82.00.A1
Geräte | Alle
PLC Funktion | ConsumerHeartbeat(1, node_id, time_ms), DisableConsumerHeartbeat(1)
Querverweis | COP_ConsumerHeartbeatTime_HighestSubindexSupported

Beschreibung
Structure of Consumer heartbeat time

Beim Setzen von Heartbeat time = 0 , Node ID = 0 oder größer 127 wird die Überwachung deaktiviert. Das Heartbeat Intervall wird im Millisekunden angegeben. Beim Versuch, eine zweite Überwachung für den gleichen CAN-Teilnehmer einzurichten, antwortet das Gerät mit SDO Fehlercode (abort code: 0604 0043h).

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

nr       = 1
node_id  = 127
time_ms  = 1000

# Aktueller Wert ablesen
value = d.SdoRd(0x1016,nr)
print "Consumer heartbeat - time[ms]:", (value & 0xFFFF)
print "Consumer heartbeat - node id :", (value >> 16) & 0xFF

# Heartbeat Time setzen
d.SdoWr(0x1016,nr, ((node_id & 0xFF) << 16) | (time_ms & 0xFFFF))


1016.02h Heartbeat-Zeit des Konsumenten 2 - Heartbeat-Zeit des Konsumenten

Name | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime2
Bezeichnung | Heartbeat-Zeit des Konsumenten 2 - Heartbeat-Zeit des Konsumenten
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [ms]
Betriebsart | Alle
Verfügbar ab | 1.82.00.A1
Geräte | Alle
PLC Funktion | ConsumerHeartbeat(1, node_id, time_ms), DisableConsumerHeartbeat(1)
Querverweis | COP_ConsumerHeartbeatTime_HighestSubindexSupported

Beschreibung
Structure of Consumer heartbeat time

Beim Setzen von Heartbeat time = 0 , Node ID = 0 oder größer 127 wird die Überwachung deaktiviert. Das Heartbeat Intervall wird im Millisekunden angegeben. Beim Versuch, eine zweite Überwachung für den gleichen CAN-Teilnehmer einzurichten, antwortet das Gerät mit SDO Fehlercode (abort code: 0604 0043h).

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

nr       = 1
node_id  = 127
time_ms  = 1000

# Aktueller Wert ablesen
value = d.SdoRd(0x1016,nr)
print "Consumer heartbeat - time[ms]:", (value & 0xFFFF)
print "Consumer heartbeat - node id :", (value >> 16) & 0xFF

# Heartbeat Time setzen
d.SdoWr(0x1016,nr, ((node_id & 0xFF) << 16) | (time_ms & 0xFFFF))


1016.03h Heartbeat-Zeit des Konsumenten 3 - Heartbeat-Zeit des Konsumenten

Name | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime3
Bezeichnung | Heartbeat-Zeit des Konsumenten 3 - Heartbeat-Zeit des Konsumenten
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [ms]
Betriebsart | Alle
Verfügbar ab | 1.82.00.A1
Geräte | Alle
PLC Funktion | ConsumerHeartbeat(1, node_id, time_ms), DisableConsumerHeartbeat(1)
Querverweis | COP_ConsumerHeartbeatTime_HighestSubindexSupported

Beschreibung
Structure of Consumer heartbeat time

Beim Setzen von Heartbeat time = 0 , Node ID = 0 oder größer 127 wird die Überwachung deaktiviert. Das Heartbeat Intervall wird im Millisekunden angegeben. Beim Versuch, eine zweite Überwachung für den gleichen CAN-Teilnehmer einzurichten, antwortet das Gerät mit SDO Fehlercode (abort code: 0604 0043h).

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

nr       = 1
node_id  = 127
time_ms  = 1000

# Aktueller Wert ablesen
value = d.SdoRd(0x1016,nr)
print "Consumer heartbeat - time[ms]:", (value & 0xFFFF)
print "Consumer heartbeat - node id :", (value >> 16) & 0xFF

# Heartbeat Time setzen
d.SdoWr(0x1016,nr, ((node_id & 0xFF) << 16) | (time_ms & 0xFFFF))


1016.04h Heartbeat-Zeit des Konsumenten 4 - Heartbeat-Zeit des Konsumenten

Name | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime4
Bezeichnung | Heartbeat-Zeit des Konsumenten 4 - Heartbeat-Zeit des Konsumenten
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [ms]
Betriebsart | Alle
Verfügbar ab | 1.82.00.A1
Geräte | Alle
PLC Funktion | ConsumerHeartbeat(1, node_id, time_ms), DisableConsumerHeartbeat(1)
Querverweis | COP_ConsumerHeartbeatTime_HighestSubindexSupported

Beschreibung
Structure of Consumer heartbeat time

Beim Setzen von Heartbeat time = 0 , Node ID = 0 oder größer 127 wird die Überwachung deaktiviert. Das Heartbeat Intervall wird im Millisekunden angegeben. Beim Versuch, eine zweite Überwachung für den gleichen CAN-Teilnehmer einzurichten, antwortet das Gerät mit SDO Fehlercode (abort code: 0604 0043h).

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

nr       = 1
node_id  = 127
time_ms  = 1000

# Aktueller Wert ablesen
value = d.SdoRd(0x1016,nr)
print "Consumer heartbeat - time[ms]:", (value & 0xFFFF)
print "Consumer heartbeat - node id :", (value >> 16) & 0xFF

# Heartbeat Time setzen
d.SdoWr(0x1016,nr, ((node_id & 0xFF) << 16) | (time_ms & 0xFFFF))


1017.00h Heartbeat-Zeit des Produzent

Name | COP_ProducerHeartbeatTime
Bezeichnung | Heartbeat-Zeit des Produzent
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.00.A1
Geräte | Alle
PLC Funktion | ProducerHeartbeatTime(time_ms), DisableProducerHeartbeat()
Querverweis | -

Beschreibung

Mit diesem Objekt wird das zyklische Senden des Heartbeat Protokolls aktiviert (Heart beat producer time) .
Der Parameter wird in Millisekunden angegeben. Der Wert 0 schaltet die Funktion ab.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

print "ProducerHeartbeatTime =", d.SdoRd(0x1017,0x00)

d.SdoWr(0x1017,0x00,1000)        # neuer Wert setzen


Inhalt - Parameter 1000h (DS301) - Identitätsobjekt

1018.00h | COP_IdentityObject_HighestSubindexSupported | Identitätsobjekt - Höchster unterstützter Subindex
1018.01h | COP_IdentityObject_VendorID | Identitätsobjekt - Vendor-ID
1018.02h | COP_IdentityObject_ProductCode | Identitätsobjekt - Produktcode
1018.03h | COP_IdentityObject_RevisionNumber | Identitätsobjekt - Revisionsnummer


1018.00h Identitätsobjekt - Höchster unterstützter Subindex

Name | COP_IdentityObject_HighestSubindexSupported
Bezeichnung | Identitätsobjekt - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [1 .. 127]
Defaultwert | 3
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_IdentityObject_VendorID, COP_IdentityObject_ProductCode, COP_IdentityObject_RevisionNumber

Beschreibung

Das Objekt dient der Indentifikation des CANopen-Gerätes.

Werte Definition:
  • Subindex 01h enthält einen eindeutigen Wert, der von der CIA ( CAN in Automation (CiA) für jeden Hersteller von CANopen-Geräten einmalig festgelegt wird.
  • Subindex 02h enthält einen eindeutigen Wert, der den Typ des Gerätes identifiziert.
  • Subindex 03h enthält die Versionsinformation des Gerätes als Hauptversion (Bit 16..31) und Unterversion (Bit 0..15)
    (siehe Abbildung).
Structure of revision number

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "VendorId       = 0x%04X" % d.SdoRd(0x1018,0x01)
print "ProductCode    = 0x%04X" % d.SdoRd(0x1018,0x02)
print "RevisionNumber = 0x%04X" % d.SdoRd(0x1018,0x03)


1018.01h Identitätsobjekt - Vendor-ID

Name | COP_IdentityObject_VendorID
Bezeichnung | Identitätsobjekt - Vendor-ID
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | Identity_VendorId()
Querverweis | COP_IdentityObject_HighestSubindexSupported, COP_IdentityObject_ProductCode, COP_IdentityObject_RevisionNumber

Beschreibung

Subindex 01h enthält einen eindeutigen Wert, der von der CIA ( CAN in Automation (CiA) für jeden Hersteller von CANopen-Geräten einmalig festgelegt wird.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "VendorId       = 0x%04X" % d.SdoRd(0x1018,0x01)
print "ProductCode    = 0x%04X" % d.SdoRd(0x1018,0x02)
print "RevisionNumber = 0x%04X" % d.SdoRd(0x1018,0x03)


1018.02h Identitätsobjekt - Produktcode

Name | COP_IdentityObject_ProductCode
Bezeichnung | Identitätsobjekt - Produktcode
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | Identity_ProductCode()
Querverweis | COP_IdentityObject_HighestSubindexSupported, COP_IdentityObject_VendorID, COP_IdentityObject_RevisionNumber

Beschreibung

Subindex 02h enthält einen eindeutigen Wert, der den Typ des Gerätes identifiziert.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "VendorId       = 0x%04X" % d.SdoRd(0x1018,0x01)
print "ProductCode    = 0x%04X" % d.SdoRd(0x1018,0x02)
print "RevisionNumber = 0x%04X" % d.SdoRd(0x1018,0x03)


1018.03h Identitätsobjekt - Revisionsnummer

Name | COP_IdentityObject_RevisionNumber
Bezeichnung | Identitätsobjekt - Revisionsnummer
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | Identity_RevisionNumber()
Querverweis | COP_IdentityObject_HighestSubindexSupported, COP_IdentityObject_VendorID, COP_IdentityObject_ProductCode

Beschreibung

Subindex 03h enthält die Versionsinformation des Gerätes als Hauptversion (Bit 16..31) und Unterversion (Bit 0..15).

Structure of revision number

Die Versionsinformation setzt sich zusammen aus einer 16-Bit Software Version DEV_VersionSw 3023.00h (higher 2 bytes) und einer 16-Bit Software Subversion DEV_SubVersionSw 3023.01h (lower 2 bytes) des Gerätes.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "VendorId       = 0x%04X" % d.SdoRd(0x1018,0x01)
print "ProductCode    = 0x%04X" % d.SdoRd(0x1018,0x02)
print "RevisionNumber = 0x%04X" % d.SdoRd(0x1018,0x03)


1029.00h Fehlersverhalten - Höchster unterstützter Subindex

Name | COP_ErrorBehavior_HighestSubindexSupported
Bezeichnung | Fehlersverhalten - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. FEh]
Defaultwert | 01h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_ErrorBehavior_CommunicationError

Beschreibung

Wenn ein CANopen-Gerät im NMT-State Operational einen Fehlerzustand erkennt, schaltet das Gerät standardmäßig automatisch in NMT-State PreOperational.
Das CANopen Gerät kann so konfiguriert werden, dass es alternativ in NMT-State Stopped schaltet oder im aktuellen Zustand verbleibt.

CANopen-Gerätefehler beinhalten auch die folgenden Kommunikationsfehler:
  • Bus-off Status am CAN Interface
  • Fehler nach Life Guarding Telegramm
  • Fehler nach Heartbeat Telegramm
Weitere Fehlerzustände können durch interne Fehler im Gerät ausgelöst werden.

Parameterwerte:

Value | Description
00h | Wechsel nach NMT State Pre-operational (nur wenn aktuell im NMT State Operational)
01h | Keine Änderung des NMT State
02h | Wechsel nach NMT State Stopped

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

print "Error behaviour", d.SdoRd(0x1029,0x01)   # Aktueller Wert des Parameters

d.SdoWr(0x1029,0x01,0x01)                       # Keine Änderung des NMT State


1029.01h Fehlersverhalten - Kommunkationsfehler

Name | COP_ErrorBehavior_CommunicationError
Bezeichnung | Fehlersverhalten - Kommunkationsfehler
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ErrorBehaviour(1,value), ErrorBehaviour(1)
Querverweis | COP_ErrorBehavior_HighestSubindexSupported

Beschreibung

Subindex 01h beschreibt die Reaktion auf einen Kommunikationsfehler.

Siehe auch COP_ErrorBehavior_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

print "Error behaviour", d.SdoRd(0x1029,0x01)   # Aktueller Wert des Parameters

d.SdoWr(0x1029,0x01,0x01)                       # Keine Änderung des NMT State


Inhalt - Parameter 1000h (DS301) - SDO Server-Parameter

1200.00h | COP_SDO_ServerParameter_HighestSubindexSupported | SDO Server-Parameter - Höchster unterstützter Subindex
1200.01h | COP_SDO_ServerParameter_CobIdClientServer_Rx | SDO Server-Parameter - COB-ID Client -> Server (rx)
1200.02h | COP_SDO_ServerParameter_CobIdServerClient_Tx | SDO Server-Parameter - COB-ID Server -> Client (tx)


1200.00h SDO Server-Parameter - Höchster unterstützter Subindex

Name | COP_SDO_ServerParameter_HighestSubindexSupported
Bezeichnung | SDO Server-Parameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 02h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_SDO_ServerParameter_CobIdClientServer_Rx, COP_SDO_ServerParameter_CobIdServerClient_Tx

Beschreibung

Das Objekt beschreibt die COB Ids des SDO Kanals.
Subindex 0 beschreibt die Anzahl der Subindizes.
Subindex 1 und 2 beschreiben die CobId für das SDO.

Structure of SDO server COB-ID

Beschreibung des SDO server COB-ID:

Bit(s) | Value | Description
31 | 0b 1b | SDO gültig SDO nicht gültig
30 | 0b | Der Wert ist statisch zugewiesen
29 | 0b 1b | 11-bit CAN-ID gültig (CAN base frame) 29-bit CAN-ID gültig (CAN extended frame)
11..28 | x | 29-bit CAN-ID des CAN extended frame
0..10 | x | 11-bit CAN-ID des CAN base frame

Ein SDO Objekt ist gültig , wenn in Subindex 01 und 02 Bit 31 = 0.
Die Werte Bit 0 bis 29 können nicht geändert werden, wenn Bit 31=0. Das Bit muß vorher auf 1 gesetzt werden.

Das Gerät unterstützt 4 SDOs:
  • SDO 1 - Index 1200h
  • SDO 2 - Index 1201h
  • SDO 3 - Index 1202h
  • SDO 4 - Index 1203h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "SDO COB-ID (rx):", hex(d.SdoRd(0x1200,0x01))
print "SDO COB-ID (tx):", hex(d.SdoRd(0x1200,0x02))


1200.01h SDO Server-Parameter - COB-ID Client -> Server (rx)

Name | COP_SDO_ServerParameter_CobIdClientServer_Rx
Bezeichnung | SDO Server-Parameter - COB-ID Client -> Server (rx)
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ServerSdoParam_c2s_CobId()
Querverweis | COP_SDO_ServerParameter_HighestSubindexSupported, COP_SDO_ServerParameter_CobIdServerClient_Tx

Beschreibung

Der Wert in Subindex 01h beschreibt die COB Id vom Client zum Server (RX) für dieses SDO.

Default Werte der COB-ID:
  • SDO 1 - 600h + Node-ID
  • SDO 2 - 20000600h + Node-ID
  • SDO 3 - inaktiv
  • SDO 4 - inaktiv

Siehe auch COP_SDO_ServerParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "SDO COB-ID (rx):", hex(d.SdoRd(0x1200,0x01))
print "SDO COB-ID (tx):", hex(d.SdoRd(0x1200,0x02))


1200.02h SDO Server-Parameter - COB-ID Server -> Client (tx)

Name | COP_SDO_ServerParameter_CobIdServerClient_Tx
Bezeichnung | SDO Server-Parameter - COB-ID Server -> Client (tx)
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ServerSdoParam_s2c_CobId()
Querverweis | COP_SDO_ServerParameter_HighestSubindexSupported, COP_SDO_ServerParameter_CobIdClientServer_Rx

Beschreibung

Subindex 02h beschreibt die COB-ID Server zum Client (TX) für dieses SDO.

Default Werte COB-ID:
  • SDO 1 - 580h + Node-ID
  • SDO 2 - 20000580h + Node-ID
  • SDO 3 - disable
  • SDO 4 - disable

Siehe auch COP_SDO_ServerParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "SDO COB-ID (rx):", hex(d.SdoRd(0x1200,0x01))
print "SDO COB-ID (tx):", hex(d.SdoRd(0x1200,0x02))


Inhalt - Parameter 1000h (DS301) - RxPDO-1 Kommunikationsparameter

1400.00h | COP_RxPDO1_CommunicationParameter_HighestSubindexSupported | RxPDO1 Kommunikationsparameter - Höchster unterstützter Subindex
1400.01h | COP_RxPDO1_CommunicationParameter_CobId | RxPDO1 Kommunikationsparameter - COB-ID benutzt durch RxPDO 1
1400.02h | COP_RxPDO1_CommunicationParameter_TransmissionType | RxPDO1 Kommunikationsparameter - Typ der Transmission
1400.03h | COP_RxPDO1_CommunicationParameter_InhibitTime | RxPDO1 Kommunikationsparameter - Inhibit-time


1400.00h RxPDO1 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_RxPDO1_CommunicationParameter_HighestSubindexSupported
Bezeichnung | RxPDO1 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO1_CommunicationParameter_CobId, COP_RxPDO1_CommunicationParameter_TransmissionType, COP_RxPDO1_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Empfangs-PDOs des Gerätes.

Subindex 00h enthält die Anzahl der Subindizes.

Mit Subindex 01h wird die COB-ID des RxPDOs eingestellt (siehe Abb und Tabelle).

Structure of RxPDO COB-ID

Beschreibung des RxPDO COB-ID:

Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID (CAN base frame) 29-bit CAN-ID (CAN extended frame)
11..28 | x | 29-bit CAN-ID vom CAN extended frame
0..10 | x | 11-bit CAN-ID vom CAN base frame

Mit dem Bit 31 können PDOs an- und abgeschaltet werden im NMT State Operational. Die COB ID kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für RxPDO:
Index | Default value
1400h | CAN-ID: 200h + Node-ID frame: 0b RTR: 1b valid: 0b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom RxPDO fest (siehe).

Beschreibung RxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO zuerst zwar empfangen wird (vor einem SYNC), aber erst bei Empfang der SYNC Message intern verarbeitet / aktualisiert wird. Damit können zuerst Daten an mehrere CAN Slaves gesendet und per SYNC aktualisiert werden .
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
    Bei einem synchronen PDO werden die Daten erst gepuffert und bei Empfang eines SYNC aktualisiert (siehe Abb).
  • Bei einem ereignisgesteuerten Type werden die Daten sofort aktualisiert, wenn sie empfangen werden.

Bus synchronization and actuation

Subindex 03h enthält die Sperrzeit in 100 μs. Der Wert 0 deaktiviert.
Der Wert kann nicht geändert werden,wenn das PDO aktiv ist (Bit 31 des Subindex 01h =0 ).
Für Empfangs-PDOs ist der Parameter nicht verwendet

Das Gerät unterstützt nur 1 PDO:
  • PDO 1 - Index 1400h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1400.01h RxPDO1 Kommunikationsparameter - COB-ID benutzt durch RxPDO 1

Name | COP_RxPDO1_CommunicationParameter_CobId
Bezeichnung | RxPDO1 Kommunikationsparameter - COB-ID benutzt durch RxPDO 1
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 40000200h + NodeId
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_CobId(pdo_nr,cob_id)
Querverweis | COP_RxPDO1_CommunicationParameter_HighestSubindexSupported, COP_RxPDO1_CommunicationParameter_TransmissionType, COP_RxPDO1_CommunicationParameter_InhibitTime

Beschreibung

Subindex 01h setzt die COB-ID vom RxPDO.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1400.02h RxPDO1 Kommunikationsparameter - Typ der Transmission

Name | COP_RxPDO1_CommunicationParameter_TransmissionType
Bezeichnung | RxPDO1 Kommunikationsparameter - Typ der Transmission
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_TransmissionType(pdo_nr,type)
Querverweis | COP_RxPDO1_CommunicationParameter_HighestSubindexSupported, COP_RxPDO1_CommunicationParameter_CobId, COP_RxPDO1_CommunicationParameter_InhibitTime

Beschreibung

Subindex 02h definiert die Übertragungsart vom RxPDO.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1400.03h RxPDO1 Kommunikationsparameter - Inhibit-time

Name | COP_RxPDO1_CommunicationParameter_InhibitTime
Bezeichnung | RxPDO1 Kommunikationsparameter - Inhibit-time
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [100us]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_InhibitTime(pdo_nr,t_ms)
Querverweis | COP_RxPDO1_CommunicationParameter_HighestSubindexSupported, COP_RxPDO1_CommunicationParameter_CobId, COP_RxPDO1_CommunicationParameter_TransmissionType

Beschreibung

Subindex 03h enthält die Sperrzeit in 100 μs.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - RxPDO-1 Mapping

1600.00h | COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects | RxPDO1 Mapping - Anzahl der gemappten Obiekte in RxPDO 1
1600.01h | COP_RxPDO1_Mapping_1ApplicationObject | RxPDO1 Mapping - Erstes gemapptes Objekt
1600.02h | COP_RxPDO1_Mapping_2ApplicationObject | RxPDO1 Mapping - Zweites gemapptes Objekt
1600.03h | COP_RxPDO1_Mapping_3ApplicationObject | RxPDO1 Mapping - Drittes gemapptes Objekt
1600.04h | COP_RxPDO1_Mapping_4ApplicationObject | RxPDO1 Mapping - Viertes gemapptes Objekt
1600.05h | COP_RxPDO1_Mapping_5ApplicationObject | RxPDO1 Mapping - Fünftes gemapptes Objekt
1600.06h | COP_RxPDO1_Mapping_6ApplicationObject | RxPDO1 Mapping - Sechstes gemapptes Objekt
1600.07h | COP_RxPDO1_Mapping_7ApplicationObject | RxPDO1 Mapping - Siebtes gemapptes Objekt
1600.08h | COP_RxPDO1_Mapping_8ApplicationObject | RxPDO1 Mapping - Achtes gemapptes Objekt


1600.00h RxPDO1 Mapping - Anzahl der gemappten Obiekte in RxPDO 1

Name | COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | RxPDO1 Mapping - Anzahl der gemappten Obiekte in RxPDO 1
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingRxPdo(pdo_nr, mapp_list)
Querverweis | COP_RxPDO1_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Empfangs-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

RxPDO Mapping Werte:

Value | Description
00h | Mapping aus
01 bis 08 | Anzahl der Mappingeinträge
Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of RxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des RxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des RxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Empfängt das Gerät ein PDO, was mehr Bytes enhält, als gemappt wurden, wird nur die Anzahl der gemappten Bytes verwendet und eine EMCY-Messages erzeugt.
Enthält ein PDO weniger Bytes, als gemappt wurden, generiert das CANopen-Gerät eine EMCY-Message mit dem Error code 8210h.

Principle of RxPDO mapping

Das Gerät unterstützt nur 1 PDO:
  • PDO 1 - Index 1600h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1600.01h RxPDO1 Mapping - Erstes gemapptes Objekt

Name | COP_RxPDO1_Mapping_1ApplicationObject
Bezeichnung | RxPDO1 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1600.02h RxPDO1 Mapping - Zweites gemapptes Objekt

Name | COP_RxPDO1_Mapping_2ApplicationObject
Bezeichnung | RxPDO1 Mapping - Zweites gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1600.03h RxPDO1 Mapping - Drittes gemapptes Objekt

Name | COP_RxPDO1_Mapping_3ApplicationObject
Bezeichnung | RxPDO1 Mapping - Drittes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1600.04h RxPDO1 Mapping - Viertes gemapptes Objekt

Name | COP_RxPDO1_Mapping_4ApplicationObject
Bezeichnung | RxPDO1 Mapping - Viertes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1600.05h RxPDO1 Mapping - Fünftes gemapptes Objekt

Name | COP_RxPDO1_Mapping_5ApplicationObject
Bezeichnung | RxPDO1 Mapping - Fünftes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1600.06h RxPDO1 Mapping - Sechstes gemapptes Objekt

Name | COP_RxPDO1_Mapping_6ApplicationObject
Bezeichnung | RxPDO1 Mapping - Sechstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1600.07h RxPDO1 Mapping - Siebtes gemapptes Objekt

Name | COP_RxPDO1_Mapping_7ApplicationObject
Bezeichnung | RxPDO1 Mapping - Siebtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1600.08h RxPDO1 Mapping - Achtes gemapptes Objekt

Name | COP_RxPDO1_Mapping_8ApplicationObject
Bezeichnung | RxPDO1 Mapping - Achtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - TxPDO-1 Kommunikationsparameter

1800.00h | COP_TxPDO1_CommunicationParameter_HighestSubindexSupported | TxPDO1 Kommunikationsparameter - Höchster unterstützter Subindex
1800.01h | COP_TxPDO1_CommunicationParameter_CobId | TxPDO1 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1800.02h | COP_TxPDO1_CommunicationParameter_TransmissionType | TxPDO1 Kommunikationsparameter - Typ der Transmission
1800.03h | COP_TxPDO1_CommunicationParameter_InhibitTime | TxPDO1 Kommunikationsparameter - Inhibit-time


1800.00h TxPDO1 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_TxPDO1_CommunicationParameter_HighestSubindexSupported
Bezeichnung | TxPDO1 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_TxPDO1_CommunicationParameter_CobId, COP_TxPDO1_CommunicationParameter_TransmissionType, COP_TxPDO1_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Sende-PDOs (TxPDO) des Gerätes.

Subindex 00h - Anzahl der Subindexe.
Subindex 01h - COB-ID des TxPDO.
Subindex 02h - Übertragungsart.
Subindex 03h - Sperrzeit (Inhibittime).

Mit Subindex 01h wird die COB-ID des TxPDOs eingestellt (siehe Abb und Tabelle).

Structure of TxPDO COB-ID

Beschreibung des RxPDO COB-ID:
Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID valid (CAN base frame) 29-bit CAN-ID valid (CAN extended frame)
11..28 | x | 29-bit CAN-ID of the CAN extended frame
0..10 | x | 11-bit CAN-ID of the CAN base frame

Mit dem Bit 31 könen PDOs an- und abgeschaltet werden im NMT State Operational. Die COB ID kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für TxPDO:

Index | Default Werte
1800h | CAN-ID: 180h + Node-ID frame: 0b RTR: 0b valid: 0b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom TxPDO fest (siehe Tabelle).

Beschreibung TxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron azyklisch
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO nur gesendet wird, wenn ein SYNC Telegramm empfangen wurde.
    Damit kann der Datenverkehr auf dem Bus kontrolliert werden. Weiterhin können die Informationen verschiedener Teilnehmer zeitsynchron empfangen werden.

    PDOs der Übertragungsart 0 arbeiten synchron, aber nicht zyklisch. Ein Gerät, dessen TxPDO auf Übertragungsart 0 konfiguriert ist, ermittelt seine Eingangsdaten beim Empfang des SYNC (synchrones Prozessabbild) und sendet sie anschließend, falls die Daten sich gändert haben. Die Übertragungsart 0 kombiniert also den Sendegrund "ereignisgesteuert" mit dem Sende- (und möglichst Sample-) bzw. Verarbeitungs-Zeitpunkt "SYNC-Empfang".

    Bei Übertragungsart 1-240 wird das PDO zyklisch gesendet: nach jedem "n-ten" SYNC (n=1...240).
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
  • Bei einem ereignisgesteuerten Type werden die Daten sofort gesendet nach Änderung.
    • Hinweis: Bei dieser Übertragungsart kommt es, bei sich schnell ändernden Daten (z.B.: Spannung, Strom , Position) ,
      zu einer sehr hohen Buslast, wodurch der Datenverkehr anderer Teilnehmer (mit niedriger CAN-Priorität) blockiert werden kann.
      Durch Setzen einer Sperrzeit (Inhibittime) kann dies vermieden werden (siehe Subindex 03).

Bus synchronization and sampling

Subindex 03h enthält die Sperrzeit (inhibit time). Die Zeit ist das kürzeste Intervall in dem ein PDO gesendet werden kann, auch wenn sich die Daten schneller ändern.
Dieser Parameter gilt nur bei Übertragungsart 254 und 255. Die Einheit ist ein Vielfaches von 100 μs. Bei unseren Geräten wird die Zeit intern auf volle Milisekunden abgerundet. D.h. kleinste kleinste Sperrzeit ist 1ms (Parameterwert=0..9 -> effektive Sperrzeit=0ms, Parameterwert=10..19 -> effektive Sperrzeit=1ms, Parameterwert=20..29 -> effektive Sperrzeit=2ms, u.s.w.). Der Wert 0 deaktiviert die Sperrzeit.
Bei aktiviertem PDO (Bit 31 von Subindex 01h ist = 0) darf der Parameter nicht geändert werden.

Das Gerät unterstützt nur 1 PDO:
  • PDO 1 - Index 1800h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1800.01h TxPDO1 Kommunikationsparameter - COB-ID benutzt durch TxPDO

Name | COP_TxPDO1_CommunicationParameter_CobId
Bezeichnung | TxPDO1 Kommunikationsparameter - COB-ID benutzt durch TxPDO
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 180h + NodeId
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_CobId(pdo_nr,cob_id)
Querverweis | COP_TxPDO1_CommunicationParameter_HighestSubindexSupported, COP_TxPDO1_CommunicationParameter_TransmissionType, COP_TxPDO1_CommunicationParameter_InhibitTime

Beschreibung

Subindex 01h bestimmt die COB-ID des TxPDO.

Beschreibung siehe: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1800.02h TxPDO1 Kommunikationsparameter - Typ der Transmission

Name | COP_TxPDO1_CommunicationParameter_TransmissionType
Bezeichnung | TxPDO1 Kommunikationsparameter - Typ der Transmission
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_TransmissionType(pdo_nr,type)
Querverweis | COP_TxPDO1_CommunicationParameter_HighestSubindexSupported, COP_TxPDO1_CommunicationParameter_CobId, COP_TxPDO1_CommunicationParameter_InhibitTime

Beschreibung

Subindex 02h bestimmt die Übertragungsart des TxPDO.

Beschreibung siehe: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1800.03h TxPDO1 Kommunikationsparameter - Inhibit-time

Name | COP_TxPDO1_CommunicationParameter_InhibitTime
Bezeichnung | TxPDO1 Kommunikationsparameter - Inhibit-time
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [100us]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_InhibitTime(pdo_nr,t_ms)
Querverweis | COP_TxPDO1_CommunicationParameter_HighestSubindexSupported, COP_TxPDO1_CommunicationParameter_CobId, COP_TxPDO1_CommunicationParameter_TransmissionType

Beschreibung

Subindex 03h enthält die Sperrzeit (inhibit time). Die Zeit ist das kürzeste Intervall in dem ein PDO gesendet werden kann, auch wenn sich die Daten schneller ändern.
Dieser Parameter gilt nur bei Übertragungsart 254 und 255. Die Einheit ist ein Vielfaches von 100 μs. Bei unseren Geräten wird die Zeit intern auf volle Milisekunden abgerundet. D.h. kleinste kleinste Sperrzeit ist 1ms (Parameterwert=0..9 -> effektive Sperrzeit=0ms, Parameterwert=10..19 -> effektive Sperrzeit=1ms, Parameterwert=20..29 -> effektive Sperrzeit=2ms, u.s.w.). Der Wert 0 deaktiviert die Sperrzeit.
Bei aktiviertem PDO (Bit 31 von Subindex 01h ist = 0) darf der Parameter nicht geändert werden.

Siehe auch: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - TxPDO-1 Mapping

1A00.00h | COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects | TxPDO1 Mapping - Anzahl der gemappten Obiekte in TxPDO 1
1A00.01h | COP_TxPDO1_Mapping_1ApplicationObject | TxPDO1 Mapping - Erstes gemapptes Objekt
1A00.02h | COP_TxPDO1_Mapping_2ApplicationObject | TxPDO1 Mapping - Zweites gemapptes Objekt
1A00.03h | COP_TxPDO1_Mapping_3ApplicationObject | TxPDO1 Mapping - Drittes gemapptes Objekt
1A00.04h | COP_TxPDO1_Mapping_4ApplicationObject | TxPDO1 Mapping - Viertes gemapptes Objekt
1A00.05h | COP_TxPDO1_Mapping_5ApplicationObject | TxPDO1 Mapping - Fünftes gemapptes Objekt
1A00.06h | COP_TxPDO1_Mapping_6ApplicationObject | TxPDO1 Mapping - Sechstes gemapptes Objekt
1A00.07h | COP_TxPDO1_Mapping_7ApplicationObject | TxPDO1 Mapping - Siebtes gemapptes Objekt
1A00.08h | COP_TxPDO1_Mapping_8ApplicationObject | TxPDO1 Mapping - Achtes gemapptes Objekt


1A00.00h TxPDO1 Mapping - Anzahl der gemappten Obiekte in TxPDO 1

Name | COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | TxPDO1 Mapping - Anzahl der gemappten Obiekte in TxPDO 1
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO1_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Sende-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

TxPDO Mapping Werte:

Value | Description
00h | Mappingtabelle deaktiviert
01 bis 08 | Anzahl der Mappingeinträge

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of TxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des TxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des TxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Principle of TxPDO mapping

Das Gerät unterstützt nur 1 PDO:
  • PDO 1 - Index 1A00h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A00.01h TxPDO1 Mapping - Erstes gemapptes Objekt

Name | COP_TxPDO1_Mapping_1ApplicationObject
Bezeichnung | TxPDO1 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A00.02h TxPDO1 Mapping - Zweites gemapptes Objekt

Name | COP_TxPDO1_Mapping_2ApplicationObject
Bezeichnung | TxPDO1 Mapping - Zweites gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A00.03h TxPDO1 Mapping - Drittes gemapptes Objekt

Name | COP_TxPDO1_Mapping_3ApplicationObject
Bezeichnung | TxPDO1 Mapping - Drittes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A00.04h TxPDO1 Mapping - Viertes gemapptes Objekt

Name | COP_TxPDO1_Mapping_4ApplicationObject
Bezeichnung | TxPDO1 Mapping - Viertes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A00.05h TxPDO1 Mapping - Fünftes gemapptes Objekt

Name | COP_TxPDO1_Mapping_5ApplicationObject
Bezeichnung | TxPDO1 Mapping - Fünftes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A00.06h TxPDO1 Mapping - Sechstes gemapptes Objekt

Name | COP_TxPDO1_Mapping_6ApplicationObject
Bezeichnung | TxPDO1 Mapping - Sechstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A00.07h TxPDO1 Mapping - Siebtes gemapptes Objekt

Name | COP_TxPDO1_Mapping_7ApplicationObject
Bezeichnung | TxPDO1 Mapping - Siebtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A00.08h TxPDO1 Mapping - Achtes gemapptes Objekt

Name | COP_TxPDO1_Mapping_8ApplicationObject
Bezeichnung | TxPDO1 Mapping - Achtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 2000h

2000.00h | DS2000_CopConfigParam_HighestSubindexSupported | CANopen Konfiguration - Höchster unterstützter Subindex
2000.01h | DS2000_CopConfigParam_WriteEnable | CANopen Konfiguration - Schreibfreigabe
2000.02h | DS2000_CopConfigParam_UserNodeId | CANopen Konfiguration - Benutzer Node-ID
2000.03h | DS2000_CopConfigParam_UserBaudrate | CANopen Konfiguration - Benutzer Baudrate
2000.04h | DS2000_CopConfigParam_AutoOperational | CANopen Konfiguration - Auto Operational
2000.05h | DS2000_CopConfigParam_MessageOnBootup | CANopen Konfiguration - Nachricht beim Bootup
2009.00h | DS2000_CpuCommand_HighestSubindexSupported | CPU Kommando - Höchster unterstützter Subindex
2009.01h | DS2000_CpuCommand_WriteEnable | CPU Kommando - Schreibfreigabe
2009.02h | DS2000_CpuCommand_Command | CPU Kommando - Kommando
2009.03h | DS2000_CpuCommand_DelayTime | CPU Kommando - Verzögerungszeit
2011.00h | DS2000_RestoreDefaultParameters_HighestSubindexSupported | Defaultparameter wiederherstellen - Höchster unterstützter Subindex
2011.01h | DS2000_RestoreDefaultParameters_All | Defaultparameter wiederherstellen - Alle Defaultparameter wiederherstellen
2011.02h | DS2000_RestoreDefaultParameters_Communication | Defaultparameter wiederherstellen - Kommunikationsdefaultparameter wiederherstellen
2011.03h | DS2000_RestoreDefaultParameters_Application | Defaultparameter wiederherstellen - Applikationsdefaultparameter wiederherstellen
2011.05h | DS2000_RestoreDefaultParameters_Manufacturer_0x2000 | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x2000-0x2FFF)
2011.06h | DS2000_RestoreDefaultParameters_Manufacturer_0x3000 | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x3000-0x3FFF)
2021.00h | DS2000_SyncProducer_HighestSubindexSupported | Sync Producer - Höchster unterstützter Subindex
2021.01h | DS2000_SyncProducer_Enable | Sync Producer - Aktivierung


Inhalt - Parameter 2000h - CANopen Konfiguration

2000.00h | DS2000_CopConfigParam_HighestSubindexSupported | CANopen Konfiguration - Höchster unterstützter Subindex
2000.01h | DS2000_CopConfigParam_WriteEnable | CANopen Konfiguration - Schreibfreigabe
2000.02h | DS2000_CopConfigParam_UserNodeId | CANopen Konfiguration - Benutzer Node-ID
2000.03h | DS2000_CopConfigParam_UserBaudrate | CANopen Konfiguration - Benutzer Baudrate
2000.04h | DS2000_CopConfigParam_AutoOperational | CANopen Konfiguration - Auto Operational
2000.05h | DS2000_CopConfigParam_MessageOnBootup | CANopen Konfiguration - Nachricht beim Bootup


2000.00h CANopen Konfiguration - Höchster unterstützter Subindex

Name | DS2000_CopConfigParam_HighestSubindexSupported
Bezeichnung | CANopen Konfiguration - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | 7
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS2000_CopConfigParam_WriteEnable, DS2000_CopConfigParam_UserNodeId, DS2000_CopConfigParam_UserBaudrate, DS2000_CopConfigParam_AutoOperational, DS2000_CopConfigParam_MessageOnBootup,

Beschreibung

Das Objekt enthält die CANopen-Konfigurationsparameter.

Funktion der Subindizes:
  • Sub-index 00h - enthält die Anzahl der unterstützen Subindizes.
  • Sub-index 01h - setzt die Schreibfreigabe
  • Sub-index 02h - enthält die Benutzer-NodeId
  • Sub-index 03h - enthält die Benutzer-Baudrate des CAN-Busses
  • Sub-index 04h - enthält die Zeit für Auto-Operational
  • Sub-index 05h - enthält die Konfiguration der Nachrichten beim Bootup
  • Sub-index 06h - enthält die PIN-Nummer
  • Sub-index 07h - enthält die PROFIBUS Slave-Nummer


2000.01h CANopen Konfiguration - Schreibfreigabe

Name | DS2000_CopConfigParam_WriteEnable
Bezeichnung | CANopen Konfiguration - Schreibfreigabe
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS2000_CopConfigParam_HighestSubindexSupported

Beschreibung

Der Parameter setzt die Schreibfreigabe für alle Subindizes des Objektes mit dem Index 2000h.

Zur Vermeidung der unbeabsichtigten Änderung der Parameter mit dem Index 2000h , wird ein spezielles Codewort benötigt. Um die Schreibfreigabe zu aktivieren, muss man den Parameter auf 0x6E657277 (die ASCII-Zeichen für "WREN") setzen. Alle anderen Werte deaktivieren die Schreibfreigabe.

Die Information, ob die Schreibfreigabe aktiv ist, wird beim Lesen des Parameters zurückgeliefert.

Parameterwerte beim Lesen:
Wert | Bedeutung
0 | nur Lesezugriff
1 | Lese- und Schreibzugriff


2000.02h CANopen Konfiguration - Benutzer Node-ID

Name | DS2000_CopConfigParam_UserNodeId
Bezeichnung | CANopen Konfiguration - Benutzer Node-ID
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Wird beim Beschreiben gespeichert; Passwortgeschützt; Aktiv erst nach Reset
Wertbereich | [-2 .. 127] ausgenommen {0}
Defaultwert | -1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | UserNodeId(node_id)
Querverweis | DS2000_CopConfigParam_WriteEnable

Beschreibung

Der Parameter definiert die Node-ID des Gerätes.

Parameterwerte:
Wert | Bedeutung
-2 | Die Node-ID wird über die entsprechende Eingänge (nur bei den Modul-Varianten) definiert. 8 pins sind nötig.
-1 | Standard-Node-ID. Gerät mit HEX-Schalter - Die Node-ID wird über die HEX-Schalter definiert. Gerät ohne HEX-Schalter - Die Node-ID ist immer 127.
1 ... 127 | Software-Node-ID. Der Wert des Parameters wird als Node-ID genommen.
Wichtig !!!
Der Wert des Parameters wird erst nach dem Neustart des Gerätes übernommen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # aktuelle NodeId

new_node_id = 25                                # neue NodeId

d.SdoWr(0x2000, 0x01, 0x6E657277)               # Schreiben aktivieren
d.SdoWr(0x2000, 0x02, new_node_id, timeout=500) # neue NodeId setzen

print "Die NodeId wird erst nach dem Neustart des Gerätes übernommen."


2000.03h CANopen Konfiguration - Benutzer Baudrate

Name | DS2000_CopConfigParam_UserBaudrate
Bezeichnung | CANopen Konfiguration - Benutzer Baudrate
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Wird beim Beschreiben gespeichert; Passwortgeschützt; Aktiv erst nach Reset
Wertbereich | [-1 .. 8]
Defaultwert | -1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | UserBaudrate(baudrate_kbaud)
Querverweis | DS2000_CopConfigParam_WriteEnable

Beschreibung

Der Parameter definiert die Baudrate des Gerätes.

Parameterwerte:
Wert | Bedeutung
-1 | Standard-Baudrate - 125 kbit/s
0 | Baudrate 1 Mbit/s
1 | Baudrate 800 kbit/s
2 | Baudrate 500 kbit/s
3 | Baudrate 250 kbit/s
4 | Baudrate 125 kbit/s
5 | Baudrate 100 kbit/s
6 | Baudrate 50 kbit/s
7 | Baudrate 20 kbit/s
8 | Baudrate 10 kbit/s
Wichtig !!!
Der Wert des Parameters wird erst nach dem Neustart des Gerätes übernommen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x2000, 0x01, 0x6E657277)         # Schreiben aktivieren
d.SdoWr(0x2000, 0x03, 3, timeout=500)     # Baudrate 250kbit/s setzen

print "Die Baudrate wird erst nach dem Neustart des Gerätes übernommen."


2000.04h CANopen Konfiguration - Auto Operational

Name | DS2000_CopConfigParam_AutoOperational
Bezeichnung | CANopen Konfiguration - Auto Operational
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Wird beim Beschreiben gespeichert; Passwortgeschützt; Aktiv erst nach Reset
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | AutoOperational(delay_ms)
Querverweis | DS2000_CopConfigParam_WriteEnable

Beschreibung

Der Parameter definiert die Zeit nach dem Einschalten, nach der das Gerät sich in den NMT Status Operational schaltet. Der Wert 0 deaktiviert die Funktion.

Wichtig !!!
Der Wert des Parameters wird erst nach dem Neustart des Gerätes übernommen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x2000, 0x01, 0x6E657277)         # Schreiben aktivieren
d.SdoWr(0x2000, 0x04, 200, timeout=500)   # AutoOperational nach 200 ms

print "Der Wert des Parameters wird erst nach dem Neustart des Gerätes übernommen."


2000.05h CANopen Konfiguration - Nachricht beim Bootup

Name | DS2000_CopConfigParam_MessageOnBootup
Bezeichnung | CANopen Konfiguration - Nachricht beim Bootup
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Wird beim Beschreiben gespeichert; Passwortgeschützt
Wertbereich | [0 .. 3]
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MsgOnBootup(bit_mask)
Querverweis | DS2000_CopConfigParam_WriteEnable

Beschreibung

Der Parameter definiert welche Nachrichten das Gerät beim Bootup sendet.

Bitbelegung:
Bit | Bedeutung
0 | Das Gerät sendet die Guarding-Nachricht (GUARD) beim Bootup
1 | Das Gerät sendet die Emergency-Nachricht (EMCY) beim Bootup
Wichtig !!!
Der Wert des Parameters wird erst nach dem Neustart des Gerätes übernommen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x2000, 0x01, 0x6E657277)         # Schreiben aktivieren
d.SdoWr(0x2000, 0x05, 1, timeout=500)     # Nur Guarding-Nachricht beim Bootup senden

print "Der Wert des Parameters wird erst nach dem Neustart des Gerätes übernommen."


Inhalt - Parameter 2000h - CPU Kommando

2009.00h | DS2000_CpuCommand_HighestSubindexSupported | CPU Kommando - Höchster unterstützter Subindex
2009.01h | DS2000_CpuCommand_WriteEnable | CPU Kommando - Schreibfreigabe
2009.02h | DS2000_CpuCommand_Command | CPU Kommando - Kommando
2009.03h | DS2000_CpuCommand_DelayTime | CPU Kommando - Verzögerungszeit


2009.00h CPU Kommando - Höchster unterstützter Subindex

Name | DS2000_CpuCommand_HighestSubindexSupported
Bezeichnung | CPU Kommando - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | 3
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Das Objekt enthält die CPU-Kommandoparameter.

Funktion der Subindizes:
  • Sub-index 00h - enthält die Anzahl der unterstützen Subindizes.
  • Sub-index 01h - setzt die Schreibfreigabe
  • Sub-index 02h - löst das CPU-Kommando aus
  • Sub-index 03h - enthält die Verzögerungszeit des CPU-Kommandos


2009.01h CPU Kommando - Schreibfreigabe

Name | DS2000_CpuCommand_WriteEnable
Bezeichnung | CPU Kommando - Schreibfreigabe
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS2000_CpuCommand_HighestSubindexSupported

Beschreibung

Der Parameter setzt die Schreibfreigabe für alle Subindizes des Objektes mit dem Index 2009h.

Zur Vermeidung der unbeabsichtigten Änderung der Parameter mit dem Index 2009h , wird ein spezielles Codewort benötigt. Um die Schreibfreigabe zu aktivieren, muss man den Parameter auf 0x6E657277 (die ASCII-Zeichen für "WREN") setzen. Alle ändere Werte deaktivieren die Schreibfreigabe.

Die Information, ob die Schreibfreigabe aktiv ist, wird beim Lesen des Parameters zurückgeliefert.

Parameterwerte beim Lesen:
Wert | Bedeutung
0 | nur Lesezugriff
1 | Lese- und Schreibzugriff


2009.02h CPU Kommando - Kommando

Name | DS2000_CpuCommand_Command
Bezeichnung | CPU Kommando - Kommando
Datentyp | uint16
Zugriff | nur Schreiben
Attribute | Passwortgeschützt
Wertbereich | {0x9999}
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | CmdCpuReset(delay_ms)
Querverweis | DS2000_CpuCommand_WriteEnable, DS2000_CpuCommand_DelayTime

Beschreibung

Der Parameter definiert die CPU-Kommados des Gerätes.

Parameterwerte:
Wert | Bedeutung
0x9999 | CPU-Reset

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId

d.SdoWr(0x2009, 0x03, 100)                      # Verzögerungszeit des Kommandos in ms
d.SdoWr(0x2009, 0x01, 0x6E657277)               # Schreiben aktivieren
try:
   d.SdoWr(0x2009, 0x02, 0x9999, timeout=50)    # CPU-Reset
except:
   pass


2009.03h CPU Kommando - Verzögerungszeit

Name | DS2000_CpuCommand_DelayTime
Bezeichnung | CPU Kommando - Verzögerungszeit
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {0, 65535}
Defaultwert | 100
Einheit | [ms]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS2000_CpuCommand_WriteEnable, DS2000_CpuCommand_Command

Beschreibung

Der Parameter definiert die Verzögerungszeit des CPU-Kommandos.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId

d.SdoWr(0x2009, 0x03, 100)                      # Verzögerungszeit des Kommandos in ms
d.SdoWr(0x2009, 0x01, 0x6E657277)               # Schreiben aktivieren
try:
   d.SdoWr(0x2009, 0x02, 0x9999, timeout=50)    # CPU-Reset
except:
   pass


Inhalt - Parameter 2000h - Defaultparameter wiederherstellen

2011.00h | DS2000_RestoreDefaultParameters_HighestSubindexSupported | Defaultparameter wiederherstellen - Höchster unterstützter Subindex
2011.01h | DS2000_RestoreDefaultParameters_All | Defaultparameter wiederherstellen - Alle Defaultparameter wiederherstellen
2011.02h | DS2000_RestoreDefaultParameters_Communication | Defaultparameter wiederherstellen - Kommunikationsdefaultparameter wiederherstellen
2011.03h | DS2000_RestoreDefaultParameters_Application | Defaultparameter wiederherstellen - Applikationsdefaultparameter wiederherstellen
2011.05h | DS2000_RestoreDefaultParameters_Manufacturer_0x2000 | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x2000-0x2FFF)
2011.06h | DS2000_RestoreDefaultParameters_Manufacturer_0x3000 | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x3000-0x3FFF)


2011.00h Defaultparameter wiederherstellen - Höchster unterstützter Subindex

Name | DS2000_RestoreDefaultParameters_HighestSubindexSupported
Bezeichnung | Defaultparameter wiederherstellen - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 06h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.32
Geräte | Alle
PLC Funktion | -
Querverweis | DS2000_RestoreDefaultParameters_All, DS2000_RestoreDefaultParameters_Communication, DS2000_RestoreDefaultParameters_Application, DS2000_RestoreDefaultParameters_Manufacturer_0x2000, DS2000_RestoreDefaultParameters_Manufacturer_0x3000

Beschreibung

Mit diesem Objekt werden Parameterbereiche entsprechend des Kommunikationsprofils des Gerätes auf Werkseinstellungen zurückgesetzt.

Achtung: Die Änderung ist nur temporär. Zum permanenten Zurücksetzen der Parameter führen Sie nach dem Zurücksetzen auf Werkseinstellungen einen entsprechenen Speicherbefehl aus (siehe COP_StoreParameters_HighestSubindexSupported).

Folgende Parametergruppen werden unterstützt:
  • Sub-index 00h enthält die Anzahl der unterstützen Subindizes.
  • Sub-index 01h - Rücksetzen aller Parameter des Gerätes.
  • Sub-index 02h - Rücksetzen der Kommunikationsparameter (Index von 1000h bis 1FFFh).
  • Sub-index 03h - Rücksetzen der Applikationsparameter (Index von 6000h bis 9FFFh).
  • Sub-index 05h - Rücksetzen der Herstellerspezifischen Parameter Bereich 1 (Index von 2000h bis 2FFFh)
  • Sub-index 06h - Rücksetzen der Herstellerspezifischen Parameter Bereich 2 (Index von 3000h bis 3FFFh)
Zur Vermeidung des unbeabsichtigten Rücksetzens, wird ein spezielles Codewort benötigt, welches auf den entsprechenden Subindex geschrieben wird. Es werden die ASCII-Zeichen für "load" geschrieben:

Restore default write access signature

Nach Schreiben des korrekten Codes auf den entsprechenden Subindexes, werden die Parameter auf Default zurückgesetzt. Nach erfolgtem Rücksetzen erfolgt die Rückbestätigung des SDO-Schreibbefehls (SDO download initiate response). Wenn das Rücksetzen fehlschlägt, antwortet das Gerät mit einer SDO Abbruch Message (abort code: 0606 0000h).
Wird ein falscher Code geschrieben, wird das Rücksetzen abgelehnt und das Gerät antwortet mit einer Abbruch Message
(abort code: 0800 002xh).

Die Defaultwerte werden ohne Reset des Gerätes übernommen.

Beim Lesen des entsprechenden Subindexes liefert das Gerät Informationen über die Restore-Funktionalität nach folgendem Format:

Restore default read access structure

Struktur des gelesenen Wertes:

Bit | Wert | Beschreibung
cmd | 0b 1b | CANopen - Gerät unterstützt kein Rücksetzen der Parameter CANopen - Gerät unterstützt Rücksetzen der Parameter


2011.01h Defaultparameter wiederherstellen - Alle Defaultparameter wiederherstellen

Name | DS2000_RestoreDefaultParameters_All
Bezeichnung | Defaultparameter wiederherstellen - Alle Defaultparameter wiederherstellen
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.32
Geräte | Alle
PLC Funktion | -
Querverweis | DS2000_RestoreDefaultParameters_HighestSubindexSupported, DS2000_RestoreDefaultParameters_Communication, DS2000_RestoreDefaultParameters_Application, DS2000_RestoreDefaultParameters_Manufacturer_0x2000, DS2000_RestoreDefaultParameters_Manufacturer_0x3000

Beschreibung

Mit diesem Objekt werden alle Parameter im Gerät zurückgesetzt.

Siehe auch DS2000_RestoreDefaultParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x2011,0x01,0x64616F6C)                 # Alle Defaultparameter wiederherstellen


2011.02h Defaultparameter wiederherstellen - Kommunikationsdefaultparameter wiederherstellen

Name | DS2000_RestoreDefaultParameters_Communication
Bezeichnung | Defaultparameter wiederherstellen - Kommunikationsdefaultparameter wiederherstellen
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.32
Geräte | Alle
PLC Funktion | -
Querverweis | DS2000_RestoreDefaultParameters_HighestSubindexSupported, DS2000_RestoreDefaultParameters_All, DS2000_RestoreDefaultParameters_Application, DS2000_RestoreDefaultParameters_Manufacturer_0x2000, DS2000_RestoreDefaultParameters_Manufacturer_0x3000

Beschreibung

Mit diesem Objekt werden die Kommunikationsparameter auf Default zurückgesetzt (Index 1000h - 1FFFh) .

Siehe auch DS2000_RestoreDefaultParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x2011,0x02,0x64616F6C)                 # Defaultparameter wiederherstellen


2011.03h Defaultparameter wiederherstellen - Applikationsdefaultparameter wiederherstellen

Name | DS2000_RestoreDefaultParameters_Application
Bezeichnung | Defaultparameter wiederherstellen - Applikationsdefaultparameter wiederherstellen
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.32
Geräte | Alle
PLC Funktion | -
Querverweis | DS2000_RestoreDefaultParameters_HighestSubindexSupported, DS2000_RestoreDefaultParameters_All, DS2000_RestoreDefaultParameters_Communication, DS2000_RestoreDefaultParameters_Manufacturer_0x2000, DS2000_RestoreDefaultParameters_Manufacturer_0x3000

Beschreibung

Mit diesem Objekt werden die Applikationsparameter rückgesetzt (Index 6000h - 9FFFh).

Siehe auch DS2000_RestoreDefaultParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x2011,0x03,0x64616F6C)                 # Defaultparameter wiederherstellen


2011.05h Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x2000-0x2FFF)

Name | DS2000_RestoreDefaultParameters_Manufacturer_0x2000
Bezeichnung | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x2000-0x2FFF)
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.32
Geräte | Alle
PLC Funktion | -
Querverweis | DS2000_RestoreDefaultParameters_HighestSubindexSupported, DS2000_RestoreDefaultParameters_All, DS2000_RestoreDefaultParameters_Communication, DS2000_RestoreDefaultParameters_Application, DS2000_RestoreDefaultParameters_Manufacturer_0x3000

Beschreibung

Mit diesem Objekt werden die Herstellerspezifischen Parameter Bereich 1 rückgesetzt (Index 2000h - 2FFFh) .

Siehe auch DS2000_RestoreDefaultParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x2011,0x05,0x64616F6C)                 # Defaultparameter wiederherstellen


2011.06h Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x3000-0x3FFF)

Name | DS2000_RestoreDefaultParameters_Manufacturer_0x3000
Bezeichnung | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x3000-0x3FFF)
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.32
Geräte | Alle
PLC Funktion | -
Querverweis | DS2000_RestoreDefaultParameters_HighestSubindexSupported, DS2000_RestoreDefaultParameters_All, DS2000_RestoreDefaultParameters_Communication, DS2000_RestoreDefaultParameters_Application, DS2000_RestoreDefaultParameters_Manufacturer_0x2000

Beschreibung

Mit diesem Objekt werden die Herstellerspezifischen Parameter Bereich 2 rückgesetzt (Index 3000h - 3FFFh).

Siehe auch DS2000_RestoreDefaultParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x2011,0x06,0x64616F6C)                 # Defaultparameter wiederherstellen


Inhalt - Parameter 2000h - Sync Producer

2021.00h | DS2000_SyncProducer_HighestSubindexSupported | Sync Producer - Höchster unterstützter Subindex
2021.01h | DS2000_SyncProducer_Enable | Sync Producer - Aktivierung


2021.00h Sync Producer - Höchster unterstützter Subindex

Name | DS2000_SyncProducer_HighestSubindexSupported
Bezeichnung | Sync Producer - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.32
Geräte | Alle
PLC Funktion | -
Querverweis | DS2000_SyncProducer_Enable

Beschreibung

Der Parameter enthält die Anzahl der unterstützen Subindizes.


2021.01h Sync Producer - Aktivierung

Name | DS2000_SyncProducer_Enable
Bezeichnung | Sync Producer - Aktivierung
Datentyp | int8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.32
Geräte | Alle
PLC Funktion | -
Querverweis | DS2000_SyncProducer_HighestSubindexSupported, ,

Beschreibung

Der Parameter aktiviert bzw. deaktiviert das Gerät als SYNC Producer.

Parameterwerte:
Wert | Bedeutung
0 | Das Gerät arbeitet als Consumer und synchronisiert den internen Clock mit dem SYNC des Producers.
1 | Das Gerät arbeitet als Producer und sendet zyklisch SYNC Messages


Inhalt - Parameter 3000h (DSA)

3000.00h | DEV_Cmd | Gerätekommando
3000.01h | DEV_Cmd_ExecOnChange | Gerätekommando - Ausführbar bei Änderung
3000.02h | DEV_Cmd2 | Gerätekommando 2
3000.08h | DEV_Cmd_SetError | Gerätekommando - Fehlersetzen
3000.10h | DEV_CmdData0 | Gerätekommando - Daten 0
3000.11h | DEV_CmdData1 | Gerätekommando - Daten 1
3000.12h | DEV_CmdData2 | Gerätekommando - Daten 2
3000.20h | DEV_CmdData0_i16 | Gerätekommando - Daten 0 (int16)
3000.21h | DEV_CmdData1_i16 | Gerätekommando - Daten 1 (int16)
3000.22h | DEV_CmdData2_i16 | Gerätekommando - Daten 2 (int16)
3000.70h | DEV_CmdResult | Gerätekommando - Ergebnis
3000.81h | DEV_CmdError | Gerätekommando - Fehler
3000.83h | DEV_CmdCounter | Gerätekommando - Zähler
3001.00h | DEV_ErrorReg | Error Register
3002.00h | DEV_Status | Statusregister
3003.00h | DEV_Mode | Betriebsart
3004.00h | DEV_Enable | Betriebsfreigabe
3008.00h | DEV_ConfigErrors | Fehler Konfiguration
3010.11h | DEV_Event_Cmd1OnError | Erreigniskommando 1 - bei Fehlern
3010.12h | DEV_Event_Cmd2OnError | Erreigniskommando 2 - bei Fehlern
3010.13h | DEV_Event_Cmd3OnError | Erreigniskommando 3 - bei Fehlern
3010.14h | DEV_Event_Cmd4OnError | Erreigniskommando 4 - bei Fehlern
3010.31h | DEV_Event_Cmd1OnCommError | Erreigniskommando 1 - bei Kommunikationsfehlern
3010.32h | DEV_Event_Cmd2OnCommError | Erreigniskommando 2 - bei Kommunikationsfehlern
3010.33h | DEV_Event_Cmd3OnCommError | Erreigniskommando 3 - bei Kommunikationsfehlern
3010.34h | DEV_Event_Cmd4OnCommError | Erreigniskommando 4 - bei Kommunikationsfehlern
3012.10h | DEV_Event_CmdOnSpecificError1 | Erreigniskommandos - bei spezifischem Fehler 1
3012.11h | DEV_Event_Cmd1OnSpecificError1 | Erreigniskommando 1 - bei spezifischem Fehler 1
3012.12h | DEV_Event_Cmd2OnSpecificError1 | Erreigniskommando 2 - bei spezifischem Fehler 1
3012.13h | DEV_Event_Cmd3OnSpecificError1 | Erreigniskommando 3 - bei spezifischem Fehler 1
3012.14h | DEV_Event_Cmd4OnSpecificError1 | Erreigniskommando 4 - bei spezifischem Fehler 1
3012.20h | DEV_Event_CmdOnSpecificError2 | Erreigniskommandos - bei spezifischem Fehler 2
3012.21h | DEV_Event_Cmd1OnSpecificError2 | Erreigniskommando 1 - bei spezifischem Fehler 2
3012.22h | DEV_Event_Cmd2OnSpecificError2 | Erreigniskommando 2 - bei spezifischem Fehler 2
3012.23h | DEV_Event_Cmd3OnSpecificError2 | Erreigniskommando 3 - bei spezifischem Fehler 2
3012.24h | DEV_Event_Cmd4OnSpecificError2 | Erreigniskommando 4 - bei spezifischem Fehler 2
3012.30h | DEV_Event_CmdOnSpecificError3 | Erreigniskommandos - bei spezifischem Fehler 3
3012.31h | DEV_Event_Cmd1OnSpecificError3 | Erreigniskommando 1 - bei spezifischem Fehler 3
3012.32h | DEV_Event_Cmd2OnSpecificError3 | Erreigniskommando 2 - bei spezifischem Fehler 3
3012.33h | DEV_Event_Cmd3OnSpecificError3 | Erreigniskommando 3 - bei spezifischem Fehler 3
3012.34h | DEV_Event_Cmd4OnSpecificError3 | Erreigniskommando 4 - bei spezifischem Fehler 3
3012.40h | DEV_Event_CmdOnSpecificError4 | Erreigniskommandos - bei spezifischen Fehler 4
3012.41h | DEV_Event_Cmd1OnSpecificError4 | Erreigniskommando 1 - bei spezifischem Fehler 4
3012.42h | DEV_Event_Cmd2OnSpecificError4 | Erreigniskommando 2 - bei spezifischem Fehler 4
3012.43h | DEV_Event_Cmd3OnSpecificError4 | Erreigniskommando 3 - bei spezifischem Fehler 4
3012.44h | DEV_Event_Cmd4OnSpecificError4 | Erreigniskommando 4 - bei spezifischem Fehler 4
3014.11h | DEV_Event1_OnUserCmd1 | Kommando 1 bei Benutzerkommando 1
3014.12h | DEV_Event2_OnUserCmd1 | Kommando 2 bei Benutzerkommando 1
3014.13h | DEV_Event3_OnUserCmd1 | Kommando 3 bei Benutzerkommando 1
3014.14h | DEV_Event4_OnUserCmd1 | Kommando 4 bei Benutzerkommando 1
3014.21h | DEV_Event1_OnUserCmd2 | Kommando 1 bei Benutzerkommando 2
3014.22h | DEV_Event2_OnUserCmd2 | Kommando 2 bei Benutzerkommando 2
3014.23h | DEV_Event3_OnUserCmd2 | Kommando 3 bei Benutzerkommando 2
3014.24h | DEV_Event4_OnUserCmd2 | Kommando 4 bei Benutzerkommando 2
3014.31h | DEV_Event1_OnUserCmd3 | Kommando 1 bei Benutzerkommando 3
3014.32h | DEV_Event2_OnUserCmd3 | Kommando 2 bei Benutzerkommando 3
3014.33h | DEV_Event3_OnUserCmd3 | Kommando 3 bei Benutzerkommando 3
3014.34h | DEV_Event4_OnUserCmd3 | Kommando 4 bei Benutzerkommando 3
3014.41h | DEV_Event1_OnUserCmd4 | Kommando 1 bei Benutzerkommando 4
3014.42h | DEV_Event2_OnUserCmd4 | Kommando 2 bei Benutzerkommando 4
3014.43h | DEV_Event3_OnUserCmd4 | Kommando 3 bei Benutzerkommando 4
3014.44h | DEV_Event4_OnUserCmd4 | Kommando 4 bei Benutzerkommando 4
3014.51h | DEV_Event1_OnUserCmd5 | Kommando 1 bei Benutzerkommando 5
3014.52h | DEV_Event2_OnUserCmd5 | Kommando 2 bei Benutzerkommando 5
3014.53h | DEV_Event3_OnUserCmd5 | Kommando 3 bei Benutzerkommando 5
3014.54h | DEV_Event4_OnUserCmd5 | Kommando 4 bei Benutzerkommando 5
3014.61h | DEV_Event1_OnUserCmd6 | Kommando 1 bei Benutzerkommando 6
3014.62h | DEV_Event2_OnUserCmd6 | Kommando 2 bei Benutzerkommando 6
3014.63h | DEV_Event3_OnUserCmd6 | Kommando 3 bei Benutzerkommando 6
3014.64h | DEV_Event4_OnUserCmd6 | Kommando 4 bei Benutzerkommando 6
3014.71h | DEV_Event1_OnUserCmd7 | Kommando 1 bei Benutzerkommando 7
3014.72h | DEV_Event2_OnUserCmd7 | Kommando 2 bei Benutzerkommando 7
3014.73h | DEV_Event3_OnUserCmd7 | Kommando 3 bei Benutzerkommando 7
3014.74h | DEV_Event4_OnUserCmd7 | Kommando 4 bei Benutzerkommando 7
3014.81h | DEV_Event1_OnUserCmd8 | Kommando 1 bei Benutzerkommando 8
3014.82h | DEV_Event2_OnUserCmd8 | Kommando 2 bei Benutzerkommando 8
3014.83h | DEV_Event3_OnUserCmd8 | Kommando 3 bei Benutzerkommando 8
3014.84h | DEV_Event4_OnUserCmd8 | Kommando 4 bei Benutzerkommando 8
3020.00h | DEV_Code | Gerätecode
3020.01h | DEV_SubCode | Gerätesubcode
3020.02h | DEV_Revision | Revisionscode
3020.06h | DEV_McCpuId | CPU Kennungscode
3023.00h | DEV_VersionSw | Softwareversion
3023.01h | DEV_SubVersionSw | Softwaresubversion
3023.02h | DEV_RelVersionSw | Software release
3024.00h | DEV_VersionHw | Hardwareversion
3025.00h | DEV_CustomerCode | Kundencode
3025.01h | DEV_CustomerSwOption | Kundencode der Software
3025.02h | DEV_CustomerHwOption | Kundencode der Hardware
302C.00h | DEV_FreeData | Freie Daten
302D.01h | DEV_Article_Nr | Artikelnummer des Gerätes
302D.02h | DEV_Serial_Nr | Seriennummer des Gerätes
302E.00h | DEV_OemData_Cmd | OEM Daten - Kommando
302E.01h | DEV_OemData_D0 | OEM Daten - D0
302E.02h | DEV_OemData_D1 | OEM Daten - D1
302E.03h | DEV_OemData_D2 | OEM Daten - D2
302E.04h | DEV_OemData_D3 | OEM Daten - D3
302E.05h | DEV_OemData_D4 | OEM Daten - D4
302E.06h | DEV_OemData_D5 | OEM Daten - D5
302E.07h | DEV_OemData_D6 | OEM Daten - D6
302E.08h | DEV_OemData_D7 | OEM Daten - D7
302E.09h | DEV_OemData_D8 | OEM Daten - D8
302E.0Ah | DEV_OemData_D9 | OEM Daten - D9
302F.00h | DEV_UserData_Cmd | Benutzer Daten - Kommando
302F.01h | DEV_UserData_D0 | Benutzer Daten - D0
302F.02h | DEV_UserData_D1 | Benutzer Daten - D1
302F.03h | DEV_UserData_D2 | Benutzer Daten - D2
302F.04h | DEV_UserData_D3 | Benutzer Daten - D3
3031.00h | DEV_MaxUp | Max. Leistungsspannung
3032.00h | DEV_MaxIm | Max. Motorstrom
3050.00h | DEV_DinEnable | Eingangszuordnung - Betriebsfreigabe
3051.00h | DEV_DinClearError | Eingangszuordnung - Fehlerquittierung
3052.00h | DEV_DinStartStop | Eingangszuordnung - Start/Stop
3053.00h | DEV_DinDir | Eingangszuordnung - Drehrichtungsumkehr
3055.00h | DEV_DinLimitPos | Eingangszuordnung - positive Endschalter
3056.00h | DEV_DinLimitNeg | Eingangszuordnung - negative Endschalter
3057.00h | DEV_DinReference | Eingangszuordnung - Referenzschalter
3060.00h | DEV_DoutError | Ausgangszuordnung - Fehler
3080.00h | DEV_ContinueMode | Continue - Modus
3090.00h | DEV_MinUp_Error | Minimum Up - Error
3090.04h | DEV_UpOff_Stotterbremse | Up - Ausschalten Stotterbremse
3090.05h | DEV_UpOn_Stotterbremse | Up - Einschalten Stotterbremse
3100.00h | IO_AIN0 | Analoger Eingang 0
3101.00h | IO_AIN1 | Analoger Eingang 1
3108.00h | IO_AIN0_Offset | Analoger Eingang 0 - Offset
3108.01h | IO_AIN1_Offset | Analoger Eingang 1 - Offset
310A.00h | IO_AIN0_DeadBand | Analoger Eingang 0 - Totbereich
310A.01h | IO_AIN1_DeadBand | Analoger Eingang 1 - Totbereich
3110.00h | IO_AIN_Voltage_Ue | Elektronikspannung - Ue
3111.00h | IO_AIN_Voltage_Up | Leistungsspannung - Up
3112.00h | IO_AIN_Voltage_Um | Motorspannung - Um
3113.00h | IO_AIN_Current_Im | Motorstrom - Im
3114.00h | IO_AIN_Temperature_Power | Temperatur - Leistungsstufe
3120.00h | IO_DIN_P0 | Digitale Eingänge - Port0
3120.01h | IO_DIN_P1 | Digitale Eingänge - Port1
3128.00h | IO_DIN_Hall | Digitale Eingänge - Hallsensoren
3128.01h | IO_DIN_Enc | Digitale Eingänge - Encoder
3150.00h | IO_DOUT_P0 | Digitale Ausgänge - Port0
3154.00h | IO_DOUT_Enable | Freigabe der digitalen Ausgänge
3158.00h | IO_DOUT_LedsEnable | LED - Benutzersteuerung aktivieren
3158.01h | IO_DOUT_LedsState | LED - Zustand
3200.00h | CURR_DesiredValue | Stromsollwert
3204.00h | CURR_DesiredValue_Source | Stromsollwertquelle
3205.00h | CURR_DesiredValue_Reference | Strombezugswert für analogen Eingang
3210.00h | CURR_Kp | PI-Stromregler - Proportionalfaktor
3211.00h | CURR_Ki | PI-Stromregler - Integralfaktor
3219.00h | CURR_Pid_FactorNum | PI-Stromregler - Faktor Zähler
3219.01h | CURR_Pid_FactorDen | PI-Stromregler - Faktor Nenner
3221.00h | CURR_LimitMaxPos | Strombegrenzung - max. positiv
3223.00h | CURR_LimitMaxNeg | Strombegrenzung - max. negativ
3224.00h | CURR_DynLimitMode | Dynamische Strombegrenzung - Mode
3224.01h | CURR_DynLimitPeak | Dynamische Strombegrenzung - Spitzenstrom
3224.02h | CURR_DynLimitCont | Dynamische Strombegrenzung - Dauerstrom
3224.03h | CURR_DynLimitTime | Dynamische Strombegrenzung - Zeit
3224.12h | CURR_ActDynLimitCurrent | Dynamische Strombegrenzung I*t - aktuelle Strombegrenzung
3240.00h | CURR_Acc_dI | Strombeschleunigung - delta I
3241.00h | CURR_Acc_dT | Strombeschleunigung - delta T
3242.00h | CURR_Dec_dI | Stromverzögerung - delta I
3243.00h | CURR_Dec_dT | Stromverzögerung - delta T
3244.00h | CURR_Dec_QuickStop_dI | Stromschnellhaltverzögerung - delta I
3245.00h | CURR_Dec_QuickStop_dT | Stromschnellhaltverzögerung - delta T
324C.00h | CURR_RampType | Stromrampengenerator - Rampentyp
324D.00h | CURR_RampState | Stromrampengenerator - Zustand
3250.00h | CURR_Feedback | Stromregler - Rückführung
3250.03h | CURR_Feedback_Reference | Stromregler - Rückführungsbezugswert
3260.00h | CURR_ActualTargetCurrent | Aktueller Stromsollwert
3261.00h | CURR_ActualCommandCurrent | Aktueller Kommandostrom
3262.00h | CURR_ActualCurrent | Aktueller Motorstrom
3262.01h | CURR_ActualAvgCurrent | Aktueller gefilterter Motorstrom
3262.04h | CURR_ActualPosMaxCurr | Maximaler positiver Motorstrom
3262.05h | CURR_ActualNegMaxCurr | Maximaler negativer Motorstrom
3263.00h | CURR_ActualFollowingError | Aktueller Stromfehler
32A0.00h | CURR_SampleTime | Stromregler - Abtastrate
32A0.08h | CURR_SamplePoint | Stromregler - Abtastzeitpunkt Korrektur
32A0.09h | CURR_SampleRlCorr | Stromregler - R/L Korrektur
32A0.10h | CURR_ActAvgCurrFilterLevel | Filterstufe für Aktueller gefilterter Motorstrom
3300.00h | VEL_DesiredValue | Drehzahlsollwert
3302.00h | VEL_ScaleNum | Drehzahlskalierungsfaktor - Zähler
3303.00h | VEL_ScaleDen | Drehzahlskalierungsfaktor - Nenner
3304.00h | VEL_DesiredValue_Source | Drehzahlsollwertquelle
3305.00h | VEL_DesiredValue_Reference | Drehzahlbezugswert für analogen Eingang
330A.00h | VEL_DimensionNum | Drehzahldimensionsfaktor - Zähler
330B.00h | VEL_DimensionDen | Drehzahldimensionsfaktor - Nenner
3310.00h | VEL_Kp | PID-Regler - Proportionalfaktor
3311.00h | VEL_Ki | PID-Regler - Integralfaktor
3312.00h | VEL_Kd | PID-Regler - Differential faktor
3313.00h | VEL_ILimit | PID-Regler - Integrationslimit
3314.00h | VEL_Kvff | PID-Regler - Geschwindigkeitsvorsteuerung
3315.00h | VEL_Kaff | PID-Regler - Beschleunigungsvorsteuerung
3317.00h | VEL_KIxR | IxR Faktor
3318.00h | VEL_KdSampleTime | PID-Regler - Aktualisierungszeit für Differentialfaktor
3321.00h | VEL_LimitMaxPos | Drehzahlbegrenzung - max. positiv
3323.00h | VEL_LimitMaxNeg | Drehzahlbegrenzung - max. negativ
3340.00h | VEL_Acc_dV | Drehzahlbeschleunigung - delta V
3341.00h | VEL_Acc_dT | Drehzahlbeschleunigung - delta T
3342.00h | VEL_Dec_dV | Drehzahlverzögerung - delta V
3343.00h | VEL_Dec_dT | Drehzahlverzögerung - delta T
3344.00h | VEL_Dec_QuickStop_dV | QuickStop-Drehzahlverzögerung - delta V
3345.00h | VEL_Dec_QuickStop_dT | QuickStop-Drehzahlverzögerung - delta T
334C.00h | VEL_RampType | Rampengenerator - Rampentyp
334D.00h | VEL_RampState | Rampengenerator - Zustand
3350.00h | VEL_Feedback | Drehzahlrückführung
3350.03h | VEL_Feedback_Reference | Drehzahlrückführung - Bezugswert
3360.00h | VEL_ActualTargetVel | Aktuelle Sollgeschwindigkeit
3361.00h | VEL_ActualCommandVel | Aktuelle Kommandogeschwindigkeit
3362.00h | VEL_ActualVel | Aktuelle ungefilterte Geschwindigkeit
3380.00h | VEL_Acc | Drehzahlbeschleunigung in [U/min²]
3381.00h | VEL_Dec | Drehzahlverzögerung in [U/min²]
3382.00h | VEL_Dec_QuickStop | Drehzahl-QuickStop-Verzögerung in [U/min²]
33A0.00h | VEL_SampleTime | Drehzahl-/Positionerregler - Abtastrate
33C0.00h | VEL_BlockageGuarding_ConfigFlags | Blockierungsüberwachung - Konfigurationsflags
33C0.01h | VEL_BlockageGuarding_VelLow | Blockierungsüberwachung - untere Drehzahl
33C0.02h | VEL_BlockageGuarding_VelHigh | Blockierungsüberwachung - obere Drehzahl
33C0.03h | VEL_BlockageGuarding_Time | Blockierungsüberwachung - Zeit
33C0.04h | VEL_BlockageGuarding_Status | Blockierungsüberwachung - Status
3500.00h | SVEL_DesiredValue | SVel Sollwert
3502.00h | SVEL_ScaleNum | SVel Skalierungsfaktor - Zähler
3503.00h | SVEL_ScaleDen | SVel Skalierungsfaktor - Nenner
3504.00h | SVEL_DesiredValue_Source | SVel Sollwertquelle
3505.00h | SVEL_DesiredValue_Reference | SVel Bezugswert für analogen Eingang
3510.00h | SVEL_Kp | SVel PI-Regler - Proportionalfaktor
3511.00h | SVEL_Ki | SVel PI-Regler - Integralfaktor
3517.00h | SVEL_KIxR | SVel IxR Faktor
3521.00h | SVEL_LimitMaxPos | SDrehzahlbegrenzung - max. positiv
3523.00h | SVEL_LimitMaxNeg | SDrehzahlbegrenzung - max. negativ
3550.00h | SVEL_Feedback | SVel Rückführung
3560.00h | SVEL_ActualTargetVel | SVel - Aktuelle Sollgeschwindigkeit
3561.00h | SVEL_ActualCommandVel | SVel - Aktuelle Kommandogeschwindigkeit
35A1.00h | SVEL_MaxVelRange | SVel max. Drehzahlbereich
3708.00h | POS_Mode | Pos Betriebsart
3709.00h | POS_ConfigFlags | Pos Konfiguration
3720.00h | POS_PositionLimitMin | Positionsbegrenzung - minimum
3720.01h | POS_PositionLimitMax | Positionsbegrenzung - maximum
3732.00h | POS_FollowingErrorWindow | Positionsschleppfehler - Fenster
3732.01h | POS_FollowingErrorWindowDyn | Positionsschleppfehler - Fenster, Dynamisch
3733.00h | POS_FollowingErrorTime | Positionsschleppfehler - Zeit
3733.01h | POS_FollowingErrorTimeDyn | Positionsschleppfehler - Zeit, Dynamisch
3734.00h | POS_FollowingErrorLimit | Positionsschleppfehler - Begrenzung
373A.00h | POS_PositionWindow | Positionierfenster
373B.00h | POS_PositionWindowTime | Positionierfenster - Zeit
373B.01h | POS_PositionWindowTimeout | Positionierfenster - Timeout
373C.00h | POS_ReachedConfigFlags | Position erreicht - Konfigurationsbits
373D.00h | POS_DeadWindowOff | Positionierfenster - Endstufe sperren
373D.01h | POS_DeadWindowOn | Positionierfenster - Endstufe aktivieren
373E.00h | POS_DeadTimeOff | Positionierfenster Zeit - Endstufe sperren
373E.01h | POS_DeadTimeOn | Positionierfenster Zeit - Endstufe aktivieren
373F.00h | POS_DeadVel | Positionierfenster - Geschwindigkeit
374C.00h | POS_RampType | Pos. Rampengenerator - Rampentyp
374D.00h | POS_RampState | Pos. Rampengenerator - Zustand
3760.00h | POS_ActualTargetPosition | Aktuelle Zielposition
3761.00h | POS_ActualCommandPosition | Aktuelle Kommandoposition
3761.01h | POS_ActualCommandPositionReg | Aktuelle interne Kommandoposition
3762.00h | POS_ActualPosition | Aktuelle Position (Istposition)
3762.01h | POS_ActualPositionReg | Aktuelle interne Position (Istposition)
3763.00h | POS_ActualFollowingError | Aktueller Positionsschleppabstand
3763.01h | POS_ActualFollowingErrorReg | Aktueller interner Positionsschleppabstand
3764.00h | POS_ActualIndexPosition | Aktuelle Indexposition
3765.00h | POS_ActualOrigin | Position Ursprung
3770.00h | POS_ActualTargetPosition_cnt | Aktuelle Zielposition in Inkrementen
3771.00h | POS_ActualCommandPosition_cnt | Aktuelle Kommandoposition in Inkrementen
3772.00h | POS_ActualPosition_cnt | Aktuelle Position in Inkrementen
3773.00h | POS_ActualFollowingError_cnt | Aktueller Positionsschleppabstand in Inkrementen
3774.00h | POS_ActualIndexPosition_cnt | Aktuelle Indexposition in Inkrementen
3775.00h | POS_ActualOrigin_cnt | Position Ursprung in Inkrementen
3790.00h | POS_Mova | Absolute Positionierung
3791.00h | POS_Movr | Relative Positionierung
37A4.01h | POS_GearBacklashComp_Path | Getriebespielausgleich - Strecke
37A4.02h | POS_GearBacklashComp_Vel | Getriebespielausgleich - Drehzahl
37B0.00h | POS_HomingCmd | Referenzfahrt - Kommando
37B1.00h | POS_HomingStatus | Referenzfahrt - Status
37B1.01h | POS_HomingError | Referenzfahrt - Error
37B1.02h | POS_HomingState | Referenzfahrt - Zustand
37B1.03h | POS_HomingRefToIndex | Referenzfahrt - Strecke Referenzschalter zu Index
37B1.04h | POS_HomingRefToIndex_cnt | Referenzfahrt - Strecke Referenzschalter zu Index in Ink.
37B2.00h | POS_HomingMethod | Referenzfahrt - Methode
37B3.00h | POS_HomingOffset | Referenzfahrt - Referenzoffset
37B4.00h | POS_HomingVelSwitch | Referenzfahrt - Geschwindigkeit für Schaltersuche
37B4.01h | POS_HomingVelZero | Referenzfahrt - Geschwindigkeit für Nullpunktanfahrt
37B5.00h | POS_HomingAcc | Referenzfahrt - Beschleunigung
37B5.01h | POS_HomingDec | Referenzfahrt - Verzögerung
37B6.00h | POS_HomingMaxIndexPath | Referenzfahrt - max. Strecke für Indexsuche
37B6.01h | POS_HomingIndexOffset | Referenzfahrt - Indexoffset
37B7.00h | POS_HomingBlock_ConfigFlags | Referenzfahrt auf Block - Konfiguration
37B7.01h | POS_HomingBlock_VelLow | Referenzfahrt auf Block - untere Drehzahl
37B7.02h | POS_HomingBlock_VelHigh | Referenzfahrt auf Block - obere Drehzahl
37B7.03h | POS_HomingBlock_Time | Referenzfahrt auf Block - Zeit
37B7.04h | POS_HomingBlock_FollowingErrorWindow | Referenzfahrt auf Block - Positionsschleppfehlerfenster
37C1.00h | POS_InterpStatus | Interpolation - Status
3830.00h | PWM_Frequency | PWM Frequenz
3830.01h | PWM_Mode | PWM Modus
3830.62h | PWM_ActualPwm_oo | Aktuelle PWM des Geräts
3850.00h | SYS_Clock | System Clock
3850.02h | SYS_Timer_2ms | System Timer 2ms
3900.00h | MOTOR_Type | Motortyp
3901.00h | MOTOR_Nn | Motornenndrehzahl
3902.00h | MOTOR_Un | Motornennspannung
3910.00h | MOTOR_PolN | Motorpolanzahl
3911.00h | MOTOR_Polarity | Motorpolarität
3913.00h | MOTOR_CommutationType | Kommutierungsart des Motors
3913.07h | MOTOR_Commutation_Polarity | Kommutierungspolarität des Motors
3913.20h | PreCommutationConfig | Vorkommutierung
3913.21h | PreCommutationVel | Vorkommutierung Bezugsdrehzahl
3913.23h | PreCommutationAngle | Vorkommutierungswinkel
3940.00h | MOTOR_HALL_Type | Hallsensortyp
3949.00h | MOTOR_HALL_DoutPulses_Mode | Hallpulse - Konfigurationsflags
3949.01h | MOTOR_HALL_DoutPulses_PosDirMask | Hallpulse - Bitmaske für positive Richtung
3949.02h | MOTOR_HALL_DoutPulses_NegDirMask | Hallpulse - Bitmaske für negative Richtung
3949.03h | MOTOR_HALL_DoutPulses_ModuloValue | Hallpulse - Modulowert
394A.00h | MOTOR_HALL_ActualPosition | Aktuelle Hallposition
39A2.00h | MOTOR_QuasiAbsEncoder_ConfigFlags | Quasi-Absolutencoder - Konfigurationsflag
39A2.01h | MOTOR_QuasiAbsEncoder_Status | Quasi-Absolutencoder - Status
39A2.02h | MOTOR_QuasiAbsEncoder_Error | Quasi-Absolutencoder - Fehler
39A2.07h | MOTOR_QuasiAbsEncoder_Tolerance_cnt | Quasi-Absolutencoder - Toleranz
39A2.08h | MOTOR_QuasiAbsEncoder_Action | Quasi-Absolutencoder - Kommando
39A2.10h | MOTOR_QuasiAbsEncoder_DeltaPos | Quasi-Absolutencoder - Korrekturabstand
39A2.20h | MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe | Quasi-Absolutencoder - minimale Spannung zum Positionspeichern
39A2.21h | MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe | Quasi-Absolutencoder - maximale Spannung zum Positionspeichern
39A2.31h | MOTOR_QuasiAbsEncoder_SavedPosition | Quasi-Absolutencoder - Gespeicherte Position
39A2.32h | MOTOR_QuasiAbsEncoder_SavedIndexPosition | Quasi-Absolutencoder - Gespeicherte Indexposition
39A2.33h | MOTOR_QuasiAbsEncoder_SavesCounter | Quasi-Absolutencoder - Speicherzähler
3A02.00h | MEASUREMENT_VelTime_ms | Zeitspanne für Geschwindigkeitsmessung
3A04.00h | MEASUREMENT_Vel_cnt | Gemessene Geschwindigkeit in Inkrementen
3A04.01h | MEASUREMENT_Vel_rpm | Gemessene Geschwindigkeit in [U/min]
3B00.00h | FCT_Control | Faktorgruppe - Control
3B00.01h | FCT_Precision | Faktorgruppe - Precision
3B10.00h | FCT_Polarity | Faktorgruppe - Polarität
3B11.00h | FCT_PosNotationIndex | Faktorgruppe - Position-Einheitenindex
3B12.00h | FCT_PosDimIndex | Faktorgruppe - Positions-Größenindex
3B13.00h | FCT_VelNotationIndex | Faktorgruppe - Geschwindigkeit-Einheitenindex
3B14.00h | FCT_VelDimIndex | Faktorgruppe - Geschwindigkeits-Größenindex
3B15.00h | FCT_AccNotationIndex | Faktorgruppe - Beschleinigung-Einheitenindex
3B16.00h | FCT_AccDimIndex | Faktorgruppe - Beschleunigungs-Größenindex
3B16.01h | FCT_AccFactorNum | Faktorgruppe - Beschleunigungsskalierung-Zähler
3B16.02h | FCT_AccFactorDen | Faktorgruppe - Beschleunigungsskalierung-Nenner
3B17.00h | FCT_PosScaleNum | Faktorgruppe - Positionsskalierung-Zähler
3B17.01h | FCT_PosScaleDen | Faktorgruppe - Positionsskalierung-Nenner
3B18.00h | FCT_VelScaleNum | Faktorgruppe - Geschwindigkeitsskalierung-Zähler
3B18.01h | FCT_VelScaleDen | Faktorgruppe - Geschwindigkeitsskalierung-Nenner
3B19.00h | FCT_GearRatio_MotorRev | Faktorgruppe - Getriebeübersetzung-Motorwelleumdrehungen
3B19.01h | FCT_GearRatio_ShaftRev | Faktorgruppe - Getriebeübersetzung-Wellenumdrehungen
3B1A.00h | FCT_FeedConstant_Feed | Faktorgruppe - Vorschubkonstante-Vorschub
3B1A.01h | FCT_FeedConstant_ShaftRev | Faktorgruppe - Vorschubkonstante-Wellenumdrehung
3F00.00h | DIAG_Enable | Diagnostik - Schreibfreigabe
3FA0.00h | DIAG_SIM_Control | Diagnostik - Aktivierung der Simulation der E/A's
3FA1.00h | DIAG_SIM_AIN_Mask | Diagnostik - Ain-Simulation - Maske
3FA2.00h | DIAG_SIM_AIN_ValueAin0 | Diagnostik - Ain-Simulation - Wert von Ain0
3FA2.01h | DIAG_SIM_AIN_ValueAin1 | Diagnostik - Ain-Simulation - Wert von Ain1
3FA3.00h | DIAG_SIM_DIN_Mask | Diagnostik - Din-Simulation - Maske
3FA4.00h | DIAG_SIM_DIN_Value | Diagnostik - Din-Simulation - Wert der digitalen Eingänge


Inhalt - Parameter 3000h (DSA) - Gerätekommandos

3000.00h | DEV_Cmd | Gerätekommando
3000.01h | DEV_Cmd_ExecOnChange | Gerätekommando - Ausführbar bei Änderung
3000.02h | DEV_Cmd2 | Gerätekommando 2
3000.08h | DEV_Cmd_SetError | Gerätekommando - Fehlersetzen
3000.10h | DEV_CmdData0 | Gerätekommando - Daten 0
3000.11h | DEV_CmdData1 | Gerätekommando - Daten 1
3000.12h | DEV_CmdData2 | Gerätekommando - Daten 2
3000.20h | DEV_CmdData0_i16 | Gerätekommando - Daten 0 (int16)
3000.21h | DEV_CmdData1_i16 | Gerätekommando - Daten 1 (int16)
3000.22h | DEV_CmdData2_i16 | Gerätekommando - Daten 2 (int16)
3000.70h | DEV_CmdResult | Gerätekommando - Ergebnis
3000.81h | DEV_CmdError | Gerätekommando - Fehler
3000.83h | DEV_CmdCounter | Gerätekommando - Zähler


3000.00h Gerätekommando

Name | DEV_Cmd
Bezeichnung | Gerätekommando
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {0h, 1h, 2h, 3h, 4h, 5h, 80h, 81h, 82h, 83h}
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.20
Geräte | Alle
PLC Funktion | Cmd(value)
Querverweis | -

Beschreibung

Beim Beschreiben dieses Parameters wird ein Gerätekommando ausgeführt.

Parameterwerte:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h 0 CMD_Nop - Keine Wirkung
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
04h 4 CMD_Continue Continue() Fortsetzen der Bewegung nach QuickStop oder Halt.

Achtung:
Um die Bewegung fortzusetzen, muss dieses Kommando nach QuickStop oder Halt ausgeführt werden, sonst nimmt der Controller neue Sollwerte nicht an -> der Motor bleibt in Stop-Zustand.
Dieses Verhalten kann mit dem Parameter DEV_ContinueMode geändert werden.
05h 5 CMD_Update Update() Sollwerte aktualisieren. Dieses Kommando wird z.B. in folgendem Fall benötigt.

Es wurde im Positioniermodus eine Reletivebewegung ausgelöst. Bevor die Zielposition erreicht wird, soll der Antrieb mit einer neuen Geschwindigkeit die Fahrt weiterführen. Mit folgender Befehlssequenz wird dies erreicht:

 Vel(1000)  # neue Geschwindigkeit
 Update()   # Zielposition aktualisieren,
           # und neue Bewegungsparameter übernehmen (Vel, Acc, Dec)
80h | 128 | CMD_StoreParam | StoreParam() | Alle aktuellen Parameterwerte aus dem 3000er Bereich werden in einem internen EEPROM (nichtflüchtiger Speicher) gespeichert.
81h | 129 | CMD_RestoreParam | RestoreParam() | Die im EEPROM gespeicherten Parameter werden geladen und aktiviert. Dies passiert auch automatisch in der Initialisierungsphase des Gerätes. Bei dem Vorgang wird eine Kontrollsumme (CRC32) der Parameter überprüft. Falls sie nicht korrekt ist, werden alle Parameter auf Defaultwert gesetzt, und das Gerät geht in einen Fehlerzustand über.
82h | 130 | CMD_DefaultParam | DefaultParam() | Alle Parameter werden auf Defaultwert gesetzt (Dabei werden die Werte nicht im EEPROM gespeichert).
83h | 131 | CMD_ClearParam | ClearParam() | Es werden die CMD_DefaultParam und CMD_StoreParam - Kommandos hintereinander ausgeführt.
Achtung
Ausführungszeit von CMD_StoreParam, CMD_RestoreParam, CMD_DefaultParam, CMD_ClearParam beträgt einige Sekunden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

d.SdoWr(0x3000, 0x00, 0x01)   # Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)   # Parameter zurücksetzen


3000.01h Gerätekommando - Ausführbar bei Änderung

Name | DEV_Cmd_ExecOnChange
Bezeichnung | Gerätekommando - Ausführbar bei Änderung
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {0h, 1h, 2h, 3h, 4h, 5h, 8h, 10h, 12h, 13h, 15h, 17h, 1Ah, 20h, 21h, 28h, 29h, 2Ah, 2Eh, 2Fh, 30h, 31h, 32h, 33h, 34h, 36h, 3Ah, 3Bh, 40h, 41h, 42h, 48h, 50h, 51h, 52h, 53h, 54h, 58h, 71h, 72h, 73h, 74h, 75h, 76h, 77h, 78h}
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | CmdExecOnChange(cmd)
Querverweis | DEV_CmdResult, DEV_CmdData0, DEV_CmdData1, DEV_CmdData2, DEV_Status, DEV_CmdCounter, DEV_Event1_OnUserCmd1

Beschreibung

Bei Änderungen dieses Parameters wird ein Gerätekommando ausgeführt.

Ein Kommando wird nur erkannt, wenn sich dieses ändert. Soll z.B. zweimal nacheinander relativ positioniert werden, ist dies nur durch ein erneutes Schicken eines neuen Kommandos möglich. Soll der Antriebsregler auf das gleiche Kommando reagieren, muss das höchstwertige Bit des Kommandos (Bit 7) getoggelt werden. So wird z.B. aus dem Kommando 34h (relative Positionierung) bei anschließender Verwendung B4h und dann wieder 34h.

Bei Änderung des Kommandowerts 0 (DEV_CmdData0) und/oder des Kommandowerts 1 (DEV_CmdData1) wird das aktuelle Gerätekommando als geändert markiert. D.h. wenn ein neues Gerätekommando geschrieben wird, wird dieses unabhängig vom alten und neuen Wert ausgeführt. Dieses Verhalten kann im Parameter DEV_CmdConfig beeinflusst werden.

Mit Hilfe des Statusregisters (DEV_Status, 3002.00h) kann kontrolliert werden, ob das Kommando erkannt wurde (DEV_Status, Bit 9 - STAT_CmdToggle) und ob es akzeptiert wurde (DEV_Status, Bit 10 - STAT_CmdError).

Gerätekommando:
Hex | Dec | Name | Beschreibung
00h | 0 | CMD_Nop | Keine Wirkung; auch als Toggelkommando nutzbar
01h | 1 | CMD_ClearError | Ein eventueller Fehler im Fehlerregister (DEV_ErrorReg) wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
04h | 4 | CMD_Continue | Fortsetzen der Bewegung nach QuickStop oder Halt. Achtung: Um die Bewegung fortzusetzen, muss dieses Kommando nach QuickStop oder Halt ausgeführt werden, sonst nimmt der Controller neue Sollwerte nicht an -> der Motor bleibt in Stop-Zustand (Ausnahme: Mit dem Parameter Continue - Modus (DEV_ContinueMode, 3080.00h) kann ein automatisches Continue parametriert werden.)
05h | 5 | CMD_Update | Sollwerte im Positioniermodus aktualisieren. Dieses Kommando wird z.B. in folgendem Fall benötigt: Es wurde im Positioniermodus eine Reletivbewegung ausgelöst. Bevor die Zielposition erreicht wird, soll der Antrieb mit einer neuen Geschwindigkeit die Fahrt weiterführen. Mit folgender Befehlssequenz wird dies erreicht: - Bewegungsparameter (Vel, Acc, Dec) über Kommandos (31h, 40h, 41h usw.) bzw Parameter (VEL_DesiredValue, VEL_Dec_dV, VEL_Dec_dT usw.) ändern - Bewegungsparameter (Vel, Acc, Dec) mit Kommando CMD_Update (05h) übernehmen
08h | 8 | CMD_SetError | Es wird ein Fehler gesetzt. Der Fehlercode steht im Kommandowert 0 (DEV_CmdData0)

Betriebsart (Mode) des Antriebsreglers:
Hex | Dec | Name | Beschreibung
10h | 16 | CMD_ModeOff | Leistung und Regelung ausgeschaltet
12h | 18 | CMD_ModeCurr | Stromreglermodus
13h | 19 | CMD_ModeVel | Drehzahlmodus
15h | 21 | CMD_ModeSVel | untergeordneter Drehzahlregler: Rampen und Lageregler nicht wirksam
17h | 23 | CMD_ModePos | Positioniermodus Dieser Betriebsart benutzt teilweise die Parameter vom Drehzahlmodus (Parameterbereich 3300h-33FFh)
1Ah | 26 | CMD_Interp | Positionsbetriebsart: Interpolationsmodus

Betriebsfreigabe:
Hex | Dec | Name | Beschreibung
20h | 32 | CMD_Disable | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Betrieb der Leistungsstufe des Antriebsreglers freigeben

SDO-Kommunikation und QuickCommand-Mapping:
Hex Dec Name Beschreibung
28h 40 CMD_Sp Setzt den Wert eines beliebigen Parameters im Gerät. Bei einem Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode.

Kommandowerte:
- Kommandowert 0 (DEV_CmdData0) - Index des zu setzenden Parameters
- Kommandowert 1 (DEV_CmdData1) - Wert des zu setzenden Parameters
- Kommandowert 2 (DEV_CmdData2) - Subindex des zu setzenden Parameters
- Kommandoergebnis (DEV_CmdResult) - Liefert eventuellen Fehlercode

Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
29h 41 CMD_Gp Liest den aktuellen Wert des beliebigen Parameters vom Gerät ab. Der Wert wird im Parameter DEV_CmdResult zurückgeliefert. Bei einem Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode.

Kommandowerte:
- Kommandowert 0 (DEV_CmdData0) - Index des zu lesenden Parameters
- Kommandowert 2 (DEV_CmdData2) - Subindex des zu lesenden Parameters
- Kommandoergebnis (DEV_CmdResult) - Liefert den Wert des zu lesenden Parameters oder den Fehlercode

Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
2Ah 42 CMD_SetQcMapping Setzt das "QuickCommand"-Mapping. Dabei werden die RxPDO1 und die TxPDO1 umkonfiguriert.

Mapping für QuickCommand:
RxPDO1 (8 Byte):
- 1600.1h = 30002010h -> Objekt: 3000.20h (DEV_CmdData0_i16) 16 Bits
- 1600.2h = 30001208h -> Objekt: 3000.12h (DEV_CmdData2) 8 Bits
- 1600.3h = 30001120h -> Objekt: 3000.11h (DEV_CmdData1) 32 Bits
- 1600.4h = 30000108h -> Objekt: 3000.01h (DEV_Cmd_ExecOnChange) 8 Bits

  +--------+--------+--------+--------+--------+--------+--------+--------+
  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
  +--------+--------+--------+--------+--------+--------+--------+--------+
  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
  +--------+--------+--------+--------+--------+--------+--------+--------+
 LSB    16Bits        8Bits                 32Bits                 8Bits MSB

TxPDO1 (8 Byte):
- 1A00.1h = 30020010h -> Objekt: 3002.00h (DEV_Status) 16 Bits
- 1A00.2h = 30010010h -> Objekt: 3001.00h (DEV_ErrorReg) 16 Bits
- 1A00.3h = 30007020h -> Objekt: 3000.70h (DEV_CmdResult) 32 Bits

  +--------+--------+--------+--------+--------+--------+--------+--------+
  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
  +--------+--------+--------+--------+--------+--------+--------+--------+
  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
  +--------+--------+--------+--------+--------+--------+--------+--------+
 LSB    16Bits            16Bits                     32Bits              MSB

Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
2Eh 46 CMD_Sp2 Setzt den Wert eines beliebigen Parameters im Gerät. Bei einem Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode.

Kommandowerte:
- Kommandowert 0 (DEV_CmdData0) - Index und Subindex des zu setzenden Parameters (0x I I I I S S)
- Kommandowert 1 (DEV_CmdData1) - Wert des zu setzenden Parameters
- Kommandoergebnis (DEV_CmdResult) - Liefert eventuellen Fehlercode

Dieses Kommando ist ab Firmwareversion 1.93.00.29 verfügbar.
2Fh 47 CMD_Gp2 Liest den aktuellen Wert des beliebigen Parameters vom Gerät ab. Der Wert wird im Parameter DEV_CmdResult zurückgeliefert. Bei einem Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode.

Kommandowerte:
- Kommandowert 0 (DEV_CmdData0) - Index und Subindex des zu lesenden Parameters (0x I I I I S S)
- Kommandoergebnis (DEV_CmdResult) - Liefert den Wert des zu lesenden Parameters oder den Fehlercode

Dieses Kommando ist ab Firmwareversion 1.93.00.29 verfügbar.

Sollwert (aus Kommandowert 0 und 1):
Zunächst müssen in den Kommandowerte 0 und 1 (DEV_CmdData0, 3000.10h/ DEV_CmdData1, 3000.11h) die Sollwerte geschrieben werden. Anschließend wird mit den folgenden Kommandos bestimmt, was für ein Sollwert mit dem Kommandowert beschrieben werden soll.
Hex | Dec | Name | Beschreibung
30h | 48 | CMD_Curr | Setzt den Stromsollwert (CURR_DesiredValue) für den Stromreglermodus. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Stromsollwert (CURR_DesiredValue)
31h | 49 | CMD_Vel | Setzt den Drehzahlsollwert (VEL_DesiredValue) für den Drehzahlmodus und den Positioniermodus. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Drehzahlsollwert (VEL_DesiredValue)
32h | 50 | CMD_SVel | Setzt den Drehzahlsollwert (VEL_DesiredValue) für den untergeordneten Drehzahlregelmodus. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Drehzahlsollwert (SVEL_DesiredValue)
33h | 51 | CMD_Mova | Es wird eine Bewegung auf eine absolute Position (POS_Mova) gestartet. Durch ein erneutes Ausführen dieses Kommandos (Bit 7 toggeln - siehe oben) wird die aktuelle Bewegung überschrieben. Man spricht in dem Fall über eine sog. "on-the-fly" Änderung der Bewegung. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Solldrehzahl - Kommandowert 1 (DEV_CmdData1) - absolute Zielposition Achtung: Vorgabe der Solldrehzahl über Kommandowert 0 nötig. Ist eine Referenzierungsmethode parametriert, bleibt dieses Kommando gesperrt, bis die Referenzierung durchgeführt wurde. (Kommando 51h CMD_Homing_Start); Kontrolle Statusbit 7 STAT_HomingDone (DEV_Status, 3002.00h)
34h | 52 | CMD_Movr | Es wird eine Bewegung auf eine relative Position (POS_Movr, relativ zur aktuellen Kommandoposition) gestartet. Durch ein erneutes Ausführen dieses Kommandos (Bit 7 toggeln - siehe oben) wird die aktuelle Bewegung überschrieben. Man spricht in dem Fall über eine sog. "on-the-fly" Änderung der Bewegung. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Solldrehzahl - Kommandowert 1 (DEV_CmdData1) - relative Zielposition (relativ zur aktuellen Kommandoposition) Achtung: Vorgabe der Solldrehzahl über Kommandowert 0 nötig. Wird während einer laufenden Bewegung eine neue Solldrehzahl über Kommandowert 0 vorgegeben, wird eine neue relative Positionierung ausgelöst! Für das Aktualisieren der Drehzahl einer aktiven relativen Positionierung Kommando 36h verwenden.
36h | 54 | CMD_MovUpdate | Sollwerte im Positioniermodus aktualisieren. Dieses Kommando wird z.B. in folgendem Fall benötigt: Es wurde im Positioniermodus eine Reletivbewegung ausgelöst. Bevor die Zielposition erreicht wird, soll der Antrieb mit einer neuen Geschwindigkeit die Fahrt weiterführen. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Solldrehzahl Achtung: Der Unterschied zu Kommando 05h (CMD_Update) ist, dass die Solldrehzahl aus Kommandowert 0 übernommen wird.
3Ah | 58 | CMD_InterpCmd | Es wird ein Interpolationskommando ausgeführt. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - 0 = Nop, 1 = Arming, 2 = Unarming
3Bh | 59 | CMD_InterpData | Es werden Interpolationsdaten übertragen Kommandowerte: - Kommandowert 1 (DEV_CmdData1) - Position

Rampenkommandos:
Hex | Dec | Name | Beschreibung
40h | 64 | CMD_Acc | Im Stromreglermodus: - Kommandowert 0 (DEV_CmdData0) wird als Strombeschleunigung - delta I (CURR_Acc_dI) übernommen - Kommandowert 1 (DEV_CmdData1) wird als Strombeschleunigung - delta T (CURR_Acc_dT) übernommen Im Drehzahl- und Positioniermodus: - Kommandowert 0 (DEV_CmdData0) wird als Drehzahlbeschleunigung - delta V (VEL_Acc_dV) übernommen - Kommandowert 1 (DEV_CmdData1) wird als Drehzahlbeschleunigung - delta T VEL_Acc_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.
41h | 65 | CMD_Dec | Im Stromreglermodus: - Kommandowert 0 (DEV_CmdData0) wird als Stromverzögerung - delta I (CURR_Dec_dI) übernommen - Kommandowert 1 (DEV_CmdData1) wird als Stromverzögerung - delta T (CURR_Dec_dT) übernommen Im Drehzahl- und Positioniermodus: - Kommandowert 0 (DEV_CmdData0) wird als Drehzahlverzögerung - delta V (VEL_Dec_dV) übernommen - Kommandowert 1 (DEV_CmdData1) wird als Drehzahlverzögerung - delta T (VEL_Dec_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.
42h | 66 | CMD_Dec_QuickStop | Im Stromreglermodus: - Kommandowert 0 (DEV_CmdData0) wird als Stromschnellhaltverzögerung - delta I (CURR_Dec_QuickStop_dI) übernommen - Kommandowert 1 (DEV_CmdData1) wird als Stromschnellhaltverzögerung - delta T (CURR_Dec_QuickStop_dT) übernommen Im Drehzahl- und Positioniermodus: - Kommandowert 0 (DEV_CmdData0) wird als QuickStop-Drehzahlverzögerung - delta V (VEL_Dec_QuickStop_dV) übernommen - Kommandowert 1 (DEV_CmdData1) wird als QuickStop-Drehzahlverzögerung - delta T (VEL_Dec_QuickStop_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.

Referenzfahrtkommandos:
Um eine Referenzfahrt durchzuführen, muss sich der Antriebsregler im Positioniermodus befinden.
Hex | Dec | Name | Beschreibung
50h | 80 | CMD_HOME_None | Keine Wirkung
51h | 81 | CMD_HOME_Start | Referenzfahrt wird gestartet. Dabei wird das Bit-STAT_HomingDone vom DEV_Status zurückgesetzt. Die Methode der Referenzfahrt wird mit dem Parameter POS_HomingMethod festgelegt.
52h | 82 | CMD_HOME_Break | Aktive Referenzfahrt wird abgebrochen.
53h | 83 | CMD_HOME_Halt | Aktive Referenzfahrt wird unterbrochen.
54h | 84 | CMD_HOME_Restart | Aktive Referenzfahrt wird fortgesetzt.
58h | 88 | CMD_HOME_SetPos | Setzt die aktuelle Position auf den Kommandowert 1 (DEV_CmdData1, 3000.11h). Dabei wird das Statusbit 7/ STAT_HomingDone (DEV_Status, 3002.00h) gesetzt.

Zusammengesetzte Kommandos:
Mit diesen Kommandos ist es möglich, eine ganze Sequenz von Kommandos mit einem Kommando auszulösen.
Die Kommandosequenz ist mit den Parametern 3014.xxh (EventOnUserCmd) parametrierbar.
Hex | Dec | Name | Beschreibung
71h | 113 | CMD_UserCmd1 | Parameter 3014.11h - 3014.14h; Vorbelegt mit CMD_Quickstop, CMD_Disable, 0, 0
72h | 114 | CMD_UserCmd2 | Parameter 3014.21h - 3014.24h; Vorbelegt mit CMD_Halt, CMD_Disable, 0, 0
73h | 115 | CMD_UserCmd3 | Parameter 3014.31h - 3014.34h; Vorbelegt mit CMD_ModeCurr, CMD_Enable, CMD_Curr, 0
74h | 116 | CMD_UserCmd4 | Parameter 3014.41h - 3014.44h; Vorbelegt mit CMD_ModeVel, CMD_Enable, CMD_Vel, 0
75h | 117 | CMD_UserCmd5 | Parameter 3014.51h - 3014.54h; Vorbelegt mit CMD_ModeSVel, CMD_Enable, CMD_SVel, 0
76h | 118 | CMD_UserCmd6 | Parameter 3014.61h - 3014.64h; Vorbelegt mit CMD_ModePos, CMD_Enable, CMD_Mova, 0
77h | 119 | CMD_UserCmd7 | Parameter 3014.71h - 3014.74h; Vorbelegt mit CMD_ModePos, CMD_Enable, CMD_Movr, 0
78h | 120 | CMD_UserCmd8 | Parameter 3014.81h - 3014.84h; Vorbelegt mit CMD_ModePos, CMD_Enable, CMD_HOME_Start, 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                               # NodeId = 1

#----------------------------------------------------------------------------------------------------
# Initialisierung
d.SdoWr(0x3000, 0x01, 0)                                 # DEV_Cmd_ExecOnChange - keine Wirkung (Toggelkommando)
d.SdoWr(0x3000, 0x01, 1)                                 # DEV_Cmd_ExecOnChange - eventuellen Fehler löschen

#----------------------------------------------------------------------------------------------------
# Start des Testprogramms

d.SdoWr(0x3150, 0x00, 1)                                 # IO_DOUT_P0 - Zur Sicherheit Bremse öffnen
d.SdoWr(0x3000, 0x11, 0)                                 # DEV_CmdData1 - Kommandowert 1 = 0
d.SdoWr(0x3000, 0x01, 0x58)                              # DEV_Cmd_ExecOnChange - Position setzen

for i in range(5):                                       # 5 mal positionieren
   d.SdoWr(0x3000, 0x10, 1000)                           # DEV_CmdData0 - Kommandowert 0 = 1000 U/min
   d.SdoWr(0x3000, 0x11, 1000)                           # DEV_CmdData1 - Kommandowert 1 = 1000 counts
   d.SdoWr(0x3000, 0x01, 0x77)                           # DEV_Cmd_ExecOnChange - relative Positionierung

   while (d.SdoRd(0x3002, 0x00) & 0x10==0):              # DEV_Status - warte auf STAT_Reached
      time.sleep(0.1)                                    # alle 100 ms Bit abfragen

   print i, "aktuelle Position =", d.SdoRd(0x3762, 0x00) # POS_ActualPosition - Auslesen der aktuellen Position

   #d.SdoWr(0x3000, 0x10, 1000)                          # DEV_CmdData0 - Kommandowert 0 = 1000 U/min
   #d.SdoWr(0x3000, 0x11, 1000)                          # DEV_CmdData1 - Kommandowert 1 = 1000 counts
   d.SdoWr(0x3000,  0x01, 0xF7)                          # DEV_Cmd_ExecOnChange - erneute relative Positionierung

   while (d.SdoRd(0x3002, 0x00) & 0x10==0):              # DEV_Status - warte auf STAT_Reached
      time.sleep(0.1)                                    # alle 100 ms Bit abfragen

   print i,"aktuelle Position =", d.SdoRd(0x3762, 0x00)  # POS_ActualPosition - Auslesen der aktuellen Position

d.SdoWr(0x3150, 0x00, 0)                                 # IO_DOUT_P0 - Zur Sicherheit Bremse schließen

d.SdoWr(0x3000, 0x01, 0x20)                              # DEV_Cmd_ExecOnChange - Antriebsregler sperren


3000.02h Gerätekommando 2

Name | DEV_Cmd2
Bezeichnung | Gerätekommando 2
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {0h, 1h, 2h, 3h, 4h, 5h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 28h, 29h, 2Ah, 30h, 31h, 32h, 33h, 34h, 36h, 40h, 41h, 42h, 50h, 51h, 52h, 53h, 54h, 58h, 71h, 72h, 73h, 74h, 75h, 76h, 77h, 78h}
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.BD
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_CmdResult, DEV_CmdData0, DEV_CmdData1, DEV_CmdData2, DEV_Status, DEV_CmdCounter, DEV_Event1_OnUserCmd1

Beschreibung

Es wird immer das Gerätekommando ausgeführt wenn dieser Parameter beschrieben wird.

Dieser Parameter verhält sich wie DEV_Cmd_ExecOnChange, mit dem Unterschied, dass keine Änderung notwendig ist um das Gerätekommando auszuführen. Es ist daher vorsicht geboten da z.B. über PDOs ein nicht gewünschtes Verhalten erzeugt werden kann, wenn immer bzw. sehr oft ein neues Kommando geschickt wird.

Gerätekommando:
Hex | Dec | Name | Beschreibung
00h | 0 | CMD_Nop | Keine Wirkung; auch als Toggelkommando nutzbar
01h | 1 | CMD_ClearError | Ein eventueller Fehler im Fehlerregister (DEV_ErrorReg) wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
04h | 4 | CMD_Continue | Fortsetzen der Bewegung nach QuickStop oder Halt. Achtung: Um die Bewegung fortzusetzen, muss dieses Kommando nach QuickStop oder Halt ausgeführt werden, sonst nimmt der Controller neue Sollwerte nicht an -> der Motor bleibt in Stop-Zustand (Ausnahme: Mit dem Parameter Continue - Modus (DEV_ContinueMode, 3080.00h) kann ein automatisches Continue parametriert werden.)
05h | 5 | CMD_Update | Sollwerte im Positioniermodus aktualisieren. Dieses Kommando wird z.B. in folgendem Fall benötigt: Es wurde im Positioniermodus eine Reletivbewegung ausgelöst. Bevor die Zielposition erreicht wird, soll der Antrieb mit einer neuen Geschwindigkeit die Fahrt weiterführen. Mit folgender Befehlssequenz wird dies erreicht: - Bewegungsparameter (Vel, Acc, Dec) über Kommandos (31h, 40h, 41h usw.) bzw Parameter (VEL_DesiredValue, VEL_Dec_dV, VEL_Dec_dT usw.) ändern - Bewegungsparameter (Vel, Acc, Dec) mit Kommando CMD_Update (05h) übernehmen

Betriebsart (Mode) des Antriebsreglers:
Hex | Dec | Name | Beschreibung
10h | 16 | CMD_ModeOff | Leistung und Regelung ausgeschaltet
12h | 18 | CMD_ModeCurr | Stromreglermodus
13h | 19 | CMD_ModeVel | Drehzahlmodus
15h | 21 | CMD_ModeSVel | untergeordneter Drehzahlregler: Rampen und Lageregler nicht wirksam
17h | 23 | CMD_ModePos | Positioniermodus Dieser Betriebsart benutzt teilweise die Parameter vom Drehzahlmodus (Parameterbereich 3300h-33FFh)

Betriebsfreigabe:
Hex | Dec | Name | Beschreibung
20h | 32 | CMD_Disable | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Betrieb der Leistungsstufe des Antriebsreglers freigeben

SDO-Kommunikation und QuickCommand-Mapping:
Hex Dec Name Beschreibung
28h 40 CMD_Sp Setzt den Wert eines beliebigen Parameters im Gerät. Bei einem Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode.

Kommandowerte:
- Kommandowert 0 (DEV_CmdData0) - Index des zu setzenden Parameters
- Kommandowert 1 (DEV_CmdData1) - Wert des zu setzenden Parameters
- Kommandowert 2 (DEV_CmdData2) - Subindex des zu setzenden Parameters
- Kommandoergebnis (DEV_CmdResult) - Liefert eventuellen Fehlercode

Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
29h 41 CMD_Gp Liest den aktuellen Wert des beliebigen Parameters vom Gerät ab. Der Wert wird im Parameter DEV_CmdResult zurückgeliefert. Bei einem Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode.

Kommandowerte:
- Kommandowert 0 (DEV_CmdData0) - Index des zu lesenden Parameters
- Kommandowert 2 (DEV_CmdData2) - Subindex des zu lesenden Parameters
- Kommandoergebnis (DEV_CmdResult) - Liefert den Wert des zu lesenden Parameters oder den Fehlercode

Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
2Ah 42 CMD_SetQcMapping Setzt das "QuickCommand"-Mapping. Dabei werden die RxPDO1 und die TxPDO1 umkonfiguriert.

Mapping für QuickCommand:
RxPDO1 (8 Byte):
- 1600.1h = 30002010h -> Objekt: 3000.20h (DEV_CmdData0_i16) 16 Bits
- 1600.2h = 30001208h -> Objekt: 3000.12h (DEV_CmdData2) 8 Bits
- 1600.3h = 30001120h -> Objekt: 3000.11h (DEV_CmdData1) 32 Bits
- 1600.4h = 30000108h -> Objekt: 3000.01h (DEV_Cmd_ExecOnChange) 8 Bits

  +--------+--------+--------+--------+--------+--------+--------+--------+
  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
  +--------+--------+--------+--------+--------+--------+--------+--------+
  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
  +--------+--------+--------+--------+--------+--------+--------+--------+
 LSB    16Bits        8Bits                 32Bits                 8Bits MSB

TxPDO1 (8 Byte):
- 1A00.1h = 30020010h -> Objekt: 3002.00h (DEV_Status) 16 Bits
- 1A00.2h = 30010010h -> Objekt: 3001.00h (DEV_ErrorReg) 16 Bits
- 1A00.3h = 30007020h -> Objekt: 3000.70h (DEV_CmdResult) 32 Bits

  +--------+--------+--------+--------+--------+--------+--------+--------+
  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
  +--------+--------+--------+--------+--------+--------+--------+--------+
  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
  +--------+--------+--------+--------+--------+--------+--------+--------+
 LSB    16Bits            16Bits                     32Bits              MSB

Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.

Sollwert (aus Kommandowert 0 und 1):
Zunächst müssen in den Kommandowerte 0 und 1 (DEV_CmdData0, 3000.10h/ DEV_CmdData1, 3000.11h) die Sollwerte geschrieben werden. Anschließend wird mit den folgenden Kommandos bestimmt, was für ein Sollwert mit dem Kommandowert beschrieben werden soll.
Hex | Dec | Name | Beschreibung
30h | 48 | CMD_Curr | Setzt den Stromsollwert (CURR_DesiredValue) für den Stromreglermodus. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Stromsollwert (CURR_DesiredValue)
31h | 49 | CMD_Vel | Setzt den Drehzahlsollwert (VEL_DesiredValue) für den Drehzahlmodus und den Positioniermodus. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Drehzahlsollwert (VEL_DesiredValue)
32h | 50 | CMD_SVel | Setzt den Drehzahlsollwert (VEL_DesiredValue) für den untergeordneten Drehzahlregelmodus. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Drehzahlsollwert (SVEL_DesiredValue)
33h | 51 | CMD_Mova | Es wird eine Bewegung auf eine absolute Position (POS_Mova) gestartet. Durch ein erneutes Ausführen dieses Kommandos (Bit 7 toggeln - siehe oben) wird die aktuelle Bewegung überschrieben. Man spricht in dem Fall über eine sog. "on-the-fly" Änderung der Bewegung. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Solldrehzahl - Kommandowert 1 (DEV_CmdData1) - absolute Zielposition Achtung: Vorgabe der Solldrehzahl über Kommandowert 0 nötig. Ist eine Referenzierungsmethode parametriert, bleibt dieses Kommando gesperrt, bis die Referenzierung durchgeführt wurde. (Kommando 51h CMD_Homing_Start); Kontrolle Statusbit 7 STAT_HomingDone (DEV_Status, 3002.00h)
34h | 52 | CMD_Movr | Es wird eine Bewegung auf eine relative Position (POS_Movr, relativ zur aktuellen Kommandoposition) gestartet. Durch ein erneutes Ausführen dieses Kommandos (Bit 7 toggeln - siehe oben) wird die aktuelle Bewegung überschrieben. Man spricht in dem Fall über eine sog. "on-the-fly" Änderung der Bewegung. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Solldrehzahl - Kommandowert 1 (DEV_CmdData1) - relative Zielposition (relativ zur aktuellen Kommandoposition) Achtung: Vorgabe der Solldrehzahl über Kommandowert 0 nötig. Wird während einer laufenden Bewegung eine neue Solldrehzahl über Kommandowert 0 vorgegeben, wird eine neue relative Positionierung ausgelöst! Für das Aktualisieren der Drehzahl einer aktiven relativen Positionierung Kommando 36h verwenden.
36h | 54 | CMD_MovUpdate | Sollwerte im Positioniermodus aktualisieren. Dieses Kommando wird z.B. in folgendem Fall benötigt: Es wurde im Positioniermodus eine Reletivbewegung ausgelöst. Bevor die Zielposition erreicht wird, soll der Antrieb mit einer neuen Geschwindigkeit die Fahrt weiterführen. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Solldrehzahl Achtung: Der Unterschied zu Kommando 05h (CMD_Update) ist, dass die Solldrehzahl aus Kommandowert 0 übernommen wird.

Rampenkommandos:
Hex | Dec | Name | Beschreibung
40h | 64 | CMD_Acc | Im Stromreglermodus: - Kommandowert 0 (DEV_CmdData0) wird als Strombeschleunigung - delta I (CURR_Acc_dI) übernommen - Kommandowert 1 (DEV_CmdData1) wird als Strombeschleunigung - delta T (CURR_Acc_dT) übernommen Im Drehzahl- und Positioniermodus: - Kommandowert 0 (DEV_CmdData0) wird als Drehzahlbeschleunigung - delta V (VEL_Acc_dV) übernommen - Kommandowert 1 (DEV_CmdData1) wird als Drehzahlbeschleunigung - delta T VEL_Acc_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.
41h | 65 | CMD_Dec | Im Stromreglermodus: - Kommandowert 0 (DEV_CmdData0) wird als Stromverzögerung - delta I (CURR_Dec_dI) übernommen - Kommandowert 1 (DEV_CmdData1) wird als Stromverzögerung - delta T (CURR_Dec_dT) übernommen Im Drehzahl- und Positioniermodus: - Kommandowert 0 (DEV_CmdData0) wird als Drehzahlverzögerung - delta V (VEL_Dec_dV) übernommen - Kommandowert 1 (DEV_CmdData1) wird als Drehzahlverzögerung - delta T (VEL_Dec_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.
42h | 66 | CMD_Dec_QuickStop | Im Stromreglermodus: - Kommandowert 0 (DEV_CmdData0) wird als Stromschnellhaltverzögerung - delta I (CURR_Dec_QuickStop_dI) übernommen - Kommandowert 1 (DEV_CmdData1) wird als Stromschnellhaltverzögerung - delta T (CURR_Dec_QuickStop_dT) übernommen Im Drehzahl- und Positioniermodus: - Kommandowert 0 (DEV_CmdData0) wird als QuickStop-Drehzahlverzögerung - delta V (VEL_Dec_QuickStop_dV) übernommen - Kommandowert 1 (DEV_CmdData1) wird als QuickStop-Drehzahlverzögerung - delta T (VEL_Dec_QuickStop_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.

Referenzfahrtkommandos:
Um eine Referenzfahrt durchzuführen, muss sich der Antriebsregler im Positioniermodus befinden.
Hex | Dec | Name | Beschreibung
50h | 80 | CMD_HOME_None | Keine Wirkung
51h | 81 | CMD_HOME_Start | Referenzfahrt wird gestartet. Dabei wird das Bit-STAT_HomingDone vom DEV_Status zurückgesetzt. Die Methode der Referenzfahrt wird mit dem Parameter POS_HomingMethod festgelegt.
52h | 82 | CMD_HOME_Break | Aktive Referenzfahrt wird abgebrochen.
53h | 83 | CMD_HOME_Halt | Aktive Referenzfahrt wird unterbrochen.
54h | 84 | CMD_HOME_Restart | Aktive Referenzfahrt wird fortgesetzt.
58h | 88 | CMD_HOME_SetPos | Setzt die aktuelle Position auf den Kommandowert 1 (DEV_CmdData1, 3000.11h). Dabei wird das Statusbit 7/ STAT_HomingDone (DEV_Status, 3002.00h) gesetzt.

Zusammengesetzte Kommandos:
Mit diesen Kommandos ist es möglich, eine ganze Sequenz von Kommandos mit einem Kommando auszulösen.
Die Kommandosequenz ist mit den Parametern 3014.xxh (EventOnUserCmd) parametrierbar.
Hex | Dec | Name | Beschreibung
71h | 113 | CMD_UserCmd1 | Parameter 3014.11h - 3014.14h; Vorbelegt mit CMD_Quickstop, CMD_Disable, 0, 0
72h | 114 | CMD_UserCmd2 | Parameter 3014.21h - 3014.24h; Vorbelegt mit CMD_Halt, CMD_Disable, 0, 0
73h | 115 | CMD_UserCmd3 | Parameter 3014.31h - 3014.34h; Vorbelegt mit CMD_ModeCurr, CMD_Enable, CMD_Curr, 0
74h | 116 | CMD_UserCmd4 | Parameter 3014.41h - 3014.44h; Vorbelegt mit CMD_ModeVel, CMD_Enable, CMD_Vel, 0
75h | 117 | CMD_UserCmd5 | Parameter 3014.51h - 3014.54h; Vorbelegt mit CMD_ModeSVel, CMD_Enable, CMD_SVel, 0
76h | 118 | CMD_UserCmd6 | Parameter 3014.61h - 3014.64h; Vorbelegt mit CMD_ModePos, CMD_Enable, CMD_Mova, 0
77h | 119 | CMD_UserCmd7 | Parameter 3014.71h - 3014.74h; Vorbelegt mit CMD_ModePos, CMD_Enable, CMD_Movr, 0
78h | 120 | CMD_UserCmd8 | Parameter 3014.81h - 3014.84h; Vorbelegt mit CMD_ModePos, CMD_Enable, CMD_HOME_Start, 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                               # NodeId = 1

#----------------------------------------------------------------------------------------------------
# Initialisierung
d.SdoWr(0x3000, 0x02, 1)                                 # DEV_Cmd2 - eventuellen Fehler löschen

#----------------------------------------------------------------------------------------------------
# Start des Testprogramms

d.SdoWr(0x3150, 0x00, 1)                                 # IO_DOUT_P0 - Zur Sicherheit Bremse öffnen
d.SdoWr(0x3000, 0x11, 0)                                 # DEV_CmdData1 - Kommandowert 1 = 0
d.SdoWr(0x3000, 0x02, 0x58)                              # DEV_Cmd2 - Position setzen

for i in range(5):                                       # 5 mal positionieren
   d.SdoWr(0x3000, 0x10, 1000)                           # DEV_CmdData0 - Kommandowert 0 = 1000 U/min
   d.SdoWr(0x3000, 0x11, 1000)                           # DEV_CmdData1 - Kommandowert 1 = 1000 counts
   d.SdoWr(0x3000, 0x02, 0x77)                           # DEV_Cmd2 - relative Positionierung

   while (d.SdoRd(0x3002, 0x00) & 0x10==0):              # DEV_Status - warte auf STAT_Reached
      time.sleep(0.1)                                    # alle 100 ms Bit abfragen

   print i+1, "aktuelle Position =", d.SdoRd(0x3762, 0x00) # POS_ActualPosition - Auslesen der aktuellen Position

d.SdoWr(0x3150, 0x00, 0)                                 # IO_DOUT_P0 - Zur Sicherheit Bremse schließen
d.SdoWr(0x3000, 0x01, 0x20)                              # DEV_Cmd2 - Antriebsregler sperren


3000.08h Gerätekommando - Fehlersetzen

Name | DEV_Cmd_SetError
Bezeichnung | Gerätekommando - Fehlersetzen
Datentyp | int16
Zugriff | nur Schreiben
Attribute | -
Wertbereich | [-32768 .. 32767]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.11
Geräte | Alle
PLC Funktion | SetError(value)
Querverweis | DEV_Cmd

Beschreibung

Mit Hilfe von diesem Parameter kann der Benutzer eigene Fehler setzen bzw. einen Fehler simulieren.
Beim Setzen des Parameters wird eine allgemeine interne Fehlerprozedur mit dem übergebenen Wert aufgerufen. Dabei wird der Parameter DEV_ErrorReg auf diesen Wert gesetzt.

Achtung !
Wenn dieser Parameter mit einem Wert kleiner 0 beschrieben wird, geht der Antriebsregler in ein Fehlerzustand über. Dabei werden die Regelung und die Endstufe gesperrt.

Fehlercodes <= -30000 können nicht durch ein "ClearError" Kommando zurückgesetzt werden, da Sie schwerwiegende Fehler darstellen. Um diese Fehler zu löschen, starten Sie das Gerät neu.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                            # NodeId = 1

d.SdoWr(0x3000, 0x08, -20001)         # eigene Fehler setzen


3000.10h Gerätekommando - Daten 0

Name | DEV_CmdData0
Bezeichnung | Gerätekommando - Daten 0
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | CmdData0(value)
Querverweis | DEV_Cmd_ExecOnChange, DEV_CmdData0_i16, DEV_CmdData1, DEV_CmdData1_i16, DEV_CmdData2, DEV_CmdData2_i16

Beschreibung

Dieser Wert wird bei den Gerätekommandos 3Xh (DEV_Cmd_ExecOnChange) herangezogen.
Bei Änderung des Wertes muss das Gerätekommado (DEV_Cmd_ExecOnChange) erneut ausgeführt werden.

Gerätekommandos (DEV_Cmd_ExecOnChange), bei denen der Kommandowert 0 herangezogen wird:

Hex | Dec | Name | Beschreibung
28h | 40 | CMD_Sp | Setzt den Wert des beliebigen Parameters im Gerät. Kommandowert 0 definiert Index, Kommandowert 2 Subindex und Kommandowert 1 den Wert des Parameters. Beim Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode. Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
29h | 41 | CMD_Gp | Liest den aktuellen Wert des beliebigen Parameters vom Gerät ab. Kommandowert 0 definiert Index und Kommandowert 2 Subindex des Parameters. Der Wert wird im Parameter DEV_CmdResult zurückgeliefert. Beim Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode. Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
30h | 48 | CMD_Curr | Kommandowert 0 wird als Stromsollwert für den Stromreglermodus gesetzt; CURR_DesiredValue
31h | 49 | CMD_Vel | Kommandowert 0 wird als Drehzahlsollwert für den Drehzahlmodus und den Positioniermodus übernommen; VEL_DesiredValue
32h | 50 | CMD_SVel | Kommandowert 0 wird als Drehzahlsollwert für den untergeordneten Drehzahlregelmodus übernommen; SVEL_DesiredValue
33h | 51 | CMD_Mova | Kommandowert 1 wird als absolute Zielposition übernommen. Es wird eine Bewegung auf eine absolute Position gestartet. Eine Bewegung kann durch erneutes Beschreiben des Kommandowertes 1 überschrieben werden. Man spricht in dem Fall über eine sog. "on-the-fly" Änderung der Bewegung; POS_Mova Achtung: Vorgabe der Solldrehzahl über Kommandowert 0 nötig. Ist eine Referenzierungsmethode parametriert, bleibt dieses Kommando gesperrt, bis die Referenzierung durchgeführt wurde. (Kommando 51h CMD_Homing_Start); Kontrolle Statusbit 7 STAT_HomingDone (DEV_Status, 3002.00h)
34h | 52 | CMD_Movr | Kommandowert 1 wird als relative Zielposition übernommen. Es wird eine Bewegung auf eine relative Position (relativ zur aktuellen Kommandoposition) gestartet. Eine Bewegung kann durch erneutes Beschreiben dieses Parameters (Bit 7 toggeln - siehe oben) überschrieben werden. Man spricht in dem Fall über eine sog. "on-the-fly" Änderung der Bewegung; POS_Movr Achtung: Vorgabe der Solldrehzahl über Kommandowert 0 nötig. Wird während einer laufenden Bewegung eine neue Solldrehzahl über Kommandowert 0 vorgegeben, wird eine neue relative Positionierung ausgelöst! Für das aktualisieren der Drehzahl Kommando 36h verwenden.
36h | 54 | CMD_MovUpdate | Sollwerte aktualisieren. Dieses Kommando wird z.B. in folgendem Fall benötigt: Es wurde eine Relativbewegung ausgelöst. Bevor die Zielposition erreicht wird, soll der Antrieb mit einer neuen Geschwindigkeit die Fahrt weiterführen. Mit folgender Befehlssequenz wird dies erreicht: - neue Solldrehzahl in Kommandowert 0 schreiben - mit Kommando 36h wird die neue Solldrehzahl übernommen
40h | 64 | CMD_Acc | Im Stromreglermodus Kommandowerte 0 (DEV_CmdData0) wird als Strombeschleunigung - delta I (CURR_Acc_dI) übernommen Im Drehzahl- und Positioniermodus Kommandowerte 0 (DEV_CmdData0) wird als Drehzahlbeschleunigung - delta V (VEL_Acc_dV) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.
41h | 65 | CMD_Dec | Im Stromreglermodus Kommandowerte 0 (DEV_CmdData0) wird als Stromverzögerung - delta I (CURR_Dec_dI) übernommen Im Drehzahl- und Positioniermodus Kommandowerte 0 (DEV_CmdData0) wird als Drehzahlverzögerung - delta V (VEL_Dec_dV) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.
42h | 66 | CMD_Dec_QuickStop | Im Stromreglermodus Kommandowerte 0 (DEV_CmdData0) wird als Stromschnellhaltverzögerung - delta I (CURR_Dec_QuickStop_dI) übernommen Im Drehzahl- und Positioniermodus Kommandowerte 0 (DEV_CmdData0) wird als QuickStop-Drehzahlverzögerung - delta V (VEL_Dec_QuickStop_dV) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                              # NodeId = 1

#-------------------------------------------------------------------------------------------------------
# init
d.SdoWr(0x3000, 0x01, 0)                                # DEV_Cmd_ExecOnChange - keine Wirkung (Toggelkommando)
d.SdoWr(0x3000, 0x01, 1)                                # DEV_Cmd_ExecOnChange - eventuellen Fehler löschen

#-------------------------------------------------------------------------------------------------------
# Start des Testprogramms

d.SdoWr(0x3150, 0x00, 1)                                # IO_DOUT_P0 - Zur Sicherheit Bremse öffnen

for i in range(3):                                      # 3 mal die Richtung wechseln
   d.SdoWr(0x3000, 0x10, 1000)                          # DEV_CmdData0 - Kommandowert 0 = 1000 U/min
   d.SdoWr(0x3000, 0x01, 0x74)                          # DEV_Cmd_ExecOnChange - Drehzahlmodus
   time.sleep(3)                                        # 3s Wartezeit
   print i,"aktuelle Drehzahl =", d.SdoRd(0x3A04, 0x01) # MEASUREMENT_Vel_rpm - Auslesen der aktuellen Drehzahl

   d.SdoWr(0x3000, 0x10, -1000)                         # DEV_CmdData0 - Kommandowert 0 = -1000 U/min
   d.SdoWr(0x3000, 0x01, 0x74)                          # DEV_Cmd_ExecOnChange - Drehzahlmodus
   time.sleep(3)                                        # 3s Wartezeit
   print i,"aktuelle Drehzahl =", d.SdoRd(0x3A04, 0x01) # MEASUREMENT_Vel_rpm - Auslesen der aktuellen Drehzahl

d.SdoWr(0x3000, 0x01, 0x02)                             # DEV_Cmd_ExecOnChange - Schnellstop

while (d.SdoRd(0x3002, 0x00) & 0x08!=0):                # DEV_Status - warte bis STAT_Moving=0
   time.sleep(0.1)                                      # alle 100 ms Bit abfragen

time.sleep(0.1)                                         # 100 ms für Drehzahlaktualisierung
print "aktuelle Drehzahl =", d.SdoRd(0x3A04, 0x01)      # MEASUREMENT_Vel_rpm - Auslesen der aktuellen Drehzahl
d.SdoWr(0x3150, 0x00, 0)                                # IO_DOUT_P0 - Zur Sicherheit Bremse schließen
d.SdoWr(0x3000, 0x01, 0x20)                             # DEV_Cmd_ExecOnChange - Antriebsregler sperren


3000.11h Gerätekommando - Daten 1

Name | DEV_CmdData1
Bezeichnung | Gerätekommando - Daten 1
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | CmdData1(value)
Querverweis | DEV_Cmd_ExecOnChange, DEV_CmdData0, DEV_CmdData0_i16, DEV_CmdData1_i16, DEV_CmdData2, DEV_CmdData2_i16

Beschreibung

Dieser Wert wird bei den Gerätekommandos 3Xh (DEV_Cmd_ExecOnChange) herangezogen.
Bei Änderung des Wertes muss das Gerätekommado (DEV_Cmd_ExecOnChange) erneut ausgeführt werden.

Gerätekommandos (DEV_Cmd_ExecOnChange), bei denen der Kommandowert 1 herangezogen wird:

Hex | Dec | Name | Beschreibung
28h | 40 | CMD_Sp | Setzt den Wert des beliebigen Parameters im Gerät. Kommandowert 0 definiert Index, Kommandowert 2 Subindex und Kommandowert 1 den Wert des Parameters. Beim Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode. Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
29h | 41 | CMD_Gp | Liest den aktuellen Wert des beliebigen Parameters vom Gerät ab. Kommandowert 0 definiert Index und Kommandowert 2 Subindex des Parameters. Der Wert wird im Parameter DEV_CmdResult zurückgeliefert. Beim Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode. Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
33h | 51 | CMD_Mova | Kommandowert 1 wird als absolute Zielposition übernommen. Es wird eine Bewegung auf eine absolute Position gestartet. Eine Bewegung kann durch erneutes Beschreiben des Kommandowertes 1 überschrieben werden. Man spricht in dem Fall über eine sog. "on-the-fly" Änderung der Bewegung; POS_Mova Achtung: Vorgabe der Solldrehzahl über Kommandowert 0 nötig. Ist eine Referenzierungsmethode parametriert, bleibt dieses Kommando gesperrt, bis die Referenzierung durchgeführt wurde. (Kommando 51h CMD_Homing_Start); Kontrolle Statusbit 7 STAT_HomingDone (DEV_Status, 3002.00h)
34h | 52 | CMD_Movr | Kommandowert 1 wird als relative Zielposition übernommen. Es wird eine Bewegung auf eine relative Position (relativ zur aktuellen Kommandoposition) gestartet. Eine Bewegung kann durch erneutes Beschreiben dieses Parameters (Bit 7 toggeln - siehe oben) überschrieben werden. Man spricht in dem Fall über eine sog. "on-the-fly" Änderung der Bewegung; POS_Movr Achtung: Vorgabe der Solldrehzahl über Kommandowert 0 nötig. Wird während einer laufenden Bewegung eine neue Solldrehzahl über Kommandowert 0 vorgegeben und neue Gerätekommando CMD_Movr, wird eine neue relative Positionierung ausgelöst ! Für das aktualisieren der Drehzahl Kommando 36h verwenden.
58h | 88 | CMD_HOME_SetPos | Setzt die aktuelle Position auf den Kommandowert 1 (DEV_CmdData1, 3000.11h). Dabei wird das Statusbit 7 / STAT_HomingDone (DEV_Status, 3002.00h) gesetzt.
40h | 64 | CMD_Acc | Im Stromreglermodus Kommandowerte 1 (DEV_CmdData1) wird als Strombeschleunigung - delta T (CURR_Acc_dT) übernommen Im Drehzahl- und Positioniermodus Kommandowerte 1 (DEV_CmdData1) wird als Drehzahlbeschleunigung - delta T VEL_Acc_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.
41h | 65 | CMD_Dec | Im Stromreglermodus Kommandowerte 1 (DEV_CmdData1) wird als Stromverzögerung - delta T (CURR_Dec_dT) übernommen Im Drehzahl- und Positioniermodus Kommandowerte 1 (DEV_CmdData1) wird als Drehzahlverzögerung - delta T (VEL_Dec_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.
42h | 66 | CMD_Dec_QuickStop | Im Stromreglermodus Kommandowerte 1 (DEV_CmdData1) wird als Stromschnellhaltverzögerung - delta T (CURR_Dec_QuickStop_dT) übernommen Im Drehzahl- und Positioniermodus Kommandowerte 1 (DEV_CmdData1) wird als QuickStop-Drehzahlverzögerung - delta T (VEL_Dec_QuickStop_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

d.SdoWr(0x3000, 0x01, 0)                              # DEV_Cmd_ExecOnChange - keine Wirkung (Toggelkommando)
print "aktuelle Position =", d.SdoRd(0x3762, 0x00)    # POS_ActualPosition - Auslesen der aktuellen Position

d.SdoWr(0x3000, 0x11, 1000)                           # DEV_CmdData1 - Kommandowert 1 = 1000
d.SdoWr(0x3000, 0x01, 0x58)                           # DEV_Cmd_ExecOnChange - Setzen der aktuellen Position
print "aktuelle Position =", d.SdoRd(0x3762, 0x00)    # POS_ActualPosition - Auslesen der aktuellen Position

d.SdoWr(0x3000, 0x11, -1000)                          # DEV_CmdData1 - Kommandowert 1 = -1000
d.SdoWr(0x3000, 0x01, 0xD8)                           # DEV_Cmd_ExecOnChange - Setzen der aktuellen Position
print "aktuelle Position =", d.SdoRd(0x3762, 0x00)    # POS_ActualPosition - Auslesen der aktuellen Position


3000.12h Gerätekommando - Daten 2

Name | DEV_CmdData2
Bezeichnung | Gerätekommando - Daten 2
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.44
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_Cmd_ExecOnChange, DEV_CmdData0, DEV_CmdData0_i16, DEV_CmdData1, DEV_CmdData1_i16, DEV_CmdData2_i16

Beschreibung

Dieser Wert wird bei den Gerätekommandos 3Xh (DEV_Cmd_ExecOnChange) herangezogen.
Bei Änderung des Wertes muss das Gerätekommado (DEV_Cmd_ExecOnChange) erneut ausgeführt werden.

Gerätekommandos (DEV_Cmd_ExecOnChange), bei denen der Kommandowert 2 herangezogen wird:

Hex | Dec | Name | Beschreibung
28h | 40 | CMD_Sp | Setzt den Wert des beliebigen Parameters im Gerät. Kommandowert 0 definiert Index, Kommandowert 2 Subindex und Kommandowert 1 den Wert des Parameters. Beim Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode. Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
29h | 41 | CMD_Gp | Liest den aktuellen Wert des beliebigen Parameters vom Gerät ab. Kommandowert 0 definiert Index und Kommandowert 2 Subindex des Parameters. Der Wert wird im Parameter DEV_CmdResult zurückgeliefert. Beim Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode. Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                  # Node ID = 1

d.SdoWr(0x3000, 0x10, 0x3020)                               # DEV_CmdData0 - 3020h
d.SdoWr(0x3000, 0x12, 0x00)                                 # DEV_CmdData2 - 00h
d.SdoWr(0x3000, 0x01, 0)                                    # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x29)                                 # DEV_Cmd_ExecOnChange - CMD_Gp

print "3020.00h(Gerätecode):", hex(d.SdoRd(0x3000, 0x70))   # DEV_CmdResult


3000.20h Gerätekommando - Daten 0 (int16)

Name | DEV_CmdData0_i16
Bezeichnung | Gerätekommando - Daten 0 (int16)
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-32768 .. 32767]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.19
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_Cmd_ExecOnChange, DEV_CmdData0, DEV_CmdData1, DEV_CmdData1_i16, DEV_CmdData2, DEV_CmdData2_i16

Beschreibung

Dieser Wert wird bei den Gerätekommandos 3Xh (DEV_Cmd_ExecOnChange) herangezogen.
Bei Änderung des Wertes muss das Gerätekommado (DEV_Cmd_ExecOnChange) erneut ausgeführt werden.

Gerätekommandos (DEV_Cmd_ExecOnChange), bei denen der Kommandowert 0 herangezogen wird:

Hex | Dec | Name | Beschreibung
28h | 40 | CMD_Sp | Setzt den Wert des beliebigen Parameters im Gerät. Kommandowert 0 definiert Index, Kommandowert 2 Subindex und Kommandowert 1 den Wert des Parameters. Beim Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode. Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
29h | 41 | CMD_Gp | Liest den aktuellen Wert des beliebigen Parameters vom Gerät ab. Kommandowert 0 definiert Index und Kommandowert 2 Subindex des Parameters. Der Wert wird im Parameter DEV_CmdResult zurückgeliefert. Beim Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode. Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
30h | 48 | CMD_Curr | Kommandowert 0 wird als Stromsollwert für den Stromreglermodus gesetzt; CURR_DesiredValue
31h | 49 | CMD_Vel | Kommandowert 0 wird als Drehzahlsollwert für den Drehzahlmodus und den Positioniermodus übernommen; VEL_DesiredValue
32h | 50 | CMD_SVel | Kommandowert 0 wird als Drehzahlsollwert für den untergeordneten Drehzahlregelmodus übernommen; SVEL_DesiredValue
33h | 51 | CMD_Mova | Kommandowert 1 wird als absolute Zielposition übernommen. Es wird eine Bewegung auf eine absolute Position gestartet. Eine Bewegung kann durch erneutes Beschreiben des Kommandowertes 1 überschrieben werden. Man spricht in dem Fall über eine sog. "on-the-fly" Änderung der Bewegung; POS_Mova Achtung: Vorgabe der Solldrehzahl über Kommandowert 0 nötig. Ist eine Referenzierungsmethode parametriert, bleibt dieses Kommando gesperrt, bis die Referenzierung durchgeführt wurde. (Kommando 51h CMD_Homing_Start); Kontrolle Statusbit 7 STAT_HomingDone (DEV_Status, 3002.00h)
34h | 52 | CMD_Movr | Kommandowert 1 wird als relative Zielposition übernommen. Es wird eine Bewegung auf eine relative Position (relativ zur aktuellen Kommandoposition) gestartet. Eine Bewegung kann durch erneutes Beschreiben dieses Parameters (Bit 7 toggeln - siehe oben) überschrieben werden. Man spricht in dem Fall über eine sog. "on-the-fly" Änderung der Bewegung; POS_Movr Achtung: Vorgabe der Solldrehzahl über Kommandowert 0 nötig. Wird während einer laufenden Bewegung eine neue Solldrehzahl über Kommandowert 0 vorgegeben, wird eine neue relative Positionierung ausgelöst! Für das aktualisieren der Drehzahl Kommando 36h verwenden.
36h | 54 | CMD_MovUpdate | Sollwerte aktualisieren. Dieses Kommando wird z.B. in folgendem Fall benötigt: Es wurde eine Relativbewegung ausgelöst. Bevor die Zielposition erreicht wird, soll der Antrieb mit einer neuen Geschwindigkeit die Fahrt weiterführen. Mit folgender Befehlssequenz wird dies erreicht: - neue Solldrehzahl in Kommandowert 0 schreiben - mit Kommando 36h wird die neue Solldrehzahl übernommen
40h | 64 | CMD_Acc | Im Stromreglermodus Kommandowerte 0 (DEV_CmdData0) wird als Strombeschleunigung - delta I (CURR_Acc_dI) übernommen Im Drehzahl- und Positioniermodus Kommandowerte 0 (DEV_CmdData0) wird als Drehzahlbeschleunigung - delta V (VEL_Acc_dV) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.
41h | 65 | CMD_Dec | Im Stromreglermodus Kommandowerte 0 (DEV_CmdData0) wird als Stromverzögerung - delta I (CURR_Dec_dI) übernommen Im Drehzahl- und Positioniermodus Kommandowerte 0 (DEV_CmdData0) wird als Drehzahlverzögerung - delta V (VEL_Dec_dV) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.
42h | 66 | CMD_Dec_QuickStop | Im Stromreglermodus Kommandowerte 0 (DEV_CmdData0) wird als Stromschnellhaltverzögerung - delta I (CURR_Dec_QuickStop_dI) übernommen Im Drehzahl- und Positioniermodus Kommandowerte 0 (DEV_CmdData0) wird als QuickStop-Drehzahlverzögerung - delta V (VEL_Dec_QuickStop_dV) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                              # NodeId = 1

#-------------------------------------------------------------------------------------------------------
# init
d.SdoWr(0x3000, 0x01, 0)                                # DEV_Cmd_ExecOnChange - keine Wirkung (Toggelkommando)
d.SdoWr(0x3000, 0x01, 1)                                # DEV_Cmd_ExecOnChange - eventuellen Fehler löschen

#-------------------------------------------------------------------------------------------------------
# Start des Testprogramms

d.SdoWr(0x3150, 0x00, 1)                                # IO_DOUT_P0 - Zur Sicherheit Bremse öffnen

for i in range(3):                                      # 3 mal die Richtung wechseln
   d.SdoWr(0x3000, 0x20, 1000)                          # DEV_CmdData0_i16 - Kommandowert 0 = 1000 U/min
   d.SdoWr(0x3000, 0x01, 0x74)                          # DEV_Cmd_ExecOnChange - Drehzahlmodus
   time.sleep(3)                                        # 3s Wartezeit
   print i,"aktuelle Drehzahl =", d.SdoRd(0x3A04, 0x01) # MEASUREMENT_Vel_rpm - Auslesen der aktuellen Drehzahl

   d.SdoWr(0x3000, 0x20, -1000)                         # DEV_CmdData0_i16 - Kommandowert 0 = -1000 U/min
   d.SdoWr(0x3000, 0x01, 0x74)                          # DEV_Cmd_ExecOnChange - Drehzahlmodus
   time.sleep(3)                                        # 3s Wartezeit
   print i,"aktuelle Drehzahl =", d.SdoRd(0x3A04, 0x01) # MEASUREMENT_Vel_rpm - Auslesen der aktuellen Drehzahl

d.SdoWr(0x3000, 0x01, 0x02)                             # DEV_Cmd_ExecOnChange - Schnellstop

while (d.SdoRd(0x3002, 0x00) & 0x08!=0):                # DEV_Status - warte bis STAT_Moving=0
   time.sleep(0.1)                                      # alle 100 ms Bit abfragen

time.sleep(0.1)                                         # 100 ms für Drehzahlaktualisierung
print "aktuelle Drehzahl =", d.SdoRd(0x3A04, 0x01)      # MEASUREMENT_Vel_rpm - Auslesen der aktuellen Drehzahl
d.SdoWr(0x3150, 0x00, 0)                                # IO_DOUT_P0 - Zur Sicherheit Bremse schließen
d.SdoWr(0x3000, 0x01, 0x20)                             # DEV_Cmd_ExecOnChange - Antriebsregler sperren


3000.21h Gerätekommando - Daten 1 (int16)

Name | DEV_CmdData1_i16
Bezeichnung | Gerätekommando - Daten 1 (int16)
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-32768 .. 32767]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.19
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_Cmd_ExecOnChange, DEV_CmdData0, DEV_CmdData0_i16, DEV_CmdData1, DEV_CmdData2, DEV_CmdData2_i16

Beschreibung

Dieser Wert wird bei den Gerätekommandos 3Xh (DEV_Cmd_ExecOnChange) herangezogen.
Bei Änderung des Wertes muss das Gerätekommado (DEV_Cmd_ExecOnChange) erneut ausgeführt werden.

Gerätekommandos (DEV_Cmd_ExecOnChange), bei denen der Kommandowert 1 herangezogen wird:

Hex | Dec | Name | Beschreibung
28h | 40 | CMD_Sp | Setzt den Wert des beliebigen Parameters im Gerät. Kommandowert 0 definiert Index, Kommandowert 2 Subindex und Kommandowert 1 den Wert des Parameters. Beim Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode. Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
29h | 41 | CMD_Gp | Liest den aktuellen Wert des beliebigen Parameters vom Gerät ab. Kommandowert 0 definiert Index und Kommandowert 2 Subindex des Parameters. Der Wert wird im Parameter DEV_CmdResult zurückgeliefert. Beim Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode. Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
33h | 51 | CMD_Mova | Kommandowert 1 wird als absolute Zielposition übernommen. Es wird eine Bewegung auf eine absolute Position gestartet. Eine Bewegung kann durch erneutes Beschreiben des Kommandowertes 1 überschrieben werden. Man spricht in dem Fall über eine sog. "on-the-fly" Änderung der Bewegung; POS_Mova Achtung: Vorgabe der Solldrehzahl über Kommandowert 0 nötig. Ist eine Referenzierungsmethode parametriert, bleibt dieses Kommando gesperrt, bis die Referenzierung durchgeführt wurde. (Kommando 51h CMD_Homing_Start); Kontrolle Statusbit 7 STAT_HomingDone (DEV_Status, 3002.00h)
34h | 52 | CMD_Movr | Kommandowert 1 wird als relative Zielposition übernommen. Es wird eine Bewegung auf eine relative Position (relativ zur aktuellen Kommandoposition) gestartet. Eine Bewegung kann durch erneutes Beschreiben dieses Parameters (Bit 7 toggeln - siehe oben) überschrieben werden. Man spricht in dem Fall über eine sog. "on-the-fly" Änderung der Bewegung; POS_Movr Achtung: Vorgabe der Solldrehzahl über Kommandowert 0 nötig. Wird während einer laufenden Bewegung eine neue Solldrehzahl über Kommandowert 0 vorgegeben und neue Gerätekommando CMD_Movr, wird eine neue relative Positionierung ausgelöst ! Für das aktualisieren der Drehzahl Kommando 36h verwenden.
58h | 88 | CMD_HOME_SetPos | Setzt die aktuelle Position auf den Kommandowert 1 (DEV_CmdData1, 3000.11h). Dabei wird das Statusbit 7 / STAT_HomingDone (DEV_Status, 3002.00h) gesetzt.
40h | 64 | CMD_Acc | Im Stromreglermodus Kommandowerte 1 (DEV_CmdData1) wird als Strombeschleunigung - delta T (CURR_Acc_dT) übernommen Im Drehzahl- und Positioniermodus Kommandowerte 1 (DEV_CmdData1) wird als Drehzahlbeschleunigung - delta T VEL_Acc_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.
41h | 65 | CMD_Dec | Im Stromreglermodus Kommandowerte 1 (DEV_CmdData1) wird als Stromverzögerung - delta T (CURR_Dec_dT) übernommen Im Drehzahl- und Positioniermodus Kommandowerte 1 (DEV_CmdData1) wird als Drehzahlverzögerung - delta T (VEL_Dec_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.
42h | 66 | CMD_Dec_QuickStop | Im Stromreglermodus Kommandowerte 1 (DEV_CmdData1) wird als Stromschnellhaltverzögerung - delta T (CURR_Dec_QuickStop_dT) übernommen Im Drehzahl- und Positioniermodus Kommandowerte 1 (DEV_CmdData1) wird als QuickStop-Drehzahlverzögerung - delta T (VEL_Dec_QuickStop_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

d.SdoWr(0x3000, 0x01, 0)                              # DEV_Cmd_ExecOnChange - keine Wirkung (Toggelkommando)
print "aktuelle Position =", d.SdoRd(0x3762, 0x00)    # POS_ActualPosition - Auslesen der aktuellen Position

d.SdoWr(0x3000, 0x21, 1000)                           # DEV_CmdData1_i16 - Kommandowert 1 = 1000
d.SdoWr(0x3000, 0x01, 0x58)                           # DEV_Cmd_ExecOnChange - Setzen der aktuellen Position
print "aktuelle Position =", d.SdoRd(0x3762, 0x00)    # POS_ActualPosition - Auslesen der aktuellen Position

d.SdoWr(0x3000, 0x21, -1000)                          # DEV_CmdData1_i16 - Kommandowert 1 = -1000
d.SdoWr(0x3000, 0x01, 0xD8)                           # DEV_Cmd_ExecOnChange - Setzen der aktuellen Position
print "aktuelle Position =", d.SdoRd(0x3762, 0x00)    # POS_ActualPosition - Auslesen der aktuellen Position


3000.22h Gerätekommando - Daten 2 (int16)

Name | DEV_CmdData2_i16
Bezeichnung | Gerätekommando - Daten 2 (int16)
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-32768 .. 32767]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.44
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_Cmd_ExecOnChange, DEV_CmdData0, DEV_CmdData0_i16, DEV_CmdData1, DEV_CmdData1_i16, DEV_CmdData2

Beschreibung

Dieser Wert wird bei den Gerätekommandos 3Xh (DEV_Cmd_ExecOnChange) herangezogen.
Bei Änderung des Wertes muss das Gerätekommado (DEV_Cmd_ExecOnChange) erneut ausgeführt werden.

Gerätekommandos (DEV_Cmd_ExecOnChange), bei denen der Kommandowert 2 herangezogen wird:

Hex | Dec | Name | Beschreibung
28h | 40 | CMD_Sp | Setzt den Wert des beliebigen Parameters im Gerät. Kommandowert 0 definiert Index, Kommandowert 2 Subindex und Kommandowert 1 den Wert des Parameters. Beim Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode. Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
29h | 41 | CMD_Gp | Liest den aktuellen Wert des beliebigen Parameters vom Gerät ab. Kommandowert 0 definiert Index und Kommandowert 2 Subindex des Parameters. Der Wert wird im Parameter DEV_CmdResult zurückgeliefert. Beim Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode. Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                  # Node ID = 1

d.SdoWr(0x3000, 0x20, 0x3020)                               # DEV_CmdData0_i16 - 3020h
d.SdoWr(0x3000, 0x22, 0x00)                                 # DEV_CmdData2_i16 - 00h
d.SdoWr(0x3000, 0x01, 0)                                    # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x29)                                 # DEV_Cmd_ExecOnChange - CMD_Gp

print "3020.00h(Gerätecode):", hex(d.SdoRd(0x3000, 0x70))   # DEV_CmdResult


3000.70h Gerätekommando - Ergebnis

Name | DEV_CmdResult
Bezeichnung | Gerätekommando - Ergebnis
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.44
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_Cmd_ExecOnChange, DEV_CmdData0, DEV_CmdData1, DEV_CmdData2, DEV_Status, DEV_Event1_OnUserCmd1

Beschreibung

Dieser Parameter wird bei den Gerätekommandos 28h und 29h (DEV_Cmd_ExecOnChange) benutzt.
Der Wert ändert sich nach dem Aufruf des Gerätekommados (DEV_Cmd_ExecOnChange).

Gerätekommandos (DEV_Cmd_ExecOnChange), bei denen der Kommandoergebnis herangezogen wird:

Hex | Dec | Name | Beschreibung
28h | 40 | CMD_Sp | Setzt den Wert des beliebigen Parameters im Gerät. Kommandowert 0 definiert Index, Kommandowert 2 Subindex und Kommandowert 1 den Wert des Parameters. Beim Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode. Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
29h | 41 | CMD_Gp | Liest den aktuellen Wert des beliebigen Parameters vom Gerät ab. Kommandowert 0 definiert Index und Kommandowert 2 Subindex des Parameters. Der Wert wird im Parameter DEV_CmdResult zurückgeliefert. Beim Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode. Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.

Fehlercodes:

Fehlercode [dec] | Fehlercode [hex] | Fehlername | Beschreibung
-300 | 0xFFFFFED4 | ERR_Par_GenericError | Allgemeinesfehler
-301 | 0xFFFFFED3 | ERR_Par_StoreFailed | Fehler beim Speichern
-302 | 0xFFFFFED2 | ERR_Par_RestoreFailed | Fehler beim Laden
-306 | 0xFFFFFECE | ERR_Par_HasNotWritePermission | Parameter kann nicht geschriben werden
-307 | 0xFFFFFECD | ERR_Par_HasNotReadPermission | Parameter kann nicht gelesen werden
-308 | 0xFFFFFECC | ERR_Par_ValueOutOfRange | Wert des Parameter ist außerhalb des Bereiches
-319 | 0xFFFFFEC1 | ERR_Par_NotImplementedInThisVersion | Parameter ist nicht implementiert in dieser Version der Firmware
-322 | 0xFFFFFEBE | ERR_Par_CannotSet_AxIsMoving | Parameter kann nicht geschrieben werden, weil eine Bewegung wird ausgeführt
-325 | 0xFFFFFEBB | ERR_Par_CannotSet_PosModeIsNotEnabled | Parameter kann nicht geschrieben werden, weil Positioniermodus ist nicht aktiv
-326 | 0xFFFFFEBA | ERR_Par_CannotSet_DeviceIsNotEnabled | Parameter kann nicht geschrieben werden, weil die Endstufe nicht freigegeben ist
-327 | 0xFFFFFEB9 | ERR_Par_CannotSet_DeviceIsEnabled | Parameter kann nicht geschrieben werden, weil die Endstufe freigegeben ist
-329 | 0xFFFFFEB7 | ERR_Par_CannotSet_DeviceBadState | Parameter kann nicht geschrieben werden, weil das Gerät im falschen Zustand ist
-340 | 0xFFFFFEAC | ERR_Par_CannotSet_HwLimitIsActive | Parameter kann nicht geschrieben werden, weil Endschalter ist aktiv
-343 | 0xFFFFFEA9 | ERR_Par_CannotSet_StopOrHaltIsActive | Parameter kann nicht geschrieben werden, weil Stop- oder Halt-Komando nicht mit Continue-Kommando bestätig wurde
-344 | 0xFFFFFEA8 | ERR_Par_CannotSet_DeviceIsInHomingMode | Parameter kann nicht geschrieben werden, weil Referenzierung (Homing) ist aktiv
-345 | 0xFFFFFEA7 | ERR_Par_CannotSet_HomingRequired | Parameter kann nicht geschrieben werden, weil Referenzierung (Homing) nicht durchgeführt wurde
-350 | 0xFFFFFEA2 | ERR_Par_IndexDoesNotExist | Parameter mit dem angegbenen Index existiert nicht
-351 | 0xFFFFFEA1 | ERR_Par_SubIndexDoesNotExist | Parameter mit dem angegbenen Subindex existiert nicht

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                  # Node ID = 1

d.SdoWr(0x3000, 0x10, 0x3020)                               # DEV_CmdData0 - 3020h
d.SdoWr(0x3000, 0x12, 0x00)                                 # DEV_CmdData2 - 00h
d.SdoWr(0x3000, 0x01, 0)                                    # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x29)                                 # DEV_Cmd_ExecOnChange - CMD_Gp

print "3020.00h(Gerätecode):", hex(d.SdoRd(0x3000, 0x70))   # DEV_CmdResult


3000.81h Gerätekommando - Fehler

Name | DEV_CmdError
Bezeichnung | Gerätekommando - Fehler
Datentyp | uint16
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.93
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_Cmd, DEV_Status

Beschreibung

Kann ein Gerätekommando (DEV_Cmd) nicht gelesen oder ausgeführt werden wird über diesen Parameter ein Gerätekommando-Fehlercode zurück geliefert. Im Statusregister (DEV_Status) wird das Bit des Gerätekommandofehlers (STAT_CmdError) gesetzt. Das Bit des Fehlers (STAT_Error) wird in diesem Fall nicht gesetzt.

Wertigkeit:
Wert | Beschreibung
=0 | Es liegt kein Fehler vor.
<0 | Fehlercode (siehe Fehlercodetabelle)

Fehlercodes:
Fehlercode [dezimal] | Fehlercode [hex] | Fehlername | Beschreibung | CANopen- Fehlercode | mögliche Ursache
Comand Errors
-250 | 0xFF06 | ERR_Cmd_UnknownCmd | Unbekantes Kommando | - | -
-251 | 0xFF05 | ERR_Cmd_UnexpectedCmd | Unerwartetes Kommando | - | -
-252 | 0xFF04 | ERR_Cmd_SyntaxError | Syntaxfehler | - | -
-253 | 0xFF03 | ERR_Cmd_BadArgument | Falsches Kommandoargument | - | -
-260 | 0xFEFC | ERR_Cmd_BadArgumentsCount | Falsche Anzahl der Argumente | - | -
-261 | 0xFEFB | ERR_Cmd_IndexOutOfRange | Index ist außerhalb des Bereiches (größer als FFFFh) | - | -
-262 | 0xFEFA | ERR_Cmd_SubindexOutOfRange | Subindex ist außerhalb des Bereiches (größer als FFh) | - | -
Parameter Errors
-300 | 0xFED4 | ERR_Par_GenericError | Allgemeiner Fehler | - | -
-301 | 0xFED3 | ERR_Par_StoreFailed | Fehler beim Speichern | - | -
-302 | 0xFED2 | ERR_Par_RestoreFailed | Fehler beim Laden | - | -
-306 | 0xFECE | ERR_Par_HasNotWritePermission | Parameter kann nicht geschrieben werden | - | -
-307 | 0xFECD | ERR_Par_HasNotReadPermission | Parameter kann nicht gelesen werden | - | -
-308 | 0xFECC | ERR_Par_ValueOutOfRange | Wert des Parameter ist außerhalb des Bereiches | - | -
-315 | 0xFEC5 | ERR_Par_PermanentData_SSI_BadCRC | Daten für SSI-Encoder sind defekt (Falsche CRC32 Prüfsumme) | - | -
-316 | 0xFEC4 | ERR_Par_BadVersion | Version der gespeicherten Parameter stimmt nicht mit der Firmware überein | 0x6320 | -
-318 | 0xFEC2 | ERR_Par_BadCRC | Gespeicherte Parameter sind defekt (Falsche CRC32 Prüfsumme) | 0x6320 | -
-322 | 0xFEBE | ERR_Par_CannotSet_AxIsMoving | Parameter kann nicht geschrieben werden, weil eine Bewegung ausgeführt wird | - | -
-325 | 0xFEBB | ERR_Par_CannotSet_PosModeIsNotEnabled | Parameter kann nicht geschrieben werden, weil der Positioniermodus nicht aktiv ist | - | -
-326 | 0xFEBA | ERR_Par_CannotSet_DeviceIsNotEnabled | Parameter kann nicht geschrieben werden, weil die Endstufe gesperrt ist | - | -
-327 | 0xFEB9 | ERR_Par_CannotSet_DeviceIsEnabled | Parameter kann nicht geschrieben werden, weil die Endstufe freigegeben ist | - | -
-340 | 0xFEAC | ERR_Par_CannotSet_HwLimitIsActive | Parameter kann nicht geschrieben werden, weil der Endschalter aktiv ist | - | -
-343 | 0xFEA9 | ERR_Par_CannotSet_StopOrHaltIsActive | Parameter kann nicht geschrieben werden, weil das Stop- oder Halt-Komando nicht mit Continue-Kommando bestätigt wurde | - | -
-344 | 0xFEA8 | ERR_Par_CannotSet_AxIsInHomingMode | Parameter kann nicht geschrieben werden, weil die Referenzierung (Homing) aktiv ist | - | -
-345 | 0xFEA7 | ERR_Par_CannotSet_HomingRequired | Parameter kann nicht geschrieben werden, weil die Referenzierung (Homing) nicht durchgeführt wurde | - | -
-350 | 0xFEA2 | ERR_Par_IndexDoesNotExist | Parameter mit dem angegbenen Index existiert nicht | - | -
-351 | 0xFEA1 | ERR_Par_SubIndexDoesNotExist | Parameter mit dem angegbenen Subindex existiert nicht | - | -

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "Fehler =", d.SdoRd(0x3000, 0x81)   # Fehlerkode ausgeben


3000.83h Gerätekommando - Zähler

Name | DEV_CmdCounter
Bezeichnung | Gerätekommando - Zähler
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [1 .. 65535]
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.D2
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange, DEV_Cmd2

Beschreibung

Dieser Parameter zählt die ausgeführten Kommandos. Dabei werden alle 3 Kommandos, DEV_Cmd, DEV_Cmd_ExecOnChange und DEV_Cmd2 gezählt. Bei einem Neustart des Reglers wird der Parameter auf seinen Startwert 1 gesetzt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa

d = Dsa(1)

d.SdoWr(0x3000, 0x02, 1)                           # DEV_Cmd2 - eventuellen Fehler löschen

d.SdoWr(0x3000, 0x10, 500)                         # DEV_CmdData0 - Kommandowert 0 = 500 U/min
d.SdoWr(0x3000, 0x11, 4000)                        # DEV_CmdData1 - Kommandowert 1 = 4000 counts

d.SdoWr(0x3000, 0x02, 0x34)                        # DEV_Cmd2 - MovR

print "Kommando Zähler =" , d.SdoRd(0x3000, 0x83)  # DEV_CmdCounter


3001.00h Error Register

Name | DEV_ErrorReg
Bezeichnung | Error Register
Datentyp | int16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-32768 .. 32767]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | GetError()
Querverweis | DEV_Cmd

Beschreibung

Liefert einen Fehlercode zurück.
Ein eventueller Fehler kann durch Beschreiben vom DEV_Cmd mit dem Wert 1(CMD_ClearError) gelöscht werden.

Wertigkeit:
Wert | Beschreibung
=0 | Es liegt kein Fehler vor.
<0 | Fehlercode (siehe Fehlercodetabelle)

Fehlercodes:
Fehlercode [dezimal] | Fehlercode [hex] | Fehlername | Beschreibung | CANopen- Fehlercode | mögliche Ursache
Comand Errors
-250 | 0xFF06 | ERR_Cmd_UnknownCmd | Unbekantes Kommando | - | -
-251 | 0xFF05 | ERR_Cmd_UnexpectedCmd | Unerwartetes Kommando | - | -
-252 | 0xFF04 | ERR_Cmd_SyntaxError | Syntaxfehler | - | -
-253 | 0xFF03 | ERR_Cmd_BadArgument | Falsches Kommandoargument | - | -
-260 | 0xFEFC | ERR_Cmd_BadArgumentsCount | Falsche Anzahl der Argumente | - | -
-261 | 0xFEFB | ERR_Cmd_IndexOutOfRange | Index ist außerhalb des Bereiches (größer als FFFFh) | - | -
-262 | 0xFEFA | ERR_Cmd_SubindexOutOfRange | Subindex ist außerhalb des Bereiches (größer als FFh) | - | -
Parameter Errors
-300 | 0xFED4 | ERR_Par_GenericError | Allgemeiner Fehler | - | -
-301 | 0xFED3 | ERR_Par_StoreFailed | Fehler beim Speichern | - | -
-302 | 0xFED2 | ERR_Par_RestoreFailed | Fehler beim Laden | - | -
-306 | 0xFECE | ERR_Par_HasNotWritePermission | Parameter kann nicht geschrieben werden | - | -
-307 | 0xFECD | ERR_Par_HasNotReadPermission | Parameter kann nicht gelesen werden | - | -
-308 | 0xFECC | ERR_Par_ValueOutOfRange | Wert des Parameter ist außerhalb des Bereiches | - | -
-315 | 0xFEC5 | ERR_Par_PermanentData_SSI_BadCRC | Daten für SSI-Encoder sind defekt (Falsche CRC32 Prüfsumme) | - | -
-316 | 0xFEC4 | ERR_Par_BadVersion | Version der gespeicherten Parameter stimmt nicht mit der Firmware überein | 0x6320 | -
-318 | 0xFEC2 | ERR_Par_BadCRC | Gespeicherte Parameter sind defekt (Falsche CRC32 Prüfsumme) | 0x6320 | -
-322 | 0xFEBE | ERR_Par_CannotSet_AxIsMoving | Parameter kann nicht geschrieben werden, weil eine Bewegung ausgeführt wird | - | -
-325 | 0xFEBB | ERR_Par_CannotSet_PosModeIsNotEnabled | Parameter kann nicht geschrieben werden, weil der Positioniermodus nicht aktiv ist | - | -
-326 | 0xFEBA | ERR_Par_CannotSet_DeviceIsNotEnabled | Parameter kann nicht geschrieben werden, weil das Gerät gesperrt ist | - | -
-327 | 0xFEB9 | ERR_Par_CannotSet_DeviceIsEnabled | Parameter kann nicht geschrieben werden, weil das Gerät freigegeben ist | - | -
-340 | 0xFEAC | ERR_Par_CannotSet_HwLimitIsActive | Parameter kann nicht geschrieben werden, weil der Endschalter aktiv ist | - | -
-343 | 0xFEA9 | ERR_Par_CannotSet_StopOrHaltIsActive | Parameter kann nicht geschrieben werden, weil das Stop- oder Halt-Komando nicht mit Continue-Kommando bestätigt wurde | - | -
-344 | 0xFEA8 | ERR_Par_CannotSet_AxIsInHomingMode | Parameter kann nicht geschrieben werden, weil die Referenzierung (Homing) aktiv ist | - | -
-345 | 0xFEA7 | ERR_Par_CannotSet_HomingRequired | Parameter kann nicht geschrieben werden, weil die Referenzierung (Homing) nicht durchgeführt wurde | - | -
-350 | 0xFEA2 | ERR_Par_IndexDoesNotExist | Parameter mit dem angegbenen Index existiert nicht | - | -
-351 | 0xFEA1 | ERR_Par_SubIndexDoesNotExist | Parameter mit dem angegbenen Subindex existiert nicht | - | -
Communication Devices Errors
-501 | 0xFE0B | ERR_Com_CommunicationError | Kommunikationsfehler | 0x8100 | -
-511 | 0xFE01 | ERR_Com_MasterGuardTimeExceeded | Master-Guarding Fehler | 0x8130 | -
-512 | 0xFE00 | ERR_Com_MasterHeartBeatTimeExceeded | Master-Heartbeat Fehler | 0x8130 | -
-516 | 0xFDFC | ERR_Com_SlaveLeavedOperationalState | Das Gerät hat den Operational-State verlassen. In dem Zustand werden die Prozessdaten nicht verarbeitet. Dieser Fehler tritt auf, wenn z.B. bei EtherCAT der Zustand von Operational zu Safeoperational geändert wird. | - | -
-521 | 0xFDF7 | ERR_Com_SlaveLeavedDataExchange | Das Gerät hat den Zustand Data-Exchange verlassen. In dem Zustand werden die Prozessdaten nicht verarbeitet. Dieser Fehler tritt auf, wenn z.B. bei PROFIBUS der Master ausfällt. | - | -
-601 | 0xFDA7 | ERR_Com_CanBusOff | CAN-Bus ist im ausgeschalteten Zustand | - | -
-609 | 0xFD9F | ERR_Com_CanOtherError | Anderer CAN-Fehler | - | -
QAENC (Quasi Absolut Encoder) Errors
-710 | 0xFD3A | ERR_QuasiAbsEncoder_InvalidPosition | Die Position ist ungültig, weil die Differenz der aktuellen Indexposition zu gespeicherter Indexposition außerhalb der Toleranz ist | - | -
-711 | 0xFD39 | ERR_QuasiAbsEncoder_StoredPositionIsInvalid | Die gespeicherte Position ist ungültig | - | -
-715 | 0xFD35 | ERR_QuasiAbsEncoder_BadCRC | Die gespeicherte Daten sind defekt (Falsche CRC32 Prüfsumme) | - | -
-716 | 0xFD34 | ERR_QuasiAbsEncoder_SavingError | Ein Fehler ist beim Speichern der Daten aufgetretten | - | -
Encoderkommutierung
-730 | 0xFD26 | ERR_CommutationNotReferenced | Encoderabgleich wurde nicht durchgeführt (MOTOR_Commutation_Referencing). Der Abgleich muss bei den Geräten durchgeführt werden, die Encodersignale zur Kommutierung verwenden. | - | -
Device Errors
-1000 | 0xFC18 | ERR_FieldUnderVoltage | Leistungsspannung (Up) ist zu klein | 0x3220 | -
-1001 | 0xFC17 | ERR_FieldOverVoltage | Leistungsspannung (Up) ist zu groß | 0x3210 | -
-1002 | 0xFC16 | ERR_MainsUnderVoltage | Elektronikspannung (Ue) ist zu klein | 0x3120 | -
-1003 | 0xFC15 | ERR_MainsOverVoltage | Elektronikspannung (Ue) ist zu groß | 0x3110 | -
-1020 | 0xFC04 | ERR_DeviceOverTemperature | Übertemperatur des Gerätes | 0x4210 | -
-1021 | 0xFC03 | ERR_HeatSinkOverTemperature | Übertemperatur der Endstufe | 0x4310 | -
-1060 | 0xFBDC | ERR_MotShortCircuit | Kurzschluß (Motor-Motor, Motor-GND, Motor-Power) | 0x2130 | -
-1062 | 0xFBDA | ERR_EmergencyUpOverVoltage | Hardwaremässige Absicherung der Elektronik gegen Up-Überspannung | - | -
-1078 | 0xFBCA | ERR_Enc_Failed | Encoderfehler (siehe MOTOR_ENC_Diag_Enable) | - | -
Regv Errors
-3010 | 0xF43E | ERR_Blockage | Der Motor wurde blockiert | - | -
Regp Errors
-4000 | 0xF060 | ERR_Regp_FollowingError | Zulässiger Schleppabstand wurde überschritten (siehe: POS_FollowingErrorWindow) | 0x8611 | -
-4001 | 0xF05F | ERR_Regp_FollowingErrorDyn | Zulässiger dynamischer Schleppabstand wurde überschritten (siehe: POS_FollowingErrorWindowDyn) | - | -
-4005 | 0xF05B | ERR_Regp_ReachedTimeout | Die Zielposition wurde in einer bestimmten Zeit nicht erreicht (siehe: POS_PositionWindow, POS_PositionWindowTime und POS_PositionWindowTimeout) | - | -
Homing Errors
-4200 | 0xEF98 | ERR_Home_UnknownMethod | Unkekannte Referenzierungsmethode | - | -
-4201 | 0xEF97 | ERR_Home_IndexNotFound | Indeximpuls wurde beim Referenzieren nicht gefunden | - | -
-4202 | 0xEF96 | ERR_Home_HwLimitPosReached | Positiver Endschalter wurde erreicht | - | -
-4203 | 0xEF95 | ERR_Home_HwLimitNegReached | Negativer Endschalter wurde erreicht | - | -
I/O Errors
-5100 | 0xEC14 | ERR_Io_EndSwitchActive | Endschalter ist aktiv | - | -
MPU Errors
-6000 | 0xE890 | ERR_MPU_BadCode | Falscher MPU-Befehl (MPU-Programm ist defekt !) | - | -
-6001 | 0xE88F | ERR_MPU_ProgramCounterOutOfRange | Programmzähler ist außerhalb des zulässigen Bereiches | - | -
-6002 | 0xE88E | ERR_MPU_JmpOutOfRange | Es wurde ein Sprung in einen unzulässigen Bereich ausgeführt. | - | -
-6003 | 0xE88D | ERR_MPU_Div0 | Es wurde Division durch Null ausgeführt. | - | -
-6020 | 0xE87C | ERR_MPU_RdErrArg0 | Erstes Argument des MPU-Befehls kann nicht gelesen werden. | - | -
-6021 | 0xE87B | ERR_MPU_RdErrArg1 | Zweites Argument des MPU-Befehls kann nicht gelesen werden. | - | -
-6030 | 0xE872 | ERR_MPU_WrErrArg0 | Erstes Argument des MPU-Befehls kann nicht geschrieben werden. | - | -
-6031 | 0xE871 | ERR_MPU_WrErrArg1 | Zweites Argument des MPU-Befehls kann nicht geschrieben werden. | - | -
-6040 | 0xE868 | ERR_MPU_CallStackOverflow | MPU-Programmstapelüberlauf | - | -
-6041 | 0xE867 | ERR_MPU_CallStackUnderflow | MPU-Programmstapelunterlauf | - | -
-6050 | 0xE85E | ERR_MPU_PrgBadMpuVersion | Falsche MPU-Version | - | -
-6051 | 0xE85D | ERR_MPU_PrgBadMpuCode | Falsche MPU-Kennung | - | -
-6052 | 0xE85C | ERR_MPU_PrgStoreFailed | MPU-Programm wurde nicht gespeichert. | - | -
-6053 | 0xE85B | ERR_MPU_PrgRestoreFailed | MPU-Programm wurde nicht geladen. | - | -
-6054 | 0xE85A | ERR_MPU_PrgBadCrc | Falsche Kontrollsume (CRC32) des MPU-Programms | - | -
Fatal Errors (Diese Fehler können nicht zurückgesetzt werden - Das Gerät ist defekt)
-30000 | 0x8AD0 | ERR_Fatal | Schwerwiegender Fehler | 0xFF00 | -
-30001 | 0x8ACF | ERR_BadCodeCRC | Falsche Kontrollsume (CRC32) des Programms | - | -
-30002 | 0x8ACE | ERR_StackOverflow | Programmstapelüberlauf | - | -
-30003 | 0x8ACD | ERR_StackUnderflow | Programmstapelunterlauf | - | -
-30010 | 0x8AC6 | ERR_SelftestFailed | Selbstest erfolglos | 0xFF00 | -
-30030 | 0x8AB2 | ERR_ImCalibrationFailed | Stromabgleich erfolglos | 0xFF00 | -
-30031 | 0x8AB1 | ERR_UmCalibrationFailed | Spannungsabgleich erfolglos | 0xFF00 | -

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

print "Fehler =", d.SdoRd(0x3001, 0x00)   # Fehlerkode ausgeben


3002.00h Statusregister

Name | DEV_Status
Bezeichnung | Statusregister
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | GetStatus()
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Liefert den Wert vom Statusregister zurück. Jedes Bit des Statusregisters hat eine eigene Bedeutung (siehe Tabelle).

Bitbelegung:
Bit | Name | Beschreibung für Bitwert = 1
0 | STAT_Enabled | Leistungsstufe und Regelung ist freigegeben.
1 | STAT_Error | Fehler ist aufgetreten. Fehlercode ist in DEV_ErrorReg.
2 | STAT_Warning | z.Z. nicht benutzt
3 | STAT_Moving | Bewegung ist aktiv.
4 STAT_Reached Sollwert wurde erreicht.

MODE_Curr    Stromsollwert wurde erreicht.
MODE_Vel     Sollgeschwindigkeit wurde erreicht.
MODE_Pos     Zielposition wurde erreicht. (siehe POS_ReachedConfigFlags)
5 STAT_Limit Sollwert wurde begrenzt.

MODE_Curr    Motorstrom wurde begrenzt.
MODE_Vel     Geschwindigkeit wurde begrenzt.
MODE_Pos     Zielposition wurde begrenzt.
6 | STAT_FollowingError | Schleppabstand wurde überschritten.
7 | STAT_HomingDone | Referenzierung wurde erfolgreich durchgeführt.
8 STAT_Toggle
 Dieses Bit wird invertiert, wenn ein Positionierkommando (POS_Mova oder POS_Movr) akzeptiert wurde.
In Verbindng mit dem Bit STAT_Reached, kann man erkennen, ob die neue Position erreicht wurde, auch wenn eine Positionierung auf die aktuelle Position erfolgte.
(Verfügbar ab Version 1.77.00.44)
9 STAT_CmdToggle Dieses Bit wird invertiert, wenn ein Gerätekommando (DEV_Cmd_ExecOnChange) erkannt wurde.
In Verbindung mit dem STAT_CmdError (Bit 10) kann man erkennen, ob das neue Kommando akzeptiert wurde. (Verfügbar ab Version 1.85.00.82)
10 | STAT_CmdError | Gerätekommando (DEV_Cmd_ExecOnChange) wurde nicht akzeptiert, siehe auch STAT_ComToggle (Bit 9). (Verfügbar ab Version 1.85.00.82)
11 | STAT_StopOrHalt | Stop oder Halt wurde durchgeführt (siehe DEV_Cmd).
12 | STAT_LimitCurrent | Motorstrom wurde begrenzt (siehe: CURR_LimitMaxPos, CURR_LimitMaxNeg).
13 | STAT_LimitVel | Geschwindigkeit wurde Begrenzt (siehe: VEL_LimitMaxPos, VEL_LimitMaxNeg).
14 | STAT_LimitPos | Position wurde begrenzt (siehe: POS_PositionLimitMin, POS_PositionLimitMax).
15 | STAT_LimitSVel | SVel-Geschwindigkeit wurde begrenzt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

status = d.SdoRd(0x3002, 0x00)         # Status lesen

if status & 0x0002:                    # Bit 1 vom status auswerten
   print "Ein Fehler ist aufgetreten"
else:
   print "Kein Fehler"


3003.00h Betriebsart

Name | DEV_Mode
Bezeichnung | Betriebsart
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 2, 3, 5, 7}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | Mode(value)
Querverweis | -

Beschreibung

Dieser Parameter bestimmt die Betriebsart des Antriebsreglers. Die Betriebsart sollte im gesperrten Regler geändert werden, um unvorhergesehene Effekte zu vermeiden.

Parameterwerte:
Wert | Name | PLC Funktion | Beschreibung
0 | MODE_OFF | ModeOff() | Leistung und Regelung ausgeschaltet
2 | MODE_Current | ModeCurr() | Stromreglermodus
3 | MODE_Vel | ModeVel() | Drehzahlmodus mit Rampen
5 | MODE_SVel | ModeSVel() | Drehzahlmodus ohne Rampen (untergeordneter Drehzahlregler)
7 | MODE_Pos | ModePos() | Positioniermodus Diese Betriebsart benutzt teilweise die Parameter vom Drehzahlregler (Parameterbereich 3300h-33FFh)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

d.SdoWr(0x3003, 0x00, 7)      # Betriebsart = Positionierregler
print d.SdoRd(0x3003, 0x00)   # aktuelle Betriebsart anzeigen


3004.00h Betriebsfreigabe

Name | DEV_Enable
Bezeichnung | Betriebsfreigabe
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | Disable(), Enable()
Querverweis | DEV_DinEnable,

Beschreibung

Mit dem Parameter kann der Betrieb des Antriebsreglers gesperrt oder freigegeben werden.
Dieser Parameter wurde für die softwaremäßige Steuerung des Betriebs vorgesehen.

Ob der Betrieb der Leistungsstufe des Antriebsreglers freigegeben wird, hängt noch von der hardwaremäßigen Freigabe (Parameter DEV_DinEnable) ab.
Die Betriebsfreigabe ist eine UND-Verknüpfung des Parameter DEV_Enable und des digitalen Eingangs, welcher durch den Parameter DEV_DinEnable bestimmt wurde. D.h., erst wenn beide Bedingungen erfüllt sind, erfolgt die Betriebsfreigabe.

Parameterwerte:
Wert | Name | PLC Funktion | Beschreibung
0 | DISABLE | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
1 | ENABLE | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)   # Sperren
d.SdoWr(0x3004, 0x00, 1)   # Freigeben


3008.00h Fehler Konfiguration

Name | DEV_ConfigErrors
Bezeichnung | Fehler Konfiguration
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0h .. FFh]
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.E5
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ErrorReg

Beschreibung

Mit diesem Parameter kann das Fehlerverhalten des Geräts konfiguriert werden.

Bitbelegung:
Bit Name Beschreibung
0 Up
 Bit = 0 - Fehler, die die Leistungsspannung betreffen (Unterspannung, Überspannung u.a.) werden als Fehler betrachtet.
Bit = 1 - Fehler, die die Leistungsspannung betreffen (Unterspannung, Überspannung u.a.) werden nicht als Fehler betrachtet.
1 Ue
 Bit = 0 - Fehler, die die Elektronikspannung betreffen (Unterspannung, Überspannung u.a.) werden als Fehler betrachtet.
Bit = 1 - Fehler, die die Elektronikspannung betreffen (Unterspannung, Überspannung u.a.) werden nicht als Fehler betrachtet.
2 Temp
 Bit = 0 - Fehler, die die Temperatur betreffen (Übertemperatur u.a.) werden als Fehler betrachtet.
Bit = 1 - Fehler, die die Temperatur betreffen (Übertemperatur u.a.) werden nicht als Fehler betrachtet.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3008, 0x00, 0x01)               # DEV_ConfigErrors
config_err = hex(d.SdoRd(0x3008, 0x00))   # DEV_ConfigErrors
print "Config Errors:",config_err
print "Error:", d.SdoRd(0x3001, 0x00)     # DEV_ErrorReg


Inhalt - Parameter 3000h (DSA) - Erreigniskommandos

3010.11h | DEV_Event_Cmd1OnError | Erreigniskommando 1 - bei Fehlern
3010.12h | DEV_Event_Cmd2OnError | Erreigniskommando 2 - bei Fehlern
3010.13h | DEV_Event_Cmd3OnError | Erreigniskommando 3 - bei Fehlern
3010.14h | DEV_Event_Cmd4OnError | Erreigniskommando 4 - bei Fehlern
3010.31h | DEV_Event_Cmd1OnCommError | Erreigniskommando 1 - bei Kommunikationsfehlern
3010.32h | DEV_Event_Cmd2OnCommError | Erreigniskommando 2 - bei Kommunikationsfehlern
3010.33h | DEV_Event_Cmd3OnCommError | Erreigniskommando 3 - bei Kommunikationsfehlern
3010.34h | DEV_Event_Cmd4OnCommError | Erreigniskommando 4 - bei Kommunikationsfehlern
3012.10h | DEV_Event_CmdOnSpecificError1 | Erreigniskommandos - bei spezifischem Fehler 1
3012.11h | DEV_Event_Cmd1OnSpecificError1 | Erreigniskommando 1 - bei spezifischem Fehler 1
3012.12h | DEV_Event_Cmd2OnSpecificError1 | Erreigniskommando 2 - bei spezifischem Fehler 1
3012.13h | DEV_Event_Cmd3OnSpecificError1 | Erreigniskommando 3 - bei spezifischem Fehler 1
3012.14h | DEV_Event_Cmd4OnSpecificError1 | Erreigniskommando 4 - bei spezifischem Fehler 1
3012.20h | DEV_Event_CmdOnSpecificError2 | Erreigniskommandos - bei spezifischem Fehler 2
3012.21h | DEV_Event_Cmd1OnSpecificError2 | Erreigniskommando 1 - bei spezifischem Fehler 2
3012.22h | DEV_Event_Cmd2OnSpecificError2 | Erreigniskommando 2 - bei spezifischem Fehler 2
3012.23h | DEV_Event_Cmd3OnSpecificError2 | Erreigniskommando 3 - bei spezifischem Fehler 2
3012.24h | DEV_Event_Cmd4OnSpecificError2 | Erreigniskommando 4 - bei spezifischem Fehler 2
3012.30h | DEV_Event_CmdOnSpecificError3 | Erreigniskommandos - bei spezifischem Fehler 3
3012.31h | DEV_Event_Cmd1OnSpecificError3 | Erreigniskommando 1 - bei spezifischem Fehler 3
3012.32h | DEV_Event_Cmd2OnSpecificError3 | Erreigniskommando 2 - bei spezifischem Fehler 3
3012.33h | DEV_Event_Cmd3OnSpecificError3 | Erreigniskommando 3 - bei spezifischem Fehler 3
3012.34h | DEV_Event_Cmd4OnSpecificError3 | Erreigniskommando 4 - bei spezifischem Fehler 3
3012.40h | DEV_Event_CmdOnSpecificError4 | Erreigniskommandos - bei spezifischen Fehler 4
3012.41h | DEV_Event_Cmd1OnSpecificError4 | Erreigniskommando 1 - bei spezifischem Fehler 4
3012.42h | DEV_Event_Cmd2OnSpecificError4 | Erreigniskommando 2 - bei spezifischem Fehler 4
3012.43h | DEV_Event_Cmd3OnSpecificError4 | Erreigniskommando 3 - bei spezifischem Fehler 4
3012.44h | DEV_Event_Cmd4OnSpecificError4 | Erreigniskommando 4 - bei spezifischem Fehler 4


3010.11h Erreigniskommando 1 - bei Fehlern

Name | DEV_Event_Cmd1OnError
Bezeichnung | Erreigniskommando 1 - bei Fehlern
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnError([cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem Fehler beeinflusst werden.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 11h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_Cmd1OnError, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandos nach Fehlern
d.SdoWr(0x3010, 0x11, 2)      # DEV_Event_Cmd1OnError - QuickStop
d.SdoWr(0x3010, 0x12, 0x20)   # DEV_Event_Cmd2OnError - Endstufe sperren
d.SdoWr(0x3010, 0x13, 1)      # DEV_Event_Cmd3OnError - Fehler löschen
d.SdoWr(0x3010, 0x14, 0x21)   # DEV_Event_Cmd4OnError - Endstufe freigeben


3010.12h Erreigniskommando 2 - bei Fehlern

Name | DEV_Event_Cmd2OnError
Bezeichnung | Erreigniskommando 2 - bei Fehlern
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnError([cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem Fehler beeinflusst werden.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 11h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_Cmd1OnError, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandos nach Fehlern
d.SdoWr(0x3010, 0x11, 2)      # DEV_Event_Cmd1OnError - QuickStop
d.SdoWr(0x3010, 0x12, 0x20)   # DEV_Event_Cmd2OnError - Endstufe sperren
d.SdoWr(0x3010, 0x13, 1)      # DEV_Event_Cmd3OnError - Fehler löschen
d.SdoWr(0x3010, 0x14, 0x21)   # DEV_Event_Cmd4OnError - Endstufe freigeben


3010.13h Erreigniskommando 3 - bei Fehlern

Name | DEV_Event_Cmd3OnError
Bezeichnung | Erreigniskommando 3 - bei Fehlern
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnError([cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem Fehler beeinflusst werden.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 11h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_Cmd1OnError, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandos nach Fehlern
d.SdoWr(0x3010, 0x11, 2)      # DEV_Event_Cmd1OnError - QuickStop
d.SdoWr(0x3010, 0x12, 0x20)   # DEV_Event_Cmd2OnError - Endstufe sperren
d.SdoWr(0x3010, 0x13, 1)      # DEV_Event_Cmd3OnError - Fehler löschen
d.SdoWr(0x3010, 0x14, 0x21)   # DEV_Event_Cmd4OnError - Endstufe freigeben


3010.14h Erreigniskommando 4 - bei Fehlern

Name | DEV_Event_Cmd4OnError
Bezeichnung | Erreigniskommando 4 - bei Fehlern
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnError([cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem Fehler beeinflusst werden.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 11h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_Cmd1OnError, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandos nach Fehlern
d.SdoWr(0x3010, 0x11, 2)      # DEV_Event_Cmd1OnError - QuickStop
d.SdoWr(0x3010, 0x12, 0x20)   # DEV_Event_Cmd2OnError - Endstufe sperren
d.SdoWr(0x3010, 0x13, 1)      # DEV_Event_Cmd3OnError - Fehler löschen
d.SdoWr(0x3010, 0x14, 0x21)   # DEV_Event_Cmd4OnError - Endstufe freigeben


3010.31h Erreigniskommando 1 - bei Kommunikationsfehlern

Name | DEV_Event_Cmd1OnCommError
Bezeichnung | Erreigniskommando 1 - bei Kommunikationsfehlern
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnCommError([cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem Kommunikationsfehler (s. DEV_ErrorReg, -501, -511, -512, -601) beeinflusst werden.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x31, 0x32, 0x33, 0x34) ein Gerätekommando speicheren.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben

Diese Funktion ist standardmäßig deaktiviert (Subindex 31h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_Cmd1OnCommError, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandos nach Kommunikationsfehlern
d.SdoWr(0x3010, 0x31, 2)      # DEV_Event_Cmd1OnCommError - QuickStop
d.SdoWr(0x3010, 0x32, 0x20)   # DEV_Event_Cmd2OnCommError - Endstufe sperren
d.SdoWr(0x3010, 0x33, 1)      # DEV_Event_Cmd3OnCommError - Fehler löschen
d.SdoWr(0x3010, 0x34, 0x21)   # DEV_Event_Cmd4OnCommError - Endstufe freigeben


3010.32h Erreigniskommando 2 - bei Kommunikationsfehlern

Name | DEV_Event_Cmd2OnCommError
Bezeichnung | Erreigniskommando 2 - bei Kommunikationsfehlern
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnCommError([cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem Kommunikationsfehler (s. DEV_ErrorReg, -501, -511, -512, -601) beeinflusst werden.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x31, 0x32, 0x33, 0x34) ein Gerätekommando speicheren.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben

Diese Funktion ist standardmäßig deaktiviert (Subindex 31h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_Cmd1OnCommError, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandos nach Kommunikationsfehlern
d.SdoWr(0x3010, 0x31, 2)      # DEV_Event_Cmd1OnCommError - QuickStop
d.SdoWr(0x3010, 0x32, 0x20)   # DEV_Event_Cmd2OnCommError - Endstufe sperren
d.SdoWr(0x3010, 0x33, 1)      # DEV_Event_Cmd3OnCommError - Fehler löschen
d.SdoWr(0x3010, 0x34, 0x21)   # DEV_Event_Cmd4OnCommError - Endstufe freigeben


3010.33h Erreigniskommando 3 - bei Kommunikationsfehlern

Name | DEV_Event_Cmd3OnCommError
Bezeichnung | Erreigniskommando 3 - bei Kommunikationsfehlern
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnCommError([cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem Kommunikationsfehler (s. DEV_ErrorReg, -501, -511, -512, -601) beeinflusst werden.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x31, 0x32, 0x33, 0x34) ein Gerätekommando speicheren.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben

Diese Funktion ist standardmäßig deaktiviert (Subindex 31h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_Cmd1OnCommError, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandos nach Kommunikationsfehlern
d.SdoWr(0x3010, 0x31, 2)      # DEV_Event_Cmd1OnCommError - QuickStop
d.SdoWr(0x3010, 0x32, 0x20)   # DEV_Event_Cmd2OnCommError - Endstufe sperren
d.SdoWr(0x3010, 0x33, 1)      # DEV_Event_Cmd3OnCommError - Fehler löschen
d.SdoWr(0x3010, 0x34, 0x21)   # DEV_Event_Cmd4OnCommError - Endstufe freigeben


3010.34h Erreigniskommando 4 - bei Kommunikationsfehlern

Name | DEV_Event_Cmd4OnCommError
Bezeichnung | Erreigniskommando 4 - bei Kommunikationsfehlern
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnCommError([cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem Kommunikationsfehler (s. DEV_ErrorReg, -501, -511, -512, -601) beeinflusst werden.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x31, 0x32, 0x33, 0x34) ein Gerätekommando speicheren.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben

Diese Funktion ist standardmäßig deaktiviert (Subindex 31h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_Cmd1OnCommError, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandos nach Kommunikationsfehlern
d.SdoWr(0x3010, 0x31, 2)      # DEV_Event_Cmd1OnCommError - QuickStop
d.SdoWr(0x3010, 0x32, 0x20)   # DEV_Event_Cmd2OnCommError - Endstufe sperren
d.SdoWr(0x3010, 0x33, 1)      # DEV_Event_Cmd3OnCommError - Fehler löschen
d.SdoWr(0x3010, 0x34, 0x21)   # DEV_Event_Cmd4OnCommError - Endstufe freigeben


3012.10h Erreigniskommandos - bei spezifischem Fehler 1

Name | DEV_Event_CmdOnSpecificError1
Bezeichnung | Erreigniskommandos - bei spezifischem Fehler 1
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-32768 .. 32767]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError1 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 11h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError1, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x10, -1000)     # DEV_Event_CmdOnSpecificError1 -  Unterspannung
d.SdoWr(0x3012, 0x11, 2)         # DEV_Event_Cmd1OnSpecificError1 - QuickStop
d.SdoWr(0x3012, 0x12, 0x20)      # DEV_Event_Cmd2OnSpecificError1 - Endstufe sperren
d.SdoWr(0x3012, 0x13, 1)         # DEV_Event_Cmd3OnSpecificError1 - Fehler löschen
d.SdoWr(0x3012, 0x14, 0x21)      # DEV_Event_Cmd4OnSpecificError1 - Endstufe freigeben


3012.11h Erreigniskommando 1 - bei spezifischem Fehler 1

Name | DEV_Event_Cmd1OnSpecificError1
Bezeichnung | Erreigniskommando 1 - bei spezifischem Fehler 1
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError1 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 11h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError1, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x10, -1000)     # DEV_Event_CmdOnSpecificError1 -  Unterspannung
d.SdoWr(0x3012, 0x11, 2)         # DEV_Event_Cmd1OnSpecificError1 - QuickStop
d.SdoWr(0x3012, 0x12, 0x20)      # DEV_Event_Cmd2OnSpecificError1 - Endstufe sperren
d.SdoWr(0x3012, 0x13, 1)         # DEV_Event_Cmd3OnSpecificError1 - Fehler löschen
d.SdoWr(0x3012, 0x14, 0x21)      # DEV_Event_Cmd4OnSpecificError1 - Endstufe freigeben


3012.12h Erreigniskommando 2 - bei spezifischem Fehler 1

Name | DEV_Event_Cmd2OnSpecificError1
Bezeichnung | Erreigniskommando 2 - bei spezifischem Fehler 1
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError1 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 11h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError1, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x10, -1000)     # DEV_Event_CmdOnSpecificError1 -  Unterspannung
d.SdoWr(0x3012, 0x11, 2)         # DEV_Event_Cmd1OnSpecificError1 - QuickStop
d.SdoWr(0x3012, 0x12, 0x20)      # DEV_Event_Cmd2OnSpecificError1 - Endstufe sperren
d.SdoWr(0x3012, 0x13, 1)         # DEV_Event_Cmd3OnSpecificError1 - Fehler löschen
d.SdoWr(0x3012, 0x14, 0x21)      # DEV_Event_Cmd4OnSpecificError1 - Endstufe freigeben


3012.13h Erreigniskommando 3 - bei spezifischem Fehler 1

Name | DEV_Event_Cmd3OnSpecificError1
Bezeichnung | Erreigniskommando 3 - bei spezifischem Fehler 1
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError1 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 11h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError1, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x10, -1000)     # DEV_Event_CmdOnSpecificError1 -  Unterspannung
d.SdoWr(0x3012, 0x11, 2)         # DEV_Event_Cmd1OnSpecificError1 - QuickStop
d.SdoWr(0x3012, 0x12, 0x20)      # DEV_Event_Cmd2OnSpecificError1 - Endstufe sperren
d.SdoWr(0x3012, 0x13, 1)         # DEV_Event_Cmd3OnSpecificError1 - Fehler löschen
d.SdoWr(0x3012, 0x14, 0x21)      # DEV_Event_Cmd4OnSpecificError1 - Endstufe freigeben


3012.14h Erreigniskommando 4 - bei spezifischem Fehler 1

Name | DEV_Event_Cmd4OnSpecificError1
Bezeichnung | Erreigniskommando 4 - bei spezifischem Fehler 1
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError1 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 11h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError1, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x10, -1000)     # DEV_Event_CmdOnSpecificError1 -  Unterspannung
d.SdoWr(0x3012, 0x11, 2)         # DEV_Event_Cmd1OnSpecificError1 - QuickStop
d.SdoWr(0x3012, 0x12, 0x20)      # DEV_Event_Cmd2OnSpecificError1 - Endstufe sperren
d.SdoWr(0x3012, 0x13, 1)         # DEV_Event_Cmd3OnSpecificError1 - Fehler löschen
d.SdoWr(0x3012, 0x14, 0x21)      # DEV_Event_Cmd4OnSpecificError1 - Endstufe freigeben


3012.20h Erreigniskommandos - bei spezifischem Fehler 2

Name | DEV_Event_CmdOnSpecificError2
Bezeichnung | Erreigniskommandos - bei spezifischem Fehler 2
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-32768 .. 32767]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError2 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 21h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError2, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x20, -1000)     # DEV_Event_CmdOnSpecificError2 - Unterspannung
d.SdoWr(0x3012, 0x21, 2)         # DEV_Event_Cmd1OnSpecificError2 - QuickStop
d.SdoWr(0x3012, 0x22, 0x20)      # DEV_Event_Cmd2OnSpecificError2 - Endstufe sperren
d.SdoWr(0x3012, 0x23, 1)         # DEV_Event_Cmd3OnSpecificError2 - Fehler löschen
d.SdoWr(0x3012, 0x24, 0x21)      # DEV_Event_Cmd4OnSpecificError2 - Endstufe freigeben


3012.21h Erreigniskommando 1 - bei spezifischem Fehler 2

Name | DEV_Event_Cmd1OnSpecificError2
Bezeichnung | Erreigniskommando 1 - bei spezifischem Fehler 2
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError2 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 21h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError2, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x20, -1000)     # DEV_Event_CmdOnSpecificError2 - Unterspannung
d.SdoWr(0x3012, 0x21, 2)         # DEV_Event_Cmd1OnSpecificError2 - QuickStop
d.SdoWr(0x3012, 0x22, 0x20)      # DEV_Event_Cmd2OnSpecificError2 - Endstufe sperren
d.SdoWr(0x3012, 0x23, 1)         # DEV_Event_Cmd3OnSpecificError2 - Fehler löschen
d.SdoWr(0x3012, 0x24, 0x21)      # DEV_Event_Cmd4OnSpecificError2 - Endstufe freigeben


3012.22h Erreigniskommando 2 - bei spezifischem Fehler 2

Name | DEV_Event_Cmd2OnSpecificError2
Bezeichnung | Erreigniskommando 2 - bei spezifischem Fehler 2
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError2 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 21h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError2, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x20, -1000)     # DEV_Event_CmdOnSpecificError2 - Unterspannung
d.SdoWr(0x3012, 0x21, 2)         # DEV_Event_Cmd1OnSpecificError2 - QuickStop
d.SdoWr(0x3012, 0x22, 0x20)      # DEV_Event_Cmd2OnSpecificError2 - Endstufe sperren
d.SdoWr(0x3012, 0x23, 1)         # DEV_Event_Cmd3OnSpecificError2 - Fehler löschen
d.SdoWr(0x3012, 0x24, 0x21)      # DEV_Event_Cmd4OnSpecificError2 - Endstufe freigeben


3012.23h Erreigniskommando 3 - bei spezifischem Fehler 2

Name | DEV_Event_Cmd3OnSpecificError2
Bezeichnung | Erreigniskommando 3 - bei spezifischem Fehler 2
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError2 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 21h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError2, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x20, -1000)     # DEV_Event_CmdOnSpecificError2 - Unterspannung
d.SdoWr(0x3012, 0x21, 2)         # DEV_Event_Cmd1OnSpecificError2 - QuickStop
d.SdoWr(0x3012, 0x22, 0x20)      # DEV_Event_Cmd2OnSpecificError2 - Endstufe sperren
d.SdoWr(0x3012, 0x23, 1)         # DEV_Event_Cmd3OnSpecificError2 - Fehler löschen
d.SdoWr(0x3012, 0x24, 0x21)      # DEV_Event_Cmd4OnSpecificError2 - Endstufe freigeben


3012.24h Erreigniskommando 4 - bei spezifischem Fehler 2

Name | DEV_Event_Cmd4OnSpecificError2
Bezeichnung | Erreigniskommando 4 - bei spezifischem Fehler 2
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError2 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 21h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError2, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError3
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x20, -1000)     # DEV_Event_CmdOnSpecificError2 - Unterspannung
d.SdoWr(0x3012, 0x21, 2)         # DEV_Event_Cmd1OnSpecificError2 - QuickStop
d.SdoWr(0x3012, 0x22, 0x20)      # DEV_Event_Cmd2OnSpecificError2 - Endstufe sperren
d.SdoWr(0x3012, 0x23, 1)         # DEV_Event_Cmd3OnSpecificError2 - Fehler löschen
d.SdoWr(0x3012, 0x24, 0x21)      # DEV_Event_Cmd4OnSpecificError2 - Endstufe freigeben


3012.30h Erreigniskommandos - bei spezifischem Fehler 3

Name | DEV_Event_CmdOnSpecificError3
Bezeichnung | Erreigniskommandos - bei spezifischem Fehler 3
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-32768 .. 32767]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError3 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 31h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError3, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x30, -1000)     # DEV_Event_CmdOnSpecificError3 - Unterspannung
d.SdoWr(0x3012, 0x31, 2)         # DEV_Event_Cmd1OnSpecificError3 - QuickStop
d.SdoWr(0x3012, 0x32, 0x20)      # DEV_Event_Cmd2OnSpecificError3 - Endstufe sperren
d.SdoWr(0x3012, 0x33, 1)         # DEV_Event_Cmd3OnSpecificError3 - Fehler löschen
d.SdoWr(0x3012, 0x34, 0x21)      # DEV_Event_Cmd4OnSpecificError3 - Endstufe freigeben


3012.31h Erreigniskommando 1 - bei spezifischem Fehler 3

Name | DEV_Event_Cmd1OnSpecificError3
Bezeichnung | Erreigniskommando 1 - bei spezifischem Fehler 3
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError3 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 31h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError3, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x30, -1000)     # DEV_Event_CmdOnSpecificError3 - Unterspannung
d.SdoWr(0x3012, 0x31, 2)         # DEV_Event_Cmd1OnSpecificError3 - QuickStop
d.SdoWr(0x3012, 0x32, 0x20)      # DEV_Event_Cmd2OnSpecificError3 - Endstufe sperren
d.SdoWr(0x3012, 0x33, 1)         # DEV_Event_Cmd3OnSpecificError3 - Fehler löschen
d.SdoWr(0x3012, 0x34, 0x21)      # DEV_Event_Cmd4OnSpecificError3 - Endstufe freigeben


3012.32h Erreigniskommando 2 - bei spezifischem Fehler 3

Name | DEV_Event_Cmd2OnSpecificError3
Bezeichnung | Erreigniskommando 2 - bei spezifischem Fehler 3
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError3 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 31h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError3, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x30, -1000)     # DEV_Event_CmdOnSpecificError3 - Unterspannung
d.SdoWr(0x3012, 0x31, 2)         # DEV_Event_Cmd1OnSpecificError3 - QuickStop
d.SdoWr(0x3012, 0x32, 0x20)      # DEV_Event_Cmd2OnSpecificError3 - Endstufe sperren
d.SdoWr(0x3012, 0x33, 1)         # DEV_Event_Cmd3OnSpecificError3 - Fehler löschen
d.SdoWr(0x3012, 0x34, 0x21)      # DEV_Event_Cmd4OnSpecificError3 - Endstufe freigeben


3012.33h Erreigniskommando 3 - bei spezifischem Fehler 3

Name | DEV_Event_Cmd3OnSpecificError3
Bezeichnung | Erreigniskommando 3 - bei spezifischem Fehler 3
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError3 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 31h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError3, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x30, -1000)     # DEV_Event_CmdOnSpecificError3 - Unterspannung
d.SdoWr(0x3012, 0x31, 2)         # DEV_Event_Cmd1OnSpecificError3 - QuickStop
d.SdoWr(0x3012, 0x32, 0x20)      # DEV_Event_Cmd2OnSpecificError3 - Endstufe sperren
d.SdoWr(0x3012, 0x33, 1)         # DEV_Event_Cmd3OnSpecificError3 - Fehler löschen
d.SdoWr(0x3012, 0x34, 0x21)      # DEV_Event_Cmd4OnSpecificError3 - Endstufe freigeben


3012.34h Erreigniskommando 4 - bei spezifischem Fehler 3

Name | DEV_Event_Cmd4OnSpecificError3
Bezeichnung | Erreigniskommando 4 - bei spezifischem Fehler 3
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError3 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 31h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError3, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError4
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x30, -1000)     # DEV_Event_CmdOnSpecificError3 - Unterspannung
d.SdoWr(0x3012, 0x31, 2)         # DEV_Event_Cmd1OnSpecificError3 - QuickStop
d.SdoWr(0x3012, 0x32, 0x20)      # DEV_Event_Cmd2OnSpecificError3 - Endstufe sperren
d.SdoWr(0x3012, 0x33, 1)         # DEV_Event_Cmd3OnSpecificError3 - Fehler löschen
d.SdoWr(0x3012, 0x34, 0x21)      # DEV_Event_Cmd4OnSpecificError3 - Endstufe freigeben


3012.40h Erreigniskommandos - bei spezifischen Fehler 4

Name | DEV_Event_CmdOnSpecificError4
Bezeichnung | Erreigniskommandos - bei spezifischen Fehler 4
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-32768 .. 32767]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError4 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 41h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError4, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x40, -1000)     # DEV_Event_CmdOnSpecificError4 - Unterspannung
d.SdoWr(0x3012, 0x41, 2)         # DEV_Event_Cmd1OnSpecificError4 - QuickStop
d.SdoWr(0x3012, 0x42, 0x20)      # DEV_Event_Cmd2OnSpecificError4 - Endstufe sperren
d.SdoWr(0x3012, 0x43, 1)         # DEV_Event_Cmd3OnSpecificError4 - Fehler löschen
d.SdoWr(0x3012, 0x44, 0x21)      # DEV_Event_Cmd4OnSpecificError4 - Endstufe freigeben


3012.41h Erreigniskommando 1 - bei spezifischem Fehler 4

Name | DEV_Event_Cmd1OnSpecificError4
Bezeichnung | Erreigniskommando 1 - bei spezifischem Fehler 4
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError4 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 41h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError4, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x40, -1000)     # DEV_Event_CmdOnSpecificError4 - Unterspannung
d.SdoWr(0x3012, 0x41, 2)         # DEV_Event_Cmd1OnSpecificError4 - QuickStop
d.SdoWr(0x3012, 0x42, 0x20)      # DEV_Event_Cmd2OnSpecificError4 - Endstufe sperren
d.SdoWr(0x3012, 0x43, 1)         # DEV_Event_Cmd3OnSpecificError4 - Fehler löschen
d.SdoWr(0x3012, 0x44, 0x21)      # DEV_Event_Cmd4OnSpecificError4 - Endstufe freigeben


3012.42h Erreigniskommando 2 - bei spezifischem Fehler 4

Name | DEV_Event_Cmd2OnSpecificError4
Bezeichnung | Erreigniskommando 2 - bei spezifischem Fehler 4
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError4 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 41h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError4, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x40, -1000)     # DEV_Event_CmdOnSpecificError4 - Unterspannung
d.SdoWr(0x3012, 0x41, 2)         # DEV_Event_Cmd1OnSpecificError4 - QuickStop
d.SdoWr(0x3012, 0x42, 0x20)      # DEV_Event_Cmd2OnSpecificError4 - Endstufe sperren
d.SdoWr(0x3012, 0x43, 1)         # DEV_Event_Cmd3OnSpecificError4 - Fehler löschen
d.SdoWr(0x3012, 0x44, 0x21)      # DEV_Event_Cmd4OnSpecificError4 - Endstufe freigeben


3012.43h Erreigniskommando 3 - bei spezifischem Fehler 4

Name | DEV_Event_Cmd3OnSpecificError4
Bezeichnung | Erreigniskommando 3 - bei spezifischem Fehler 4
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError4 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 41h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError4, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x40, -1000)     # DEV_Event_CmdOnSpecificError4 - Unterspannung
d.SdoWr(0x3012, 0x41, 2)         # DEV_Event_Cmd1OnSpecificError4 - QuickStop
d.SdoWr(0x3012, 0x42, 0x20)      # DEV_Event_Cmd2OnSpecificError4 - Endstufe sperren
d.SdoWr(0x3012, 0x43, 1)         # DEV_Event_Cmd3OnSpecificError4 - Fehler löschen
d.SdoWr(0x3012, 0x44, 0x21)      # DEV_Event_Cmd4OnSpecificError4 - Endstufe freigeben


3012.44h Erreigniskommando 4 - bei spezifischem Fehler 4

Name | DEV_Event_Cmd4OnSpecificError4
Bezeichnung | Erreigniskommando 4 - bei spezifischem Fehler 4
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 20h, 21h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | Event_CmdOnSpecError(nr, error, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Event_Cmd1OnError, DEV_Event_Cmd1OnCommError

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten des Antriebsreglers bei einem spezifischem Fehler beeinflusst werden. Der spezifische Fehler wird im Register DEV_Event_CmdOnSpecificError4 definiert.

Im Fehlerfall können bis zu vier Kommandos hintereinander abgearbeitet werden. Dazu kann man in jedem SubIndex (0x11, 0x12, 0x13, 0x14) ein Gerätekommando speichern.
Folgende Kommandos stehen zur Verfügung:

Kommandos:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Funktion: Kennzeichnet das Ende einer Sequenz
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | QuickStop() | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Halt() | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
20h | 32 | CMD_Disable | Disable() | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Enable() | Betrieb der Leistungsstufe des Antriebsreglers freigeben
Diese Funktion ist standardmäßig deaktiviert (Subindex 41h = CMD_Nop), das bedeutet im Fehlerfall wird die Endstufe deaktiviert.
Wird ein Wert ungleich Null gesetzt, so ist diese Funktion aktiviert. Dieses heißt u.A., dass die Endstufe nicht mehr automatisch deaktiviert wird.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat.

Ausser DEV_Event_CmdOnSpecificError4, stehen noch folgende Fehler-Erreignisfunktionen zur Verfügung:
  • DEV_Event_Cmd1OnError
  • DEV_Event_Cmd1OnCommError
  • DEV_Event_CmdOnSpecificError1
  • DEV_Event_CmdOnSpecificError2
  • DEV_Event_CmdOnSpecificError3
Ein Erreignis kann nur durch eine Erreignissfunktion bedient werden. Höchste Priorität haben DEV_Event_CmdOnSpecificError1..4 Funktionen, niedriegste Priorität hat DEV_Event_Cmd1OnError.
D.h. wenn z.B. DEV_Event_Cmd1OnError und DEV_Event_Cmd1OnCommError definiert wurden und ein Kommunikations-Fehler aufgetretten ist,
dann werden nur die Gerätekommandos von DEV_Event_Cmd1OnCommError ausgeführt. Bei allen anderen Fehler werden Gerätekommandos vom DEV_Event_Cmd1OnError ausgeführt.

! ACHTUNG !

Wenn eine Fehler-Erreiginsfunktion definiert wurde, wird bei einem Fehler die Endstufe des Antriebsreglers nicht automatisch gesperrt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Kommandos bei Unterpannung
d.SdoWr(0x3012, 0x40, -1000)     # DEV_Event_CmdOnSpecificError4 - Unterspannung
d.SdoWr(0x3012, 0x41, 2)         # DEV_Event_Cmd1OnSpecificError4 - QuickStop
d.SdoWr(0x3012, 0x42, 0x20)      # DEV_Event_Cmd2OnSpecificError4 - Endstufe sperren
d.SdoWr(0x3012, 0x43, 1)         # DEV_Event_Cmd3OnSpecificError4 - Fehler löschen
d.SdoWr(0x3012, 0x44, 0x21)      # DEV_Event_Cmd4OnSpecificError4 - Endstufe freigeben


Inhalt - Parameter 3000h (DSA) - Benutzerkommandos

3014.11h | DEV_Event1_OnUserCmd1 | Kommando 1 bei Benutzerkommando 1
3014.12h | DEV_Event2_OnUserCmd1 | Kommando 2 bei Benutzerkommando 1
3014.13h | DEV_Event3_OnUserCmd1 | Kommando 3 bei Benutzerkommando 1
3014.14h | DEV_Event4_OnUserCmd1 | Kommando 4 bei Benutzerkommando 1
3014.21h | DEV_Event1_OnUserCmd2 | Kommando 1 bei Benutzerkommando 2
3014.22h | DEV_Event2_OnUserCmd2 | Kommando 2 bei Benutzerkommando 2
3014.23h | DEV_Event3_OnUserCmd2 | Kommando 3 bei Benutzerkommando 2
3014.24h | DEV_Event4_OnUserCmd2 | Kommando 4 bei Benutzerkommando 2
3014.31h | DEV_Event1_OnUserCmd3 | Kommando 1 bei Benutzerkommando 3
3014.32h | DEV_Event2_OnUserCmd3 | Kommando 2 bei Benutzerkommando 3
3014.33h | DEV_Event3_OnUserCmd3 | Kommando 3 bei Benutzerkommando 3
3014.34h | DEV_Event4_OnUserCmd3 | Kommando 4 bei Benutzerkommando 3
3014.41h | DEV_Event1_OnUserCmd4 | Kommando 1 bei Benutzerkommando 4
3014.42h | DEV_Event2_OnUserCmd4 | Kommando 2 bei Benutzerkommando 4
3014.43h | DEV_Event3_OnUserCmd4 | Kommando 3 bei Benutzerkommando 4
3014.44h | DEV_Event4_OnUserCmd4 | Kommando 4 bei Benutzerkommando 4
3014.51h | DEV_Event1_OnUserCmd5 | Kommando 1 bei Benutzerkommando 5
3014.52h | DEV_Event2_OnUserCmd5 | Kommando 2 bei Benutzerkommando 5
3014.53h | DEV_Event3_OnUserCmd5 | Kommando 3 bei Benutzerkommando 5
3014.54h | DEV_Event4_OnUserCmd5 | Kommando 4 bei Benutzerkommando 5
3014.61h | DEV_Event1_OnUserCmd6 | Kommando 1 bei Benutzerkommando 6
3014.62h | DEV_Event2_OnUserCmd6 | Kommando 2 bei Benutzerkommando 6
3014.63h | DEV_Event3_OnUserCmd6 | Kommando 3 bei Benutzerkommando 6
3014.64h | DEV_Event4_OnUserCmd6 | Kommando 4 bei Benutzerkommando 6
3014.71h | DEV_Event1_OnUserCmd7 | Kommando 1 bei Benutzerkommando 7
3014.72h | DEV_Event2_OnUserCmd7 | Kommando 2 bei Benutzerkommando 7
3014.73h | DEV_Event3_OnUserCmd7 | Kommando 3 bei Benutzerkommando 7
3014.74h | DEV_Event4_OnUserCmd7 | Kommando 4 bei Benutzerkommando 7
3014.81h | DEV_Event1_OnUserCmd8 | Kommando 1 bei Benutzerkommando 8
3014.82h | DEV_Event2_OnUserCmd8 | Kommando 2 bei Benutzerkommando 8
3014.83h | DEV_Event3_OnUserCmd8 | Kommando 3 bei Benutzerkommando 8
3014.84h | DEV_Event4_OnUserCmd8 | Kommando 4 bei Benutzerkommando 8


3014.11h Kommando 1 bei Benutzerkommando 1

Name | DEV_Event1_OnUserCmd1
Bezeichnung | Kommando 1 bei Benutzerkommando 1
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 02h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(1, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 71h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (11h, 12h, 13h, 14h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 71h (CMD_UserCmd1) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x11, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x12, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x13, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x14, 0x00)   # keine Funktion


3014.12h Kommando 2 bei Benutzerkommando 1

Name | DEV_Event2_OnUserCmd1
Bezeichnung | Kommando 2 bei Benutzerkommando 1
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 20h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(1, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 71h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (11h, 12h, 13h, 14h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 71h (CMD_UserCmd1) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x11, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x12, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x13, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x14, 0x00)   # keine Funktion


3014.13h Kommando 3 bei Benutzerkommando 1

Name | DEV_Event3_OnUserCmd1
Bezeichnung | Kommando 3 bei Benutzerkommando 1
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(1, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 71h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (11h, 12h, 13h, 14h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 71h (CMD_UserCmd1) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x11, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x12, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x13, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x14, 0x00)   # keine Funktion


3014.14h Kommando 4 bei Benutzerkommando 1

Name | DEV_Event4_OnUserCmd1
Bezeichnung | Kommando 4 bei Benutzerkommando 1
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(1, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 71h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (11h, 12h, 13h, 14h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 71h (CMD_UserCmd1) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x11, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x12, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x13, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x14, 0x00)   # keine Funktion


3014.21h Kommando 1 bei Benutzerkommando 2

Name | DEV_Event1_OnUserCmd2
Bezeichnung | Kommando 1 bei Benutzerkommando 2
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(2, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 72h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (21h, 22h, 23h, 24h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 78h (CMD_UserCmd2) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x21, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x22, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x23, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x24, 0x00)   # keine Funktion


3014.22h Kommando 2 bei Benutzerkommando 2

Name | DEV_Event2_OnUserCmd2
Bezeichnung | Kommando 2 bei Benutzerkommando 2
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 20h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(2, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 72h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (21h, 22h, 23h, 24h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 78h (CMD_UserCmd2) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x21, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x22, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x23, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x24, 0x00)   # keine Funktion


3014.23h Kommando 3 bei Benutzerkommando 2

Name | DEV_Event3_OnUserCmd2
Bezeichnung | Kommando 3 bei Benutzerkommando 2
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(2, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 72h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (21h, 22h, 23h, 24h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 78h (CMD_UserCmd2) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x21, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x22, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x23, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x24, 0x00)   # keine Funktion


3014.24h Kommando 4 bei Benutzerkommando 2

Name | DEV_Event4_OnUserCmd2
Bezeichnung | Kommando 4 bei Benutzerkommando 2
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(2, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 72h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (21h, 22h, 23h, 24h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 78h (CMD_UserCmd2) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x21, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x22, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x23, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x24, 0x00)   # keine Funktion


3014.31h Kommando 1 bei Benutzerkommando 3

Name | DEV_Event1_OnUserCmd3
Bezeichnung | Kommando 1 bei Benutzerkommando 3
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 12h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(3, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 73h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (31h, 32h, 33h, 34h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 73h (CMD_UserCmd3) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x31, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x32, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x33, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x34, 0x00)   # keine Funktion


3014.32h Kommando 2 bei Benutzerkommando 3

Name | DEV_Event2_OnUserCmd3
Bezeichnung | Kommando 2 bei Benutzerkommando 3
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 21h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(3, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 73h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (31h, 32h, 33h, 34h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 73h (CMD_UserCmd3) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x31, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x32, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x33, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x34, 0x00)   # keine Funktion


3014.33h Kommando 3 bei Benutzerkommando 3

Name | DEV_Event3_OnUserCmd3
Bezeichnung | Kommando 3 bei Benutzerkommando 3
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 30h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(3, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 73h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (31h, 32h, 33h, 34h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 73h (CMD_UserCmd3) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x31, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x32, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x33, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x34, 0x00)   # keine Funktion


3014.34h Kommando 4 bei Benutzerkommando 3

Name | DEV_Event4_OnUserCmd3
Bezeichnung | Kommando 4 bei Benutzerkommando 3
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(3, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 73h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (31h, 32h, 33h, 34h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 73h (CMD_UserCmd3) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x31, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x32, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x33, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x34, 0x00)   # keine Funktion


3014.41h Kommando 1 bei Benutzerkommando 4

Name | DEV_Event1_OnUserCmd4
Bezeichnung | Kommando 1 bei Benutzerkommando 4
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 13h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(4, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 74h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (41h, 42h, 43h, 44h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 74h (CMD_UserCmd4) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x41, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x42, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x43, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x44, 0x00)   # keine Funktion


3014.42h Kommando 2 bei Benutzerkommando 4

Name | DEV_Event2_OnUserCmd4
Bezeichnung | Kommando 2 bei Benutzerkommando 4
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 21h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(4, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 74h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (41h, 42h, 43h, 44h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 74h (CMD_UserCmd4) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x41, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x42, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x43, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x44, 0x00)   # keine Funktion


3014.43h Kommando 3 bei Benutzerkommando 4

Name | DEV_Event3_OnUserCmd4
Bezeichnung | Kommando 3 bei Benutzerkommando 4
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 31h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(4, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 74h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (41h, 42h, 43h, 44h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 74h (CMD_UserCmd4) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x41, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x42, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x43, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x44, 0x00)   # keine Funktion


3014.44h Kommando 4 bei Benutzerkommando 4

Name | DEV_Event4_OnUserCmd4
Bezeichnung | Kommando 4 bei Benutzerkommando 4
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(4, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 74h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (41h, 42h, 43h, 44h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 74h (CMD_UserCmd4) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x41, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x42, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x43, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x44, 0x00)   # keine Funktion


3014.51h Kommando 1 bei Benutzerkommando 5

Name | DEV_Event1_OnUserCmd5
Bezeichnung | Kommando 1 bei Benutzerkommando 5
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 15h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(5, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 75h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (51h, 52h, 53h, 54h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 75h (CMD_UserCmd5) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x51, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x52, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x53, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x54, 0x00)   # keine Funktion


3014.52h Kommando 2 bei Benutzerkommando 5

Name | DEV_Event2_OnUserCmd5
Bezeichnung | Kommando 2 bei Benutzerkommando 5
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 21h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(5, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 75h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (51h, 52h, 53h, 54h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 75h (CMD_UserCmd5) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x51, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x52, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x53, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x54, 0x00)   # keine Funktion


3014.53h Kommando 3 bei Benutzerkommando 5

Name | DEV_Event3_OnUserCmd5
Bezeichnung | Kommando 3 bei Benutzerkommando 5
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 32h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(5, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 75h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (51h, 52h, 53h, 54h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 75h (CMD_UserCmd5) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x51, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x52, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x53, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x54, 0x00)   # keine Funktion


3014.54h Kommando 4 bei Benutzerkommando 5

Name | DEV_Event4_OnUserCmd5
Bezeichnung | Kommando 4 bei Benutzerkommando 5
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(5, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 75h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (51h, 52h, 53h, 54h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 75h (CMD_UserCmd5) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x51, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x52, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x53, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x54, 0x00)   # keine Funktion


3014.61h Kommando 1 bei Benutzerkommando 6

Name | DEV_Event1_OnUserCmd6
Bezeichnung | Kommando 1 bei Benutzerkommando 6
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 17h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(6, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 76h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (61h, 62h, 63h, 64h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 76h (CMD_UserCmd6) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x61, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x62, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x63, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x64, 0x00)   # keine Funktion


3014.62h Kommando 2 bei Benutzerkommando 6

Name | DEV_Event2_OnUserCmd6
Bezeichnung | Kommando 2 bei Benutzerkommando 6
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 21h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(6, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 76h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (61h, 62h, 63h, 64h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 76h (CMD_UserCmd6) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x61, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x62, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x63, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x64, 0x00)   # keine Funktion


3014.63h Kommando 3 bei Benutzerkommando 6

Name | DEV_Event3_OnUserCmd6
Bezeichnung | Kommando 3 bei Benutzerkommando 6
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 33h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(6, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 76h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (61h, 62h, 63h, 64h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 76h (CMD_UserCmd6) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x61, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x62, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x63, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x64, 0x00)   # keine Funktion


3014.64h Kommando 4 bei Benutzerkommando 6

Name | DEV_Event4_OnUserCmd6
Bezeichnung | Kommando 4 bei Benutzerkommando 6
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(6, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 76h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (61h, 62h, 63h, 64h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 76h (CMD_UserCmd6) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x61, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x62, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x63, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x64, 0x00)   # keine Funktion


3014.71h Kommando 1 bei Benutzerkommando 7

Name | DEV_Event1_OnUserCmd7
Bezeichnung | Kommando 1 bei Benutzerkommando 7
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 17h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(7, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 77h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (71h, 72h, 73h, 74h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 77h (CMD_UserCmd7) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x71, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x72, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x73, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x74, 0x00)   # keine Funktion


3014.72h Kommando 2 bei Benutzerkommando 7

Name | DEV_Event2_OnUserCmd7
Bezeichnung | Kommando 2 bei Benutzerkommando 7
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 21h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(7, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 77h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (71h, 72h, 73h, 74h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 77h (CMD_UserCmd7) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x71, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x72, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x73, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x74, 0x00)   # keine Funktion


3014.73h Kommando 3 bei Benutzerkommando 7

Name | DEV_Event3_OnUserCmd7
Bezeichnung | Kommando 3 bei Benutzerkommando 7
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 34h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(7, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 77h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (71h, 72h, 73h, 74h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 77h (CMD_UserCmd7) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x71, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x72, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x73, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x74, 0x00)   # keine Funktion


3014.74h Kommando 4 bei Benutzerkommando 7

Name | DEV_Event4_OnUserCmd7
Bezeichnung | Kommando 4 bei Benutzerkommando 7
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(7, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 77h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (71h, 72h, 73h, 74h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 77h (CMD_UserCmd7) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x71, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x72, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x73, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x74, 0x00)   # keine Funktion


3014.81h Kommando 1 bei Benutzerkommando 8

Name | DEV_Event1_OnUserCmd8
Bezeichnung | Kommando 1 bei Benutzerkommando 8
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 17h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(8, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 78h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (81h, 82h, 83h, 84h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 78h (CMD_UserCmd8) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x81, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x82, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x83, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x84, 0x00)   # keine Funktion


3014.82h Kommando 2 bei Benutzerkommando 8

Name | DEV_Event2_OnUserCmd8
Bezeichnung | Kommando 2 bei Benutzerkommando 8
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 21h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(8, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 78h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (81h, 82h, 83h, 84h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 78h (CMD_UserCmd8) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x81, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x82, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x83, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x84, 0x00)   # keine Funktion


3014.83h Kommando 3 bei Benutzerkommando 8

Name | DEV_Event3_OnUserCmd8
Bezeichnung | Kommando 3 bei Benutzerkommando 8
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 51h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(8, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 78h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (81h, 82h, 83h, 84h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 78h (CMD_UserCmd8) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x81, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x82, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x83, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x84, 0x00)   # keine Funktion


3014.84h Kommando 4 bei Benutzerkommando 8

Name | DEV_Event4_OnUserCmd8
Bezeichnung | Kommando 4 bei Benutzerkommando 8
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {00h, 01h, 02h, 03h, 04h, 05h, 10h, 12h, 13h, 15h, 17h, 20h, 21h, 30h, 31h, 32h, 33h, 34h, 51h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.82
Geräte | Alle
PLC Funktion | Event_CmdOnUserCmd(8, [cmd0, cmd1, cmd2, cmd3])
Querverweis | DEV_Cmd, DEV_Cmd_ExecOnChange

Beschreibung

Mit Hilfe von diesem Parameter kann das Verhalten bei den Gerätekommandos 78h (DEV_Cmd_ExecOnChange) beeinflusst werden.

Es können pro Kommando bis zu vier Kommandos hintereinander abgearbeitet werden.
Dazu kann man in jedem SubIndex (81h, 82h, 83h, 84h) ein Kommando speichern (siehe Tabelle unten).

Es stehen dabei die Gerätekommandos 0h bis 34h und 51h (DEV_Cmd_ExecOnChange) zur Verfügung.
Wird beispielsweise das Kommando CMD_QuickStop oder CMD_Halt verwendet, so erfolgt das nächste Kommando erst dann, wenn der Rampengenerator Geschwindigkeit gleich Null erreicht hat..

Diese Parameter sind mit folgenden Kommandos vorbelegt:
Kommando | Name | Parameter | Vorbelegung (Default)
71h | CMD_UserCmd1 | 3014.11h - 3014.14h | CMD_Quickstop (02h), CMD_Disable (20h), 0, 0
72h | CMD_UserCmd2 | 3014.21h - 3014.24h | CMD_Halt (03h), CMD_Disable (20h), 0, 0
73h | CMD_UserCmd3 | 3014.31h - 3014.34h | CMD_ModeCurr (12h), CMD_Enable (21h), CMD_Curr (30h), 0
74h | CMD_UserCmd4 | 3014.41h - 3014.44h | CMD_ModeVel (13h), CMD_Enable (21h), CMD_Vel (31h), 0
75h | CMD_UserCmd5 | 3014.51h - 3014.54h | CMD_ModeSVel (15h), CMD_Enable (21h), CMD_SVel (32h), 0
76h | CMD_UserCmd6 | 3014.61h - 3014.64h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Mova (33h), 0
77h | CMD_UserCmd7 | 3014.71h - 3014.74h | CMD_ModePos (17h), CMD_Enable (21h), CMD_Movr (34h), 0
78h | CMD_UserCmd8 | 3014.81h - 3014.84h | CMD_ModePos (17h), CMD_Enable (21h), CMD_HOME_Start (51h), 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Kommandokette nach Kommando 78h (CMD_UserCmd8) im Objekt 3000.01h (DEV_Cmd_ExecOnChange)
d.SdoWr(0x3014, 0x81, 0x17)   # Positioniermodus
d.SdoWr(0x3014, 0x82, 0x21)   # Antriebsregler freigeben
d.SdoWr(0x3014, 0x83, 0x51)   # Referenzfahrt starten
d.SdoWr(0x3014, 0x84, 0x00)   # keine Funktion


Inhalt - Parameter 3000h (DSA) - Geräteinformationen

3020.00h | DEV_Code | Gerätecode
3020.01h | DEV_SubCode | Gerätesubcode
3020.02h | DEV_Revision | Revisionscode
3020.06h | DEV_McCpuId | CPU Kennungscode
3023.00h | DEV_VersionSw | Softwareversion
3023.01h | DEV_SubVersionSw | Softwaresubversion
3023.02h | DEV_RelVersionSw | Software release
3024.00h | DEV_VersionHw | Hardwareversion
3025.00h | DEV_CustomerCode | Kundencode
3025.01h | DEV_CustomerSwOption | Kundencode der Software
3025.02h | DEV_CustomerHwOption | Kundencode der Hardware
302C.00h | DEV_FreeData | Freie Daten
302D.01h | DEV_Article_Nr | Artikelnummer des Gerätes
302D.02h | DEV_Serial_Nr | Seriennummer des Gerätes


3020.00h Gerätecode

Name | DEV_Code
Bezeichnung | Gerätecode
Datentyp | const uint16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0000h .. FFFFh]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.53.00.00
Geräte | Alle
PLC Funktion | DevCode()
Querverweis | DEV_SubCode, DEV_Revision

Beschreibung

Liefert einen Erkennungscode des Gerätes zurück.
Dieser Code kann z.B. durch eine übergeordnete Steuerung für die Identifikation des Gerätes verwendet werden. Sie liefert keine Informationen über Spannungs-, Strombereiche oder Konfiguration des Antriebsreglers. Er ist lediglich für die Bestimmung des Types des Gerätes vorgesehen.

Code:
2520h | EDC-E20
2522h | EDC-E22
2527h | EDC-E27
2540h | EDC-E40
2542h | EDC-E42
2545h | EDC-E45
2547h | $mcsdsa$-E47
2550h | EDC-E50
2551h | EDC-E51
2552h | EDC-E52
2555h | EDC-E55
2556h | EDC-E56
2557h | EDC-E57
2560h | EDC-E60
2561h | EDC-E61
2562h | EDC-E62
2565h | EDC-E65
2566h | EDC-E66
2567h | EDC-E67
2640h | EDC-S40
2645h | EDC-S45
2660h | EDC-S60
2665h | EDC-S65
2740h | EDC-B40
2745h | EDC-B45
2750h | EDC-B50
2755h | EDC-B55
2760h | EDC-B60
2765h | EDC-B65

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

print "Gerätecode    =", hex(d.SdoRd(0x03020, 0x00))  # DEV_Code - Gerätecode ausgeben
print "Gerätesubcode =", hex(d.SdoRd(0x03020, 0x01))  # DEV_SubCode - Gerätesubcode ausgeben


3020.01h Gerätesubcode

Name | DEV_SubCode
Bezeichnung | Gerätesubcode
Datentyp | const uint16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0000h .. FFFFh]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.53.00.00
Geräte | Alle
PLC Funktion | DevSubCode()
Querverweis | DEV_Code, DEV_Revision

Beschreibung

Liefert einen zusätzlichen (zu DEV_Code) Erkennungscode des Gerätes zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

print "Gerätecode    =", hex(d.SdoRd(0x03020, 0x00))  # DEV_Code - Gerätecode ausgeben
print "Gerätesubcode =", hex(d.SdoRd(0x03020, 0x01))  # DEV_SubCode - Gerätesubcode ausgeben


3020.02h Revisionscode

Name | DEV_Revision
Bezeichnung | Revisionscode
Datentyp | uint16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0000h .. FFFFh]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.C6
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_Code, DEV_SubCode

Beschreibung

Dieser Parameter gibt den Revisionscode des Gerätes zurück.

0x0000 = Rev. A
0x0001 = Rev. B
0x0002 = Rev. C
...

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa

d = Dsa(1)

print "Revisionscode : 0x%04x" % d.SdoRd(0x3020, 0x02)


3020.06h CPU Kennungscode

Name | DEV_McCpuId
Bezeichnung | CPU Kennungscode
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter gibt den CPU Kennungscode von ENGEL zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "CPU Kennungscode: 0x%08x" % d.SdoRd(0x3020, 0x06)


3023.00h Softwareversion

Name | DEV_VersionSw
Bezeichnung | Softwareversion
Datentyp | const uint16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0000h .. FFFFh]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.53.00.00
Geräte | Alle
PLC Funktion | MainVersionSw(), MainVersionSwString(), VersionSw(), VersionSwString()
Querverweis | DEV_SubVersionSw, DEV_RelVersionSw

Beschreibung

Liefert die Version der Gerätefirmware zurück.
Der Parameter DEV_VersionSw bildet zusammen mit dem Parameter DEV_SubVersionSw eine vollständige Versionsnummer.

Die Version wird wie unten beschrieben verschlüsselt.

    DEV_VersionSw    = XXYYh        (in der Hex-Notation)
    DEV_SubVersionSw = UUZZh        (in der Hex-Notation)

daraus ergibt sich folgender Versionsnummer:

    XX.YY.UU.ZZ

Beispiel

    DEV_VersionSw    = 0177h
    DEV_SubVersionSw = 0203h

    => Version = 1.77.02.03

Einführung von DEV_VersionSw und DEV_SubVersionSw ab Firmware 1.53

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

main_version = d.SdoRd(0x3023, 0x00)                      # DEV_VersionSw
sub_version  = d.SdoRd(0x3023, 0x01)                      # DEV_SubVersionSw
version      = (main_version<<16) | sub_version

print "Firmwarehauptversion:"
# Main Softwareversion als Hex-Zahl
print "Wert   =", hex(d.MainVersionSw())                  # Main Softwareversion als Hex-Zahl via PLC Funktion
print "Wert   =", hex(main_version)

# Main Softwareversion als String
print "String =", d.MainVersionSwString()                 # Main Softwareversion als String via PLC Funktion
print "String = %X.%02X" % ((main_version>>8)&0xFF,
                             main_version    &0xFF)       # Main Softwareversion als String

print
print "Firmwareversion:"
# Softwareversion als Hex-Zahl
print "Wert   =", hex(d.VersionSw())                      # Softwareversion als Hex-Zahl via PLC Funktion
print "Wert   =", hex(version)

# Softwareversion als String
print "String =", d.VersionSwString()                     # Softwareversion als String via PLC Funktion
print "String = %X.%02X.%02X.%02X" % ((version>>24)&0xFF,
                                      (version>>16)&0xFF,
                                      (version>>8) &0xFF,
                                       version     &0xFF)


3023.01h Softwaresubversion

Name | DEV_SubVersionSw
Bezeichnung | Softwaresubversion
Datentyp | const uint16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0000h .. FFFFh]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.53.00.00
Geräte | Alle
PLC Funktion | SubVersionSw(), SubVersionSwString(), VersionSw(), VersionSwString()
Querverweis | DEV_VersionSw, DEV_RelVersionSw

Beschreibung

Liefert die Subversion der Gerätefirmware zurück.
Der Parameter DEV_SubVersionSw bildet zusammen mit dem Parameter DEV_VersionSw eine vollständige Versionsnummer.

Die Version wird wie unten beschrieben verschlüsselt.

    DEV_VersionSw    = XXYYh        (in der Hex-Notation)
    DEV_SubVersionSw = UUZZh        (in der Hex-Notation)

daraus ergibt sich folgender Versionsnummer:

    XX.YY.UU.ZZ

Beispiel

    DEV_VersionSw    = 0177h
    DEV_SubVersionSw = 0203h

    => Version = 1.77.02.03

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

main_version = d.SdoRd(0x3023, 0x00)                      # DEV_VersionSw
sub_version  = d.SdoRd(0x3023, 0x01)                      # DEV_SubVersionSw
version      = (main_version<<16) | sub_version

print "Firmwaresubversion:"
# Softwaresubversion als Hex-Wert
print "Wert   =", hex(d.SubVersionSw())                  # Softwaresubversion als Hex-Wert via PLC Funktion
print "Wert   =", hex(sub_version)

# Softwaresubversion als String
print "String =", d.SubVersionSwString()                 # Softwaresubversion als String via PLC Funktion
print "String = %X.%02X" % ((sub_version>>8)&0xFF,
                             sub_version    &0xFF)       # Softwaresubversion als String

print
print "Firmwareversion:"
# Softwareversion als Hex-Wert
print "Wert   =", hex(d.VersionSw())                      # Softwareversion als Hex-Wert via PLC Funktion
print "Wert   =", hex(version)

# Softwareversion als String
print "String =", d.VersionSwString()                     # Softwareversion als String via PLC Funktion
print "String = %X.%02X.%02X.%02X" % ((version>>24)&0xFF,
                                      (version>>16)&0xFF,
                                      (version>>8) &0xFF,
                                       version     &0xFF)


3023.02h Software release

Name | DEV_RelVersionSw
Bezeichnung | Software release
Datentyp | const uint16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0000h .. FFFFh]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.43
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_VersionSw, DEV_SubVersionSw

Beschreibung

Liefert die Releaseversion der Gerätefirmware zurück.
Der Parameter DEV_RelVersionSw bildet zusammen mit den Parametern DEV_VersionSw und DEV_SubVersionSw eine vollständige Versionsnummer.

Die Version wird wie unten beschrieben verschlüsselt.

    DEV_VersionSw    = XXYYh        (in der Hex-Notation)
    DEV_SubVersionSw = UUZZh        (in der Hex-Notation)
    DEV_RelVersionSw = WWWWh        (in der Hex-Notation)

daraus ergibt sich folgender Versionsnummer:

    XX.YY.UU.ZZ_WWWW

Beispiel

    DEV_VersionSw    = 0177h
    DEV_SubVersionSw = 0203h
    DEV_RelVersionSw = 0002h

    => Version = 1.77.02.03_0002

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

main_version    = d.SdoRd(0x3023, 0x00)                   # DEV_VersionSw
sub_version     = d.SdoRd(0x3023, 0x01)                   # DEV_SubVersionSw
release_version = d.SdoRd(0x3023, 0x02)                   # DEV_RelVersionSw
version      = (main_version<<16) | sub_version

# Softwareversion als String
print "FW-Version = %X.%02X.%02X.%02X_%04X" % ((version>>24)    & 0xFF,
                                               (version>>16)    & 0xFF,
                                               (version>>8)     & 0xFF,
                                                version         & 0xFF,
                                                release_version & 0xFFFF)


3024.00h Hardwareversion

Name | DEV_VersionHw
Bezeichnung | Hardwareversion
Datentyp | const uint16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0000h .. FFFFh]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | d.VersionHw(), VersionHwString()
Querverweis | -

Beschreibung

Liefert die Hardwareversion des Gerätes zurück.

Die Hardwareversion wird wie unten beschrieben verschlüsselt.

    DEV_VersionHw = XXYYh        (in der Hex-Notation)

daraus ergibt sich folgender Versionsnummer:

    XX.YY

Beispiel

    DEV_VersionHw = 0102h

    => Version = 1.02

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

version = d.SdoRd(0x3024, 0x00)                           # DEV_VersionHw

print "Hardwareversion:"

# Hardwareversion als Hex-Wert
print "Wert   =", hex(d.VersionHw())                      # Hardwareversion als Hex-Zahl via PLC Funktion
print "Wert   =", hex(version)

# Hardwareversion als String
print "String =", d.VersionHwString()                     # Hardwareversion als String via PLC Funktion
print "String = %X.%02X.%02X.%02X" % ((version>>24)&0xFF,
                                      (version>>16)&0xFF,
                                      (version>>8) &0xFF,
                                       version     &0xFF)


3025.00h Kundencode

Name | DEV_CustomerCode
Bezeichnung | Kundencode
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000001h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.60.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_CustomerSwOption, DEV_CustomerHwOption

Beschreibung

Liefert den Kundencode des Gerätes zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa

d = Dsa(1)

print "CustomerCode      : 0x%08X" % (d.SdoRd(0x3025, 0x00))  # DEV_CustomerCode
print "CustomerSwOption  : 0x%08X" % (d.SdoRd(0x3025, 0x01))  # DEV_CustomerSwOption
print "CustomerHwOption  : 0x%08X" % (d.SdoRd(0x3025, 0x02))  # DEV_CustomerHwOption
print


3025.01h Kundencode der Software

Name | DEV_CustomerSwOption
Bezeichnung | Kundencode der Software
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000001h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.60.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_CustomerCode, DEV_CustomerHwOption

Beschreibung

Liefert den Kundencode der Software des Gerätes zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa

d = Dsa(1)

print "CustomerCode      : 0x%08X" % (d.SdoRd(0x3025, 0x00))  # DEV_CustomerCode
print "CustomerSwOption  : 0x%08X" % (d.SdoRd(0x3025, 0x01))  # DEV_CustomerSwOption
print "CustomerHwOption  : 0x%08X" % (d.SdoRd(0x3025, 0x02))  # DEV_CustomerHwOption
print


3025.02h Kundencode der Hardware

Name | DEV_CustomerHwOption
Bezeichnung | Kundencode der Hardware
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000001h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.60.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_CustomerCode, DEV_CustomerSwOption

Beschreibung

Liefert den Kundencode der Hardware des Gerätes zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa

d = Dsa(1)

print "CustomerCode      : 0x%08X" % (d.SdoRd(0x3025, 0x00))  # DEV_CustomerCode
print "CustomerSwOption  : 0x%08X" % (d.SdoRd(0x3025, 0x01))  # DEV_CustomerSwOption
print "CustomerHwOption  : 0x%08X" % (d.SdoRd(0x3025, 0x02))  # DEV_CustomerHwOption
print


302C.00h Freie Daten

Name | DEV_FreeData
Bezeichnung | Freie Daten
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.00.33
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Diesen Parameter kann der Benutzer frei verwenden. Wert des Parameters wird zusammen mit den Parameter der 3000h-Gruppe gespeichert (siehe DEV_Cmd).

Der Benutzer kann diesen Parameter z.B. zur Überprüfung verwenden, um heraus zu finden ,ob das Gerät parametriert wurde und/oder die Parameter gültig sind.

Vorgehensweise:
  1. Die 3000h-Parameter passend zu der Applikation beschreiben
  2. Der Parameter DEV_FreeData mit einem eigenen Wert beschreiben
  3. Die 3000h-Parameter speichern (siehe DEV_Cmd)
Bei jedem Einschalten kann ein übergeordnetes System (z.B. SPS) die Daten diesen Parameters überprüfen und damit feststellen, ob eine erneute Parametrierung notwendig ist.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

print "FreeData =", d.SdoRd(0x302C, 0x00) # DEV_FreeData - Freie Daten auslesen

d.SdoWr(0x302C, 0x00, 123456)             # DEV_FreeData - Wert in Freie Daten schreiben


302D.01h Artikelnummer des Gerätes

Name | DEV_Article_Nr
Bezeichnung | Artikelnummer des Gerätes
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_Serial_Nr

Beschreibung

Mit diesem Parameter kann die Artikelnummer des Gerätes ausgelesen werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "Artikelnummer: %d" % d.SdoRd(0x302D, 0x01)


302D.02h Seriennummer des Gerätes

Name | DEV_Serial_Nr
Bezeichnung | Seriennummer des Gerätes
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_Article_Nr

Beschreibung

Mit diesem Parameter kann die Seriennummer des Gerätes ausgelesen werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "Seriennummer: %d" % d.SdoRd(0x302D, 0x02)


Inhalt - Parameter 3000h (DSA) - OEM Daten

302E.00h | DEV_OemData_Cmd | OEM Daten - Kommando
302E.01h | DEV_OemData_D0 | OEM Daten - D0
302E.02h | DEV_OemData_D1 | OEM Daten - D1
302E.03h | DEV_OemData_D2 | OEM Daten - D2
302E.04h | DEV_OemData_D3 | OEM Daten - D3
302E.05h | DEV_OemData_D4 | OEM Daten - D4
302E.06h | DEV_OemData_D5 | OEM Daten - D5
302E.07h | DEV_OemData_D6 | OEM Daten - D6
302E.08h | DEV_OemData_D7 | OEM Daten - D7
302E.09h | DEV_OemData_D8 | OEM Daten - D8
302E.0Ah | DEV_OemData_D9 | OEM Daten - D9


302E.00h OEM Daten - Kommando

Name | DEV_OemData_Cmd
Bezeichnung | OEM Daten - Kommando
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_OemData_D0, DEV_OemData_D1, DEV_OemData_D2, DEV_OemData_D3, DEV_OemData_D4, DEV_OemData_D5, DEV_OemData_D6, DEV_OemData_D7, DEV_OemData_D8, DEV_OemData_D9

Beschreibung

Dem Benutzer stehen zehn Parameter (uint32, Subindex 1..A) zur Verfügung. Die Inhalte der Parameter werden mit einem Passwort geschützt.
Nur nach Eingabe des richtigen Passwortes können die Daten der Parameter verändert werden.

Über den Kommandoparameter DEV_OemData_Cmd kann man:
  • Passwort eingeben
  • neues Passwort vergeben
  • Daten und neues Passwort permanent speichern
Das Passwort besteht aus vier 16Bit Zahlen, die in richtiger Reihenfolge eingegeben werden müssen.
Defaultpasswort ist: 0000h 0000h 0000h 0000h

Alle Kommandos werden als uint32 Zahl eingegeben.

Kommandos:
Kommandos (Hex) | Bezeichnung
0000 0000h | Reset - danach kann erstes Passwort eingegeben werden
0001 pppph | Passworteingabe - Wobei "pppp" = uint16 Teilpasswort (es werden vier Eingaben erwartet)
0020 pppph | Passwort - word0
0021 pppph | Passwort - word1
0022 pppph | Passwort - word2
0023 pppph | Passwort - word3
0080 0000h | Daten und Passwort speichern

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                      # NodeId = 1

# Zugriff erlauben (Passwort eingeben)
d.SdoWr(0x302E, 0, 0x00000000)  # DEV_OemData_Cmd - Reset - altes Passwort eingeben
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word0
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word1
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word2
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word3
#                        ----
#                        16bit Password
# Passwort ändern
d.SdoWr(0x302E, 0, 0x00200000)  # DEV_OemData_Cmd - neues Passwort - word0 = 0000h
d.SdoWr(0x302E, 0, 0x00210000)  # DEV_OemData_Cmd - neues Passwort - word1 = 0000h
d.SdoWr(0x302E, 0, 0x00220000)  # DEV_OemData_Cmd - neues Passwort - word2 = 0000h
d.SdoWr(0x302E, 0, 0x00230000)  # DEV_OemData_Cmd - neues Passwort - word3 = 0000h
#                        ----
#                        16bit Password
# Daten ändern
d.SdoWr(0x302E, 1, 0x11111111)  # DEV_OemData_D0 - Daten D0 eingeben
d.SdoWr(0x302E, 2, 0x22222222)  # DEV_OemData_D1 - Daten D1 eingeben
d.SdoWr(0x302E, 3, 0x33333333)  # DEV_OemData_D2 - Daten D2 eingeben
d.SdoWr(0x302E, 4, 0x44444444)  # DEV_OemData_D3 - Daten D3 eingeben
d.SdoWr(0x302E, 5, 0x55555555)  # DEV_OemData_D4 - Daten D4 eingeben
d.SdoWr(0x302E, 6, 0x66666666)  # DEV_OemData_D5 - Daten D5 eingeben
d.SdoWr(0x302E, 7, 0x77777777)  # DEV_OemData_D6 - Daten D6 eingeben
d.SdoWr(0x302E, 8, 0x88888888)  # DEV_OemData_D7 - Daten D7 eingeben
d.SdoWr(0x302E, 9, 0x99899999)  # DEV_OemData_D8 - Daten D8 eingeben
d.SdoWr(0x302E, 10, 0xAAAAAAAA) # DEV_OemData_D9 - Daten D9 eingeben

# Speichern
d.SdoWr(0x302E, 0, 0x00800000)  # DEV_OemData_Cmd - Daten und Passwort speichern


302E.01h OEM Daten - D0

Name | DEV_OemData_D0
Bezeichnung | OEM Daten - D0
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_OemData_Cmd, DEV_OemData_D1, DEV_OemData_D2, DEV_OemData_D3, DEV_OemData_D4, DEV_OemData_D5, DEV_OemData_D6, DEV_OemData_D7, DEV_OemData_D8, DEV_OemData_D9

Beschreibung

Unter den Subindices 1..A können benutzerspezifische Daten abgelegt werden. Diese Daten werden mit einem Passwort geschützt (siehe DEV_OemData_Cmd).
Die Daten und das Passwort bleiben bei einem Firmwareupdate erhalten.

Diese Daten können z.B. für folgende Informationen verwendet werden:
  • Seriennummer der Maschine
  • Datum der letzter Wartung
  • Parametersatznummer
  • Versionsnummer der Maschine

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                      # NodeId = 1

# Zugriff erlauben (Passwort eingeben)
d.SdoWr(0x302E, 0, 0x00000000)  # DEV_OemData_Cmd - Reset - altes Passwort eingeben
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word0
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word1
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word2
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word3
#                        ----
#                        16bit Password
# Passwort ändern
d.SdoWr(0x302E, 0, 0x00200000)  # DEV_OemData_Cmd - neues Passwort - word0 = 0000h
d.SdoWr(0x302E, 0, 0x00210000)  # DEV_OemData_Cmd - neues Passwort - word1 = 0000h
d.SdoWr(0x302E, 0, 0x00220000)  # DEV_OemData_Cmd - neues Passwort - word2 = 0000h
d.SdoWr(0x302E, 0, 0x00230000)  # DEV_OemData_Cmd - neues Passwort - word3 = 0000h
#                        ----
#                        16bit Password
# Daten ändern
d.SdoWr(0x302E, 1, 0x11111111)  # DEV_OemData_D0 - Daten D0 eingeben
d.SdoWr(0x302E, 2, 0x22222222)  # DEV_OemData_D1 - Daten D1 eingeben
d.SdoWr(0x302E, 3, 0x33333333)  # DEV_OemData_D2 - Daten D2 eingeben
d.SdoWr(0x302E, 4, 0x44444444)  # DEV_OemData_D3 - Daten D3 eingeben
d.SdoWr(0x302E, 5, 0x55555555)  # DEV_OemData_D4 - Daten D4 eingeben
d.SdoWr(0x302E, 6, 0x66666666)  # DEV_OemData_D5 - Daten D5 eingeben
d.SdoWr(0x302E, 7, 0x77777777)  # DEV_OemData_D6 - Daten D6 eingeben
d.SdoWr(0x302E, 8, 0x88888888)  # DEV_OemData_D7 - Daten D7 eingeben
d.SdoWr(0x302E, 9, 0x99899999)  # DEV_OemData_D8 - Daten D8 eingeben
d.SdoWr(0x302E, 10, 0xAAAAAAAA) # DEV_OemData_D9 - Daten D9 eingeben

# Speichern
d.SdoWr(0x302E, 0, 0x00800000)  # DEV_OemData_Cmd - Daten und Passwort speichern


302E.02h OEM Daten - D1

Name | DEV_OemData_D1
Bezeichnung | OEM Daten - D1
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_OemData_Cmd, DEV_OemData_D0, DEV_OemData_D2, DEV_OemData_D3, DEV_OemData_D4, DEV_OemData_D5, DEV_OemData_D6, DEV_OemData_D7, DEV_OemData_D8, DEV_OemData_D9

Beschreibung

Unter den Subindices 1..A können benutzerspezifische Daten abgelegt werden. Diese Daten werden mit einem Passwort geschützt (siehe DEV_OemData_Cmd).
Die Daten und das Passwort bleiben bei einem Firmwareupdate erhalten.

Diese Daten können z.B. für folgende Informationen verwendet werden:
  • Seriennummer der Maschine
  • Datum der letzter Wartung
  • Parametersatznummer
  • Versionsnummer der Maschine

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                      # NodeId = 1

# Zugriff erlauben (Passwort eingeben)
d.SdoWr(0x302E, 0, 0x00000000)  # DEV_OemData_Cmd - Reset - altes Passwort eingeben
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word0
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word1
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word2
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word3
#                        ----
#                        16bit Password
# Passwort ändern
d.SdoWr(0x302E, 0, 0x00200000)  # DEV_OemData_Cmd - neues Passwort - word0 = 0000h
d.SdoWr(0x302E, 0, 0x00210000)  # DEV_OemData_Cmd - neues Passwort - word1 = 0000h
d.SdoWr(0x302E, 0, 0x00220000)  # DEV_OemData_Cmd - neues Passwort - word2 = 0000h
d.SdoWr(0x302E, 0, 0x00230000)  # DEV_OemData_Cmd - neues Passwort - word3 = 0000h
#                        ----
#                        16bit Password
# Daten ändern
d.SdoWr(0x302E, 1, 0x11111111)  # DEV_OemData_D0 - Daten D0 eingeben
d.SdoWr(0x302E, 2, 0x22222222)  # DEV_OemData_D1 - Daten D1 eingeben
d.SdoWr(0x302E, 3, 0x33333333)  # DEV_OemData_D2 - Daten D2 eingeben
d.SdoWr(0x302E, 4, 0x44444444)  # DEV_OemData_D3 - Daten D3 eingeben
d.SdoWr(0x302E, 5, 0x55555555)  # DEV_OemData_D4 - Daten D4 eingeben
d.SdoWr(0x302E, 6, 0x66666666)  # DEV_OemData_D5 - Daten D5 eingeben
d.SdoWr(0x302E, 7, 0x77777777)  # DEV_OemData_D6 - Daten D6 eingeben
d.SdoWr(0x302E, 8, 0x88888888)  # DEV_OemData_D7 - Daten D7 eingeben
d.SdoWr(0x302E, 9, 0x99899999)  # DEV_OemData_D8 - Daten D8 eingeben
d.SdoWr(0x302E, 10, 0xAAAAAAAA) # DEV_OemData_D9 - Daten D9 eingeben

# Speichern
d.SdoWr(0x302E, 0, 0x00800000)  # DEV_OemData_Cmd - Daten und Passwort speichern


302E.03h OEM Daten - D2

Name | DEV_OemData_D2
Bezeichnung | OEM Daten - D2
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_OemData_Cmd, DEV_OemData_D0, DEV_OemData_D1, DEV_OemData_D3, DEV_OemData_D4, DEV_OemData_D5, DEV_OemData_D6, DEV_OemData_D7, DEV_OemData_D8, DEV_OemData_D9

Beschreibung

Unter den Subindices 1..A können benutzerspezifische Daten abgelegt werden. Diese Daten werden mit einem Passwort geschützt (siehe DEV_OemData_Cmd).
Die Daten und das Passwort bleiben bei einem Firmwareupdate erhalten.

Diese Daten können z.B. für folgende Informationen verwendet werden:
  • Seriennummer der Maschine
  • Datum der letzter Wartung
  • Parametersatznummer
  • Versionsnummer der Maschine

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                      # NodeId = 1

# Zugriff erlauben (Passwort eingeben)
d.SdoWr(0x302E, 0, 0x00000000)  # DEV_OemData_Cmd - Reset - altes Passwort eingeben
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word0
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word1
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word2
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word3
#                        ----
#                        16bit Password
# Passwort ändern
d.SdoWr(0x302E, 0, 0x00200000)  # DEV_OemData_Cmd - neues Passwort - word0 = 0000h
d.SdoWr(0x302E, 0, 0x00210000)  # DEV_OemData_Cmd - neues Passwort - word1 = 0000h
d.SdoWr(0x302E, 0, 0x00220000)  # DEV_OemData_Cmd - neues Passwort - word2 = 0000h
d.SdoWr(0x302E, 0, 0x00230000)  # DEV_OemData_Cmd - neues Passwort - word3 = 0000h
#                        ----
#                        16bit Password
# Daten ändern
d.SdoWr(0x302E, 1, 0x11111111)  # DEV_OemData_D0 - Daten D0 eingeben
d.SdoWr(0x302E, 2, 0x22222222)  # DEV_OemData_D1 - Daten D1 eingeben
d.SdoWr(0x302E, 3, 0x33333333)  # DEV_OemData_D2 - Daten D2 eingeben
d.SdoWr(0x302E, 4, 0x44444444)  # DEV_OemData_D3 - Daten D3 eingeben
d.SdoWr(0x302E, 5, 0x55555555)  # DEV_OemData_D4 - Daten D4 eingeben
d.SdoWr(0x302E, 6, 0x66666666)  # DEV_OemData_D5 - Daten D5 eingeben
d.SdoWr(0x302E, 7, 0x77777777)  # DEV_OemData_D6 - Daten D6 eingeben
d.SdoWr(0x302E, 8, 0x88888888)  # DEV_OemData_D7 - Daten D7 eingeben
d.SdoWr(0x302E, 9, 0x99899999)  # DEV_OemData_D8 - Daten D8 eingeben
d.SdoWr(0x302E, 10, 0xAAAAAAAA) # DEV_OemData_D9 - Daten D9 eingeben

# Speichern
d.SdoWr(0x302E, 0, 0x00800000)  # DEV_OemData_Cmd - Daten und Passwort speichern


302E.04h OEM Daten - D3

Name | DEV_OemData_D3
Bezeichnung | OEM Daten - D3
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_OemData_Cmd, DEV_OemData_D0, DEV_OemData_D1, DEV_OemData_D2, DEV_OemData_D4, DEV_OemData_D5, DEV_OemData_D6, DEV_OemData_D7, DEV_OemData_D8, DEV_OemData_D9

Beschreibung

Unter den Subindices 1..A können benutzerspezifische Daten abgelegt werden. Diese Daten werden mit einem Passwort geschützt (siehe DEV_OemData_Cmd).
Die Daten und das Passwort bleiben bei einem Firmwareupdate erhalten.

Diese Daten können z.B. für folgende Informationen verwendet werden:
  • Seriennummer der Maschine
  • Datum der letzter Wartung
  • Parametersatznummer
  • Versionsnummer der Maschine

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                      # NodeId = 1

# Zugriff erlauben (Passwort eingeben)
d.SdoWr(0x302E, 0, 0x00000000)  # DEV_OemData_Cmd - Reset - altes Passwort eingeben
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word0
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word1
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word2
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word3
#                        ----
#                        16bit Password
# Passwort ändern
d.SdoWr(0x302E, 0, 0x00200000)  # DEV_OemData_Cmd - neues Passwort - word0 = 0000h
d.SdoWr(0x302E, 0, 0x00210000)  # DEV_OemData_Cmd - neues Passwort - word1 = 0000h
d.SdoWr(0x302E, 0, 0x00220000)  # DEV_OemData_Cmd - neues Passwort - word2 = 0000h
d.SdoWr(0x302E, 0, 0x00230000)  # DEV_OemData_Cmd - neues Passwort - word3 = 0000h
#                        ----
#                        16bit Password
# Daten ändern
d.SdoWr(0x302E, 1, 0x11111111)  # DEV_OemData_D0 - Daten D0 eingeben
d.SdoWr(0x302E, 2, 0x22222222)  # DEV_OemData_D1 - Daten D1 eingeben
d.SdoWr(0x302E, 3, 0x33333333)  # DEV_OemData_D2 - Daten D2 eingeben
d.SdoWr(0x302E, 4, 0x44444444)  # DEV_OemData_D3 - Daten D3 eingeben
d.SdoWr(0x302E, 5, 0x55555555)  # DEV_OemData_D4 - Daten D4 eingeben
d.SdoWr(0x302E, 6, 0x66666666)  # DEV_OemData_D5 - Daten D5 eingeben
d.SdoWr(0x302E, 7, 0x77777777)  # DEV_OemData_D6 - Daten D6 eingeben
d.SdoWr(0x302E, 8, 0x88888888)  # DEV_OemData_D7 - Daten D7 eingeben
d.SdoWr(0x302E, 9, 0x99899999)  # DEV_OemData_D8 - Daten D8 eingeben
d.SdoWr(0x302E, 10, 0xAAAAAAAA) # DEV_OemData_D9 - Daten D9 eingeben

# Speichern
d.SdoWr(0x302E, 0, 0x00800000)  # DEV_OemData_Cmd - Daten und Passwort speichern


302E.05h OEM Daten - D4

Name | DEV_OemData_D4
Bezeichnung | OEM Daten - D4
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_OemData_Cmd, DEV_OemData_D0, DEV_OemData_D1, DEV_OemData_D2, DEV_OemData_D3, DEV_OemData_D5, DEV_OemData_D6, DEV_OemData_D7, DEV_OemData_D8, DEV_OemData_D9

Beschreibung

Unter den Subindices 1..A können benutzerspezifische Daten abgelegt werden. Diese Daten werden mit einem Passwort geschützt (siehe DEV_OemData_Cmd).
Die Daten und das Passwort bleiben bei einem Firmwareupdate erhalten.

Diese Daten können z.B. für folgende Informationen verwendet werden:
  • Seriennummer der Maschine
  • Datum der letzter Wartung
  • Parametersatznummer
  • Versionsnummer der Maschine

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                      # NodeId = 1

# Zugriff erlauben (Passwort eingeben)
d.SdoWr(0x302E, 0, 0x00000000)  # DEV_OemData_Cmd - Reset - altes Passwort eingeben
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word0
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word1
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word2
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word3
#                        ----
#                        16bit Password
# Passwort ändern
d.SdoWr(0x302E, 0, 0x00200000)  # DEV_OemData_Cmd - neues Passwort - word0 = 0000h
d.SdoWr(0x302E, 0, 0x00210000)  # DEV_OemData_Cmd - neues Passwort - word1 = 0000h
d.SdoWr(0x302E, 0, 0x00220000)  # DEV_OemData_Cmd - neues Passwort - word2 = 0000h
d.SdoWr(0x302E, 0, 0x00230000)  # DEV_OemData_Cmd - neues Passwort - word3 = 0000h
#                        ----
#                        16bit Password
# Daten ändern
d.SdoWr(0x302E, 1, 0x11111111)  # DEV_OemData_D0 - Daten D0 eingeben
d.SdoWr(0x302E, 2, 0x22222222)  # DEV_OemData_D1 - Daten D1 eingeben
d.SdoWr(0x302E, 3, 0x33333333)  # DEV_OemData_D2 - Daten D2 eingeben
d.SdoWr(0x302E, 4, 0x44444444)  # DEV_OemData_D3 - Daten D3 eingeben
d.SdoWr(0x302E, 5, 0x55555555)  # DEV_OemData_D4 - Daten D4 eingeben
d.SdoWr(0x302E, 6, 0x66666666)  # DEV_OemData_D5 - Daten D5 eingeben
d.SdoWr(0x302E, 7, 0x77777777)  # DEV_OemData_D6 - Daten D6 eingeben
d.SdoWr(0x302E, 8, 0x88888888)  # DEV_OemData_D7 - Daten D7 eingeben
d.SdoWr(0x302E, 9, 0x99899999)  # DEV_OemData_D8 - Daten D8 eingeben
d.SdoWr(0x302E, 10, 0xAAAAAAAA) # DEV_OemData_D9 - Daten D9 eingeben

# Speichern
d.SdoWr(0x302E, 0, 0x00800000)  # DEV_OemData_Cmd - Daten und Passwort speichern


302E.06h OEM Daten - D5

Name | DEV_OemData_D5
Bezeichnung | OEM Daten - D5
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_OemData_Cmd, DEV_OemData_D0, DEV_OemData_D1, DEV_OemData_D2, DEV_OemData_D3, DEV_OemData_D4, DEV_OemData_D6, DEV_OemData_D7, DEV_OemData_D8, DEV_OemData_D9

Beschreibung

Unter den Subindices 1..A können benutzerspezifische Daten abgelegt werden. Diese Daten werden mit einem Passwort geschützt (siehe DEV_OemData_Cmd).
Die Daten und das Passwort bleiben bei einem Firmwareupdate erhalten.

Diese Daten können z.B. für folgende Informationen verwendet werden:
  • Seriennummer der Maschine
  • Datum der letzter Wartung
  • Parametersatznummer
  • Versionsnummer der Maschine

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                      # NodeId = 1

# Zugriff erlauben (Passwort eingeben)
d.SdoWr(0x302E, 0, 0x00000000)  # DEV_OemData_Cmd - Reset - altes Passwort eingeben
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word0
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word1
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word2
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word3
#                        ----
#                        16bit Password
# Passwort ändern
d.SdoWr(0x302E, 0, 0x00200000)  # DEV_OemData_Cmd - neues Passwort - word0 = 0000h
d.SdoWr(0x302E, 0, 0x00210000)  # DEV_OemData_Cmd - neues Passwort - word1 = 0000h
d.SdoWr(0x302E, 0, 0x00220000)  # DEV_OemData_Cmd - neues Passwort - word2 = 0000h
d.SdoWr(0x302E, 0, 0x00230000)  # DEV_OemData_Cmd - neues Passwort - word3 = 0000h
#                        ----
#                        16bit Password
# Daten ändern
d.SdoWr(0x302E, 1, 0x11111111)  # DEV_OemData_D0 - Daten D0 eingeben
d.SdoWr(0x302E, 2, 0x22222222)  # DEV_OemData_D1 - Daten D1 eingeben
d.SdoWr(0x302E, 3, 0x33333333)  # DEV_OemData_D2 - Daten D2 eingeben
d.SdoWr(0x302E, 4, 0x44444444)  # DEV_OemData_D3 - Daten D3 eingeben
d.SdoWr(0x302E, 5, 0x55555555)  # DEV_OemData_D4 - Daten D4 eingeben
d.SdoWr(0x302E, 6, 0x66666666)  # DEV_OemData_D5 - Daten D5 eingeben
d.SdoWr(0x302E, 7, 0x77777777)  # DEV_OemData_D6 - Daten D6 eingeben
d.SdoWr(0x302E, 8, 0x88888888)  # DEV_OemData_D7 - Daten D7 eingeben
d.SdoWr(0x302E, 9, 0x99899999)  # DEV_OemData_D8 - Daten D8 eingeben
d.SdoWr(0x302E, 10, 0xAAAAAAAA) # DEV_OemData_D9 - Daten D9 eingeben

# Speichern
d.SdoWr(0x302E, 0, 0x00800000)  # DEV_OemData_Cmd - Daten und Passwort speichern


302E.07h OEM Daten - D6

Name | DEV_OemData_D6
Bezeichnung | OEM Daten - D6
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_OemData_Cmd, DEV_OemData_D0, DEV_OemData_D1, DEV_OemData_D2, DEV_OemData_D3, DEV_OemData_D4, DEV_OemData_D5, DEV_OemData_D7, DEV_OemData_D8, DEV_OemData_D9

Beschreibung

Unter den Subindices 1..A können benutzerspezifische Daten abgelegt werden. Diese Daten werden mit einem Passwort geschützt (siehe DEV_OemData_Cmd).
Die Daten und das Passwort bleiben bei einem Firmwareupdate erhalten.

Diese Daten können z.B. für folgende Informationen verwendet werden:
  • Seriennummer der Maschine
  • Datum der letzter Wartung
  • Parametersatznummer
  • Versionsnummer der Maschine

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                      # NodeId = 1

# Zugriff erlauben (Passwort eingeben)
d.SdoWr(0x302E, 0, 0x00000000)  # DEV_OemData_Cmd - Reset - altes Passwort eingeben
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word0
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word1
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word2
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word3
#                        ----
#                        16bit Password
# Passwort ändern
d.SdoWr(0x302E, 0, 0x00200000)  # DEV_OemData_Cmd - neues Passwort - word0 = 0000h
d.SdoWr(0x302E, 0, 0x00210000)  # DEV_OemData_Cmd - neues Passwort - word1 = 0000h
d.SdoWr(0x302E, 0, 0x00220000)  # DEV_OemData_Cmd - neues Passwort - word2 = 0000h
d.SdoWr(0x302E, 0, 0x00230000)  # DEV_OemData_Cmd - neues Passwort - word3 = 0000h
#                        ----
#                        16bit Password
# Daten ändern
d.SdoWr(0x302E, 1, 0x11111111)  # DEV_OemData_D0 - Daten D0 eingeben
d.SdoWr(0x302E, 2, 0x22222222)  # DEV_OemData_D1 - Daten D1 eingeben
d.SdoWr(0x302E, 3, 0x33333333)  # DEV_OemData_D2 - Daten D2 eingeben
d.SdoWr(0x302E, 4, 0x44444444)  # DEV_OemData_D3 - Daten D3 eingeben
d.SdoWr(0x302E, 5, 0x55555555)  # DEV_OemData_D4 - Daten D4 eingeben
d.SdoWr(0x302E, 6, 0x66666666)  # DEV_OemData_D5 - Daten D5 eingeben
d.SdoWr(0x302E, 7, 0x77777777)  # DEV_OemData_D6 - Daten D6 eingeben
d.SdoWr(0x302E, 8, 0x88888888)  # DEV_OemData_D7 - Daten D7 eingeben
d.SdoWr(0x302E, 9, 0x99899999)  # DEV_OemData_D8 - Daten D8 eingeben
d.SdoWr(0x302E, 10, 0xAAAAAAAA) # DEV_OemData_D9 - Daten D9 eingeben

# Speichern
d.SdoWr(0x302E, 0, 0x00800000)  # DEV_OemData_Cmd - Daten und Passwort speichern


302E.08h OEM Daten - D7

Name | DEV_OemData_D7
Bezeichnung | OEM Daten - D7
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_OemData_Cmd, DEV_OemData_D0, DEV_OemData_D1, DEV_OemData_D2, DEV_OemData_D3, DEV_OemData_D4, DEV_OemData_D5, DEV_OemData_D6, DEV_OemData_D8, DEV_OemData_D9

Beschreibung

Unter den Subindices 1..A können benutzerspezifische Daten abgelegt werden. Diese Daten werden mit einem Passwort geschützt (siehe DEV_OemData_Cmd).
Die Daten und das Passwort bleiben bei einem Firmwareupdate erhalten.

Diese Daten können z.B. für folgende Informationen verwendet werden:
  • Seriennummer der Maschine
  • Datum der letzter Wartung
  • Parametersatznummer
  • Versionsnummer der Maschine

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                      # NodeId = 1

# Zugriff erlauben (Passwort eingeben)
d.SdoWr(0x302E, 0, 0x00000000)  # DEV_OemData_Cmd - Reset - altes Passwort eingeben
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word0
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word1
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word2
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word3
#                        ----
#                        16bit Password
# Passwort ändern
d.SdoWr(0x302E, 0, 0x00200000)  # DEV_OemData_Cmd - neues Passwort - word0 = 0000h
d.SdoWr(0x302E, 0, 0x00210000)  # DEV_OemData_Cmd - neues Passwort - word1 = 0000h
d.SdoWr(0x302E, 0, 0x00220000)  # DEV_OemData_Cmd - neues Passwort - word2 = 0000h
d.SdoWr(0x302E, 0, 0x00230000)  # DEV_OemData_Cmd - neues Passwort - word3 = 0000h
#                        ----
#                        16bit Password
# Daten ändern
d.SdoWr(0x302E, 1, 0x11111111)  # DEV_OemData_D0 - Daten D0 eingeben
d.SdoWr(0x302E, 2, 0x22222222)  # DEV_OemData_D1 - Daten D1 eingeben
d.SdoWr(0x302E, 3, 0x33333333)  # DEV_OemData_D2 - Daten D2 eingeben
d.SdoWr(0x302E, 4, 0x44444444)  # DEV_OemData_D3 - Daten D3 eingeben
d.SdoWr(0x302E, 5, 0x55555555)  # DEV_OemData_D4 - Daten D4 eingeben
d.SdoWr(0x302E, 6, 0x66666666)  # DEV_OemData_D5 - Daten D5 eingeben
d.SdoWr(0x302E, 7, 0x77777777)  # DEV_OemData_D6 - Daten D6 eingeben
d.SdoWr(0x302E, 8, 0x88888888)  # DEV_OemData_D7 - Daten D7 eingeben
d.SdoWr(0x302E, 9, 0x99899999)  # DEV_OemData_D8 - Daten D8 eingeben
d.SdoWr(0x302E, 10, 0xAAAAAAAA) # DEV_OemData_D9 - Daten D9 eingeben

# Speichern
d.SdoWr(0x302E, 0, 0x00800000)  # DEV_OemData_Cmd - Daten und Passwort speichern


302E.09h OEM Daten - D8

Name | DEV_OemData_D8
Bezeichnung | OEM Daten - D8
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_OemData_Cmd, DEV_OemData_D0, DEV_OemData_D1, DEV_OemData_D2, DEV_OemData_D3, DEV_OemData_D4, DEV_OemData_D5, DEV_OemData_D6, DEV_OemData_D7, DEV_OemData_D9

Beschreibung

Unter den Subindices 1..A können benutzerspezifische Daten abgelegt werden. Diese Daten werden mit einem Passwort geschützt (siehe DEV_OemData_Cmd).
Die Daten und das Passwort bleiben bei einem Firmwareupdate erhalten.

Diese Daten können z.B. für folgende Informationen verwendet werden:
  • Seriennummer der Maschine
  • Datum der letzter Wartung
  • Parametersatznummer
  • Versionsnummer der Maschine

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                      # NodeId = 1

# Zugriff erlauben (Passwort eingeben)
d.SdoWr(0x302E, 0, 0x00000000)  # DEV_OemData_Cmd - Reset - altes Passwort eingeben
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word0
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word1
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word2
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word3
#                        ----
#                        16bit Password
# Passwort ändern
d.SdoWr(0x302E, 0, 0x00200000)  # DEV_OemData_Cmd - neues Passwort - word0 = 0000h
d.SdoWr(0x302E, 0, 0x00210000)  # DEV_OemData_Cmd - neues Passwort - word1 = 0000h
d.SdoWr(0x302E, 0, 0x00220000)  # DEV_OemData_Cmd - neues Passwort - word2 = 0000h
d.SdoWr(0x302E, 0, 0x00230000)  # DEV_OemData_Cmd - neues Passwort - word3 = 0000h
#                        ----
#                        16bit Password
# Daten ändern
d.SdoWr(0x302E, 1, 0x11111111)  # DEV_OemData_D0 - Daten D0 eingeben
d.SdoWr(0x302E, 2, 0x22222222)  # DEV_OemData_D1 - Daten D1 eingeben
d.SdoWr(0x302E, 3, 0x33333333)  # DEV_OemData_D2 - Daten D2 eingeben
d.SdoWr(0x302E, 4, 0x44444444)  # DEV_OemData_D3 - Daten D3 eingeben
d.SdoWr(0x302E, 5, 0x55555555)  # DEV_OemData_D4 - Daten D4 eingeben
d.SdoWr(0x302E, 6, 0x66666666)  # DEV_OemData_D5 - Daten D5 eingeben
d.SdoWr(0x302E, 7, 0x77777777)  # DEV_OemData_D6 - Daten D6 eingeben
d.SdoWr(0x302E, 8, 0x88888888)  # DEV_OemData_D7 - Daten D7 eingeben
d.SdoWr(0x302E, 9, 0x99899999)  # DEV_OemData_D8 - Daten D8 eingeben
d.SdoWr(0x302E, 10, 0xAAAAAAAA) # DEV_OemData_D9 - Daten D9 eingeben

# Speichern
d.SdoWr(0x302E, 0, 0x00800000)  # DEV_OemData_Cmd - Daten und Passwort speichern


302E.0Ah OEM Daten - D9

Name | DEV_OemData_D9
Bezeichnung | OEM Daten - D9
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_OemData_Cmd, DEV_OemData_D0, DEV_OemData_D1, DEV_OemData_D2, DEV_OemData_D3, DEV_OemData_D4, DEV_OemData_D5, DEV_OemData_D6, DEV_OemData_D7, DEV_OemData_D8

Beschreibung

Unter den Subindices 1..A können benutzerspezifische Daten abgelegt werden. Diese Daten werden mit einem Passwort geschützt (siehe DEV_OemData_Cmd).
Die Daten und das Passwort bleiben bei einem Firmwareupdate erhalten.

Diese Daten können z.B. für folgende Informationen verwendet werden:
  • Seriennummer der Maschine
  • Datum der letzter Wartung
  • Parametersatznummer
  • Versionsnummer der Maschine

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                      # NodeId = 1

# Zugriff erlauben (Passwort eingeben)
d.SdoWr(0x302E, 0, 0x00000000)  # DEV_OemData_Cmd - Reset - altes Passwort eingeben
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word0
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word1
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word2
d.SdoWr(0x302E, 0, 0x00010000)  # DEV_OemData_Cmd - Eingabe Passwort - word3
#                        ----
#                        16bit Password
# Passwort ändern
d.SdoWr(0x302E, 0, 0x00200000)  # DEV_OemData_Cmd - neues Passwort - word0 = 0000h
d.SdoWr(0x302E, 0, 0x00210000)  # DEV_OemData_Cmd - neues Passwort - word1 = 0000h
d.SdoWr(0x302E, 0, 0x00220000)  # DEV_OemData_Cmd - neues Passwort - word2 = 0000h
d.SdoWr(0x302E, 0, 0x00230000)  # DEV_OemData_Cmd - neues Passwort - word3 = 0000h
#                        ----
#                        16bit Password
# Daten ändern
d.SdoWr(0x302E, 1, 0x11111111)  # DEV_OemData_D0 - Daten D0 eingeben
d.SdoWr(0x302E, 2, 0x22222222)  # DEV_OemData_D1 - Daten D1 eingeben
d.SdoWr(0x302E, 3, 0x33333333)  # DEV_OemData_D2 - Daten D2 eingeben
d.SdoWr(0x302E, 4, 0x44444444)  # DEV_OemData_D3 - Daten D3 eingeben
d.SdoWr(0x302E, 5, 0x55555555)  # DEV_OemData_D4 - Daten D4 eingeben
d.SdoWr(0x302E, 6, 0x66666666)  # DEV_OemData_D5 - Daten D5 eingeben
d.SdoWr(0x302E, 7, 0x77777777)  # DEV_OemData_D6 - Daten D6 eingeben
d.SdoWr(0x302E, 8, 0x88888888)  # DEV_OemData_D7 - Daten D7 eingeben
d.SdoWr(0x302E, 9, 0x99899999)  # DEV_OemData_D8 - Daten D8 eingeben
d.SdoWr(0x302E, 10, 0xAAAAAAAA) # DEV_OemData_D9 - Daten D9 eingeben

# Speichern
d.SdoWr(0x302E, 0, 0x00800000)  # DEV_OemData_Cmd - Daten und Passwort speichern


Inhalt - Parameter 3000h (DSA) - Benutzer Daten

302F.00h | DEV_UserData_Cmd | Benutzer Daten - Kommando
302F.01h | DEV_UserData_D0 | Benutzer Daten - D0
302F.02h | DEV_UserData_D1 | Benutzer Daten - D1
302F.03h | DEV_UserData_D2 | Benutzer Daten - D2
302F.04h | DEV_UserData_D3 | Benutzer Daten - D3


302F.00h Benutzer Daten - Kommando

Name | DEV_UserData_Cmd
Bezeichnung | Benutzer Daten - Kommando
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_UserData_D0, DEV_UserData_D1, DEV_UserData_D2, DEV_UserData_D3

Beschreibung

Dem Benutzer stehen vier Parameter (uint32, Subindex 1..4) zur Verfügung. Die Inhalte der Parameter werden mit einem Passwort geschützt.
Nur nach Eingabe des richtigen Passwortes können die Daten der Parameter verändert werden.

Über den Kommandoparameter DEV_UserData_Cmd kann man:
  • Passwort eingeben
  • neues Passwort vergeben
  • Daten und neues Passwort permanent speichern
Das Passwort besteht aus vier 16Bit Zahlen, die in richtiger Reihenfolge eingegeben werden müssen.
Defaultpasswort ist: 0000h 0000h 0000h 0000h

Alle Kommandos werden als uint32 Zahl eingegeben.

Kommandos:
Kommandos (Hex) | Bezeichnung
0000 0000h | Reset - danach kann erstes Passwort eingegeben werden
0001 pppph | Passworteingabe - Wobei "pppp" = uint16 Teilpasswort (es werden vier Eingaben erwartet)
0020 pppph | Passwort - word0
0021 pppph | Passwort - word1
0022 pppph | Passwort - word2
0023 pppph | Passwort - word3
0080 0000h | Daten und Passwort speichern

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

# Zugriff erlauben (Passwort eingeben)
d.SdoWr(0x302F, 0x00, 0x00000000)         # DEV_UserData_Cmd - Reset - altes Passwort eingeben
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word0
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word1
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word2
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word3
                   #     ----
                   #     16bit Password
# Passwort ändern
d.SdoWr(0x302F, 0x00, 0x00200000)         # DEV_UserData_Cmd - neues Passwort - word0 = 0000h
d.SdoWr(0x302F, 0x00, 0x00210000)         # DEV_UserData_Cmd - neues Passwort - word1 = 0000h
d.SdoWr(0x302F, 0x00, 0x00220000)         # DEV_UserData_Cmd - neues Passwort - word2 = 0000h
d.SdoWr(0x302F, 0x00, 0x00230000)         # DEV_UserData_Cmd - neues Passwort - word3 = 0000h
                   #     ----
                   #     16bit Password
# Daten ändern
d.SdoWr(0x302F, 0x01, 0x11111111)         # DEV_UserData_D0 - Daten D0 eingeben
d.SdoWr(0x302F, 0x02, 0x22222222)         # DEV_UserData_D1 - Daten D1 eingeben
d.SdoWr(0x302F, 0x03, 0x33333333)         # DEV_UserData_D2 - Daten D2 eingeben
d.SdoWr(0x302F, 0x04, 0x44444444)         # DEV_UserData_D3 - Daten D3 eingeben

# Speichern
d.SdoWr(0x302F, 0x00, 0x00800000)         # DEV_UserData_Cmd - Daten und Passwort speichern


302F.01h Benutzer Daten - D0

Name | DEV_UserData_D0
Bezeichnung | Benutzer Daten - D0
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_UserData_Cmd, DEV_UserData_D1, DEV_UserData_D2, DEV_UserData_D3

Beschreibung

Unter den Subindices 1..4 können benutzerspezifische Daten abgelegt werden. Diese Daten werden mit einem Passwort geschützt (siehe DEV_UserData_Cmd).
Die Daten und das Passwort bleiben bei einem Firmwareupdate erhalten.

Diese Daten können z.B. für folgende Informationen verwendet werden:
  • Seriennummer der Maschine
  • Datum der letzter Wartung
  • Parametersatznummer
  • Versionsnummer der Maschine

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

# Zugriff erlauben (Passwort eingeben)
d.SdoWr(0x302F, 0x00, 0x00000000)         # DEV_UserData_Cmd - Reset - altes Passwort eingeben
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word0
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word1
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word2
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word3
                   #     ----
                   #     16bit Password
# Passwort ändern
d.SdoWr(0x302F, 0x00, 0x00200000)         # DEV_UserData_Cmd - neues Passwort - word0 = 0000h
d.SdoWr(0x302F, 0x00, 0x00210000)         # DEV_UserData_Cmd - neues Passwort - word1 = 0000h
d.SdoWr(0x302F, 0x00, 0x00220000)         # DEV_UserData_Cmd - neues Passwort - word2 = 0000h
d.SdoWr(0x302F, 0x00, 0x00230000)         # DEV_UserData_Cmd - neues Passwort - word3 = 0000h
                   #     ----
                   #     16bit Password
# Daten ändern
d.SdoWr(0x302F, 0x01, 0x11111111)         # DEV_UserData_D0 - Daten D0 eingeben
d.SdoWr(0x302F, 0x02, 0x22222222)         # DEV_UserData_D1 - Daten D1 eingeben
d.SdoWr(0x302F, 0x03, 0x33333333)         # DEV_UserData_D2 - Daten D2 eingeben
d.SdoWr(0x302F, 0x04, 0x44444444)         # DEV_UserData_D3 - Daten D3 eingeben

# Speichern
d.SdoWr(0x302F, 0x00, 0x00800000)         # DEV_UserData_Cmd - Daten und Passwort speichern


302F.02h Benutzer Daten - D1

Name | DEV_UserData_D1
Bezeichnung | Benutzer Daten - D1
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_UserData_Cmd, DEV_UserData_D0, DEV_UserData_D2, DEV_UserData_D3

Beschreibung

Unter den Subindices 1..4 können benutzerspezifische Daten abgelegt werden. Diese Daten werden mit einem Passwort geschützt (siehe DEV_UserData_Cmd).
Die Daten und das Passwort bleiben bei einem Firmwareupdate erhalten.

Diese Daten können z.B. für folgende Informationen verwendet werden:
  • Seriennummer der Maschine
  • Datum der letzter Wartung
  • Parametersatznummer
  • Versionsnummer der Maschine

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

# Zugriff erlauben (Passwort eingeben)
d.SdoWr(0x302F, 0x00, 0x00000000)         # DEV_UserData_Cmd - Reset - altes Passwort eingeben
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word0
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word1
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word2
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word3
                   #     ----
                   #     16bit Password
# Passwort ändern
d.SdoWr(0x302F, 0x00, 0x00200000)         # DEV_UserData_Cmd - neues Passwort - word0 = 0000h
d.SdoWr(0x302F, 0x00, 0x00210000)         # DEV_UserData_Cmd - neues Passwort - word1 = 0000h
d.SdoWr(0x302F, 0x00, 0x00220000)         # DEV_UserData_Cmd - neues Passwort - word2 = 0000h
d.SdoWr(0x302F, 0x00, 0x00230000)         # DEV_UserData_Cmd - neues Passwort - word3 = 0000h
                   #     ----
                   #     16bit Password
# Daten ändern
d.SdoWr(0x302F, 0x01, 0x11111111)         # DEV_UserData_D0 - Daten D0 eingeben
d.SdoWr(0x302F, 0x02, 0x22222222)         # DEV_UserData_D1 - Daten D1 eingeben
d.SdoWr(0x302F, 0x03, 0x33333333)         # DEV_UserData_D2 - Daten D2 eingeben
d.SdoWr(0x302F, 0x04, 0x44444444)         # DEV_UserData_D3 - Daten D3 eingeben

# Speichern
d.SdoWr(0x302F, 0x00, 0x00800000)         # DEV_UserData_Cmd - Daten und Passwort speichern


302F.03h Benutzer Daten - D2

Name | DEV_UserData_D2
Bezeichnung | Benutzer Daten - D2
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_UserData_Cmd, DEV_UserData_D0, DEV_UserData_D1, DEV_UserData_D3

Beschreibung

Unter den Subindices 1..4 können benutzerspezifische Daten abgelegt werden. Diese Daten werden mit einem Passwort geschützt (siehe DEV_UserData_Cmd).
Die Daten und das Passwort bleiben bei einem Firmwareupdate erhalten.

Diese Daten können z.B. für folgende Informationen verwendet werden:
  • Seriennummer der Maschine
  • Datum der letzter Wartung
  • Parametersatznummer
  • Versionsnummer der Maschine

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

# Zugriff erlauben (Passwort eingeben)
d.SdoWr(0x302F, 0x00, 0x00000000)         # DEV_UserData_Cmd - Reset - altes Passwort eingeben
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word0
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word1
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word2
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word3
                   #     ----
                   #     16bit Password
# Passwort ändern
d.SdoWr(0x302F, 0x00, 0x00200000)         # DEV_UserData_Cmd - neues Passwort - word0 = 0000h
d.SdoWr(0x302F, 0x00, 0x00210000)         # DEV_UserData_Cmd - neues Passwort - word1 = 0000h
d.SdoWr(0x302F, 0x00, 0x00220000)         # DEV_UserData_Cmd - neues Passwort - word2 = 0000h
d.SdoWr(0x302F, 0x00, 0x00230000)         # DEV_UserData_Cmd - neues Passwort - word3 = 0000h
                   #     ----
                   #     16bit Password
# Daten ändern
d.SdoWr(0x302F, 0x01, 0x11111111)         # DEV_UserData_D0 - Daten D0 eingeben
d.SdoWr(0x302F, 0x02, 0x22222222)         # DEV_UserData_D1 - Daten D1 eingeben
d.SdoWr(0x302F, 0x03, 0x33333333)         # DEV_UserData_D2 - Daten D2 eingeben
d.SdoWr(0x302F, 0x04, 0x44444444)         # DEV_UserData_D3 - Daten D3 eingeben

# Speichern
d.SdoWr(0x302F, 0x00, 0x00800000)         # DEV_UserData_Cmd - Daten und Passwort speichern


302F.04h Benutzer Daten - D3

Name | DEV_UserData_D3
Bezeichnung | Benutzer Daten - D3
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [00000000h .. FFFFFFFFh]
Defaultwert | 00000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.75
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_UserData_Cmd, DEV_UserData_D0, DEV_UserData_D1, DEV_UserData_D2

Beschreibung

Unter den Subindices 1..4 können benutzerspezifische Daten abgelegt werden. Diese Daten werden mit einem Passwort geschützt (siehe DEV_UserData_Cmd).
Die Daten und das Passwort bleiben bei einem Firmwareupdate erhalten.

Diese Daten können z.B. für folgende Informationen verwendet werden:
  • Seriennummer der Maschine
  • Datum der letzter Wartung
  • Parametersatznummer
  • Versionsnummer der Maschine

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

# Zugriff erlauben (Passwort eingeben)
d.SdoWr(0x302F, 0x00, 0x00000000)         # DEV_UserData_Cmd - Reset - altes Passwort eingeben
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word0
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word1
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word2
d.SdoWr(0x302F, 0x00, 0x00010000)         # DEV_UserData_Cmd - Eingabe Passwort - word3
                   #     ----
                   #     16bit Password
# Passwort ändern
d.SdoWr(0x302F, 0x00, 0x00200000)         # DEV_UserData_Cmd - neues Passwort - word0 = 0000h
d.SdoWr(0x302F, 0x00, 0x00210000)         # DEV_UserData_Cmd - neues Passwort - word1 = 0000h
d.SdoWr(0x302F, 0x00, 0x00220000)         # DEV_UserData_Cmd - neues Passwort - word2 = 0000h
d.SdoWr(0x302F, 0x00, 0x00230000)         # DEV_UserData_Cmd - neues Passwort - word3 = 0000h
                   #     ----
                   #     16bit Password
# Daten ändern
d.SdoWr(0x302F, 0x01, 0x11111111)         # DEV_UserData_D0 - Daten D0 eingeben
d.SdoWr(0x302F, 0x02, 0x22222222)         # DEV_UserData_D1 - Daten D1 eingeben
d.SdoWr(0x302F, 0x03, 0x33333333)         # DEV_UserData_D2 - Daten D2 eingeben
d.SdoWr(0x302F, 0x04, 0x44444444)         # DEV_UserData_D3 - Daten D3 eingeben

# Speichern
d.SdoWr(0x302F, 0x00, 0x00800000)         # DEV_UserData_Cmd - Daten und Passwort speichern


3031.00h Max. Leistungsspannung

Name | DEV_MaxUp
Bezeichnung | Max. Leistungsspannung
Datentyp | const uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | DevMaxUp()
Querverweis | -

Beschreibung

Liefert den maximal zulässigen Wert der Leistungsversorgungsspannung des Gerätes zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

# DEV_MaxUp - ausgeben der max. Leistungsspannung
print "Up_max =", d.SdoRd(0x3031, 0x00), "[mV]"


3032.00h Max. Motorstrom

Name | DEV_MaxIm
Bezeichnung | Max. Motorstrom
Datentyp | const uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | DevMaxIm()
Querverweis | -

Beschreibung

Liefert den maximal zulässigen Wert des Motorstroms des Gerätes zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

# DEV_MaxIm - Max. Motorstrom ausgeben
print "Im_max =", d.SdoRd(0x3032, 0x00), "[mA]"


Inhalt - Parameter 3000h (DSA) - Ein- Ausgangszuordnung

3050.00h | DEV_DinEnable | Eingangszuordnung - Betriebsfreigabe
3051.00h | DEV_DinClearError | Eingangszuordnung - Fehlerquittierung
3052.00h | DEV_DinStartStop | Eingangszuordnung - Start/Stop
3053.00h | DEV_DinDir | Eingangszuordnung - Drehrichtungsumkehr
3055.00h | DEV_DinLimitPos | Eingangszuordnung - positive Endschalter
3056.00h | DEV_DinLimitNeg | Eingangszuordnung - negative Endschalter
3057.00h | DEV_DinReference | Eingangszuordnung - Referenzschalter
3060.00h | DEV_DoutError | Ausgangszuordnung - Fehler


3050.00h Eingangszuordnung - Betriebsfreigabe

Name | DEV_DinEnable
Bezeichnung | Eingangszuordnung - Betriebsfreigabe
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {-137h, -136h, -135h, -134h, -133h, -132h, -131h, -130h, 0h, 130h, 131h, 132h, 133h, 134h, 135h, 136h, 137h}
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_Enable

Beschreibung

Dieser Parameter bestimmt die Quelle für die hardwaremäßige Betriebsfreigabe des Antriebsreglers.
Wenn der Parameter auf 0 gesetzt ist (Default), wird die Betriebsfreigabe des Antriebsreglers nur mit dem Parameter DEV_Enable gesteuert.
Positive Werte bedeuten, dass der jeweilige digitale Eingang High-Aktiv ist;; negative, dass der Eingang Low-Aktiv ist.

Die Anzahl der digitalen Eingänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Parameterwerte:
Wert (Hex) | Beschreibung
-0137h (FFFFFEC9h) | digitaler Eingang 7 als Freigabeeingang, Low-Aktiv
-0136h (FFFFFECAh) | digitaler Eingang 6 als Freigabeeingang, Low-Aktiv
-0135h (FFFFFECBh) | digitaler Eingang 5 als Freigabeeingang, Low-Aktiv
-0134h (FFFFFECCh) | digitaler Eingang 4 als Freigabeeingang, Low-Aktiv
-0133h (FFFFFECDh) | digitaler Eingang 3 als Freigabeeingang, Low-Aktiv
-0132h (FFFFFECEh) | digitaler Eingang 2 als Freigabeeingang, Low-Aktiv
-0131h (FFFFFECFh) | digitaler Eingang 1 als Freigabeeingang, Low-Aktiv
-0130h (FFFFFED0h) | digitaler Eingang 0 als Freigabeeingang, Low-Aktiv
0 | keine hardwaremäßige Freigabe definiert
0130h | digitaler Eingang 0 als Freigabeeingang, Hi-Aktiv
0131h | digitaler Eingang 1 als Freigabeeingang, Hi-Aktiv
0132h | digitaler Eingang 2 als Freigabeeingang, Hi-Aktiv
0133h | digitaler Eingang 3 als Freigabeeingang, Hi-Aktiv
0134h | digitaler Eingang 4 als Freigabeeingang, Hi-Aktiv
0135h | digitaler Eingang 5 als Freigabeeingang, Hi-Aktiv
0136h | digitaler Eingang 6 als Freigabeeingang, Hi-Aktiv
0137h | digitaler Eingang 7 als Freigabeeingang, Hi-Aktiv

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Abfrage des Parameters
print "DevDinEnable =", hex(d.SdoRd(0x3050, 0x00))

# dig. Eingang 1 als Betriebsfreigabe, High-Aktiv
d.SdoWr(0x3050, 0x00, 0x0131)

# Alternative Formen:
# d.DevDinEnable(1, active_level=1)
# d.DevDinEnable(0x0131)


3051.00h Eingangszuordnung - Fehlerquittierung

Name | DEV_DinClearError
Bezeichnung | Eingangszuordnung - Fehlerquittierung
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {-137h, -136h, -135h, -134h, -133h, -132h, -131h, -130h, 0h, 130h, 131h, 132h, 133h, 134h, 135h, 136h, 137h}
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | DevDinClearError(value), DevDinClearError(value, active_level)
Querverweis | -

Beschreibung

Mit diesem Parameter kann die Quelle für die hardwaremäßige Fehlerquittierung des Antriebsreglers bestimmt werden.
Positive Werte bedeuten, dass der jeweilige digitale Eingang High-Aktiv ist;; negative, dass der Eingang Low-Aktiv ist.

Die Anzahl der digitalen Eingänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Parameterwerte:
Wert (Hex) | Beschreibung
-0137h (FFFFFEC9h) | digitaler Eingang 7 als Fehlerquittierungseingang, Low-Aktiv, Low-Aktiv
-0136h (FFFFFECAh) | digitaler Eingang 6 als Fehlerquittierungseingang, Low-Aktiv, Low-Aktiv
-0135h (FFFFFECBh) | digitaler Eingang 5 als Fehlerquittierungseingang, Low-Aktiv, Low-Aktiv
-0134h (FFFFFECCh) | digitaler Eingang 4 als Fehlerquittierungseingang, Low-Aktiv, Low-Aktiv
-0133h (FFFFFECDh) | digitaler Eingang 3 als Fehlerquittierungseingang, Low-Aktiv, Low-Aktiv
-0132h (FFFFFECEh) | digitaler Eingang 2 als Fehlerquittierungseingang, Low-Aktiv, Low-Aktiv
-0131h (FFFFFECFh) | digitaler Eingang 1 als Fehlerquittierungseingang, Low-Aktiv, Low-Aktiv
-0130h (FFFFFED0h) | digitaler Eingang 0 als Fehlerquittierungseingang, Low-Aktiv, Low-Aktiv
0 | keine hardwaremäßige Fehlerquittierung
0130h | digitaler Eingang 0 als Fehlerquittierungseingang, Hi-Aktiv
0131h | digitaler Eingang 1 als Fehlerquittierungseingang, Hi-Aktiv
0132h | digitaler Eingang 2 als Fehlerquittierungseingang, Hi-Aktiv
0133h | digitaler Eingang 3 als Fehlerquittierungseingang, Hi-Aktiv
0134h | digitaler Eingang 4 als Fehlerquittierungseingang, Hi-Aktiv
0135h | digitaler Eingang 5 als Fehlerquittierungseingang, Hi-Aktiv
0136h | digitaler Eingang 6 als Fehlerquittierungseingang, Hi-Aktiv
0137h | digitaler Eingang 7 als Fehlerquittierungseingang, Hi-Aktiv

TIPP
Die digitalen Eingänge können mehrfach belegt werden. Es ist z.B. in folgendem Fall sinnvoll:

Ein digitaler Eingang (sagen wir, der Eingang 3) soll sowohl als Freigabeeingang und als auch Fehlerquittierungseingang folgendermaßen benutzt werden:

Eingang = High - Freigabe des Antriebsregler
Eingang = Low  - Fehlerquittierung

Parametrierung:

DevDinEnable(0x133)        # Freigabe High-Aktiv
DevDinClearError(-0x133)   # Fehlerquittierung Low-Aktiv

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Abfrage des Parameters
print "DevDinClearError =", hex(d.SdoRd(0x3051, 0x00))

# dig. Eingang 2 als "ClearError", Low-Aktiv
d.SdoWr(0x3051, 0x00, -0x0132)

# Alternative Formen:
# d.DevDinClearError(2, active_level=-1)
# d.DevDinClearError(-0x0132)


3052.00h Eingangszuordnung - Start/Stop

Name | DEV_DinStartStop
Bezeichnung | Eingangszuordnung - Start/Stop
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {-137h, -136h, -135h, -134h, -133h, -132h, -131h, -130h, 0h, 130h, 131h, 132h, 133h, 134h, 135h, 136h, 137h}
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.30.00.00
Geräte | Alle
PLC Funktion | DevDinStartStop(value), DevDinStartStop(value, active_level)
Querverweis | -

Beschreibung

Parameter DEV_DinStartStop definiert Start/Stop-Eingang.
Negative Werte bedeuten, dass der jeweilige digitale Eingang Low-Aktiv ist.
Mit einem Start/Stop-Eingang kann eine Bewegung gestartet bzw. gestoppt werden.

Falls ein Eingang als Hi-Aktiv definiert wurde, dann:

High-Pegel am Eingang  = Sollwert wird auf eingestellten Wert gesetzt - Bewegung wird gestartet.
Low-Pegel  am Eingang  = Sollwert wird auf Null gesetzt               - Bewegung wird gestoppt.

Achtung
Nur für Drehzahlmodus und Strommodus verwendbar.

Diese Funktion steht ab der Firmwareversion 1.89.00.D9 auch im Positioniermodus zur Verfügung.
Eine Bewegung wird im Positioniermodus nur gestartet wenn der Start-Eingang aktiviert ist und ein neues Positionierkommando geschickt wird.

Die Anzahl der digitalen Eingänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Parameterwerte:
Wert (Hex) | Beschreibung
-0137h (FFFFFEC9h) | digitaler Eingang 7 als Start/Stop-Eingang, Low-Aktiv
-0136h (FFFFFECAh) | digitaler Eingang 6 als Start/Stop-Eingang, Low-Aktiv
-0135h (FFFFFECBh) | digitaler Eingang 5 als Start/Stop-Eingang, Low-Aktiv
-0134h (FFFFFECCh) | digitaler Eingang 4 als Start/Stop-Eingang, Low-Aktiv
-0133h (FFFFFECDh) | digitaler Eingang 3 als Start/Stop-Eingang, Low-Aktiv
-0132h (FFFFFECEh) | digitaler Eingang 2 als Start/Stop-Eingang, Low-Aktiv
-0131h (FFFFFECFh) | digitaler Eingang 1 als Start/Stop-Eingang, Low-Aktiv
-0130h (FFFFFED0h) | digitaler Eingang 0 als Start/Stop-Eingang, Low-Aktiv
0 | kein hardwaremäßiges Start/Stop
0130h | digitaler Eingang 0 als Start/Stop-Eingang, Hi-Aktiv
0131h | digitaler Eingang 1 als Start/Stop-Eingang, Hi-Aktiv
0132h | digitaler Eingang 2 als Start/Stop-Eingang, Hi-Aktiv
0133h | digitaler Eingang 3 als Start/Stop-Eingang, Hi-Aktiv
0134h | digitaler Eingang 4 als Start/Stop-Eingang, Hi-Aktiv
0135h | digitaler Eingang 5 als Start/Stop-Eingang, Hi-Aktiv
0136h | digitaler Eingang 6 als Start/Stop-Eingang, Hi-Aktiv
0137h | digitaler Eingang 7 als Start/Stop-Eingang, Hi-Aktiv

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Abfrage des Parameters
print "DevDinStartStop =", hex(d.SdoRd(0x3052, 0x00))

# dig. Eingang 2 als "Start/Stop", High-Aktiv
d.SdoWr(0x3052, 0x00, 0x0132)

# Alternative Formen:
# d.DevDinStartStop(2, active_level= 1)
# d.DevDinStartStop(0x0132)


3053.00h Eingangszuordnung - Drehrichtungsumkehr

Name | DEV_DinDir
Bezeichnung | Eingangszuordnung - Drehrichtungsumkehr
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {-137h, -136h, -135h, -134h, -133h, -132h, -131h, -130h, 0h, 130h, 131h, 132h, 133h, 134h, 135h, 136h, 137h}
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.A3
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Parameter DEV_DinDir definiert den Drehrichtungsumkehr-Eingang.
Negative Werte bedeuten, dass der jeweilige digitale Eingang Low-Aktiv ist.
Mit einem Drehrichtungsumkehr-Eingang kann ein Drehrichtungswechsel im Strom- und Drehzahlmodus eingeleitet werden.

Falls ein Eingang als Hi-Aktiv definiert wurde, dann:

High-Pegel am Eingang  = Die Drehrichtung wird invertiert.
Low-Pegel  am Eingang  = Die Drehrichtung wird nicht invertiert.

Achtung
Nur für SDrehzalmodus, Drehzahlmodus und Strommodus verwendbar.

Diese Funktion steht ab der Firmwareversion 1.93.00.A3 zur Verfügung.
Die Drehrichtungsumkehr funktioniert, wenn der Sollwert per Software oder per analogem Eingang vorgegeben wird.

Die Anzahl der digitalen Eingänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Parameterwerte:
Wert (Hex) | Beschreibung
-0137h (FFFFFEC9h) | digitaler Eingang 7 als Drehrichtungsumkehr-Eingang, Low-Aktiv
-0136h (FFFFFECAh) | digitaler Eingang 6 als Drehrichtungsumkehr-Eingang, Low-Aktiv
-0135h (FFFFFECBh) | digitaler Eingang 5 als Drehrichtungsumkehr-Eingang, Low-Aktiv
-0134h (FFFFFECCh) | digitaler Eingang 4 als Drehrichtungsumkehr-Eingang, Low-Aktiv
-0133h (FFFFFECDh) | digitaler Eingang 3 als Drehrichtungsumkehr-Eingang, Low-Aktiv
-0132h (FFFFFECEh) | digitaler Eingang 2 als Drehrichtungsumkehr-Eingang, Low-Aktiv
-0131h (FFFFFECFh) | digitaler Eingang 1 als Drehrichtungsumkehr-Eingang, Low-Aktiv
-0130h (FFFFFED0h) | digitaler Eingang 0 als Drehrichtungsumkehr-Eingang, Low-Aktiv
0 | keine hardwaremäßige Drehrichtungsumkehr
0130h | digitaler Eingang 0 als Drehrichtungsumkehr-Eingang, Hi-Aktiv
0131h | digitaler Eingang 1 als Drehrichtungsumkehr-Eingang, Hi-Aktiv
0132h | digitaler Eingang 2 als Drehrichtungsumkehr-Eingang, Hi-Aktiv
0133h | digitaler Eingang 3 als Drehrichtungsumkehr-Eingang, Hi-Aktiv
0134h | digitaler Eingang 4 als Drehrichtungsumkehr-Eingang, Hi-Aktiv
0135h | digitaler Eingang 5 als Drehrichtungsumkehr-Eingang, Hi-Aktiv
0136h | digitaler Eingang 6 als Drehrichtungsumkehr-Eingang, Hi-Aktiv
0137h | digitaler Eingang 7 als Drehrichtungsumkehr-Eingang, Hi-Aktiv

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Abfrage des Parameters
print "DevDinDirection =", hex(d.SdoRd(0x3053, 0x00))

# dig. Eingang 2 als "Direction", High-Aktiv
d.SdoWr(0x3053, 0x00, 0x0132)


3055.00h Eingangszuordnung - positive Endschalter

Name | DEV_DinLimitPos
Bezeichnung | Eingangszuordnung - positive Endschalter
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {-137h, -136h, -135h, -134h, -133h, -132h, -131h, -130h, 0h, 130h, 131h, 132h, 133h, 134h, 135h, 136h, 137h}
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | DevDinLimitPos(value), DevDinLimitPos(value, active_level)
Querverweis | DEV_DinLimitNeg, VEL_Dec_dV, VEL_Dec_dT, VEL_Dec_QuickStop_dV, VEL_Dec_QuickStop_dT

Beschreibung

Parameter DEV_DinLimitPos definiert Limiteingang für positive Drehrichtung.
Negative Werte bedeuten, dass der jeweilige digitale Eingang Low-Aktiv ist.

Mit einem Limiteingang kann eine Bewegung in bestimmter Richtung begrenzt werden. D.h. wenn der Limiteingang aktiviert wird, wird in Abhängigkeit der Betriebsart folgendes Ereignis auftreten:

Betriebsart | Ereignis beim Aktivieren des Limiteingangs
MODE_Current | Motorstrom wird auf Null gesetzt. (Falls Stromrampen aktiv sind, wird mit CurrLimitStop-Verzögerung auf Null runtergefahren)
MODE_Vel | Die Motordrehzahl wird mit VelLimitStop-Verzögerung auf Null runtergefahren.
MODE_SVel | Die Motordrehzahl wird ohne Rampe auf Null gesetzt.
MODE_Pos | Die Motordrehzahl wird mit VelLimitStop-Verzögerung auf Null runtergefahren.
Als VelLimitStop-Verzögerung, mit welcher die Welle des Motors angehalten wird, wird die „schnellste“ Verzögerung von VEL_Dec (Parameter: VEL_Dec_dV und VEL_Dec_dT) und VEL_Dec_QuickStop (Parameter: VEL_Dec_QuickStop_dV und VEL_Dec_QuickStop_dT) genommen.

VelLimitStop-Verzögerung = max(VEL_Dec, VEL_Dec_QuickStop)
analog
CurrLimitStop-Verzögerung = max(CURR_Dec, CURR_Dec_QuickStop)

Beim Ansprechen eines Limiteingangs wird ein interner QuickStop ausgeführt (gleichbedeutend mit DEV_Cmd = CMD_QuickStop). Eine Fortsetzung der Bewegung in Gegenrichtung kann erst nach dem Continue-Befehl (DEV_Cmd = CMD_Continue) und neuer Sollwertvorgabe erfolgen.

Die Anzahl der digitalen Eingänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Parameterwerte:
Wert (Hex) | Beschreibung
-0137h (FFFFFEC9h) | digitaler Eingang 7 als Limiteingang, Low-Aktiv
-0136h (FFFFFECAh) | digitaler Eingang 6 als Limiteingang, Low-Aktiv
-0135h (FFFFFECBh) | digitaler Eingang 5 als Limiteingang, Low-Aktiv
-0134h (FFFFFECCh) | digitaler Eingang 4 als Limiteingang, Low-Aktiv
-0133h (FFFFFECDh) | digitaler Eingang 3 als Limiteingang, Low-Aktiv
-0132h (FFFFFECEh) | digitaler Eingang 2 als Limiteingang, Low-Aktiv
-0131h (FFFFFECFh) | digitaler Eingang 1 als Limiteingang, Low-Aktiv
-0130h (FFFFFED0h) | digitaler Eingang 0 als Limiteingang, Low-Aktiv
0 | kein hardwaremäßiger Limiteingang
0130h | digitaler Eingang 0 als Limiteingang, Hi-Aktiv
0131h | digitaler Eingang 1 als Limiteingang, Hi-Aktiv
0132h | digitaler Eingang 2 als Limiteingang, Hi-Aktiv
0133h | digitaler Eingang 3 als Limiteingang, Hi-Aktiv
0134h | digitaler Eingang 4 als Limiteingang, Hi-Aktiv
0135h | digitaler Eingang 5 als Limiteingang, Hi-Aktiv
0136h | digitaler Eingang 6 als Limiteingang, Hi-Aktiv
0137h | digitaler Eingang 7 als Limiteingang, Hi-Aktiv

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Abfrage des Parameters
print "DevDinLimitPos =", hex(d.SdoRd(0x3055, 0x00))

# dig. Eingang2 als Limiteingang fuer positive Drehrichtung, High-Aktiv
d.SdoWr(0x3055, 0x00, 0x0132)

# Alternative Formen:
# d.DevDinLimitPos(2, active_level= 1)
# d.DevDinLimitPos(0x0132)


3056.00h Eingangszuordnung - negative Endschalter

Name | DEV_DinLimitNeg
Bezeichnung | Eingangszuordnung - negative Endschalter
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {-137h, -136h, -135h, -134h, -133h, -132h, -131h, -130h, 0h, 130h, 131h, 132h, 133h, 134h, 135h, 136h, 137h}
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | DevDinLimitNeg(value), DevDinLimitNeg(value, active_level)
Querverweis | DEV_DinLimitPos, VEL_Dec_dV, VEL_Dec_dT, VEL_Dec_QuickStop_dV, VEL_Dec_QuickStop_dT

Beschreibung

Parameter DEV_DinLimitNeg definiert Limiteingang für negative Drehrichtung.
Negative Werte bedeuten, dass der jeweilige digitale Eingang Low-Aktiv ist.

Mit einem Limiteingang kann eine Bewegung in bestimmter Richtung begrenzt werden. D.h. wenn der Limiteingang aktiviert wird, wird in Abhängigkeit der Betriebsart folgendes Ereignis auftreten:

Betriebsart | Ereignis beim Aktivieren des Limiteingangs
MODE_Current | Motorstrom wird auf Null gesetzt. (Falls Stromrampen aktiv sind, wird mit CurrLimitStop-Verzögerung auf Null runtergefahren)
MODE_Vel | Die Motordrehzahl wird mit VelLimitStop-Verzögerung auf Null runtergefahren.
MODE_SVel | Die Motordrehzahl wird ohne Rampe auf Null gesetzt.
MODE_Pos | Die Motordrehzahl wird mit VelLimitStop-Verzögerung auf Null runtergefahren.
Als VelLimitStop-Verzögerung, mit welcher die Welle des Motors angehalten wird, wird die „schnellste“ Verzögerung von VEL_Dec (Parameter: VEL_Dec_dV und VEL_Dec_dT) und VEL_Dec_QuickStop (Parameter: VEL_Dec_QuickStop_dV und VEL_Dec_QuickStop_dT) genommen.

VelLimitStop-Verzögerung = max(VEL_Dec, VEL_Dec_QuickStop)
analog
CurrLimitStop-Verzögerung = max(CURR_Dec, CURR_Dec_QuickStop)

Beim Ansprechen eines Limiteingangs wird ein internen QuickStop ausgeführt (gleichbedeutend mit DEV_Cmd = CMD_QuickStop). Eine Fortsetzung der Bewegung in Gegenrichtung kann erst nach dem Continue-Befehl (DEV_Cmd = CMD_Continue) und neuer Sollwertvorgabe erfolgen.

Die Anzahl der digitalen Eingängen, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Parameterwerte:
Wert (Hex) | Beschreibung
-0137h (FFFFFEC9h) | digitaler Eingang 7 als Limiteingang, Low-Aktiv
-0136h (FFFFFECAh) | digitaler Eingang 6 als Limiteingang, Low-Aktiv
-0135h (FFFFFECBh) | digitaler Eingang 5 als Limiteingang, Low-Aktiv
-0134h (FFFFFECCh) | digitaler Eingang 4 als Limiteingang, Low-Aktiv
-0133h (FFFFFECDh) | digitaler Eingang 3 als Limiteingang, Low-Aktiv
-0132h (FFFFFECEh) | digitaler Eingang 2 als Limiteingang, Low-Aktiv
-0131h (FFFFFECFh) | digitaler Eingang 1 als Limiteingang, Low-Aktiv
-0130h (FFFFFED0h) | digitaler Eingang 0 als Limiteingang, Low-Aktiv
0 | kein hardwaremäßiger Limiteingang
0130h | digitaler Eingang 0 als Limiteingang, Hi-Aktiv
0131h | digitaler Eingang 1 als Limiteingang, Hi-Aktiv
0132h | digitaler Eingang 2 als Limiteingang, Hi-Aktiv
0133h | digitaler Eingang 3 als Limiteingang, Hi-Aktiv
0134h | digitaler Eingang 4 als Limiteingang, Hi-Aktiv
0135h | digitaler Eingang 5 als Limiteingang, Hi-Aktiv
0136h | digitaler Eingang 6 als Limiteingang, Hi-Aktiv
0137h | digitaler Eingang 7 als Limiteingang, Hi-Aktiv

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Abfrage des Parameters
print "DevDinLimitNeg =", hex(d.SdoRd(0x3056, 0x00))

# dig. Eingang2 als Limiteingang fuer negative Drehrichtung, High-Aktiv
d.SdoWr(0x3056, 0x00, 0x0132)

# Alternative Formen:
# d.DevDinLimitNeg(2, active_level= 1)
# d.DevDinLimitNeg(0x0132)


3057.00h Eingangszuordnung - Referenzschalter

Name | DEV_DinReference
Bezeichnung | Eingangszuordnung - Referenzschalter
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {-137h, -136h, -135h, -134h, -133h, -132h, -131h, -130h, 0h, 130h, 131h, 132h, 133h, 134h, 135h, 136h, 137h}
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | DevDinReference(value), DevDinReference(value, active_level)
Querverweis | -

Beschreibung

Parameter DEV_DinReference definiert ein Eingang für einen Referenzschalter.
Negative Werte bedeuten, dass der jeweilige digitale Eingang Low-Aktiv ist.

Mit einem Referenzschalter kann, in Verbindung mit Homing-Funktion (siehe POS_HomingMethod), der Maschinennullpunkt definiert werden.

Die Anzahl der digitalen Eingänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Parameterwerte:
Wert (Hex) | Beschreibung
-0137h (FFFFFEC9h) | digitaler Eingang 7 als Referenz-Eingang, Low-Aktiv
-0136h (FFFFFECAh) | digitaler Eingang 6 als Referenz-Eingang, Low-Aktiv
-0135h (FFFFFECBh) | digitaler Eingang 5 als Referenz-Eingang, Low-Aktiv
-0134h (FFFFFECCh) | digitaler Eingang 4 als Referenz-Eingang, Low-Aktiv
-0133h (FFFFFECDh) | digitaler Eingang 3 als Referenz-Eingang, Low-Aktiv
-0132h (FFFFFECEh) | digitaler Eingang 2 als Referenz-Eingang, Low-Aktiv
-0131h (FFFFFECFh) | digitaler Eingang 1 als Referenz-Eingang, Low-Aktiv
-0130h (FFFFFED0h) | digitaler Eingang 0 als Referenz-Eingang, Low-Aktiv
0 | kein hardwaremäßiger Referenz-Eingang
0130h | digitaler Eingang 0 als Referenz-Eingang, Hi-Aktiv
0131h | digitaler Eingang 1 als Referenz-Eingang, Hi-Aktiv
0132h | digitaler Eingang 2 als Referenz-Eingang, Hi-Aktiv
0133h | digitaler Eingang 3 als Referenz-Eingang, Hi-Aktiv
0134h | digitaler Eingang 4 als Referenz-Eingang, Hi-Aktiv
0135h | digitaler Eingang 5 als Referenz-Eingang, Hi-Aktiv
0136h | digitaler Eingang 6 als Referenz-Eingang, Hi-Aktiv
0137h | digitaler Eingang 7 als Referenz-Eingang, Hi-Aktiv

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Abfrage des Parameters
print "DevDinReference =", hex(d.SdoRd(0x3057, 0x00))

# dig. Eingang 2 als Referenzeingang, High-Aktiv
d.SdoWr(0x3057, 0x00, 0x0132)

# Alternative Formen:
# d.DevDinReference(2, active_level= 1)
# d.DevDinReference(0x0132)


3060.00h Ausgangszuordnung - Fehler

Name | DEV_DoutError
Bezeichnung | Ausgangszuordnung - Fehler
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {-163h, -162h, -161h, -160h, 0h, 160h, 161h, 162h, 163h}
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | DevDoutError(value), DevDoutError(value, active_level)
Querverweis | -

Beschreibung

Dieser Parameter bestimmt welcher digitale Ausgang als Fehlerausgang verwendet wird.
Wenn der Parameter auf 0 gesetzt wird, wird kein Fehlerausgang definiert.
Negative Werte bedeuten, dass der jeweilige digitale Ausgang Low-Aktiv ist.

Die Anzahl der digitalen Ausgänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Parameterwerte:
Wert (Hex) | Beschreibung
-0163h (FFFFFE9Dh) | digitaler Ausgang 3 als Fehlerausgang, Low-Aktiv
-0162h (FFFFFE9Eh) | digitaler Ausgang 2 als Fehlerausgang, Low-Aktiv
-0161h (FFFFFE9Fh) | digitaler Ausgang 1 als Fehlerausgang, Low-Aktiv
-0160h (FFFFFEA0h) | digitaler Ausgang 0 als Fehlerausgang, Low-Aktiv
0 | kein Fehlerausgang
0160h | digitaler Ausgang 0 als Fehlerausgang, Hi-Aktiv
0161h | digitaler Ausgang 1 als Fehlerausgang, Hi-Aktiv
0162h | digitaler Ausgang 2 als Fehlerausgang, Hi-Aktiv
0163h | digitaler Ausgang 3 als Fehlerausgang, Hi-Aktiv

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Abfrage des Parameters
print "DevDoutError =", hex(d.SdoRd(0x3060, 0x00))

# dig. Ausgang 0 als Fehlerausgang, Low-Aktiv
d.SdoWr(0x3060, 0x00, -0x0160)

# Alternative Formen:
# d.DevDoutError(0, active_level=-1)
# d.DevDoutError(-0x0160)


3080.00h Continue - Modus

Name | DEV_ContinueMode
Bezeichnung | Continue - Modus
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1, 2, 3, 4, 5}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.72
Geräte | Alle
PLC Funktion | DevContinueMode(value)
Querverweis | -

Beschreibung

Dieser Parameter legt den Continue-Modus fest.

Parameterwerte:
Wert | Verhalten
0 | "Continue" muss manuell erfolgen (DEV_Cmd = CMD_Continue).
1 | Automatisches "Continue" nachdem der HwLimit (DEV_DinLimitPos bzw. DEV_DinLimitNeg) nicht mehr aktiv ist.
2 | Automatisches "Continue" nachdem der HwLimit (DEV_DinLimitPos bzw. DEV_DinLimitNeg) nicht mehr aktiv ist. Wenn ein Sollwert über analogen Eingang vorgegeben wird, kann man aus dem HwLimit-Schalter durch Sollwertvorgabe rausfahren.
3 | Automatisches "Continue" nach QuickStop oder Halt, beim Setzen eines neuen Sollwertes.
4 | Automatisches "Continue" nach QuickStop, beim Setzen eines neuen Sollwertes.
5 | Automatisches "Continue" nach Halt, beim Setzen eines neuen Sollwertes.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                            # Node-Id 1

d.SdoWr(0x3080, 0x00, 3)              # DEV_ContinueMode - auto continue nach neuem Sollwert

d.SdoWr(0x3004, 0x00, 0)              # DEV_Enable - Sperren
d.SdoWr(0x3003, 0x00, 3)              # DEV_Mode - Vel Mode
d.SdoWr(0x3762, 0x00, 0)              # POS_ActualPosition - position 0
d.SdoWr(0x3004, 0x00, 1)              # DEV_Enable - Freigeben

timestamp = d.SdoRd(0x3850, 0x00)     # SYS_Clock

d.SdoWr(0x3000, 0x10, 900)            # DEV_CmdData0 - 900 rpm
d.SdoWr(0x3000, 0x01, 0x31)           # DEV_Cmd_ExecOnChange - Cmd Vel

while 1:
   if (timestamp+5000) >= d.SdoRd(0x3850, 0x00):   # bis zur 5. Sekunde:
      pass                                           # tue nichts
   elif (timestamp+10000) < d.SdoRd(0x3850, 0x00): # nach 10 sekunden:
      d.SdoWr(0x3300, 0x00, 900)                     # VEL_DesiredValue - 900 rpm
      timestamp = d.SdoRd(0x3850, 0x00)              # Zeit zurücksetzen
   elif (timestamp+5000) < d.SdoRd(0x3850, 0x00):  # nach 5 Sekunden:
      d.SdoWr(0x3000, 0x01, 0)                        # DEV_Cmd_ExecOnChange - Toggle
      d.SdoWr(0x3000, 0x01, 0x02)                     # DEV_Cmd_ExecOnChange - Quickstop


3090.00h Minimum Up - Error

Name | DEV_MinUp_Error
Bezeichnung | Minimum Up - Error
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 655350]
Defaultwert | 8000
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.71.01.11
Geräte | Alle
PLC Funktion | DevMinUpError(value)
Querverweis | -

Beschreibung

Dieser Parameter legt den unteren Grenzwert der Leistungsversorgungsspannung (UP) fest. Wenn die Versorgungsspannung diesen Wert unterschreitet, geht der Antriebsregler in einen Fehlerzustand mit Fehlercode = -1000 (ERR_FieldUnderVoltage, s. DEV_ErrorReg) über.
Der Wert dieses Parameters kann nur in 10 [mV] Schritten angegeben werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # Node-Id 1

d.SdoWr(0x3090, 0x00, 10000)  # DEV_MinUp_Error 10000 mV
MinUp = d.SdoRd(0x3090, 0x00) # DEV_MinUp_Error

print "Error bei Up =", MinUp ,"mV"


3090.04h Up - Ausschalten Stotterbremse

Name | DEV_UpOff_Stotterbremse
Bezeichnung | Up - Ausschalten Stotterbremse
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 655350]
Defaultwert | 0
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_UpOn_Stotterbremse

Beschreibung

Durch einen aktiven Bremsvorgang wird elektrische Energie regenerativ in den Zwischenkreis zurückgespeist. Der Parameter DEV_UpOff_Stotterbremse legt einen oberen Grenzwert der Leistungsspannung (UP) fest ab welcher der aktive Bremsvorgang des Motors unterbrochen wird. Der Parameter DEV_UpOn_Stotterbremse legt einen unteren Grenzwert der Leistungsspannung (UP) fest ab welcher der aktive Bremsvorgang des Motors wieder aufgenommen wird.

Um diese Funktion zu deaktivieren muss der Parameter auf 0 gesetzt werden.

Sehr schnelle Spannungsanstiege durch starkes Bremsen einer hohen Last, können aber trotzdem zu Spannungspitzen führen, welche nicht rechtzeitig von der Software des Reglers erkannt werden und zu Schäden an den elektrischen Schaltkreisen führen können.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa

d = Dsa(1)

d.SdoWr(0x3090, 0x04, 26000)                                # DEV_UpOff_Stotterbremse
d.SdoWr(0x3090, 0x05, 24000)                                # DEV_UpOn_Stotterbremse

print "Upoff Stotterbremse: %d mV" % d.SdoRd(0x3090, 0x04)  # DEV_UpOff_Stotterbremse
print "Upon  Stotterbremse: %d mV" % d.SdoRd(0x3090, 0x05)  # DEV_UpOn_Stotterbremse


3090.05h Up - Einschalten Stotterbremse

Name | DEV_UpOn_Stotterbremse
Bezeichnung | Up - Einschalten Stotterbremse
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 655350]
Defaultwert | 0
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_UpOff_Stotterbremse

Beschreibung

Durch einen aktiven Bremsvorgang wird elektrische Energie regenerativ in den Zwischenkreis zurückgespeist. Der Parameter DEV_UpOff_Stotterbremse legt einen oberen Grenzwert der Leistungsspannung (UP) fest ab welcher der aktive Bremsvorgang des Motors unterbrochen wird. Der Parameter DEV_UpOn_Stotterbremse legt einen unteren Grenzwert der Leistungsspannung (UP) fest ab welcher der aktive Bremsvorgang des Motors wieder aufgenommen wird.

Um diese Funktion zu deaktivieren muss der Parameter auf 0 gesetzt werden.

Sehr schnelle Spannungsanstiege durch starkes Bremsen einer hohen Last, können aber trotzdem zu Spannungspitzen führen, welche nicht rechtzeitig von der Software des Reglers erkannt werden und zu Schäden an den elektrischen Schaltkreisen führen können.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa

d = Dsa(1)

d.SdoWr(0x3090, 0x04, 26000)                                # DEV_UpOff_Stotterbremse
d.SdoWr(0x3090, 0x05, 24000)                                # DEV_UpOn_Stotterbremse

print "Upoff Stotterbremse: %d mV" % d.SdoRd(0x3090, 0x04)  # DEV_UpOff_Stotterbremse
print "Upon  Stotterbremse: %d mV" % d.SdoRd(0x3090, 0x05)  # DEV_UpOn_Stotterbremse


Inhalt - Parameter 3000h (DSA) - Analoge Eingänge

3100.00h | IO_AIN0 | Analoger Eingang 0
3101.00h | IO_AIN1 | Analoger Eingang 1
3108.00h | IO_AIN0_Offset | Analoger Eingang 0 - Offset
3108.01h | IO_AIN1_Offset | Analoger Eingang 1 - Offset
310A.00h | IO_AIN0_DeadBand | Analoger Eingang 0 - Totbereich
310A.01h | IO_AIN1_DeadBand | Analoger Eingang 1 - Totbereich


3100.00h Analoger Eingang 0

Name | IO_AIN0
Bezeichnung | Analoger Eingang 0
Datentyp | int16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-10000 .. 10000]
Defaultwert | -
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | Ain(nr)
Querverweis | IO_AIN0_Offset, IO_AIN0_DeadBand

Beschreibung

Liefert den Wert der Spannung in [mV] am analogen Eingang 0 zurück.

Der Wert des Parameters wird nach folgender Formel berechnet:

Uain = Uad - Uoffset

wobei:
    Uain     - Wert des Parameters IO_AIN0
    Uad      - Wert vom A/D Wandler (A/D = Analog/Digital)
    Uoffset  - Wert des Parameters IO_AIN0_Offset

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                           # NodeId = 1

for i in range(0,10):
   print d.SdoRd(0x3100, 0x00), "mV" # Spannung am analogen Eingang 0 abfragen
   time.sleep(1)                     # 1 Sekunde warten


3101.00h Analoger Eingang 1

Name | IO_AIN1
Bezeichnung | Analoger Eingang 1
Datentyp | int16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-10000 .. 10000]
Defaultwert | -
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | Ain(nr)
Querverweis | -

Beschreibung

Liefert den Wert der Spannung in [mV] am analogen Eingang 1 zurück.

Weitere Beschreibung siehe IO_AIN0.
Der analoge Eingang 1 ist optional.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                           # NodeId = 1

for i in range(0,10):
   print d.SdoRd(0x3101, 0x00), "mV" # Spannung am analogen Eingang 1 abfragen
   time.sleep(1)                     # 1 Sekunde warten


3108.00h Analoger Eingang 0 - Offset

Name | IO_AIN0_Offset
Bezeichnung | Analoger Eingang 0 - Offset
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-10000 .. 10000]
Defaultwert | 0
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.85.00.76
Geräte | Alle
PLC Funktion | AinOffset(nr, value)
Querverweis | IO_AIN0, IO_AIN0_DeadBand

Beschreibung

Mit dem Parameter kann ein Offset des analogen Eingangs 0 gesetzt werden.

Der Wert des Parameters IO_AIN0 wird nach folgender Formel berechnet:

Uain = Uad - Uoffset

wobei:
    Uain     - Wert des Parameters IO_AIN0
    Uad      - Wert vom A/D Wandler (A/D = Analog/Digital)
    Uoffset  - Wert des Parameters IO_AIN0_Offset

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                           # NodeId = 1

d.SdoWr(0x310A, 0x00, -3000)         # IO_AIN0_DeadBand - 3000 mV

for i in range(0,10):
   d.SdoWr(0x3108, 0x00, i*1000)     # IO_AIN0_Offset - 1000 mV, 2000 mV, 3000 mV ... 9000 mV
   print d.SdoRd(0x3100, 0x00), "mV" # IO_AIN0 - Spannung am analogen Eingang 0 abfragen
   time.sleep(1)                     # 1 Sekunde warten


3108.01h Analoger Eingang 1 - Offset

Name | IO_AIN1_Offset
Bezeichnung | Analoger Eingang 1 - Offset
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-10000 .. 10000]
Defaultwert | 0
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.85.00.76
Geräte | Alle
PLC Funktion | AinOffset(nr, value)
Querverweis | IO_AIN1, IO_AIN1_DeadBand

Beschreibung

Mit dem Parameter kann ein Offset des analogen Eingangs 1 gesetzt werden.

Der Wert des Parameters IO_AIN1 wird nach folgender Formel berechnet:

Uain = Uad - Uoffset

wobei:
    Uain     - Wert des Parameters IO_AIN1
    Uad      - Wert vom A/D Wandler (A/D = Analog/Digital)
    Uoffset  - Wert des Parameters IO_AIN1_Offset

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                           # NodeId = 1

d.SdoWr(0x310A, 0x01, 3000)          # IO_AIN1_DeadBand - 3000 mV

for i in range(0,10):
   d.SdoWr(0x3108, 0x01, i*1000)     # IO_AIN1_Offset - 1000 mV, 2000 mV, 3000 mV ... 9000 mV
   print d.SdoRd(0x3101, 0x00), "mV" # IO_AIN1 - Spannung am analogen Eingang 0 abfragen
   time.sleep(1)                     # 1 Sekunde warten


310A.00h Analoger Eingang 0 - Totbereich

Name | IO_AIN0_DeadBand
Bezeichnung | Analoger Eingang 0 - Totbereich
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-10000 .. 10000]
Defaultwert | 0
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.85.00.87
Geräte | Alle
PLC Funktion | AinDeadband(nr, value)
Querverweis | IO_AIN0, IO_AIN0_Offset

Beschreibung

Mit dem Parameter wird der Totbereich des analogen Eingangs 0 bestimmt.

Ein Totbereich ungleich Null ist besonders wichtig bei Sollwertvorgaben über ein Potentiometer. In dem Fall wäre es fast unmöglich ein Sollwert gleich Null vorzugeben, wenn kein Totbereich definiert wäre.

Der Wert des Parameters IO_AIN0 wird je nach Vorzeichen wie folgt berechnet:

IO_AIN0_DeadBand > 0

Uain = Uad - Uoffset

if abs(Uain) < Udb:
   Uain = 0
elif Uain > 0:
   Uain = Uain - Udb
elif Uain < 0:
   Uain = Uain + Udb

wobei:
    Uain     - Wert des Parameters IO_AIN0
    Uad      - Wert vom A/D Wandler (A/D = Analog/Digital)
    Uoffset  - Wert des Parameters IO_AIN0_Offset
    Udb      - Wert des Parameters IO_AIN0_Deadband
    abs(x)   - Liefert ein absolute Wert von x zurück

IO_AIN0_DeadBand < 0

Uain = Uad - Uoffset

if abs(Uain) < abs(Udb):
    Uain = 0

wobei:
    Uain     - Wert des Parameters IO_AIN0
    Uad      - Wert vom A/D Wandler (A/D = Analog/Digital)
    Uoffset  - Wert des Parameters IO_AIN0_Offset
    Udb      - Wert des Parameters IO_AIN0_Deadband
    abs(x)   - Liefert ein absolute Wert von x zurück

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                           # NodeId = 1

d.SdoWr(0x310A, 0x00, -3000)         # IO_AIN0_DeadBand - 3000 mV

for i in range(0,10):
   d.SdoWr(0x3108, 0x00, i*1000)     # IO_AIN0_Offset - 1000 mV, 2000 mV, 3000 mV ... 9000 mV
   print d.SdoRd(0x3100, 0x00), "mV" # IO_AIN0 - Spannung am analogen Eingang 0 abfragen
   time.sleep(1)                     # 1 Sekunde warten


310A.01h Analoger Eingang 1 - Totbereich

Name | IO_AIN1_DeadBand
Bezeichnung | Analoger Eingang 1 - Totbereich
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-10000 .. 10000]
Defaultwert | 0
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.85.00.87
Geräte | Alle
PLC Funktion | AinDeadband(nr, value)
Querverweis | IO_AIN1, IO_AIN1_Offset

Beschreibung

Mit dem Parameter wird der Totbereich des analogen Eingangs 1 bestimmt.

Ein Totbereich ungleich Null ist besonders wichtig bei Sollwertvorgaben über ein Potentiometer. In dem Fall wäre es fast unmöglich ein Sollwert gleich Null vorzugeben, wenn kein Totbereich definiert wäre.

Der Wert des Parameters IO_AIN1 wird je nach Vorzeichen wie folgt berechnet:

IO_AIN1_DeadBand > 0

Uain = Uad - Uoffset

if abs(Uain) < Udb:
   Uain = 0
elif Uain > 0:
   Uain = Uain - Udb
elif Uain < 0:
   Uain = Uain + Udb

wobei:
    Uain     - Wert des Parameters IO_AIN1
    Uad      - Wert vom A/D Wandler (A/D = Analog/Digital)
    Uoffset  - Wert des Parameters IO_AIN1_Offset
    Udb      - Wert des Parameters IO_AIN1_Deadband
    abs(x)   - Liefert ein absolute Wert von x zurück

IO_AIN1_DeadBand < 0

Uain = Uad - Uoffset

if abs(Uain) < abs(Udb):
    Uain = 0

wobei:
    Uain     - Wert des Parameters IO_AIN1
    Uad      - Wert vom A/D Wandler (A/D = Analog/Digital)
    Uoffset  - Wert des Parameters IO_AIN1_Offset
    Udb      - Wert des Parameters IO_AIN1_Deadband
    abs(x)   - Liefert ein absolute Wert von x zurück

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                           # NodeId = 1

d.SdoWr(0x310A, 0x01, 3000)          # IO_AIN1_DeadBand - 3000 mV

for i in range(0,10):
   d.SdoWr(0x3108, 0x01, i*1000)     # IO_AIN1_Offset - 1000 mV, 2000 mV, 3000 mV ... 9000 mV
   print d.SdoRd(0x3101, 0x00), "mV" # IO_AIN1 - Spannung am analogen Eingang 0 abfragen
   time.sleep(1)                     # 1 Sekunde warten


3110.00h Elektronikspannung - Ue

Name | IO_AIN_Voltage_Ue
Bezeichnung | Elektronikspannung - Ue
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | AinUe()
Querverweis | -

Beschreibung

Liefert den aktuellen Wert der Elektronikversorgungsspannung in [mV] des Gerätes zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                   # NodeId = 1

for i in range(0,10):
   print "Ue =", d.SdoRd(0x3110, 0x00), "mV" # Elektronikversorgungsspannung abfragen
   time.sleep(1)                             # 1 Sekunde warten


3111.00h Leistungsspannung - Up

Name | IO_AIN_Voltage_Up
Bezeichnung | Leistungsspannung - Up
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | AinUp()
Querverweis | DEV_MinUp_Error

Beschreibung

Liefert den aktuellen Wert der Leistungsversorgungsspannung in [mV] des Antriebsreglers zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                   # NodeId = 1

for i in range(0,10):
   print "Up =", d.SdoRd(0x3111, 0x00), "mV" # Leistungsspannung abfragen
   time.sleep(1)                             # 1 Sekunde warten


3112.00h Motorspannung - Um

Name | IO_AIN_Voltage_Um
Bezeichnung | Motorspannung - Um
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | AinUm()
Querverweis | -

Beschreibung

Liefert den aktuellen Wert der Spannung in [mV] am bürstenbehafteten Motor zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                   # NodeId = 1

for i in range(0,10):
   print "Um =", d.SdoRd(0x3112, 0x00), "mV" # Motorspannung abfragen
   time.sleep(1)                             # 1 Sekunde warten


3113.00h Motorstrom - Im

Name | IO_AIN_Current_Im
Bezeichnung | Motorstrom - Im
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | AinIm()
Querverweis | -

Beschreibung

Liefert den aktuellen Wert des Motorstroms in [mA] zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                   # NodeId = 1

for i in range(0,10):
   print "Im =", d.SdoRd(0x3113, 0x00), "mA" # Motorstrom abfragen
   time.sleep(1)                             # 1 Sekunde warten


3114.00h Temperatur - Leistungsstufe

Name | IO_AIN_Temperature_Power
Bezeichnung | Temperatur - Leistungsstufe
Datentyp | int16
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | -
Einheit | [0.1°C]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | AinTemp()
Querverweis | -

Beschreibung

Liefert die aktuelle Temperatur der Leistungsstufe des Antriebsreglers zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                 # NodeId = 1

# Aktuelle Temperatur abfragen
for i in range(0,10):
   print "T =", d.SdoRd(0x3114, 0x00)/10.0, "°C"
   time.sleep(1)           # 1 Sekunde warten


Inhalt - Parameter 3000h (DSA) - Digitale Eingänge

3120.00h | IO_DIN_P0 | Digitale Eingänge - Port0
3120.01h | IO_DIN_P1 | Digitale Eingänge - Port1
3128.00h | IO_DIN_Hall | Digitale Eingänge - Hallsensoren
3128.01h | IO_DIN_Enc | Digitale Eingänge - Encoder


3120.00h Digitale Eingänge - Port0

Name | IO_DIN_P0
Bezeichnung | Digitale Eingänge - Port0
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | DinP0(), Din(nr)
Querverweis | DEV_DinEnable, DEV_DinClearError, DEV_DinStartStop, DEV_DinLimitPos, DEV_DinLimitNeg, DEV_DinReference

Beschreibung

Liefert den aktuellen Zustand der digitalen Eingänge des Gerätes zurück.

Die Anzahl der digitalen Eingänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Bitbelegung:
Bit-Nr. | Bedeutung
0 | digitaler Eingang 0
1 | digitaler Eingang 1
2 | digitaler Eingang 2
3 | digitaler Eingang 3
4 | digitaler Eingang 4
5 | digitaler Eingang 5
6 | digitaler Eingang 6
7 | digitaler Eingang 7

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                             # NodeId = 1

for i in range(0,10):
   print hex(d.SdoRd(0x3120, 0x00))    # Zustand der Eingänge in HEX ausgeben
   time.sleep(1)                       # 1 Sekunde warten


3120.01h Digitale Eingänge - Port1

Name | IO_DIN_P1
Bezeichnung | Digitale Eingänge - Port1
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | Din(nr)
Querverweis | DEV_DinEnable, DEV_DinClearError, DEV_DinStartStop, DEV_DinLimitPos, DEV_DinLimitNeg, DEV_DinReference

Beschreibung

Liefert den aktuellen Zustand der digitalen Eingänge des Gerätes zurück.

Die Anzahl der digitalen Eingänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Bitbelegung:
Bit-Nr. | Bedeutung
0 | digitaler Eingang 8
1 | digitaler Eingang 9
2 | digitaler Eingang 10
3 | digitaler Eingang 11
4 | digitaler Eingang 12
5 | digitaler Eingang 13
6 | digitaler Eingang 14
7 | digitaler Eingang 15

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                             # NodeId = 1

for i in range(0,10):
   print hex(d.SdoRd(0x3120, 0x01))    # Zustand der Eingänge in HEX ausgeben
   time.sleep(1)                       # 1 Sekunde warten


3128.00h Digitale Eingänge - Hallsensoren

Name | IO_DIN_Hall
Bezeichnung | Digitale Eingänge - Hallsensoren
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 7]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | DinHall()
Querverweis | -

Beschreibung

Liefert den aktuellen Zustand der digitalen Hallsensoreneingänge des Antriebsreglers zurück.
Beim Betrieb des Gerätes mit bürstenbehafteten Motoren können die Halleingänge als allgemeine digitale 5V-Eingänge verwendet werden.

ACHTUNG Die angelegte Spannung an die Hallsensoreneingänge darf 5V nicht überschreiten !!

Bitbelegung:

Bit-Nr. | Bedeutung
0 | Hallsensor 1
1 | Hallsensor 2
2 | Hallsensor 3

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                           # NodeId = 1

for i in range(0,10):
   print hex(d.SdoRd(0x3128, 0x00))  # Zustand der Hallsensoren in HEX ausgeben
   time.sleep(1)                     # 1 Sekunde warten


3128.01h Digitale Eingänge - Encoder

Name | IO_DIN_Enc
Bezeichnung | Digitale Eingänge - Encoder
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 7]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.00.10
Geräte | Alle
PLC Funktion | DinEnc()
Querverweis | IO_DIN_Hall

Beschreibung

Liefert den aktuellen Zustand der Encodereingänge des Gerätes zurück.
Beim Betrieb des Gerätes ohne Encoder können die Encodereingänge als allgemeine digitale 5V-Eingänge verwendet werden.

ACHTUNG Die angelegte Spannung an die Encodereingänge darf 5V nicht überschreiten !!

Bitbelegung:

Bit-Nr. | Bedeutung
0 | Encoder A
1 | Encoder B
2 | Encoder Index
Dieser Parameter ist nur bei folgenden Geräten verfügbar:

mcIO-C3-dsa
mcIO-C4-dsa
mcIO-D3-dsa
mcIO-D4-dsa

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                          # NodeId = 1

for i in range(0,10):
   print hex(d.SdoRd(0x3128, 0x01)) # Zustand der Eingängen vom Encoder
                                    # in HEX ausgeben
   time.sleep(1)                    # 1 Sekunde warten


3150.00h Digitale Ausgänge - Port0

Name | IO_DOUT_P0
Bezeichnung | Digitale Ausgänge - Port0
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 15]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | DoutP0(value), Dout(p1, p2)
Querverweis | IO_DOUT_Enable, DEV_DoutError

Beschreibung

Mit dem Parameter können die digitalen Ausgänge des Antriebsreglers gesetzt bzw. zurückgesetzt werden.

Die Anzahl der digitalen Ausgänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Bitbelegung:
Bit-Nr. | Bedeutung
0 | digitaler Ausgang 0
1 | digitaler Ausgang 1
2 | digitaler Ausgang 2
3 | digitaler Ausgang 3
4 | digitaler Ausgang 4
5 | digitaler Ausgang 5
6 | digitaler Ausgang 6
7 | digitaler Ausgang 7

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                  # NodeId = 1

# Setzen digitaler Ausgänge von Port0 mit Bitmaske
set_dout = 0x02             # Nur Bit 1 wird gesetzt (dout1)
d_out = (d.SdoRd(0x3150, 0x00) | set_dout)
d.SdoWr(0x3150, 0x00, d_out)

# Zurücksetzen digitaler Ausgänge von Port0 mit Bitmaske
reset_dout = 0x01          # Nur Bit 0 wird zurückgesetzt (dout0)
d_out = (d.SdoRd(0x3150, 0x00) & ~reset_dout)
d.SdoWr(0x3150, 0x00, d_out)

# Ausgeben der digitalen Ausgänge von Port0
print "Dout =", hex(d.SdoRd(0x3150, 0x00))


3154.00h Freigabe der digitalen Ausgänge

Name | IO_DOUT_Enable
Bezeichnung | Freigabe der digitalen Ausgänge
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.08
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_DoutError, IO_DOUT_P0, MOTOR_HALL_DoutPulses_Mode,

Beschreibung

Mit dem Parameter können die digitalen Ausgänge freigegeben oder gesperrt werden.

Die Freigabe gilt nur für den Parameter 3150.00h (IO_DOUT_P0), die Firmware selbst kann die Ausgänge jedoch weiterhin setzen.
Die Sperre verhindert, dass der Zustand des digitalen Ausgangs unbeabsichtigt bzw. unberechtigt geändert wird, wenn der Ausgang bereits durch interne Funktionen der Firmware genutzt wird (z.B. durch Bremsmanagement, Fehlerausgang usw.).

Die Anzahl der digitalen Ausgänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten des Gerätes).

Bitbelegung:
Bit-Nr. | Bedeutung
0 | digitaler Ausgang 0 (=1 freigegeben, =0 gesperrt)
1 | digitaler Ausgang 1 (=1 freigegeben, =0 gesperrt)
2 | digitaler Ausgang 2 (=1 freigegeben, =0 gesperrt)
3 | digitaler Ausgang 3 (=1 freigegeben, =0 gesperrt)
4 | digitaler Ausgang 4 (=1 freigegeben, =0 gesperrt)
5 | digitaler Ausgang 5 (=1 freigegeben, =0 gesperrt)
6 | digitaler Ausgang 6 (=1 freigegeben, =0 gesperrt)
7 | digitaler Ausgang 7 (=1 freigegeben, =0 gesperrt)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                  # NodeId = 1

# Freigeben der digitalen Ausgänge von Port0 mit Bitmaske
set_dout = 0x02             # Nur Bit 1 freigeben (dout1)
d_out = (d.SdoRd(0x3154, 0x00) | set_dout)
d.SdoWr(0x3154, 0x00, d_out)

# Sperren der digitalen Ausgänge von Port0 mit Bitmaske
reset_dout = 0x01          # Nur Bit 0 sperren (dout0)
d_out = (d.SdoRd(0x3154, 0x00) & ~reset_dout)
d.SdoWr(0x3154, 0x00, d_out)

# Ausgeben des Freigabezustandes von Port0
print "enable_Dout =", hex(d.SdoRd(0x3154, 0x00))


3158.00h LED - Benutzersteuerung aktivieren

Name | IO_DOUT_LedsEnable
Bezeichnung | LED - Benutzersteuerung aktivieren
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {0, 1}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.11
Geräte | Alle
PLC Funktion | LedsEnable(value)
Querverweis | IO_DOUT_LedsState

Beschreibung

Dieser Parameter aktiviert die Benutzersteuerung der LED-Anzeige (LED = Leuchtdiode) des Antriebsreglers.
Ist der Parameter gleich 0, sind die Standard-Funktionen der LED's aktiv (Power-, Status- und Fehleranzeige).
Wenn der Wert des Parameters ungleich 0 ist, wird der Zustand der Leuchtdioden über den Parameter IO_DOUT_LedsState bestimmt. Die Standard-Funktionen der LED's sind in dem Fall deaktiviert.

Die Parameter IO_DOUT_LedsEnable und IO_DOUT_LedsState sind nur für Antriebsregler mit LED-Anzeige relevant.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                          # NodeId = 1

d.SdoWr(0x3158, 0x00, 1)            # IO_DOUT_LedsEnable - LED - Benutzersteuerung aktivieren
d.SdoWr(0x3158, 0x01, 0)            # IO_DOUT_LedsState - LED - Zustand


3158.01h LED - Zustand

Name | IO_DOUT_LedsState
Bezeichnung | LED - Zustand
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 7]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.11
Geräte | Alle
PLC Funktion | LedsState(value)
Querverweis | IO_DOUT_LedsEnable

Beschreibung

Dieser Parameter legt den Zustand der LED-Anzeige (LED=Leuchtdiode) fest. Der Benutzer kann die Steuerung der LED's nur dann übernehmen, wenn der Parameter IO_DOUT_LedsEnable auf 1 gesetzt wurde.

Die Parameter IO_DOUT_LedsEnable und IO_DOUT_LedsState sind nur für Antriebsregler mit LED-Anzeige relevant.

Bitbelegung:
BitNr. | LED | Beschreibung
0 | Power (grün) | 0=ausgeschaltet, 1=eingeschaltet
1 | Status (gelb) | 0=ausgeschaltet, 1=eingeschaltet
2 | Fehler (rot) | 0=ausgeschaltet, 1=eingeschaltet

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                          # NodeId = 1

d.SdoWr(0x3158, 0x00, 1)            # IO_DOUT_LedsEnable - LED - Benutzersteuerung aktivieren
d.SdoWr(0x3158, 0x01, 0)            # IO_DOUT_LedsState - LED - Zustand


3200.00h Stromsollwert

Name | CURR_DesiredValue
Bezeichnung | Stromsollwert
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647] Der max. Wert ist vom Gerät abhängig (siehe technische Daten)
Defaultwert | 0
Einheit | [mA]
Betriebsart | Current
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | Curr(value)
Querverweis | -

Beschreibung

Mit dem Parameter wird der digitale Stromsollwert gesetzt.

Der Wert dieses Parameters wird nur dann als Stromsollwert übernommen, wenn der Parameter CURR_DesiredValue_Source auf den Wert 200h (CURR_DesiredValue) gesetzt wurde. Sonst hat dieser Parameter keine Wirkung.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

print "Curr =", d.SdoRd(0x3200, 0x00), "[mA]"   # Aktuelle Stromsollwert ausgeben
d.SdoWr(0x3200, 0x00, 100)                      # Stromsollwert = 100 [mA]


3204.00h Stromsollwertquelle

Name | CURR_DesiredValue_Source
Bezeichnung | Stromsollwertquelle
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {100h, 101h, 200h}
Defaultwert | 200h
Einheit | -
Betriebsart | Current
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | CurrSource(value), CurrSourcePar(), CurrSourceAin(ain_nr)
Querverweis | CURR_DesiredValue, IO_AIN0, CURR_DesiredValue_Reference

Beschreibung

Dieser Parameter legt die Quelle des Stromsollwerts fest.
Als Stromsollwertquelle kann entweder der analoge Eingang oder der Parameter 0200h (CURR_DesiredValue) eingestellt werden.

Falls als Stromsollwertquelle ein analoger Eingang benutzt wird, bestimmt der Parameter CURR_DesiredValue_Reference die Relation zwischen der Spannung am Eingang und dem Stromsollwert.

Parameterwerte:
Wert | Bedeutung
0100h | Stromsollwertquelle = analoge Eingang 0 (Parameter IO_AIN0)
0101h | Stromsollwertquelle = analoge Eingang 1 (Parameter IO_AIN1)
0200h | Stromsollwertquelle = Parameter CURR_DesiredValue

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                   # NodeId = 1

# Parameterwert ausgeben
print "CurrSource =", hex(d.SdoRd(0x3204, 0x00))

d.SdoWr(0x3204, 0x00, 0x200) # Stromsollwertquelle = CURR_DesiredValue

# Alternative Formen:
#
# d.CurrSource(0x200)          # Stromsollwertquelle = CURR_DesiredValue
# d.CurrSourcePar()            # Stromsollwertquelle = CURR_DesiredValue
# d.CurrSourceAin(0)           # Stromsollwertquelle = analoger Eingang 0


3205.00h Strombezugswert für analogen Eingang

Name | CURR_DesiredValue_Reference
Bezeichnung | Strombezugswert für analogen Eingang
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647] Der max. Wert ist vom Gerät abhängig (siehe technische Daten)
Defaultwert | 1000
Einheit | [mA]
Betriebsart | Current
Verfügbar ab | 1.56.00.00
Geräte | Alle
PLC Funktion | CurrReference(value)
Querverweis | CURR_DesiredValue_Source

Beschreibung

Wenn der Stromsollwert über ein analogen Eingang vorgegeben wird (siehe Parameter CURR_DesiredValue_Source), bestimmt dieser Parameter die Relation der Eingangsspannung am analogen Eingang zu dem Stromsollwert.

Mit anderen Worten: 10V am analogen Eingang, entsprechen dann diesem Stromsollwert

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                  # NodeId = 1

# Parameterwert ausgeben
print "CurrReference =", d.SdoRd(0x3205, 0x00)

d.SdoWr(0x3205, 0x00, 1234) # 10V am Eingang = 1234 [mA] Stromsollwert


Inhalt - Parameter 3000h (DSA) - PI CURR Regler

3210.00h | CURR_Kp | PI-Stromregler - Proportionalfaktor
3211.00h | CURR_Ki | PI-Stromregler - Integralfaktor
3219.00h | CURR_Pid_FactorNum | PI-Stromregler - Faktor Zähler
3219.01h | CURR_Pid_FactorDen | PI-Stromregler - Faktor Nenner


3210.00h PI-Stromregler - Proportionalfaktor

Name | CURR_Kp
Bezeichnung | PI-Stromregler - Proportionalfaktor
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 100
Einheit | -
Betriebsart | Current
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | CurrKp(value)
Querverweis | CURR_Ki

Beschreibung

Mit dem Parameter wird der Proportionalfaktor des PI-Stromreglers eingestellt.

Der Defaultwert wurde so gewählt, dass der Stromregler mit einem breiten Spektrum von Motoren stabil arbeitet. Dieser Defaultwert ist also nicht optimal für alle Motoren.
Falls eine Notwendigkeit besteht diesen Parameter einzustellen, kann der optimale Wert durch die Auswertung der Sprungantwort empirisch ermittelt werden.
ACHTUNG

 Bei Einstellungen dieses Parameters ist besondere Vorsicht geboten. Bei einem instabilen Stromregler (in der Regel bei zu großen PI-Parameterwerten) kann der Strom unkontrolliert ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen !

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                              # NodeId = 1

print "CurrKp =", d.SdoRd(0x3210, 0x00) # CURR_Kp - Stromregler-Kp ausgeben
print "CurrKi =", d.SdoRd(0x3211, 0x00) # CURR_Ki - Stromregler-Ki ausgeben

d.SdoWr(0x3210, 0x00, 100)              # CURR_Kp - Stromregler-Kp setzen
d.SdoWr(0x3211, 0x00, 100)              # CURR_Ki - Stromregler-Ki setzen


3211.00h PI-Stromregler - Integralfaktor

Name | CURR_Ki
Bezeichnung | PI-Stromregler - Integralfaktor
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 100
Einheit | -
Betriebsart | Current
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | CurrKi(value)
Querverweis | CURR_Kp

Beschreibung

Mit dem Parameter wird der Integralfaktor des PI-Stromreglers eingestellt.

Der Defaultwert wurde so gewählt, dass der Stromregler mit einem breiten Spektrum von Motoren stabil arbeitet. Dieser Defaultwert ist also nicht optimal für alle Motoren.
Falls eine Notwendigkeit besteht diesen Parameter einzustellen, kann der optimale Wert durch die Auswertung der Sprungantwort empirisch ermittelt werden.
ACHTUNG

 Bei Einstellungen dieses Parameters ist besondere Vorsicht geboten. Bei einem instabilen Stromregler (in der Regel bei zu großen PI-Parameterwerten) kann der Strom unkontrolliert ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen !

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                              # NodeId = 1

print "CurrKp =", d.SdoRd(0x3210, 0x00) # CURR_Kp - Stromregler-Kp ausgeben
print "CurrKi =", d.SdoRd(0x3211, 0x00) # CURR_Ki - Stromregler-Ki ausgeben

d.SdoWr(0x3210, 0x00, 100)              # CURR_Kp - Stromregler-Kp setzen
d.SdoWr(0x3211, 0x00, 100)              # CURR_Ki - Stromregler-Ki setzen


3219.00h PI-Stromregler - Faktor Zähler

Name | CURR_Pid_FactorNum
Bezeichnung | PI-Stromregler - Faktor Zähler
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {1}
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | CURR_Pid_FactorDen

Beschreibung

Mit diesen Parametern kann ein Faktor für den Stromregler eingerichtet werden. Der Faktor ist fest und läßt sich zwischen 1/1 und 1/256 einstellen. Wenn ein sehr langsamer Stromregelkreis benötigt wird kann es sinnvoll sein, diesen Parameter auf 1/256 zu setzen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print
print "Curr PID Faktor - Zähler : %d" % d.SdoRd(0x3219, 0x00)  # CURR_Pid_FactorNum
print "Curr PID Faktor - Nenner : %d" % d.SdoRd(0x3219, 0x01)  # CURR_Pid_FactorDen

d.SdoWr(0x3219, 0x01, 256)                                     # CURR_Pid_FactorDen

print
print "Curr PID Faktor - Zähler : %d" % d.SdoRd(0x3219, 0x00)  # CURR_Pid_FactorNum
print "Curr PID Faktor - Nenner : %d" % d.SdoRd(0x3219, 0x01)  # CURR_Pid_FactorDen


3219.01h PI-Stromregler - Faktor Nenner

Name | CURR_Pid_FactorDen
Bezeichnung | PI-Stromregler - Faktor Nenner
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {1, 256}
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | CURR_Pid_FactorNum

Beschreibung

Mit diesen Parametern kann ein Faktor für den Stromregler eingerichtet werden. Der Faktor ist fest und läßt sich zwischen 1/1 und 1/256 einstellen. Wenn ein sehr langsamer Stromregelkreis benötigt wird kann es sinnvoll sein, diesen Parameter auf 1/256 zu setzen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print
print "Curr PID Faktor - Zähler : %d" % d.SdoRd(0x3219, 0x00)  # CURR_Pid_FactorNum
print "Curr PID Faktor - Nenner : %d" % d.SdoRd(0x3219, 0x01)  # CURR_Pid_FactorDen

d.SdoWr(0x3219, 0x01, 256)                                     # CURR_Pid_FactorDen

print
print "Curr PID Faktor - Zähler : %d" % d.SdoRd(0x3219, 0x00)  # CURR_Pid_FactorNum
print "Curr PID Faktor - Nenner : %d" % d.SdoRd(0x3219, 0x01)  # CURR_Pid_FactorDen


Inhalt - Parameter 3000h (DSA) - Strombegrenzung

3221.00h | CURR_LimitMaxPos | Strombegrenzung - max. positiv
3223.00h | CURR_LimitMaxNeg | Strombegrenzung - max. negativ
3224.00h | CURR_DynLimitMode | Dynamische Strombegrenzung - Mode
3224.01h | CURR_DynLimitPeak | Dynamische Strombegrenzung - Spitzenstrom
3224.02h | CURR_DynLimitCont | Dynamische Strombegrenzung - Dauerstrom
3224.03h | CURR_DynLimitTime | Dynamische Strombegrenzung - Zeit
3224.12h | CURR_ActDynLimitCurrent | Dynamische Strombegrenzung I*t - aktuelle Strombegrenzung


3221.00h Strombegrenzung - max. positiv

Name | CURR_LimitMaxPos
Bezeichnung | Strombegrenzung - max. positiv
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 2147483647] Der max. Wert ist vom Gerät abhängig (siehe technische Daten)
Defaultwert | = max. Strom des Gerätes. Defaultwert ist vom Gerät abhängig (siehe technische Daten)
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | CurrLimitMaxPos(value), CurrLimitMax(value)
Querverweis | CURR_LimitMaxNeg

Beschreibung

Die Strombegrenzung begrenzt den Stromsollwertbereich des Antriebsreglers. Dieser Parameter legt die obere Stromgrenze im positiven Stromsollwertbereich fest.

Mit den Parametern CURR_LimitMaxPos und CURR_LimitMaxNeg wird der Stromsollwert (Stromreglereingangsgröße) begrenzt. Für eine korrekte Strombegrenzung ist eine stabile Arbeit des Stromreglers notwendig. Bei einem „instabilen“ Stromregler kann es vorkommen, dass trotz der gesetzten Begrenzungswerte der Motorstrom die Grenzen übersteigt.

Bild - Strombegrenzung

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Aktuelle Begrenzungswerte ausgeben
print "Curr_MaxPos =", d.SdoRd(0x3221, 0x00)  # CURR_LimitMaxPos
print "Curr_MaxNeg =", d.SdoRd(0x3223, 0x00)  # CURR_LimitMaxNeg

# Neue Begrenzungswerte setzen
d.SdoWr(0x3221, 0x00, 500)     # CURR_LimitMaxPos - max. positive Stromgrenze = 500 [mA]
d.SdoWr(0x3223, 0x00, 500)     # CURR_LimitMaxNeg - max. negative Stromgrenze = 500 [mA]


3223.00h Strombegrenzung - max. negativ

Name | CURR_LimitMaxNeg
Bezeichnung | Strombegrenzung - max. negativ
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 2147483647] Der max. Wert ist vom Gerät abhängig (siehe technische Daten)
Defaultwert | = max. Strom des Gerätes. Defaultwert ist vom Gerät abhängig (siehe technische Daten)
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | CurrLimitMaxNeg(value), CurrLimitMax(value)
Querverweis | CURR_LimitMaxPos

Beschreibung

Die Strombegrenzung begrenzt den Stromsollwertbereich des Antriebsreglers. Dieser Parameter legt die obere Stromgrenze im negativen Stromsollwertbereich fest.

Mit den Parameter CURR_LimitMaxPos und CURR_LimitMaxNeg wird der Stromsollwert (Stromreglereingangsgröße) begrenzt. Für eine korrekte Strombegrenzung ist eine stabile Arbeit des Stromreglers notwendig. Bei einem „instabilen“ Stromregler kann es vorkommen, dass trotz der gesetzten Begrenzungswerte der Motorstrom die Grenzen übersteigt.

Bild - Strombegrenzung

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Aktuelle Begrenzungswerte ausgeben
print "Curr_MaxPos =", d.SdoRd(0x3221, 0x00)  # CURR_LimitMaxPos
print "Curr_MaxNeg =", d.SdoRd(0x3223, 0x00)  # CURR_LimitMaxNeg

# Neue Begrenzungswerte setzen
d.SdoWr(0x3221, 0x00, 500)     # CURR_LimitMaxPos - max. positive Stromgrenze = 500 [mA]
d.SdoWr(0x3223, 0x00, 500)     # CURR_LimitMaxNeg - max. negative Stromgrenze = 500 [mA]


3224.00h Dynamische Strombegrenzung - Mode

Name | CURR_DynLimitMode
Bezeichnung | Dynamische Strombegrenzung - Mode
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.71
Geräte | Alle
PLC Funktion | CurrDynLimitMode(value), CurrDynLimitOn(), CurrDynLimitOff()
Querverweis | CURR_DynLimitPeak, CURR_DynLimitCont, CURR_DynLimitTime

Beschreibung

Dieser Parameter aktiviert bzw. deaktiviert die dynamische Strombegrenzung I*t.

Parameterwerte:
Wert | Beschreibung
0 | dynamische Strombegrenzung deaktiviert
1 | dynamische Strombegrenzung I*t aktiviert
Für die Funktionsbeschreibung der dynamischen Strombegrenzung siehe die Parameter CURR_DynLimitPeak, CURR_DynLimitCont und CURR_DynLimitTime.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                   # NodeId = 1

# Ausgabe der Parameter
print "Dynamische Strombegrenzung:"
print " Enabled                  =", d.SdoRd(0x3224, 0x00)         # CURR_DynLimitMode
print " Spitzenstrom             =", d.SdoRd(0x3224, 0x01), "[mA]" # CURR_DynLimitPeak
print " Dauerstrom               =", d.SdoRd(0x3224, 0x02), "[mA]" # CURR_DynLimitCont
print " Zeit                     =", d.SdoRd(0x3224, 0x03), "[ms]" # CURR_DynLimitTime
print " aktuelle Strombegrenzung =", d.SdoRd(0x3224, 0x12), "[mA]" # CURR_ActDynLimitCurrent

# Beschreiben der Parameter
d.SdoWr(0x3224, 0x00, 1)     # CURR_DynLimitMode - dyn. Strombegrenzung aktivieren
d.SdoWr(0x3224, 0x01, 1500)  # CURR_DynLimitPeak - Spitzenstrom = 1500 mA
d.SdoWr(0x3224, 0x02, 1000)  # CURR_DynLimitCont - Dauerstrom   = 1000 mA
d.SdoWr(0x3224, 0x03, 1500)  # CURR_DynLimitTime - Zeit         = 1500 ms


3224.01h Dynamische Strombegrenzung - Spitzenstrom

Name | CURR_DynLimitPeak
Bezeichnung | Dynamische Strombegrenzung - Spitzenstrom
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 2147483647] Der max. Wert ist vom Gerät abhängig (siehe technische Daten)
Defaultwert | = max. Strom des Gerätes. Defaultwert ist vom Gerät abhängig (siehe technische Daten)
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.64.00.71
Geräte | Alle
PLC Funktion | CurrDynLimitPeak(value)
Querverweis | CURR_DynLimitMode, CURR_DynLimitCont, CURR_DynLimitTime

Beschreibung

Dynamische Strombegrenzung

Die dynamische Strombegrenzung begrenzt den Stromsollwertbereich des Antriebsreglers in Abhängigkeit des aktuellen Motorstroms und der Zeit.
Dieser Parameter legt den Wert des Spitzenstroms sowohl für positive als auch für negative Drehrichtung fest.

Wie lange der Spitzenstrom fließen kann, wird mit dem Parameter CURR_DynLimitTime bestimmt. Nach dieser Zeit sinkt der Motorstrom auf den Wert von Dauerstrom (CURR_DynLimitCont) ab. Das gilt für den Fall, wenn der Motorstrom die ganze Zeit auf den Spitzenstrom (CURR_DynLimitPeak) begrenzt wurde. Liegt der Motorstrom überhalb des Dauerstroms (CURR_DynLimitCont) aber unterhalb des Spitzenstromes (CURR_DynLimitPeak), wird die Zeit aus dem Produkt von Strom und Fläche (Ixt) bestimmt. Damit der Motorstrom wieder über den Dauerstrom (CURR_DynLimitCont) steigen darf, muss der aktuelle Strom die entsprechende Zeit unterhalb des Dauerstromes (CURR_DynLimitCont) bleiben.

Erholt sich der Motor nur für die halbe Fläche von Ixt, kann er auch nur für die halbe Fläche über den Dauerstrom ansteigen.

Unabhängig davon, ob die dynamische Strombegrenzung aktiviert oder deaktiviert ist, ist die statische Strombegrenzung (CURR_LimitMaxPos, CURR_LimitMaxNeg) immer aktiv. Auf dem untenstehenden Bild wurde der Zusammenhang der beiden Strombegrenzer dargestellt.

Bild - Zusammenhang der Strombegrenzer

Dynamische Strombegrenzung Ixt

Um die dynamische Strombegrenzung Ixt zu aktivieren, muss der Parameter CURR_DynLimitMode auf 1 gesetzt werden. Defaultmässig ist die dynamische Strombegrenzung deaktiviert.

Für eine korrekte dynamische Strombegrenzung ist eine stabile Arbeit des Stromreglers notwendig. Bei einem „instabilen“ Stromregler kann es vorkommen, dass trotz der gesetzten Begrenzungswerte der Motorstrom die Grenzen übersteigt.

Bild - Dynamische Strombegrenzung

Die Fläche aus der Differenz von Spitzenstrom und Dauerstrom ∫(Ip - Ic)dt bildet also die maximal zulässige Leistung. Die aktuelle Leistung ∫(Im-Ic)dt wird mit der maximal zulässigen Leistung verglichen. Überschreitet die aktulle Leistung die maximal zulässige Leistung, wird der Strom begrenzt. Dadurch kann der Motor vor einer Überlastung geschützt werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                   # NodeId = 1

# Ausgabe der Parameter
print "Dynamische Strombegrenzung:"
print " Enabled                  =", d.SdoRd(0x3224, 0x00)         # CURR_DynLimitMode
print " Spitzenstrom             =", d.SdoRd(0x3224, 0x01), "[mA]" # CURR_DynLimitPeak
print " Dauerstrom               =", d.SdoRd(0x3224, 0x02), "[mA]" # CURR_DynLimitCont
print " Zeit                     =", d.SdoRd(0x3224, 0x03), "[ms]" # CURR_DynLimitTime
print " aktuelle Strombegrenzung =", d.SdoRd(0x3224, 0x12), "[mA]" # CURR_ActDynLimitCurrent

# Beschreiben der Parameter
d.SdoWr(0x3224, 0x00, 1)     # CURR_DynLimitMode - dyn. Strombegrenzung aktivieren
d.SdoWr(0x3224, 0x01, 1500)  # CURR_DynLimitPeak - Spitzenstrom = 1500 mA
d.SdoWr(0x3224, 0x02, 1000)  # CURR_DynLimitCont - Dauerstrom   = 1000 mA
d.SdoWr(0x3224, 0x03, 1500)  # CURR_DynLimitTime - Zeit         = 1500 ms


3224.02h Dynamische Strombegrenzung - Dauerstrom

Name | CURR_DynLimitCont
Bezeichnung | Dynamische Strombegrenzung - Dauerstrom
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 2147483647] Der max. Wert ist vom Gerät abhängig (siehe technische Daten)
Defaultwert | = max. Strom des Gerätes. Defaultwert ist vom Gerät abhängig (siehe technische Daten)
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.64.00.71
Geräte | Alle
PLC Funktion | CurrDynLimitCont(value)
Querverweis | CURR_DynLimitMode, CURR_DynLimitPeak, CURR_DynLimitTime

Beschreibung

Dynamische Strombegrenzung

Die dynamische Strombegrenzung begrenzt den Stromsollwertbereich des Antriebsreglers in Abhängigkeit des aktuellen Motorstroms und der Zeit.
Dieser Parameter legt den Wert des Dauerstroms sowohl für positive als auch für negative Drehrichtung fest.

Wie lange der Spitzenstrom fließen kann, wird mit dem Parameter CURR_DynLimitTime bestimmt. Nach dieser Zeit sinkt der Motorstrom auf den Wert von Dauerstrom (CURR_DynLimitCont) ab. Das gilt für den Fall, wenn der Motorstrom die ganze Zeit auf den Spitzenstrom (CURR_DynLimitPeak) begrenzt wurde. Liegt der Motorstrom überhalb des Dauerstroms (CURR_DynLimitCont) aber unterhalb des Spitzenstromes (CURR_DynLimitPeak), wird die Zeit aus dem Produkt von Strom und Fläche (Ixt) bestimmt. Damit der Motorstrom wieder über den Dauerstrom (CURR_DynLimitCont) steigen darf, muss der aktuelle Strom die entsprechende Zeit unterhalb des Dauerstromes (CURR_DynLimitCont) bleiben.

Erholt sich der Motor nur für die halbe Fläche von Ixt, kann er auch nur für die halbe Fläche über den Dauerstrom ansteigen.

Unabhängig davon, ob die dynamische Strombegrenzung aktiviert oder deaktiviert ist, ist die statische Strombegrenzung (CURR_LimitMaxPos, CURR_LimitMaxNeg) immer aktiv. Auf dem untenstehenden Bild wurde der Zusammenhang der beiden Strombegrenzer dargestellt.

Bild - Zusammenhang der Strombegrenzer

Dynamische Strombegrenzung Ixt

Um die dynamische Strombegrenzung Ixt zu aktivieren, muss der Parameter CURR_DynLimitMode auf 1 gesetzt werden. Defaultmässig ist die dynamische Strombegrenzung deaktiviert.

Für eine korrekte dynamische Strombegrenzung ist eine stabile Arbeit des Stromreglers notwendig. Bei einem „instabilen“ Stromregler kann es vorkommen, dass trotz der gesetzten Begrenzungswerte der Motorstrom die Grenzen übersteigt.

Bild - Dynamische Strombegrenzung

Die Fläche aus der Differenz von Spitzenstrom und Dauerstrom ∫(Ip - Ic)dt bildet also die maximal zulässige Leistung. Die aktuelle Leistung ∫(Im-Ic)dt wird mit der maximal zulässigen Leistung verglichen. Überschreitet die aktulle Leistung die maximal zulässige Leistung, wird der Strom begrenzt. Dadurch kann der Motor vor einer Überlastung geschützt werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                   # NodeId = 1

# Ausgabe der Parameter
print "Dynamische Strombegrenzung:"
print " Enabled                  =", d.SdoRd(0x3224, 0x00)         # CURR_DynLimitMode
print " Spitzenstrom             =", d.SdoRd(0x3224, 0x01), "[mA]" # CURR_DynLimitPeak
print " Dauerstrom               =", d.SdoRd(0x3224, 0x02), "[mA]" # CURR_DynLimitCont
print " Zeit                     =", d.SdoRd(0x3224, 0x03), "[ms]" # CURR_DynLimitTime
print " aktuelle Strombegrenzung =", d.SdoRd(0x3224, 0x12), "[mA]" # CURR_ActDynLimitCurrent

# Beschreiben der Parameter
d.SdoWr(0x3224, 0x00, 1)     # CURR_DynLimitMode - dyn. Strombegrenzung aktivieren
d.SdoWr(0x3224, 0x01, 1500)  # CURR_DynLimitPeak - Spitzenstrom = 1500 mA
d.SdoWr(0x3224, 0x02, 1000)  # CURR_DynLimitCont - Dauerstrom   = 1000 mA
d.SdoWr(0x3224, 0x03, 1500)  # CURR_DynLimitTime - Zeit         = 1500 ms


3224.03h Dynamische Strombegrenzung - Zeit

Name | CURR_DynLimitTime
Bezeichnung | Dynamische Strombegrenzung - Zeit
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 10000]
Defaultwert | 1000
Einheit | [ms]
Betriebsart | Alle
Verfügbar ab | 1.64.00.71
Geräte | Alle
PLC Funktion | CurrDynLimitTime(value)
Querverweis | CURR_DynLimitMode, CURR_DynLimitPeak, CURR_DynLimitCont

Beschreibung

Dynamische Strombegrenzung

Die dynamische Strombegrenzung begrenzt den Stromsollwertbereich des Antriebsreglers in Abhängigkeit des aktuellen Motorstroms und der Zeit.
Dieser Parameter legt die Zeit für den Spitzenstrom fest.

Wie lange der Spitzenstrom fließen kann, wird mit dem Parameter CURR_DynLimitTime bestimmt. Nach dieser Zeit sinkt der Motorstrom auf den Wert von Dauerstrom (CURR_DynLimitCont) ab. Das gilt für den Fall, wenn der Motorstrom die ganze Zeit auf den Spitzenstrom (CURR_DynLimitPeak) begrenzt wurde. Liegt der Motorstrom überhalb des Dauerstroms (CURR_DynLimitCont) aber unterhalb des Spitzenstromes (CURR_DynLimitPeak), wird die Zeit aus dem Produkt von Strom und Fläche (Ixt) bestimmt. Damit der Motorstrom wieder über den Dauerstrom (CURR_DynLimitCont) steigen darf, muss der aktuelle Strom die entsprechende Zeit unterhalb des Dauerstromes (CURR_DynLimitCont) bleiben.

Erholt sich der Motor nur für die halbe Fläche von Ixt, kann er auch nur für die halbe Fläche über den Dauerstrom ansteigen.

Unabhängig davon, ob die dynamische Strombegrenzung aktiviert oder deaktiviert ist, ist die statische Strombegrenzung (CURR_LimitMaxPos, CURR_LimitMaxNeg) immer aktiv. Auf dem untenstehenden Bild wurde der Zusammenhang der beiden Strombegrenzer dargestellt.

Bild - Zusammenhang der Strombegrenzer

Dynamische Strombegrenzung Ixt

Um die dynamische Strombegrenzung Ixt zu aktivieren, muss der Parameter CURR_DynLimitMode auf 1 gesetzt werden. Defaultmässig ist die dynamische Strombegrenzung deaktiviert.

Für eine korrekte dynamische Strombegrenzung ist eine stabile Arbeit des Stromreglers notwendig. Bei einem „instabilen“ Stromregler kann es vorkommen, dass trotz der gesetzten Begrenzungswerte der Motorstrom die Grenzen übersteigt.

Bild - Dynamische Strombegrenzung

Die Fläche aus der Differenz von Spitzenstrom und Dauerstrom ∫(Ip - Ic)dt bildet also die maximal zulässige Leistung. Die aktuelle Leistung ∫(Im-Ic)dt wird mit der maximal zulässigen Leistung verglichen. Überschreitet die aktulle Leistung die maximal zulässige Leistung, wird der Strom begrenzt. Dadurch kann der Motor vor einer Überlastung geschützt werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                   # NodeId = 1

# Ausgabe der Parameter
print "Dynamische Strombegrenzung:"
print " Enabled                  =", d.SdoRd(0x3224, 0x00)         # CURR_DynLimitMode
print " Spitzenstrom             =", d.SdoRd(0x3224, 0x01), "[mA]" # CURR_DynLimitPeak
print " Dauerstrom               =", d.SdoRd(0x3224, 0x02), "[mA]" # CURR_DynLimitCont
print " Zeit                     =", d.SdoRd(0x3224, 0x03), "[ms]" # CURR_DynLimitTime
print " aktuelle Strombegrenzung =", d.SdoRd(0x3224, 0x12), "[mA]" # CURR_ActDynLimitCurrent

# Beschreiben der Parameter
d.SdoWr(0x3224, 0x00, 1)     # CURR_DynLimitMode - dyn. Strombegrenzung aktivieren
d.SdoWr(0x3224, 0x01, 1500)  # CURR_DynLimitPeak - Spitzenstrom = 1500 mA
d.SdoWr(0x3224, 0x02, 1000)  # CURR_DynLimitCont - Dauerstrom   = 1000 mA
d.SdoWr(0x3224, 0x03, 1500)  # CURR_DynLimitTime - Zeit         = 1500 ms


3224.12h Dynamische Strombegrenzung I*t - aktuelle Strombegrenzung

Name | CURR_ActDynLimitCurrent
Bezeichnung | Dynamische Strombegrenzung I*t - aktuelle Strombegrenzung
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 2147483647]
Defaultwert | -
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.85.00.79
Geräte | Alle
PLC Funktion | -
Querverweis | CURR_DynLimitMode, CURR_DynLimitPeak, CURR_DynLimitCont, CURR_DynLimitTime

Beschreibung

Dieser Parameter liefert das aktuelle Limit der dynamischen Strombegrenzung zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                   # NodeId = 1

# Ausgabe der Parameter
print "Dynamische Strombegrenzung:"
print " Enabled                  =", d.SdoRd(0x3224, 0x00)         # CURR_DynLimitMode
print " Spitzenstrom             =", d.SdoRd(0x3224, 0x01), "[mA]" # CURR_DynLimitPeak
print " Dauerstrom               =", d.SdoRd(0x3224, 0x02), "[mA]" # CURR_DynLimitCont
print " Zeit                     =", d.SdoRd(0x3224, 0x03), "[ms]" # CURR_DynLimitTime
print " aktuelle Strombegrenzung =", d.SdoRd(0x3224, 0x12), "[mA]" # CURR_ActDynLimitCurrent

# Beschreiben der Parameter
d.SdoWr(0x3224, 0x00, 1)     # CURR_DynLimitMode - dyn. Strombegrenzung aktivieren
d.SdoWr(0x3224, 0x01, 1500)  # CURR_DynLimitPeak - Spitzenstrom = 1500 mA
d.SdoWr(0x3224, 0x02, 1000)  # CURR_DynLimitCont - Dauerstrom   = 1000 mA
d.SdoWr(0x3224, 0x03, 1500)  # CURR_DynLimitTime - Zeit         = 1500 ms


3240.00h Strombeschleunigung - delta I

Name | CURR_Acc_dI
Bezeichnung | Strombeschleunigung - delta I
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 100000] Der max. Wert ist vom Gerät abhängig (siehe technische Daten)
Defaultwert | 1000
Einheit | [mA]
Betriebsart | Current
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | CurrAcc_dI(di_mA), CurrAcc([di_mA, dt_ms])
Querverweis | CURR_Acc_dT, CURR_Dec_dI, CURR_Dec_dT, CURR_Dec_QuickStop_dI, CURR_Dec_QuickStop_dT, CURR_RampType

Beschreibung

Die Strombeschleunigung gibt die Steigung der Hochfahrrampe an.
Sie wird als Quotient aus den Parametern CURR_Acc_dI (delta Strom) und CURR_Acc_dT (delta Zeit) gebildet.

acc = CURR_Acc_dI / CURR_Acc_dT [mA / ms]

Der Parameter CURR_Acc_dI gibt den Zähler dieses Quotienten an.

Dieser Parameter ist nur im Strommodus und bei CURR_RampType ungleich 0 aktiv.

Bild - Stromprofil

Beispiel

from mc.dsa import *

d = Dsa(1)                                   # NodeId = 1

# Ausgeben den Parameter
print "Stromprofil:"
print "   Type   =", d.SdoRd(0x324C, 0x00)          # CURR_RampType
print "   Acc_dI =", d.SdoRd(0x3240, 0x00), "[mA]"  # CURR_Acc_dI
print "   Acc_dT =", d.SdoRd(0x3241, 0x00), "[ms]"  # CURR_Acc_dT
print "   Dec_dI =", d.SdoRd(0x3242, 0x00), "[mA]"  # CURR_Dec_dI
print "   Dec_dT =", d.SdoRd(0x3243, 0x00), "[ms]"  # CURR_Dec_dT

# Rampe Einschalten
d.SdoWr(0x324C, 0x00, 1)      # CURR_RampType

# Beschleunigung = 1000[mA] / 2000[ms]
d.SdoWr(0x3240, 0x00, 1000)   # CURR_Acc_dI - dI = 1000 mA
d.SdoWr(0x3241, 0x00, 2000)   # CURR_Acc_dT - dT = 2000 ms

# Verzögerung = 1000[mA] / 500[ms]
d.SdoWr(0x3242, 0x00, 1000)   # CURR_Dec_dI - dI = 1000 mA
d.SdoWr(0x3243, 0x00, 500)    # CURR_Dec_dT - dT =  500 ms


3241.00h Strombeschleunigung - delta T

Name | CURR_Acc_dT
Bezeichnung | Strombeschleunigung - delta T
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 1000
Einheit | [ms]
Betriebsart | Current
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | CurrAcc_dT(dt_ms), CurrAcc([di_mA, dt_ms])
Querverweis | CURR_Acc_dI, CURR_Dec_dI, CURR_Dec_dT, CURR_Dec_QuickStop_dI, CURR_Dec_QuickStop_dT, CURR_RampType

Beschreibung

Die Strombeschleunigung gibt die Steigung der Hochfahrrampe an.
Sie wird als Quotient aus den Parametern CURR_Acc_dI (delta Strom) und CURR_Acc_dT (delta Zeit) gebildet.

acc = CURR_Acc_dI / CURR_Acc_dT [mA / ms]

Der Parameter CURR_Acc_dT gibt den Nenner dieses Quotienten an.

Dieser Parameter ist nur im Strommodus und bei CURR_RampType ungleich 0 aktiv.

Bild - Stromprofil

Beispiel

from mc.dsa import *

d = Dsa(1)                                   # NodeId = 1

# Ausgeben den Parameter
print "Stromprofil:"
print "   Type   =", d.SdoRd(0x324C, 0x00)          # CURR_RampType
print "   Acc_dI =", d.SdoRd(0x3240, 0x00), "[mA]"  # CURR_Acc_dI
print "   Acc_dT =", d.SdoRd(0x3241, 0x00), "[ms]"  # CURR_Acc_dT
print "   Dec_dI =", d.SdoRd(0x3242, 0x00), "[mA]"  # CURR_Dec_dI
print "   Dec_dT =", d.SdoRd(0x3243, 0x00), "[ms]"  # CURR_Dec_dT

# Rampe Einschalten
d.SdoWr(0x324C, 0x00, 1)      # CURR_RampType

# Beschleunigung = 1000[mA] / 2000[ms]
d.SdoWr(0x3240, 0x00, 1000)   # CURR_Acc_dI - dI = 1000 mA
d.SdoWr(0x3241, 0x00, 2000)   # CURR_Acc_dT - dT = 2000 ms

# Verzögerung = 1000[mA] / 500[ms]
d.SdoWr(0x3242, 0x00, 1000)   # CURR_Dec_dI - dI = 1000 mA
d.SdoWr(0x3243, 0x00, 500)    # CURR_Dec_dT - dT =  500 ms


3242.00h Stromverzögerung - delta I

Name | CURR_Dec_dI
Bezeichnung | Stromverzögerung - delta I
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 100000] Der max. Wert ist vom Gerät abhängig (siehe technische Daten)
Defaultwert | 1000
Einheit | [mA]
Betriebsart | Current
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | CurrDec_dI(di_mA), CurrDec([di_mA, dt_ms])
Querverweis | CURR_Acc_dI, CURR_Acc_dT, CURR_Dec_dT, CURR_Dec_QuickStop_dI, CURR_Dec_QuickStop_dT, CURR_RampType

Beschreibung

Die Stromverzögerung gibt die Steigung der Bremsrampe an.
Sie wird als Quotient aus den Parametern CURR_Dec_dI (delta Strom) und CURR_Dec_dT (delta Zeit) gebildet.

acc = CURR_Dec_dI / CURR_Dec_dT [mA / ms]

Der Parameter CURR_Dec_dI gibt den Zähler dieses Quotienten an.

Dieser Parameter ist nur im Strommodus und bei CURR_RampType ungleich 0 aktiv.

Bild - Stromprofil

Beispiel

from mc.dsa import *

d = Dsa(1)                                   # NodeId = 1

# Ausgeben den Parameter
print "Stromprofil:"
print "   Type   =", d.SdoRd(0x324C, 0x00)          # CURR_RampType
print "   Acc_dI =", d.SdoRd(0x3240, 0x00), "[mA]"  # CURR_Acc_dI
print "   Acc_dT =", d.SdoRd(0x3241, 0x00), "[ms]"  # CURR_Acc_dT
print "   Dec_dI =", d.SdoRd(0x3242, 0x00), "[mA]"  # CURR_Dec_dI
print "   Dec_dT =", d.SdoRd(0x3243, 0x00), "[ms]"  # CURR_Dec_dT

# Rampe Einschalten
d.SdoWr(0x324C, 0x00, 1)      # CURR_RampType

# Beschleunigung = 1000[mA] / 2000[ms]
d.SdoWr(0x3240, 0x00, 1000)   # CURR_Acc_dI - dI = 1000 mA
d.SdoWr(0x3241, 0x00, 2000)   # CURR_Acc_dT - dT = 2000 ms

# Verzögerung = 1000[mA] / 500[ms]
d.SdoWr(0x3242, 0x00, 1000)   # CURR_Dec_dI - dI = 1000 mA
d.SdoWr(0x3243, 0x00, 500)    # CURR_Dec_dT - dT =  500 ms


3243.00h Stromverzögerung - delta T

Name | CURR_Dec_dT
Bezeichnung | Stromverzögerung - delta T
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 1000
Einheit | [ms]
Betriebsart | Current
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | CurrDec_dT(dt_ms), CurrDec([di_mA, dt_ms])
Querverweis | CURR_Acc_dI, CURR_Acc_dT, CURR_Dec_dI, CURR_Dec_QuickStop_dI, CURR_Dec_QuickStop_dT, CURR_RampType

Beschreibung

Die Stromverzögerung gibt die Steigung der Bremsrampe an.
Sie wird als Quotient aus den Parametern CURR_Dec_dI (delta Strom) und CURR_Dec_dT (delta Zeit) gebildet.

acc = CURR_Dec_dI / CURR_Dec_dT [mA / ms]

Der Parameter CURR_Dec_dT gibt den Nenner dieses Quotienten an.

Dieser Parameter ist nur im Strommodus und bei CURR_RampType ungleich 0 aktiv.

Bild - Stromprofil

Beispiel

from mc.dsa import *

d = Dsa(1)                                   # NodeId = 1

# Ausgeben den Parameter
print "Stromprofil:"
print "   Type   =", d.SdoRd(0x324C, 0x00)          # CURR_RampType
print "   Acc_dI =", d.SdoRd(0x3240, 0x00), "[mA]"  # CURR_Acc_dI
print "   Acc_dT =", d.SdoRd(0x3241, 0x00), "[ms]"  # CURR_Acc_dT
print "   Dec_dI =", d.SdoRd(0x3242, 0x00), "[mA]"  # CURR_Dec_dI
print "   Dec_dT =", d.SdoRd(0x3243, 0x00), "[ms]"  # CURR_Dec_dT

# Rampe Einschalten
d.SdoWr(0x324C, 0x00, 1)      # CURR_RampType

# Beschleunigung = 1000[mA] / 2000[ms]
d.SdoWr(0x3240, 0x00, 1000)   # CURR_Acc_dI - dI = 1000 mA
d.SdoWr(0x3241, 0x00, 2000)   # CURR_Acc_dT - dT = 2000 ms

# Verzögerung = 1000[mA] / 500[ms]
d.SdoWr(0x3242, 0x00, 1000)   # CURR_Dec_dI - dI = 1000 mA
d.SdoWr(0x3243, 0x00, 500)    # CURR_Dec_dT - dT =  500 ms


3244.00h Stromschnellhaltverzögerung - delta I

Name | CURR_Dec_QuickStop_dI
Bezeichnung | Stromschnellhaltverzögerung - delta I
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 100000] Der max. Wert ist vom Gerät abhängig (siehe technische Daten)
Defaultwert | 1000
Einheit | [mA]
Betriebsart | Current
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | CurrDecQuickStop_dI(di_mA), CurrDecQuickStop([di_mA, dt_ms])
Querverweis | CURR_Acc_dI, CURR_Acc_dT, CURR_Dec_dI, CURR_Dec_dT, CURR_Dec_QuickStop_dT, CURR_RampType

Beschreibung

Die Stromschnellhaltverzögerung gibt die Steigung der Schnellhaltrampe an.
Sie wird als Quotient aus den Parametern CURR_Dec_QuickStop_dI (delta Strom) und CURR_Dec_QuickStop_dT (delta Zeit) gebildet.

acc = CURR_Dec_QuickStop_dI / CURR_Dec_QuickStop_dT [mA / ms]

Der Parameter CURR_Dec_QuickStop_dI gibt den Zähler dieses Quotienten an.

Dieser Parameter ist nur im Strommodus und bei CURR_RampType ungleich 0 aktiv.

Folgende Ereignisse führen zu einem Stopp mit Schnellhaltrampe:
  • Kommando Dev_Cmd = CMD_QuickStop
  • Endschalter (falls definiert) wurde aktiviert. Siehe DEV_DinLimitPos, DEV_DinLimitNeg
Bild - Stromschnellhalt

Falls die Stromverzögerung (CURR_Dec_dI / CURR_Dec_dT) "schneller" als Stromschnellhaltverzögerung ist, wird die Stromverzögerung für den Bremsvorgang genommen. Dieser Fall wurde auf dem unterstehendem Bild dargestellt.

Bild - Schnellhalt2

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Ausgeben der Parameter
print "Stromschnellhalt:"
print "   dI =", d.SdoRd(0x3244, 0x00), "[mA]" # CURR_Dec_QuickStop_dI
print "   dT =", d.SdoRd(0x3245, 0x00), "[ms]" # CURR_Dec_QuickStop_dT

# Beschleunigung = 1000[mA] / 200[ms]
d.SdoWr(0x3244, 0x00, 1000)   # CURR_Dec_QuickStop_dI - dI = 1000 mA
d.SdoWr(0x3245, 0x00, 200)    # CURR_Dec_QuickStop_dT - dT =  200 ms


3245.00h Stromschnellhaltverzögerung - delta T

Name | CURR_Dec_QuickStop_dT
Bezeichnung | Stromschnellhaltverzögerung - delta T
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 100
Einheit | [ms]
Betriebsart | Current
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | CurrDecQuickStop_dT(dt_ms), CurrDecQuickStop([di_mA, dt_ms])
Querverweis | CURR_Acc_dI, CURR_Acc_dT, CURR_Dec_dI, CURR_Dec_dT, CURR_Dec_QuickStop_dI, CURR_RampType

Beschreibung

Die Stromschnellhaltverzögerung gibt die Steigung der Schnellhaltrampe an.
Sie wird als Quotient aus den Parametern CURR_Dec_QuickStop_dI (delta Strom) und CURR_Dec_QuickStop_dT (delta Zeit) gebildet.

acc = CURR_Dec_QuickStop_dI / CURR_Dec_QuickStop_dT [mA / ms]

Der Parameter CURR_Dec_QuickStop_dT gibt den Nenner dieses Quotienten an.

Dieser Parameter ist nur im Strommodus und bei CURR_RampType ungleich 0 aktiv.

Folgende Ereignisse führen zu einem Stopp mit Schnellhaltrampe:
  • Kommando Dev_Cmd = CMD_QuickStop
  • Endschalter (falls definiert) wurde aktiviert. Siehe DEV_DinLimitPos, DEV_DinLimitNeg
Bild - Stromschnellhalt

Falls die Stromverzögerung (CURR_Dec_dI / CURR_Dec_dT) "schneller" als Stromschnellhaltverzögerung ist, wird die Stromverzögerung für den Bremsvorgang genommen. Dieser Fall wurde auf dem unterstehendem Bild dargestellt.

Bild - Schnellhalt2

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

# Ausgeben der Parameter
print "Stromschnellhalt:"
print "   dI =", d.SdoRd(0x3244, 0x00), "[mA]" # CURR_Dec_QuickStop_dI
print "   dT =", d.SdoRd(0x3245, 0x00), "[ms]" # CURR_Dec_QuickStop_dT

# Beschleunigung = 1000[mA] / 200[ms]
d.SdoWr(0x3244, 0x00, 1000)   # CURR_Dec_QuickStop_dI - dI = 1000 mA
d.SdoWr(0x3245, 0x00, 200)    # CURR_Dec_QuickStop_dT - dT =  200 ms


324C.00h Stromrampengenerator - Rampentyp

Name | CURR_RampType
Bezeichnung | Stromrampengenerator - Rampentyp
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1}
Defaultwert | 0
Einheit | -
Betriebsart | Current
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | CurrRampType(value), CurrRampEnable(), CurrRampDisable()
Querverweis | CURR_Acc_dI, CURR_Acc_dT, CURR_Dec_dI, CURR_Dec_dT, CURR_Dec_QuickStop_dI, CURR_Dec_QuickStop_dT, CURR_RampType

Beschreibung

Dieser Parameter legt den Rampentyp des Stromprofils fest

Parameterwerte:
Wert | Beschreibung
0 | keine Rampe - schnellstmögliche Hochlauf- bzw. Bremsrampe
1 | Trapez - Die Steigungen der Rampe werden durch den Parameter CURR_Acc_dI, CURR_Acc_dT, CURR_Dec_dI und CURR_Dec_dT bestimmt
Für die Funktionsbeschreibung der Stromrampen siehe Parameter: CURR_Acc_dI, CURR_Acc_dT, CURR_Dec_dI, CURR_Dec_dT, CURR_Dec_QuickStop_dI, CURR_Dec_QuickStop_dT.

Beispiel

from mc.dsa import *

d = Dsa(1)                                   # NodeId = 1

# Ausgeben den Parameter
print "Stromprofil:"
print "   Type   =", d.SdoRd(0x324C, 0x00)          # CURR_RampType
print "   Acc_dI =", d.SdoRd(0x3240, 0x00), "[mA]"  # CURR_Acc_dI
print "   Acc_dT =", d.SdoRd(0x3241, 0x00), "[ms]"  # CURR_Acc_dT
print "   Dec_dI =", d.SdoRd(0x3242, 0x00), "[mA]"  # CURR_Dec_dI
print "   Dec_dT =", d.SdoRd(0x3243, 0x00), "[ms]"  # CURR_Dec_dT

# Rampe Einschalten
d.SdoWr(0x324C, 0x00, 1)      # CURR_RampType

# Beschleunigung = 1000[mA] / 2000[ms]
d.SdoWr(0x3240, 0x00, 1000)   # CURR_Acc_dI - dI = 1000 mA
d.SdoWr(0x3241, 0x00, 2000)   # CURR_Acc_dT - dT = 2000 ms

# Verzögerung = 1000[mA] / 500[ms]
d.SdoWr(0x3242, 0x00, 1000)   # CURR_Dec_dI - dI = 1000 mA
d.SdoWr(0x3243, 0x00, 500)    # CURR_Dec_dT - dT =  500 ms


324D.00h Stromrampengenerator - Zustand

Name | CURR_RampState
Bezeichnung | Stromrampengenerator - Zustand
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | -
Einheit | -
Betriebsart | Velocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | CurrRampState()
Querverweis | CURR_RampType

Beschreibung

Mit dem Parameter kann der aktuelle Zustand des Stromrampengenerators abgefragt werden.

Parameterwerte:

Wert | Bedeutung
Bit [2..0] = 1 | ACC - Beschleunigung
Bit [2..0] = 2 | CONST_CURR - Der Stromwert aus dem Rampengenerator ist gleich dem Stromsollwert und ungleich Null
Bit [2..0] = 4 | DEC - Verzögerung
Bit [3..6] | Reserviert (unbestimmter Wert)
Bit 7 | DIR_NEG - Negative Drehrichtung

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                       # NodeId = 1

# Endstufe Aktivieren und in Strommodus gehen
d.SdoWr(0x3004, 0x00, 0)                         # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 2)                         # DEV_Mode - Strommodus

# Beschleunigung = 500[mA] / 5000[ms]
d.SdoWr(0x3240, 0x00, 500)                       # CURR_Acc_dI - dI =  500 mA
d.SdoWr(0x3241, 0x00, 5000)                      # CURR_Acc_dT - dT = 5000 ms

# Verzögerung    = 500[mA] / 5000[ms]
d.SdoWr(0x3242, 0x00, 500)                       # CURR_Dec_dI - dI =  500 mA
d.SdoWr(0x3243, 0x00, 5000)                      # CURR_Dec_dT - dT = 5000 ms

# Rampengenerator einschalten
d.SdoWr(0x324C, 0x00, 1)                         # CURR_RampType

d.SdoWr(0x3200, 0x00, 0)                         # CURR_DesiredValue - Stromsollwert = 0
d.SdoWr(0x3004, 0x00, 1)                         # DEV_Enable - Endstufe freigeben

# letzter Rampenzustand
LastState = -1

# Systemzeit aufnehmen
Timestamp = (time.clock() * 1000.0)

while 1:
   act_state = d.SdoRd(0x324D, 0x00)             # CURR_RampState - Rampenzustand abfragen

   # nach 10 sekunden
   if ((time.clock()*1000.0)-Timestamp) > 10000 :
      d.SdoWr(0x3200, 0x00, 500)                 # CURR_DesiredValue - Stromsollwert = 500

   # nach 20 sekunden
   if ((time.clock()*1000.0)-Timestamp) > 20000 :
      d.SdoWr(0x3200, 0x00, 0)                   # CURR_DesiredValue - Stromsollwert = 0
      Timestamp = (time.clock() * 1000.0)        # neue Systemzeit aufnehmen

   # nur bei Änderungen
   if LastState != act_state:
      LastState = act_state

      if   act_state == 0x00: print "Stillstand"
      elif act_state == 0x01: print "Beschleunigung  , positiv"
      elif act_state == 0x02: print "Konstantes Strom, positiv"
      elif act_state == 0x04: print "Verzögerung     , positiv"
      elif act_state == 0x81: print "Beschleunigung  , negativ"
      elif act_state == 0x82: print "Konstantes Strom, negativ"
      elif act_state == 0x84: print "Verzögerung     , negativ"

   time.sleep(0.1)                               # 100 ms warten


3250.00h Stromregler - Rückführung

Name | CURR_Feedback
Bezeichnung | Stromregler - Rückführung
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {0h, 100h, 113h}
Defaultwert | 0h
Einheit | -
Betriebsart | Current
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | IO_AIN0, IO_AIN_Current_Im

Beschreibung

Mit dem Parameter kann die Quelle für die Rückführung der Stromreglers bestimmt werden.

Die Rückführung über den analogen Eingang kann z.B. für eine externe Kraftreglung verwendet werden. In so einer Applikation wird der Stromregler zu einem Kraftregler.

Bemerkung:
  • Dieser Parameter kann nur im gesperrten Betriebszustand (DEV_Enable = 0) geändert werden. Sonst werden die Änderungen des Parameters nicht angenommen, bzw. haben keine Wirkung.

Beispiel für die Stromrückführung

Parameterwerte:
Wert | Bedeutung
0 | Automatik - Rückführung vom IO_AIN_CURRENT_Im (aktueller Motorstrom)
100h | Rückführung vom IO_AIN0 (analoger Eingang0)
113h | Rückführung vom IO_AIN_CURRENT_Im (aktueller Motorstrom)
ACHTUNG

 Dieser Parameter wurde für spezielle Applikationen vorgesehen. Bei Anwendungen mit Motoren darf dieser Parameter nicht verwendet werden !
Bei geänderter Rückführung kann der Motorstrom unkontrolliert ansteigen.
Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen !

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "Stromrückführung =", hex(d.SdoRd(0x3250, 0x00))

d.SdoRd(0x3250, 0x00, 0)   # Motorstrom


3250.03h Stromregler - Rückführungsbezugswert

Name | CURR_Feedback_Reference
Bezeichnung | Stromregler - Rückführungsbezugswert
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647] Der max. Wert ist vom Gerät abhängig (siehe technische Daten)
Defaultwert | 1000
Einheit | [mA]
Betriebsart | Current
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | CURR_Feedback

Beschreibung

Dieser Parameter bestimmt den Bezugswert für die Stromrückführung über den analogen Eingang (siehe CURR_Feedback).
Den Wert entspricht einem Sollwert, welcher einer Spannung von 10 [V] am anlogen Eingang entspricht.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "Stromrückführung =", hex(d.SdoRd(0x3250, 0x00))   # CURR_Feedback
print "Bezugswert       =", d.SdoRd(0x3250, 0x03)        # CURR_Feedback_Reference

d.SdoRd(0x3250, 0x00, 0)                                 # CURR_Feedback - Motorstrom
d.SdoRd(0x3250, 0x03, 1000)                              # CURR_Feedback_Reference - 10 V = 1000 mA


3260.00h Aktueller Stromsollwert

Name | CURR_ActualTargetCurrent
Bezeichnung | Aktueller Stromsollwert
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.71.00.04
Geräte | Alle
PLC Funktion | ActTrgCurr(), TrgCurr()
Querverweis | CURR_DesiredValue, CURR_ActualCommandCurrent, CURR_ActualCurrent, CURR_ActualFollowingError

Beschreibung

Dieser Parameter liefert den Wert vom aktuellen Stromsollwert. Dieser Wert entspricht dem Eingangswert des Stromrampengenerators.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "Akt. Motorstromsollwert = ", d.SdoRd(0x3260, 0x00)


3261.00h Aktueller Kommandostrom

Name | CURR_ActualCommandCurrent
Bezeichnung | Aktueller Kommandostrom
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.71.00.04
Geräte | Alle
PLC Funktion | ActCmdCurr(), CmdCurr()
Querverweis | CURR_DesiredValue, CURR_ActualTargetCurrent, CURR_ActualCurrent, CURR_ActualFollowingError

Beschreibung

Dieser Parameter liefert den Wert vom aktuellen Kommandostrom. Dieser Wert entspricht dem Ausgangswert des Rampengenerators bzw. dem Eingangswert des Stromreglers.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "Kommandostrom = ", d.SdoRd(0x3261, 0x00)


3262.00h Aktueller Motorstrom

Name | CURR_ActualCurrent
Bezeichnung | Aktueller Motorstrom
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ActCurr()
Querverweis | CURR_DesiredValue, CURR_ActualTargetCurrent, CURR_ActualCommandCurrent, CURR_ActualFollowingError

Beschreibung

Mit dem Parameter kann der aktuelle Stromistwert (aktueller Motorstrom) abgefragt werden.

Der Wert entspricht 1:1 dem Istwert, welcher für die Stromreglung verwendet wird. Dieser Wert ist nicht gefiltert, d.h. die zurückgegebene Werte können variieren (Rauschen), obwohl ein konstanter mittlerer Motorstrom fließt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

print "Akt. Motorstrom = ", d.SdoRd(0x3262, 0x00)


3262.01h Aktueller gefilterter Motorstrom

Name | CURR_ActualAvgCurrent
Bezeichnung | Aktueller gefilterter Motorstrom
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.85.00.73
Geräte | Alle
PLC Funktion | ActAvgCurr()
Querverweis | CURR_ActualCurrent, CURR_ActAvgCurrFilterLevel

Beschreibung

Mit dem Parameter kann der aktuelle gefilterte Stromistwert (aktueller Motorstrom) abgefragt werden.

Wie stark der Wert gefiltert wird, kann mit dem Parameter CURR_ActAvgCurrFilterLevel eingestellt werden.
Dieser Wert wird alle 2ms aktualisiert.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

im = d.SdoRd(0x3262, 0x01)                # aktueller Motorstrom
print "Akt. gefilterter Motorstrom = ", im


3262.04h Maximaler positiver Motorstrom

Name | CURR_ActualPosMaxCurr
Bezeichnung | Maximaler positiver Motorstrom
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.89.00.D1
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

In diesem Parameter wird der maximale gemessene Strom in positiver Richtung abgelegt. Dieser Wert wird nur im flüchtigen Speicher abgelegt und ist bei einem Neustart des Reglers nicht mehr vorhanden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print
print "Vor Fahrbewegung:"
print "Max positiver Strom: %d mA" % d.SdoRd(0x3262, 0x04)  # CURR_ActualPosMaxCurr
print "Max negativer Strom: %d mA" % d.SdoRd(0x3262, 0x05)  # CURR_ActualNegMaxCurr
mc.Delay(1000)

d.SdoWr(0x3000, 0x10, 3000)                                 # DEV_CmdData0
d.SdoWr(0x3000, 0x11, 32000)                                # DEV_CmdData1
d.SdoWr(0x3004, 0x00, 1)                                    # DEV_Enable
d.SdoWr(0x3000, 0x02, 0x34)                                 # DEV_Cmd2

mc.Delay(2500)
print
print "Nach Fahrbewegung:"
print "Max positiver Strom: %d mA" % d.SdoRd(0x3262, 0x04)  # CURR_ActualPosMaxCurr
print "Max negativer Strom: %d mA" % d.SdoRd(0x3262, 0x05)  # CURR_ActualNegMaxCurr


3262.05h Maximaler negativer Motorstrom

Name | CURR_ActualNegMaxCurr
Bezeichnung | Maximaler negativer Motorstrom
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.89.00.D1
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

In diesem Parameter wird der maximale gemessene Strom in negativer Richtung abgelegt. Dieser Wert wird nur im flüchtigen Speicher abgelegt und ist bei einem Neustart des Reglers nicht mehr vorhanden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print
print "Vor Fahrbewegung:"
print "Max positiver Strom: %d mA" % d.SdoRd(0x3262, 0x04)  # CURR_ActualPosMaxCurr
print "Max negativer Strom: %d mA" % d.SdoRd(0x3262, 0x05)  # CURR_ActualNegMaxCurr
mc.Delay(1000)

d.SdoWr(0x3000, 0x10, 3000)                                 # DEV_CmdData0
d.SdoWr(0x3000, 0x11, 32000)                                # DEV_CmdData1
d.SdoWr(0x3004, 0x00, 1)                                    # DEV_Enable
d.SdoWr(0x3000, 0x02, 0x34)                                 # DEV_Cmd2

mc.Delay(2500)
print
print "Nach Fahrbewegung:"
print "Max positiver Strom: %d mA" % d.SdoRd(0x3262, 0x04)  # CURR_ActualPosMaxCurr
print "Max negativer Strom: %d mA" % d.SdoRd(0x3262, 0x05)  # CURR_ActualNegMaxCurr


3263.00h Aktueller Stromfehler

Name | CURR_ActualFollowingError
Bezeichnung | Aktueller Stromfehler
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.71.00.04
Geräte | Alle
PLC Funktion | ActCurrFollowingError(), CurrFollowingError()
Querverweis | CURR_DesiredValue, CURR_ActualTargetCurrent, CURR_ActualCommandCurrent, CURR_ActualCurrent

Beschreibung

Dieser Parameter liefert den Wert der aktuellen Stromabweichung. Dieser Wert entspricht der Differenz zwischen dem Kommandostrom und dem Stromistwert.

CURR_ActualFollowingError = CURR_ActualCommandCurrent - CURR_ActualCurrent

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "Stromfehler = ", d.SdoRd(0x3263, 0x00)


32A0.00h Stromregler - Abtastrate

Name | CURR_SampleTime
Bezeichnung | Stromregler - Abtastrate
Datentyp | uint16
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | [us]
Betriebsart | Alle
Verfügbar ab | 1.64.00.41
Geräte | Alle
PLC Funktion | CurrSampleTime()
Querverweis | -

Beschreibung

Mit diesem Parameter kann die Abtastrate des Stromreglers abgefragt werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "Abtastrate =", d.SdoRd(0x32A0, 0x00)


32A0.08h Stromregler - Abtastzeitpunkt Korrektur

Name | CURR_SamplePoint
Bezeichnung | Stromregler - Abtastzeitpunkt Korrektur
Datentyp | int8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-128 .. 127]
Defaultwert | 0
Einheit | [100ns]
Betriebsart | Alle
Verfügbar ab | 1.85.00.73
Geräte | Alle
PLC Funktion | -
Querverweis | CURR_SampleTime, CURR_SampleRlCorr

Beschreibung

Mit diesem Parameter kann eine Korrektur im Abtastzeitpunkt der Strommessung eingefügt werden. Dies kann zu einer genaueren Regelung des Motorstroms führen.

Der Wert für die Korrektur muss empirisch ermittelt werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "Abtastzeitpunkt =", d.SdoRd(0x32A0, 0x08)


32A0.09h Stromregler - R/L Korrektur

Name | CURR_SampleRlCorr
Bezeichnung | Stromregler - R/L Korrektur
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 2000]
Defaultwert | 0
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.85.00.73
Geräte | Alle
PLC Funktion | -
Querverweis | CURR_SampleTime, CURR_SamplePoint

Beschreibung

Mit diesem Parameter kann eine R/L-Korrektur in der Strommessung eingefügt werden. Dies kann zu einer genaueren Regelung des Motorstroms führen.

Der Wert für die Korrektur muss empirisch ermittelt werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "Abtastkorrektur =", d.SdoRd(0x32A0, 0x09)


32A0.10h Filterstufe für Aktueller gefilterter Motorstrom

Name | CURR_ActAvgCurrFilterLevel
Bezeichnung | Filterstufe für Aktueller gefilterter Motorstrom
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 8]
Defaultwert | 5
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.73
Geräte | Alle
PLC Funktion | AvgCurrFilterLevel(value)
Querverweis | CURR_ActualAvgCurrent

Beschreibung

Dieser Parameter bestimmt, wie stark der Parameter CURR_ActualAvgCurrent (aktueller gefilterter Stromistwert) gefiltert wird.
Je größer dieser Wert ist desto stärker wird der Parameter CURR_ActualAvgCurrent gefiltert.

Die Zeitkonstante des Filters kann aus der untenstehender Tabelle entnomen werden.

Parameterwerte:
Parameterwert | T = Zeikonstante (Zeit in welcher die Sprungantwort des Filters 63.2% des max. Wertes erreicht) | T95 = 3 * T (Zeit in welcher die Sprungantwort des Filters 95% des max. Wertes erreicht)
0 | nicht gefiltert | nicht gefiltert
1 | 4 ms | 12 ms
2 | 8 ms | 23 ms
3 | 16 ms | 47 ms
4 | 31 ms | 94 ms
5 | 63 ms | 188 ms
6 | 125 ms | 375 ms
7 | 250 ms | 750 ms
8 | 500 ms | 1500 ms
Bemerkung: Die angegebene Zeiten wurden Ganzzahlig ab- bzw. aufgerundet.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Ausgeben des Parameters
print "aktuelle Filterstufe =", d.SdoRd(0x32A0, 0x10)

# Setzen des Parameters
d.SdoWr(0x32A0, 0x10, 6)


3300.00h Drehzahlsollwert

Name | VEL_DesiredValue
Bezeichnung | Drehzahlsollwert
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | Vel(value)
Querverweis | VEL_DesiredValue_Source

Beschreibung

Mit diesem Parameter wird der digitale Drehzahlsollwert gesetzt.

Der Wert dieses Parameters wird nur dann als Drehzahlsollwert übernommen, wenn der Parameter VEL_DesiredValue_Source auf den Wert von 0300h (VEL_DesiredValue) gesetzt wurde. Sonst hat dieser Parameter keine Wirkung.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                     # NodeId = 1

print "Drehzahl =", d.SdoRd(0x3300, 0x00)      # Abfrage
d.SdoWr(0x3300, 0x00, 1000)                    # neue Drehzahl = 1000[U/min]


3302.00h Drehzahlskalierungsfaktor - Zähler

Name | VEL_ScaleNum
Bezeichnung | Drehzahlskalierungsfaktor - Zähler
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 1
Einheit | -
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelScaleNum(value), VelScale([value_num, value_den])
Querverweis | VEL_ScaleDen, VEL_DimensionNum, VEL_DimensionDen, VEL_DesiredValue

Beschreibung

Mit dem Parameter wird der Zähler des Drehzahlskalierungsfaktors (Fvscale) gesetzt.

Der Skalierungsfaktor wird aus einem Zähler-Parameter (VEL_ScaleNum) und einem Nenner-Parameter (VEL_ScaleDen) durch Division gebildet, und dient zur Berechnung anwenderspezifischen Einheiten. Er wirkt auf die Sollwertvorgabe und Drehzahl-Begrenzung, sowie auf die Drehzahlausgangsgrößen der Geschwindigkeits- und Positionierfunktion.
Die Drehzahlangaben bei Beschleunigung (VEL_Acc_dV) und Verzögerung (VEL_Dec_dV) werden durch diesen Faktor nicht beeinflusst.

Fvscale = VEL_ScaleNum / VEL_ScaleDen

Der Sollwert für die Drehzahlfunktion wird nach folgender Formel berechnet:

Vsoll = VEL_DesiredValue * Fvscale * Fvdim* Fvgroup

wobei Vsoll die Eingangsgröße für die Drehzahlfunktion ist.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                  # NodeId = 1

d.SdoWr(0x3302, 0x00, 1)    # VEL_ScaleNum - Zähler = 1
d.SdoWr(0x3303, 0x00, 10)   # VEL_ScaleDen - Nenner = 10

# Vel = 1005 [0.1U/min] = 100.5 [U/min]
d.SdoWr(0x3300, 0x00, 1005) # VEL_DesiredValue


3303.00h Drehzahlskalierungsfaktor - Nenner

Name | VEL_ScaleDen
Bezeichnung | Drehzahlskalierungsfaktor - Nenner
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647] ausgenommen {0}
Defaultwert | 1
Einheit | -
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelScaleDen(value), VelScale([value_num, value_den])
Querverweis | VEL_ScaleNum, VEL_DimensionNum, VEL_DimensionDen, VEL_DesiredValue

Beschreibung

Mit dem Parameter wird der Nenner des Drehzahlskalierungsfaktors (Fvscale) gesetzt.

Der Skalierungsfaktor wird aus einem Zähler-Parameter (VEL_ScaleNum) und einem Nenner-Parameter (VEL_ScaleDen) durch Division gebildet, und dient zur Berechnung anwenderspezifischen Einheiten. Er wirkt auf die Sollwertvorgabe und Drehzahl-Begrenzung, sowie auf die Drehzahlausgangsgrößen der Geschwindigkeits- und Positionierfunktion.
Die Drehzahlangaben bei Beschleunigung (VEL_Acc_dV) und Verzögerung (VEL_Dec_dV) werden durch diesen Faktor nicht beeinflusst.

Fvscale = VEL_ScaleNum / VEL_ScaleDen

Der Sollwert für die Drehzahlfunktion wird nach folgender Formel berechnet:

Vsoll = VEL_DesiredValue * Fvscale * Fvdim* Fvgroup

wobei Vsoll die Eingangsgröße für die Drehzahlfunktion ist.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                  # NodeId = 1

d.SdoWr(0x3302, 0x00, 1)    # VEL_ScaleNum - Zähler = 1
d.SdoWr(0x3303, 0x00, 10)   # VEL_ScaleDen - Nenner = 10

# Vel = 1005 [0.1U/min] = 100.5 [U/min]
d.SdoWr(0x3300, 0x00, 1005) # VEL_DesiredValue


3304.00h Drehzahlsollwertquelle

Name | VEL_DesiredValue_Source
Bezeichnung | Drehzahlsollwertquelle
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {100h, 101h, 300h, 3D1h}
Defaultwert | 300h
Einheit | -
Betriebsart | Velocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelSource(par_nr), VelSourcePar(), VelSourceAin(ain_nr)
Querverweis | VEL_DesiredValue_Reference, IO_AIN0, VEL_DesiredValue

Beschreibung

Dieser Parameter legt die Quelle des Drehzahlsollwertes fest.
Als Drehzahlsollwertquelle kann entweder ein analoger Eingang oder der Parameter VEL_DesiredValue (default) genommen werden.

Parameterwerte:
Wert (Hex) | Bedeutung
0100h | Drehzahlsollwertquelle = analoger Eingang 0 (Parameter IO_AIN0)
0101h | Drehzahlsollwertquelle = analoger Eingang 1 (Parameter IO_AIN1) - der AIN1 ist nicht bei allen Geräten verfügbar
0300h | Drehzahlsollwertquelle = Parameter VEL_DesiredValue

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)      # DEV_Enable - Sperren

# Parameter setzen
d.SdoWr(0x3003, 0x00, 3)      # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3304, 0x00, 0x0100) # VEL_DesiredValue_Source - Drehzahlsollwertquelle = Ain0
d.SdoWr(0x3305, 0x00, 2000)   # VEL_DesiredValue_Reference - 10 V = 2000 [U/min]

d.SdoWr(0x3004, 0x00, 1)      # DEV_Enable - Freigeben


3305.00h Drehzahlbezugswert für analogen Eingang

Name | VEL_DesiredValue_Reference
Bezeichnung | Drehzahlbezugswert für analogen Eingang
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 1000
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelReference(value)
Querverweis | VEL_DesiredValue_Source

Beschreibung

Wenn der Drehzahlsollwert über einen Analogeneingang vorgegeben wird (siehe Parameter VEL_DesiredValue_Source), bestimmt dieser Parameter die Relation der Eingangsspannung am Analogeneingang zu dem Drehzahlsollwert.

Mit anderen Worten: Es ist ein Drehzahlsollwert bei einer Spannung von 10V am Analogeneingang.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)      # DEV_Enable - Sperren

# Parameter setzen
d.SdoWr(0x3003, 0x00, 3)      # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3304, 0x00, 0x0100) # VEL_DesiredValue_Source - Drehzahlsollertquelle = Ain0
d.SdoWr(0x3305, 0x00, 2000)   # VEL_DesiredValue_Reference - 10 V = 2000 [U/min]

d.SdoWr(0x3004, 0x00, 1)      # DEV_Enable - Freigeben


330A.00h Drehzahldimensionsfaktor - Zähler

Name | VEL_DimensionNum
Bezeichnung | Drehzahldimensionsfaktor - Zähler
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 1
Einheit | -
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelDimension([num,den]), VelDimensionNum(value)
Querverweis | VEL_DimensionDen, VEL_ScaleNum, VEL_ScaleDen

Beschreibung

Dieser Parameter legt den Zähler des Dimensionsfaktors (Fvdim) der Drehzahl fest.

Der Dimensionsfaktor wird aus einem Zähler-Parameter (VEL_DimensionNum) und einem Nenner-Parameter (VEL_DimensionDen) durch Division gebildet, und dient zur Berechnung anwenderspezifischen Einheiten. Er wirkt auf die Sollwertvorgabe, Drehzahlbegrenzung und Rampenfunktion sowie auf die Drehzahlausgangsgrößen der Geschwindigkeitsfunktion.

Fvdim = VEL_DimensionNum / VEL_DimensionDen

Der Sollwert für die Drehzahlfunktion wird nach folgender Formel berechnet:

Vsoll = VEL_DesiredValue * Fvscale * Fvdim* Fvgroup

wobei Vsoll die Eingangsgröße für die Drehzahlfunktion ist.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                       # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                         # DEV_Enable - Sperren
d.SdoWr(0x3003, 0x00, 3)                         # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3300, 0x00, 0)                         # VEL_DesiredValue - Drehzahl = 0

# Abfrage der aktuellen Werte
print "VelDimensionNum =", d.SdoRd(0x330A, 0x00) # VEL_DimensionNum
print "VelDimensionDen =", d.SdoRd(0x330B, 0x00) # VEL_DimensionDen

# Neue Werte setzen
d.SdoWr(0x330A, 0x00, 10)                        # VEL_DimensionNum - Nenner = 10
d.SdoWr(0x330B, 0x00, 2)                         # VEL_DimensionDen - Zähler =  2

# Drezahl = 100 * (10/2) = 500 [rpm]
d.SdoWr(0x3300, 0x00, 100)                       # VEL_DesiredValue - Drehzahl = 100

d.SdoWr(0x3004, 0x00, 1)                         # DEV_Enable - Freigeben


330B.00h Drehzahldimensionsfaktor - Nenner

Name | VEL_DimensionDen
Bezeichnung | Drehzahldimensionsfaktor - Nenner
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647] ausgenommen {0}
Defaultwert | 1
Einheit | -
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelDimension([num,den]), VelDimensionDen(value)
Querverweis | VEL_DimensionNum

Beschreibung

Dieser Parameter legt den Nenner des Dimensionsfaktors (Fvdim) der Drehzahl fest.

Der Dimensionsfaktor wird aus einem Zähler-Parameter (VEL_DimensionNum) und einem Nenner-Parameter (VEL_DimensionDen) durch Division gebildet, und dient zur Berechnung anwenderspezifischen Einheiten. Er wirkt auf die Sollwertvorgabe, Drehzahlbegrenzung und Rampenfunktion sowie auf die Drehzahlausgangsgrößen der Geschwindigkeitsfunktion.

Fvdim = VEL_DimensionNum / VEL_DimensionDen

Der Sollwert für die Drehzahlfunktion wird nach folgender Formel berechnet:

Vsoll = VEL_DesiredValue * Fvscale * Fvdim* Fvgroup

wobei Vsoll die Eingangsgröße für die Drehzahlfunktion ist.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                       # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                         # DEV_Enable - Sperren
d.SdoWr(0x3003, 0x00, 3)                         # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3300, 0x00, 0)                         # VEL_DesiredValue - Drehzahl = 0

# Abfrage der aktuellen Werte
print "VelDimensionNum =", d.SdoRd(0x330A, 0x00) # VEL_DimensionNum
print "VelDimensionDen =", d.SdoRd(0x330B, 0x00) # VEL_DimensionDen

# Neue Werte setzen
d.SdoWr(0x330A, 0x00, 10)                        # VEL_DimensionNum - Nenner = 10
d.SdoWr(0x330B, 0x00, 2)                         # VEL_DimensionDen - Zähler =  2

# Drezahl = 100 * (10/2) = 500 [rpm]
d.SdoWr(0x3300, 0x00, 100)                       # VEL_DesiredValue - Drehzahl = 100

d.SdoWr(0x3004, 0x00, 1)                         # DEV_Enable - Freigeben


Inhalt - Parameter 3000h (DSA) - PID VEL (POS) Regler

3310.00h | VEL_Kp | PID-Regler - Proportionalfaktor
3311.00h | VEL_Ki | PID-Regler - Integralfaktor
3312.00h | VEL_Kd | PID-Regler - Differential faktor
3313.00h | VEL_ILimit | PID-Regler - Integrationslimit
3314.00h | VEL_Kvff | PID-Regler - Geschwindigkeitsvorsteuerung
3315.00h | VEL_Kaff | PID-Regler - Beschleunigungsvorsteuerung
3317.00h | VEL_KIxR | IxR Faktor
3318.00h | VEL_KdSampleTime | PID-Regler - Aktualisierungszeit für Differentialfaktor


3310.00h PID-Regler - Proportionalfaktor

Name | VEL_Kp
Bezeichnung | PID-Regler - Proportionalfaktor
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 100
Einheit | -
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelKp(value), VelKp_Stop(value), VelKp_AccPos(value), VelKp_ConstPos(value), VelKp_DecPos(value), VelKp_AccNeg(value), VelKp_ConstNeg(value), VelKp_DecNeg(value)
Querverweis | VEL_Ki, VEL_Kd, VEL_ILimit, VEL_Kvff, VEL_Kaff

Beschreibung

Mit dem Parameter wird der Proportionalfaktor des PID-Reglers (Drehzahl- oder Positionierregler) bestimmt. Der Defaultwert wurde so gewählt, dass der Regler mit einem breiten Spektrum von unbelasteten Motoren stabil arbeitet. Dieser Defaultwert ist also nicht optimal für alle Motoren und Belastungsfälle. Falls eine Notwendigkeit besteht diesen Parameter einzustellen, kann der optimale Wert durch die Auswertung der Sprungantwort empirisch ermittelt werden.

Der PID-Regler arbeitet betriebsart- und konfigurationsabhängig, entweder als Drehzahlregler oder als Positionierregler.

Über die Subindices 1..7 kann der Proportionalfaktor für Bewegungsphasen (Stillstand, Beschleunigung, konstante Geschwindigkeit, Verzögerung) unterschiedlich eingestellt werden. Diese Funktionalität kann z.B. bei folgenden Antriebsanwendungen für Bewegungsoptimierung verwendet werden:
  • vertikale Achsen
  • Palettierung (unterschiedliche Belastungen je Transportrichtung)
  • ....

Subindex | Name | Beschreibung
0 | VEL_Kp | Proportionalfaktor - Basis
1 | VEL_Kp_Stop | Proportionalfaktor - Stillstand
2 | VEL_Kp_AccPos | Proportionalfaktor - Beschleunigung in positiver Richtung
3 | VEL_Kp_ConstPos | Proportionalfaktor - konstante Geschwindigkeit in positiver Richtung
4 | VEL_Kp_DecPos | Proportionalfaktor - Verzögerung in positiver Richtung
5 | VEL_Kp_AccNeg | Proportionalfaktor - Beschleunigung in negativer Richtung
6 | VEL_Kp_ConstNeg | Proportionalfaktor - konstante Geschwindigkeit in negativer Richtung
7 | VEL_Kp_DecNeg | Proportionalfaktor - Verzögerung in negativer Richtung
Geschwindigkeitsprofil - Bewegungsphasen

Die Werte VEL_Kp_Xxxx (Subindex 1..7) werden in [%] (Prozent) von VEL_Kp (Subindex 0) angegeben.

Es gelten folgende Regel für die Werte der Parameter:

Für VEL_Kp_Stop, VEL_Kp_AccPos, VEL_Kp_ConstPos, VEL_Kp_DecPos:
Parameterwert | Ergebnis
x = 0..1000 | VEL_Kp * x / 100
0xFFFF | VEL_Kp
Für VEL_Kp_AccNeg:
Parameterwert | Ergebnis
x = 0..1000 | VEL_Kp * x / 100
0xFFFF | VEL_Kp_AccPos
Für VEL_Kp_ConstNeg:
Parameterwert | Ergebnis
x = 0..1000 | VEL_Kp * x / 100
0xFFFF | VEL_Kp_ConstPos
Für VEL_Kp_DecNeg:
Parameterwert | Ergebnis
x = 0..1000 | VEL_Kp * x / 100
0xFFFF | VEL_Kp_DecPos
ACHTUNG

 Bei Einstellungen dieses Parameters ist besondere Vorsicht geboten. Bei einem instabilen Regler (in der Regel bei zu großen PID-Parameterwerten) kann die Drehzahl unkontrolliert und ruckartig ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen !

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                              # NodeId = 1

# Abfrage von aktuellen Werten
print "VelKp =", d.SdoRd(0x3310, 0x00)  # VEL_Kp
print "VelKi =", d.SdoRd(0x3311, 0x00)  # VEL_Ki
print "VelKd =", d.SdoRd(0x3312, 0x00)  # VEL_Kd

# Neue Werte setzen
d.SdoWr(0x3310, 0x00, 200)              # VEL_Kp - Kp = 200
d.SdoWr(0x3311, 0x00, 50)               # VEL_Ki - Ki = 50
d.SdoWr(0x3312, 0x00, 0)                # VEL_Kd - Kd = 0


3311.00h PID-Regler - Integralfaktor

Name | VEL_Ki
Bezeichnung | PID-Regler - Integralfaktor
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelKi(value), VelKi_Stop(value), VelKi_AccPos(value), VelKi_ConstPos(value), VelKi_DecPos(value), VelKi_AccNeg(value), VelKi_ConstNeg(value), VelKi_DecNeg(value)
Querverweis | VEL_Kp, VEL_Kd, VEL_ILimit, VEL_Kvff, VEL_Kaff

Beschreibung

Mit dem Parameter wird der Integralfaktor des PID-Reglers (Drehzahl- oder Positionierregler) bestimmt. Der Defaultwert wurde so gewählt, dass der Regler mit einem breiten Spektrum von unbelasteten Motoren stabil arbeitet. Dieser Defaultwert ist also nicht optimal für alle Motoren und Belastungsfälle. Falls eine Notwendigkeit besteht diesen Parameter einzustellen, kann der optimale Wert durch die Auswertung der Sprungantwort empirisch ermittelt werden.

Mit dem Integralfaktor kann eine verbleibende Regelabweichung reduziert werden. Je größer ist der Wert, desto schneller wird die verbleibende Regelabweichung reduziert. Bei zu großen Werten kann der Regelkreis instabil werden.

Der PID-Regler arbeitet betriebsart- und konfigurationsabhängig, entweder als Drehzahlregler oder als Positionierregler.

Über die Subindices 1..7 kann der Integralfaktor für Bewegungsphasen (Stillstand, Beschleunigung, konstante Geschwindigkeit, Verzögerung) unterschiedlich eingestellt werden. Diese Funktionalität kann z.B. bei folgenden Antriebsanwendungen für Bewegungsoptimierung verwendet werden:
  • vertikale Achsen
  • Palettierung (unterschiedliche Belastungen je Transportrichtung)
  • ....

Subindex | Name | Beschreibung
0 | VEL_Ki | Integralfaktor - Basis
1 | VEL_Ki_Stop | Integralfaktor - Stillstand
2 | VEL_Ki_AccPos | Integralfaktor - Beschleunigung in positiver Richtung
3 | VEL_Ki_ConstPos | Integralfaktor - konstante Geschwindigkeit in positiver Richtung
4 | VEL_Ki_DecPos | Integralfaktor - Verzögerung in positiver Richtung
5 | VEL_Ki_AccNeg | Integralfaktor - Beschleunigung in negativer Richtung
6 | VEL_Ki_ConstNeg | Integralfaktor - konstante Geschwindigkeit in negativer Richtung
7 | VEL_Ki_DecNeg | Integralfaktor - Verzögerung in negativer Richtung
Geschwindigkeitsprofil - Bewegungsphasen

Die Werte VEL_Ki_Xxxx (Subindex 1..7) werden in [%] (Prozent) von VEL_Ki (Subindex 0) angegeben.

Es gelten folgende Regel für die Werte der Parameter:

Für VEL_Ki_Stop, VEL_Ki_AccPos, VEL_Ki_ConstPos, VEL_Ki_DecPos:
Parameterwert | Ergebnis
x = 0..1000 | VEL_Ki * x / 100
0xFFFF | VEL_Ki
Für VEL_Ki_AccNeg:
Parameterwert | Ergebnis
x = 0..1000 | VEL_Ki * x / 100
0xFFFF | VEL_Ki_AccPos
Für VEL_Ki_ConstNeg:
Parameterwert | Ergebnis
x = 0..1000 | VEL_Ki * x / 100
0xFFFF | VEL_Ki_ConstPos
Für VEL_Ki_DecNeg:
Parameterwert | Ergebnis
x = 0..1000 | VEL_Ki * x / 100
0xFFFF | VEL_Ki_DecPos
ACHTUNG

 Bei Einstellungen dieses Parameters ist besondere Vorsicht geboten. Bei einem instabilen Regler (in der Regel bei zu großen PID-Parameterwerten) kann die Drehzahl unkontrolliert und ruckartig ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen !

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                              # NodeId = 1

# Abfrage von aktuellen Werten
print "VelKp =", d.SdoRd(0x3310, 0x00)  # VEL_Kp
print "VelKi =", d.SdoRd(0x3311, 0x00)  # VEL_Ki
print "VelKd =", d.SdoRd(0x3312, 0x00)  # VEL_Kd

# Neue Werte setzen
d.SdoWr(0x3310, 0x00, 200)              # VEL_Kp - Kp = 200
d.SdoWr(0x3311, 0x00, 50)               # VEL_Ki - Ki = 50
d.SdoWr(0x3312, 0x00, 0)                # VEL_Kd - Kd = 0


3312.00h PID-Regler - Differential faktor

Name | VEL_Kd
Bezeichnung | PID-Regler - Differential faktor
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelKd(value), VelKd_Stop(value), VelKd_AccPos(value), VelKd_ConstPos(value), VelKd_DecPos(value), VelKd_AccNeg(value), VelKd_ConstNeg(value), VelKd_DecNeg(value)
Querverweis | VEL_Kp, VEL_Ki, VEL_ILimit, VEL_Kvff, VEL_Kaff

Beschreibung

Mit dem Parameter wird der Differentialfaktor des PID-Reglers (Drehzahl- oder Positionierregler) bestimmt. Der Defaultwert wurde so gewählt, dass der Regler mit einem breiten Spektrum von unbelasteten Motoren stabil arbeitet. Dieser Defaultwert ist also nicht optimal für alle Motoren und Belastungsfälle. Falls eine Notwendigkeit besteht diesen Parameter einzustellen, kann der optimale Wert durch die Auswertung der Sprungantwort empirisch ermittelt werden.

Mit dem Differentialfaktor kann das dynamisches Verhalten der Bewegung (z.B.: Beschleunigung, Verzögerung) optimiert werden. Bei größeren Werten reagiert der Regler schneller auf dynamische Regelabweichungen. Bei zu großen Werten kann der Regelkreis instabil werden.

Der PID-Regler arbeitet betriebsart- und konfigurationsabhängig, entweder als Drehzahlregler oder als Positionierregler.

Über die Subindices 1..7 kann der Differentialfaktor für Bewegungsphasen (Stillstand, Beschleunigung, konstante Geschwindigkeit, Verzögerung) unterschiedlich eingestellt werden. Diese Funktionalität kann z.B. bei folgenden Antriebsanwendungen für Bewegungsoptimierung verwendet werden:
  • vertikale Achsen
  • Palettierung (unterschiedliche Belastungen je Transportrichtung)
  • ....

Subindex | Name | Beschreibung
0 | VEL_Kd | Differentialfaktor - Basis
1 | VEL_Kd_Stop | Differentialfaktor - Stillstand
2 | VEL_Kd_AccPos | Differentialfaktor - Beschleunigung in positiver Richtung
3 | VEL_Kd_ConstPos | Differentialfaktor - konstante Geschwindigkeit in positiver Richtung
4 | VEL_Kd_DecPos | Differentialfaktor - Verzögerung in positiver Richtung
5 | VEL_Kd_AccNeg | Differentialfaktor - Beschleunigung in negativer Richtung
6 | VEL_Kd_ConstNeg | Differentialfaktor - konstante Geschwindigkeit in negativer Richtung
7 | VEL_Kd_DecNeg | Differentialfaktor - Verzögerung in negativer Richtung
Geschwindigkeitsprofil - Bewegungsphasen

Die Werte VEL_Kd_Xxxx (Subindex 1..7) werden in [%] (Prozent) von VEL_Kd (Subindex 0) angegeben.

Es gelten folgende Regel für die Werte der Parameter:

Für VEL_Kd_Stop, VEL_Kd_AccPos, VEL_Kd_ConstPos, VEL_Kd_DecPos:
Parameterwert | Ergebnis
x = 0..1000 | VEL_Kd * x / 100
0xFFFF | VEL_Kd
Für VEL_Kd_AccNeg:
Parameterwert | Ergebnis
x = 0..1000 | VEL_Kd * x / 100
0xFFFF | VEL_Kd_AccPos
Für VEL_Kd_ConstNeg:
Parameterwert | Ergebnis
x = 0..1000 | VEL_Kd * x / 100
0xFFFF | VEL_Kd_ConstPos
Für VEL_Kd_DecNeg:
Parameterwert | Ergebnis
x = 0..1000 | VEL_Kd * x / 100
0xFFFF | VEL_Kd_DecPos
ACHTUNG

 Bei Einstellungen dieses Parameters ist besondere Vorsicht geboten. Bei einem instabilen Regler (in der Regel bei zu großen PID-Parameterwerten) kann die Drehzahl unkontrolliert und ruckartig ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen !

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                              # NodeId = 1

# Abfrage von aktuellen Werten
print "VelKp =", d.SdoRd(0x3310, 0x00)  # VEL_Kp
print "VelKi =", d.SdoRd(0x3311, 0x00)  # VEL_Ki
print "VelKd =", d.SdoRd(0x3312, 0x00)  # VEL_Kd

# Neue Werte setzen
d.SdoWr(0x3310, 0x00, 200)              # VEL_Kp - Kp = 200
d.SdoWr(0x3311, 0x00, 50)               # VEL_Ki - Ki = 50
d.SdoWr(0x3312, 0x00, 0)                # VEL_Kd - Kd = 0


3313.00h PID-Regler - Integrationslimit

Name | VEL_ILimit
Bezeichnung | PID-Regler - Integrationslimit
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 10000]
Defaultwert | 10000
Einheit | -
Betriebsart | Velocity,Position
Verfügbar ab | 1.45.00.00
Geräte | Alle
PLC Funktion | VelILimit(value), VelILimit_Stop(value), VelILimit_AccPos(value), VelILimit_ConstPos(value), VelILimit_DecPos(value), VelILimit_AccNeg(value), VelILimit_ConstNeg(value), VelILimit_DecNeg(value)
Querverweis | VEL_Kp, VEL_Ki, VEL_Kd, VEL_Kvff, VEL_Kaff

Beschreibung

Mit dem VEL_ILimit-Parameter kann das Integralprodukt des PID-Reglers begrenzt werden. Der Wert des Parameters kann von 0 bis 10000 betragen.
Wobei der Wert von 10000 dem maximalen Ausgangswert des PID-Reglers entspricht. Durch die Integralproduktbegrenzung wird das Überschwingungen der Drehzahl bzw. der Position reduziert.

Der PID-Regler arbeitet betriebsart- und konfigurationsabhängig, entweder als Drehzahlregler oder als Positionierregler.

Über die Subindices 1..7 kann die ILimit-Begrenzung für Bewegungsphasen (Stillstand, Beschleunigung, konstante Geschwindigkeit, Verzögerung) unterschiedlich eingestellt werden. Diese Funktionalität kann z.B. bei folgenden Antriebsanwendungen für Bewegungsoptimierung verwendet werden:
  • vertikale Achsen
  • Palettierung (unterschiedliche Belastungen je Transportrichtung)
  • ....

Subindex | Name | Beschreibung
0 | VEL_ILimit | ILimit-Begrenzung - Basis
1 | VEL_ILimit_Stop | ILimit-Begrenzung - Stillstand
2 | VEL_ILimit_AccPos | ILimit-Begrenzung - Beschleunigung in positiver Richtung
3 | VEL_ILimit_ConstPos | ILimit-Begrenzung - konstante Geschwindigkeit in positiver Richtung
4 | VEL_ILimit_DecPos | ILimit-Begrenzung - Verzögerung in positiver Richtung
5 | VEL_ILimit_AccNeg | ILimit-Begrenzung - Beschleunigung in negativer Richtung
6 | VEL_ILimit_ConstNeg | ILimit-Begrenzung - konstante Geschwindigkeit in negativer Richtung
7 | VEL_ILimit_DecNeg | ILimit-Begrenzung - Verzögerung in negativer Richtung
Geschwindigkeitsprofil - Bewegungsphasen

Die Werte VEL_ILimit_Xxxx (Subindex 1..7) werden in [%] (Prozent) von VEL_ILimit (Subindex 0) angegeben.

Es gelten folgende Regel für die Werte der Parameter:

Für VEL_ILimit_Stop, VEL_ILimit_AccPos, VEL_ILimit_ConstPos, VEL_ILimit_DecPos:
Parameterwert | Ergebnis
x = 0..1000 | VEL_ILimit * x / 100
0xFFFF | VEL_ILimit
Für VEL_ILimit_AccNeg:
Parameterwert | Ergebnis
x = 0..1000 | VEL_ILimit * x / 100
0xFFFF | VEL_ILimit_AccPos
Für VEL_ILimit_ConstNeg:
Parameterwert | Ergebnis
x = 0..1000 | VEL_ILimit * x / 100
0xFFFF | VEL_ILimit_ConstPos
Für VEL_ILimit_DecNeg:
Parameterwert | Ergebnis
x = 0..1000 | VEL_ILimit * x / 100
0xFFFF | VEL_ILimit_DecPos
ACHTUNG

 Bei Einstellungen dieses Parameters ist besondere Vorsicht geboten. Bei einem instabilen Regler (in der Regel bei zu großen PID-Parameterwerten) kann die Drehzahl unkontrolliert und ruckartig ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen !

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Abfrage von aktuellen Werten
print "Vel ILimit =", d.SdoRd(0x3313, 0x00) # VEL_ILimit
print "Vel Kvff   =", d.SdoRd(0x3314, 0x00) # VEL_Kvff
print "Vel Kaff   =", d.SdoRd(0x3315, 0x00) # VEL_Kaff

# Neue Werte setzen
d.SdoWr(0x3313, 0x00, 10000)                # VEL_ILimit - ILimit = 10000
d.SdoWr(0x3314, 0x00, 1000)                 # VEL_Kvff - Kvff = 1000
d.SdoWr(0x3315, 0x00, 0)                    # VEL_Kaff - Kaff = 0


3314.00h PID-Regler - Geschwindigkeitsvorsteuerung

Name | VEL_Kvff
Bezeichnung | PID-Regler - Geschwindigkeitsvorsteuerung
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 2000]
Defaultwert | 0
Einheit | [o/oo]
Betriebsart | Velocity,Position
Verfügbar ab | 1.64.00.04
Geräte | Alle
PLC Funktion | VelKvff(value)
Querverweis | VEL_Kp, VEL_Ki, VEL_Kd, VEL_ILimit, VEL_Kaff

Beschreibung

Der Parameter VEL_Kvff bestimmt die Geschwindigkeitsvorsteuerung (Velocity Feed-Forward) in der Positionier- und Drehzahlbetriebsart mit Encoder- oder Hallrückführung.
Für Drehzahlreglung mit Motorspannungsrückführung soll dieser Parameter auf 0 (Defaultwert) eingestellt werden.

Ein Positionierregler alleine gibt erst eine Ausgangsgröße aus, wenn ein Schleppabstand ( = Sollposition - Istposition) ungleich Null vorliegt.
Also, wenn keine Vorsteuerung eingestellt wurde, kann der Schleppabstand in allen Bewegungsphasen fast nie Null betragen.
Man kann zwar über Integral- und Differentialfaktor des PID-Reglers die dynamische Eigenschaften der Reglung verbessern, aber:
  • Integralfaktor führt zum Überschwingen bzw. Instabilität des Systems
  • Differentialfaktor führt zu einer "rauen" Regelung (starke Geräusche) - die Mechanik wird belastet.
  • da der Schleppabstand notwendig ist, reagiert das System mit einer Verzögerung.
Erst wenn die Vorsteuerung korrekt eingestellt wurde, kann der Schleppabstand in allen Bewegungsphasen minimiert werden.
Mit einer Vorsteuerung ist kein Schleppabstand mehr notwendig, um eine Bewegung aufrecht zu erhalten.
In dem Fall, korrigiert der Positionierregler nur Positionsabweichungen, die auf Grund eines nicht idealen Verhaltens eines untergeordneten Drehzahlregler und Drehzahländerungen entstehen.

Einstellung in Abhängigkeit von Rückführungkonfigurationen
Pos/Vel-Rückführung | SVel-Rückführung | VEL_Kvff | Beschreibung
Encoder | Encoder | 1000 | -
Encoder | EMK (Motorspannung) | 1000 | Die Motorparameter MOTOR_Nn (Motornenndrehzahl) und MOTOR_Un (Motornennspannung) müssen korrekt eingestellt werden. Sonst muss der Wert von VEL_Kvff empirisch ermittelt werden.
ACHTUNG

 Bei Einstellungen dieses Parameters ist besondere Vorsicht geboten. Bei einem instabilen Regler (in der Regel bei zu großen PID-Parameterwerten) kann die Drehzahl unkontrolliert und ruckartig ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen !

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Abfrage von aktuellen Werten
print "Vel ILimit =", d.SdoRd(0x3313, 0x00) # VEL_ILimit
print "Vel Kvff   =", d.SdoRd(0x3314, 0x00) # VEL_Kvff
print "Vel Kaff   =", d.SdoRd(0x3315, 0x00) # VEL_Kaff

# Neue Werte setzen
d.SdoWr(0x3313, 0x00, 10000)                # VEL_ILimit - ILimit = 10000
d.SdoWr(0x3314, 0x00, 1000)                 # VEL_Kvff - Kvff = 1000
d.SdoWr(0x3315, 0x00, 0)                    # VEL_Kaff - Kaff = 0


3315.00h PID-Regler - Beschleunigungsvorsteuerung

Name | VEL_Kaff
Bezeichnung | PID-Regler - Beschleunigungsvorsteuerung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 100000]
Defaultwert | 0
Einheit | [mA]
Betriebsart | Velocity,Position
Verfügbar ab | 1.82.02.07
Geräte | Alle
PLC Funktion | VelKaff(value)
Querverweis | VEL_Kp, VEL_Ki, VEL_Kd, VEL_ILimit, VEL_Kvff

Beschreibung

Der Parameter VEL_Kaff bestimmt die Beschleunigungsvorsteuerung (Acceleration Feed-Forward) in der Positionier- und Drehzahlbetriebsart mit Encoder- oder Hallrückführung.
Für Drehzahlreglung mit Motorspannungsrückführung soll dieser Parameter auf 0 (Defaultwert) eingestellt werden.

Ein Positionierregler alleine gibt erst eine Ausgangsgröße aus, wenn ein Schleppabstand ( = Sollposition - Istposition) ungleich Null vorliegt.
Also, wenn keine Vorsteuerung eingestellt wurde, kann der Schleppabstand in allen Bewegungsphasen fast nie Null betragen.
Man kann zwar über Integral- und Differentialfaktor des PID-Reglers die dynamische Eigenschaften der Reglung verbessern, aber:
  • Integralfaktor führt zum Überschwingen bzw. Instabilität des Systems
  • Differentialfaktor führt zu einer "rauen" Regelung (starke Geräusche) - die Mechanik wird belastet.
  • da der Schleppabstand notwendig ist, reagiert das System mit einer Verzögerung.
Erst wenn die Vorsteuerung korrekt eingestellt wurde, kann der Schleppabstand in allen Bewegungsphasen minimiert werden.
Mit einer Vorsteuerung ist kein Schleppabstand mehr notwendig, um eine Bewegung aufrecht zu erhalten.
In dem Fall, korrigiert der Positionierregler nur Positionsabweichungen, die auf Grund eines nicht idealen Verhaltens eines untergeordneten Drehzahlregler und Drehzahländerungen entstehen.

Dieser Parameter ist ab Firmware 1.82.02.07 verfügbar.

Einstellung in Abhängigkeit von Rückführungkonfigurationen
Pos/Vel-Rückführung | SVel-Rückführung | VEL_Kaff | Beschreibung
Encoder | Encoder | = Strom in [mA] welcher zur Beschleunigung 1000 rpm / 1000 ms benötig wird. | -
Encoder | EMK (Motorspannung) | = Strom in [mA] welcher zur Beschleunigung 1000 rpm / 1000 ms benötig wird. | -

ACHTUNG

 Bei Einstellungen dieses Parameters ist besondere Vorsicht geboten. Bei einem instabilen Regler (in der Regel bei zu großen PID-Parameterwerten) kann die Drehzahl unkontrolliert und ruckartig ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen !

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Abfrage von aktuellen Werten
print "Vel ILimit =", d.SdoRd(0x3313, 0x00) # VEL_ILimit
print "Vel Kvff   =", d.SdoRd(0x3314, 0x00) # VEL_Kvff
print "Vel Kaff   =", d.SdoRd(0x3315, 0x00) # VEL_Kaff

# Neue Werte setzen
d.SdoWr(0x3313, 0x00, 10000)                # VEL_ILimit - ILimit = 10000
d.SdoWr(0x3314, 0x00, 1000)                 # VEL_Kvff - Kvff = 1000
d.SdoWr(0x3315, 0x00, 0)                    # VEL_Kaff - Kaff = 0


3317.00h IxR Faktor

Name | VEL_KIxR
Bezeichnung | IxR Faktor
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 1000]
Defaultwert | 0
Einheit | [o/oo]
Betriebsart | Velocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelKIxR(value)
Querverweis | -

Beschreibung

Mit dem Parameter kann der negative Einfluss des Widerstands der Motorwicklung und der Motorzuleitungen auf die Drehzahlregelgüte kompensiert werden. Allgemein, bei Werten >0 wird die Regelgüte der Drehzahl besser, bei zu großen Werten wird die Reglung instabil. Es soll ein grösstmöglicher Wert eingestellt werden, bei welchem die Drehzahlreglung sicher und stabil im ganzen Drehzahlbereich arbeitet.

Dieser Parameter wirkt nur im Drehzahlmodus mit Motorspannung-Rückführung. Im Drehzahl- und Positioniermodus mit Encoderrückführung hat dieser Parameter keine Bedeutung.

ACHTUNG

 Bei Einstellungen dieses Parameters ist besondere Vorsicht geboten. Bei einem instabilen Regler (in der Regel bei zu großen PID-Parameterwerten) kann die Drehzahl unkontrolliert und ruckartig ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen !

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

# Abfrage von aktuellen Werten
print "Vel KIxR =", d.SdoRd(0x3317, 0x00) # VEL_KIxR

# neue Werte setzen
d.SdoWr(0x3317, 0x00, 0)                  # VEL_KIxR - KIxR = 0


3318.00h PID-Regler - Aktualisierungszeit für Differentialfaktor

Name | VEL_KdSampleTime
Bezeichnung | PID-Regler - Aktualisierungszeit für Differentialfaktor
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-255 .. 1000]
Defaultwert | 0
Einheit | -
Betriebsart | Velocity,Position
Verfügbar ab | 1.52.00.00
Geräte | Alle
PLC Funktion | VelKdSampleTime(value)
Querverweis | -

Beschreibung

Mit dem Parameter kann die Abtastrate vom Differentialteil des PID-Filters geändert werden.
Die Werte können nur ein Vielfaches der Abtastrate der Regelung betragen.

Parameterwerte:
Wert (Hex) | Bedeutung
= 0 | = Abtastrate der Regelung
> 0 | Abtastrate in [100us]
< 0 | Abtastrate in [vielfache der Abtastrate der Regelung] z.B. Wert = -10 dann D_Abtastrate = 10 * (Abtastrate der Regelung)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                         # NodeId = 1

# Abfrage von aktuellen Werten
print "Vel Kd SampleTime =", d.SdoRd(0x3318, 0x00) # VEL_KdSampleTime

# neue Werte setzen
d.SdoWr(0x3318, 0x00, 0)                           # VEL_KdSampleTime - Abtastrate der Regelung


3321.00h Drehzahlbegrenzung - max. positiv

Name | VEL_LimitMaxPos
Bezeichnung | Drehzahlbegrenzung - max. positiv
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 2147483647]
Defaultwert | 2147483647
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelLimitMaxPos(value), VelLimitMax([pos, neg])
Querverweis | VEL_LimitMaxNeg

Beschreibung

Die Drehzahlbegrenzung begrenzt den Drehzahlsollwertbereich des Antriebsreglers. Dieser Parameter legt die obere Drehzahl im positiven Sollwertbereich fest.
Mit den Parameter VEL_LimitMaxPos und VEL_LimitMaxNeg wird der Drehzahlsollwert (Drehzahlreglereingangsgröße) begrenzt. Deswegen ist für die korrekte Drehzahlbegrenzung eine stabile Arbeit des Drehzahlreglers notwendig. Bei einem „instabilen“ Drehzahlregler kann es vorkommen, dass trotz der gesetzten Begrenzungswerte die Motordrehzahl die Grenzen übersteigt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

# Abfrage von aktuellen Grenzwerten
print "VelLimitMaxPos =", d.SdoRd(0x3321, 0x00) # VEL_LimitMaxPos
print "VelLimitMaxNeg =", d.SdoRd(0x3323, 0x00) # VEL_LimitMaxNeg

# Neue Werte setzen
d.SdoWr(0x3321, 0x00, 1000)                     # VEL_LimitMaxPos - pos. Limit = 1000
d.SdoWr(0x3323, 0x00, 500)                      # VEL_LimitMaxNeg - neg. Limit =  500


3323.00h Drehzahlbegrenzung - max. negativ

Name | VEL_LimitMaxNeg
Bezeichnung | Drehzahlbegrenzung - max. negativ
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 2147483647]
Defaultwert | 2147483647
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelLimitMaxNeg(value), VelLimitMax([pos, neg])
Querverweis | VEL_LimitMaxPos

Beschreibung

Die Drehzahlbegrenzung begrenzt den Drehzahlsollwertbereich des Antriebsreglers. Dieser Parameter legt die obere Drehzahl im negativen Sollwertbereich fest.
Mit den Parameter VEL_LimitMaxPos und VEL_LimitMaxNeg wird der Drehzahlsollwert (Drehzahlreglereingangsgröße) begrenzt. Deswegen ist für die korrekte Drehzahlbegrenzung eine stabile Arbeit des Drehzahlreglers notwendig. Bei einem „instabilen“ Drehzahlregler kann es vorkommen, dass trotz der gesetzten Begrenzungswerte die Motordrehzahl die Grenzen übersteigt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

# Abfrage von aktuellen Grenzwerten
print "VelLimitMaxPos =", d.SdoRd(0x3321, 0x00) # VEL_LimitMaxPos
print "VelLimitMaxNeg =", d.SdoRd(0x3323, 0x00) # VEL_LimitMaxNeg

# Neue Werte setzen
d.SdoWr(0x3321, 0x00, 1000)                     # VEL_LimitMaxPos - pos. Limit = 1000
d.SdoWr(0x3323, 0x00, 500)                      # VEL_LimitMaxNeg - neg. Limit =  500


3340.00h Drehzahlbeschleunigung - delta V

Name | VEL_Acc_dV
Bezeichnung | Drehzahlbeschleunigung - delta V
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 1000
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelAcc([dV,dT]), VelAcc_dV(value)
Querverweis | VEL_Acc_dT, VEL_Dec_dV, VEL_Dec_dT, VEL_RampType

Beschreibung

Die Drehzahlbeschleunigung gibt die Steigung der Hochfahrrampe an. Sie wird als Quotient aus den Parametern VEL_Acc_dV (delta Drehzahl) und VEL_Acc_dT (delta Zeit) gebildet.

acc = VEL_Acc_dV / VEL_Acc_dT [U/min/ms]

Der Parameter VEL_Acc_dV gibt den Zähler dieses Quotienten an.
Er ist nur bei VEL_RampType ungleich 0 aktiv.

Geschwindigkeitsprofil - Trapez

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                 # NodeId = 1

# Abfrage von aktuellen Werten
# Beschleungigung
print "VelAcc_dV =", d.SdoRd(0x3340, 0x00) # VEL_Acc_dV
print "VelAcc_dT =", d.SdoRd(0x3341, 0x00) # VEL_Acc_dT

#Verzögerung
print "VelDec_dV =", d.SdoRd(0x3342, 0x00) # VEL_Dec_dV
print "VelDec_dT =", d.SdoRd(0x3343, 0x00) # VEL_Dec_dT

# Neue Werte setzen
# Drehzahlbeschleunigung: dV = 2000[U/min], dT = 500s -> dV/dT = 4[U/min²]
d.SdoWr(0x3340, 0x00, 2000)                # VEL_Acc_dV
d.SdoWr(0x3341, 0x00, 500)                 # VEL_Acc_dT

# Drehzahlverzögerung: dV = 1000[U/min], dT 5000s -> dV/dT = 0,2[U/min²]
d.SdoWr(0x3342, 0x00, 1000)                # VEL_Dec_dV
d.SdoWr(0x3343, 0x00, 5000)                # VEL_Dec_dT


3341.00h Drehzahlbeschleunigung - delta T

Name | VEL_Acc_dT
Bezeichnung | Drehzahlbeschleunigung - delta T
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [1 .. 4294967295]
Defaultwert | 1000
Einheit | [ms]
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelAcc([dV,dT]), VelAcc_dT(value)
Querverweis | VEL_Acc_dV, VEL_Dec_dV, VEL_Dec_dT, VEL_RampType

Beschreibung

Die Drehzahlbeschleunigung gibt die Steigung der Hochfahrrampe an. Sie wird als Quotient aus den Parametern VEL_Acc_dV (delta Drehzahl) und VEL_Acc_dT (delta Zeit) gebildet.

acc = VEL_Acc_dV / VEL_Acc_dT [U/min/ms]

Der Parameter VEL_Acc_dT gibt den Nenner dieses Quotienten an.
Er ist nur bei VEL_RampType ungleich 0 aktiv.

Geschwindigkeitsprofil - Trapez

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                 # NodeId = 1

# Abfrage von aktuellen Werten
# Beschleungigung
print "VelAcc_dV =", d.SdoRd(0x3340, 0x00) # VEL_Acc_dV
print "VelAcc_dT =", d.SdoRd(0x3341, 0x00) # VEL_Acc_dT

#Verzögerung
print "VelDec_dV =", d.SdoRd(0x3342, 0x00) # VEL_Dec_dV
print "VelDec_dT =", d.SdoRd(0x3343, 0x00) # VEL_Dec_dT

# Neue Werte setzen
# Drehzahlbeschleunigung: dV = 2000[U/min], dT = 500s -> dV/dT = 4[U/min²]
d.SdoWr(0x3340, 0x00, 2000)                # VEL_Acc_dV
d.SdoWr(0x3341, 0x00, 500)                 # VEL_Acc_dT

# Drehzahlverzögerung: dV = 1000[U/min], dT 5000s -> dV/dT = 0,2[U/min²]
d.SdoWr(0x3342, 0x00, 1000)                # VEL_Dec_dV
d.SdoWr(0x3343, 0x00, 5000)                # VEL_Dec_dT


3342.00h Drehzahlverzögerung - delta V

Name | VEL_Dec_dV
Bezeichnung | Drehzahlverzögerung - delta V
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 1000
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelDec([dV,dT]), VelDec_dV(value)
Querverweis | VEL_Acc_dV, VEL_Acc_dT, VEL_Dec_dT, VEL_RampType

Beschreibung

Die Drehzahlverzögerung gibt die Steigung der Bremsrampe an. Sie wird als Quotient aus den Parametern VEL_Dec_dV (delta Drehzahl) und VEL_Dec_dT (delta Zeit) gebildet.

a_dec = VEL_Dec_dV / VEL_Dec_dT [U/min/ms]

Der Parameter VEL_Dec_dV gibt den Zähler dieses Quotienten an.
Er ist nur bei VEL_RampType ungleich 0 aktiv.

Geschwindigkeitsprofil - Trapez

Notiz
Der Typ bzw. Wertebereich des Parameters wurde ab der Firmware 1.20 von uin16 auf unint32 geändert

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                 # NodeId = 1

# Abfrage von aktuellen Werten
# Beschleungigung
print "VelAcc_dV =", d.SdoRd(0x3340, 0x00) # VEL_Acc_dV
print "VelAcc_dT =", d.SdoRd(0x3341, 0x00) # VEL_Acc_dT

#Verzögerung
print "VelDec_dV =", d.SdoRd(0x3342, 0x00) # VEL_Dec_dV
print "VelDec_dT =", d.SdoRd(0x3343, 0x00) # VEL_Dec_dT

# Neue Werte setzen
# Drehzahlbeschleunigung: dV = 2000[U/min], dT = 500s -> dV/dT = 4[U/min²]
d.SdoWr(0x3340, 0x00, 2000)                # VEL_Acc_dV
d.SdoWr(0x3341, 0x00, 500)                 # VEL_Acc_dT

# Drehzahlverzögerung: dV = 1000[U/min], dT 5000s -> dV/dT = 0,2[U/min²]
d.SdoWr(0x3342, 0x00, 1000)                # VEL_Dec_dV
d.SdoWr(0x3343, 0x00, 5000)                # VEL_Dec_dT


3343.00h Drehzahlverzögerung - delta T

Name | VEL_Dec_dT
Bezeichnung | Drehzahlverzögerung - delta T
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [1 .. 4294967295]
Defaultwert | 1000
Einheit | [ms]
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelDec([dV,dT]), VelDec_dT(value)
Querverweis | VEL_Acc_dV, VEL_Acc_dT, VEL_Dec_dV, VEL_RampType

Beschreibung

Die Drehzahlverzögerung gibt die Steigung der Bremsrampe an. Sie wird als Quotient aus den Parametern VEL_Dec_dV (delta Drehzahl) und VEL_Dec_dT (delta Zeit) gebildet.

a_dec = VEL_Dec_dV / VEL_Dec_dT [U/min/ms]

Der Parameter VEL_Dec_dT gibt den Nenner dieses Quotienten an.
Er ist nur bei VEL_RampType ungleich 0 aktiv.

Geschwindigkeitsprofil - Trapez

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                 # NodeId = 1

# Abfrage von aktuellen Werten
# Beschleungigung
print "VelAcc_dV =", d.SdoRd(0x3340, 0x00) # VEL_Acc_dV
print "VelAcc_dT =", d.SdoRd(0x3341, 0x00) # VEL_Acc_dT

#Verzögerung
print "VelDec_dV =", d.SdoRd(0x3342, 0x00) # VEL_Dec_dV
print "VelDec_dT =", d.SdoRd(0x3343, 0x00) # VEL_Dec_dT

# Neue Werte setzen
# Drehzahlbeschleunigung: dV = 2000[U/min], dT = 500s -> dV/dT = 4[U/min²]
d.SdoWr(0x3340, 0x00, 2000)                # VEL_Acc_dV
d.SdoWr(0x3341, 0x00, 500)                 # VEL_Acc_dT

# Drehzahlverzögerung: dV = 1000[U/min], dT 5000s -> dV/dT = 0,2[U/min²]
d.SdoWr(0x3342, 0x00, 1000)                # VEL_Dec_dV
d.SdoWr(0x3343, 0x00, 5000)                # VEL_Dec_dT


3344.00h QuickStop-Drehzahlverzögerung - delta V

Name | VEL_Dec_QuickStop_dV
Bezeichnung | QuickStop-Drehzahlverzögerung - delta V
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 1000
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelDecQuickStop([dV,dT]), VelDecQuickStop_dV(value)
Querverweis | VEL_Dec_QuickStop_dT, VEL_Dec_dV, VEL_Dec_dT, VEL_RampType, DEV_DinLimitPos, DEV_DinLimitNeg

Beschreibung

Die QuickStop-Drehzahlverzögerung gibt die Steigung der QuickStop-Bremsrampe an.
Sie wird als Quotient aus den Parametern VEL_Dec_QuickStop_dV (delta Drehzahl) und VEL_Dec_QuickStop_dT (delta Zeit) gebildet.

dec = VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT [U/min/ms]

Der Parameter VEL_Dec_QuickStop_dV gibt den Zähler dieses Quotienten an. Er ist nur bei VEL_RampType ungleich 0 aktiv.

Folgende Ereignisse führen zu einem Stopp mit Schnellhaltrampe:
  • Kommando Dev_Cmd = CMD_QuickStop
  • Endschalter (falls definiert) wurde aktiviert. Siehe DEV_DinLimitPos, DEV_DinLimitNeg

Falls die normale Verzögerung (VEL_Dec_dV / VEL_Dec_dT) "schneller" als QuickStop-Verzögerung ist, wird die normale Verzögerung (VEL_Dec_dV / VEL_Dec_dT) für den Bremsvorgang genommen. Dieser Fall wurde auf dem unterstehenden Bild dargestellt.

QuickStop Rampe - Fall 2

Ab Firmware 1.20: Typ bzw. Wertebereich des Parameters wurde von uint16 auf uint32 geändert

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                          # NodeId = 1

# Abfrage von aktuellen Werten
print "VelDecQuickStop_dV =", d.SdoRd(0x3344, 0x00) # VEL_Dec_QuickStop_dV
print "VelDecQuickStop_dT =", d.SdoRd(0x3345, 0x00) # VEL_Dec_QuickStop_dT

# Neue Werte setzen
# Verzögerung: dV = 3000rpm, dT 100s -> dV/dT = 30rpm²
d.SdoWr(0x3344, 0x00, 3000)                         # VEL_Dec_QuickStop_dV
d.SdoWr(0x3345, 0x00, 100)                          # VEL_Dec_QuickStop_dT


3345.00h QuickStop-Drehzahlverzögerung - delta T

Name | VEL_Dec_QuickStop_dT
Bezeichnung | QuickStop-Drehzahlverzögerung - delta T
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [1 .. 4294967295]
Defaultwert | 100
Einheit | [ms]
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelDecQuickStop([dV,dT]), VelDecQuickStop_dT(value)
Querverweis | VEL_Dec_QuickStop_dV, VEL_Dec_dV, VEL_Dec_dT, VEL_RampType, DEV_DinLimitPos, DEV_DinLimitNeg

Beschreibung

Die QuickStop-Drehzahlverzögerung gibt die Steigung der QuickStop-Bremsrampe an.
Sie wird als Quotient aus den Parametern VEL_Dec_QuickStop_dV (delta Drehzahl) und VEL_Dec_QuickStop_dT (delta Zeit) gebildet

dec = VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT [U/min/ms]

Der Parameter VEL_Dec_QuickStop_dT gibt den Nenner dieses Quotienten an. Er ist nur bei VEL_RampType ungleich 0 aktiv.

Folgende Ereignisse führen zu einem Stopp mit Schnellhaltrampe:
  • Kommando Dev_Cmd = CMD_QuickStop
  • Endschalter (falls definiert) wurde aktiviert. Siehe DEV_DinLimitPos, DEV_DinLimitNeg

Falls die normale Verzögerung (VEL_Dec_dV / VEL_Dec_dT) "schneller" als QuickStop-Verzögerung ist, wird die normale Verzögerung (VEL_Dec_dV / VEL_Dec_dT) für den Bremsvorgang genommen. Dieser Fall wurde auf dem unterstehenden Bild dargestellt.

QuickStop Rampe - Fall 2

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                          # NodeId = 1

# Abfrage von aktuellen Werten
print "VelDecQuickStop_dV =", d.SdoRd(0x3344, 0x00) # VEL_Dec_QuickStop_dV
print "VelDecQuickStop_dT =", d.SdoRd(0x3345, 0x00) # VEL_Dec_QuickStop_dT

# Neue Werte setzen
# Verzögerung: dV = 3000rpm, dT 100s -> dV/dT = 30rpm²
d.SdoWr(0x3344, 0x00, 3000)                         # VEL_Dec_QuickStop_dV
d.SdoWr(0x3345, 0x00, 100)                          # VEL_Dec_QuickStop_dT


334C.00h Rampengenerator - Rampentyp

Name | VEL_RampType
Bezeichnung | Rampengenerator - Rampentyp
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1}
Defaultwert | 1
Einheit | -
Betriebsart | Velocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelRampType(value), VelRampDisable(), VelRampEnable()
Querverweis | VEL_Acc_dV, VEL_Acc_dT, VEL_Dec_dV, VEL_Dec_dT

Beschreibung

Dieser Parameter legt den Rampentyp des Drehzahlprofils in Drehzahlmodus fest.

Parameterwerte:
Wert (Hex) | Bedeutung
0 | keine Rampe - schnellstmögliche Hochlauf- bzw. Bremsrampe
1 | Trapez - Die Steigungen der Rampe werden durch den Parameter VEL_Acc_dV, VEL_Acc_dT, VEL_Dec_dV und VEL_Dec_dT bestimmt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                 # NodeId = 1

print "VelRampType =", d.SdoRd(0x334C, 0x00)

d.SdoWr(0x334C, 0x00, 1)   # Rampengenerator einschalten
d.SdoWr(0x334C, 0x00, 0)   # Rampengenerator ausschalten


334D.00h Rampengenerator - Zustand

Name | VEL_RampState
Bezeichnung | Rampengenerator - Zustand
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | -
Einheit | -
Betriebsart | Velocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelRampState()
Querverweis | VEL_RampType

Beschreibung

Mit dem Parameter kann der aktuelle Zustand des Rampengenerators abgefragt werden.

Parameterwerte:

Wert | Bedeutung
Bit [2..0] = 0 | Rampengenerator gibt die Geschwindigkeit 0 (Stillstand) vor.
Bit [2..0] = 1 | ACC - Beschleunigung
Bit [2..0] = 2 | CONST_VEL - Der Drehzahlwert aus dem Rampengenerator ist gleich dem Drehzahlsollwert und ungleich Null
Bit [2..0] = 4 | DEC - Verzögerung
Bit [3..6] | Reserviert (unbestimmter Wert)
Bit 7 | DIR_NEG - Negative Drehrichtung

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                 # NodeId = 1

#init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe Sperren
d.SdoWr(0x3003, 0x00, 3)                  # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3300, 0x00, 0)                  # VEL_DesiredValue - Drehzahlsollwert = 0

# Beschleunigung = 500[U/min] / 5000[ms]
d.SdoWr(0x3340, 0x00, 500)                # VEL_Acc_dV
d.SdoWr(0x3341, 0x00, 5000)               # VEL_Acc_dT

# Verzögerung    = 500[U/min] / 5000[ms]
d.SdoWr(0x3342, 0x00, 500)                # VEL_Dec_dV
d.SdoWr(0x3343, 0x00, 5000)               # VEL_Dec_dT

# Rampengenerator einschalten
d.SdoWr(0x334C, 0x00, 1)                  # VEL_RampType

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Endstufe Freigeben

# letzter Rampenzustand
LastState = -1

# Systemzeit aufnehmen
Timestamp = (time.clock() * 1000.0)

while True:
   act_state = d.SdoRd(0x334D, 0x00)      # VEL_RampState - Rampenzustand abfragen

   # nach 10 sekunden
   if ((time.clock()*1000.0)-Timestamp) > 10000 :
      d.SdoWr(0x3300, 0x00, 500)          # VEL_DesiredValue - Drehzahlsollwert = 500[U/min]

    # nach 20 sekunden
   if ((time.clock()*1000.0)-Timestamp) > 20000 :
      d.SdoWr(0x3300, 0x00, 0)            # VEL_DesiredValue - Drehzahlsollwert = 0
      Timestamp = (time.clock() * 1000.0) # neue Systemzeit aufnehmen

   # nur bei Änderungen
   if LastState != act_state:
      LastState = act_state

      if   act_state == 0x00: print "Stillstand"
      elif act_state == 0x01: print "Beschleunigung    , positiv"
      elif act_state == 0x02: print "Konstante Drehzahl, positiv"
      elif act_state == 0x04: print "Verzögerung       , positiv"
      elif act_state == 0x81: print "Beschleunigung    , negativ"
      elif act_state == 0x82: print "Konstante Drehzahl, negativ"
      elif act_state == 0x84: print "Verzögerung       , negativ"

   time.sleep(0.1)                        # 100 ms warten


3350.00h Drehzahlrückführung

Name | VEL_Feedback
Bezeichnung | Drehzahlrückführung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {0h, 100h, 112h, 94Ah, 96Ah, 97Ah, 990h, 991h, 96A20h}
Defaultwert | 0h
Einheit | -
Betriebsart | Velocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelFeedback(value), VelFeedbackAin0(), VelFeedbackAuto(), VelFeedbackUm(), VelFeedbackEmk(), VelFeedbackHall(), VelFeedbackEnc()
Querverweis | IO_AIN_Voltage_Um, MOTOR_Nn, MOTOR_Un, MOTOR_PolN,

Beschreibung

Mit dem Parameter wird die Quelle für die Rückführung des Drehzahlreglers und des Positionierreglers bestimmt.
Nicht jede Rückführung ist für jeden Motortyp einsetzbar. Die HALL-Rückführung kann nur bei bürstenlosen Motoren eingesetzt werden. Bei Antriebsreglern mit einem Encodereingang kann die Encoder-Rückführung für beide Motortypen benutzt werden.

Bemerkungen:
  • Dieser Parameter kann nur im gesperrten Betriebszustand (DEV_Enable = 0) geändert werden. Sonst werden die Änderungen des Parameters nicht angenommen, bzw. haben keine Wirkung.
  • Da dieser Parameter auch die Rückführung für den Positionierregler bestimmt, muss dieser Parameter für Pos-Betriebsart mit bürstenbehafteten Motoren mit Encoder auf den Wert 0x96A (MOTOR_ENC_ActualPosition) gesetzt werden.

Parameterwerte:
Wert (Hex) | Name | Beschreibung
0 | Default | bei bürstenbehafteten Motoren – EMK-Rückführung bei bürstenlosen Motoren – HALL- Rückführung
0100h | IO_AIN0 | Geschwindigkeitsrückführung über analog Eingang0 (nur für DC-Motoren)
0112h | IO_AIN_VOLTAGE_Um | EMK-Rückführung
094Ah | MOTOR_HALL_ActualPosition | HALL-Rückführung (nur bürstenlose Motoren)
096Ah | MOTOR_ENC_ActualPosition | Encoder-Rückführung
096A20h | MOTOR_ENC_INC2_ActualPosition | SPI Encoder-Rückführung Achtung: Nur bei Antriebsreglern mit SPI-Schnittstelle verfügbar.
097Ah | MOTOR_ENC_SSI_ActualPosition | Absolut-Encoder-Rückführung Achtung: Nur bei Antriebsreglern mit SSI-Schnittstelle verfügbar.
0990h | MOTOR_ENC_VIRT_ActualPosition | Virtueller Encoder 0 Rückführung
0991h | MOTOR_ENC_VIRT_ActualPosition | Virtueller Encoder 1 Rückführung
Dieser Parameter kann nur im gesperrten Betriebszustand(DEV_Enable = 0) geändert werden

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)         # DEV_Enable - Endstufe sperren

print "VelFeedback =", hex(d.SdoRd(0x3350, 0x00)) # VEL_Feedback

d.SdoWr(0x3350, 0x00, 0x096A)    # VEL_Feedback - Rückführung über Encoder
d.SdoWr(0x3003, 0x00, 3)         # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3300, 0x00, 0)         # VEL_DesiredValue - Drehzahl = 0


3350.03h Drehzahlrückführung - Bezugswert

Name | VEL_Feedback_Reference
Bezeichnung | Drehzahlrückführung - Bezugswert
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 1000
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelFeedbackReference(value)
Querverweis | VEL_Feedback

Beschreibung

Wenn die Drehzahlrückführung über ein Analogeingang erfolgt (siehe Parameter VEL_Feedback), bestimmt dieser Parameter die Relation der Eingangsspannung am Analogeingang zu der Drehzahl.

Mit anderen Worten: Es ist eine Drehzahl bei einer Spannung von 10V am Analogeneingang.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

print "Drehzahlrückführung =", hex(d.SdoRd(0x3350, 0x00)) # VEL_Feedback
print "Bezugswert          =", d.SdoRd(0x3350, 0x03)      # VEL_Feedback_Reference

# 3000[U/min] @ 10V am Ain0
d.SdoWr(0x3350, 0x03, 3000)                               # VEL_Feedback_Reference


3360.00h Aktuelle Sollgeschwindigkeit

Name | VEL_ActualTargetVel
Bezeichnung | Aktuelle Sollgeschwindigkeit
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity,Position
Verfügbar ab | 1.85.03.30
Geräte | Alle
PLC Funktion | ActTrgVel()
Querverweis | VEL_ActualCommandVel, VEL_ActualVel

Beschreibung

Dieser Parameter liefert den Wert von der aktuellen Sollgeschwindigkeit. Dieser Wert entspricht dem Eingangswert des Geschwindigkeitsrampengenerators.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "Akt. Sollgeschwindigkeit = ", d.SdoRd(0x3360, 0x00)


3361.00h Aktuelle Kommandogeschwindigkeit

Name | VEL_ActualCommandVel
Bezeichnung | Aktuelle Kommandogeschwindigkeit
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity,Position
Verfügbar ab | 1.85.03.93
Geräte | Alle
PLC Funktion | ActCmdVel()
Querverweis | VEL_ActualTargetVel, VEL_ActualVel

Beschreibung

Dieser Parameter liefert den Wert von der aktuellen Kommandogeschwindigkeit. Dieser Wert entspricht dem Ausgangswert des Rampengenerators bzw. dem Eingangswert des Geschwindigkeitsreglers.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "Kommandogeschwindigkeit = ", d.SdoRd(0x3361, 0x00)


3362.00h Aktuelle ungefilterte Geschwindigkeit

Name | VEL_ActualVel
Bezeichnung | Aktuelle ungefilterte Geschwindigkeit
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Alle
Verfügbar ab | 1.85.03.30
Geräte | Alle
PLC Funktion | ActVel(value)
Querverweis | VEL_ActualTargetVel, VEL_ActualCommandVel

Beschreibung

Mit dem Parameter kann der aktuelle Geschwindigkeitsistwert (aktuelle Motordrehzahl) abgefragt werden.

Der Wert entspricht 1:1 dem Istwert, welcher für die Geschwindigkeitsreglung verwendet wird. Dieser Wert ist nicht gefiltert, d.h. die zurückgegebene Werte können variieren (Rauschen), obwohl sich der Motor mit einer konstanten mittleren Geschwindigkeit dreht.

! ACHTUNG !

Um die gefilterte Geschwindigkeit auszulesen sollte Parameter MEASUREMENT_Vel_rpm oder MEASUREMENT_Vel_cnt verwendet werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

print "Akt. Geschwindigkeit = ", d.SdoRd(0x3362, 0x00)


3380.00h Drehzahlbeschleunigung in [U/min²]

Name | VEL_Acc
Bezeichnung | Drehzahlbeschleunigung in [U/min²]
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 2147483647]
Defaultwert | 0
Einheit | [U/min²] - Umdrehungen pro Minute in Quadrat
Betriebsart | Velocity,Position
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | VelAcc_rpm2(value)
Querverweis | VEL_Acc_dV, VEL_Acc_dT, VEL_Dec

Beschreibung

Die Drehzahlbeschleunigung VEL_Acc gibt die Steigung der Hochfahrrampe in U/min² an. Dieser Parameter ist ein alternativer Parameter zu VEL_Acc_dV und VEL_Acc_dT. Falls dieser Parameter gesetzt wird, wird VEL_Acc_dV automatisch auf 0 gesetzt und die Beschleunigung wird alleine durch VEL_Acc bestimmt. In dem Fall VEL_Acc_dT hat keinen Einfluss.

Geschwindigkeitsprofil - Trapez

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Abfrage von aktuellen Werten
print "VelAcc          =", d.SdoRd(0x3380, 0x00) # VEL_Acc - Beschleunigung
print "VelDec          =", d.SdoRd(0x3381, 0x00) # VEL_Dec - Verzögerung
print "VelDecQuickStop =", d.SdoRd(0x3382, 0x00) # VEL_Dec_QuickStop - QucikStop Verzögerung

# Neue Werte setzen
d.SdoWr(0x3380, 0x00, 30000)    # VEL_Acc - 30000[U/min²] = 1000[U/min]/2000[ms]
d.SdoWr(0x3381, 0x00, 60000)    # VEL_Dec - 60000[U/min²] = 1000[U/min]/1000[ms]
d.SdoWr(0x3382, 0x00, 600000)   # VEL_Dec_QuickStop - 600000[U/min²] = 1000[U/min]/ 100[ms]


3381.00h Drehzahlverzögerung in [U/min²]

Name | VEL_Dec
Bezeichnung | Drehzahlverzögerung in [U/min²]
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 2147483647]
Defaultwert | 0
Einheit | [U/min²] - Umdrehungen pro Minute in Quadrat
Betriebsart | Velocity,Position
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | VelDec_rpm2(value)
Querverweis | VEL_Dec_dV, VEL_Dec_dT, VEL_Acc

Beschreibung

Die Drehzahlverzögerung VEL_Dec gibt die Steigung der Bremsrampe in [U/min²] an. Dieser Parameter ist ein alternativer Parameter zu VEL_Dec_dV und VEL_Dec_dT. Falls dieser Parameter gesetzt wird, wird VEL_Dec_dV automatisch auf 0 gesetzt und die Verzögerung wird alleine durch VEL_Dec bestimmt. In dem Fall VEL_Dec_dT hat keinen Einfluss.

Geschwindigkeitsprofil - Trapez

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Abfrage von aktuellen Werten
print "VelAcc          =", d.SdoRd(0x3380, 0x00) # VEL_Acc - Beschleunigung
print "VelDec          =", d.SdoRd(0x3381, 0x00) # VEL_Dec - Verzögerung
print "VelDecQuickStop =", d.SdoRd(0x3382, 0x00) # VEL_Dec_QuickStop - QucikStop Verzögerung

# Neue Werte setzen
d.SdoWr(0x3380, 0x00, 30000)    # VEL_Acc - 30000[U/min²] = 1000[U/min]/2000[ms]
d.SdoWr(0x3381, 0x00, 60000)    # VEL_Dec - 60000[U/min²] = 1000[U/min]/1000[ms]
d.SdoWr(0x3382, 0x00, 600000)   # VEL_Dec_QuickStop - 600000[U/min²] = 1000[U/min]/ 100[ms]


3382.00h Drehzahl-QuickStop-Verzögerung in [U/min²]

Name | VEL_Dec_QuickStop
Bezeichnung | Drehzahl-QuickStop-Verzögerung in [U/min²]
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Velocity,Position
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | VelDecQuickStop_rpm2(value)
Querverweis | VEL_Dec_QuickStop_dV, VEL_Dec_QuickStop_dT

Beschreibung

Die Drehzahlschnellhaltverzögerung VEL_Dec_QuickStop gibt die Steigung der Schnellhaltrampe in [U/min²] an. Dieser Parameter ist ein alternativer Parameter zu VEL_Dec_QuickStop_dV und VEL_Dec_QuickStop_dT. Falls dieser Parameter gesetzt wird, wird VEL_Dec_QuickStop_dV automatisch auf 0 gesetzt und die Schnellhaltverzögerung wird alleine durch VEL_Dec_QuickStop bestimmt. In dem Fall VEL_Dec_QuickStop_dT hat keinen Einfluss.

Folgende Ereignisse führen zu einem Stopp mit Schnellhaltrampe:
  • Kommando Dev_Cmd = CMD_QuickStop
  • Endschalter (falls definiert) wurde aktiviert. Siehe DEV_DinLimitPos, DEV_DinLimitNeg

Falls die normale Verzögerung (VEL_Dec oder VEL_Dec_dI / VEL_Dec_dT) "schneller" als QuickStop-Verzögerung ist, wird die normale Verzögerung (VEL_Dec oder VEL_Dec_dI / VEL_Dec_dT) für den Bremsvorgang genommen. Dieser Fall wurde auf dem unterstehenden Bild dargestellt.

QuickStop Rampe - Fall 2

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Abfrage von aktuellen Werten
print "VelAcc          =", d.SdoRd(0x3380, 0x00) # VEL_Acc - Beschleunigung
print "VelDec          =", d.SdoRd(0x3381, 0x00) # VEL_Dec - Verzögerung
print "VelDecQuickStop =", d.SdoRd(0x3382, 0x00) # VEL_Dec_QuickStop - QucikStop Verzögerung

# Neue Werte setzen
d.SdoWr(0x3380, 0x00, 30000)    # VEL_Acc - 30000[U/min²] = 1000[U/min]/2000[ms]
d.SdoWr(0x3381, 0x00, 60000)    # VEL_Dec - 60000[U/min²] = 1000[U/min]/1000[ms]
d.SdoWr(0x3382, 0x00, 600000)   # VEL_Dec_QuickStop - 600000[U/min²] = 1000[U/min]/ 100[ms]


33A0.00h Drehzahl-/Positionerregler - Abtastrate

Name | VEL_SampleTime
Bezeichnung | Drehzahl-/Positionerregler - Abtastrate
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {1000, 2000}
Defaultwert | 2000
Einheit | [us]
Betriebsart | Velocity,Position
Verfügbar ab | 1.64.00.41
Geräte | Alle
PLC Funktion | VelSampleTime(st_us)
Querverweis | -

Beschreibung

Mit diesem Parameter kann die Abtastrate des Drehzahl- / Positionierreglers abgefragt bzw. gesetzt werden.

Regler nach Betriebsart :
Betriebsart | Reglertyp
Vel | Drehzahlregler
Pos | Positionierregler
Je geringer die Abtastrate des Reglers eingestellt ist, desto eher lässt sich eine bessere Regelung der Drehzahl bzw. der Position erziehen.

Die Abtastrate des Reglers hat eine Auswirkung auf die Ausführungszeit der MPU-Programme (MPU = Motion Process Unit). Wenn die Abtastrate des Drehzahl- bzw. Positionierreglers geringer eingestellt wird, verlängert sich die Ausführungszeit der MPU-Befehle.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                     # NodeId = 1

print "VelSampleTime =", d.SdoRd(0x33A0, 0x00) # Abfrage

d.SdoWr(0x33A0, 0x00, 1000)                    # Sampletime = 1ms


Inhalt - Parameter 3000h (DSA) - Blockierungsüberwachung

33C0.00h | VEL_BlockageGuarding_ConfigFlags | Blockierungsüberwachung - Konfigurationsflags
33C0.01h | VEL_BlockageGuarding_VelLow | Blockierungsüberwachung - untere Drehzahl
33C0.02h | VEL_BlockageGuarding_VelHigh | Blockierungsüberwachung - obere Drehzahl
33C0.03h | VEL_BlockageGuarding_Time | Blockierungsüberwachung - Zeit
33C0.04h | VEL_BlockageGuarding_Status | Blockierungsüberwachung - Status


33C0.00h Blockierungsüberwachung - Konfigurationsflags

Name | VEL_BlockageGuarding_ConfigFlags
Bezeichnung | Blockierungsüberwachung - Konfigurationsflags
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 255]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.77.00.27
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Mit diesem Parameter kann die Blockierungsüberwachung konfiguriert werden.

Bedeutung der Bits:
Bit | Beschreibung
0 | Keine Fehlergenerierung. Wenn dieses Bit gesetzt ist, wird kein Fehler bei Blockierung erzeugt. Es wird lediglich Bit 3 vom Parameter VEL_BlockageGuarding_Status gesetzt.
[1..7] | keine Funktion

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)
                                     # NodeId = 1
# Abfrage
print "BlockageGuarding Config Flags =", d.SdoRd(0x33C0, 0x00)

# Wert setzen, 0 = Fehlergenerierung bei Blockierung
d.SdoWr(0x33C0, 0x00, 0)


33C0.01h Blockierungsüberwachung - untere Drehzahl

Name | VEL_BlockageGuarding_VelLow
Bezeichnung | Blockierungsüberwachung - untere Drehzahl
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-1 .. 2147483647]
Defaultwert | -1
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Alle
Verfügbar ab | 1.71.01.04
Geräte | Alle
PLC Funktion | VelBlockageGuarding_VelLow(value)
Querverweis | VEL_BlockageGuarding_VelHigh, VEL_BlockageGuarding_Time

Beschreibung

Dieser Parameter aktiviert die Blockierungsüberwachung und legt die untere Grenze der Drehzahl fest.

Ein Blockierungsfehler (ERR_Blockage = -3010) tritt auf, wenn folgende Bedingungen erfüllt sind:
  • Strombegrenzung aktiv ist.
  • Die aktuelle Drehzahl des Antriebs unterschreitet zuerst die Grenze VEL_BlockageGuarding_VelLow.
  • Die aktuelle Drehzahl des Antriebs bleibt dann mindestens für die Zeit VEL_BlockageGuarding_Time unterhalb der oberen Grenze VEL_BlockageGuarding_VelHigh.

Parameterwerte:
Wert | Beschreibung
-1 | Blockierungsüberwachung ist nicht aktiv
0..INT32_MAX | Blockierungsüberwachung ist aktiv, Vlow = VEL_BlockageGuarding_VelLow

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                          # NodeId = 1

# Aktuelle Werte ausgeben
print "Blockierungsüberwachung:"
print "   VelLow  =", d.SdoRd(0x33C0, 0x01)         # VEL_BlockageGuarding_VelLow
print "   VelHigh =", d.SdoRd(0x33C0, 0x02)         # VEL_BlockageGuarding_VelHigh
print "   Time    =", d.SdoRd(0x33C0, 0x03), "[ms]" # VEL_BlockageGuarding_Time

# Neue Werte setzen
d.SdoRd(0x33C0, 0x01, 100)   # VEL_BlockageGuarding_VelLow  = 100[U/min]
d.SdoRd(0x33C0, 0x02, 120)   # VEL_BlockageGuarding_VelHigh = 120[U/min]
d.SdoRd(0x33C0, 0x03, 5000)  # VEL_BlockageGuarding_Time    = 5000[ms]


33C0.02h Blockierungsüberwachung - obere Drehzahl

Name | VEL_BlockageGuarding_VelHigh
Bezeichnung | Blockierungsüberwachung - obere Drehzahl
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-1 .. 2147483647]
Defaultwert | -1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.04
Geräte | Alle
PLC Funktion | VelBlockageGuarding_VelHigh(value)
Querverweis | VEL_BlockageGuarding_VelLow, VEL_BlockageGuarding_Time

Beschreibung

Dieser Parameter gibt die obere Grenze der Drehzahl für die Blockierungsüberwachung an.

Ein Blockierungsfehler (ERR_Blockage = -3010) tritt auf, wenn folgende Bedingungen erfüllt sind:
  • Strombegrenzung aktiv ist.
  • Die aktuelle Drehzahl des Antriebs unterschreitet zuerst die Grenze VEL_BlockageGuarding_VelLow.
  • Die aktuelle Drehzahl des Antriebs bleibt dann mindestens für die Zeit VEL_BlockageGuarding_Time unterhalb der oberen Grenze VEL_BlockageGuarding_VelHigh.
Parameterwerte:
Wert | Beschreibung
-1 | Vhigh = VEL_BlockageGuarding_VelLow + 10%
0..INT32_MAX | Vhigh = VEL_BlockageGuarding_VelHigh

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                          # NodeId = 1

# Aktuelle Werte ausgeben
print "Blockierungsüberwachung:"
print "   VelLow  =", d.SdoRd(0x33C0, 0x01)         # VEL_BlockageGuarding_VelLow
print "   VelHigh =", d.SdoRd(0x33C0, 0x02)         # VEL_BlockageGuarding_VelHigh
print "   Time    =", d.SdoRd(0x33C0, 0x03), "[ms]" # VEL_BlockageGuarding_Time

# Neue Werte setzen
d.SdoRd(0x33C0, 0x01, 100)   # VEL_BlockageGuarding_VelLow  = 100[U/min]
d.SdoRd(0x33C0, 0x02, 120)   # VEL_BlockageGuarding_VelHigh = 120[U/min]
d.SdoRd(0x33C0, 0x03, 5000)  # VEL_BlockageGuarding_Time    = 5000[ms]


33C0.03h Blockierungsüberwachung - Zeit

Name | VEL_BlockageGuarding_Time
Bezeichnung | Blockierungsüberwachung - Zeit
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 10
Einheit | [100ms]
Betriebsart | Alle
Verfügbar ab | 1.71.01.04
Geräte | Alle
PLC Funktion | VelBlockageGuarding_Time(value)
Querverweis | VEL_BlockageGuarding_VelLow, VEL_BlockageGuarding_VelHigh

Beschreibung

Dieser Parameter gibt die Zeit für die Blockierungsüberwachung an.

Ein Blockierungsfehler (ERR_Blockage = -3010) tritt auf, wenn folgende Bedingungen erfüllt sind:
  • Strombegrenzung aktiv ist.
  • Die aktuelle Drehzahl des Antriebs unterschreitet zuerst die Grenze VEL_BlockageGuarding_VelLow.
  • Die aktuelle Drehzahl des Antriebs bleibt dann mindestens für die Zeit VEL_BlockageGuarding_Time unterhalb der oberen Grenze VEL_BlockageGuarding_VelHigh.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                          # NodeId = 1

# Aktuelle Werte ausgeben
print "Blockierungsüberwachung:"
print "   VelLow  =", d.SdoRd(0x33C0, 0x01)         # VEL_BlockageGuarding_VelLow
print "   VelHigh =", d.SdoRd(0x33C0, 0x02)         # VEL_BlockageGuarding_VelHigh
print "   Time    =", d.SdoRd(0x33C0, 0x03), "[ms]" # VEL_BlockageGuarding_Time

# Neue Werte setzen
d.SdoRd(0x33C0, 0x01, 100)   # VEL_BlockageGuarding_VelLow  = 100[U/min]
d.SdoRd(0x33C0, 0x02, 120)   # VEL_BlockageGuarding_VelHigh = 120[U/min]
d.SdoRd(0x33C0, 0x03, 5000)  # VEL_BlockageGuarding_Time    = 5000[ms]


33C0.04h Blockierungsüberwachung - Status

Name | VEL_BlockageGuarding_Status
Bezeichnung | Blockierungsüberwachung - Status
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.77.00.27
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Mit diesem Parameter kann der aktuelle Zustand der Blockierungsüberwachung abgefragt werden.

Bedeutung der Bits:
Bit | Name | Beschreibung
0 | BLF_Enabled | Blockierungsüberwachung ist aktiv
1 | BLF_Error | Fehler - Blockierung ist aufgetreten. Dieser Bit wird automatisch zurückgesetzt, wenn die Blockierung nicht mehr auftritt.
2 | - | Reserviert (der Wert ist unbestimmt)
3 | BLF_SavedError | Gespeicherter Fehler - Blockierung ist aufgetreten. Dieses Bit kann nur durch Beschreiben dieses Parameters mit dem Wert 8 zurückgesetzt werden.
4 | - | Reserviert (der Wert ist unbestimmt)
5 | BLF_VelLow | Untere Drehzahl (VEL_BlockageGuarding_VelLow) wurde im Blockierungszustand unterschritten.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                          # NodeId = 1

# Aktuelle Werte ausgeben
print "Status der Blockierungsüberwachung: ", d.SdoRd(0x33C0, 0x04)


3500.00h SVel Sollwert

Name | SVEL_DesiredValue
Bezeichnung | SVel Sollwert
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-32768 .. 32767]
Defaultwert | 0
Einheit | -
Betriebsart | SVelocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SVel(value)
Querverweis | SVEL_DesiredValue_Source

Beschreibung

Mit dem Parameter wird der digitale SVEL-Sollwert gesetzt. Wert dieses Parameters wird nur dann als SVEL-Sollwert übernommen, wenn Parameter SVEL_DesiredValue_Source auf den Wert von 0500h gesetzt wurde. Sonst hat dieser Parameter keine Wirkung.

Die Bedeutung der Werte dieses Parameters ist abhängig von der Rückführung des SVEL-Reglers (SVEL_Feedback)

PWM_Feedback | Rückführung | SVEL-Sollwert | Beschreibung
0h | - | PWM | Bei dieser Rückführung arbeitet der Regler als PWM-Steller. Der Sollwert wird in Promille angegeben. Wertebereich [-1000..+1000]. z.B. bei SVEL_DesiredValue = 500 wird ein effektives PWM-Signal von 50% ausgegeben.
112h | Um-Motorspannung | Drehzahl | Der SVEL_DesiredValue wird in [U/min] angegeben. Vorausgesetzt die Parameter MOTOR_Nn und MOTOR_Un wurden korrekt eingestellt.
94Ah | HALL-Sensoren | Drehzahl | Der SVEL_DesiredValue wird in [U/min] angegeben. Vorausgesetzt der Parameter MOTOR_PolN wurde korrekt eingestellt.
96Ah | ink. Encoder | Drehzahl | Der SVEL_DesiredValue wird in [U/min] angegeben. Vorausgesetzt der Parameter MOTOR_ENC_Resolution wurde korrekt eingestellt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                            # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)              # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 5)              # DEV_Mode -  Drehzahlmodus ohne Rampen
d.SdoWr(0x3500, 0x00, 0)              # SVEL_DesiredValue - Drehzahl = 0
d.SdoWr(0x3004, 0x00, 1)              # DEV_Enable - Endstufe freigeben

# Abfrage
print "SVel =", d.SdoRd(0x3500, 0x00) # SVEL_DesiredValue

# Wert setzen
d.SdoWr(0x3500, 0x00, 100)            # SVEL_DesiredValue - Drehzahl = 100 [U/min]


3502.00h SVel Skalierungsfaktor - Zähler

Name | SVEL_ScaleNum
Bezeichnung | SVel Skalierungsfaktor - Zähler
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-32768 .. 32767]
Defaultwert | 1
Einheit | -
Betriebsart | SVelocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SVelScaleNum(value), SVelScale([num,den])
Querverweis | SVEL_ScaleDen

Beschreibung

Mit dem Parameter wird der Zähler des SVEL-Skalierungsfaktors gesetzt.
Der interne SVEL-Sollwert (SVELsoll) wird nach folgender Formel berechnet:

SVELsoll = SVEL_DesiredValue * (SVEL_DesiredValue_ScaleNum / SVEL_DesiredValue_ScaleDen)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                            # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)              # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 5)              # DEV_Mode -  Drehzahlmodus ohne Rampen
d.SdoWr(0x3500, 0x00, 0)              # SVEL_DesiredValue - Drehzahl = 0
d.SdoWr(0x3004, 0x00, 1)              # DEV_Enable - Endstufe freigeben

# Abfrage aktullerer Werte
print "SVelScaleNum =", d.SdoRd(0x3502, 0x00) # SVEL_ScaleNum
print "SVelScaleDen =", d.SdoRd(0x3503, 0x00) # SVEL_ScaleDen

# Neue Werte setzen
d.SdoRd(0x3502, 0x00, 2)              # SVEL_ScaleNum - Zähler = 2
d.SdoRd(0x3503, 0x00, 10)             # SVEL_ScaleDen - Nenner = 10  --> Faktor = 0,2
d.SdoWr(0x3500, 0x00, 1000)           # SVEL_DesiredValue - Drehzahl skaliert = 0,2 * 1000[U/min] = 200[U/min]


3503.00h SVel Skalierungsfaktor - Nenner

Name | SVEL_ScaleDen
Bezeichnung | SVel Skalierungsfaktor - Nenner
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-32768 .. 32767] ausgenommen {0}
Defaultwert | 1
Einheit | -
Betriebsart | SVelocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SVelScaleDen(value), SVelScale([num,den])
Querverweis | SVEL_ScaleNum

Beschreibung

Mit dem Parameter wird der Nenner des SVEL-Skalierungsfaktors gesetzt.
Der interne SVEL-Sollwert (SVELsoll) wird nach folgender Formel berechnet:

SVELsoll = SVEL_DesiredValue * (SVEL_DesiredValue_ScaleNum / SVEL_DesiredValue_ScaleDen)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                            # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)              # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 5)              # DEV_Mode -  Drehzahlmodus ohne Rampen
d.SdoWr(0x3500, 0x00, 0)              # SVEL_DesiredValue - Drehzahl = 0
d.SdoWr(0x3004, 0x00, 1)              # DEV_Enable - Endstufe freigeben

# Abfrage aktullerer Werte
print "SVelScaleNum =", d.SdoRd(0x3502, 0x00) # SVEL_ScaleNum
print "SVelScaleDen =", d.SdoRd(0x3503, 0x00) # SVEL_ScaleDen

# Neue Werte setzen
d.SdoRd(0x3502, 0x00, 2)              # SVEL_ScaleNum - Zähler = 2
d.SdoRd(0x3503, 0x00, 10)             # SVEL_ScaleDen - Nenner = 10  --> Faktor = 0,2
d.SdoWr(0x3500, 0x00, 1000)           # SVEL_DesiredValue - Drehzahl skaliert = 0,2 * 1000[U/min] = 200[U/min]


3504.00h SVel Sollwertquelle

Name | SVEL_DesiredValue_Source
Bezeichnung | SVel Sollwertquelle
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {100h, 500h}
Defaultwert | 500h
Einheit | -
Betriebsart | SVelocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SVelSource(value), SVelSourcePar(), SVelSourceAin()
Querverweis | IO_AIN0, SVEL_DesiredValue

Beschreibung

Dieser Parameter legt die Quelle des SVEL-Sollwerts fest. Als SVEL-Sollwertquelle kann entweder ein analoger Eingang oder der Parameter SVEL_DesiredValue (Default) genommen werden.

Parameterwerte:
Wert (Hex) | Beschreibung
0100h | SVEL-Sollwertquelle = analoger Eingang 0 (Parameter IO_AIN0)
0500h | SVEL-Sollwertquelle = Parameter SVEL_DesiredValue

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                           # NodeId = 1

# Abfrage aktullerer Werte
print "SVelSource    =", hex(d.SdoRd(0x3504, 0x00))  # SVEL_DesiredValue_Source
print "SVelReference =", d.SdoRd(0x3505, 0x00)       # SVEL_DesiredValue_Reference

# Neue Werte setzen
d.SdoWr(0x3504, 0x00, 0x0100)                        # SVEL_DesiredValue_Source    - Quelle = Ain0
d.SdoWr(0x3505, 0x00, 3000)                          # SVEL_DesiredValue_Reference - 3000[U/min] @ 10V am Ain0


3505.00h SVel Bezugswert für analogen Eingang

Name | SVEL_DesiredValue_Reference
Bezeichnung | SVel Bezugswert für analogen Eingang
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-32768 .. 32767]
Defaultwert | 1000
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | SVelocity
Verfügbar ab | 1.64.00.50
Geräte | Alle
PLC Funktion | SVelReference(value)
Querverweis | SVEL_DesiredValue_Source

Beschreibung

Wenn der SVel-Sollwert über ein Analogeneingang vorgegeben wird (siehe Parameter SVEL_DesiredValue_Source), bestimmt dieser Parameter die Relation der Eingangsspannung am Analogeingang zu dem SVel-Sollwert.

Mit anderen Worten: Es ist ein SVelSollwert bei einer Spannung von 10V am Analogeingang.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                           # NodeId = 1

# Abfrage aktullerer Werte
print "SVelSource    =", hex(d.SdoRd(0x3504, 0x00))  # SVEL_DesiredValue_Source
print "SVelReference =", d.SdoRd(0x3505, 0x00)       # SVEL_DesiredValue_Reference

# Neue Werte setzen
d.SdoWr(0x3504, 0x00, 0x0100)                        # SVEL_DesiredValue_Source    - Quelle = Ain0
d.SdoWr(0x3505, 0x00, 3000)                          # SVEL_DesiredValue_Reference - 3000[U/min] @ 10V am Ain0


Inhalt - Parameter 3000h (DSA) - PI SVEL Regler

3510.00h | SVEL_Kp | SVel PI-Regler - Proportionalfaktor
3511.00h | SVEL_Ki | SVel PI-Regler - Integralfaktor
3517.00h | SVEL_KIxR | SVel IxR Faktor


3510.00h SVel PI-Regler - Proportionalfaktor

Name | SVEL_Kp
Bezeichnung | SVel PI-Regler - Proportionalfaktor
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 100
Einheit | -
Betriebsart | Velocity,Position,SVelocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SVelKp(value)
Querverweis | SVEL_Ki

Beschreibung

Mit dem Parameter wird der Proportionalfaktor des SVel-PI-Reglers bestimmt. Der Defaultwert wurde so gewählt, dass der Regler mit einem breiten Spektrum von unbelasteten Motoren stabil arbeitet. Dieser Defaultwert ist also nicht optimal für alle Motoren und Belastungsfälle. Falls eine Notwendigkeit besteht diesen Parameter einzustellen, kann der optimale Wert durch die Auswertung der Sprungantwort empirisch ermittelt werden.

ACHTUNG

 Bei Einstellungen dieses Parameters ist besondere Vorsicht geboten. Bei einem instabilen Regler (in der Regel bei zu großen PI-Parameterwerten) kann die Drehzahl unkontrolliert und ruckartig ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen !

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

# Abfrage von aktuellen Werten
print "SVelKp =", d.SdoRd(0x3510, 0x00)   # SVEL_Kp
print "SVelKi =", d.SdoRd(0x3511, 0x00)   # SVEL_Ki

# Neue Werte setzen
d.SdoWr(0x3510, 0x00, 100)                # SVEL_Kp - Kp = 100
d.SdoWr(0x3511, 0x00, 10)                 # SVEL_Ki - Ki = 10


3511.00h SVel PI-Regler - Integralfaktor

Name | SVEL_Ki
Bezeichnung | SVel PI-Regler - Integralfaktor
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 100
Einheit | -
Betriebsart | Velocity,Position,SVelocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SVelKi(value)
Querverweis | SVEL_Kp

Beschreibung

Mit dem Parameter wird der Integralfaktor des SVel-PI-Reglers bestimmt. Der Defaultwert wurde so gewählt, dass der Regler mit einem breiten Spektrum von unbelasteten Motoren stabil arbeitet. Dieser Defaultwert ist also nicht optimal für alle Motoren und Belastungsfälle. Falls eine Notwendigkeit besteht diesen Parameter einzustellen, kann der optimale Wert durch die Auswertung der Sprungantwort empirisch ermittelt werden.

Mit dem Integralfaktor kann eine verbleibende Regelabweichung reduziert werden. Je größer der Wert ist, desto schneller wird die verbleibende Regelabweichung reduziert. Bei zu großen Werten kann der Regelkreis instabil werden.

ACHTUNG

 Bei Einstellungen dieses Parameters ist besondere Vorsicht geboten. Bei einem instabilen Regler (in der Regel bei zu großen PI-Parameterwerten) kann die Drehzahl unkontrolliert und ruckartig ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen !

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

# Abfrage von aktuellen Werten
print "SVelKp =", d.SdoRd(0x3510, 0x00)   # SVEL_Kp
print "SVelKi =", d.SdoRd(0x3511, 0x00)   # SVEL_Ki

# Neue Werte setzen
d.SdoWr(0x3510, 0x00, 100)                # SVEL_Kp - Kp = 100
d.SdoWr(0x3511, 0x00, 10)                 # SVEL_Ki - Ki = 10


3517.00h SVel IxR Faktor

Name | SVEL_KIxR
Bezeichnung | SVel IxR Faktor
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 1000]
Defaultwert | 0
Einheit | [o/oo]
Betriebsart | Velocity,Position,SVelocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SVelKIxR(value)
Querverweis | -

Beschreibung

Mit dem Parameter kann der negative Einfluss des Widerstands der Motorwicklung und der Motorzuleitungen auf die Drehzahlregelgüte kompensiert werden. Allgemein, bei Werten >0 wird die Regelgüte der Drehzahl besser, bei zu großen Werten wird die Reglung instabil. Es soll ein grösstmöglicher Wert eingestellt werden, bei welchem die Drehzahlreglung sicher und stabil in ganzen Drehzahlbereich arbeitet.

Dieser Parameter wirkt nur mit SVel-Rückführung über Motorspannung. Für SVel-Encoder- oder Hallrückführung hat dieser Parameter keine Bedeutung.

ACHTUNG

 Bei Einstellungen dieses Parameters ist besondere Vorsicht geboten. Bei einem instabilen Regler (in der Regel bei zu großen PI-Parameterwerten) kann die Drehzahl unkontrolliert und ruckartig ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen !

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

# Abfrage von aktuellen Wert
print "SVelKIxR =", d.SdoRd(0x3517, 0x00)

# Neuer Wert setzen
d.SdoWr(0x3517, 0x00, 100)


3521.00h SDrehzahlbegrenzung - max. positiv

Name | SVEL_LimitMaxPos
Bezeichnung | SDrehzahlbegrenzung - max. positiv
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 65535
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity
Verfügbar ab | 1.85.03.B1
Geräte | Alle
PLC Funktion | -
Querverweis | SVEL_LimitMaxNeg

Beschreibung

Die SDrehzahlbegrenzung begrenzt den SDrehzahlsollwertbereich des Antriebsreglers. Dieser Parameter legt die obere SDrehzahl im positiven Sollwertbereich fest.
Mit den Parameter SVEL_LimitMaxPos und SVEL_LimitMaxNeg wird der SDrehzahlsollwert (SDrehzahlreglereingangsgröße) begrenzt. Deswegen ist für die korrekte SDrehzahlbegrenzung eine stabile Arbeit des SDrehzahlreglers notwendig. Bei einem „instabilen“ SDrehzahlregler kann es vorkommen, dass trotz der gesetzten Begrenzungswerte die Motordrehzahl die Grenzen übersteigt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                       # NodeId = 1

# Abfrage von aktuellen Grenzwerten
print "SVelLimitMaxPos =", d.SdoRd(0x3521, 0x00) # SVEL_LimitMaxPos
print "SVelLimitMaxNeg =", d.SdoRd(0x3523, 0x00) # SVEL_LimitMaxNeg

# Neue Werte setzen
d.SdoWr(0x3521, 0x00, 1000)                      # SVEL_LimitMaxPos - obere Begrenzung  = 1000 [U/min]
d.SdoWr(0x3523, 0x00, 500)                       # SVEL_LimitMaxNeg - untere Begrenzung =  500 [U/min]


3523.00h SDrehzahlbegrenzung - max. negativ

Name | SVEL_LimitMaxNeg
Bezeichnung | SDrehzahlbegrenzung - max. negativ
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 65535
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity
Verfügbar ab | 1.85.03.B1
Geräte | Alle
PLC Funktion | -
Querverweis | SVEL_LimitMaxPos

Beschreibung

Die SDrehzahlbegrenzung begrenzt den SDrehzahlsollwertbereich des Antriebsreglers. Dieser Parameter legt die obere SDrehzahl im negativen Sollwertbereich fest.
Mit den Parameter SVEL_LimitMaxPos und SVEL_LimitMaxNeg wird der SDrehzahlsollwert (SDrehzahlreglereingangsgröße) begrenzt. Deswegen ist für die korrekte SDrehzahlbegrenzung eine stabile Arbeit des SDrehzahlreglers notwendig. Bei einem „instabilen“ SDrehzahlregler kann es vorkommen, dass trotz der gesetzten Begrenzungswerte die Motordrehzahl die Grenzen übersteigt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                       # NodeId = 1

# Abfrage von aktuellen Grenzwerten
print "SVelLimitMaxPos =", d.SdoRd(0x3521, 0x00) # SVEL_LimitMaxPos
print "SVelLimitMaxNeg =", d.SdoRd(0x3523, 0x00) # SVEL_LimitMaxNeg

# Neue Werte setzen
d.SdoWr(0x3521, 0x00, 1000)                      # SVEL_LimitMaxPos - obere Begrenzung  = 1000 [U/min]
d.SdoWr(0x3523, 0x00, 500)                       # SVEL_LimitMaxNeg - untere Begrenzung =  500 [U/min]


3550.00h SVel Rückführung

Name | SVEL_Feedback
Bezeichnung | SVel Rückführung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {0h, 100h, 112h, 94Ah, 96Ah, 97Ah, 990h, 991h, 96A20h}
Defaultwert | 0h
Einheit | -
Betriebsart | Velocity,Position,SVelocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SVelFeedback(value), SVelFeedbackAuto(), SVelFeedbackUm(), SVelFeedbackEmk(), SVelFeedbackHall(), SVelFeedbackEnc()
Querverweis | IO_AIN_Voltage_Um, MOTOR_Nn, MOTOR_Un, MOTOR_PolN,

Beschreibung

Mit dem Parameter wird die Quelle für die SVel-Rückführung bestimmt.
Nicht jede Rückführung ist für jeden Motortypen einsetzbar. Die HALL-Rückführung kann nur bei bürstenlosen Motoren eingesetzt werden. Bei Antriebsreglern mit einem Encodereingang kann die Encoder-Rückführung für beide Motortypen benutzt werden.

Bemerkungen:
  • Dieser Parameter kann nur in gesperrten Betriebszustand (DEV_Enable = 0) geändert werden. Sonst werden die Änderungen des Parameters nicht angenommen, bzw. haben keine Wirkung.
  • Da dieser Parameter auch die Rückführung für den Positionierregler bestimmt, muss dieser Parameter für Pos-Betriebsart mit bürstenbehafteten Motoren mit Encoder auf den Wert 0x96A (MOTOR_ENC_ActualPosition) gesetzt werden.

Parameterwerte:
Wert (Hex) | Name | Beschreibung
0 | Default | bei bürstenbehafteten Motoren – EMK-Rückführung bei bürstenlosen Motoren – PWM-Steller
0112h | IO_AIN_VOLTAGE_Um | EMK-Rückführung
094Ah | MOTOR_HALL_ActualPosition | HALL-Rückführung (nur bürstenlose Motoren)
096Ah | MOTOR_ENC_ActualPosition | Encoder-Rückführung
096A20h | MOTOR_ENC_INC2_ActualPosition | SPI Encoder-Rückführung Achtung: Nur bei Antriebsreglern mit SPI-Schnittstelle verfügbar.
097Ah | MOTOR_ENC_SSI_ActualPosition | Absolut-Encoder-Rückführung Achtung: Nur bei Antriebsreglern mit SSI-Schnittstelle verfügbar.
0990h | MOTOR_ENC_VIRT_ActualPosition | Virtueller Encoder 0 Rückführung
0991h | MOTOR_ENC_VIRT_ActualPosition | Virtueller Encoder 1 Rückführung

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                         # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)                           # DEV_Enable - Endstufe sperren

# Ausgeben des aktuellen Werts
print "SVelFeedback =", hex(d.SdoRd(0x3550, 0x00)) # SVEL_Feedback

# Setze neuen Wert
d.SdoWr(0x3550, 0x00, 0x096A)                      # SVEL_Feedback - Rückführung über Encoder


3560.00h SVel - Aktuelle Sollgeschwindigkeit

Name | SVEL_ActualTargetVel
Bezeichnung | SVel - Aktuelle Sollgeschwindigkeit
Datentyp | int16
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | SVelocity
Verfügbar ab | 1.89.00.B0
Geräte | Alle
PLC Funktion | -
Querverweis | SVEL_ActualCommandVel, VEL_ActualVel

Beschreibung

Dieser Parameter liefert den Wert der aktuellen Sollgeschwindigkeit für den SVel-Regler. Im SVel-Modus ist dieser Wert gleich dem Wert SVEL_ActualCommandVelocity. In allen anderen Betriebsarten ist der Wert 0.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "Akt. Sollgeschwindigkeit = ", d.SdoRd(0x3560, 0x00)


3561.00h SVel - Aktuelle Kommandogeschwindigkeit

Name | SVEL_ActualCommandVel
Bezeichnung | SVel - Aktuelle Kommandogeschwindigkeit
Datentyp | int16
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | SVelocity,Velocity,Position
Verfügbar ab | 1.89.00.B0
Geräte | Alle
PLC Funktion | -
Querverweis | SVEL_ActualTargetVel, VEL_ActualVel

Beschreibung

Dieser Parameter liefert den Wert der aktuellen Kommandogeschwindigkeit für den SVel-Regler. Im Positions- und Vel-Modus entspricht dieser Wert dem Ausgangswert des Positionier- und Geschwindigkeitsreglers. Im SVel-Modus entspricht der Wert der Sollgeschwindigkeit.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "Kommandogeschwindigkeit = ", d.SdoRd(0x3561, 0x00)


35A1.00h SVel max. Drehzahlbereich

Name | SVEL_MaxVelRange
Bezeichnung | SVel max. Drehzahlbereich
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | [512 .. 65535]
Defaultwert | 16383
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Alle
Verfügbar ab | 1.82.02.42
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter definiert die interne Skalierung bzw. die Auflösung der Drehzahl vom SVel-Regler.

Damit man eine ruhige Drehzahlreglung bekommt ist es sinnvoll, den SVel-Reglerausgang auf die maximale Drehzahl zu skalieren.
Bisher war dieser Wert auf 30000 rpm skaliert, d.h. die Auflösung der Drehzahl des SVel-Reglers war +- 1.8 rpm, was bei kleinen Drehzahlen zu einem Ruckeln führte.
Der Default Wert 16383 rpm entspricht +- 1 rpm.

Hinweis
  • Dieser Parameter ist besonders hilfreich bei Direktantrieben mit kleiner Drehzahl

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                         # NodeId = 1

# Ausgeben des aktuellen Werts
print "SVelFeedback =", d.SdoRd(0x35A1, 0x00) # SVEL_MaxVelRange

# Setze neuen Wert
d.SdoWr(0x35A1, 0x00, 8192)                   # SVEL_MaxVelRange - Bereich = 8192 [U/min] -> +- 0,5 [U/min]


3708.00h Pos Betriebsart

Name | POS_Mode
Bezeichnung | Pos Betriebsart
Datentyp | int8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1, 2}
Defaultwert | 0
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.01.17
Geräte | Alle
PLC Funktion | PosMode(value), PosModeInterp(), PosModeInterpolation(), PosModeModulo()
Querverweis | ,

Beschreibung

Mit diesem Parameter wird die Betriebsart des Positioniermodus bestimmt.

Parameterwerte:
Wert Name Beschreibung
0 Positionierung "Normale" Positionierung
1 Interpolation Die Sollpositionen werden zyklisch vom übergeordneten System (Master) an den Antriebsregler gesendet. Falls die Aktualisierungszeit größer als die Abtastrate des Positionierreglers ist, dann werden die Zwischenpositionen durch Interpolation gewonnen. Die Aktualisierungszeit des Masters kann nur ein Vielfaches der Abtastrate des Positionierreglers betragen.
Mit dieser Betriebsart des Positioniermodus ist es möglich Anwendungen mit mehreren synchronen Achsen zu realisieren. Zum Beispiel:
  • Bahnsteuerungen
  • Elektronische Kurvenscheiben
Für genauere Beschreibung siehe die Parameter POS_InterpMethod, POS_InterpTime und POS_InterpReference.
2 Modulo-Positionierung Diese Betriebsart wird auch als "Rundachsenfunktion" bezeichnet.

z.B.: Wenn der Parameter POS_ModuloValue = 50 ist, dann ist die Positionsfolge wie unten dargestellt:

in positiver Richtung  ... 45 46 47 48 49 0  1  2  3  4  5 ...
in negativer Richtung  ...  5  4  3  2  1 0 49 48 47 46 45 ...

Für eine genauere Beschreibung siehe den Parameter POS_ModuloMethod.

  • Interpolation - Systemkonfiguration mit mehreren Achsen

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Abfrage des aktuellen Werts
print "PosMode =", d.SdoRd(0x3708, 0x00)

# Setzen des neuen Werts
d.SdoWr(0x3708, 0x00, 2)   # Modulo-Mode


3709.00h Pos Konfiguration

Name | POS_ConfigFlags
Bezeichnung | Pos Konfiguration
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0h .. FFh]
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.B8
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Mit diesem Parameter können Konfigurationen im Positioniermodus vorgenommen werden.

Bitbelegung
Bit | Name | Beschreibung
0 | EnableWrCmdPos | Bit 0 - Der Parameter 3761.00h POS_ActualCommandPosition kann nicht per Hand beschrieben werden (read only). Bit 1 - Der Parameter 3761.00h POS_ActualCommandPosition kann per Hand beschrieben werden (write / read). Dieses Bit ist ab Firmwareversion 1.85.03.93 verfügbar.
1 | NoPosLimit | Bit 0 - Positionsgrenzen sind aktiv (POS_PositionLimitMin und POS_PositionLimitMax) Bit 1 - Positionsgrenzen sind inaktiv für Modulo- und Relativpositionierung, vorausgesetzt die Parameter sind POS_PositionLimitMin = -2147483648 und POS_PositionLimitMax = 2147483647. Dieses Bit ist ab Firmwareversion 1.91.00.71 verfügbar.
2..4 | reserviert | -
5 | ModifyDecForShorterNewPos | Bit 0 - Bei einem Positionsupdate während der Bremsrampe wird normal weitergebremst und nach vollendetem Bremsvorgang zur Zielposition zurück gefahren. Bit 1 - Bei einem Positionsupdate während der Bremsrampe wird die Bremsrampe steiler um den Bremsvorgang zu beschleunigen und die neue Zielposition schneller zur erreichen. Dieses Bit ist ab Firmwareversion 1.89.00.B8 verfügbar.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print hex(d.SdoRd(0x3709, 0x00))


3720.00h Positionsbegrenzung - minimum

Name | POS_PositionLimitMin
Bezeichnung | Positionsbegrenzung - minimum
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -2147483648
Einheit | [Inkremente]
Betriebsart | Position
Verfügbar ab | 1.64.00.00
Geräte | Alle
PLC Funktion | PosLimitMin(value), PosLimit([min, max])
Querverweis | POS_PositionLimitMax

Beschreibung

Die Positionsbegrenzung begrenzt die Zielposition. Dieser Parameter legt die untere Positionsgrenze fest.
Der Wert dieser Parameters bezieht sich auf den Maschinennullpunkt (siehe POS_HomingOffset). Im Fall der Zielpositionsbegrenzung (im Positioniermodus) werden Bit5 (STAT_Limit) und Bit14 (STAT_LimitPos) gesetzt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Aktuelle werte abfragen
print "PosLimitMin =", d.SdoRd(0x3720, 0x00) # POS_PositionLimitMin
print "PosLimitMax =", d.SdoRd(0x3720, 0x01) # POS_PositionLimitMax

# Neue Werte setzen
d.SdoWr(0x3720, 0x00, 0)                     # POS_PositionLimitMin - untere Grenze =     0 ink
d.SdoWr(0x3720, 0x01, 10000)                 # POS_PositionLimitMax - obere Grenze  = 10000 ink


3720.01h Positionsbegrenzung - maximum

Name | POS_PositionLimitMax
Bezeichnung | Positionsbegrenzung - maximum
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 2147483647
Einheit | [Inkremente]
Betriebsart | Position
Verfügbar ab | 1.64.00.00
Geräte | Alle
PLC Funktion | PosLimitMax(value), PosLimit([min, max])
Querverweis | POS_PositionLimitMin

Beschreibung

Die Positionsbegrenzung begrenzt die Zielposition. Dieser Parameter legt die obere Positionsgrenze fest.
Der Wert dieser Parameters bezieht sich auf den Maschinennullpunkt (siehe POS_HomingOffset). Im Fall der Zielpositionsbegrenzung (im Positioniermodus) werden Bit5 (STAT_Limit) und Bit14 (STAT_LimitPos) gesetzt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Aktuelle werte abfragen
print "PosLimitMin =", d.SdoRd(0x3720, 0x00) # POS_PositionLimitMin
print "PosLimitMax =", d.SdoRd(0x3720, 0x01) # POS_PositionLimitMax

# Neue Werte setzen
d.SdoWr(0x3720, 0x00, 0)                     # POS_PositionLimitMin - untere Grenze =     0 ink
d.SdoWr(0x3720, 0x01, 10000)                 # POS_PositionLimitMax - obere Grenze  = 10000 ink


3732.00h Positionsschleppfehler - Fenster

Name | POS_FollowingErrorWindow
Bezeichnung | Positionsschleppfehler - Fenster
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 1000
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.10.00.00
Geräte | Alle
PLC Funktion | PosFollowingErrorWindow(value)
Querverweis | POS_FollowingErrorTime, POS_FollowingErrorWindowDyn, POS_FollowingErrorTimeDyn, POS_ActualFollowingError

Beschreibung

Dieser Parameter bestimmt einen maximal zulässigen Schleppabstand (Differenz zwischen Kommandoposition und Istposition).
Wenn der absolute Wert des Schleppabstandes diesen Parameterwert länger als die Zeit POS_FollowingErrorTime überschreitet, wird ein Schleppfehler (ERR_Regp_FollowingError = -4000) ausgelöst, und das Bit6 (STAT_FollowingError) vom DEV_Status gesetzt
In dem Fehlerfall kann der Schleppabstand, bei welchem der Fehler ausgelöst wurde, mit Parameter POS_ActualFollowingError abgefragt werden.

Dieser Schleppfehler kann u.a. bei folgenden Ereignissen auftreten:
  • blockiertem oder defektem Motor
  • verpolten Motorleitungen
  • vertauschten Encoderleitungen
  • defektem Encoder
  • Kabelbruch bzw. Wackelkontakt (z.B. Motorleitungen, Geberleitungen)
  • nicht erreichbarer Sollgeschwindigkeit (z.B. bei zu kleiner Leistungsversorgungsspannung)
  • falsch eingestellten Reglerfaktoren (CURR_Kp. CURR_Ki, VEL_Kp, VEL_Ki, VEL_Kd, SVEL_Kp, SVEL_Ki).

Parameterwerte:
POS_FollowingErrorWindow | Beschreibung
= FFFFFFFFh | Komplette Schleppabstandsüberwachung ist abgeschaltet (auch dynamische - POS_FollowingErrorWindowDyn).
< FFFFFFFFh | Schleppabsdandsüberwachung ist aktiv.

Die Funktion des Parameter ist vom Parameter POS_FollowingErrorWindowDyn abhängig (siehe untenstehende Tabelle).

Parameterfunktion:
POS_FollowingErrorWindowDyn | Funktion vom POS_FollowingErrorWindow
= FFFFFFFFh | Max. zulässigen Schleppabstand für Stillstand und alle Bewegungsphasen
< FFFFFFFFh | Max. zulässigen Schleppabstand nur für Stillstand

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Aktuelle werte abfragen
print "PosFollowingErrorWindow    =", d.SdoRd(0x3732, 0x00) # POS_FollowingErrorWindow
print "PosFollowingErrorWindowDyn =", d.SdoRd(0x3732, 0x01) # POS_FollowingErrorWindowDyn
print "PosFollowingErrorTime      =", d.SdoRd(0x3733, 0x00) # POS_FollowingErrorTime
print "PosFollowingErrorTimeDyn   =", d.SdoRd(0x3733, 0x01) # POS_FollowingErrorTimeDyn

# Neue Werte setzen
d.SdoWr(0x3732, 0x00, 500)                                  # POS_FollowingErrorWindow
d.SdoWr(0x3732, 0x01, 2000)                                 # POS_FollowingErrorWindowDyn
d.SdoWr(0x3733, 0x00, 100)                                  # POS_FollowingErrorTime
d.SdoWr(0x3733, 0x01, 200)                                  # POS_FollowingErrorTimeDyn


3732.01h Positionsschleppfehler - Fenster, Dynamisch

Name | POS_FollowingErrorWindowDyn
Bezeichnung | Positionsschleppfehler - Fenster, Dynamisch
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | FFFFFFFFh
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.01.04
Geräte | Alle
PLC Funktion | PosFollowingErrorWindowDyn(value)
Querverweis | POS_FollowingErrorTimeDyn, POS_FollowingErrorWindow, POS_FollowingErrorTime, POS_ActualFollowingError

Beschreibung

Dieser Parameter bestimmt einen maximalen zulässigen Schleppabstand (Differenz zwischen Kommandoposition und Istposition) bei einer Bewegung.
Wenn der absolute Wert des Schleppabstandes dieser Parameterwert länger als die Zeit POS_FollowingErrorTimeDyn überschreitet, wird ein Schleppfehler (ERR_Regp_FollowingErrorDyn = -4001) ausgelöst, und der Bit6 (STAT_FollowingError) vom DEV_Status gesetzt.
In dem Fehlerfall kann der Schleppabstand, bei welchem der Fehler ausgelöst wurde, mit Parameter POS_ActualFollowingError abgefragt werden.

Dieser Schleppfehler kann u.a. bei folgenden Ereignissen auftreten:
  • blockiertem oder defektem Motor
  • verpolten Motorleitungen
  • vertauschten Encoderleitungen
  • defektem Encoder
  • Kabelbruch bzw. Wackelkontakt (z.B. Motorleitungen, Geberleitungen)
  • nicht erreichbarer Sollgeschwindigkeit (z.B. bei zu kleiner Leistungsversorgungsspannung)
  • falsch eingestellten Reglerfaktoren (CURR_Kp. CURR_Ki, VEL_Kp, VEL_Ki, VEL_Kd, SVEL_Kp, SVEL_Ki).

Parameterwerte:
POS_FollowingErrorWindowDyn | Beschreibung
= FFFFFFFFh | Parameter ist nicht aktiv. Max. zulässige Schleppabstand wird alleine durch den Parameter POS_FollowingErrorWindow bestimmt.
< FFFFFFFFh | Dieser Parameter bestimmt die max. zulässigen Schleppabstand für alle Bewegungsphasen. Max. zulässigen Schleppabstand für Stillstand wird durch den Parameter POS_FollowingErrorWindow bestimmt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Aktuelle werte abfragen
print "PosFollowingErrorWindow    =", d.SdoRd(0x3732, 0x00) # POS_FollowingErrorWindow
print "PosFollowingErrorWindowDyn =", d.SdoRd(0x3732, 0x01) # POS_FollowingErrorWindowDyn
print "PosFollowingErrorTime      =", d.SdoRd(0x3733, 0x00) # POS_FollowingErrorTime
print "PosFollowingErrorTimeDyn   =", d.SdoRd(0x3733, 0x01) # POS_FollowingErrorTimeDyn

# Neue Werte setzen
d.SdoWr(0x3732, 0x00, 500)                                  # POS_FollowingErrorWindow
d.SdoWr(0x3732, 0x01, 2000)                                 # POS_FollowingErrorWindowDyn
d.SdoWr(0x3733, 0x00, 100)                                  # POS_FollowingErrorTime
d.SdoWr(0x3733, 0x01, 200)                                  # POS_FollowingErrorTimeDyn


3733.00h Positionsschleppfehler - Zeit

Name | POS_FollowingErrorTime
Bezeichnung | Positionsschleppfehler - Zeit
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.01.04
Geräte | Alle
PLC Funktion | PosFollowingErrorTime(time_ms)
Querverweis | POS_FollowingErrorWindow, POS_FollowingErrorWindowDyn, POS_FollowingErrorTimeDyn

Beschreibung

Der Schleppfehler tritt erst dann auf, wenn der Schleppabstand der Wert von POS_FollowingErrorWindow länger als die Zeit überschreitet, die im Parameter POS_FollowingErrorTime eingestellt wurde. Für weitere Beschreibung siehe Parameter POS_FollowingErrorWindow.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Aktuelle werte abfragen
print "PosFollowingErrorWindow    =", d.SdoRd(0x3732, 0x00) # POS_FollowingErrorWindow
print "PosFollowingErrorWindowDyn =", d.SdoRd(0x3732, 0x01) # POS_FollowingErrorWindowDyn
print "PosFollowingErrorTime      =", d.SdoRd(0x3733, 0x00) # POS_FollowingErrorTime
print "PosFollowingErrorTimeDyn   =", d.SdoRd(0x3733, 0x01) # POS_FollowingErrorTimeDyn

# Neue Werte setzen
d.SdoWr(0x3732, 0x00, 500)                                  # POS_FollowingErrorWindow
d.SdoWr(0x3732, 0x01, 2000)                                 # POS_FollowingErrorWindowDyn
d.SdoWr(0x3733, 0x00, 100)                                  # POS_FollowingErrorTime
d.SdoWr(0x3733, 0x01, 200)                                  # POS_FollowingErrorTimeDyn


3733.01h Positionsschleppfehler - Zeit, Dynamisch

Name | POS_FollowingErrorTimeDyn
Bezeichnung | Positionsschleppfehler - Zeit, Dynamisch
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | FFFFh
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.01.04
Geräte | Alle
PLC Funktion | PosFollowingErrorTimeDyn(time_ms)
Querverweis | POS_FollowingErrorWindow, POS_FollowingErrorWindowDyn, POS_FollowingErrorTime

Beschreibung

Der Schleppfehler bei aktiver Bewegung tritt erst dann auf, wenn der Schleppabstand der Wert von POS_FollowingErrorWindowDyn länger als die Zeit überschreitet, die im Parameter POS_FollowingErrorTimeDyn eingestellt wurde. Für weitere Beschreibung siehe Parameter POS_FollowingErrorWindowDyn.

Parameterwerte:
Wert | Beschreibung
= FFFFh | Interner Wert von FollowingErrorTimeDyn ist gleich dem Wert vom Parameter POS_FollowingErrorTime
< FFFFh | Interner Wert von FollowingErrorTimeDyn ist gleich dem eingestellten Wert

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Aktuelle werte abfragen
print "PosFollowingErrorWindow    =", d.SdoRd(0x3732, 0x00) # POS_FollowingErrorWindow
print "PosFollowingErrorWindowDyn =", d.SdoRd(0x3732, 0x01) # POS_FollowingErrorWindowDyn
print "PosFollowingErrorTime      =", d.SdoRd(0x3733, 0x00) # POS_FollowingErrorTime
print "PosFollowingErrorTimeDyn   =", d.SdoRd(0x3733, 0x01) # POS_FollowingErrorTimeDyn

# Neue Werte setzen
d.SdoWr(0x3732, 0x00, 500)                                  # POS_FollowingErrorWindow
d.SdoWr(0x3732, 0x01, 2000)                                 # POS_FollowingErrorWindowDyn
d.SdoWr(0x3733, 0x00, 100)                                  # POS_FollowingErrorTime
d.SdoWr(0x3733, 0x01, 200)                                  # POS_FollowingErrorTimeDyn


3734.00h Positionsschleppfehler - Begrenzung

Name | POS_FollowingErrorLimit
Bezeichnung | Positionsschleppfehler - Begrenzung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 4294967295
Einheit | [Inkremente]
Betriebsart | Position
Verfügbar ab | 1.85.03.B2
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Mit dem Parameter kann der Schleppfehler begrenzt werden. Wenn der Betrag des Schleppfehlers größer als dieser Parameter wird, dann wird die Drehzahlvorgabe reduziert bis der Schleppfehler kleiner wird.
Ist die Schleppfehlerbegrenzung deaktiviert und es kommt zu einer Blockade des Motors, generiert der Rampengenerator weiterhin ein Positionskommando. Das kann dazu führen. dass beim Lösen der Blockade der Antrieb sprunghaft beschleunigt und die Drehzahl über das vorgegebene Limit steigt. Das kann zu Beschädigung des Systems führen.

Ist die Schleppfehlerbegrenzung aktiviert und es kommt zu einer Blockade des Motors, generiert der Rampengenerator nur bis zum Erreichen des Limits das Postionskommando. Das führt dazu, dass beim Lösen der Blockade nur ein geringer Schleppfehler ausgeglichen werden muss und deswegen das System nicht sprunghaft beschleunigt.

Dieser Parameter ist interessant für Anwendungen wie z.B:
  • Türsteuerungen
  • Schrankensteuerungen
  • Palletierung (stark variierende belastungen)
  • Positionierung mit vorübergehender Blockierung
  • ...

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Aktuelle werte abfragen
print "PosFollowingErrorLimit =", d.SdoRd(0x3734, 0x00) # POS_FollowingErrorLimit

# Neue Werte setzen
d.SdoWr(0x3734, 0x00, 1000)                              # POS_FollowingErrorLimit


373A.00h Positionierfenster

Name | POS_PositionWindow
Bezeichnung | Positionierfenster
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | FFFFFFFFh
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.64.00.30
Geräte | Alle
PLC Funktion | PosWindow(value), PosWindowDisable()
Querverweis | POS_PositionWindowTime, POS_PositionWindowTimeout

Beschreibung

Das Positionierfenster liegt symmetrisch um das Lage-Ziel. Sobald die Istposition innerhalb dieses Fensters liegt, wird im Status (DEV_Status) das Bit STAT_Reached (Sollwert erreicht) gesetzt. Die Istposition des Antriebs muss sich erst eine gewisse Zeit innerhalb des Fenster befinden, bevor das Statusbit gesetzt wird. Diese Zeit wird mit dem Parameter POS_PositionWindowTime festgelegt. Die Überprüfung, ob sich die Istposition im Positionierfenster befindet, wird erst nach "Beenden" der Positionierung durch den Rampengenerator aktiviert.

Parameterwerte:
Wert | Beschreibung
<FFFFFFFFh | Positionierfenster
=FFFFFFFh | Ausgeschaltet. Das Statusbit STAT_Reached wird nur durch den Rampengenerator bestimmt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                         # NodeId = 1

# Aktuelle werte abfragen
print "PosWindow        =", d.SdoRd(0x373A, 0x00)  # POS_PositionWindow
print "PosWindowTime    =", d.SdoRd(0x373B, 0x00)  # POS_PositionWindowTime
print "PosWindowTimeout =", d.SdoRd(0x373B, 0x01)  # POS_PositionWindowTimeout

# Neue Werte setzen
d.SdoWr(0x373A, 0x00, 100)                         # POS_PositionWindow
d.SdoWr(0x373B, 0x00, 200)                         # POS_PositionWindowTime
d.SdoWr(0x373b, 0x01, 1000)                        # POS_PositionWindowTimeout


373B.00h Positionierfenster - Zeit

Name | POS_PositionWindowTime
Bezeichnung | Positionierfenster - Zeit
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | [ms]
Betriebsart | Position
Verfügbar ab | 1.64.00.30
Geräte | Alle
PLC Funktion | PosWindowTime(time_ms)
Querverweis | POS_PositionWindow, POS_PositionWindowTimeout

Beschreibung

Mit dem Parameter Positionierfenster-Zeit wird vermieden, dass bei einem kurzen Überstreichen des Positionierfensters das Statusbit STAT_Reached (vom DEV_Status) gesetzt wird. Die Istposition des Antriebs muss sich erst eine gewisse Zeit innerhalb des Fenster befinden, bevor das Statusbit gesetzt wird.

Parameterwerte:
Wert | Beschreibung
< FFFFh | Positionierfenster-Zeit in [ms]
= FFFFh | Ausgeschaltet. Das Statusbit STAT_Reached wird nur durch den Rampengenerator bestimmt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                         # NodeId = 1

# Aktuelle werte abfragen
print "PosWindow        =", d.SdoRd(0x373A, 0x00)  # POS_PositionWindow
print "PosWindowTime    =", d.SdoRd(0x373B, 0x00)  # POS_PositionWindowTime
print "PosWindowTimeout =", d.SdoRd(0x373B, 0x01)  # POS_PositionWindowTimeout

# Neue Werte setzen
d.SdoWr(0x373A, 0x00, 100)                         # POS_PositionWindow
d.SdoWr(0x373B, 0x00, 200)                         # POS_PositionWindowTime
d.SdoWr(0x373b, 0x01, 1000)                        # POS_PositionWindowTimeout


373B.01h Positionierfenster - Timeout

Name | POS_PositionWindowTimeout
Bezeichnung | Positionierfenster - Timeout
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 65535
Einheit | [ms]
Betriebsart | Position
Verfügbar ab | 1.64.00.30
Geräte | Alle
PLC Funktion | PosWindowTimeout(time_ms)
Querverweis | POS_PositionWindow, POS_PositionWindowTime

Beschreibung

Mit dem Parameter kann die Überprüfung, ob die Zielposition innerhalb einer Zeitspanne erreicht wurde, aktiviert werden. Die Zeitmessung wird nach "Beenden" der Positionierung durch den der Rampengenerator gestartet. In dieser Zeit muss der Statusbit STAT_Reached (vom DEV_Status) gesetzt werden, sonst wird ein Fehler (ERR_Regp_ReachedTimeout = -4005) gemeldet.

Parameterwerte:
Wert | Beschreibung
< FFFFh | Timeout in [ms].
= FFFFh | Timeoutüberwachung ist ausgeschaltet.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                         # NodeId = 1

# Aktuelle werte abfragen
print "PosWindow        =", d.SdoRd(0x373A, 0x00)  # POS_PositionWindow
print "PosWindowTime    =", d.SdoRd(0x373B, 0x00)  # POS_PositionWindowTime
print "PosWindowTimeout =", d.SdoRd(0x373B, 0x01)  # POS_PositionWindowTimeout

# Neue Werte setzen
d.SdoWr(0x373A, 0x00, 100)                         # POS_PositionWindow
d.SdoWr(0x373B, 0x00, 200)                         # POS_PositionWindowTime
d.SdoWr(0x373b, 0x01, 1000)                        # POS_PositionWindowTimeout


373C.00h Position erreicht - Konfigurationsbits

Name | POS_ReachedConfigFlags
Bezeichnung | Position erreicht - Konfigurationsbits
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0h .. FFFFh]
Defaultwert | 0h
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.01.11
Geräte | Alle
PLC Funktion | PosReachedConfigFlags(value)
Querverweis | DEV_Status, POS_PositionWindow, POS_PositionWindowTime, POS_PositionWindowTimeout

Beschreibung

Mit diesen Bits kann das Verhalten vom Bit "STAT_Reached" (Ein Bit vom DEV_Status) im Positioniermodus beeinflusst werden.

Begriffe:
    TrgPos - Zielposition
    CmdPos - Kommandoposition (Position nach dem Rampengenerator)

Funktionsweise des Bit "STAT_Reached":

Wenn alle Bits in diesem Parameter auf 0 gesetzt sind, und POS_PositionWindow und POS_PositionWindowTime nicht aktiviert wurden, dann wird das Bit "STAT_Reached" gesetzt, sobald sich der Rampengenerator (VEL_RampState) im IDLE-Zustand befindet (Stillstand).
Ein abweichendes Verhalten kann mit den folgenden Parameterwerten erreicht werden:

Parameterwerte:
Bit | Name | Beschreibung
0 | FLAG_SetOnlyIfTargetPosValid | Wenn dieses Bit == 1 ist, dann wird das Bit "STAT_Reached" nach einem Freigabe-Kommando erst dann gesetzt, wenn ein gültiges Positionierkommando ausgeführt wurde.
1 | FLAG_SetOnlyIfTargetPosReached | Wenn dieses Bit == 1 ist, dann wird das Bit "STAT_Reached" nur dann gesetzt, wenn die Kommandoposition gleich der Zielposition ist. Dieses Bit hat nur dann eine Bedeutung, wenn das Bit "STAT_Reached" nur vom Rampengenerator gesetzt wird. D.h. wenn POS_PositionWindow und POS_PositionWindowTime nicht aktiviert wurden.
2 | FLAG_NotSetTrgPosAfterHalt | Wenn dieses Bit == 1 ist, dann wird nach einem Halt-Kommando die Zielposition nicht auf die Kommandoposition gesetzt. Hinweis: Wenn nach einem Halt-Kommando das Bit "STAT_Reached" nicht gesetzt werden soll, dann muss das Bit "FLAG_SetOnlyIfTargetPosReached" und "FLAG_NotSetTrgPosAfterHalt" gesetzt werden.
3 | FLAG_NotSetTrgPosAfterQuickStop | Wenn dieses Bit == 1 ist, dann wird nach einem QuickStop-Kommando die Zielposition nicht auf die Kommandoposition gesetzt. Hinweis: Wenn nach einem QuickStop-Kommando das Bit "STAT_Reached" nicht gesetzt werden soll, dann muss das Bit "FLAG_SetOnlyIfTargetPosReached" und "FLAG_NotSetTrgPosAfterQuickStop" gesetzt werden.
4 | FLAG_SetTrgPosOnEnable | Wenn dieses Bit == 1 ist, dann wird bei einem Freigabe-Kommando die Zielposition auf die Kommandoposition gesetzt.
5 | FLAG_CheckTargetPosReachedTimeoutAfterEnable | Wenn dieses Bit == 1 ist, dann wird die Zeitüberwachung (POS_PositionWindowTimeout), ob die Zielposition erreicht wurde, gleich nach dem Freigabe-Kommando gestartet. Ansonsten erst nach dem erstem Positionierbefehl.
6-15 | Reserviert | Reservierte Bits für zukünftige Funktionen. Diese Bits müssen alle 0 sein.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                         # NodeId = 1

# Abfrage des aktuellen Werts
print "POS_ReachedConfigFlag =", hex(d.SdoRd(0x373C, 0x00))  # POS_ReachedConfigFlags

# Setzen des neuen Werts
d.SdoWr(0x373C, 0x00, 0x0)                                   # POS_ReachedConfigFlags


373D.00h Positionierfenster - Endstufe sperren

Name | POS_DeadWindowOff
Bezeichnung | Positionierfenster - Endstufe sperren
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 4294967295
Einheit | [Inkremente]
Betriebsart | Position
Verfügbar ab | 1.87.00.18
Geräte | Alle
PLC Funktion | -
Querverweis | POS_DeadWindowOn, POS_DeadTimeOff, POS_DeadTimeOn, POS_DeadVel

Beschreibung

Dieser Parameter kann die Endstufe beim Erreichen der Zielposition abschalten und die Position in einem bestimmten Bereich für eine definierte Zeit halten. Damit kann Energie gespart und die thermische Belastung reduziert werden.

Das Positionierfenster liegt symmetrisch um das Lage-Ziel. Sobald das Bit STAT_Reached (Sollwert erreicht) im Status (DEV_Status) gesetzt wurde und die Istposition innerhalb dieses Fensters (POS_DeadWindowOff) liegt, beginnt die Totzeit (POS_DeadTimeOff) abzulaufen. Nach Ablauf der Totzeit wird die Endstufe automatisch gesperrt.

Parameterwerte:
Wert | Beschreibung
<FFFFFFFFh | Positionierfenster
=FFFFFFFh | Ausgeschaltet. Die automatische Sperrung der Endstude ist deaktiviert

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                         # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)           # Betriebsart = Positionierregler

d.SdoWr(0x373A, 0x00, 200)         # POS_PositionWindow - 200 ink
d.SdoWr(0x373B, 0x00, 150)         # POS_PositionWindowTime - 150 ms
# --> nach 150 ms im Zielbereich(+- 200 ink) -> STAT_Reached = 1

d.SdoWr(0x373D, 0x00, 1000)        # POS_DeadWindowOff - 1000 ink
d.SdoWr(0x373E, 0x00, 100)         # POS_DeadTimeOff - 100 ms
# --> nach 100 ms nachdem STAT_Reached = 1
#     und im DeadWindowOff Fenster -> Disable

d.SdoWr(0x373D, 0x01, 2000)        # POS_DeadWindowOn  - 2000 ink
d.SdoWr(0x373E, 0x01, 200)         # POS_DeadTimeOn - 200 ms
# --> nach 200 ms aussserhalb des
#     DeadWindowOff Fensters -> Enable

d.SdoWr(0x373F, 0x00, 10)          # POS_DeadVel - 10 U/min
# --> Bewegt sich mit 10 U/min auf Zielposition wenn DeadWindowOn aktiviert wird

d.SdoWr(0x3762, 0x00, 0)           # POS_ActualPosition - 0
d.SdoWr(0x3004, 0x00, 1)           # DEV_Enable - Endstufe Freigeben

d.SdoWr(0x3000, 0x10, 100)         # DEV_CmdData0 - 100 rpm
d.SdoWr(0x3000, 0x11, 6000)        # DEV_CmdData1 - 6000 ink
d.SdoWr(0x3000, 0x01, 0)           # DEV_Cmd_ExecOnChange - Toggle command
d.SdoWr(0x3000, 0x01, 0x33)        # DEV_Cmd_ExecOnChange - MovA

while 1:
   Status = d.SdoRd(0x3002, 0x00)  # DEV_Status
   if (Status & 0x10) == 0x10:     # STAT_Reached == 1
      print "Ziel erreicht"        # Ziel erreicht
      break                        # Schleife beenden


373D.01h Positionierfenster - Endstufe aktivieren

Name | POS_DeadWindowOn
Bezeichnung | Positionierfenster - Endstufe aktivieren
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 4294967295
Einheit | [Inkremente]
Betriebsart | Position
Verfügbar ab | 1.87.00.18
Geräte | Alle
PLC Funktion | -
Querverweis | POS_DeadWindowOff, POS_DeadTimeOff, POS_DeadTimeOn, POS_DeadVel

Beschreibung

Dieser Paramter kann die Endstufe bei ungewolltem Verlassen eines bestimmten Bereichs um eine Zielposition für eine definierte Zeit, automatisch einschalten und zurück auf die Zielposition fahren.

Das Positionierfenster liegt symmetrisch um das Lage-Ziel. Befindet sich die Ist-Position außerhalb dieses Fensters (POS_DeadWindowOn) beginnt die Totzeit (POS_DeadTimeOn) abzulaufen. Nach Ablauf der Totzeit wird die Endstufe freigegeben und fährt automatisch auf die letzte Sollposition.

Parameterwerte:
Wert | Beschreibung
<FFFFFFFFh | Positionierfenster
=FFFFFFFh | Ausgeschaltet. Das automatische Freigeben der Endstude ist deaktiviert

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                         # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)           # Betriebsart = Positionierregler

d.SdoWr(0x373A, 0x00, 200)         # POS_PositionWindow - 200 ink
d.SdoWr(0x373B, 0x00, 150)         # POS_PositionWindowTime - 150 ms
# --> nach 150 ms im Zielbereich(+- 200 ink) -> STAT_Reached = 1

d.SdoWr(0x373D, 0x00, 1000)        # POS_DeadWindowOff - 1000 ink
d.SdoWr(0x373E, 0x00, 100)         # POS_DeadTimeOff - 100 ms
# --> nach 100 ms nachdem STAT_Reached = 1
#     und im DeadWindowOff Fenster -> Disable

d.SdoWr(0x373D, 0x01, 2000)        # POS_DeadWindowOn  - 2000 ink
d.SdoWr(0x373E, 0x01, 200)         # POS_DeadTimeOn - 200 ms
# --> nach 200 ms aussserhalb des
#     DeadWindowOff Fensters -> Enable

d.SdoWr(0x373F, 0x00, 10)          # POS_DeadVel - 10 U/min
# --> Bewegt sich mit 10 U/min auf Zielposition wenn DeadWindowOn aktiviert wird

d.SdoWr(0x3762, 0x00, 0)           # POS_ActualPosition - 0
d.SdoWr(0x3004, 0x00, 1)           # DEV_Enable - Endstufe Freigeben

d.SdoWr(0x3000, 0x10, 100)         # DEV_CmdData0 - 100 rpm
d.SdoWr(0x3000, 0x11, 6000)        # DEV_CmdData1 - 6000 ink
d.SdoWr(0x3000, 0x01, 0)           # DEV_Cmd_ExecOnChange - Toggle command
d.SdoWr(0x3000, 0x01, 0x33)        # DEV_Cmd_ExecOnChange - MovA

while 1:
   Status = d.SdoRd(0x3002, 0x00)  # DEV_Status
   if (Status & 0x10) == 0x10:     # STAT_Reached == 1
      print "Ziel erreicht"        # Ziel erreicht
      break                        # Schleife beenden


373E.00h Positionierfenster Zeit - Endstufe sperren

Name | POS_DeadTimeOff
Bezeichnung | Positionierfenster Zeit - Endstufe sperren
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | [ms]
Betriebsart | Position
Verfügbar ab | 1.87.00.18
Geräte | Alle
PLC Funktion | -
Querverweis | POS_DeadWindowOff, POS_DeadWindowOn, POS_DeadTimeOn, POS_DeadVel

Beschreibung

Nach Ablauf der Totzeit (POS_DeadTimeOff) wird die Endstufe automatisch gesperrt.
Die Totzeit beginnt abzulaufen, wenn das Status Bit STAT_Reached (Sollwert erreicht) im Status(DEV_Status) gesetzt wurde und sich der Antrieb im Zielfenster (POS_DeadWindowOff) befindet.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                         # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)           # Betriebsart = Positionierregler

d.SdoWr(0x373A, 0x00, 200)         # POS_PositionWindow - 200 ink
d.SdoWr(0x373B, 0x00, 150)         # POS_PositionWindowTime - 150 ms
# --> nach 150 ms im Zielbereich(+- 200 ink) -> STAT_Reached = 1

d.SdoWr(0x373D, 0x00, 1000)        # POS_DeadWindowOff - 1000 ink
d.SdoWr(0x373E, 0x00, 100)         # POS_DeadTimeOff - 100 ms
# --> nach 100 ms nachdem STAT_Reached = 1
#     und im DeadWindowOff Fenster -> Disable

d.SdoWr(0x373D, 0x01, 2000)        # POS_DeadWindowOn  - 2000 ink
d.SdoWr(0x373E, 0x01, 200)         # POS_DeadTimeOn - 200 ms
# --> nach 200 ms aussserhalb des
#     DeadWindowOff Fensters -> Enable

d.SdoWr(0x373F, 0x00, 10)          # POS_DeadVel - 10 U/min
# --> Bewegt sich mit 10 U/min auf Zielposition wenn DeadWindowOn aktiviert wird

d.SdoWr(0x3762, 0x00, 0)           # POS_ActualPosition - 0
d.SdoWr(0x3004, 0x00, 1)           # DEV_Enable - Endstufe Freigeben

d.SdoWr(0x3000, 0x10, 100)         # DEV_CmdData0 - 100 rpm
d.SdoWr(0x3000, 0x11, 6000)        # DEV_CmdData1 - 6000 ink
d.SdoWr(0x3000, 0x01, 0)           # DEV_Cmd_ExecOnChange - Toggle command
d.SdoWr(0x3000, 0x01, 0x33)        # DEV_Cmd_ExecOnChange - MovA

while 1:
   Status = d.SdoRd(0x3002, 0x00)  # DEV_Status
   if (Status & 0x10) == 0x10:     # STAT_Reached == 1
      print "Ziel erreicht"        # Ziel erreicht
      break                        # Schleife beenden


373E.01h Positionierfenster Zeit - Endstufe aktivieren

Name | POS_DeadTimeOn
Bezeichnung | Positionierfenster Zeit - Endstufe aktivieren
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | [ms]
Betriebsart | Position
Verfügbar ab | 1.87.00.18
Geräte | Alle
PLC Funktion | -
Querverweis | POS_DeadWindowOff, POS_DeadWindowOn, POS_DeadTimeOff, POS_DeadVel

Beschreibung

Nach Ablauf der Totzeit (POS_DeadTimeOn) wird die Endstufe automatisch freigegeben und fährt auf die letzte Sollposition.
Die Totzeit beginnt abzulaufen, wenn die Ist-Position außerhalb des Fensters POS_DeadWindowOn liegt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                         # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)           # Betriebsart = Positionierregler

d.SdoWr(0x373A, 0x00, 200)         # POS_PositionWindow - 200 ink
d.SdoWr(0x373B, 0x00, 150)         # POS_PositionWindowTime - 150 ms
# --> nach 150 ms im Zielbereich(+- 200 ink) -> STAT_Reached = 1

d.SdoWr(0x373D, 0x00, 1000)        # POS_DeadWindowOff - 1000 ink
d.SdoWr(0x373E, 0x00, 100)         # POS_DeadTimeOff - 100 ms
# --> nach 100 ms nachdem STAT_Reached = 1
#     und im DeadWindowOff Fenster -> Disable

d.SdoWr(0x373D, 0x01, 2000)        # POS_DeadWindowOn  - 2000 ink
d.SdoWr(0x373E, 0x01, 200)         # POS_DeadTimeOn - 200 ms
# --> nach 200 ms aussserhalb des
#     DeadWindowOff Fensters -> Enable

d.SdoWr(0x373F, 0x00, 10)          # POS_DeadVel - 10 U/min
# --> Bewegt sich mit 10 U/min auf Zielposition wenn DeadWindowOn aktiviert wird

d.SdoWr(0x3762, 0x00, 0)           # POS_ActualPosition - 0
d.SdoWr(0x3004, 0x00, 1)           # DEV_Enable - Endstufe Freigeben

d.SdoWr(0x3000, 0x10, 100)         # DEV_CmdData0 - 100 rpm
d.SdoWr(0x3000, 0x11, 6000)        # DEV_CmdData1 - 6000 ink
d.SdoWr(0x3000, 0x01, 0)           # DEV_Cmd_ExecOnChange - Toggle command
d.SdoWr(0x3000, 0x01, 0x33)        # DEV_Cmd_ExecOnChange - MovA

while 1:
   Status = d.SdoRd(0x3002, 0x00)  # DEV_Status
   if (Status & 0x10) == 0x10:     # STAT_Reached == 1
      print "Ziel erreicht"        # Ziel erreicht
      break                        # Schleife beenden


373F.00h Positionierfenster - Geschwindigkeit

Name | POS_DeadVel
Bezeichnung | Positionierfenster - Geschwindigkeit
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | 4294967295
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Position
Verfügbar ab | 1.87.00.18
Geräte | Alle
PLC Funktion | -
Querverweis | POS_DeadWindowOff, POS_DeadWindowOn, POS_DeadTimeOn, POS_DeadTimeOff

Beschreibung

Dieser Parameter legt die Geschwindigkeit fest, mit welcher nach Ablauf der Totzeit (POS_DeadTimeOn) auf die letzte Sollposition gefahren wird.
Der Wert 0xFFFFFFFF (4294967295) deaktiviert den Parameter und es wird die Sollgeschwindigkeit (VEL_DesiredValue) verwendet.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                         # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)           # Betriebsart = Positionierregler

d.SdoWr(0x373A, 0x00, 200)         # POS_PositionWindow - 200 ink
d.SdoWr(0x373B, 0x00, 150)         # POS_PositionWindowTime - 150 ms
# --> nach 150 ms im Zielbereich(+- 200 ink) -> STAT_Reached = 1

d.SdoWr(0x373D, 0x00, 1000)        # POS_DeadWindowOff - 1000 ink
d.SdoWr(0x373E, 0x00, 100)         # POS_DeadTimeOff - 100 ms
# --> nach 100 ms nachdem STAT_Reached = 1
#     und im DeadWindowOff Fenster -> Disable

d.SdoWr(0x373D, 0x01, 2000)        # POS_DeadWindowOn  - 2000 ink
d.SdoWr(0x373E, 0x01, 200)         # POS_DeadTimeOn - 200 ms
# --> nach 200 ms aussserhalb des
#     DeadWindowOff Fensters -> Enable

d.SdoWr(0x373F, 0x00, 10)          # POS_DeadVel - 10 U/min
# --> Bewegt sich mit 10 U/min auf Zielposition wenn DeadWindowOn aktiviert wird

d.SdoWr(0x3762, 0x00, 0)           # POS_ActualPosition - 0
d.SdoWr(0x3004, 0x00, 1)           # DEV_Enable - Endstufe Freigeben

d.SdoWr(0x3000, 0x10, 100)         # DEV_CmdData0 - 100 rpm
d.SdoWr(0x3000, 0x11, 6000)        # DEV_CmdData1 - 6000 ink
d.SdoWr(0x3000, 0x01, 0)           # DEV_Cmd_ExecOnChange - Toggle command
d.SdoWr(0x3000, 0x01, 0x33)        # DEV_Cmd_ExecOnChange - MovA

while 1:
   Status = d.SdoRd(0x3002, 0x00)  # DEV_Status
   if (Status & 0x10) == 0x10:     # STAT_Reached == 1
      print "Ziel erreicht"        # Ziel erreicht
      break                        # Schleife beenden


374C.00h Pos. Rampengenerator - Rampentyp

Name | POS_RampType
Bezeichnung | Pos. Rampengenerator - Rampentyp
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {1, 2}
Defaultwert | 1
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.82.02.12
Geräte | Alle
PLC Funktion | PosRampType(value)
Querverweis | VEL_Acc_dV, VEL_Acc_dT, VEL_Dec_dV, VEL_Dec_dT

Beschreibung

Dieser Parameter legt den Rampentyp des Positionermodus fest.

Parameterwerte:
Wert | Bedeutung
1 | Trapez - Die Steigungen der Rampe werden durch den Parameter VEL_Acc_dV, VEL_Acc_dT, VEL_Dec_dV und VEL_Dec_dT bestimmt.
2 | S²-Rampe - Die Steigungen der Rampe werden durch den Parameter VEL_Acc_dV, VEL_Acc_dT, VEL_Dec_dV und VEL_Dec_dT bestimmt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Abfrage des alten Werts
print "Aktuelle PosRampType =", d.SdoRd(0x374C, 0x00)

# Setzen des neuen Werts
d.SdoWr(0x374C, 0x00, 2)   # Rampentyp = S2


374D.00h Pos. Rampengenerator - Zustand

Name | POS_RampState
Bezeichnung | Pos. Rampengenerator - Zustand
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | -
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.10.00.00
Geräte | Alle
PLC Funktion | PosRampState()
Querverweis | -

Beschreibung

Mit dem Parameter kann der aktuelle Zustand des Rampengenerators im Positioniermodus abgefragt werden.

Parameterwerte:

Wert | Bedeutung
Bit [2..0] = 1 | ACC - Beschleunigung
Bit [2..0] = 2 | CONST_VEL - Der Drehzahlwert aus dem Rampengenerator ist gleich dem Drehzahlsollwert und ungleich Null
Bit [2..0] = 4 | DEC - Verzögerung
Bit [3..6] | Reserviert (unbestimmter Wert)
Bit 7 | DIR_NEG - Negative Drehrichtung

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                 # NodeId = 1

#init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe Sperren
d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 500)                # VEL_DesiredValue - Solldrehzal = 500 [U/min]
d.SdoWr(0x3762, 0x00, 0)                  # POS_ActualPosition - Ist Postion = 0

# Beschleunigung = 1000[U/min] / 5000[ms]
d.SdoWr(0x3340, 0x00, 1000)               # VEL_Acc_dV
d.SdoWr(0x3341, 0x00, 5000)               # VEL_Acc_dT

# Verzögerung    = 1000[U/min] / 5000[ms]
d.SdoWr(0x3342, 0x00, 1000)               # VEL_Dec_dV
d.SdoWr(0x3343, 0x00, 5000)               # VEL_Dec_dT

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Endstufe Freigeben

# letzter Rampenzustand
LastState = -1

# Systemzeit aufnehmen
Timestamp = (time.clock() * 1000.0)

while 1:
   act_state = d.SdoRd(0x374D, 0x00)      # POS_RampState - Rampenzustand abfragen

   # nach 10 sekunden
   if ((time.clock()*1000.0)-Timestamp) > 10000 :
      d.SdoWr(0x3790, 0x00, 20000)        # POS_Mova - Gehe zu 20000 ink

   # nach 20 sekunden
   if ((time.clock()*1000.0)-Timestamp) > 20000 :
      d.SdoWr(0x3790, 0x00, -20000)       # POS_Mova - Gehe zu -20000 ink
      Timestamp = (time.clock() * 1000.0) # neue Systemzeit aufnehmen

   # nur bei Änderungen
   if LastState != act_state:
      LastState = act_state

      if   act_state == 0x00: print "Stillstand"
      elif act_state == 0x01: print "Beschleunigung    , positiv"
      elif act_state == 0x02: print "Konstante Drehzahl, positiv"
      elif act_state == 0x04: print "Verzögerung       , positiv"
      elif act_state == 0x81: print "Beschleunigung    , negativ"
      elif act_state == 0x82: print "Konstante Drehzahl, negativ"
      elif act_state == 0x84: print "Verzögerung       , negativ"

   time.sleep(0.1)                        # Warte 100 ms


3760.00h Aktuelle Zielposition

Name | POS_ActualTargetPosition
Bezeichnung | Aktuelle Zielposition
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.00.04
Geräte | Alle
PLC Funktion | ActTrgPos(), TrgPos()
Querverweis | POS_ActualCommandPosition, POS_ActualPosition, POS_ActualFollowingError, POS_ActualIndexPosition, POS_ActualTargetPosition_cnt, POS_ActualCommandPosition_cnt, POS_ActualPosition_cnt, POS_ActualFollowingError_cnt, POS_ActualIndexPosition_cnt

Beschreibung

Mit dem Parameter kann die aktuelle Zielposition abgefragt werden.
Die Zielposition ist eine absolute Position, die mit den Parametern POS_Mova (absolute Positionierung) oder POS_Movr (Relative Positionierung) vorgegeben wird. Auf diese Position verfährt der Antrieb.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

# Audsgeben der aktuellen Parameter
print "ActTrgPos                =", d.SdoRd(0x3760, 0x00) # POS_ActualTargetPosition
print "ActCmdPos                =", d.SdoRd(0x3761, 0x00) # POS_ActualCommandPosition
print "ActPos                   =", d.SdoRd(0x3762, 0x00) # POS_ActualPosition
print "ActPosFollowingError     =", d.SdoRd(0x3763, 0x00) # POS_ActualFollowingError
print "ActIndexPos              =", d.SdoRd(0x3764, 0x00) # POS_ActualIndexPosition

print "ActTrgPos_cnt            =", d.SdoRd(0x3770, 0x00) # POS_ActualTargetPosition_cnt
print "ActCmdPos_cnt            =", d.SdoRd(0x3771, 0x00) # POS_ActualCommandPosition_cnt
print "ActPos_cnt               =", d.SdoRd(0x3772, 0x00) # POS_ActualPosition_cnt
print "ActPosFollowingError_cnt =", d.SdoRd(0x3773, 0x00) # POS_ActualFollowingError_cnt
print "ActIndexPos_cnt          =", d.SdoRd(0x3774, 0x00) # POS_ActualIndexPositon_cnt


3761.00h Aktuelle Kommandoposition

Name | POS_ActualCommandPosition
Bezeichnung | Aktuelle Kommandoposition
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.10.00.00
Geräte | Alle
PLC Funktion | ActCmdPos(), CmdPos()
Querverweis | POS_ActualTargetPosition, POS_ActualPosition, POS_ActualFollowingError, POS_ActualIndexPosition, POS_ActualTargetPosition_cnt, POS_ActualCommandPosition_cnt, POS_ActualPosition_cnt, POS_ActualFollowingError_cnt, POS_ActualIndexPosition_cnt

Beschreibung

Mit dem Parameter kann die aktuelle Kommandoposition abgefragt werden.
Eine Kommandoposition ist ein Positionswert am Ausgang des Profilgenerators bzw. am Eingang des Positionsreglers.

Wird die Master-Tool Funktion (TOOL_Master_Control) aktiviert, gibt dieser Parameter die aktuelle Kommandoposition, welche direkt aus dem Profilgenerator generiert wurde an.

Wenn das Master-Tool deaktiviert ist, sind POS_ActualCommandPosition und POS_ActualCommandPositionReg gleich.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

# Audsgeben der aktuellen Parameter
print "ActTrgPos                =", d.SdoRd(0x3760, 0x00) # POS_ActualTargetPosition
print "ActCmdPos                =", d.SdoRd(0x3761, 0x00) # POS_ActualCommandPosition
print "ActPos                   =", d.SdoRd(0x3762, 0x00) # POS_ActualPosition
print "ActPosFollowingError     =", d.SdoRd(0x3763, 0x00) # POS_ActualFollowingError
print "ActIndexPos              =", d.SdoRd(0x3764, 0x00) # POS_ActualIndexPosition

print "ActTrgPos_cnt            =", d.SdoRd(0x3770, 0x00) # POS_ActualTargetPosition_cnt
print "ActCmdPos_cnt            =", d.SdoRd(0x3771, 0x00) # POS_ActualCommandPosition_cnt
print "ActPos_cnt               =", d.SdoRd(0x3772, 0x00) # POS_ActualPosition_cnt
print "ActPosFollowingError_cnt =", d.SdoRd(0x3773, 0x00) # POS_ActualFollowingError_cnt
print "ActIndexPos_cnt          =", d.SdoRd(0x3774, 0x00) # POS_ActualIndexPositon_cnt


3761.01h Aktuelle interne Kommandoposition

Name | POS_ActualCommandPositionReg
Bezeichnung | Aktuelle interne Kommandoposition
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.93.00.EF
Geräte | Alle
PLC Funktion | -
Querverweis | POS_ActualPosition, POS_ActualPositionReg, POS_ActualFollowingError, POS_ActualFollowingErrorReg, POS_ActualCommandPosition

Beschreibung

Mit dem Parameter kann die aktuelle Kommandoposition der internen Regelung abgefragt werden.
Die interne Kommandoposition ist die Summe des Positionswerts am Ausgang des Profilgenerators und der Kommandoposition am Ausgang des P-Filters des Master-Tools.

Wenn das Master-Tool deaktiviert ist, sind POS_ActualCommandPosition und POS_ActualCommandPositionReg gleich.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

# Audsgeben der aktuellen Parameter
print "ActCmdPos                =", d.SdoRd(0x3761, 0x00) # POS_ActualCommandPosition
print "ActCmdPosReg             =", d.SdoRd(0x3761, 0x01) # POS_ActualCommandPositionReg
print "ActPos                   =", d.SdoRd(0x3762, 0x00) # POS_ActualPosition
print "ActPosReg                =", d.SdoRd(0x3762, 0x01) # POS_ActualPositionReg
print "ActPosFollowingError     =", d.SdoRd(0x3763, 0x00) # POS_ActualFollowingError
print "ActPosFollowingErrorReg  =", d.SdoRd(0x3763, 0x01) # POS_ActualFollowingErrorReg


3762.00h Aktuelle Position (Istposition)

Name | POS_ActualPosition
Bezeichnung | Aktuelle Position (Istposition)
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.10.00.00
Geräte | Alle
PLC Funktion | ActPos(value)
Querverweis | POS_ActualTargetPosition, POS_ActualCommandPosition, POS_ActualFollowingError, POS_ActualIndexPosition, POS_ActualTargetPosition_cnt, POS_ActualCommandPosition_cnt, POS_ActualPosition_cnt, POS_ActualFollowingError_cnt, POS_ActualIndexPosition_cnt

Beschreibung

Mit dem Parameter kann die aktuelle Position abgefragt bzw. gesetzt werden.
Je nach Positionsrückführung ist das entweder Hallposition (MOTOR_HALL_ActualPosition) oder Encoderposition (MOTOR_ENC_ActualPosition) etc.

Bemerkung:
  • Beim Beschreiben dieses Parameters wird der entsprechende Wert der gewählten Rückführung (z.B. MOTOR_HALL_ActualPosition oder MOTOR_ENC_ActualPosition etc.) geändert.

Wird die Master-Tool Funktion (TOOL_Master_Control) aktiviert, gibt dieser Parameter die aktuelle Position der Rückführung des Master-Tools an.

Bemerkung:
  • Wenn das Master-Tool aktiviert ist, wird beim Beschreiben dieses Parameters der entsprechende Parameter der Bezugsquelle des Master-Tools (TOOL_Master_ParSource) geändert.

Wenn das Master-Tool deaktiviert ist, sind POS_ActualPosition und POS_ActualPositionReg gleich.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

# Audsgeben der aktuellen Parameter
print "ActTrgPos                =", d.SdoRd(0x3760, 0x00) # POS_ActualTargetPosition
print "ActCmdPos                =", d.SdoRd(0x3761, 0x00) # POS_ActualCommandPosition
print "ActPos                   =", d.SdoRd(0x3762, 0x00) # POS_ActualPosition
print "ActPosFollowingError     =", d.SdoRd(0x3763, 0x00) # POS_ActualFollowingError
print "ActIndexPos              =", d.SdoRd(0x3764, 0x00) # POS_ActualIndexPosition

print "ActTrgPos_cnt            =", d.SdoRd(0x3770, 0x00) # POS_ActualTargetPosition_cnt
print "ActCmdPos_cnt            =", d.SdoRd(0x3771, 0x00) # POS_ActualCommandPosition_cnt
print "ActPos_cnt               =", d.SdoRd(0x3772, 0x00) # POS_ActualPosition_cnt
print "ActPosFollowingError_cnt =", d.SdoRd(0x3773, 0x00) # POS_ActualFollowingError_cnt
print "ActIndexPos_cnt          =", d.SdoRd(0x3774, 0x00) # POS_ActualIndexPositon_cnt


3762.01h Aktuelle interne Position (Istposition)

Name | POS_ActualPositionReg
Bezeichnung | Aktuelle interne Position (Istposition)
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.EF
Geräte | Alle
PLC Funktion | -
Querverweis | POS_ActualPosition, POS_ActualFollowingError, POS_ActualFollowingErrorReg, POS_ActualCommandPosition, POS_ActualCommandPositionReg

Beschreibung

Mit dem Parameter kann die aktuelle Position der internen Rückführung abgefragt bzw. gesetzt werden.
Je nach Positionsrückführung ist das entweder Hallposition (MOTOR_HALL_ActualPosition) oder Encoderposition (MOTOR_ENC_ActualPosition) etc.

Bemerkung:
  • Beim Beschreiben dieses Parameters wird der entsprechende Wert der gewählten Rückführung (z.B. MOTOR_HALL_ActualPosition oder MOTOR_ENC_ActualPosition etc.) geändert.

Wenn das Master-Tool deaktiviert ist, sind POS_ActualPosition und POS_ActualPositionReg gleich.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

# Audsgeben der aktuellen Parameter
print "ActCmdPos                =", d.SdoRd(0x3761, 0x00) # POS_ActualCommandPosition
print "ActCmdPosReg             =", d.SdoRd(0x3761, 0x01) # POS_ActualCommandPositionReg
print "ActPos                   =", d.SdoRd(0x3762, 0x00) # POS_ActualPosition
print "ActPosReg                =", d.SdoRd(0x3762, 0x01) # POS_ActualPositionReg
print "ActPosFollowingError     =", d.SdoRd(0x3763, 0x00) # POS_ActualFollowingError
print "ActPosFollowingErrorReg  =", d.SdoRd(0x3763, 0x01) # POS_ActualFollowingErrorReg


3763.00h Aktueller Positionsschleppabstand

Name | POS_ActualFollowingError
Bezeichnung | Aktueller Positionsschleppabstand
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.10.00.00
Geräte | Alle
PLC Funktion | ActPosFollowingError(), PosFollowingError()
Querverweis | POS_FollowingErrorWindow, POS_ActualTargetPosition, POS_ActualCommandPosition, POS_ActualPosition, POS_ActualIndexPosition, POS_ActualTargetPosition_cnt, POS_ActualCommandPosition_cnt, POS_ActualPosition_cnt, POS_ActualFollowingError_cnt, POS_ActualIndexPosition_cnt

Beschreibung

Mit dem Parameter kann der aktuelle Schleppabstand (Differenz zwischen Kommandoposition und Istposition) abgefragt werden.
Im Schleppabstandsfehlerfall (siehe Parameter POS_FollowingErrorWindow), beinhaltet dieser Parameter einen Schleppabstandswert, bei welchem ein Schleppabstandfehler ausgelöst wurde.

Wird die Master-Tool Funktion (TOOL_Master_Control) aktiviert, gibt der Parameter die Differenz zwischen Kommandoposition und Istposition des Master-Tools an.
Der Schleppabstandsfehlerfall wird ausgelöst, wenn entweder diese Differenz oder die Differenz zwischen Kommandoposition und aktueller interner Position (POS_ActualPositionReg) den zulässigen Schleppabstandswert (POS_FollowingErrorWindow) überschreitet.

Wenn das Master-Tool deaktiviert ist, sind POS_ActualFollowingError und POS_ActualFollowingErrorReg gleich.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

# Audsgeben der aktuellen Parameter
print "ActTrgPos                =", d.SdoRd(0x3760, 0x00) # POS_ActualTargetPosition
print "ActCmdPos                =", d.SdoRd(0x3761, 0x00) # POS_ActualCommandPosition
print "ActPos                   =", d.SdoRd(0x3762, 0x00) # POS_ActualPosition
print "ActPosFollowingError     =", d.SdoRd(0x3763, 0x00) # POS_ActualFollowingError
print "ActIndexPos              =", d.SdoRd(0x3764, 0x00) # POS_ActualIndexPosition

print "ActTrgPos_cnt            =", d.SdoRd(0x3770, 0x00) # POS_ActualTargetPosition_cnt
print "ActCmdPos_cnt            =", d.SdoRd(0x3771, 0x00) # POS_ActualCommandPosition_cnt
print "ActPos_cnt               =", d.SdoRd(0x3772, 0x00) # POS_ActualPosition_cnt
print "ActPosFollowingError_cnt =", d.SdoRd(0x3773, 0x00) # POS_ActualFollowingError_cnt
print "ActIndexPos_cnt          =", d.SdoRd(0x3774, 0x00) # POS_ActualIndexPositon_cnt


3763.01h Aktueller interner Positionsschleppabstand

Name | POS_ActualFollowingErrorReg
Bezeichnung | Aktueller interner Positionsschleppabstand
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.93.00.EF
Geräte | Alle
PLC Funktion | -
Querverweis | POS_ActualPosition, POS_ActualPositionReg, POS_ActualFollowingError, POS_ActualCommandPosition, POS_ActualCommandPositionReg

Beschreibung

Mit dem Parameter kann der aktuelle Schleppabstand (Differenz zwischen Kommandoposition und aktueller internen Istposition) abgefragt werden. Da auch eine Abweichung zwischen der internen Rückführung und der Kommando-Position auftreten kann, ohne das eine Abweichung der Master-Tool Position und der Kommando-Position auftreten muss, oder umgekehrt, wird der größere Schleppabstand als Kriterium für die Generierung des Schleppfehlers (POS_FollowingErrorWindow) herangezogen.

Wenn das Master-Tool deaktiviert ist, sind POS_ActualFollowingError und POS_ActualFollowingErrorReg gleich.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

# Audsgeben der aktuellen Parameter
print "ActCmdPos                =", d.SdoRd(0x3761, 0x00) # POS_ActualCommandPosition
print "ActCmdPosReg             =", d.SdoRd(0x3761, 0x01) # POS_ActualCommandPositionReg
print "ActPos                   =", d.SdoRd(0x3762, 0x00) # POS_ActualPosition
print "ActPosReg                =", d.SdoRd(0x3762, 0x01) # POS_ActualPositionReg
print "ActPosFollowingError     =", d.SdoRd(0x3763, 0x00) # POS_ActualFollowingError
print "ActPosFollowingErrorReg  =", d.SdoRd(0x3763, 0x01) # POS_ActualFollowingErrorReg


3764.00h Aktuelle Indexposition

Name | POS_ActualIndexPosition
Bezeichnung | Aktuelle Indexposition
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ActIndexPos(), IndexPos()
Querverweis | POS_ActualTargetPosition, POS_ActualCommandPosition, POS_ActualPosition, POS_ActualFollowingError, POS_ActualTargetPosition_cnt, POS_ActualCommandPosition_cnt, POS_ActualPosition_cnt, POS_ActualFollowingError_cnt, POS_ActualIndexPosition_cnt

Beschreibung

Dieser Parameter liefert die absolute Position (siehe POS_ActualPosition), bei welcher der Indexpuls (Nullspur des Encoders) aufgetreten ist, zurück. Bei jedem Indexpuls wird diese Position neu gespeichert.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

# Audsgeben der aktuellen Parameter
print "ActTrgPos                =", d.SdoRd(0x3760, 0x00) # POS_ActualTargetPosition
print "ActCmdPos                =", d.SdoRd(0x3761, 0x00) # POS_ActualCommandPosition
print "ActPos                   =", d.SdoRd(0x3762, 0x00) # POS_ActualPosition
print "ActPosFollowingError     =", d.SdoRd(0x3763, 0x00) # POS_ActualFollowingError
print "ActIndexPos              =", d.SdoRd(0x3764, 0x00) # POS_ActualIndexPosition

print "ActTrgPos_cnt            =", d.SdoRd(0x3770, 0x00) # POS_ActualTargetPosition_cnt
print "ActCmdPos_cnt            =", d.SdoRd(0x3771, 0x00) # POS_ActualCommandPosition_cnt
print "ActPos_cnt               =", d.SdoRd(0x3772, 0x00) # POS_ActualPosition_cnt
print "ActPosFollowingError_cnt =", d.SdoRd(0x3773, 0x00) # POS_ActualFollowingError_cnt
print "ActIndexPos_cnt          =", d.SdoRd(0x3774, 0x00) # POS_ActualIndexPositon_cnt


3765.00h Position Ursprung

Name | POS_ActualOrigin
Bezeichnung | Position Ursprung
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.85.03.22
Geräte | Alle
PLC Funktion | -
Querverweis | POS_ActualPosition, POS_Mova, POS_ActualOrigin_cnt

Beschreibung

Mit diesem Parameter kann der Ursprungspunkt, von dem aus eine Bewegung kalkuliert wird, versetzt / abgelesen werden. Eine Änderung des Parameters wirkt sich auch auf die aktuelle Position des Reglers aus. Parameter aus der Faktorgruppe wirken sich auf diesen Wert aus und müssen berücksichtigt werden, sofern die Faktorgruppe eingesetzt wird.

Den Parameter kann man z.B. nutzen um die Strecke zwischen zwei Endpunkten der Maschine zu ermitteln. (Siehe im Beispiel)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)

d.SdoWr(0x3221, 0x00, 2000)         # CURR_LimitMaxPos
d.SdoWr(0x3223, 0x00, 2000)         # CURR_LimitMaxNeg

d.SdoWr(0x3732, 0x00, 50000)        # POS_FollowingErrorWindow

d.SdoWr(0x37b7, 0x00, 1)            # POS_HomingBlock_ConfigFlags
d.SdoWr(0x37b7, 0x01, 100)          # POS_HomingBlock_VelLow
d.SdoWr(0x37B4, 0x00, 500)          # POS_HomingVelSwitch
d.SdoWr(0x37B4, 0x01, 500)          # POS_HomingVelZero

d.SdoWr(0x37B2, 0x00, 17)           # POS_HomingMethod
d.SdoWr(0x37B0, 0x00, 1)            # POS_HomingCmd - Start Referenzfahrt

while not (d.SdoRd(0x3002, 0x00) & (1<<7)):  # Referenzfahrt durchgeführt
   time.sleep(0.01)

origin_up = d.SdoRd(0x3765, 0x00)   # POS_ActualOrigin

d.SdoWr(0x37B2, 0x00, 18)           # POS_HomingMethod
d.SdoWr(0x37B0, 0x00, 1)            # POS_HomingCmd - Start Referenzfahrt

while not (d.SdoRd(0x3002, 0x00) & (1<<7)):  # Referenzfahrt durchgeführt
   time.sleep(0.01)

origin_down = d.SdoRd(0x3765, 0x00) # POS_ActualOrigin

print "Strecke:", (origin_down-origin_up)


3770.00h Aktuelle Zielposition in Inkrementen

Name | POS_ActualTargetPosition_cnt
Bezeichnung | Aktuelle Zielposition in Inkrementen
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.00.04
Geräte | Alle
PLC Funktion | ActTrgPos_cnt(), TrgPos_cnt()
Querverweis | POS_ActualCommandPosition_cnt, POS_ActualPosition_cnt, POS_ActualFollowingError_cnt, POS_ActualIndexPosition_cnt, POS_ActualTargetPosition, POS_ActualCommandPosition, POS_ActualPosition, POS_ActualFollowingError, POS_ActualIndexPosition

Beschreibung

Mit dem Parameter kann die aktuelle Zielposition in Inkrementen abgefragt werden.
Die Zielposition ist eine absolute Position, die mit den Parametern POS_Mova (absolute Positionierung) oder POS_Movr (Relative Positionierung) vorgegeben wird. Auf diese Position verfährt der Antrieb.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

# Audsgeben der aktuellen Parameter
print "ActTrgPos                =", d.SdoRd(0x3760, 0x00) # POS_ActualTargetPosition
print "ActCmdPos                =", d.SdoRd(0x3761, 0x00) # POS_ActualCommandPosition
print "ActPos                   =", d.SdoRd(0x3762, 0x00) # POS_ActualPosition
print "ActPosFollowingError     =", d.SdoRd(0x3763, 0x00) # POS_ActualFollowingError
print "ActIndexPos              =", d.SdoRd(0x3764, 0x00) # POS_ActualIndexPosition

print "ActTrgPos_cnt            =", d.SdoRd(0x3770, 0x00) # POS_ActualTargetPosition_cnt
print "ActCmdPos_cnt            =", d.SdoRd(0x3771, 0x00) # POS_ActualCommandPosition_cnt
print "ActPos_cnt               =", d.SdoRd(0x3772, 0x00) # POS_ActualPosition_cnt
print "ActPosFollowingError_cnt =", d.SdoRd(0x3773, 0x00) # POS_ActualFollowingError_cnt
print "ActIndexPos_cnt          =", d.SdoRd(0x3774, 0x00) # POS_ActualIndexPositon_cnt


3771.00h Aktuelle Kommandoposition in Inkrementen

Name | POS_ActualCommandPosition_cnt
Bezeichnung | Aktuelle Kommandoposition in Inkrementen
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | ActCmdPos_cnt(), CmdPos_cnt()
Querverweis | POS_ActualTargetPosition_cnt, POS_ActualPosition_cnt, POS_ActualFollowingError_cnt, POS_ActualIndexPosition_cnt, POS_ActualTargetPosition, POS_ActualCommandPosition, POS_ActualPosition, POS_ActualFollowingError, POS_ActualIndexPosition

Beschreibung

Mit dem Parameter kann die aktuelle Kommandoposition in Inkrementen abgefragt werden.
Eine Kommandoposition ist ein Positionswert am Ausgang des Profilgenerators bzw. am Eingang des Positionsreglers.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

# Audsgeben der aktuellen Parameter
print "ActTrgPos                =", d.SdoRd(0x3760, 0x00) # POS_ActualTargetPosition
print "ActCmdPos                =", d.SdoRd(0x3761, 0x00) # POS_ActualCommandPosition
print "ActPos                   =", d.SdoRd(0x3762, 0x00) # POS_ActualPosition
print "ActPosFollowingError     =", d.SdoRd(0x3763, 0x00) # POS_ActualFollowingError
print "ActIndexPos              =", d.SdoRd(0x3764, 0x00) # POS_ActualIndexPosition

print "ActTrgPos_cnt            =", d.SdoRd(0x3770, 0x00) # POS_ActualTargetPosition_cnt
print "ActCmdPos_cnt            =", d.SdoRd(0x3771, 0x00) # POS_ActualCommandPosition_cnt
print "ActPos_cnt               =", d.SdoRd(0x3772, 0x00) # POS_ActualPosition_cnt
print "ActPosFollowingError_cnt =", d.SdoRd(0x3773, 0x00) # POS_ActualFollowingError_cnt
print "ActIndexPos_cnt          =", d.SdoRd(0x3774, 0x00) # POS_ActualIndexPositon_cnt


3772.00h Aktuelle Position in Inkrementen

Name | POS_ActualPosition_cnt
Bezeichnung | Aktuelle Position in Inkrementen
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | ActPos_cnt(value)
Querverweis | POS_ActualTargetPosition_cnt, POS_ActualCommandPosition_cnt, POS_ActualFollowingError_cnt, POS_ActualIndexPosition, POS_ActualTargetPosition, POS_ActualCommandPosition, POS_ActualPosition, POS_ActualFollowingError, POS_ActualIndexPosition

Beschreibung

Mit dem Parameter kann die aktuelle Position in Inkrementen abgefragt bzw. gesetzt werden.
Je nach Positionsrückführung ist das entweder Hallposition (MOTOR_HALL_ActualPosition) oder Encoderposition (MOTOR_ENC_ActualPosition).

Bemerkung:
  • Beim Beschreiben dieses Parameters wird entsprechend entweder MOTOR_HALL_ActualPosition oder MOTOR_ENC_ActualPosition geändert.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

# Audsgeben der aktuellen Parameter
print "ActTrgPos                =", d.SdoRd(0x3760, 0x00) # POS_ActualTargetPosition
print "ActCmdPos                =", d.SdoRd(0x3761, 0x00) # POS_ActualCommandPosition
print "ActPos                   =", d.SdoRd(0x3762, 0x00) # POS_ActualPosition
print "ActPosFollowingError     =", d.SdoRd(0x3763, 0x00) # POS_ActualFollowingError
print "ActIndexPos              =", d.SdoRd(0x3764, 0x00) # POS_ActualIndexPosition

print "ActTrgPos_cnt            =", d.SdoRd(0x3770, 0x00) # POS_ActualTargetPosition_cnt
print "ActCmdPos_cnt            =", d.SdoRd(0x3771, 0x00) # POS_ActualCommandPosition_cnt
print "ActPos_cnt               =", d.SdoRd(0x3772, 0x00) # POS_ActualPosition_cnt
print "ActPosFollowingError_cnt =", d.SdoRd(0x3773, 0x00) # POS_ActualFollowingError_cnt
print "ActIndexPos_cnt          =", d.SdoRd(0x3774, 0x00) # POS_ActualIndexPositon_cnt


3773.00h Aktueller Positionsschleppabstand in Inkrementen

Name | POS_ActualFollowingError_cnt
Bezeichnung | Aktueller Positionsschleppabstand in Inkrementen
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | ActPosFollowingError_cnt(), PosFollowingError_cnt()
Querverweis | POS_ActualTargetPosition_cnt, POS_ActualCommandPosition_cnt, POS_ActualPosition_cnt, POS_ActualIndexPosition_cnt, POS_ActualTargetPosition, POS_ActualCommandPosition, POS_ActualPosition, POS_ActualFollowingError, POS_ActualIndexPosition

Beschreibung

Mit dem Parameter kann aktueller Schleppabstand (Differenz zwischen Kommandoposition und Istposition) in Inkrementen abgefragt werden.
Im Schleppabstandsfehlerfall (siehe Parameter POS_FollowingErrorWindow), beinhaltet dieser Parameter einen Schleppabstandswert in Inkrementen, bei welchem ein Schleppabstandfehler ausgelöst wurde.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

# Audsgeben der aktuellen Parameter
print "ActTrgPos                =", d.SdoRd(0x3760, 0x00) # POS_ActualTargetPosition
print "ActCmdPos                =", d.SdoRd(0x3761, 0x00) # POS_ActualCommandPosition
print "ActPos                   =", d.SdoRd(0x3762, 0x00) # POS_ActualPosition
print "ActPosFollowingError     =", d.SdoRd(0x3763, 0x00) # POS_ActualFollowingError
print "ActIndexPos              =", d.SdoRd(0x3764, 0x00) # POS_ActualIndexPosition

print "ActTrgPos_cnt            =", d.SdoRd(0x3770, 0x00) # POS_ActualTargetPosition_cnt
print "ActCmdPos_cnt            =", d.SdoRd(0x3771, 0x00) # POS_ActualCommandPosition_cnt
print "ActPos_cnt               =", d.SdoRd(0x3772, 0x00) # POS_ActualPosition_cnt
print "ActPosFollowingError_cnt =", d.SdoRd(0x3773, 0x00) # POS_ActualFollowingError_cnt
print "ActIndexPos_cnt          =", d.SdoRd(0x3774, 0x00) # POS_ActualIndexPositon_cnt


3774.00h Aktuelle Indexposition in Inkrementen

Name | POS_ActualIndexPosition_cnt
Bezeichnung | Aktuelle Indexposition in Inkrementen
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ActIndexPos_cnt(), IndexPos_cnt()
Querverweis | POS_ActualTargetPosition_cnt, POS_ActualCommandPosition_cnt, POS_ActualPosition_cnt, POS_ActualFollowingError_cnt, POS_ActualTargetPosition, POS_ActualCommandPosition, POS_ActualPosition, POS_ActualFollowingError, POS_ActualIndexPosition

Beschreibung

Dieser Parameter liefert eine absolute Position in Inkrementen, bei welcher der Indeximpuls aufgetreten ist, zurück. Bei jedem Indexpuls wird diese Position neu gespeichert.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                                # NodeId = 1

# Audsgeben der aktuellen Parameter
print "ActTrgPos                =", d.SdoRd(0x3760, 0x00) # POS_ActualTargetPosition
print "ActCmdPos                =", d.SdoRd(0x3761, 0x00) # POS_ActualCommandPosition
print "ActPos                   =", d.SdoRd(0x3762, 0x00) # POS_ActualPosition
print "ActPosFollowingError     =", d.SdoRd(0x3763, 0x00) # POS_ActualFollowingError
print "ActIndexPos              =", d.SdoRd(0x3764, 0x00) # POS_ActualIndexPosition

print "ActTrgPos_cnt            =", d.SdoRd(0x3770, 0x00) # POS_ActualTargetPosition_cnt
print "ActCmdPos_cnt            =", d.SdoRd(0x3771, 0x00) # POS_ActualCommandPosition_cnt
print "ActPos_cnt               =", d.SdoRd(0x3772, 0x00) # POS_ActualPosition_cnt
print "ActPosFollowingError_cnt =", d.SdoRd(0x3773, 0x00) # POS_ActualFollowingError_cnt
print "ActIndexPos_cnt          =", d.SdoRd(0x3774, 0x00) # POS_ActualIndexPositon_cnt


3775.00h Position Ursprung in Inkrementen

Name | POS_ActualOrigin_cnt
Bezeichnung | Position Ursprung in Inkrementen
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | [Inkremente]
Betriebsart | Position
Verfügbar ab | 1.85.03.22
Geräte | Alle
PLC Funktion | -
Querverweis | POS_ActualPosition, POS_Mova, POS_ActualOrigin

Beschreibung

Mit diesem Parameter kann der Ursprungspunkt in Inkrementen, von dem aus eine Bewegung kalkuliert wird, versetzt / abgelesen werden. Eine Änderung des Parameters wirkt sich auch auf die aktuelle Position des Reglers aus. Parameter aus der Faktorgruppe wirken sich auf diesen Wert aus und müssen berücksichtigt werden, sofern die Faktorgruppe eingesetzt wird.

Den Parameter kann man z.B. nutzen um die Strecke zwischen zwei Endpunkten der Maschine zu ermitteln. (Siehe im Beispiel)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)

d.SdoWr(0x3221, 0x00, 2000)         # CURR_LimitMaxPos
d.SdoWr(0x3223, 0x00, 2000)         # CURR_LimitMaxNeg

d.SdoWr(0x3732, 0x00, 50000)        # POS_FollowingErrorWindow

d.SdoWr(0x37b7, 0x00, 1)            # POS_HomingBlock_ConfigFlags
d.SdoWr(0x37b7, 0x01, 100)          # POS_HomingBlock_VelLow
d.SdoWr(0x37B4, 0x00, 500)          # POS_HomingVelSwitch
d.SdoWr(0x37B4, 0x01, 500)          # POS_HomingVelZero

d.SdoWr(0x37B2, 0x00, 17)           # POS_HomingMethod
d.SdoWr(0x37B0, 0x00, 1)            # POS_HomingCmd - Start Referenzfahrt

while not (d.SdoRd(0x3002, 0x00) & (1<<7)):  # Referenzfahrt durchgeführt
   time.sleep(0.01)

origin_up = d.SdoRd(0x3775, 0x00)   # POS_ActualOrigin

d.SdoWr(0x37B2, 0x00, 18)           # POS_HomingMethod
d.SdoWr(0x37B0, 0x00, 1)            # POS_HomingCmd - Start Referenzfahrt

while not (d.SdoRd(0x3002, 0x00) & (1<<7)):  # Referenzfahrt durchgeführt
   time.sleep(0.01)

origin_down = d.SdoRd(0x3775, 0x00) # POS_ActualOrigin

print "Strecke:", (origin_down-origin_up)


3790.00h Absolute Positionierung

Name | POS_Mova
Bezeichnung | Absolute Positionierung
Datentyp | int32
Zugriff | nur Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | [Inkremente]
Betriebsart | Position
Verfügbar ab | 1.10.00.00
Geräte | Alle
PLC Funktion | Mova(value), IsMovCompleted()
Querverweis | DEV_Mode, DEV_Status, VEL_DesiredValue, VEL_Acc_dT, VEL_Acc_dV, VEL_Dec_dT, VEL_Dec_dV, POS_Movr

Beschreibung

Durch Beschreiben dieses Parameters wird eine Bewegung auf eine absolute Position gestartet.
Die Bewegungsparameter wie max. Geschwindigkeit, Beschleunigung und Verzögerung werden von den entsprechenden Parametern der Drehzahlfunktion übernommen. Eine Bewegung kann durch erneutes Beschreiben dieses Parameters überschrieben werden. Man spricht in dem Fall über s.g. "on-the-fly" Änderung der Bewegung.

Beispiele von einigen Geschwindigkeitsprofilen:

  1. Asymmetrisches Trapezprofil (unterschiedliche Beschleunigungs- und Verzögerungsrampe)

  2. Zum Zeitpunkt "t1" wurde neuer Positionierbefehl ausgelöst. Wobei (Acc2 > Acc1) und (V2 > V1) sind.

    Neue Bewegungsparameter (Geschwindigkeit, Beschleunigung und Verzögerung) werden vor dem Zeitpunkt "t1" vorgegeben. Die Übernahme der Parameter erfolgt erst bei dem Positionierbefehl. D.h. allein ein neue Geschwindigkeitsvorgabe verursacht keine Geschwindigkeitsänderung der aktiven Bewegung. Eine neue Verzögerung wird nur dann übernommen, wenn die Zielposition mit dieser neuen Verzögerung auch erreicht werden kann. Ansonsten wird für diesen Positionierbefehl noch die "alte" Verzögerung beibehalten. (Diese Regel gelten auch für alle unterstehende Beispiele)

  3. Zum Zeitpunkt "t1" wurde neuer Positionierbefehl ausgelöst. Wobei (V1 > V2) ist.

  4. Zum Zeitpunkt "t1" und "t2" wurden neue Positionierbefehle ausgelöst. Wobei (Acc1 > Acc2) und (V2 > V3 > V1) sind.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)            # DEV_Enable - Endstufe Sperren
d.SdoWr(0x3003, 0x00, 7)            # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 500)          # VEL_DesiredValue - Solldrehzal = 500 [U/min]
d.SdoWr(0x3762, 0x00, 0)            # POS_ActualPosition - Ist Postion = 0
d.SdoWr(0x3004, 0x00, 1)            # DEV_Enable - Endstufe Freigeben

# Gehe zu 20000 ink:
d.SdoWr(0x3790, 0x00, 20000)        # POS_Mova

while 1:

   status = d.SdoRd(0x3002, 0x00)   # DEV_Status - Status abfragen
   if (status & 0x0110) == 0x0110:  # Ziel erreicht? (Bit4 & Bit8 == 1)
      print "Ziel erreicht"
      break                         # Schleife beenden


3791.00h Relative Positionierung

Name | POS_Movr
Bezeichnung | Relative Positionierung
Datentyp | int32
Zugriff | nur Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | [Inkremente]
Betriebsart | Position
Verfügbar ab | 1.0A.00.00
Geräte | Alle
PLC Funktion | Movr(value), IsMovCompleted()
Querverweis | DEV_Mode, DEV_Status, VEL_DesiredValue, VEL_Acc_dT, VEL_Acc_dV, VEL_Dec_dT, VEL_Dec_dV

Beschreibung

Durch Beschreiben dieses Parameters wird eine Bewegung auf eine relative Position (relativ zur aktuellen Kommandoposition) gestartet.
Die Bewegungsparameter wie max. Geschwindigkeit, Beschleunigung und Verzögerung werden von den entsprechenden Parametern der Drehzahlfunktion übernommen. Eine Bewegung kann durch erneutes Beschreiben dieses Parameters überschrieben werden. Man spricht in dem Fall über s.g. "on-the-fly" Änderung der Bewegung.

Für Beispiele von Geschwindigkeitsprofilen siehe Beschreibung vom Parameter POS_Mova.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)            # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)            # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 500)          # VEL_DesiredValue - Solldrehzahl = 500 [rpm]
d.SdoWr(0x3004, 0x00, 1)            # DEV_Enable - Endstufe freigeben

# Gehe zu 26666 ink:
d.SdoWr(0x3791, 0x00, 26666)        # POS_Movr

while 1:

   status = d.SdoRd(0x3002, 0x00)   # DEV_Status - Status abfragen
   if (status & 0x0110) == 0x0110:  # Ziel erreicht? (Bit4 & Bit8 == 1)
      print "Ziel erreicht"
      break                         # Schleife beenden


37A4.01h Getriebespielausgleich - Strecke

Name | POS_GearBacklashComp_Path
Bezeichnung | Getriebespielausgleich - Strecke
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 0
Einheit | [Inkremente]
Betriebsart | Position
Verfügbar ab | 1.85.03.54
Geräte | Alle
PLC Funktion | PosGearBacklashCompPath(value)
Querverweis | POS_GearBacklashComp_Vel

Beschreibung

Dieser Parameter legt die Strecke für den Getriebespielausgleich fest. Wenn dieser Wert ungleich Null ist, wird eine Zielposition immer von einer Richtung angefahren. Die Anfahrrichtung ist durch das Vorzeichen des Parameterwertes bestimmt.

Parameterwerte:
Wert | Beschreibung
0 | Getriebespielausgleich ist ausgeschaltet.
>0 | Getriebespielausgleich in positiver Drehrichtung. 1. Bei Positionierung in positiver Richtung, fährt der Antrieb direkt auf die Zielposition. 2. Bei Positionierung in negativer Richtung, fährt der Antrieb zuerst auf eine Position = Zielposition - Wert von diesem Parameter. Nach Erreichen dieser Position fährt der Antrieb mit der Drehzahl von POS_GearBacklashComp_Vel in positiver Richtung auf die Zielposition.
<0 | Getriebespielausgleich in negativer Drehrichtung. 1. Bei Positionierung in negativer Richtung, fährt der Antrieb direkt auf die Zielposition. 2. Bei Positionierung in positiver Richtung, fährt der Antrieb zuerst auf eine Position = Zielposition + Wert von diesem Parameter. Nach Erreichen dieser Position fährt der Antrieb mit der Drehzahl von POS_GearBacklashComp_Vel in negativer Richtung auf die Zielposition.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)            # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)            # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 500)          # VEL_DesiredValue - Sollgeschindigkeit = 500 [U/min]

# Neue Parameter eingeben
d.SdoWr(0x37A4, 0x01, -6000)        # POS_GearBacklashComp_Path - 6000 ink Gestriebeausgleich in negative Richtung
d.SdoWr(0x37A4, 0x02, 100)          # POS_GearBacklashComp_Vel - Gestriebeausgleich mit 100 [U/min]

d.SdoWr(0x3004, 0x00, 1)            # DEV_Enable - Endstufe freigeben

# Gehe zu 26666 ink:
d.SdoWr(0x3791, 0x00, 26666)        # POS_Movr

while 1:

   status = d.SdoRd(0x3002, 0x00)   # DEV_Status - Status abfragen
   if (status & 0x0110) == 0x0110:  # Ziel erreicht? (Bit4 & Bit8 == 1)
      print "Ziel erreicht"
      break                         # Schleife Beenden


37A4.02h Getriebespielausgleich - Drehzahl

Name | POS_GearBacklashComp_Vel
Bezeichnung | Getriebespielausgleich - Drehzahl
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 100
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Position
Verfügbar ab | 1.85.03.54
Geräte | Alle
PLC Funktion | PosGearBacklashCompVel(value)
Querverweis | POS_GearBacklashComp_Path

Beschreibung

Dieser Parameter bestimmt die Drehzahl, mit welcher ein Getriebespiel ausgeglichen wird.
Für eine Funktionsbeschreibung vom Getriebespielausgleich siehe die Beschreibung von POS_GearBacklashComp_Path.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)            # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)            # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 500)          # VEL_DesiredValue - Sollgeschindigkeit = 500 [U/min]

# Neue Parameter eingeben
d.SdoWr(0x37A4, 0x01, -6000)        # POS_GearBacklashComp_Path - 6000 ink Gestriebeausgleich in negative Richtung
d.SdoWr(0x37A4, 0x02, 100)          # POS_GearBacklashComp_Vel - Gestriebeausgleich mit 100 [U/min]

d.SdoWr(0x3004, 0x00, 1)            # DEV_Enable - Endstufe freigeben

# Gehe zu 26666 ink:
d.SdoWr(0x3791, 0x00, 26666)        # POS_Movr

while 1:

   status = d.SdoRd(0x3002, 0x00)   # DEV_Status - Status abfragen
   if (status & 0x0110) == 0x0110:  # Ziel erreicht? (Bit4 & Bit8 == 1)
      print "Ziel erreicht"
      break                         # Schleife Beenden


Inhalt - Parameter 3000h (DSA) - Referenzfahrt

37B0.00h | POS_HomingCmd | Referenzfahrt - Kommando
37B1.00h | POS_HomingStatus | Referenzfahrt - Status
37B1.01h | POS_HomingError | Referenzfahrt - Error
37B1.02h | POS_HomingState | Referenzfahrt - Zustand
37B1.03h | POS_HomingRefToIndex | Referenzfahrt - Strecke Referenzschalter zu Index
37B1.04h | POS_HomingRefToIndex_cnt | Referenzfahrt - Strecke Referenzschalter zu Index in Ink.
37B2.00h | POS_HomingMethod | Referenzfahrt - Methode
37B3.00h | POS_HomingOffset | Referenzfahrt - Referenzoffset
37B4.00h | POS_HomingVelSwitch | Referenzfahrt - Geschwindigkeit für Schaltersuche
37B4.01h | POS_HomingVelZero | Referenzfahrt - Geschwindigkeit für Nullpunktanfahrt
37B5.00h | POS_HomingAcc | Referenzfahrt - Beschleunigung
37B5.01h | POS_HomingDec | Referenzfahrt - Verzögerung
37B6.00h | POS_HomingMaxIndexPath | Referenzfahrt - max. Strecke für Indexsuche
37B6.01h | POS_HomingIndexOffset | Referenzfahrt - Indexoffset
37B7.00h | POS_HomingBlock_ConfigFlags | Referenzfahrt auf Block - Konfiguration
37B7.01h | POS_HomingBlock_VelLow | Referenzfahrt auf Block - untere Drehzahl
37B7.02h | POS_HomingBlock_VelHigh | Referenzfahrt auf Block - obere Drehzahl
37B7.03h | POS_HomingBlock_Time | Referenzfahrt auf Block - Zeit
37B7.04h | POS_HomingBlock_FollowingErrorWindow | Referenzfahrt auf Block - Positionsschleppfehlerfenster


37B0.00h Referenzfahrt - Kommando

Name | POS_HomingCmd
Bezeichnung | Referenzfahrt - Kommando
Datentyp | uint8
Zugriff | nur Schreiben
Attribute | -
Wertbereich | {0, 1, 2}
Defaultwert | -
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.64.00.03
Geräte | Alle
PLC Funktion | HomeCmd(value), HomingStart(), HomingBreak()
Querverweis | -

Beschreibung

Beim Beschreiben dieses Parameters wird ein Kommando für eine Referenzfahrt ausgeführt. Um eine Referenzfahrt durchzuführen, muss sich der Antriebsregler im Positioniermodus befinden.

Parameterwerte:
Hex | Dec | Name | Beschreibung
00h | 0 | HOMING_CMD_NOP | Keine Wirkung
01h | 1 | HOMING_CMD_Start | Referenzfahrt wird gestartet. Dabei wird das Bit-STAT_HomingDone vom DEV_Status zurückgesetzt. Die Methode für Referenzfahrt wird mit dem Parameter POS_HomingMethod festgelegt.
02h | 2 | HOMING_CMD_Break | Aktive Referenzfahrt wird unterbrochen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe freigeben
d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                  # VEL_DesiredValue - Solldrehzahl = 500 [U/min]

# init homing
d.SdoWr(0x3057, 0x00, 0x0135)             # DEV_DinReference
d.SdoWr(0x37B2, 0x00, 3)                  # POS_HomingMethod - Methode 3
d.SdoWr(0x37B3 ,0x00, 150)                # POS_HomingOffset
d.SdoWr(0x37B4, 0x00, 500)                # POS_HomingVelSwitch
d.SdoWr(0x37B4, 0x01, 100)                # POS_HomingVelZero
d.SdoWr(0x37B5, 0x00, 5000)               # POS_HomingAcc
d.SdoWr(0x37B5, 0x01, 10000)              # POS_HomingDec
d.SdoWr(0x37B6, 0x00, 20000)              # POS_HomingMaxIndexPath
d.SdoWr(0x37B6, 0x01, 200)                # POS_HomingIndexOffset

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Endstufe freigeben

# letzter Referenzierungszustand
LastState = -1

while 1:

   act_state = d.SdoRd(0x37B1, 0x02)      # POS_HomingState  - Zustand abfragen
   status = d.SdoRd(0x37B1, 0x00)         # POS_HomingStatus - Status abfragen
   error_status = d.SdoRd(0x37B1, 0x01)   # POS_HomingError

   # Wenn idle
   if status == 0:
      d.SdoWr(0x37B0, 0x00, 0x01)         # POS_HomingCmd - Starte Referenzierung

   # Nur bei Änderung
   if LastState != act_state:
      LastState = act_state

      if   act_state == 0: print "Idle"
      elif act_state == 1: print "Start"
      elif act_state == 2: print "Warte auf Referenzschalter"
      elif act_state == 3: print "Warte auf Verlassen des Referenzschalters"
      elif act_state == 4: print "Warten auf negativen Endschalter "
      elif act_state == 5: print "Warten auf Verlassen des negativen Endschalters"
      elif act_state == 6: print "Warten auf positiven Endschalter"
      elif act_state == 7: print "Warten auf Verlassen des positiven Endschalters"
      elif act_state == 8: print "Warten auf Indeximpuls"
      elif act_state == 16: print "Warten bis Bewegung ausgeführt wurde"
      elif act_state == 32: print "Referenzfahrt wird unterbrochen"
      elif act_state == 33: print "Referenzfahrt wurde erfolgreich durchgeführt"
      elif act_state == 34: print "Referenzfahrt wurde beendet"

   # Referenzierung erfolgreich
   if (status & 0x10) == 0x10:            # HOMING_STAT_Done
      print "Referenzierung erfolgreich"
      print "Abstand Referenzschalter zu Index:",
      print d.SdoRd(0x37B1, 0x03)         # POS_HomingRefToIndex
      print "Abstand Referenzschalter zu Index in Ink:",
      print d.SdoRd(0x37B1, 0x04)         # POS_HomingRefToIndex_cnt
      break                               # Schleife beenden

   # Fehlerfall
   if error_status != 0:                  # Fehler
      print "Fehler: ", error_status
      break                               # Schleife beenden


37B1.00h Referenzfahrt - Status

Name | POS_HomingStatus
Bezeichnung | Referenzfahrt - Status
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | -
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.64.00.03
Geräte | Alle
PLC Funktion | HomeStatus()
Querverweis | -

Beschreibung

Liefert den Status der Referenzfahrt zurück. Jedes Bit vom Status hat eine eigene Bedeutung (siehe Tabelle).

Für eine detailierte Funktionsbeschreibung siehe Parameter POS_HomingMethod.

Bitbelegung:
Bit | Name | Beschreibung für Bitwert = 1
0 | HOME_STAT_Active | Referenzfahrt wird durchgeführt.
1 | HOME_STAT_Error | Es ist ein Fehler bei der Referenzfahrt aufgetreten.
2 | HOME_STAT_Warning | z.Z. nicht benutzt
3 | HOME_STAT_Break | Referenzfahrt wurde unterbrochen (z.B.: POS_HomingCmd = 2)
4 | HOME_STAT_Done | Referenzfahrt wurde erfolgreich durchgeführt.
5 | HOME_STAT_IndexFound | Indeximpuls wurde gefunden.
6 | HOME_STAT_VelZero | 0 : Referenzfahrtgeschwindigkeit = POS_HomingVelSwitch 1 : Referenzfahrtgeschwindigkeit = POS_HomingVelZero
7 | HOME_STAT_DirNeg | Bewegungsrichtung ist negativ.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe freigeben
d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                  # VEL_DesiredValue - Solldrehzahl = 500 [U/min]

# init homing
d.SdoWr(0x3057, 0x00, 0x0135)             # DEV_DinReference
d.SdoWr(0x37B2, 0x00, 3)                  # POS_HomingMethod - Methode 3
d.SdoWr(0x37B3 ,0x00, 150)                # POS_HomingOffset
d.SdoWr(0x37B4, 0x00, 500)                # POS_HomingVelSwitch
d.SdoWr(0x37B4, 0x01, 100)                # POS_HomingVelZero
d.SdoWr(0x37B5, 0x00, 5000)               # POS_HomingAcc
d.SdoWr(0x37B5, 0x01, 10000)              # POS_HomingDec
d.SdoWr(0x37B6, 0x00, 20000)              # POS_HomingMaxIndexPath
d.SdoWr(0x37B6, 0x01, 200)                # POS_HomingIndexOffset

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Endstufe freigeben

# letzter Referenzierungszustand
LastState = -1

while 1:

   act_state = d.SdoRd(0x37B1, 0x02)      # POS_HomingState  - Zustand abfragen
   status = d.SdoRd(0x37B1, 0x00)         # POS_HomingStatus - Status abfragen
   error_status = d.SdoRd(0x37B1, 0x01)   # POS_HomingError

   # Wenn idle
   if status == 0:
      d.SdoWr(0x37B0, 0x00, 0x01)         # POS_HomingCmd - Starte Referenzierung

   # Nur bei Änderung
   if LastState != act_state:
      LastState = act_state

      if   act_state == 0: print "Idle"
      elif act_state == 1: print "Start"
      elif act_state == 2: print "Warte auf Referenzschalter"
      elif act_state == 3: print "Warte auf Verlassen des Referenzschalters"
      elif act_state == 4: print "Warten auf negativen Endschalter "
      elif act_state == 5: print "Warten auf Verlassen des negativen Endschalters"
      elif act_state == 6: print "Warten auf positiven Endschalter"
      elif act_state == 7: print "Warten auf Verlassen des positiven Endschalters"
      elif act_state == 8: print "Warten auf Indeximpuls"
      elif act_state == 16: print "Warten bis Bewegung ausgeführt wurde"
      elif act_state == 32: print "Referenzfahrt wird unterbrochen"
      elif act_state == 33: print "Referenzfahrt wurde erfolgreich durchgeführt"
      elif act_state == 34: print "Referenzfahrt wurde beendet"

   # Referenzierung erfolgreich
   if (status & 0x10) == 0x10:            # HOMING_STAT_Done
      print "Referenzierung erfolgreich"
      print "Abstand Referenzschalter zu Index:",
      print d.SdoRd(0x37B1, 0x03)         # POS_HomingRefToIndex
      print "Abstand Referenzschalter zu Index in Ink:",
      print d.SdoRd(0x37B1, 0x04)         # POS_HomingRefToIndex_cnt
      break                               # Schleife beenden

   # Fehlerfall
   if error_status != 0:                  # Fehler
      print "Fehler: ", error_status
      break                               # Schleife beenden


37B1.01h Referenzfahrt - Error

Name | POS_HomingError
Bezeichnung | Referenzfahrt - Error
Datentyp | int16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-32768 .. 32767]
Defaultwert | -
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.64.00.03
Geräte | Alle
PLC Funktion | HomeError()
Querverweis | -

Beschreibung

Liefert den Fehlercode der Referenzfahrt zurück.

Für eine detailierte Funktionsbeschreibung der Referenzfahrt siehe Parameter POS_HomingMethod.

Fehlercodes:
Fehler |  | Name | Beschreibung
Dezimal | Hex
0 | 0x0000 | OK | Es liegt kein Fehler vor.
-4200 | 0xEF98 | ERR_Homing_UnknownMethod | Die vorgegebene Referenzierungsmethode (Parameter POS_HomingMethod) wird nicht unterstützt.
-4201 | 0xEF97 | ERR_Homing_IndexNotFound | Indeximpuls wurde nicht gefunden. Dieser Fehler kann nur in Referenzierungsmethoden mit Indeximpuls auftreten.
-4202 | 0xEF96 | ERR_Homing_HwLimitPosReached | Positiver Endschalter (fährt in positiver Richtung auf den Endschalter) wurde erreicht.
-4203 | 0xEF95 | ERR_Homing_HwLimitNegReached | Negativer Endschalter (fährt in negativer Richtung auf den Endschalter) wurde erreicht.
-4204 | 0xEF94 | ERR_Homing_CannotStartMove | Bewegung kann nicht gestartet werden, weil der Positioniermodus es unterbindet.
-4205 | 0xEF93 | ERR_Homing_DeviceIsNotEnabled | Gerät ist nicht freigegeben. Um eine Referenzfahrt zu starten, muss sich das Gerät im freigegebenen Zustand befinden (siehe. DEV_Status, DEV_Enable). Bemerkung: Dieser Fehler wird ab Firmware V1.85.03.B6 gemeldet.
-4206 | 0xEF92 | ERR_Homing_DeviceIsNotInPosMode | Das Gerät ist nicht im Positioniermodus (siehe DEV_Mode). Die Referenzfahrt ist nur im Positioniermodus möglich. Bemerkung: Dieser Fehler wird ab Firmware V1.85.03.B6 gemeldet.
-4207 | 0xEF91 | ERR_Homing_NoContinue | Eine vorherige Bewegung wurde mit Halt oder QuickStop unterbrochen (siehe DEV_Cmd, DEV_Status). Um eine Referenzfahrt mit HOMING_CMD_Start (POS_HomingCmd) zu starten, muss vorher ein DEV_CMD_Continue ausgeführt werden (siehe DEV_Cmd). Ein DEV_CMD_Continue Befehl kann automatisch beim HOMING_CMD_Start ausgeführt werden, siehe bitte DEV_ContinueMode. Bemerkung: Dieser Fehler wird ab Firmware V1.85.03.B6 gemeldet.

Hinweise
  • Dieser Fehler erscheint nicht im Error Register (DEV_ErrorReg)
  • Im Fehlerfall wird der Antriebsregler nicht gesperrt (DEV_Enable).

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe freigeben
d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                  # VEL_DesiredValue - Solldrehzahl = 500 [U/min]

# init homing
d.SdoWr(0x3057, 0x00, 0x0135)             # DEV_DinReference
d.SdoWr(0x37B2, 0x00, 3)                  # POS_HomingMethod - Methode 3
d.SdoWr(0x37B3 ,0x00, 150)                # POS_HomingOffset
d.SdoWr(0x37B4, 0x00, 500)                # POS_HomingVelSwitch
d.SdoWr(0x37B4, 0x01, 100)                # POS_HomingVelZero
d.SdoWr(0x37B5, 0x00, 5000)               # POS_HomingAcc
d.SdoWr(0x37B5, 0x01, 10000)              # POS_HomingDec
d.SdoWr(0x37B6, 0x00, 20000)              # POS_HomingMaxIndexPath
d.SdoWr(0x37B6, 0x01, 200)                # POS_HomingIndexOffset

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Endstufe freigeben

# letzter Referenzierungszustand
LastState = -1

while 1:

   act_state = d.SdoRd(0x37B1, 0x02)      # POS_HomingState  - Zustand abfragen
   status = d.SdoRd(0x37B1, 0x00)         # POS_HomingStatus - Status abfragen
   error_status = d.SdoRd(0x37B1, 0x01)   # POS_HomingError

   # Wenn idle
   if status == 0:
      d.SdoWr(0x37B0, 0x00, 0x01)         # POS_HomingCmd - Starte Referenzierung

   # Nur bei Änderung
   if LastState != act_state:
      LastState = act_state

      if   act_state == 0: print "Idle"
      elif act_state == 1: print "Start"
      elif act_state == 2: print "Warte auf Referenzschalter"
      elif act_state == 3: print "Warte auf Verlassen des Referenzschalters"
      elif act_state == 4: print "Warten auf negativen Endschalter "
      elif act_state == 5: print "Warten auf Verlassen des negativen Endschalters"
      elif act_state == 6: print "Warten auf positiven Endschalter"
      elif act_state == 7: print "Warten auf Verlassen des positiven Endschalters"
      elif act_state == 8: print "Warten auf Indeximpuls"
      elif act_state == 16: print "Warten bis Bewegung ausgeführt wurde"
      elif act_state == 32: print "Referenzfahrt wird unterbrochen"
      elif act_state == 33: print "Referenzfahrt wurde erfolgreich durchgeführt"
      elif act_state == 34: print "Referenzfahrt wurde beendet"

   # Referenzierung erfolgreich
   if (status & 0x10) == 0x10:            # HOMING_STAT_Done
      print "Referenzierung erfolgreich"
      print "Abstand Referenzschalter zu Index:",
      print d.SdoRd(0x37B1, 0x03)         # POS_HomingRefToIndex
      print "Abstand Referenzschalter zu Index in Ink:",
      print d.SdoRd(0x37B1, 0x04)         # POS_HomingRefToIndex_cnt
      break                               # Schleife beenden

   # Fehlerfall
   if error_status != 0:                  # Fehler
      print "Fehler: ", error_status
      break                               # Schleife beenden


37B1.02h Referenzfahrt - Zustand

Name | POS_HomingState
Bezeichnung | Referenzfahrt - Zustand
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | -
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.64.00.03
Geräte | Alle
PLC Funktion | HomeState()
Querverweis | -

Beschreibung

Liefert den Zustand der internen Referenzfahrtzustandsmaschine.

Für eine detailierte Funktionsbeschreibung siehe Parameter POS_HomingMethod.

Zustände:
Wert | Name | Beschreibung
0 | HOME_STATE_Idle | keine Aktion
1 | HOME_STATE_Start | Referenzfahrt wird gestartet.
2 | HOME_STATE_Wait4Ref | Warten auf Referenzschalter
3 | HOME_STATE_Wait4RefRelease | Warten auf Verlassen des Referenzschalters
4 | HOME_STATE_Wait4EndNeg | Warten auf negativen Endschalter (fährt in negativer Richtung auf den Endschalter)
5 | HOME_STATE_Wait4EndNegRelease | Warten auf Verlassen des negativen Endschalters (fährt in positiver Richtung aus dem Endschalter)
6 | HOME_STATE_Wait4EndPos | Warten auf positiven Endschalter (fährt in positiver Richtung auf den Endschalter)
7 | HOME_STATE_Wait4EndPosRelease | Warten auf Verlassen des positiven Endschalters (fährt in negativer Richtung aus dem Endschalter)
8 | HOME_STATE_Wait4Index | Warten auf Indeximpuls
16 | HOME_STATE_Wait4MoveCompleted | Warten bis Bewegung ausgeführt wurde. Es ist ein Hilfszustand, in den obigen Bits enthalten.
32 | HOME_STATE_Break | Referenzfahrt wird unterbrochen. Es ist ein temporärer (ev. nur für 1 Zyklus sichtbar) Zustand.
33 | HOME_STATE_Done | Referenzfahrt wurde erfolgreich durchgeführt. Es ist ein temporärer (ev. nur für 1 Zyklus sichtbar) Zustand.
34 | HOME_STATE_End | Referenzfahrt wurde beendet. Es ist ein temporärer (ev. nur für 1 Zyklus sichtbar) Zustand.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe freigeben
d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                  # VEL_DesiredValue - Solldrehzahl = 500 [U/min]

# init homing
d.SdoWr(0x3057, 0x00, 0x0135)             # DEV_DinReference
d.SdoWr(0x37B2, 0x00, 3)                  # POS_HomingMethod - Methode 3
d.SdoWr(0x37B3 ,0x00, 150)                # POS_HomingOffset
d.SdoWr(0x37B4, 0x00, 500)                # POS_HomingVelSwitch
d.SdoWr(0x37B4, 0x01, 100)                # POS_HomingVelZero
d.SdoWr(0x37B5, 0x00, 5000)               # POS_HomingAcc
d.SdoWr(0x37B5, 0x01, 10000)              # POS_HomingDec
d.SdoWr(0x37B6, 0x00, 20000)              # POS_HomingMaxIndexPath
d.SdoWr(0x37B6, 0x01, 200)                # POS_HomingIndexOffset

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Endstufe freigeben

# letzter Referenzierungszustand
LastState = -1

while 1:

   act_state = d.SdoRd(0x37B1, 0x02)      # POS_HomingState  - Zustand abfragen
   status = d.SdoRd(0x37B1, 0x00)         # POS_HomingStatus - Status abfragen
   error_status = d.SdoRd(0x37B1, 0x01)   # POS_HomingError

   # Wenn idle
   if status == 0:
      d.SdoWr(0x37B0, 0x00, 0x01)         # POS_HomingCmd - Starte Referenzierung

   # Nur bei Änderung
   if LastState != act_state:
      LastState = act_state

      if   act_state == 0: print "Idle"
      elif act_state == 1: print "Start"
      elif act_state == 2: print "Warte auf Referenzschalter"
      elif act_state == 3: print "Warte auf Verlassen des Referenzschalters"
      elif act_state == 4: print "Warten auf negativen Endschalter "
      elif act_state == 5: print "Warten auf Verlassen des negativen Endschalters"
      elif act_state == 6: print "Warten auf positiven Endschalter"
      elif act_state == 7: print "Warten auf Verlassen des positiven Endschalters"
      elif act_state == 8: print "Warten auf Indeximpuls"
      elif act_state == 16: print "Warten bis Bewegung ausgeführt wurde"
      elif act_state == 32: print "Referenzfahrt wird unterbrochen"
      elif act_state == 33: print "Referenzfahrt wurde erfolgreich durchgeführt"
      elif act_state == 34: print "Referenzfahrt wurde beendet"

   # Referenzierung erfolgreich
   if (status & 0x10) == 0x10:            # HOMING_STAT_Done
      print "Referenzierung erfolgreich"
      print "Abstand Referenzschalter zu Index:",
      print d.SdoRd(0x37B1, 0x03)         # POS_HomingRefToIndex
      print "Abstand Referenzschalter zu Index in Ink:",
      print d.SdoRd(0x37B1, 0x04)         # POS_HomingRefToIndex_cnt
      break                               # Schleife beenden

   # Fehlerfall
   if error_status != 0:                  # Fehler
      print "Fehler: ", error_status
      break                               # Schleife beenden


37B1.03h Referenzfahrt - Strecke Referenzschalter zu Index

Name | POS_HomingRefToIndex
Bezeichnung | Referenzfahrt - Strecke Referenzschalter zu Index
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Position
Verfügbar ab | 1.64.00.03
Geräte | Alle
PLC Funktion | HomeRef2Index()
Querverweis | POS_HomingRefToIndex_cnt, POS_HomingIndexOffset

Beschreibung

Dieser Parameter liefert den Abstand zwischen dem Referenzschalter und dem Indexpuls nach der Referenzierung zurück. Positionsskalierungen, welche durch die Faktorgruppe bestimmt werden, werden in der Berechnung dieses Werts berücksichtigt. Mit dieser Information kann man erkennen, ob der Indexpuls zu nah am Referenzschalter liegt.
Wenn der Indexpuls "zu nah" oder direkt am Referenzschalter liegt, kann es vorkommen (besonders bei mechanischen Schaltern), dass von Referenzierung zu Referenzierung unterschiedliche Referenzpunkte definiert werden. In dem Fall wird die Differenz der Referenzpunkte eine Encoderumdrehung betragen.
Am besten ist, wenn der Abstand zwischen dem Referenzschalter und dem Indexpuls die Hälfte von der Encoderauflösung (in Inkrementen) beträgt.

Referenzschalter zu Index - Richtig

Referenzschalter zu Index - Falsch

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe freigeben
d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                  # VEL_DesiredValue - Solldrehzahl = 500 [U/min]

# init homing
d.SdoWr(0x3057, 0x00, 0x0135)             # DEV_DinReference
d.SdoWr(0x37B2, 0x00, 3)                  # POS_HomingMethod - Methode 3
d.SdoWr(0x37B3 ,0x00, 150)                # POS_HomingOffset
d.SdoWr(0x37B4, 0x00, 500)                # POS_HomingVelSwitch
d.SdoWr(0x37B4, 0x01, 100)                # POS_HomingVelZero
d.SdoWr(0x37B5, 0x00, 5000)               # POS_HomingAcc
d.SdoWr(0x37B5, 0x01, 10000)              # POS_HomingDec
d.SdoWr(0x37B6, 0x00, 20000)              # POS_HomingMaxIndexPath
d.SdoWr(0x37B6, 0x01, 200)                # POS_HomingIndexOffset

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Endstufe freigeben

# letzter Referenzierungszustand
LastState = -1

while 1:

   act_state = d.SdoRd(0x37B1, 0x02)      # POS_HomingState  - Zustand abfragen
   status = d.SdoRd(0x37B1, 0x00)         # POS_HomingStatus - Status abfragen
   error_status = d.SdoRd(0x37B1, 0x01)   # POS_HomingError

   # Wenn idle
   if status == 0:
      d.SdoWr(0x37B0, 0x00, 0x01)         # POS_HomingCmd - Starte Referenzierung

   # Nur bei Änderung
   if LastState != act_state:
      LastState = act_state

      if   act_state == 0: print "Idle"
      elif act_state == 1: print "Start"
      elif act_state == 2: print "Warte auf Referenzschalter"
      elif act_state == 3: print "Warte auf Verlassen des Referenzschalters"
      elif act_state == 4: print "Warten auf negativen Endschalter "
      elif act_state == 5: print "Warten auf Verlassen des negativen Endschalters"
      elif act_state == 6: print "Warten auf positiven Endschalter"
      elif act_state == 7: print "Warten auf Verlassen des positiven Endschalters"
      elif act_state == 8: print "Warten auf Indeximpuls"
      elif act_state == 16: print "Warten bis Bewegung ausgeführt wurde"
      elif act_state == 32: print "Referenzfahrt wird unterbrochen"
      elif act_state == 33: print "Referenzfahrt wurde erfolgreich durchgeführt"
      elif act_state == 34: print "Referenzfahrt wurde beendet"

   # Referenzierung erfolgreich
   if (status & 0x10) == 0x10:            # HOMING_STAT_Done
      print "Referenzierung erfolgreich"
      print "Abstand Referenzschalter zu Index:",
      print d.SdoRd(0x37B1, 0x03)         # POS_HomingRefToIndex
      print "Abstand Referenzschalter zu Index in Ink:",
      print d.SdoRd(0x37B1, 0x04)         # POS_HomingRefToIndex_cnt
      break                               # Schleife beenden

   # Fehlerfall
   if error_status != 0:                  # Fehler
      print "Fehler: ", error_status
      break                               # Schleife beenden


37B1.04h Referenzfahrt - Strecke Referenzschalter zu Index in Ink.

Name | POS_HomingRefToIndex_cnt
Bezeichnung | Referenzfahrt - Strecke Referenzschalter zu Index in Ink.
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Position
Verfügbar ab | 1.64.00.03
Geräte | Alle
PLC Funktion | HomeRef2Index_cnt()
Querverweis | POS_HomingRefToIndex, POS_HomingIndexOffset

Beschreibung

Dieser Parameter liefert den Abstand zwischen dem Referenzschalter und dem Indeximpuls in Inkrementen zurück. Positionsskalierungen, welche durch die Faktorgruppe bestimmt werden, werden nicht berücksichtigt.
Für genauere Beschreibung siehe Parameter POS_HomingRefToIndex.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe freigeben
d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                  # VEL_DesiredValue - Solldrehzahl = 500 [U/min]

# init homing
d.SdoWr(0x3057, 0x00, 0x0135)             # DEV_DinReference
d.SdoWr(0x37B2, 0x00, 3)                  # POS_HomingMethod - Methode 3
d.SdoWr(0x37B3 ,0x00, 150)                # POS_HomingOffset
d.SdoWr(0x37B4, 0x00, 500)                # POS_HomingVelSwitch
d.SdoWr(0x37B4, 0x01, 100)                # POS_HomingVelZero
d.SdoWr(0x37B5, 0x00, 5000)               # POS_HomingAcc
d.SdoWr(0x37B5, 0x01, 10000)              # POS_HomingDec
d.SdoWr(0x37B6, 0x00, 20000)              # POS_HomingMaxIndexPath
d.SdoWr(0x37B6, 0x01, 200)                # POS_HomingIndexOffset

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Endstufe freigeben

# letzter Referenzierungszustand
LastState = -1

while 1:

   act_state = d.SdoRd(0x37B1, 0x02)      # POS_HomingState  - Zustand abfragen
   status = d.SdoRd(0x37B1, 0x00)         # POS_HomingStatus - Status abfragen
   error_status = d.SdoRd(0x37B1, 0x01)   # POS_HomingError

   # Wenn idle
   if status == 0:
      d.SdoWr(0x37B0, 0x00, 0x01)         # POS_HomingCmd - Starte Referenzierung

   # Nur bei Änderung
   if LastState != act_state:
      LastState = act_state

      if   act_state == 0: print "Idle"
      elif act_state == 1: print "Start"
      elif act_state == 2: print "Warte auf Referenzschalter"
      elif act_state == 3: print "Warte auf Verlassen des Referenzschalters"
      elif act_state == 4: print "Warten auf negativen Endschalter "
      elif act_state == 5: print "Warten auf Verlassen des negativen Endschalters"
      elif act_state == 6: print "Warten auf positiven Endschalter"
      elif act_state == 7: print "Warten auf Verlassen des positiven Endschalters"
      elif act_state == 8: print "Warten auf Indeximpuls"
      elif act_state == 16: print "Warten bis Bewegung ausgeführt wurde"
      elif act_state == 32: print "Referenzfahrt wird unterbrochen"
      elif act_state == 33: print "Referenzfahrt wurde erfolgreich durchgeführt"
      elif act_state == 34: print "Referenzfahrt wurde beendet"

   # Referenzierung erfolgreich
   if (status & 0x10) == 0x10:            # HOMING_STAT_Done
      print "Referenzierung erfolgreich"
      print "Abstand Referenzschalter zu Index:",
      print d.SdoRd(0x37B1, 0x03)         # POS_HomingRefToIndex
      print "Abstand Referenzschalter zu Index in Ink:",
      print d.SdoRd(0x37B1, 0x04)         # POS_HomingRefToIndex_cnt
      break                               # Schleife beenden

   # Fehlerfall
   if error_status != 0:                  # Fehler
      print "Fehler: ", error_status
      break                               # Schleife beenden


37B2.00h Referenzfahrt - Methode

Name | POS_HomingMethod
Bezeichnung | Referenzfahrt - Methode
Datentyp | int8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-128 .. 127]
Defaultwert | 0
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.64.00.03
Geräte | Alle
PLC Funktion | HomeMethod(value)
Querverweis | DEV_DinLimitPos, DEV_DinLimitNeg, DEV_DinReference

Beschreibung

Dieser Parameter legt die Referenzierungsmethode fest.

Falls die Referenzierungsmethode ungleich 0 ist, muss ein Referenzierungsfahrt erfolgreich durchgeführt werden, bevor eine absolute Positionierkommando (POS_Mova) ausgeführt werden kann. Sonst wird keine absolute Positionierung erlaubt. Die relative Positionierung (POS_Mova) kann unabhängig von der Referenzierungsmethode ausgeführt werden.

ACHTUNG: Je nach Referenzierungsmethode müssen u.a. folgende Parameter eingestellt werden:

- DEV_DinLimitPos     für Methoden, die positiven Limitschalter verwenden
- DEV_DinLimitNeg     für Methoden, die negativen Limitschalter verwenden
- DEV_DinReference    für Methoden, die Referenzschalter verwenden

Ab der Firmware V1.85.00.60 ist es möglich eine Referenzierung auf Block durchzuführen. Dafür können alle Homingmethoden, die die Limitschalter verwenden, benutzt werden.
Mit dem Parameter POS_HomingBlock_ConfigFlags können die Limitschalter mit dem Erreignis "Blockierung" ersetzt werden.

Methode 0: Keine Referenzierung notwendig.

Methode 1: Homing mittels des negativen Limitschalters und dem Indexpuls

Bei dieser Methode ist die Ausgangsbewegungsrichtung linksherum, wenn der negative Limitschalter (DEV_DinLimitNeg) nicht aktiv ist (hier dargestellt als "low").
Beim erreichend des Limitschalter ändert sich die Bewegungsrichtung zu rechtsherum.
Die Nullposition ist am ersten Indeximpuls nachdem der Limitschalter wieder nach rechts verlassen wurde.

Methode 2: Homing mittels des positiven Limitschalters und dem Indexpuls

Bei dieser Methode ist die Ausgangsbewegungsrichtung, rechtsherum, wenn der positive Limitschalter (DEV_DinLimitPos) nicht aktiv ist (hier dargestellt als "low").
Beim erreichend des Limitschalter ändert sich die Bewegungsrichtung zu linksherum.
Die Nullposition ist am ersten Indeximpuls nachdem der Limitschalter wieder nach links verlassen wurde.

Methode 3 und 4: Homing mittels des positiven Referenzschalters und dem Indexpuls

Bei Methode 3 oder 4 ist die Ausgangsbewegungsrichtung vom Zustand des Referenzschalters (DEV_DinReference) abhängig.
Die Nullposition ist am Indeximpuls, entweder zur rechten oder zur linken Seite des Punktes, in dem der Referenzschalter seinen Zustand ändert.
Wenn die Ausgangsposition so gesetzt ist, dass sich die Bewegungsrichtung umkehren muss, findet die Umlenkung immer erst dann statt, wenn sich der Zustand des Referenzschalters ändert.

Methode 5 und 6: Homing mittels des negativen Referenzschalters und dem Indexpuls

Bei Methode 5 oder 6 ist die Ausgangsbewegungsrichtung vom Zustand des Referenzschalters (DEV_DinReference) abhängig.
Die Nullposition ist am Indeximpuls, entweder zur rechten oder zur linken Seite des Punktes, in dem der Referenzschalter seinen Zustand ändert.
Wenn die Ausgangsposition so gesetzt ist, dass sich die Bewegungsrichtung umkehren muss, findet die Umlenkung immer erst dann statt, wenn sich der Zustand des Referenzschalters ändert.

Methode 7 bis 14: Homing mittels des Referenzschalters und dem Indexpuls

Diese Methoden benutzen einen Referenzschalter (DEV_DinReference), der nur über eine bestimme Länge der Strecke aktiv ist.
Bei den Methoden 7 bis 10 ist die Ausgangsbewegungsrichtung rechts, und bei den Methoden 11 bis 14 ist die Ausgangsbewegungsrichtung links, es sei denn beim Anfang der Bewegung ist der Referenzschalter aktiv.
In diesem Fall ist die Ausgangsrichtung der Bewegung von der Flanke abhängig, die gesucht wird.
Die Nullposition ist am Indeximpuls auf beiden Seiten der steigenden oder fallenden Flanke des Referenzschalters, wie in den folgenden zwei Diagrammen gezeigt.
Wenn die Ausgangsbewegungsrichtung vom Referenzschalter wegführt, muss sich die Bewegung beim Antreffen des relevanten Limitschalters umkehren.

Methode 15 und 16: Reserviert

Diese Methoden sind für zukünftige Erweiterungen des Homing Mods reserviert.

Methode 17 bis 30: Homing ohne Indeximpuls

Diese Methoden sind ähnlich zu den Methoden 1 bis 14, außer, dass die Nullposition nicht vom Indeximpuls abhängig ist, sondern lediglich vom Übergang der relevanten Referenz- bzw. Limitschalter.
Z.B. sind Methode 19 und 20 zu Methode 3 und 4 ähnlich, wie im folgenden Diagramm gezeigt wird.

Methode 31 und 32: Reserviert

Diese Methoden sind für zukünftige Erweiterungen des Homing Mods reserviert.

Methode 33 und 34: Homing mittels den Indeximpuls

Bei den Methoden 33 und 34 ist die Richtung der Referenzfahrt positiv beziehungsweise negativ. Die Nullposition ist am ersten Indeximpuls, der in der vorgewählten Richtung gefunden wird.

Methode 35: Homing mittels der aktuellen Position

In Methode 35 wird die gegenwärtige Position als Nullposition genommen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe freigeben
d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                  # VEL_DesiredValue - Solldrehzahl = 500 [U/min]

# init homing
d.SdoWr(0x3057, 0x00, 0x0135)             # DEV_DinReference
d.SdoWr(0x37B2, 0x00, 3)                  # POS_HomingMethod - Methode 3
d.SdoWr(0x37B3 ,0x00, 150)                # POS_HomingOffset
d.SdoWr(0x37B4, 0x00, 500)                # POS_HomingVelSwitch
d.SdoWr(0x37B4, 0x01, 100)                # POS_HomingVelZero
d.SdoWr(0x37B5, 0x00, 5000)               # POS_HomingAcc
d.SdoWr(0x37B5, 0x01, 10000)              # POS_HomingDec
d.SdoWr(0x37B6, 0x00, 20000)              # POS_HomingMaxIndexPath
d.SdoWr(0x37B6, 0x01, 200)                # POS_HomingIndexOffset

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Endstufe freigeben

# letzter Referenzierungszustand
LastState = -1

while 1:

   act_state = d.SdoRd(0x37B1, 0x02)      # POS_HomingState  - Zustand abfragen
   status = d.SdoRd(0x37B1, 0x00)         # POS_HomingStatus - Status abfragen
   error_status = d.SdoRd(0x37B1, 0x01)   # POS_HomingError

   # Wenn idle
   if status == 0:
      d.SdoWr(0x37B0, 0x00, 0x01)         # POS_HomingCmd - Starte Referenzierung

   # Nur bei Änderung
   if LastState != act_state:
      LastState = act_state

      if   act_state == 0: print "Idle"
      elif act_state == 1: print "Start"
      elif act_state == 2: print "Warte auf Referenzschalter"
      elif act_state == 3: print "Warte auf Verlassen des Referenzschalters"
      elif act_state == 4: print "Warten auf negativen Endschalter "
      elif act_state == 5: print "Warten auf Verlassen des negativen Endschalters"
      elif act_state == 6: print "Warten auf positiven Endschalter"
      elif act_state == 7: print "Warten auf Verlassen des positiven Endschalters"
      elif act_state == 8: print "Warten auf Indeximpuls"
      elif act_state == 16: print "Warten bis Bewegung ausgeführt wurde"
      elif act_state == 32: print "Referenzfahrt wird unterbrochen"
      elif act_state == 33: print "Referenzfahrt wurde erfolgreich durchgeführt"
      elif act_state == 34: print "Referenzfahrt wurde beendet"

   # Referenzierung erfolgreich
   if (status & 0x10) == 0x10:            # HOMING_STAT_Done
      print "Referenzierung erfolgreich"
      print "Abstand Referenzschalter zu Index:",
      print d.SdoRd(0x37B1, 0x03)         # POS_HomingRefToIndex
      print "Abstand Referenzschalter zu Index in Ink:",
      print d.SdoRd(0x37B1, 0x04)         # POS_HomingRefToIndex_cnt
      break                               # Schleife beenden

   # Fehlerfall
   if error_status != 0:                  # Fehler
      print "Fehler: ", error_status
      break                               # Schleife beenden


37B3.00h Referenzfahrt - Referenzoffset

Name | POS_HomingOffset
Bezeichnung | Referenzfahrt - Referenzoffset
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | [Inkremente]
Betriebsart | Position
Verfügbar ab | 1.64.00.03
Geräte | Alle
PLC Funktion | HomeOffset(value)
Querverweis | -

Beschreibung

Der Referenzoffset ist die Differenz zwischen Realnullpunkt (für die Applikation) und Maschinennullpunkt (gefunden bei der Referenzierung). Am Ende der Referenzfahrt wird der Referenzoffset auf Kommandoposition und Istposition mit negativen Vorzeichen "umkopiert". Bei einer anschließenden Positionierung auf 0 fährt die Achse um diesen Offset auf den Realnullpunkt. Alle weiteren Positionierungen beziehen sich dann auf diesen Realnullpunkt. Dieser Parameter ist jederzeit beschreibbar. Die Änderungen wirken sich sofort auf die Target-, Kommando- und Istposition aus. Wenn eine Änderung bei einer aktiven Positionierung erfolgt, dann bleibt das ursprüngliches Positionsziel (bezogen auf Maschinennullpunkt) erhalten.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe freigeben
d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                  # VEL_DesiredValue - Solldrehzahl = 500 [U/min]

# init homing
d.SdoWr(0x3057, 0x00, 0x0135)             # DEV_DinReference
d.SdoWr(0x37B2, 0x00, 3)                  # POS_HomingMethod - Methode 3
d.SdoWr(0x37B3 ,0x00, 150)                # POS_HomingOffset
d.SdoWr(0x37B4, 0x00, 500)                # POS_HomingVelSwitch
d.SdoWr(0x37B4, 0x01, 100)                # POS_HomingVelZero
d.SdoWr(0x37B5, 0x00, 5000)               # POS_HomingAcc
d.SdoWr(0x37B5, 0x01, 10000)              # POS_HomingDec
d.SdoWr(0x37B6, 0x00, 20000)              # POS_HomingMaxIndexPath
d.SdoWr(0x37B6, 0x01, 200)                # POS_HomingIndexOffset

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Endstufe freigeben

# letzter Referenzierungszustand
LastState = -1

while 1:

   act_state = d.SdoRd(0x37B1, 0x02)      # POS_HomingState  - Zustand abfragen
   status = d.SdoRd(0x37B1, 0x00)         # POS_HomingStatus - Status abfragen
   error_status = d.SdoRd(0x37B1, 0x01)   # POS_HomingError

   # Wenn idle
   if status == 0:
      d.SdoWr(0x37B0, 0x00, 0x01)         # POS_HomingCmd - Starte Referenzierung

   # Nur bei Änderung
   if LastState != act_state:
      LastState = act_state

      if   act_state == 0: print "Idle"
      elif act_state == 1: print "Start"
      elif act_state == 2: print "Warte auf Referenzschalter"
      elif act_state == 3: print "Warte auf Verlassen des Referenzschalters"
      elif act_state == 4: print "Warten auf negativen Endschalter "
      elif act_state == 5: print "Warten auf Verlassen des negativen Endschalters"
      elif act_state == 6: print "Warten auf positiven Endschalter"
      elif act_state == 7: print "Warten auf Verlassen des positiven Endschalters"
      elif act_state == 8: print "Warten auf Indeximpuls"
      elif act_state == 16: print "Warten bis Bewegung ausgeführt wurde"
      elif act_state == 32: print "Referenzfahrt wird unterbrochen"
      elif act_state == 33: print "Referenzfahrt wurde erfolgreich durchgeführt"
      elif act_state == 34: print "Referenzfahrt wurde beendet"

   # Referenzierung erfolgreich
   if (status & 0x10) == 0x10:            # HOMING_STAT_Done
      print "Referenzierung erfolgreich"
      print "Abstand Referenzschalter zu Index:",
      print d.SdoRd(0x37B1, 0x03)         # POS_HomingRefToIndex
      print "Abstand Referenzschalter zu Index in Ink:",
      print d.SdoRd(0x37B1, 0x04)         # POS_HomingRefToIndex_cnt
      break                               # Schleife beenden

   # Fehlerfall
   if error_status != 0:                  # Fehler
      print "Fehler: ", error_status
      break                               # Schleife beenden


37B4.00h Referenzfahrt - Geschwindigkeit für Schaltersuche

Name | POS_HomingVelSwitch
Bezeichnung | Referenzfahrt - Geschwindigkeit für Schaltersuche
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Position
Verfügbar ab | 1.64.00.03
Geräte | Alle
PLC Funktion | HomeVelSwitch(value)
Querverweis | POS_HomingMethod

Beschreibung

Dieser Parameter definiert die Geschwindigkeit bei der Referenzierung für die Suche des Referenzschalters. Diese Geschwindigkeit wird auch schnelle Referenzierungsgeschwindigkeit genannt. Für welche Referenzierungsphase diese Geschwindigkeit genommen wird, kann den Bildern der Referenzierungsmethoden entnommen werden (siehe Parameter POS_HomingMethod).

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe freigeben
d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                  # VEL_DesiredValue - Solldrehzahl = 500 [U/min]

# init homing
d.SdoWr(0x3057, 0x00, 0x0135)             # DEV_DinReference
d.SdoWr(0x37B2, 0x00, 3)                  # POS_HomingMethod - Methode 3
d.SdoWr(0x37B3 ,0x00, 150)                # POS_HomingOffset
d.SdoWr(0x37B4, 0x00, 500)                # POS_HomingVelSwitch
d.SdoWr(0x37B4, 0x01, 100)                # POS_HomingVelZero
d.SdoWr(0x37B5, 0x00, 5000)               # POS_HomingAcc
d.SdoWr(0x37B5, 0x01, 10000)              # POS_HomingDec
d.SdoWr(0x37B6, 0x00, 20000)              # POS_HomingMaxIndexPath
d.SdoWr(0x37B6, 0x01, 200)                # POS_HomingIndexOffset

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Endstufe freigeben

# letzter Referenzierungszustand
LastState = -1

while 1:

   act_state = d.SdoRd(0x37B1, 0x02)      # POS_HomingState  - Zustand abfragen
   status = d.SdoRd(0x37B1, 0x00)         # POS_HomingStatus - Status abfragen
   error_status = d.SdoRd(0x37B1, 0x01)   # POS_HomingError

   # Wenn idle
   if status == 0:
      d.SdoWr(0x37B0, 0x00, 0x01)         # POS_HomingCmd - Starte Referenzierung

   # Nur bei Änderung
   if LastState != act_state:
      LastState = act_state

      if   act_state == 0: print "Idle"
      elif act_state == 1: print "Start"
      elif act_state == 2: print "Warte auf Referenzschalter"
      elif act_state == 3: print "Warte auf Verlassen des Referenzschalters"
      elif act_state == 4: print "Warten auf negativen Endschalter "
      elif act_state == 5: print "Warten auf Verlassen des negativen Endschalters"
      elif act_state == 6: print "Warten auf positiven Endschalter"
      elif act_state == 7: print "Warten auf Verlassen des positiven Endschalters"
      elif act_state == 8: print "Warten auf Indeximpuls"
      elif act_state == 16: print "Warten bis Bewegung ausgeführt wurde"
      elif act_state == 32: print "Referenzfahrt wird unterbrochen"
      elif act_state == 33: print "Referenzfahrt wurde erfolgreich durchgeführt"
      elif act_state == 34: print "Referenzfahrt wurde beendet"

   # Referenzierung erfolgreich
   if (status & 0x10) == 0x10:            # HOMING_STAT_Done
      print "Referenzierung erfolgreich"
      print "Abstand Referenzschalter zu Index:",
      print d.SdoRd(0x37B1, 0x03)         # POS_HomingRefToIndex
      print "Abstand Referenzschalter zu Index in Ink:",
      print d.SdoRd(0x37B1, 0x04)         # POS_HomingRefToIndex_cnt
      break                               # Schleife beenden

   # Fehlerfall
   if error_status != 0:                  # Fehler
      print "Fehler: ", error_status
      break                               # Schleife beenden


37B4.01h Referenzfahrt - Geschwindigkeit für Nullpunktanfahrt

Name | POS_HomingVelZero
Bezeichnung | Referenzfahrt - Geschwindigkeit für Nullpunktanfahrt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Position
Verfügbar ab | 1.64.00.03
Geräte | Alle
PLC Funktion | HomeVelZero(value)
Querverweis | POS_HomingMethod

Beschreibung

Dieser Parameter definiert die Geschwindigkeit bei der Referenzierung für die Suche des Nullpunktes. Da diese Geschwindigkeit in der Praxis kleiner als POS_HomingVelSwitch ist, wird sie auch als langsame Referenzierungsgeschwindigkeit bezeichnet. Für welche Referenzierungsphase diese Geschwindigkeit genommen wird, kann den Bildern der Referenzierungsmethoden entnommen werden (siehe Parameter POS_HomingMethod).

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe freigeben
d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                  # VEL_DesiredValue - Solldrehzahl = 500 [U/min]

# init homing
d.SdoWr(0x3057, 0x00, 0x0135)             # DEV_DinReference
d.SdoWr(0x37B2, 0x00, 3)                  # POS_HomingMethod - Methode 3
d.SdoWr(0x37B3 ,0x00, 150)                # POS_HomingOffset
d.SdoWr(0x37B4, 0x00, 500)                # POS_HomingVelSwitch
d.SdoWr(0x37B4, 0x01, 100)                # POS_HomingVelZero
d.SdoWr(0x37B5, 0x00, 5000)               # POS_HomingAcc
d.SdoWr(0x37B5, 0x01, 10000)              # POS_HomingDec
d.SdoWr(0x37B6, 0x00, 20000)              # POS_HomingMaxIndexPath
d.SdoWr(0x37B6, 0x01, 200)                # POS_HomingIndexOffset

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Endstufe freigeben

# letzter Referenzierungszustand
LastState = -1

while 1:

   act_state = d.SdoRd(0x37B1, 0x02)      # POS_HomingState  - Zustand abfragen
   status = d.SdoRd(0x37B1, 0x00)         # POS_HomingStatus - Status abfragen
   error_status = d.SdoRd(0x37B1, 0x01)   # POS_HomingError

   # Wenn idle
   if status == 0:
      d.SdoWr(0x37B0, 0x00, 0x01)         # POS_HomingCmd - Starte Referenzierung

   # Nur bei Änderung
   if LastState != act_state:
      LastState = act_state

      if   act_state == 0: print "Idle"
      elif act_state == 1: print "Start"
      elif act_state == 2: print "Warte auf Referenzschalter"
      elif act_state == 3: print "Warte auf Verlassen des Referenzschalters"
      elif act_state == 4: print "Warten auf negativen Endschalter "
      elif act_state == 5: print "Warten auf Verlassen des negativen Endschalters"
      elif act_state == 6: print "Warten auf positiven Endschalter"
      elif act_state == 7: print "Warten auf Verlassen des positiven Endschalters"
      elif act_state == 8: print "Warten auf Indeximpuls"
      elif act_state == 16: print "Warten bis Bewegung ausgeführt wurde"
      elif act_state == 32: print "Referenzfahrt wird unterbrochen"
      elif act_state == 33: print "Referenzfahrt wurde erfolgreich durchgeführt"
      elif act_state == 34: print "Referenzfahrt wurde beendet"

   # Referenzierung erfolgreich
   if (status & 0x10) == 0x10:            # HOMING_STAT_Done
      print "Referenzierung erfolgreich"
      print "Abstand Referenzschalter zu Index:",
      print d.SdoRd(0x37B1, 0x03)         # POS_HomingRefToIndex
      print "Abstand Referenzschalter zu Index in Ink:",
      print d.SdoRd(0x37B1, 0x04)         # POS_HomingRefToIndex_cnt
      break                               # Schleife beenden

   # Fehlerfall
   if error_status != 0:                  # Fehler
      print "Fehler: ", error_status
      break                               # Schleife beenden


37B5.00h Referenzfahrt - Beschleunigung

Name | POS_HomingAcc
Bezeichnung | Referenzfahrt - Beschleunigung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 60000
Einheit | [U/min²] - Umdrehungen pro Minute in Quadrat
Betriebsart | Position
Verfügbar ab | 1.64.00.03
Geräte | Alle
PLC Funktion | HomeAcc(value)
Querverweis | -

Beschreibung

Dieser Parameter legt die Beschleunigung bei einer Referenzfahrt fest.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe freigeben
d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                  # VEL_DesiredValue - Solldrehzahl = 500 [U/min]

# init homing
d.SdoWr(0x3057, 0x00, 0x0135)             # DEV_DinReference
d.SdoWr(0x37B2, 0x00, 3)                  # POS_HomingMethod - Methode 3
d.SdoWr(0x37B3 ,0x00, 150)                # POS_HomingOffset
d.SdoWr(0x37B4, 0x00, 500)                # POS_HomingVelSwitch
d.SdoWr(0x37B4, 0x01, 100)                # POS_HomingVelZero
d.SdoWr(0x37B5, 0x00, 5000)               # POS_HomingAcc
d.SdoWr(0x37B5, 0x01, 10000)              # POS_HomingDec
d.SdoWr(0x37B6, 0x00, 20000)              # POS_HomingMaxIndexPath
d.SdoWr(0x37B6, 0x01, 200)                # POS_HomingIndexOffset

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Endstufe freigeben

# letzter Referenzierungszustand
LastState = -1

while 1:

   act_state = d.SdoRd(0x37B1, 0x02)      # POS_HomingState  - Zustand abfragen
   status = d.SdoRd(0x37B1, 0x00)         # POS_HomingStatus - Status abfragen
   error_status = d.SdoRd(0x37B1, 0x01)   # POS_HomingError

   # Wenn idle
   if status == 0:
      d.SdoWr(0x37B0, 0x00, 0x01)         # POS_HomingCmd - Starte Referenzierung

   # Nur bei Änderung
   if LastState != act_state:
      LastState = act_state

      if   act_state == 0: print "Idle"
      elif act_state == 1: print "Start"
      elif act_state == 2: print "Warte auf Referenzschalter"
      elif act_state == 3: print "Warte auf Verlassen des Referenzschalters"
      elif act_state == 4: print "Warten auf negativen Endschalter "
      elif act_state == 5: print "Warten auf Verlassen des negativen Endschalters"
      elif act_state == 6: print "Warten auf positiven Endschalter"
      elif act_state == 7: print "Warten auf Verlassen des positiven Endschalters"
      elif act_state == 8: print "Warten auf Indeximpuls"
      elif act_state == 16: print "Warten bis Bewegung ausgeführt wurde"
      elif act_state == 32: print "Referenzfahrt wird unterbrochen"
      elif act_state == 33: print "Referenzfahrt wurde erfolgreich durchgeführt"
      elif act_state == 34: print "Referenzfahrt wurde beendet"

   # Referenzierung erfolgreich
   if (status & 0x10) == 0x10:            # HOMING_STAT_Done
      print "Referenzierung erfolgreich"
      print "Abstand Referenzschalter zu Index:",
      print d.SdoRd(0x37B1, 0x03)         # POS_HomingRefToIndex
      print "Abstand Referenzschalter zu Index in Ink:",
      print d.SdoRd(0x37B1, 0x04)         # POS_HomingRefToIndex_cnt
      break                               # Schleife beenden

   # Fehlerfall
   if error_status != 0:                  # Fehler
      print "Fehler: ", error_status
      break                               # Schleife beenden


37B5.01h Referenzfahrt - Verzögerung

Name | POS_HomingDec
Bezeichnung | Referenzfahrt - Verzögerung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [U/min²] - Umdrehungen pro Minute in Quadrat
Betriebsart | Position
Verfügbar ab | 1.64.00.03
Geräte | Alle
PLC Funktion | HomeDec(value)
Querverweis | -

Beschreibung

Dieser Parameter legt die Verzögerung bei einer Referenzfahrt fest. Defaultwert des Parameters ist 0. D.h. die Verzögerung ist gleich der Beschleunigung (= POS_HomingAcc).

Parameterwerte:
Wert | Beschreibung
=0 | Verzögerung = POS_HomingAcc
>0 | Verzögerung = POS_HomingDec

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe freigeben
d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                  # VEL_DesiredValue - Solldrehzahl = 500 [U/min]

# init homing
d.SdoWr(0x3057, 0x00, 0x0135)             # DEV_DinReference
d.SdoWr(0x37B2, 0x00, 3)                  # POS_HomingMethod - Methode 3
d.SdoWr(0x37B3 ,0x00, 150)                # POS_HomingOffset
d.SdoWr(0x37B4, 0x00, 500)                # POS_HomingVelSwitch
d.SdoWr(0x37B4, 0x01, 100)                # POS_HomingVelZero
d.SdoWr(0x37B5, 0x00, 5000)               # POS_HomingAcc
d.SdoWr(0x37B5, 0x01, 10000)              # POS_HomingDec
d.SdoWr(0x37B6, 0x00, 20000)              # POS_HomingMaxIndexPath
d.SdoWr(0x37B6, 0x01, 200)                # POS_HomingIndexOffset

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Endstufe freigeben

# letzter Referenzierungszustand
LastState = -1

while 1:

   act_state = d.SdoRd(0x37B1, 0x02)      # POS_HomingState  - Zustand abfragen
   status = d.SdoRd(0x37B1, 0x00)         # POS_HomingStatus - Status abfragen
   error_status = d.SdoRd(0x37B1, 0x01)   # POS_HomingError

   # Wenn idle
   if status == 0:
      d.SdoWr(0x37B0, 0x00, 0x01)         # POS_HomingCmd - Starte Referenzierung

   # Nur bei Änderung
   if LastState != act_state:
      LastState = act_state

      if   act_state == 0: print "Idle"
      elif act_state == 1: print "Start"
      elif act_state == 2: print "Warte auf Referenzschalter"
      elif act_state == 3: print "Warte auf Verlassen des Referenzschalters"
      elif act_state == 4: print "Warten auf negativen Endschalter "
      elif act_state == 5: print "Warten auf Verlassen des negativen Endschalters"
      elif act_state == 6: print "Warten auf positiven Endschalter"
      elif act_state == 7: print "Warten auf Verlassen des positiven Endschalters"
      elif act_state == 8: print "Warten auf Indeximpuls"
      elif act_state == 16: print "Warten bis Bewegung ausgeführt wurde"
      elif act_state == 32: print "Referenzfahrt wird unterbrochen"
      elif act_state == 33: print "Referenzfahrt wurde erfolgreich durchgeführt"
      elif act_state == 34: print "Referenzfahrt wurde beendet"

   # Referenzierung erfolgreich
   if (status & 0x10) == 0x10:            # HOMING_STAT_Done
      print "Referenzierung erfolgreich"
      print "Abstand Referenzschalter zu Index:",
      print d.SdoRd(0x37B1, 0x03)         # POS_HomingRefToIndex
      print "Abstand Referenzschalter zu Index in Ink:",
      print d.SdoRd(0x37B1, 0x04)         # POS_HomingRefToIndex_cnt
      break                               # Schleife beenden

   # Fehlerfall
   if error_status != 0:                  # Fehler
      print "Fehler: ", error_status
      break                               # Schleife beenden


37B6.00h Referenzfahrt - max. Strecke für Indexsuche

Name | POS_HomingMaxIndexPath
Bezeichnung | Referenzfahrt - max. Strecke für Indexsuche
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 2147483647]
Defaultwert | 2147483647
Einheit | [Inkremente]
Betriebsart | Position
Verfügbar ab | 1.64.00.03
Geräte | Alle
PLC Funktion | HomeMaxIndexPath(value)
Querverweis | -

Beschreibung

Dieser Parameter legt eine max. Strecke ab dem Referenzschalter fest, innerhalb welcher ein Indexpuls gefunden werden muss.
Wenn der Indexpuls nicht innerhalb der Strecke gefunden wird, wird die Referenzierung abgebrochen und ein Fehler gemeldet (Parameter POS_HomingError = -4201). Dieser Parameter gilt nur für Referenzierungsmethoden mit einem Indexpuls.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe freigeben
d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                  # VEL_DesiredValue - Solldrehzahl = 500 [U/min]

# init homing
d.SdoWr(0x3057, 0x00, 0x0135)             # DEV_DinReference
d.SdoWr(0x37B2, 0x00, 3)                  # POS_HomingMethod - Methode 3
d.SdoWr(0x37B3 ,0x00, 150)                # POS_HomingOffset
d.SdoWr(0x37B4, 0x00, 500)                # POS_HomingVelSwitch
d.SdoWr(0x37B4, 0x01, 100)                # POS_HomingVelZero
d.SdoWr(0x37B5, 0x00, 5000)               # POS_HomingAcc
d.SdoWr(0x37B5, 0x01, 10000)              # POS_HomingDec
d.SdoWr(0x37B6, 0x00, 20000)              # POS_HomingMaxIndexPath
d.SdoWr(0x37B6, 0x01, 200)                # POS_HomingIndexOffset

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Endstufe freigeben

# letzter Referenzierungszustand
LastState = -1

while 1:

   act_state = d.SdoRd(0x37B1, 0x02)      # POS_HomingState  - Zustand abfragen
   status = d.SdoRd(0x37B1, 0x00)         # POS_HomingStatus - Status abfragen
   error_status = d.SdoRd(0x37B1, 0x01)   # POS_HomingError

   # Wenn idle
   if status == 0:
      d.SdoWr(0x37B0, 0x00, 0x01)         # POS_HomingCmd - Starte Referenzierung

   # Nur bei Änderung
   if LastState != act_state:
      LastState = act_state

      if   act_state == 0: print "Idle"
      elif act_state == 1: print "Start"
      elif act_state == 2: print "Warte auf Referenzschalter"
      elif act_state == 3: print "Warte auf Verlassen des Referenzschalters"
      elif act_state == 4: print "Warten auf negativen Endschalter "
      elif act_state == 5: print "Warten auf Verlassen des negativen Endschalters"
      elif act_state == 6: print "Warten auf positiven Endschalter"
      elif act_state == 7: print "Warten auf Verlassen des positiven Endschalters"
      elif act_state == 8: print "Warten auf Indeximpuls"
      elif act_state == 16: print "Warten bis Bewegung ausgeführt wurde"
      elif act_state == 32: print "Referenzfahrt wird unterbrochen"
      elif act_state == 33: print "Referenzfahrt wurde erfolgreich durchgeführt"
      elif act_state == 34: print "Referenzfahrt wurde beendet"

   # Referenzierung erfolgreich
   if (status & 0x10) == 0x10:            # HOMING_STAT_Done
      print "Referenzierung erfolgreich"
      print "Abstand Referenzschalter zu Index:",
      print d.SdoRd(0x37B1, 0x03)         # POS_HomingRefToIndex
      print "Abstand Referenzschalter zu Index in Ink:",
      print d.SdoRd(0x37B1, 0x04)         # POS_HomingRefToIndex_cnt
      break                               # Schleife beenden

   # Fehlerfall
   if error_status != 0:                  # Fehler
      print "Fehler: ", error_status
      break                               # Schleife beenden


37B6.01h Referenzfahrt - Indexoffset

Name | POS_HomingIndexOffset
Bezeichnung | Referenzfahrt - Indexoffset
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | [Inkremente]
Betriebsart | Position
Verfügbar ab | 1.71.00.04
Geräte | Alle
PLC Funktion | HomeIndexOffset(value)
Querverweis | POS_HomingRefToIndex

Beschreibung

Der POS_HomingIndexOffset legt eine Strecke nach dem Referenzschalter fest, über welche die kommenden Indexpulse bei dem Referenzierungsfahrt ignoriert werden. Als Maschinennullpunkt wird der erste Indexpuls nach dieser Strecke genommen.
Dieser Parameter kann u.a. verwendet werden, wenn der Indexpuls zu nah am Referenzschalter liegt (siehe Parameter POS_HomingRefToIndex) oder der Referenzschalter nicht mechanisch verstellbar ist (siehe Parameter POS_HomingRefToIndex).
POS_HomingIndexOffset gilt nur für Referenzierungsmethoden mit einem Indexpuls.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe freigeben
d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                  # VEL_DesiredValue - Solldrehzahl = 500 [U/min]

# init homing
d.SdoWr(0x3057, 0x00, 0x0135)             # DEV_DinReference
d.SdoWr(0x37B2, 0x00, 3)                  # POS_HomingMethod - Methode 3
d.SdoWr(0x37B3 ,0x00, 150)                # POS_HomingOffset
d.SdoWr(0x37B4, 0x00, 500)                # POS_HomingVelSwitch
d.SdoWr(0x37B4, 0x01, 100)                # POS_HomingVelZero
d.SdoWr(0x37B5, 0x00, 5000)               # POS_HomingAcc
d.SdoWr(0x37B5, 0x01, 10000)              # POS_HomingDec
d.SdoWr(0x37B6, 0x00, 20000)              # POS_HomingMaxIndexPath
d.SdoWr(0x37B6, 0x01, 200)                # POS_HomingIndexOffset

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Endstufe freigeben

# letzter Referenzierungszustand
LastState = -1

while 1:

   act_state = d.SdoRd(0x37B1, 0x02)      # POS_HomingState  - Zustand abfragen
   status = d.SdoRd(0x37B1, 0x00)         # POS_HomingStatus - Status abfragen
   error_status = d.SdoRd(0x37B1, 0x01)   # POS_HomingError

   # Wenn idle
   if status == 0:
      d.SdoWr(0x37B0, 0x00, 0x01)         # POS_HomingCmd - Starte Referenzierung

   # Nur bei Änderung
   if LastState != act_state:
      LastState = act_state

      if   act_state == 0: print "Idle"
      elif act_state == 1: print "Start"
      elif act_state == 2: print "Warte auf Referenzschalter"
      elif act_state == 3: print "Warte auf Verlassen des Referenzschalters"
      elif act_state == 4: print "Warten auf negativen Endschalter "
      elif act_state == 5: print "Warten auf Verlassen des negativen Endschalters"
      elif act_state == 6: print "Warten auf positiven Endschalter"
      elif act_state == 7: print "Warten auf Verlassen des positiven Endschalters"
      elif act_state == 8: print "Warten auf Indeximpuls"
      elif act_state == 16: print "Warten bis Bewegung ausgeführt wurde"
      elif act_state == 32: print "Referenzfahrt wird unterbrochen"
      elif act_state == 33: print "Referenzfahrt wurde erfolgreich durchgeführt"
      elif act_state == 34: print "Referenzfahrt wurde beendet"

   # Referenzierung erfolgreich
   if (status & 0x10) == 0x10:            # HOMING_STAT_Done
      print "Referenzierung erfolgreich"
      print "Abstand Referenzschalter zu Index:",
      print d.SdoRd(0x37B1, 0x03)         # POS_HomingRefToIndex
      print "Abstand Referenzschalter zu Index in Ink:",
      print d.SdoRd(0x37B1, 0x04)         # POS_HomingRefToIndex_cnt
      break                               # Schleife beenden

   # Fehlerfall
   if error_status != 0:                  # Fehler
      print "Fehler: ", error_status
      break                               # Schleife beenden


37B7.00h Referenzfahrt auf Block - Konfiguration

Name | POS_HomingBlock_ConfigFlags
Bezeichnung | Referenzfahrt auf Block - Konfiguration
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | 0
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.85.00.60
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter konfiguriert die "Referenzierung auf Block".

Für die die "Referenzierung auf Block" können alle Homingmethoden, die Limitschalter verwenden, benutzt werden. Siehe bitte Parameter POS_HomingMethod.

Bit | Name | Beschreibung für Bitwert = 1
0 | BIT_HomingBlock_Enable | Freigabe der Referenzierung auf Block. Welche Limitschalter bei der Referenzierung mit Blockierungserreignis ersetzt wird, wird durch die Homingmethode (POS_HomingMethod) bestimmt.
1..6 | - | z.Z. nicht benutzt
7 | BIT_HomingBlock_Config_StdParam | Für Blockierungsüberwachung werden folgende Parameter verwendet: VEL_BlockageGuarding_VelLow, VEL_BlockageGuarding_VelHigh und VEL_BlockageGuarding_Time


37B7.01h Referenzfahrt auf Block - untere Drehzahl

Name | POS_HomingBlock_VelLow
Bezeichnung | Referenzfahrt auf Block - untere Drehzahl
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-1 .. 2147483647]
Defaultwert | 10
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Position
Verfügbar ab | 1.85.00.60
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Mit dem Parameter legt man die untere Grenze der Drehzahl für "Referenzierung auf Block" fest.

Wenn Bit7 vom POS_HomingBlock_ConfigFlags gesetzt ist, dann ist dieser Parameter nicht aktiv. In dem Fall gelten die Parameter
VEL_BlockageGuarding_VelLow, VEL_BlockageGuarding_VelHigh und VEL_BlockageGuarding_Time auch für "Homing auf Block".

Ein Blockzustand wird nur dann erkannt, wenn folgende Bedingungen erfüllt sind:
  • Strombegrenzung ist aktiv.
  • Die aktuelle Drehzahl des Antriebs unterschreitet zuerst die Grenze POS_HomingBlock_VelLow.
  • Die aktuelle Drehzahl des Antriebs bleibt dann mindestens für die Zeit POS_HomingBlock_Time unterhalb der oberen Grenze POS_HomingBlock_VelHigh.

Parameterwerte:
Wert | Beschreibung
0..INT32_MAX | Min. Drehzahl für Blockierungsüberwachung wenn Bit7=0 vom POS_HomingBlock_ConfigFlags, Vlow = POS_HomingBlock_VelLow oder VEL_BlockageGuarding_VelLow (bei Bit7=1 vom POS_HomingBlock_ConfigFlags)


37B7.02h Referenzfahrt auf Block - obere Drehzahl

Name | POS_HomingBlock_VelHigh
Bezeichnung | Referenzfahrt auf Block - obere Drehzahl
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-1 .. 2147483647]
Defaultwert | -1
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Position
Verfügbar ab | 1.85.00.60
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Mit dem Parameter legt man die obere Grenze der Drehzahl für "Referenzierung auf Block" fest.

Wenn Bit7 vom POS_HomingBlock_ConfigFlags gesetzt ist, dann ist dieser Parameter nicht aktiv. In dem Fall gelten die Parameter
VEL_BlockageGuarding_VelLow, VEL_BlockageGuarding_VelHigh und VEL_BlockageGuarding_Time auch für "Homing auf Block".

Ein Blockzustand wird nur dann erkannt, wenn folgende Bedingungen erfüllt sind:
  • Strombegrenzung ist aktiv.
  • Die aktuelle Drehzahl des Antriebs unterschreitet zuerst die Grenze POS_HomingBlock_VelLow.
  • Die aktuelle Drehzahl des Antriebs bleibt dann mindestens für die Zeit POS_HomingBlock_Time unterhalb der oberen Grenze POS_HomingBlock_VelHigh.

Parameterwerte:
Wert | Beschreibung
-1 | Vhigh = POS_HomingBlock_VelLow + 10%
0..INT32_MAX | Vhigh = POS_HomingBlock_VelHigh


37B7.03h Referenzfahrt auf Block - Zeit

Name | POS_HomingBlock_Time
Bezeichnung | Referenzfahrt auf Block - Zeit
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 255]
Defaultwert | 1
Einheit | [100ms]
Betriebsart | Position
Verfügbar ab | 1.85.00.60
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Mit dem Parameter legt man die Zeit für "Referenzierung auf Block" fest.

Wenn Bit7 vom POS_HomingBlock_ConfigFlags gesetzt ist, dann ist dieser Parameter nicht aktiv. In dem Fall gelten die Parameter
VEL_BlockageGuarding_VelLow, VEL_BlockageGuarding_VelHigh und VEL_BlockageGuarding_Time auch für "Homing auf Block".

Ein Blockzustand wird nur dann erkannt, wenn folgende Bedingungen erfüllt sind:
  • Strombegrenzung ist aktiv.
  • Die aktuelle Drehzahl des Antriebs unterschreitet zuerst die Grenze POS_HomingBlock_VelLow.
  • Die aktuelle Drehzahl des Antriebs bleibt dann mindestens für die Zeit POS_HomingBlock_Time unterhalb der oberen Grenze POS_HomingBlock_VelHigh.


37B7.04h Referenzfahrt auf Block - Positionsschleppfehlerfenster

Name | POS_HomingBlock_FollowingErrorWindow
Bezeichnung | Referenzfahrt auf Block - Positionsschleppfehlerfenster
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-1 .. 2147483647]
Defaultwert | -1
Einheit | [Inkremente]
Betriebsart | Position
Verfügbar ab | 1.85.03.B5
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Mit dem Parameter wird ein maximal zulässige Schleppabstand (Differenz zwischen Kommandoposition und Istposition) für "Referenzierung auf Block" bestimmt.

Dieser Wert muss so eingestellt werden, dass ein Blockieungszustand auftretten kann. Bei zu kleinem zulässigen Schleppabstand kann ein Fehler (-4000 ERR_Regp_FollowingError siehe DEV_ErrorReg) auftretten, bevor Blockierungszustand erkannt wird.

Wertigkeit:
Wert | Beschreibung
= -1 | Es gilt der standard Parameter POS_FollowingErrorWindow.
> -1 | Es gilt der Parameter POS_HomingBlock_FollowingErrorWindow.


Inhalt - Parameter 3000h (DSA) - Interpolation

37C1.00h

POS_InterpStatus

 Interpolation - Status


37C1.00h Interpolation - Status

Name | POS_InterpStatus
Bezeichnung | Interpolation - Status
Datentyp | uint16
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | 0h
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.01.19
Geräte | Alle
PLC Funktion | -
Querverweis | POS_Mode, , ,

Beschreibung

Dieser Parameter gibt den aktuellen Interpolationsstatus zurück. Der Interpolationsstatus eignet sich vor allem für Diagnose-Zwecke.

Bitbelegung:
Bit Name Beschreibung
0 Enabled Bit = 0 - Interpolationsmodus ist deaktiviert
Bit = 1 - Interpolationsbodus ist aktiviert
1 Error Bit = 0 - Kein Fehler aufgetreten
Bit = 1 - Fehler ist aufgetreten
2 Warning Bit = 0 - Keine Warnung aufgetreten
Bit = 1 - Warnung aufgetreten
3 Armed Bit = 0 - Buffer ist nicht mit Daten geladen
Bit = 1 - Buffer ist mit gültigen Daten geladen
4 Active Bit = 0 - Buffer ist nicht aktiv
Bit = 1 - Buffer ist aktiv
5 Data Lost Bit = 0 - Datensatz nicht verloren
Bit = 1 - Datensatz verloren
6 Buffer Full Bit = 0 - Buffer ist nicht voll
Bit = 1 - Buffer ist voll

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "Interpolationsstatus =", hex(d.SdoRd(0x37C1, 0x00))


3830.00h PWM Frequenz

Name | PWM_Frequency
Bezeichnung | PWM Frequenz
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {12500, 25000}
Defaultwert | 25000
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.07
Geräte | Alle
PLC Funktion | PwmFreq(value)
Querverweis | -

Beschreibung

Mit diesem Parameter kann die PWM-Frequenz verstellt werden.

Eine PWM-Frequenz 200 kHz ist nur bei Geräten der Serie EDC-E6x möglich.

Achtung
Je kleiner die PWM-Frequenz und die Anschlußinduktivität des Motors, desto wärmer (größere Verluste) wird der Motor im Stillstand.

Beispiel

# -*- coding: iso-8859-1 -*-
   from mc.dsa import *

   d = Dsa(1)

   # Ablesen der aktuellen Parameter
   print "PWM Frequenz: ", d.SdoRd(0x3830, 0x00)   # PWM_Frequency
   print "PWM Modus: ", d.SdoRd(0x3830, 0x01)      # PWM_Mode

   # Schreiben der neuen Parameter
   d.SdoWr(0x3830, 0x00, 25000)                    # PWM_Frequency


3830.01h PWM Modus

Name | PWM_Mode
Bezeichnung | PWM Modus
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {0}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.07
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Mit dem Parameter kann der Modus vom PWM-Signal festgelegt werden.

Parameterwerte:
Wert | Name | Beschreibung
0 | PWM_Symetric | Im Stillstand ohne Belastung beträgt das PWM-Signal 50%. Das entspricht einer mittleren Spannung von 0 Volt.
1 | PWM_Asymetric | Im Stillstand ohne Belastung beträgt das PWM-Signal 0%. Je nach Drehrichtung wird das relative PWM-Signal "positiv" oder "negativ". Dieser Modus ist, wegen kleineren Verlusten im Stillstand, besonders für Motoren mit kleiner Anschlußinduktivität geeignet.

Beispiel

# -*- coding: iso-8859-1 -*-
   from mc.dsa import *

   d = Dsa(1)

   # Ablesen der aktuellen Parameter
   print "PWM Frequenz: ", d.SdoRd(0x3830, 0x00)   # PWM_Frequency
   print "PWM Modus: ", d.SdoRd(0x3830, 0x01)      # PWM_Mode

   # Schreiben der neuen Parameter
   d.SdoWr(0x3830, 0x00, 25000)                    # PWM_Frequency


3830.62h Aktuelle PWM des Geräts

Name | PWM_ActualPwm_oo
Bezeichnung | Aktuelle PWM des Geräts
Datentyp | int16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-32768 .. 32767]
Defaultwert | -
Einheit | [o/oo]
Betriebsart | Alle
Verfügbar ab | 1.89.00.62
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Mit diesem Parameter kann die aktuell anliegende PWM in Bezug zur maixmal möglichen PWM in Promille ausgegeben werden.

PWMactual / PWMmax

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)

d.SdoWr(0x3000, 0x10, 3000)               # DEV_CmdData0
d.SdoWr(0x3000, 0x11, 256000)             # DEV_CmdData1
d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable
d.SdoWr(0x3000, 0x02, 0x34)               # DEV_Cmd2
ts = time.time()

print "Start"

while ((time.time())-ts) <= 3.5:
   act_pwm = d.SdoRd(0x3830, 0x62)/10.0   # PWM_ActualPwm_oo
   print "Act. PWM: %.1f %%" % act_pwm
   time.sleep(0.1)
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable


3850.00h System Clock

Name | SYS_Clock
Bezeichnung | System Clock
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | [ms]
Betriebsart | Alle
Verfügbar ab | 1.71.00.01
Geräte | Alle
PLC Funktion | SysClock()
Querverweis | -

Beschreibung

Dieser Parameter liefert den Wert vom internen Systemzeitgeber. Die Zeitbasis beträgt 1 Millisekunde. Beim Einschalten wird dieser Wert auf 0 gesetzt und im Betrieb alle 1[ms] inkrementiert. Wenn der Zähler überläuft, fängt er wieder von 0 an zu zählen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)

# Ablesen der internen Systemzeit
print "Systemclock: ", d.SdoRd(0x3850, 0x00)            # SYS_Clock

# Schreiben des Startwerts in den Timer
d.SdoWr(0x3850, 0x02, 1)                                # SYS_Timer_2ms

# Timer alle 200 ms abfragen
for i in xrange (0, 11):
   print "Timer %d" % i ,": %d" % d.SdoRd(0x3850, 0x02) # SYS_Timer_2ms
   time.sleep(0.2)


3850.02h System Timer 2ms

Name | SYS_Timer_2ms
Bezeichnung | System Timer 2ms
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 65535]
Defaultwert | -
Einheit | [2ms]
Betriebsart | Alle
Verfügbar ab | 1.71.00.25
Geräte | Alle
PLC Funktion | SysTimer2ms(value)
Querverweis | SYS_Clock

Beschreibung

Über dieser Parameter wird ein Timer zur Verfügung gestellt. Die Zeitbasis von dem Timer beträgt 2 Millisekunden. Beim Beschreiben des Parameters wird ein Anfangswert des Timers bestimmt, "sofort" danach (mit Verzögerung 0..2ms) wird der Wert alle 2 [ms] inkrementiert.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)

# Ablesen der internen Systemzeit
print "Systemclock: ", d.SdoRd(0x3850, 0x00)            # SYS_Clock

# Schreiben des Startwerts in den Timer
d.SdoWr(0x3850, 0x02, 1)                                # SYS_Timer_2ms

# Timer alle 200 ms abfragen
for i in xrange (0, 11):
   print "Timer %d" % i ,": %d" % d.SdoRd(0x3850, 0x02) # SYS_Timer_2ms
   time.sleep(0.2)


3900.00h Motortyp

Name | MOTOR_Type
Bezeichnung | Motortyp
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {0, 1}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MotorType(value), MotorTypeDC(), MotorTypeBLDC()
Querverweis | DEV_Enable

Beschreibung

Mit dem Parameter kann der Motortyp abgefragt bzw. festgelegt werden.

Bemerkungen:
  • Dieser Parameter kann nur im gesperrten Betriebszustand (DEV_Enable = 0) geändert werden. Sonst werden die Änderungen des Parameters nicht angenommen, bzw. haben keine Wirkung.
  • Bei integrierten Varianten der Antriebsregler (im Motor) kann dieser Parameter nicht verändert werden.

Wert (Hex) | Beschreibung
0 | bürstenbehafteter Motor (DC) (Der Motor wird an Ma und Mb Signale angeschlossen)
1 | bürstenloser Motor (BLDC)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

# Schreibe neue Parameter
d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3901, 0x00, 3000)               # MOTOR_Nn
d.SdoWr(0x3902, 0x00, 24000)              # MOTOR_Un

d.SdoWr(0x3911, 0x00, 0)                  # MOTOR_Polarity
d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN


3901.00h Motornenndrehzahl

Name | MOTOR_Nn
Bezeichnung | Motornenndrehzahl
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 30000]
Defaultwert | 3000
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MotorNn(value)
Querverweis | MOTOR_Type, MOTOR_Un

Beschreibung

Dieser Parameter wird nur für bürstenbehafteten Motoren im Drehzahlmodus mit EMK-Rückführung (siehe: VEL_Feedback) verwendet. Zusammen mit dem Parameter MOTOR_Un wird er für interne Umrechnung des Drehzahlsollwertes in die Motorspannung (~Drehzahl) benutzt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

# Schreibe neue Parameter
d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3901, 0x00, 3000)               # MOTOR_Nn
d.SdoWr(0x3902, 0x00, 24000)              # MOTOR_Un

d.SdoWr(0x3911, 0x00, 0)                  # MOTOR_Polarity
d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN


3902.00h Motornennspannung

Name | MOTOR_Un
Bezeichnung | Motornennspannung
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 60000]
Defaultwert | 24000
Einheit | [mV]
Betriebsart | Velocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MotorUn(value)
Querverweis | MOTOR_Type, MOTOR_Nn

Beschreibung

Dieser Parameter wird als Referenz für die Umrechnung des Drehzahlsollwertes in die Motorspannung (~Drehzahl) benutzt. Er wird nur im Betrieb mit bürstenbehafteten Motoren und EMK-Rückführung (siehe: VEL_Feedback) verwendet.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

# Schreibe neue Parameter
d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3901, 0x00, 3000)               # MOTOR_Nn
d.SdoWr(0x3902, 0x00, 24000)              # MOTOR_Un

d.SdoWr(0x3911, 0x00, 0)                  # MOTOR_Polarity
d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN


3910.00h Motorpolanzahl

Name | MOTOR_PolN
Bezeichnung | Motorpolanzahl
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [1 .. 100]
Defaultwert | 4
Einheit | -
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MotorPolN(value)
Querverweis | MOTOR_Type, MOTOR_Nn

Beschreibung

Über diesen Parameter wird dem Antriebsregler die Polanzahl des Motors mitgeteilt. Mit diesem Wert wird die Anzahl der Pulse pro eine Umdrehung der Motorwelle ermittelt.

Nph = 3 * Motorpolanzahl

wobei: Nph – Anzahl der Pulse pro Umdrehung der Motorwelle

Um eine Eingabe einer Solldrehzahl in [U/min]–Einheit (Umdrehungen pro Minute) an Motorwelle zu ermöglichen, muss dieser Parameter der realen Motorpolanzahl entsprechen.

Dieser Parameter ist nur im Betrieb mit bürstenlosen Motoren und HALL-Rückführung (siehe: VEL_Feedback) vom Bedeutung. In anderen Betriebsarten hat er keine Auswirkung.

Bemerkung:
  • Dieser Parameter kann nur im gesperrten Betriebszustand (DEV_Enable = 0) geändert werden. Sonst werden die Änderungen des Parameters nicht angenommen, bzw. haben keine Wirkung.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

# Schreibe neue Parameter
d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3901, 0x00, 3000)               # MOTOR_Nn
d.SdoWr(0x3902, 0x00, 24000)              # MOTOR_Un

d.SdoWr(0x3911, 0x00, 0)                  # MOTOR_Polarity
d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN


3911.00h Motorpolarität

Name | MOTOR_Polarity
Bezeichnung | Motorpolarität
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MotorPolarity(value), Polarity(value)
Querverweis | -

Beschreibung

Mit dem Parameter kann der Antriebsregler an verschiedene Motoren angepasst werden. Die Drehrichtung der Motorwelle in Abhängigkeit der Motorspannung definieren die Motorhersteller unterschiedlich. Auch die Reihenfolge der Hallsensorenzuständen (bürstenloser Motor) kann im Bezug zu der Motorwelledrehrichtung unterschiedlich sein.

Dieser Parameter erlaubt Vorzeichenänderungen folgender Signale/Größen:
  • PWM – Signal
  • HALL – Zählrichtung
  • Encoder – Zählrichtung (nur für Antriebsregler mit Encodereingang)
  • Absolutencoder – Zählrichtung (nur für Antriebsregler mit SSI-Schnittstelle)
  • mcSPI-IC2-Encoder – Zählrichtung (nur für Antriebsregler mit mcSPI-Schnittstelle)
  • virtueller Encoder 0 – Zählrichtung
  • virtueller Encoder 1 – Zählrichtung
Bemerkung:
  • Dieser Parameter kann nur im gesperrten Betriebszustand (DEV_Enable = 0) geändert werden. Sonst werden die Änderungen des Parameters nicht angenommen, bzw. haben keine Wirkung.

Bitbelegung:
Bit | Beschreibung
0 | PWM-Signal: 0-positiv, 1-negativ
1 | Hallsensoren; Zählrichtung: 0-positiv, 1-negativ
2 | Reserviert
3 | Encoder; Zählrichtung: 0-positiv, 1-negativ
4 | Absolutencoder SSI; Zählrichtung: 0-positiv, 1-negativ
5 | Reserviert
6 | mcSPI-IC2-Encoder; Zählrichtung: 0-positiv, 1-negativ
7 | Reserviert
8 | virtueller Encoder 0; Zählrichtung: 0-positiv, 1-negativ
9 | virtueller Encoder 1; Zählrichtung: 0-positiv, 1-negativ

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

# Schreibe neue Parameter
d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3901, 0x00, 3000)               # MOTOR_Nn
d.SdoWr(0x3902, 0x00, 24000)              # MOTOR_Un

d.SdoWr(0x3911, 0x00, 0)                  # MOTOR_Polarity
d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN


3913.00h Kommutierungsart des Motors

Name | MOTOR_CommutationType
Bezeichnung | Kommutierungsart des Motors
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {00h, 10h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.91.00.27
Geräte | Alle
PLC Funktion | -
Querverweis | , MOTOR_Commutation_Polarity

Beschreibung

Mit diesem Parameter kann die Kommutierungsart des Motors geändert werden.

Bemerkung:
  • Dieser Parameter kann nur im gesperrten Betriebszustand (DEV_Enable = 0) geändert werden. Sonst werden die Änderungen des Parameters nicht angenommen, bzw. haben keine Wirkung.

Informationen zum Kommutierungsschema sind in der Applikation Note AN_CommutationScheme.
Parameterwerte:
Wert | Beschreibung
0 | Blockkommutierung
0x10 | Encoder Blockkommutierung

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3911, 0x00, 1<<3)               # MOTOR_Polarity

d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution [inc]

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback - Ink. Drehgeber
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - Ink. Drehgeber

d.SdoWr(0x3221, 0x00, 3000)               # CURR_LimitMaxPos [mA]
d.SdoWr(0x3223, 0x00, 3000)               # CURR_LimitMaxNeg [mA]

if d.VersionSw() >= 0x1910027:
   d.SdoWr(0x3913, 0x00, 0x10)            # MOTOR_CommutationType - BlockEnc

if d.VersionSw() >= 0x1910034:            # ab V1.91.00.34 ist MOTOR_Commutation_Polarity vorhanden.
   d.SdoWr(0x3913, 0x07, 1)               # MOTOR_Commutation_Polarity => auf 1 setzen falls Motor auf der Stelle steht und brummt

d.SdoWr(0x3913, 0x10, 1000, timeout=3500) # MOTOR_Commutation_Referencing
                                          # Der Encoderabgleich mit dem Strom 4000mA

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback - Ink. Drehgeber
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - Ink. Drehgeber

d.SdoWr(0x3003, 0x00, 3)                  # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Freigeben
d.SdoWr(0x3300, 0x00, 1000)               # VEL_DesiredValue [rpm]


3913.07h Kommutierungspolarität des Motors

Name | MOTOR_Commutation_Polarity
Bezeichnung | Kommutierungspolarität des Motors
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | [0 .. 7]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.91.00.34
Geräte | Alle
PLC Funktion | -
Querverweis | , MOTOR_CommutationType

Beschreibung

Mit diesem Parameter kann die Kommutierungspolarität des Motors eingestellt werden.

Bitbelegung:
Bit | Beschreibung
0 | Encoderkommutierung: 0-positiv, 1-negativ
1 | Sektoren: 0-positiv, 1-negativ
2 | Richtung: 0-positiv, 1-negativ

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3911, 0x00, 1<<3)               # MOTOR_Polarity

d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution [inc]

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback - Ink. Drehgeber
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - Ink. Drehgeber

d.SdoWr(0x3221, 0x00, 3000)               # CURR_LimitMaxPos [mA]
d.SdoWr(0x3223, 0x00, 3000)               # CURR_LimitMaxNeg [mA]

if d.VersionSw() >= 0x1910027:
   d.SdoWr(0x3913, 0x00, 0x10)            # MOTOR_CommutationType - BlockEnc

if d.VersionSw() >= 0x1910034:            # ab V1.91.00.34 ist MOTOR_Commutation_Polarity vorhanden.
   d.SdoWr(0x3913, 0x07, 1)               # MOTOR_Commutation_Polarity => auf 1 setzen falls Motor auf der Stelle steht und brummt

d.SdoWr(0x3913, 0x10, 1000, timeout=3500) # MOTOR_Commutation_Referencing
                                          # Der Encoderabgleich mit dem Strom 4000mA

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback - Ink. Drehgeber
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - Ink. Drehgeber

d.SdoWr(0x3003, 0x00, 3)                  # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Freigeben
d.SdoWr(0x3300, 0x00, 1000)               # VEL_DesiredValue [rpm]


3913.20h Vorkommutierung

Name | PreCommutationConfig
Bezeichnung | Vorkommutierung
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {0, 1}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.D0
Geräte | Alle
PLC Funktion | -
Querverweis | PreCommutationVel, PreCommutationAngle

Beschreibung

Mit dem Parameter kann die Vorkommutierung eingeschalten werden

Parameterwerte:
Wert | Name | PLC Funktion | Beschreibung
0 | DISABLE | - | Vorkommutierung wird ausgeschaltet
1 | ENABLE | - | Vorkkommutierung wird eingeschaltet

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3911, 0x00, 1<<3)               # MOTOR_Polarity

d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution [inc]

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback - Ink. Drehgeber
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - Ink. Drehgeber

d.SdoWr(0x3913, 0x00, 0x10)               # MOTOR_Commutation_Type - Block Encoder
d.SdoWr(0x3913, 0x11, 1)                  # MOTOR_Commutation_ReferencingMode - Hall Referenzierung
d.SdoWr(0x3913, 0x20, 1)                  # PreCommutationConfig - Aktivieren
d.SdoWr(0x3913, 0x21, 3000)               # PreCommutationVel - 3000 rpm
d.SdoWr(0x3913, 0x23, 15)                 # PreCommutationAngle - 15°

d.SdoWr(0x3003, 0x00, 3)                  # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Freigeben
d.SdoWr(0x3300, 0x00, 1000)               # VEL_DesiredValue [rpm]


3913.21h Vorkommutierung Bezugsdrehzahl

Name | PreCommutationVel
Bezeichnung | Vorkommutierung Bezugsdrehzahl
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 65535]
Defaultwert | 3000
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Alle
Verfügbar ab | 1.93.00.D0
Geräte | Alle
PLC Funktion | -
Querverweis | PreCommutationConfig, PreCommutationAngle

Beschreibung

Mit diesem Parameter wird die Bezugsdrehzahl für die Vorkommutierung gesetzt. Bezugsdrehzahl (PreCommutationVel) und Vorkommutierungswinkel (PreCommutationAngle) zusammen ergeben den resultierenden Vorkommutierungswinkel. Dieser ist linear zur Bezugsdrehzahl, wird aber niemals größer als der vorgegebene Wert.

Bsp:

Bezugsdrehzahl = 3000 U/min
Vorkommutierungswinkel = 30°

aktuelle Drehzahl | aktueller elektrischer Vorkommutierungswinkel
100 U/min | 1°
300 U/min | 3°
1000 U/min | 10°
2000 U/min | 20°
3000 U/min | 30°
4000 U/min | 30°

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3911, 0x00, 1<<3)               # MOTOR_Polarity

d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution [inc]

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback - Ink. Drehgeber
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - Ink. Drehgeber

d.SdoWr(0x3913, 0x00, 0x10)               # MOTOR_Commutation_Type - Block Encoder
d.SdoWr(0x3913, 0x11, 1)                  # MOTOR_Commutation_ReferencingMode - Hall Referenzierung
d.SdoWr(0x3913, 0x20, 1)                  # PreCommutationConfig - Aktivieren
d.SdoWr(0x3913, 0x21, 3000)               # PreCommutationVel - 3000 rpm
d.SdoWr(0x3913, 0x23, 15)                 # PreCommutationAngle - 15°

d.SdoWr(0x3003, 0x00, 3)                  # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Freigeben
d.SdoWr(0x3300, 0x00, 1000)               # VEL_DesiredValue [rpm]


3913.23h Vorkommutierungswinkel

Name | PreCommutationAngle
Bezeichnung | Vorkommutierungswinkel
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 60]
Defaultwert | 10
Einheit | [el°]
Betriebsart | Alle
Verfügbar ab | 1.93.00.D0
Geräte | Alle
PLC Funktion | -
Querverweis | PreCommutationConfig, PreCommutationVel

Beschreibung

Mit diesem Parameter wird der elektrische Winkel für die Vorkommutierung gesetzt. Bezugsdrehzahl (PreCommutationVel) und Vorkommutierungswinkel (PreCommutationAngle) zusammen ergeben den resultierenden Vorkommutierungswinkel. Dieser ist linear zur Bezugsdrehzahl, wird aber niemals größer als der vorgegebene Wert.

Bsp:

Bezugsdrehzahl = 3000 U/min
Vorkommutierungswinkel = 30°

aktuelle Drehzahl | aktueller elektrischer Vorkommutierungswinkel
100 U/min | 1°
300 U/min | 3°
1000 U/min | 10°
2000 U/min | 20°
3000 U/min | 30°
4000 U/min | 30°

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3911, 0x00, 1<<3)               # MOTOR_Polarity

d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution [inc]

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback - Ink. Drehgeber
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - Ink. Drehgeber

d.SdoWr(0x3913, 0x00, 0x10)               # MOTOR_Commutation_Type - Block Encoder
d.SdoWr(0x3913, 0x11, 1)                  # MOTOR_Commutation_ReferencingMode - Hall Referenzierung
d.SdoWr(0x3913, 0x20, 1)                  # PreCommutationConfig - Aktivieren
d.SdoWr(0x3913, 0x21, 3000)               # PreCommutationVel - 3000 rpm
d.SdoWr(0x3913, 0x23, 15)                 # PreCommutationAngle - 15°

d.SdoWr(0x3003, 0x00, 3)                  # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Freigeben
d.SdoWr(0x3300, 0x00, 1000)               # VEL_DesiredValue [rpm]


3940.00h Hallsensortyp

Name | MOTOR_HALL_Type
Bezeichnung | Hallsensortyp
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {0, 1}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | HallType(value), HallType120(), HallType60(), MotorHallType(value), MotorHallType120(), MotorHallType60()
Querverweis | -

Beschreibung

Dieser Parameter bestimmt die Kommutierungsart für den Betrieb mit bürstenlosen Motoren.

Bemerkung:
  • Dieser Parameter kann nur im gesperrten Betriebszustand (DEV_Enable = 0) geändert werden. Sonst werden die Änderungen des Parameters nicht angenommen, bzw. haben keine Wirkung.
Parameterwerte:
Wert. | Beschreibung
0 | 120° Hallsensoren
1 | 60° Hallsensoren
2 | Benutzerspezifisch

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                              # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                              # DEV_Cmd - Fehler löschen

d.SdoWr(0x3003, 0x00, 7)                              # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                              # VEL_DesiredValue - Solldrehzahl = 0 [U/min]

d.SdoWr(0x3940, 0x00, 0)                              # MOTOR_HALL_Type - 120° Hall sensoren

d.SdoWr(0x3949, 0x00, 2)                              # MOTOR_HALL_DoutPulses_Mode - out A => pulses / out B => direction

d.SdoWr(0x3949, 0x01, 0x01)                           # MOTOR_HALL_DoutPulses_PosDirMask - dout0 => out A
d.SdoWr(0x3949, 0x02, 0x02)                           # MOTOR_HALL_DoutPulses_NegDirMask - dout1 => out B

d.SdoWr(0x3949, 0x03, 3)                              # MOTOR_HALL_DoutPulses_ModuloValue - 3 pulses => 0 -> 1

d.SdoWr(0x3004, 0x00, 1)                              # DEV_Enable - Freigeben

# Schreibe Bewegungsbefehl
d.SdoWr(0x3000, 0x10, 1000)                           # DEV_CmdData0
d.SdoWr(0x3000, 0x11, 120)                            # DEV_CmdData1
d.SdoWr(0x3000, 0x01, 0x00)                           # DEV_Cmd_ExecOnChange - Toggle
d.SdoWr(0x3000, 0x01, 0x34)                           # DEV_Cmd_ExecOnChange - MovR

# Gebe Ergebnisse aus
print "Hallposition vorher:", d.SdoRd(0x394A, 0x00)   # MOTOR_HALL_ActualPosition
while 1:

   status = d.SdoRd(0x3002, 0x00)                     # DEV_Status - Status abfragen
   if (status & 0x0110) == 0x0110:                    # Ziel erreicht? (Bit4 & Bit8 == 1)
      print "Ziel erreicht"
      d.SdoWr(0x3004, 0x00, 0)                        # DEV_Enable - Sperren
      break                                           # Schleife beenden

print "Diag Cnt 1: ", d.SdoRd(0x3944, 0x01)           # MOTOR_HALL_Diag_ErrCnt1
print "Diag Cnt 2: ", d.SdoRd(0x3944, 0x02)           # MOTOR_HALL_Diag_ErrCnt2

print "Hallposition danach:", d.SdoRd(0x394A, 0x00)   # MOTOR_HALL_ActualPosition


3949.00h Hallpulse - Konfigurationsflags

Name | MOTOR_HALL_DoutPulses_Mode
Bezeichnung | Hallpulse - Konfigurationsflags
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 3]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.77.00.27
Geräte | Alle
PLC Funktion | HallDoutPulse_Mode(value)
Querverweis | MOTOR_HALL_DoutPulses_PosDirMask, MOTOR_HALL_DoutPulses_NegDirMask, MOTOR_HALL_DoutPulses_ModuloValue

Beschreibung

Dieser Parameter aktiviert die Pulsgenerierung an digitalen Ausgängen im Takt der Hallsensoren des Motors.

Bemerkung: Die Pulsegenerierung steht bei Geräten mit mehr als 1 dig. Ausgang zur Verfügung.

Parameterwerte:
Betriebsart | Beschreibung
 | Ausgang "A" | Ausgang "B"
0 | deaktiviert | deaktiviert
1 | Pulsgenerierung für positive Drehrichtung (cw) | Pulsgenerierung für negative Drehrichtung (ccw)
2 | Pulsgenerierung für beide Drehrichtung | Drehrichtungsanzeige (0= pos. cw, 1 = neg. ccw)
3 | A-Spur (bei pos. Drehrichtung kommt die A-Spur 90° vor der B-Spur) | B-Spur (bei pos. Drehrichtung kommt die B-Spur 90° nach der A-Spur)
[4..255] | Reserviert | Reserviert

Folgende 3 Betriebsarten stehen zur Verfügung:
  • Betriebsart 1
    • Am Ausgang "A" erscheinen Pulse bei positiver Drehrichtung (cw)
    • Am Ausgang "B" erscheinen Pulse bei negativer Drehrichtung (ccw)
    • Beispiel für MOTOR_HALL_DoutPulses_ModuloValue = 1

  • Betriebsart 2
    • Am Ausgang "A" erscheinen Pulse unabhängig von der Drehrichtung
    • Ausgang "B" dient der Erkennung der Drehrichtung: 0 = positive (cw), 1 = negative (ccw) Drehrichtung
    • Beispiel für MOTOR_HALL_DoutPulses_ModuloValue = 1

  • Betriebsart 3
    • Am Ausgang "A" erscheint die A-Spur
    • Am Ausgang "B" erscheint die B-Spur
    • Diese Spuren sind um 90° phasenverschoben: bei positiver Drehrichtung kommt die A-Spur 90° vor der B-Spur, bei negativer Drehrichtung kommt die A-Spur 90° nach der B-Spur
    • Beispiel für MOTOR_HALL_DoutPulses_ModuloValue = 1

Die Definition Ausgang "A" erfolgt im Parameter MOTOR_HALL_DoutPulses_A_DirMask, die vom Ausgang "B" in MOTOR_HALL_DoutPulses_B_DirMask.

Mit dem Parameter MOTOR_HALL_DoutPulses_ModuloValue kann die Anzahl der Pulse herunter geteilt werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                              # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                              # DEV_Cmd - Fehler löschen

d.SdoWr(0x3003, 0x00, 7)                              # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                              # VEL_DesiredValue - Solldrehzahl = 0 [U/min]

d.SdoWr(0x3940, 0x00, 0)                              # MOTOR_HALL_Type - 120° Hall sensoren

d.SdoWr(0x3949, 0x00, 2)                              # MOTOR_HALL_DoutPulses_Mode - out A => pulses / out B => direction

d.SdoWr(0x3949, 0x01, 0x01)                           # MOTOR_HALL_DoutPulses_PosDirMask - dout0 => out A
d.SdoWr(0x3949, 0x02, 0x02)                           # MOTOR_HALL_DoutPulses_NegDirMask - dout1 => out B

d.SdoWr(0x3949, 0x03, 3)                              # MOTOR_HALL_DoutPulses_ModuloValue - 3 pulses => 0 -> 1

d.SdoWr(0x3004, 0x00, 1)                              # DEV_Enable - Freigeben

# Schreibe Bewegungsbefehl
d.SdoWr(0x3000, 0x10, 1000)                           # DEV_CmdData0
d.SdoWr(0x3000, 0x11, 120)                            # DEV_CmdData1
d.SdoWr(0x3000, 0x01, 0x00)                           # DEV_Cmd_ExecOnChange - Toggle
d.SdoWr(0x3000, 0x01, 0x34)                           # DEV_Cmd_ExecOnChange - MovR

# Gebe Ergebnisse aus
print "Hallposition vorher:", d.SdoRd(0x394A, 0x00)   # MOTOR_HALL_ActualPosition
while 1:

   status = d.SdoRd(0x3002, 0x00)                     # DEV_Status - Status abfragen
   if (status & 0x0110) == 0x0110:                    # Ziel erreicht? (Bit4 & Bit8 == 1)
      print "Ziel erreicht"
      d.SdoWr(0x3004, 0x00, 0)                        # DEV_Enable - Sperren
      break                                           # Schleife beenden

print "Diag Cnt 1: ", d.SdoRd(0x3944, 0x01)           # MOTOR_HALL_Diag_ErrCnt1
print "Diag Cnt 2: ", d.SdoRd(0x3944, 0x02)           # MOTOR_HALL_Diag_ErrCnt2

print "Hallposition danach:", d.SdoRd(0x394A, 0x00)   # MOTOR_HALL_ActualPosition


3949.01h Hallpulse - Bitmaske für positive Richtung

Name | MOTOR_HALL_DoutPulses_PosDirMask
Bezeichnung | Hallpulse - Bitmaske für positive Richtung
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 255]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.77.00.27
Geräte | Alle
PLC Funktion | HallDoutPulse_MaskDoutA(value)
Querverweis | MOTOR_HALL_DoutPulses_Mode, MOTOR_HALL_DoutPulses_NegDirMask, MOTOR_HALL_DoutPulses_ModuloValue

Beschreibung

Dieser Parameter definiert einen digitalen Ausgang als Ausgang "A". Die Funktion dieses Ausgangs wird im Parameter MOTOR_HALL_DoutPulses_Mode definiert.

Die Anzahl der digitalen Ausgänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Bemerkung: Die Pulsegenerierung steht bei Geräten mit mehr als 1 dig. Ausgang zur Verfügung.

Parameterwerte:
Wert | Zuordnung für Ausgang "A"
0 | kein Ausgang definiert
0x01 | dig. Ausgang 0
0x02 | dig. Ausgang 1
0x04 | dig. Ausgang 2
0x08 | dig. Ausgang 3
0x10 | dig. Ausgang 4
0x20 | dig. Ausgang 5

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                              # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                              # DEV_Cmd - Fehler löschen

d.SdoWr(0x3003, 0x00, 7)                              # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                              # VEL_DesiredValue - Solldrehzahl = 0 [U/min]

d.SdoWr(0x3940, 0x00, 0)                              # MOTOR_HALL_Type - 120° Hall sensoren

d.SdoWr(0x3949, 0x00, 2)                              # MOTOR_HALL_DoutPulses_Mode - out A => pulses / out B => direction

d.SdoWr(0x3949, 0x01, 0x01)                           # MOTOR_HALL_DoutPulses_PosDirMask - dout0 => out A
d.SdoWr(0x3949, 0x02, 0x02)                           # MOTOR_HALL_DoutPulses_NegDirMask - dout1 => out B

d.SdoWr(0x3949, 0x03, 3)                              # MOTOR_HALL_DoutPulses_ModuloValue - 3 pulses => 0 -> 1

d.SdoWr(0x3004, 0x00, 1)                              # DEV_Enable - Freigeben

# Schreibe Bewegungsbefehl
d.SdoWr(0x3000, 0x10, 1000)                           # DEV_CmdData0
d.SdoWr(0x3000, 0x11, 120)                            # DEV_CmdData1
d.SdoWr(0x3000, 0x01, 0x00)                           # DEV_Cmd_ExecOnChange - Toggle
d.SdoWr(0x3000, 0x01, 0x34)                           # DEV_Cmd_ExecOnChange - MovR

# Gebe Ergebnisse aus
print "Hallposition vorher:", d.SdoRd(0x394A, 0x00)   # MOTOR_HALL_ActualPosition
while 1:

   status = d.SdoRd(0x3002, 0x00)                     # DEV_Status - Status abfragen
   if (status & 0x0110) == 0x0110:                    # Ziel erreicht? (Bit4 & Bit8 == 1)
      print "Ziel erreicht"
      d.SdoWr(0x3004, 0x00, 0)                        # DEV_Enable - Sperren
      break                                           # Schleife beenden

print "Diag Cnt 1: ", d.SdoRd(0x3944, 0x01)           # MOTOR_HALL_Diag_ErrCnt1
print "Diag Cnt 2: ", d.SdoRd(0x3944, 0x02)           # MOTOR_HALL_Diag_ErrCnt2

print "Hallposition danach:", d.SdoRd(0x394A, 0x00)   # MOTOR_HALL_ActualPosition


3949.02h Hallpulse - Bitmaske für negative Richtung

Name | MOTOR_HALL_DoutPulses_NegDirMask
Bezeichnung | Hallpulse - Bitmaske für negative Richtung
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 255]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.77.00.27
Geräte | Alle
PLC Funktion | HallDoutPulse_MaskDoutB(value)
Querverweis | MOTOR_HALL_DoutPulses_Mode, MOTOR_HALL_DoutPulses_PosDirMask, MOTOR_HALL_DoutPulses_ModuloValue

Beschreibung

Dieser Parameter definiert einen digitalen Ausgang als Ausgang "B". Die Funktion dieses Ausgangs wird im Parameter MOTOR_HALL_DoutPulses_Mode definiert.

Die Anzahl der digitalen Ausgänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Bemerkung: Die Pulsegenerierung steht bei Geräten mit mehr als 1 dig. Ausgang zur Verfügung.

Parameterwerte:
Wert [hex] | Zuordnung für Ausgang "B"
0 | kein Ausgang definiert
0x01 | dig. Ausgang 0
0x02 | dig. Ausgang 1
0x04 | dig. Ausgang 2
0x08 | dig. Ausgang 3
0x10 | dig. Ausgang 4
0x20 | dig. Ausgang 5

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                              # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                              # DEV_Cmd - Fehler löschen

d.SdoWr(0x3003, 0x00, 7)                              # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                              # VEL_DesiredValue - Solldrehzahl = 0 [U/min]

d.SdoWr(0x3940, 0x00, 0)                              # MOTOR_HALL_Type - 120° Hall sensoren

d.SdoWr(0x3949, 0x00, 2)                              # MOTOR_HALL_DoutPulses_Mode - out A => pulses / out B => direction

d.SdoWr(0x3949, 0x01, 0x01)                           # MOTOR_HALL_DoutPulses_PosDirMask - dout0 => out A
d.SdoWr(0x3949, 0x02, 0x02)                           # MOTOR_HALL_DoutPulses_NegDirMask - dout1 => out B

d.SdoWr(0x3949, 0x03, 3)                              # MOTOR_HALL_DoutPulses_ModuloValue - 3 pulses => 0 -> 1

d.SdoWr(0x3004, 0x00, 1)                              # DEV_Enable - Freigeben

# Schreibe Bewegungsbefehl
d.SdoWr(0x3000, 0x10, 1000)                           # DEV_CmdData0
d.SdoWr(0x3000, 0x11, 120)                            # DEV_CmdData1
d.SdoWr(0x3000, 0x01, 0x00)                           # DEV_Cmd_ExecOnChange - Toggle
d.SdoWr(0x3000, 0x01, 0x34)                           # DEV_Cmd_ExecOnChange - MovR

# Gebe Ergebnisse aus
print "Hallposition vorher:", d.SdoRd(0x394A, 0x00)   # MOTOR_HALL_ActualPosition
while 1:

   status = d.SdoRd(0x3002, 0x00)                     # DEV_Status - Status abfragen
   if (status & 0x0110) == 0x0110:                    # Ziel erreicht? (Bit4 & Bit8 == 1)
      print "Ziel erreicht"
      d.SdoWr(0x3004, 0x00, 0)                        # DEV_Enable - Sperren
      break                                           # Schleife beenden

print "Diag Cnt 1: ", d.SdoRd(0x3944, 0x01)           # MOTOR_HALL_Diag_ErrCnt1
print "Diag Cnt 2: ", d.SdoRd(0x3944, 0x02)           # MOTOR_HALL_Diag_ErrCnt2

print "Hallposition danach:", d.SdoRd(0x394A, 0x00)   # MOTOR_HALL_ActualPosition


3949.03h Hallpulse - Modulowert

Name | MOTOR_HALL_DoutPulses_ModuloValue
Bezeichnung | Hallpulse - Modulowert
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.77.00.27
Geräte | Alle
PLC Funktion | HallDoutPulse_ModuloValue(value)
Querverweis | MOTOR_HALL_DoutPulses_Mode, MOTOR_HALL_DoutPulses_PosDirMask

Beschreibung

Mit diesem Parameter kann die Anzahl der Pulse herunter geteilt werden.

Dieser Parameter bestimmt das Verhältnis von Hallposition zu Ausgang:

  • Schaltvorgänge der Ausgänge bei MOTOR_HALL_DoutPulses_Modulo = 1 und Betriebsart 1
    Jede Positionsänderung verursacht einen Schaltvorgang.

    Betriebsart = 1

  • Schaltvorgänge der Ausgänge bei MOTOR_HALL_DoutPulses_Modulo = 3 und Betriebsart 1
    Jede dritte Positionsänderung verursacht einen Schaltvorgang.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                              # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                              # DEV_Cmd - Fehler löschen

d.SdoWr(0x3003, 0x00, 7)                              # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                              # VEL_DesiredValue - Solldrehzahl = 0 [U/min]

d.SdoWr(0x3940, 0x00, 0)                              # MOTOR_HALL_Type - 120° Hall sensoren

d.SdoWr(0x3949, 0x00, 2)                              # MOTOR_HALL_DoutPulses_Mode - out A => pulses / out B => direction

d.SdoWr(0x3949, 0x01, 0x01)                           # MOTOR_HALL_DoutPulses_PosDirMask - dout0 => out A
d.SdoWr(0x3949, 0x02, 0x02)                           # MOTOR_HALL_DoutPulses_NegDirMask - dout1 => out B

d.SdoWr(0x3949, 0x03, 3)                              # MOTOR_HALL_DoutPulses_ModuloValue - 3 pulses => 0 -> 1

d.SdoWr(0x3004, 0x00, 1)                              # DEV_Enable - Freigeben

# Schreibe Bewegungsbefehl
d.SdoWr(0x3000, 0x10, 1000)                           # DEV_CmdData0
d.SdoWr(0x3000, 0x11, 120)                            # DEV_CmdData1
d.SdoWr(0x3000, 0x01, 0x00)                           # DEV_Cmd_ExecOnChange - Toggle
d.SdoWr(0x3000, 0x01, 0x34)                           # DEV_Cmd_ExecOnChange - MovR

# Gebe Ergebnisse aus
print "Hallposition vorher:", d.SdoRd(0x394A, 0x00)   # MOTOR_HALL_ActualPosition
while 1:

   status = d.SdoRd(0x3002, 0x00)                     # DEV_Status - Status abfragen
   if (status & 0x0110) == 0x0110:                    # Ziel erreicht? (Bit4 & Bit8 == 1)
      print "Ziel erreicht"
      d.SdoWr(0x3004, 0x00, 0)                        # DEV_Enable - Sperren
      break                                           # Schleife beenden

print "Diag Cnt 1: ", d.SdoRd(0x3944, 0x01)           # MOTOR_HALL_Diag_ErrCnt1
print "Diag Cnt 2: ", d.SdoRd(0x3944, 0x02)           # MOTOR_HALL_Diag_ErrCnt2

print "Hallposition danach:", d.SdoRd(0x394A, 0x00)   # MOTOR_HALL_ActualPosition


394A.00h Aktuelle Hallposition

Name | MOTOR_HALL_ActualPosition
Bezeichnung | Aktuelle Hallposition
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.52.00.00
Geräte | Alle
PLC Funktion | ActPosHall(value), HallActPos(value)
Querverweis | MOTOR_Type, MOTOR_PolN, MOTOR_Polarity

Beschreibung

Über diesen Parameter kann aktuelle Position, die über die Hallsensoren gezählt wurde, abgefragt werden. Die Zahl der Pulse pro Umdrehung der Motorwelle hängt von der realen Motorpolanzahl ab. Der Parameter MOTOR_PolN hat keinen Einfluss auf die Zählung der Pulse. Die Zählrichtung kann mit dem Parameter MOTOR_Polarity beeinflusst werden.

Nph = 3 * Motorpolanzahl

wobei: Nph – Anzahl der Pulse pro Umdrehung der Motorwelle

Bemerkung:
  • Die Auswertung der Hallsensoren findet nur im Betrieb mit bürstenlosen Motoren (siehe: MOTOR_Type) statt. Sobald der Motortyp auf BLDC eingestellt wurde, werden die Pulse unabhängig von der Freigabe des Antriebsreglers gezählt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                              # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                              # DEV_Cmd - Fehler löschen

d.SdoWr(0x3003, 0x00, 7)                              # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                              # VEL_DesiredValue - Solldrehzahl = 0 [U/min]

d.SdoWr(0x3940, 0x00, 0)                              # MOTOR_HALL_Type - 120° Hall sensoren

d.SdoWr(0x3949, 0x00, 2)                              # MOTOR_HALL_DoutPulses_Mode - out A => pulses / out B => direction

d.SdoWr(0x3949, 0x01, 0x01)                           # MOTOR_HALL_DoutPulses_PosDirMask - dout0 => out A
d.SdoWr(0x3949, 0x02, 0x02)                           # MOTOR_HALL_DoutPulses_NegDirMask - dout1 => out B

d.SdoWr(0x3949, 0x03, 3)                              # MOTOR_HALL_DoutPulses_ModuloValue - 3 pulses => 0 -> 1

d.SdoWr(0x3004, 0x00, 1)                              # DEV_Enable - Freigeben

# Schreibe Bewegungsbefehl
d.SdoWr(0x3000, 0x10, 1000)                           # DEV_CmdData0
d.SdoWr(0x3000, 0x11, 120)                            # DEV_CmdData1
d.SdoWr(0x3000, 0x01, 0x00)                           # DEV_Cmd_ExecOnChange - Toggle
d.SdoWr(0x3000, 0x01, 0x34)                           # DEV_Cmd_ExecOnChange - MovR

# Gebe Ergebnisse aus
print "Hallposition vorher:", d.SdoRd(0x394A, 0x00)   # MOTOR_HALL_ActualPosition
while 1:

   status = d.SdoRd(0x3002, 0x00)                     # DEV_Status - Status abfragen
   if (status & 0x0110) == 0x0110:                    # Ziel erreicht? (Bit4 & Bit8 == 1)
      print "Ziel erreicht"
      d.SdoWr(0x3004, 0x00, 0)                        # DEV_Enable - Sperren
      break                                           # Schleife beenden

print "Diag Cnt 1: ", d.SdoRd(0x3944, 0x01)           # MOTOR_HALL_Diag_ErrCnt1
print "Diag Cnt 2: ", d.SdoRd(0x3944, 0x02)           # MOTOR_HALL_Diag_ErrCnt2

print "Hallposition danach:", d.SdoRd(0x394A, 0x00)   # MOTOR_HALL_ActualPosition


Inhalt - Parameter 3000h (DSA) - Quasi-Absolutencoder

39A2.00h | MOTOR_QuasiAbsEncoder_ConfigFlags | Quasi-Absolutencoder - Konfigurationsflag
39A2.01h | MOTOR_QuasiAbsEncoder_Status | Quasi-Absolutencoder - Status
39A2.02h | MOTOR_QuasiAbsEncoder_Error | Quasi-Absolutencoder - Fehler
39A2.07h | MOTOR_QuasiAbsEncoder_Tolerance_cnt | Quasi-Absolutencoder - Toleranz
39A2.08h | MOTOR_QuasiAbsEncoder_Action | Quasi-Absolutencoder - Kommando
39A2.10h | MOTOR_QuasiAbsEncoder_DeltaPos | Quasi-Absolutencoder - Korrekturabstand
39A2.20h | MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe | Quasi-Absolutencoder - minimale Spannung zum Positionspeichern
39A2.21h | MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe | Quasi-Absolutencoder - maximale Spannung zum Positionspeichern
39A2.31h | MOTOR_QuasiAbsEncoder_SavedPosition | Quasi-Absolutencoder - Gespeicherte Position
39A2.32h | MOTOR_QuasiAbsEncoder_SavedIndexPosition | Quasi-Absolutencoder - Gespeicherte Indexposition
39A2.33h | MOTOR_QuasiAbsEncoder_SavesCounter | Quasi-Absolutencoder - Speicherzähler


39A2.00h Quasi-Absolutencoder - Konfigurationsflag

Name | MOTOR_QuasiAbsEncoder_ConfigFlags
Bezeichnung | Quasi-Absolutencoder - Konfigurationsflag
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.06
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_QuasiAbsEncoder_Status, MOTOR_QuasiAbsEncoder_Error, MOTOR_QuasiAbsEncoder_Tolerance_cnt, MOTOR_QuasiAbsEncoder_Action, MOTOR_QuasiAbsEncoder_DeltaPos, MOTOR_QuasiAbsEncoder_SavedPosition, MOTOR_QuasiAbsEncoder_SavedIndexPosition, MOTOR_QuasiAbsEncoder_SavesCounter

Beschreibung

Mit der Quasi-Absolutwertgeberfunktion (QAE) kann die Position des Antriebs in einem nichtflüchtigen Speicher hinterlegt werden. Nach einer Logikspannungsunterbrechung kann diese Position wieder eingelesen werden, so dass eine erneute Referenzierung des Antriebs nicht notwendig ist.

Die Applikation sollte sicherstellen, dass der Rotor im spannungslosen Zustand nicht verdreht wird. Falls dieses dennoch passiert, kann der Antrieb mit Hilfe einer Zusatzfunktion über das Indexsignal die Position korrigieren oder als ungültig erklären. Die Zuverlässigkeit dieser Funktion, hängt von der Geberauflösung und der parametrierbaren Toleranz (MOTOR_QuasiAbsEncoder_Tolerance_cnt) ab.

Dieser Parameter konfiguriert die Quasiabsolutwertgeberfunktionen (QAE).

Parameterwerte:
Bit | Name | Beschreibung
0 QAE_Enable Aktiviert die Quasiabsolutwertgeberfunktion. Bei aktiver Funktion wird während der Initialisierung des Antriebs überprüft, ob im nichtflüchtigen Speicher eine gültige Position abgelegt ist.
Bei gültiger Position wird der Positionszähler mit diesem Wert geladen. Sonst wird QAE_ERR_InvalidPosition (MOTOR_QuasiAbsEncoder_Error) gesetzt.
1 QAE_AutoCorrectionOnFirstIndex Mit der Funktion „AutoCorrectionOnFirstIndex“ kann ein Verdrehen des Rotors im spannungslosen Zustand detektiert werden.
Dazu wird beim Abspeichern der Position im nichtflüchtigen Speicher auch die letzte Indexposition abgespeichert.

Wenn der Antrieb nach dem Wiedereinschalten eine gültige Position eingelesen hat, wird beim ersten Überfahren des Index überprüft, ob die Position mit der abgespeicherten Indexposition übereinstimmt. Befindet sich die aktuelle Indexposition innerhalb des Toleranzfensters, wird die aktuelle Position um die Differenz der Indexpositionen korrigiert.
Liegt die aktuelle Indexposition außerhalb des Toleranzfensters wird der Fehler QAE_ERR_InvalidPosition (MOTOR_QuasiAbsEncoder_Error) gesetzt und die Endstufe gesperrt.

- Je größer die Toleranz gewählt wird desto geringer ist die Wahrscheinlichkeit, dass ein Verdrehen des Rotors im spannungslosen Zustand erkannt wird.
- Je kleiner die Toleranz gewählt wird desto geringer ist die Wahrscheinlichkeit, dass ein Wert gespeichert bleibt.
4 | QAE_SaveOnPositonReached | Speichert automatisch die Position, wenn ein Sollwert erreicht wurde (STAT_Reached in DEV_Status).
5 QAE_SaveOnPowerOff Speichert automatisch die Position innerhalb von 3 ms nach Spannungsausfall. Die Spannung, bei der das Abspeichern der Postion stattfindet, kann man in den Parametern: MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe und MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe einstellen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init QuasiAbsEncoder
d.SdoWr(0x39A2, 0x00, 0x21)                                 # MOTOR_QuasiAbsEncoder_ConfigFlags - Enable + Save on power off
d.SdoWr(0x39A2, 0x07, 1000)                                 # MOTOR_QuasiAbsEncoder_Tolerance_cnt - Toleranz = 1000 ink

# Ausgeben der Parameter
print
print "***************************************************"
print "Konfigurationsflag:", hex(d.SdoRd(0x39A2, 0x00))     # MOTOR_QuasiAbsEncoder_ConfigFlags

print "Status:", hex(d.SdoRd(0x39A2, 0x01))                 # MOTOR_QuasiAbsEncoder_Status

print "Fehler:", d.SdoRd(0x39A2, 0x02)                      # MOTOR_QuasiAbsEncoder_Error

print "Toleranz:", d.SdoRd(0x39A2, 0x07)                    # MOTOR_QuasiAbsEncoder_Tolerance_cnt

print "Korrekturabstand:", d.SdoRd(0x39A2, 0x10)            # MOTOR_QuasiAbsEncoder_DeltaPos

print "min. Spannung zum speichern:", d.SdoRd(0x39A2,0x20)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe
print "max. Spannung zum speichern:", d.SdoRd(0x39A2,0x21)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe

print "Gespeicherte Pos:", d.SdoRd(0x39A2, 0x31)            # MOTOR_QuasiAbsEncoder_SavedPosition
print "Gespeicherte Index Pos:", d.SdoRd(0x39A2, 0x32)      # MOTOR_QuasiAbsEncoder_SavedIndexPosition

print "Speicherzähler:", d.SdoRd(0x39A2, 0x33)              # MOTOR_QuasiAbsEncoder_SavesCounter

print "Ist Pos:", d.SdoRd(0x3762, 0x00)                     # POS_ActualPosition
print "Encoder Index Pos:", d.SdoRd(0x396B, 0x00)           # MOTOR_ENC_ActualIndexPosition


39A2.01h Quasi-Absolutencoder - Status

Name | MOTOR_QuasiAbsEncoder_Status
Bezeichnung | Quasi-Absolutencoder - Status
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | -
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.06
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_QuasiAbsEncoder_ConfigFlags, MOTOR_QuasiAbsEncoder_Status, MOTOR_QuasiAbsEncoder_Error, MOTOR_QuasiAbsEncoder_Tolerance_cnt, MOTOR_QuasiAbsEncoder_Action, MOTOR_QuasiAbsEncoder_DeltaPos, MOTOR_QuasiAbsEncoder_SavedPosition, MOTOR_QuasiAbsEncoder_SavedIndexPosition, MOTOR_QuasiAbsEncoder_SavesCounter

Beschreibung

Liefert den Status des Quasiabsolutwertgeber-Moduls zurück.

Parameterwerte:
Bit | Name | Beschreibung
0 | QAE_Active | Modul aktiviert
1 | QAE_Error | Fehler ist aufgetreten. Fehlercode ist in QuasiAbsEncoderModul_Error und in DEV_ErrorReg.
2 | QAE_Warning | Z.Zt. nicht verwendet
3 QAE_Valid Dieses Bit zeigt an, ob der abgespeicherte Wert im nichtflüchtigen Speicher gültig ist.
Vor dem Ausschalten des Antriebs muss das Bit gesetzt sein, damit beim Wiedereinschalten die aktuelle Position übernommen werden kann. Dieses Bit zeigt nicht an, ob die aktuelle Position gültig ist (siehe Bit 7).

Das Bit wird gesetzt, wenn
- der Befehl „Save“ in QuasiAbsEncoderModul_Action gegeben wird.
- ein Automatisches Speichern in MOTOR_QuasiAbsEncoder_ConfigFlags gesetzt und erfolgt ist.
- wenn nach einem Spannungsreset eine gültige Position aus dem nichtflüchtigen Speicher geholt werden kann.

Zurückgesetzt wird das Bit, wenn
- die aktuelle Position das Toleranzfenster (MOTOR_QuasiAbsEncoder_Tolerance_cnt) um die gespeicherte Position überschreitet.
- im Modus „AutoCorrectionOnFirstIndex“ (MOTOR_QuasiAbsEncoder_ConfigFlags) fest gestellt wird, dass der Rotor im ausgeschalteten Zustand aus dem
Toleranzfenster gedreht wurde.
- wenn der Befehl „Unvalidate“ in QuasiAbsEncoderModul_Action gegeben wird.
4 QAE_PositionSaved Dieses Bit wird gesetzt, wenn die aktuelle Position im nichtflüchtigen Speicher gespeichert wird.
5 QAE_PostionLoaded Dieses Bit wird gesetzt, wenn die aktuelle Position mit dem Wert aus dem nichtflüchtigen Speicher geladen wird.
6 | QAE_PositionCorrected | Dieses Bit wird im Modus „AutoCorrectionOnFirstIndex“ (MOTOR_QuasiAbsEncoder_ConfigFlags) gesetzt, wenn die aktuelle Position beim Überfahren der Indexposition korrigiert wurde.
7 QAE_Referenced Dieses Bit zeigt an, ob die aktuelle Position gültig ist. Gesetzt wird das Bit, wenn QAE_Valid gesetzt wird. Gelöscht wird es, wenn ein Fehler (QAE_Error) anliegt.
Allgemeine Beschreibung siehe MOTOR_QuasiAbsEncoder_ConfigFlags.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init QuasiAbsEncoder
d.SdoWr(0x39A2, 0x00, 0x21)                                 # MOTOR_QuasiAbsEncoder_ConfigFlags - Enable + Save on power off
d.SdoWr(0x39A2, 0x07, 1000)                                 # MOTOR_QuasiAbsEncoder_Tolerance_cnt - Toleranz = 1000 ink

# Ausgeben der Parameter
print
print "***************************************************"
print "Konfigurationsflag:", hex(d.SdoRd(0x39A2, 0x00))     # MOTOR_QuasiAbsEncoder_ConfigFlags

print "Status:", hex(d.SdoRd(0x39A2, 0x01))                 # MOTOR_QuasiAbsEncoder_Status

print "Fehler:", d.SdoRd(0x39A2, 0x02)                      # MOTOR_QuasiAbsEncoder_Error

print "Toleranz:", d.SdoRd(0x39A2, 0x07)                    # MOTOR_QuasiAbsEncoder_Tolerance_cnt

print "Korrekturabstand:", d.SdoRd(0x39A2, 0x10)            # MOTOR_QuasiAbsEncoder_DeltaPos

print "min. Spannung zum speichern:", d.SdoRd(0x39A2,0x20)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe
print "max. Spannung zum speichern:", d.SdoRd(0x39A2,0x21)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe

print "Gespeicherte Pos:", d.SdoRd(0x39A2, 0x31)            # MOTOR_QuasiAbsEncoder_SavedPosition
print "Gespeicherte Index Pos:", d.SdoRd(0x39A2, 0x32)      # MOTOR_QuasiAbsEncoder_SavedIndexPosition

print "Speicherzähler:", d.SdoRd(0x39A2, 0x33)              # MOTOR_QuasiAbsEncoder_SavesCounter

print "Ist Pos:", d.SdoRd(0x3762, 0x00)                     # POS_ActualPosition
print "Encoder Index Pos:", d.SdoRd(0x396B, 0x00)           # MOTOR_ENC_ActualIndexPosition


39A2.02h Quasi-Absolutencoder - Fehler

Name | MOTOR_QuasiAbsEncoder_Error
Bezeichnung | Quasi-Absolutencoder - Fehler
Datentyp | int16
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.06
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_QuasiAbsEncoder_ConfigFlags, MOTOR_QuasiAbsEncoder_Status, MOTOR_QuasiAbsEncoder_Tolerance_cnt, MOTOR_QuasiAbsEncoder_Action, MOTOR_QuasiAbsEncoder_DeltaPos, MOTOR_QuasiAbsEncoder_SavedPosition, MOTOR_QuasiAbsEncoder_SavedIndexPosition, MOTOR_QuasiAbsEncoder_SavesCounter

Beschreibung

Dieser Parameter liefert den Fehlercode des QuasiAbsolutverwertEncoder (QAE) zurück. Alle QAE-Fehler werden auch das Error Register (DEV_ErrorReg) abgefragt werden.

Ein eventueller Fehler kann durch Beschreiben vom DEV_Cmd mit dem Wert 1 (CMD_ClearError) gelöscht werden.

Wertigkei t:
Wert | Beschreibung
=0 | Kein Fehler liegt vor.
<0 | Fehlercode (siehe Fehlercodetabelle)
Fehlerliste:
QAE-Fehler | DSA-Fehler | Fehlermeldung | Beschreibung
-10 | -710 | QAE_ERR_InvalidPosition | Im Modus „AutoCorrectionOnFirstIndex“ (Bit1 in MOTOR_QuasiAbsEncoder_ConfigFlags) ist der Abstand zwischen der aktuellen Indexposition (MOTOR_ENC_ActualIndexPosition) und der gespeicherten Indexposition (MOTOR_QuasiAbsEncoder_SavedIndexPosition) größer als die Toleranz (MOTOR_QuasiAbsEncoder_Tolerance_cnt).
-11 | -711 | QAE_ERR_StoredPositionIsInvalid | Nach einem Spannungsreset ist kein gültiger Positionswert im nichtflüchtigen Speicher.
-15 | -715 | QAE_ERR_BadCRC | Es ist ein Schreib-/Lesefehler des nichtflüchtigen Speichers aufgetreten (CRC-Überprüfung).
-16 | -716 | QAE_ERR_SavingError | Fehler beim Speichern der Position.
Allgemeine Beschreibung siehe MOTOR_QuasiAbsEncoder_ConfigFlags.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init QuasiAbsEncoder
d.SdoWr(0x39A2, 0x00, 0x21)                                 # MOTOR_QuasiAbsEncoder_ConfigFlags - Enable + Save on power off
d.SdoWr(0x39A2, 0x07, 1000)                                 # MOTOR_QuasiAbsEncoder_Tolerance_cnt - Toleranz = 1000 ink

# Ausgeben der Parameter
print
print "***************************************************"
print "Konfigurationsflag:", hex(d.SdoRd(0x39A2, 0x00))     # MOTOR_QuasiAbsEncoder_ConfigFlags

print "Status:", hex(d.SdoRd(0x39A2, 0x01))                 # MOTOR_QuasiAbsEncoder_Status

print "Fehler:", d.SdoRd(0x39A2, 0x02)                      # MOTOR_QuasiAbsEncoder_Error

print "Toleranz:", d.SdoRd(0x39A2, 0x07)                    # MOTOR_QuasiAbsEncoder_Tolerance_cnt

print "Korrekturabstand:", d.SdoRd(0x39A2, 0x10)            # MOTOR_QuasiAbsEncoder_DeltaPos

print "min. Spannung zum speichern:", d.SdoRd(0x39A2,0x20)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe
print "max. Spannung zum speichern:", d.SdoRd(0x39A2,0x21)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe

print "Gespeicherte Pos:", d.SdoRd(0x39A2, 0x31)            # MOTOR_QuasiAbsEncoder_SavedPosition
print "Gespeicherte Index Pos:", d.SdoRd(0x39A2, 0x32)      # MOTOR_QuasiAbsEncoder_SavedIndexPosition

print "Speicherzähler:", d.SdoRd(0x39A2, 0x33)              # MOTOR_QuasiAbsEncoder_SavesCounter

print "Ist Pos:", d.SdoRd(0x3762, 0x00)                     # POS_ActualPosition
print "Encoder Index Pos:", d.SdoRd(0x396B, 0x00)           # MOTOR_ENC_ActualIndexPosition


39A2.07h Quasi-Absolutencoder - Toleranz

Name | MOTOR_QuasiAbsEncoder_Tolerance_cnt
Bezeichnung | Quasi-Absolutencoder - Toleranz
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.06
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_QuasiAbsEncoder_ConfigFlags, MOTOR_QuasiAbsEncoder_Status, MOTOR_QuasiAbsEncoder_Error, MOTOR_QuasiAbsEncoder_Action, MOTOR_QuasiAbsEncoder_DeltaPos, MOTOR_QuasiAbsEncoder_SavedPosition, MOTOR_QuasiAbsEncoder_SavedIndexPosition, MOTOR_QuasiAbsEncoder_SavesCounter

Beschreibung

Über diesen Parameter kann das Toleranzfenster (Differenz zwischen Istposition und gespeicherter Position) eingestellt werden. Dieses hat folgende Funktionen:
  1. Verlässt der Motor das Toleranzfenster, so wird die gespeicherte Position für ungültig erklärt (QAE_Valid=0 in MOTOR_QuasiAbsEncoder_Status) und damit gelöscht.
    D.h. in diesem Fall kann nach einem Spannungsausfall auch keine Postion zurückgeladen werden.
  2. Das Toleranzfenster hat bei der "AutoCorrectionOnFirstIndex" Funktion folgende zusätzliche Bedeutung:
    Voraussetzung ist, das der Antrieb nach dem Wiedereinschalten eine gültige Position eingelesen hat. Dann wird beim ersten
    Überfahren des Index überprüft, ob die aktuelle Indexposition mit der abgespeicherten Indexposition übereinstimmt.
    Befindet sich die aktuelle Indexposition innerhalb des Toleranzfensters, werden die aktuelle Position und die aktuelle Indexposition entsprechend korrigiert.
    Die Differenz kann im Korrekturabstand (MOTOR_QuasiAbsEncoder_DeltaPos) liegen.
    Liegt die aktuelle Indexposition außerhalb des Toleranzfensters wird der Fehler "QAE_ERR_InvalidPosition" (MOTOR_QuasiAbsEncoder_Error) gesetzt und die Endstufe gesperrt.
Hinweise:
  • Je größer die Toleranz gewählt wird desto geringer ist die Wahrscheinlichkeit, dass ein Verdrehen des Rotors im spannungslosen Zustand erkannt wird.
  • Je kleiner die Toleranz gewählt wird desto geringer ist die Wahrscheinlichkeit, dass ein Wert gespeichert bleibt.
Allgemeine Beschreibung siehe MOTOR_QuasiAbsEncoder_ConfigFlags.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init QuasiAbsEncoder
d.SdoWr(0x39A2, 0x00, 0x21)                                 # MOTOR_QuasiAbsEncoder_ConfigFlags - Enable + Save on power off
d.SdoWr(0x39A2, 0x07, 1000)                                 # MOTOR_QuasiAbsEncoder_Tolerance_cnt - Toleranz = 1000 ink

# Ausgeben der Parameter
print
print "***************************************************"
print "Konfigurationsflag:", hex(d.SdoRd(0x39A2, 0x00))     # MOTOR_QuasiAbsEncoder_ConfigFlags

print "Status:", hex(d.SdoRd(0x39A2, 0x01))                 # MOTOR_QuasiAbsEncoder_Status

print "Fehler:", d.SdoRd(0x39A2, 0x02)                      # MOTOR_QuasiAbsEncoder_Error

print "Toleranz:", d.SdoRd(0x39A2, 0x07)                    # MOTOR_QuasiAbsEncoder_Tolerance_cnt

print "Korrekturabstand:", d.SdoRd(0x39A2, 0x10)            # MOTOR_QuasiAbsEncoder_DeltaPos

print "min. Spannung zum speichern:", d.SdoRd(0x39A2,0x20)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe
print "max. Spannung zum speichern:", d.SdoRd(0x39A2,0x21)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe

print "Gespeicherte Pos:", d.SdoRd(0x39A2, 0x31)            # MOTOR_QuasiAbsEncoder_SavedPosition
print "Gespeicherte Index Pos:", d.SdoRd(0x39A2, 0x32)      # MOTOR_QuasiAbsEncoder_SavedIndexPosition

print "Speicherzähler:", d.SdoRd(0x39A2, 0x33)              # MOTOR_QuasiAbsEncoder_SavesCounter

print "Ist Pos:", d.SdoRd(0x3762, 0x00)                     # POS_ActualPosition
print "Encoder Index Pos:", d.SdoRd(0x396B, 0x00)           # MOTOR_ENC_ActualIndexPosition


39A2.08h Quasi-Absolutencoder - Kommando

Name | MOTOR_QuasiAbsEncoder_Action
Bezeichnung | Quasi-Absolutencoder - Kommando
Datentyp | uint32
Zugriff | nur Schreiben
Attribute | -
Wertbereich | -
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.06
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_QuasiAbsEncoder_ConfigFlags, MOTOR_QuasiAbsEncoder_Status, MOTOR_QuasiAbsEncoder_Error, MOTOR_QuasiAbsEncoder_Tolerance_cnt, MOTOR_QuasiAbsEncoder_DeltaPos, MOTOR_QuasiAbsEncoder_SavedPosition, MOTOR_QuasiAbsEncoder_SavedIndexPosition, MOTOR_QuasiAbsEncoder_SavesCounter

Beschreibung

Beim Beschreiben dieses Parameters können folgende Kommandos ausgeführt werden:

Parameterwerte:
Hex | MSB...LSB | Befehl | Beschreibung
65766173h | "evas" | "Save" | Speichert die aktuelle Position im nichtflüchtigen Speicher ab. Bit3 QAE_Valid und Bit7 QAE_Referenced in MOTOR_QuasiAbsEncoder_Status werden gesetzt. Anschließend kann der Antrieb ausgeschaltet werden.
64616F6Ch | "daol" | "Load" | Falls die gespeicherte Position gültig ist, wird der Wert in den Positionszähler MOTOR_ENC_ActualPosition geladen.
646C7675h | "dlvu" | "Unvalidate" | Mit diesem Befehl kann die gespeicherte Position für ungültig erklärt werden. Bit3 QAE_Valid und Bit7 QAE_Referenced in MOTOR_QuasiAbsEncoder_Status werden zurückgesetzt.
Allgemeine Beschreibung siehe MOTOR_QuasiAbsEncoder_ConfigFlags.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x39A2, 0x00, 0x01)                                 # MOTOR_QuasiAbsEncoder_ConfigFlags - Enable

print
print "Gespeicherte Pos:", d.SdoRd(0x39A2, 0x31)            # MOTOR_QuasiAbsEncoder_SavedPosition
print "Gespeicherte Index Pos:", d.SdoRd(0x39A2, 0x32)      # MOTOR_QuasiAbsEncoder_SavedIndexPosition

print "Ist Pos vor Load:", d.SdoRd(0x3762, 0x00)            # POS_ActualPosition
print "Encoder Index Pos vor Load:", d.SdoRd(0x396B, 0x00)  # MOTOR_ENC_ActualIndexPosition

print "********************************"
print "loading"
print "********************************"

# Laden des QuasiAbsEncoder Speichers
d.SdoWr(0x39A2, 0x08, 0x64616F6C)                           # MOTOR_QuasiAbsEncoder_Action - load

print "Ist Pos nach Load:", d.SdoRd(0x3762, 0x00)           # POS_ActualPosition
print "Encoder Index Pos nach Load:", d.SdoRd(0x396B, 0x00) # MOTOR_ENC_ActualIndexPosition


39A2.10h Quasi-Absolutencoder - Korrekturabstand

Name | MOTOR_QuasiAbsEncoder_DeltaPos
Bezeichnung | Quasi-Absolutencoder - Korrekturabstand
Datentyp | int32
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | -
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.06
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_QuasiAbsEncoder_ConfigFlags, MOTOR_QuasiAbsEncoder_Status, MOTOR_QuasiAbsEncoder_Error, MOTOR_QuasiAbsEncoder_Tolerance_cnt, MOTOR_QuasiAbsEncoder_Action, MOTOR_QuasiAbsEncoder_SavedPosition, MOTOR_QuasiAbsEncoder_SavedIndexPosition, MOTOR_QuasiAbsEncoder_SavesCounter

Beschreibung

Wurde die Funktion "AutoCorrectionOnFirstIndex" aktiviert (Bit1 in MOTOR_QuasiAbsEncoder_ConfigFlags), enthält dieser Parameter den Wert, um den die Position korrigiert wurde. Dieses geschieht in Abhängigkeit von der eingestellten Toleranz (MOTOR_QuasiAbsEncoder_Tolerance_cnt).

Allgemeine Beschreibung siehe MOTOR_QuasiAbsEncoder_ConfigFlags.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init QuasiAbsEncoder
d.SdoWr(0x39A2, 0x00, 0x21)                                 # MOTOR_QuasiAbsEncoder_ConfigFlags - Enable + Save on power off
d.SdoWr(0x39A2, 0x07, 1000)                                 # MOTOR_QuasiAbsEncoder_Tolerance_cnt - Toleranz = 1000 ink

# Ausgeben der Parameter
print
print "***************************************************"
print "Konfigurationsflag:", hex(d.SdoRd(0x39A2, 0x00))     # MOTOR_QuasiAbsEncoder_ConfigFlags

print "Status:", hex(d.SdoRd(0x39A2, 0x01))                 # MOTOR_QuasiAbsEncoder_Status

print "Fehler:", d.SdoRd(0x39A2, 0x02)                      # MOTOR_QuasiAbsEncoder_Error

print "Toleranz:", d.SdoRd(0x39A2, 0x07)                    # MOTOR_QuasiAbsEncoder_Tolerance_cnt

print "Korrekturabstand:", d.SdoRd(0x39A2, 0x10)            # MOTOR_QuasiAbsEncoder_DeltaPos

print "min. Spannung zum speichern:", d.SdoRd(0x39A2,0x20)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe
print "max. Spannung zum speichern:", d.SdoRd(0x39A2,0x21)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe

print "Gespeicherte Pos:", d.SdoRd(0x39A2, 0x31)            # MOTOR_QuasiAbsEncoder_SavedPosition
print "Gespeicherte Index Pos:", d.SdoRd(0x39A2, 0x32)      # MOTOR_QuasiAbsEncoder_SavedIndexPosition

print "Speicherzähler:", d.SdoRd(0x39A2, 0x33)              # MOTOR_QuasiAbsEncoder_SavesCounter

print "Ist Pos:", d.SdoRd(0x3762, 0x00)                     # POS_ActualPosition
print "Encoder Index Pos:", d.SdoRd(0x396B, 0x00)           # MOTOR_ENC_ActualIndexPosition


39A2.20h Quasi-Absolutencoder - minimale Spannung zum Positionspeichern

Name | MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe
Bezeichnung | Quasi-Absolutencoder - minimale Spannung zum Positionspeichern
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 16000
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.91.00.16
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_QuasiAbsEncoder_ConfigFlags, MOTOR_QuasiAbsEncoder_Status, MOTOR_QuasiAbsEncoder_Error, MOTOR_QuasiAbsEncoder_Action, MOTOR_QuasiAbsEncoder_DeltaPos, MOTOR_QuasiAbsEncoder_SavedPosition, MOTOR_QuasiAbsEncoder_SavedIndexPosition, MOTOR_QuasiAbsEncoder_SavesCounter

Beschreibung

Der Wert des Parameters definiert die Elektronikspannung unter der die Position automatisch gespeichert wird, wenn die Funktion "Save On Power Off" (siehe Bit 5 QAE_SaveOnPowerOff im Parameter MOTOR_QuasiAbsEncoder_ConfigFlags) aktiviert ist. Die Position wird nur einmalig gespeichert. Damit die Position wieder gespeichert werden kann (die Funktion "scharf" ist), muss die Elektronikspannung über den Wert des Parameters MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe steigen. Die Auflösung des Wertes ist 10mV.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init QuasiAbsEncoder
d.SdoWr(0x39A2, 0x00, 0x21)                                 # MOTOR_QuasiAbsEncoder_ConfigFlags - Enable + Save on power off
d.SdoWr(0x39A2, 0x07, 1000)                                 # MOTOR_QuasiAbsEncoder_Tolerance_cnt - Toleranz = 1000 ink

# Ausgeben der Parameter
print
print "***************************************************"
print "Konfigurationsflag:", hex(d.SdoRd(0x39A2, 0x00))     # MOTOR_QuasiAbsEncoder_ConfigFlags

print "Status:", hex(d.SdoRd(0x39A2, 0x01))                 # MOTOR_QuasiAbsEncoder_Status

print "Fehler:", d.SdoRd(0x39A2, 0x02)                      # MOTOR_QuasiAbsEncoder_Error

print "Toleranz:", d.SdoRd(0x39A2, 0x07)                    # MOTOR_QuasiAbsEncoder_Tolerance_cnt

print "Korrekturabstand:", d.SdoRd(0x39A2, 0x10)            # MOTOR_QuasiAbsEncoder_DeltaPos

print "min. Spannung zum speichern:", d.SdoRd(0x39A2,0x20)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe
print "max. Spannung zum speichern:", d.SdoRd(0x39A2,0x21)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe

print "Gespeicherte Pos:", d.SdoRd(0x39A2, 0x31)            # MOTOR_QuasiAbsEncoder_SavedPosition
print "Gespeicherte Index Pos:", d.SdoRd(0x39A2, 0x32)      # MOTOR_QuasiAbsEncoder_SavedIndexPosition

print "Speicherzähler:", d.SdoRd(0x39A2, 0x33)              # MOTOR_QuasiAbsEncoder_SavesCounter

print "Ist Pos:", d.SdoRd(0x3762, 0x00)                     # POS_ActualPosition
print "Encoder Index Pos:", d.SdoRd(0x396B, 0x00)           # MOTOR_ENC_ActualIndexPosition


39A2.21h Quasi-Absolutencoder - maximale Spannung zum Positionspeichern

Name | MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe
Bezeichnung | Quasi-Absolutencoder - maximale Spannung zum Positionspeichern
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 17000
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.91.00.16
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_QuasiAbsEncoder_ConfigFlags, MOTOR_QuasiAbsEncoder_Status, MOTOR_QuasiAbsEncoder_Error, MOTOR_QuasiAbsEncoder_Action, MOTOR_QuasiAbsEncoder_DeltaPos, MOTOR_QuasiAbsEncoder_SavedPosition, MOTOR_QuasiAbsEncoder_SavedIndexPosition, MOTOR_QuasiAbsEncoder_SavesCounter

Beschreibung

Der Wert des Parameters definiert die Elektronikspannung über der das Abspeichern der Position möglich ist (die Funktion "Save On Power Off" "scharf" ist). Das Abspeichern der Position findet einmalig statt, wenn die Elektronikspannung unter den Wert des Parameters MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe fällt. Die Auflösung des Wertes ist 10mV.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init QuasiAbsEncoder
d.SdoWr(0x39A2, 0x00, 0x21)                                 # MOTOR_QuasiAbsEncoder_ConfigFlags - Enable + Save on power off
d.SdoWr(0x39A2, 0x07, 1000)                                 # MOTOR_QuasiAbsEncoder_Tolerance_cnt - Toleranz = 1000 ink

# Ausgeben der Parameter
print
print "***************************************************"
print "Konfigurationsflag:", hex(d.SdoRd(0x39A2, 0x00))     # MOTOR_QuasiAbsEncoder_ConfigFlags

print "Status:", hex(d.SdoRd(0x39A2, 0x01))                 # MOTOR_QuasiAbsEncoder_Status

print "Fehler:", d.SdoRd(0x39A2, 0x02)                      # MOTOR_QuasiAbsEncoder_Error

print "Toleranz:", d.SdoRd(0x39A2, 0x07)                    # MOTOR_QuasiAbsEncoder_Tolerance_cnt

print "Korrekturabstand:", d.SdoRd(0x39A2, 0x10)            # MOTOR_QuasiAbsEncoder_DeltaPos

print "min. Spannung zum speichern:", d.SdoRd(0x39A2,0x20)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe
print "max. Spannung zum speichern:", d.SdoRd(0x39A2,0x21)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe

print "Gespeicherte Pos:", d.SdoRd(0x39A2, 0x31)            # MOTOR_QuasiAbsEncoder_SavedPosition
print "Gespeicherte Index Pos:", d.SdoRd(0x39A2, 0x32)      # MOTOR_QuasiAbsEncoder_SavedIndexPosition

print "Speicherzähler:", d.SdoRd(0x39A2, 0x33)              # MOTOR_QuasiAbsEncoder_SavesCounter

print "Ist Pos:", d.SdoRd(0x3762, 0x00)                     # POS_ActualPosition
print "Encoder Index Pos:", d.SdoRd(0x396B, 0x00)           # MOTOR_ENC_ActualIndexPosition


39A2.31h Quasi-Absolutencoder - Gespeicherte Position

Name | MOTOR_QuasiAbsEncoder_SavedPosition
Bezeichnung | Quasi-Absolutencoder - Gespeicherte Position
Datentyp | int32
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.06
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_QuasiAbsEncoder_ConfigFlags, MOTOR_QuasiAbsEncoder_Status, MOTOR_QuasiAbsEncoder_Error, MOTOR_QuasiAbsEncoder_Tolerance_cnt, MOTOR_QuasiAbsEncoder_Action, MOTOR_QuasiAbsEncoder_DeltaPos, MOTOR_QuasiAbsEncoder_SavedIndexPosition, MOTOR_QuasiAbsEncoder_SavesCounter

Beschreibung

Mit diesem Objekt kann die im nichtflüchtigen Speicher abgelegte Position ausgelesen werden.Ist der abgespeicherte Wert nicht gültig (Bit0, QAE_Valid in MOTOR_QuasiAbsEncoder_Status nicht gesetzt), so wird der Wert 0 ausgegeben.

Allgemeine Beschreibung siehe MOTOR_QuasiAbsEncoder_ConfigFlags.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init QuasiAbsEncoder
d.SdoWr(0x39A2, 0x00, 0x21)                                 # MOTOR_QuasiAbsEncoder_ConfigFlags - Enable + Save on power off
d.SdoWr(0x39A2, 0x07, 1000)                                 # MOTOR_QuasiAbsEncoder_Tolerance_cnt - Toleranz = 1000 ink

# Ausgeben der Parameter
print
print "***************************************************"
print "Konfigurationsflag:", hex(d.SdoRd(0x39A2, 0x00))     # MOTOR_QuasiAbsEncoder_ConfigFlags

print "Status:", hex(d.SdoRd(0x39A2, 0x01))                 # MOTOR_QuasiAbsEncoder_Status

print "Fehler:", d.SdoRd(0x39A2, 0x02)                      # MOTOR_QuasiAbsEncoder_Error

print "Toleranz:", d.SdoRd(0x39A2, 0x07)                    # MOTOR_QuasiAbsEncoder_Tolerance_cnt

print "Korrekturabstand:", d.SdoRd(0x39A2, 0x10)            # MOTOR_QuasiAbsEncoder_DeltaPos

print "min. Spannung zum speichern:", d.SdoRd(0x39A2,0x20)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe
print "max. Spannung zum speichern:", d.SdoRd(0x39A2,0x21)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe

print "Gespeicherte Pos:", d.SdoRd(0x39A2, 0x31)            # MOTOR_QuasiAbsEncoder_SavedPosition
print "Gespeicherte Index Pos:", d.SdoRd(0x39A2, 0x32)      # MOTOR_QuasiAbsEncoder_SavedIndexPosition

print "Speicherzähler:", d.SdoRd(0x39A2, 0x33)              # MOTOR_QuasiAbsEncoder_SavesCounter

print "Ist Pos:", d.SdoRd(0x3762, 0x00)                     # POS_ActualPosition
print "Encoder Index Pos:", d.SdoRd(0x396B, 0x00)           # MOTOR_ENC_ActualIndexPosition


39A2.32h Quasi-Absolutencoder - Gespeicherte Indexposition

Name | MOTOR_QuasiAbsEncoder_SavedIndexPosition
Bezeichnung | Quasi-Absolutencoder - Gespeicherte Indexposition
Datentyp | int32
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.06
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_QuasiAbsEncoder_ConfigFlags, MOTOR_QuasiAbsEncoder_Status, MOTOR_QuasiAbsEncoder_Error, MOTOR_QuasiAbsEncoder_Tolerance_cnt, MOTOR_QuasiAbsEncoder_Action, MOTOR_QuasiAbsEncoder_DeltaPos, MOTOR_QuasiAbsEncoder_SavedPosition, MOTOR_QuasiAbsEncoder_SavesCounter

Beschreibung

Liefert die im nichtflüchtigen Speicher abgelegte Indexposition zurück.
Ist der abgespeicherte Wert nicht gültig (Bit0, QAE_Valid in MOTOR_QuasiAbsEncoder_Status nicht gesetzt), so wird der Wert 0 ausgegeben.

Allgemeine Beschreibung siehe MOTOR_QuasiAbsEncoder_ConfigFlags.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init QuasiAbsEncoder
d.SdoWr(0x39A2, 0x00, 0x21)                                 # MOTOR_QuasiAbsEncoder_ConfigFlags - Enable + Save on power off
d.SdoWr(0x39A2, 0x07, 1000)                                 # MOTOR_QuasiAbsEncoder_Tolerance_cnt - Toleranz = 1000 ink

# Ausgeben der Parameter
print
print "***************************************************"
print "Konfigurationsflag:", hex(d.SdoRd(0x39A2, 0x00))     # MOTOR_QuasiAbsEncoder_ConfigFlags

print "Status:", hex(d.SdoRd(0x39A2, 0x01))                 # MOTOR_QuasiAbsEncoder_Status

print "Fehler:", d.SdoRd(0x39A2, 0x02)                      # MOTOR_QuasiAbsEncoder_Error

print "Toleranz:", d.SdoRd(0x39A2, 0x07)                    # MOTOR_QuasiAbsEncoder_Tolerance_cnt

print "Korrekturabstand:", d.SdoRd(0x39A2, 0x10)            # MOTOR_QuasiAbsEncoder_DeltaPos

print "min. Spannung zum speichern:", d.SdoRd(0x39A2,0x20)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe
print "max. Spannung zum speichern:", d.SdoRd(0x39A2,0x21)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe

print "Gespeicherte Pos:", d.SdoRd(0x39A2, 0x31)            # MOTOR_QuasiAbsEncoder_SavedPosition
print "Gespeicherte Index Pos:", d.SdoRd(0x39A2, 0x32)      # MOTOR_QuasiAbsEncoder_SavedIndexPosition

print "Speicherzähler:", d.SdoRd(0x39A2, 0x33)              # MOTOR_QuasiAbsEncoder_SavesCounter

print "Ist Pos:", d.SdoRd(0x3762, 0x00)                     # POS_ActualPosition
print "Encoder Index Pos:", d.SdoRd(0x396B, 0x00)           # MOTOR_ENC_ActualIndexPosition


39A2.33h Quasi-Absolutencoder - Speicherzähler

Name | MOTOR_QuasiAbsEncoder_SavesCounter
Bezeichnung | Quasi-Absolutencoder - Speicherzähler
Datentyp | uint32
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.06
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_QuasiAbsEncoder_ConfigFlags, MOTOR_QuasiAbsEncoder_Status, MOTOR_QuasiAbsEncoder_Error, MOTOR_QuasiAbsEncoder_Tolerance_cnt, MOTOR_QuasiAbsEncoder_Action, MOTOR_QuasiAbsEncoder_DeltaPos, MOTOR_QuasiAbsEncoder_SavedPosition, MOTOR_QuasiAbsEncoder_SavedIndexPosition

Beschreibung

Die Anzahl der Speichervorgänge werden aufaddiert und können mit diesem Objekt gelesen werden.

Da die Änderungen im Status (MOTOR_QuasiAbsEncoder_Status) auch gespeichert werden, erhöht sich der Zähler auch dann.

Allgemeine Beschreibung siehe MOTOR_QuasiAbsEncoder_ConfigFlags.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

#init QuasiAbsEncoder
d.SdoWr(0x39A2, 0x00, 0x21)                                 # MOTOR_QuasiAbsEncoder_ConfigFlags - Enable + Save on power off
d.SdoWr(0x39A2, 0x07, 1000)                                 # MOTOR_QuasiAbsEncoder_Tolerance_cnt - Toleranz = 1000 ink

# Ausgeben der Parameter
print
print "***************************************************"
print "Konfigurationsflag:", hex(d.SdoRd(0x39A2, 0x00))     # MOTOR_QuasiAbsEncoder_ConfigFlags

print "Status:", hex(d.SdoRd(0x39A2, 0x01))                 # MOTOR_QuasiAbsEncoder_Status

print "Fehler:", d.SdoRd(0x39A2, 0x02)                      # MOTOR_QuasiAbsEncoder_Error

print "Toleranz:", d.SdoRd(0x39A2, 0x07)                    # MOTOR_QuasiAbsEncoder_Tolerance_cnt

print "Korrekturabstand:", d.SdoRd(0x39A2, 0x10)            # MOTOR_QuasiAbsEncoder_DeltaPos

print "min. Spannung zum speichern:", d.SdoRd(0x39A2,0x20)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe
print "max. Spannung zum speichern:", d.SdoRd(0x39A2,0x21)  # MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe

print "Gespeicherte Pos:", d.SdoRd(0x39A2, 0x31)            # MOTOR_QuasiAbsEncoder_SavedPosition
print "Gespeicherte Index Pos:", d.SdoRd(0x39A2, 0x32)      # MOTOR_QuasiAbsEncoder_SavedIndexPosition

print "Speicherzähler:", d.SdoRd(0x39A2, 0x33)              # MOTOR_QuasiAbsEncoder_SavesCounter

print "Ist Pos:", d.SdoRd(0x3762, 0x00)                     # POS_ActualPosition
print "Encoder Index Pos:", d.SdoRd(0x396B, 0x00)           # MOTOR_ENC_ActualIndexPosition


3A02.00h Zeitspanne für Geschwindigkeitsmessung

Name | MEASUREMENT_VelTime_ms
Bezeichnung | Zeitspanne für Geschwindigkeitsmessung
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 100
Einheit | [ms]
Betriebsart | Alle
Verfügbar ab | 1.45.00.00
Geräte | Alle
PLC Funktion | MesVelTime(value_ms)
Querverweis | -

Beschreibung

Über dieser Parameter kann die Messzeit für die Geschwindigkeitsmessung eingestellt werden. Je länger die Messung dauert, desto genauer ist das Ergebnis (MEASUREMENT_Vel_cnt, MEASUREMENT_Vel_rpm).

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)

d.SdoWr(0x3A02, 0x00, 100)                                          # MEASUREMENT_VelTime_ms - 100 ms
time.sleep(0.1)                                                     # warte 100 ms
print
print
print "Messzeit für Geschwindigkeitsmessung:",d.SdoRd(0x3A02, 0x00) # MEASUREMENT_VelTime_ms

meas_vel = d.SdoRd(0x3A04, 0x01)                                    # MEASUREMENT_Vel_rpm
meas_vel_inc = d.SdoRd(0x3A04, 0x00)                                # MEASUREMENT_Vel_cnt

print "****************************************"
print "gemessene Geschwindigkeit:", meas_vel,"U/min"
print "****************************************"
print "gemessene Geschwindigkeit:", meas_vel_inc,"ink"
print "****************************************"


3A04.00h Gemessene Geschwindigkeit in Inkrementen

Name | MEASUREMENT_Vel_cnt
Bezeichnung | Gemessene Geschwindigkeit in Inkrementen
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.45.00.00
Geräte | Alle
PLC Funktion | MesVel_cnt()
Querverweis | -

Beschreibung

Dieser Parameter liefert ein Ergebnis der Geschwindigkeitsmessung in Inkrementen pro Zeit vom MEASUREMENT_VelTime_ms zurück.
Bei der Messung werden je nach VEL-Rückführung (VEL_Feedback) entweder die Encoder- oder Hallpulse über die Zeit MEASUREMENT_VelTime_ms gezählt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)

d.SdoWr(0x3A02, 0x00, 100)                                          # MEASUREMENT_VelTime_ms - 100 ms
time.sleep(0.1)                                                     # warte 100 ms
print
print
print "Messzeit für Geschwindigkeitsmessung:",d.SdoRd(0x3A02, 0x00) # MEASUREMENT_VelTime_ms

meas_vel = d.SdoRd(0x3A04, 0x01)                                    # MEASUREMENT_Vel_rpm
meas_vel_inc = d.SdoRd(0x3A04, 0x00)                                # MEASUREMENT_Vel_cnt

print "****************************************"
print "gemessene Geschwindigkeit:", meas_vel,"U/min"
print "****************************************"
print "gemessene Geschwindigkeit:", meas_vel_inc,"ink"
print "****************************************"


3A04.01h Gemessene Geschwindigkeit in [U/min]

Name | MEASUREMENT_Vel_rpm
Bezeichnung | Gemessene Geschwindigkeit in [U/min]
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Alle
Verfügbar ab | 1.70.00.00
Geräte | Alle
PLC Funktion | MesVel()
Querverweis | -

Beschreibung

Dieser Parameter liefert ein Ergebnis der Geschwindigkeitsmessung in Umdrehungen pro Minute zurück.
Bei der Messung werden je nach VEL-Rückführung (VEL_Feedback) entweder die Encoder- oder Hallpulse über die Zeit MEASUREMENT_VelTime_ms gezählt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)

d.SdoWr(0x3A02, 0x00, 100)                                          # MEASUREMENT_VelTime_ms - 100 ms
time.sleep(0.1)                                                     # warte 100 ms
print
print
print "Messzeit für Geschwindigkeitsmessung:",d.SdoRd(0x3A02, 0x00) # MEASUREMENT_VelTime_ms

meas_vel = d.SdoRd(0x3A04, 0x01)                                    # MEASUREMENT_Vel_rpm
meas_vel_inc = d.SdoRd(0x3A04, 0x00)                                # MEASUREMENT_Vel_cnt

print "****************************************"
print "gemessene Geschwindigkeit:", meas_vel,"U/min"
print "****************************************"
print "gemessene Geschwindigkeit:", meas_vel_inc,"ink"
print "****************************************"


Inhalt - Parameter 3000h (DSA) - Faktorgruppe

3B00.00h | FCT_Control | Faktorgruppe - Control
3B00.01h | FCT_Precision | Faktorgruppe - Precision
3B10.00h | FCT_Polarity | Faktorgruppe - Polarität
3B11.00h | FCT_PosNotationIndex | Faktorgruppe - Position-Einheitenindex
3B12.00h | FCT_PosDimIndex | Faktorgruppe - Positions-Größenindex
3B13.00h | FCT_VelNotationIndex | Faktorgruppe - Geschwindigkeit-Einheitenindex
3B14.00h | FCT_VelDimIndex | Faktorgruppe - Geschwindigkeits-Größenindex
3B15.00h | FCT_AccNotationIndex | Faktorgruppe - Beschleinigung-Einheitenindex
3B16.00h | FCT_AccDimIndex | Faktorgruppe - Beschleunigungs-Größenindex
3B16.01h | FCT_AccFactorNum | Faktorgruppe - Beschleunigungsskalierung-Zähler
3B16.02h | FCT_AccFactorDen | Faktorgruppe - Beschleunigungsskalierung-Nenner
3B17.00h | FCT_PosScaleNum | Faktorgruppe - Positionsskalierung-Zähler
3B17.01h | FCT_PosScaleDen | Faktorgruppe - Positionsskalierung-Nenner
3B18.00h | FCT_VelScaleNum | Faktorgruppe - Geschwindigkeitsskalierung-Zähler
3B18.01h | FCT_VelScaleDen | Faktorgruppe - Geschwindigkeitsskalierung-Nenner
3B19.00h | FCT_GearRatio_MotorRev | Faktorgruppe - Getriebeübersetzung-Motorwelleumdrehungen
3B19.01h | FCT_GearRatio_ShaftRev | Faktorgruppe - Getriebeübersetzung-Wellenumdrehungen
3B1A.00h | FCT_FeedConstant_Feed | Faktorgruppe - Vorschubkonstante-Vorschub
3B1A.01h | FCT_FeedConstant_ShaftRev | Faktorgruppe - Vorschubkonstante-Wellenumdrehung


3B00.00h Faktorgruppe - Control

Name | FCT_Control
Bezeichnung | Faktorgruppe - Control
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 255]
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | FctControl(value)
Querverweis | -

Beschreibung

Mit dem Parameter kann die Faktorgruppe oder Teile davon ein- bzw. ausgeschaltet werden. Im ausgeschaltetem Zustand haben die Parameter von der Faktorgruppe kein Einfluss auf den Antriebsregler.

Bitbelegung:
Bit | Beschreibung
0 | Dieses Bit aktiviert bzw. deaktiviert folgende Parameter: VEL_ScaleNum, VEL_ScaleDen, VEL_DimensionNum, VEL_DimensionDen 0 - deaktiviert 1 - aktiviert
1 | Komplette Faktorgruppe einschalten.
2 | Nur Parameter der Faktorgruppe für Geschwindigkeit und Beschleunigung sind aktiv.
3 | Nur Parameter der Faktorgruppe für Position sind aktiv.
4..6 | Reserviert
7 | Update aktiv. Wenn der Bit 1 ist, können die Parameter der Faktorgruppe verändert werden, ohne die Ausgangsgrößen (Geschwindigkeit, Beschleunigung und Position) zu beeinflussen. Erst wenn dieses Bit wieder auf 0 gesetzt wird, werden die Werte übernommen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B00.01h Faktorgruppe - Precision

Name | FCT_Precision
Bezeichnung | Faktorgruppe - Precision
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.01
Geräte | Alle
PLC Funktion | FctPrecision(value)
Querverweis | -

Beschreibung

Dieser Parameter legt die Berechnungsgenauigkeit der internen Positionsfaktoren fest.

Parameterwerte:
Wert | Beschreibung
0 | Interne Positionsumrechnungen werden mit einfacher Genauigkeit (32Bit) durchgeführt
1 | Interne Positionsumrechnungen werden mit erweiterter Genauigkeit (64Bit) durchgeführt

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B10.00h Faktorgruppe - Polarität

Name | FCT_Polarity
Bezeichnung | Faktorgruppe - Polarität
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | FctPolarity(value)
Querverweis | -

Beschreibung

Die Positionswerte (Zielposition und aktuelle Positionen) werden in Abhängigkeit von diesem Parameter entweder mit 1 oder mit -1 multipliziert. Die Positionen wie Hallposition (MOTOR_HALL_ActualPosition) und Encoderposition (MOTOR_ENC_ActualPosition) werden von diesem Parameter nicht beeinflusst.

Parameterwerte:
Wert | Beschreibung
0 | multipliziert mit 1
1 | multipliziert mit -1 (minus Eins)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B11.00h Faktorgruppe - Position-Einheitenindex

Name | FCT_PosNotationIndex
Bezeichnung | Faktorgruppe - Position-Einheitenindex
Datentyp | int8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-128 .. 127]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | FctPosNotationIndex(value)
Querverweis | FCT_PosDimIndex

Beschreibung

Dieser Parameter legt die Einheit der Positionsparameter (Zielposition und aktuelle Positionen) fest.

Positions_Einheit = 10FCT_PosNotationIndex * PhyGröße(FCT_PosDimIndex)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B12.00h Faktorgruppe - Positions-Größenindex

Name | FCT_PosDimIndex
Bezeichnung | Faktorgruppe - Positions-Größenindex
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {B4h, ACh}
Defaultwert | B4h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | FctPosDimIndex(value)
Querverweis | FCT_PosNotationIndex

Beschreibung

Dieser Parameter legt die physikalische Größe der Positionsparameter (Zielposition und aktuelle Positionen) fest.

Positions_Einheit = 10FCT_PosNotationIndex * PhyGröße(FCT_PosDimIndex)

Parameterwerte:
Wert | Beschreibung
B4h | Umdrehungen (vorausgesetzt die Parameter MOTOR_ENC_Resolution und MOTOR_PolN wurden korrekt gesetzt)
ACh | Inkremente

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B13.00h Faktorgruppe - Geschwindigkeit-Einheitenindex

Name | FCT_VelNotationIndex
Bezeichnung | Faktorgruppe - Geschwindigkeit-Einheitenindex
Datentyp | int8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-128 .. 127]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | FctVelNotationIndex(value)
Querverweis | FCT_VelDimIndex

Beschreibung

Dieser Parameter legt die Einheit der Geschwindigkeitsparameter fest.

Geschwindigkeits_Einheit = 10FCT_VelNotationIndex * PhyGröße(FCT_VelDimIndex)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B14.00h Faktorgruppe - Geschwindigkeits-Größenindex

Name | FCT_VelDimIndex
Bezeichnung | Faktorgruppe - Geschwindigkeits-Größenindex
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {A3h, A4h}
Defaultwert | A4h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | FCT_VelNotationIndex

Beschreibung

Dieser Parameter legt die physikalische Größe der Geschwindigkeitsparameter fest.

Geschwindigkeits_Einheit = 10FCT_VelNotationIndex * PhyGröße(FCT_VelDimIndex)

Parameterwerte:
Wert | Beschreibung
A3h | [U/s] - Umdrehungen pro Sekunde (vorausgesetzt die Parameter MOTOR_ENC_Resolution und MOTOR_PolN wurden korrekt gesetzt)
A4h | [U/min] - Umdrehungen pro Minute (vorausgesetzt die Parameter MOTOR_ENC_Resolution und MOTOR_PolN wurden korrekt gesetzt)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B15.00h Faktorgruppe - Beschleinigung-Einheitenindex

Name | FCT_AccNotationIndex
Bezeichnung | Faktorgruppe - Beschleinigung-Einheitenindex
Datentyp | int8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-128 .. 127]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | FctAccNotationIndex(value)
Querverweis | FCT_AccDimIndex

Beschreibung

Dieser Parameter legt die Einheiten von Beschleunigung und Verzögerung fest.

Beschleunigungs_Einheit = 10FCT_AccNotationIndex * PhyGröße(FCT_AccDimIndex)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B16.00h Faktorgruppe - Beschleunigungs-Größenindex

Name | FCT_AccDimIndex
Bezeichnung | Faktorgruppe - Beschleunigungs-Größenindex
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {AFh, B0h}
Defaultwert | B0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | FctAccDimIndex(value)
Querverweis | FCT_AccNotationIndex

Beschreibung

Dieser Parameter legt die physikalische Größe der Beschleunigung und Verzögerung (Parameter: VEL_Acc, VEL_Dec) fest.

Beschleunigungs_Einheit = 10FCT_AccNotationIndex * PhyGröße(FCT_AccDimIndex)

Parameterwerte:
Wert | Beschreibung
AFh | [U/s²] - Umdrehungen pro Sekunde in quadrat
B0h | [U/min²] - Umdrehungen pro Minute in quadrat

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B16.01h Faktorgruppe - Beschleunigungsskalierung-Zähler

Name | FCT_AccFactorNum
Bezeichnung | Faktorgruppe - Beschleunigungsskalierung-Zähler
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | FCT_AccFactorDen

Beschreibung

Mit dem Parameter wird der Zähler des Beschleunigungskalierungsfaktors (Ffct_accscale) von der Faktorgruppe gesetzt

Der Skalierungsfaktor wird aus einem Zähler-Parameter (FCT_AccFactorNum) und einem Nenner-Parameter (FCT_AccFactorDen) durch Division gebildet.

Ffct_accscale = FCT_AccFactorNum / FCT_AccFactorDen

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B16.02h Faktorgruppe - Beschleunigungsskalierung-Nenner

Name | FCT_AccFactorDen
Bezeichnung | Faktorgruppe - Beschleunigungsskalierung-Nenner
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295] ausgenommen {0}
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | FCT_AccFactorNum

Beschreibung

Mit dem Parameter wird der Nenner des Beschleunigungskalierungsfaktors (Ffct_accscale) von der Faktorgruppe gesetzt

Der Skalierungsfaktor wird aus einem Zähler-Parameter (FCT_AccFactorNum) und einem Nenner-Parameter (FCT_AccFactorDen) durch Division gebildet.

Ffct_accscale = FCT_AccFactorNum / FCT_AccFactorDen

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B17.00h Faktorgruppe - Positionsskalierung-Zähler

Name | FCT_PosScaleNum
Bezeichnung | Faktorgruppe - Positionsskalierung-Zähler
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | FctPosScale([numerator,denominator])
Querverweis | FCT_PosScaleDen

Beschreibung

Mit dem Parameter wird der Zähler des Positionsskalierungsfaktors (Ffct_pscale) von der Faktorgruppe gesetzt.

Der Skalierungsfaktor wird aus einem Zähler-Parameter (FCT_PosScaleNum) und einem Nenner-Parameter (FCT_PosScaleDen) durch Division gebildet.

Ffct_pscale = FCT_PosScaleNum / FCT_PosScaleDen

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B17.01h Faktorgruppe - Positionsskalierung-Nenner

Name | FCT_PosScaleDen
Bezeichnung | Faktorgruppe - Positionsskalierung-Nenner
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295] ausgenommen {0}
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | FctPosScale([numerator,denominator])
Querverweis | FCT_PosScaleNum

Beschreibung

Mit dem Parameter wird der Nenner des Positionsskalierungsfaktors (Ffct_pscale) von der Faktorgruppe gesetzt.

Der Skalierungsfaktor wird aus einem Zähler-Parameter (FCT_PosScaleNum) und einem Nenner-Parameter (FCT_PosScaleDen) durch Division gebildet.

Ffct_pscale = FCT_PosScaleNum / FCT_PosScaleDen

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B18.00h Faktorgruppe - Geschwindigkeitsskalierung-Zähler

Name | FCT_VelScaleNum
Bezeichnung | Faktorgruppe - Geschwindigkeitsskalierung-Zähler
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | FctVelScale([numerator,denominator])
Querverweis | FCT_VelScaleDen

Beschreibung

Mit dem Parameter wird der Zähler des Geschwindigkeitsskalierungsfaktors (Ffct_vscale) von der Faktorgruppe gesetzt.

Der Skalierungsfaktor wird aus einem Zähler-Parameter (FCT_VelScaleNum) und einem Nenner-Parameter (FCT_VelScaleDen) durch Division gebildet.

Ffct_vscale = FCT_VelScaleNum / FCT_VelScaleDen

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B18.01h Faktorgruppe - Geschwindigkeitsskalierung-Nenner

Name | FCT_VelScaleDen
Bezeichnung | Faktorgruppe - Geschwindigkeitsskalierung-Nenner
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295] ausgenommen {0}
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | FctVelScale([numerator,denominator])
Querverweis | FCT_VelScaleNum

Beschreibung

Mit dem Parameter wird der Nenner des Geschwindigkeitsskalierungsfaktors (Ffct_vscale) von der Faktorgruppe gesetzt.

Der Skalierungsfaktor wird aus einem Zähler-Parameter (FCT_VelScaleNum) und einem Nenner-Parameter (FCT_VelScaleDen) durch Division gebildet.

Ffct_vscale = FCT_VelScaleNum / FCT_VelScaleDen

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B19.00h Faktorgruppe - Getriebeübersetzung-Motorwelleumdrehungen

Name | FCT_GearRatio_MotorRev
Bezeichnung | Faktorgruppe - Getriebeübersetzung-Motorwelleumdrehungen
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | FctGearRatio([motor_rev,driving_rev])
Querverweis | FCT_GearRatio_ShaftRev

Beschreibung

Dieser Parameter bestimmt den Zähler von der Getriebeübersetzung.
Die Getriebeübersetzung definiert ein Verhältnis der Umdrehungen der Motorwelle zur Umdrehungen der Abtriebswelle des Getriebes..

Fgear = FCT_GearRatio_MotorRev / FCT_GearRatio_ShaftRev

Für ein Beispiel siehe Parameter FCT_FeedConstant_Feed.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B19.01h Faktorgruppe - Getriebeübersetzung-Wellenumdrehungen

Name | FCT_GearRatio_ShaftRev
Bezeichnung | Faktorgruppe - Getriebeübersetzung-Wellenumdrehungen
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295] ausgenommen {0}
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | FctGearRatio([motor_rev,driving_rev])
Querverweis | FCT_GearRatio_MotorRev

Beschreibung

Dieser Parameter bestimmt den Nenner von der Getriebeübersetzung.
Die Getriebeübersetzung definiert ein Verhältnis der Umdrehungen der Motorwelle zur Umdrehungen der Abtriebswelle des Getriebes..

Fgear = FCT_GearRatio_MotorRev / FCT_GearRatio_ShaftRev

Für ein Beispiel siehe Parameter FCT_FeedConstant_Feed.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B1A.00h Faktorgruppe - Vorschubkonstante-Vorschub

Name | FCT_FeedConstant_Feed
Bezeichnung | Faktorgruppe - Vorschubkonstante-Vorschub
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295] ausgenommen {0}
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | FctFeedConstant([feed,shaft_rev])
Querverweis | FCT_FeedConstant_ShaftRev

Beschreibung

Dieser Parameter bestimmt den Zähler von der Vorschubkonstante.
Die Vorschubkonstante gibt den Weg pro Umdrehung der Abtriebswelle des Motors oder falls vorhanden, des Getriebes an.

Ffeed = FCT_FeedConstant_Feed / FCT_FeedConstant_ShaftRev

Beispiel:
  • Encoder = 500 Striche entspricht 4*500 = 2000 Inkremente
  • Getriebeübersetzung = 22.5 : 1
  • 55 Umdrehungen von Zahnrad ergeben einen Vorschub von 1000 [mm]
Durch die Parametrierung, die auf unten stehendem Bild dargestellt wurde, werden folgende Einheiten erreicht (vorausgesetzt, dass andere Parameter der Faktorgruppe auf Defaultwerte gesetzt wurden):
  • Positionen in [mm]
  • Geschwindigkeit in [mm/min]
  • Beschleunigung in [mm/min²]

Faktorgruppe - Beispiel

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


3B1A.01h Faktorgruppe - Vorschubkonstante-Wellenumdrehung

Name | FCT_FeedConstant_ShaftRev
Bezeichnung | Faktorgruppe - Vorschubkonstante-Wellenumdrehung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.50.00.00
Geräte | Alle
PLC Funktion | FctFeedConstant([feed,driving_rev])
Querverweis | FCT_FeedConstant_Feed

Beschreibung

Dieser Parameter bestimmt den Nenner von der Vorschubkonstante.
Die Vorschubkonstante gibt den Weg pro Umdrehung der Abtriebswelle des Motors oder falls vorhanden, des Getriebes an.

Ffeed = FCT_FeedConstant_Feed / FCT_FeedConstant_ShaftRev

Für ein Beispiel siehe Parameter FCT_FeedConstant_Feed.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3B00, 0x00, 0x02)      # FCT_Control - alles Einschalten
d.SdoWr(0x3B00, 0x01, 0)         # FCT_Precision - 32 Bit genauigkeit

d.SdoWr(0x3B10, 0x00, 0)         # FCT_Polarity - polarität +1

d.SdoWr(0x3B11, 0x00, 0)         # FCT_PosNotationIndex
d.SdoWr(0x3B12, 0x00, 0xB4)      # FCT_PosDimIndex
# --> Position: 10^0 = 1 * [U/min]

d.SdoWr(0x3B13, 0x00, 1)         # FCT_VelNotationIndex
d.SdoWr(0x3B14, 0x00, 0xA4)      # FCT_VelDimIndex
# --> Geschwindigkeit: 10^1 = 10 * [U/min]

d.SdoWr(0x3B15, 0x00, 0)         # FCT_AccNotationIndex
d.SdoWr(0x3B16, 0x00, 0xB0)      # FCT_AccDimIndex
d.SdoWr(0x3B16, 0x01, 4)         # FCT_AccFactorNum
d.SdoWr(0x3B16, 0x02, 8)         # FCT_AccFactorDen
# --> Beschleunigung: (4/8) * 10^0 = 0,5 * [U/min²]

d.SdoWr(0x3B17, 0x00, 20)        # FCT_PosScaleNum
d.SdoWr(0x3B17, 0x01, 5)         # FCT_PosScaleDen
# --> Positionskalierungsfaktor: 20/5 = 4

d.SdoWr(0x3B18, 0x00, 3)         # FCT_VelScaleNum
d.SdoWr(0x3B18, 0x01, 1)         # FCT_VelScaleDen
# --> Geschwindigkeistsskalierungsfaktor: 3/1 = 3

d.SdoWr(0x3B19, 0x00, 10)        # FCT_GearRatio_MotorRev
d.SdoWr(0x3B19, 0x01, 20)        # FCT_GearRatio_ShaftRev
# --> Getriebeübersetzungsfaktor: 10/20 = 0,5

d.SdoWr(0x3B1A, 0x00, 250)       # FCT_FeedConstant_Feed
d.SdoWr(0x3B1A, 0x01, 50)        # FCT_FeedConstant_ShaftRev
# --> Vorschub: 250mm in 50U = 5 [mm/U]

d.SdoWr(0x3003, 0x00, 7)         # DEV_Mode - POS Mode
d.SdoWr(0x3004, 0x00, 1)         # DEV_Enable - enable

d.SdoWr(0x3000, 0x10, 50)        # DEV_CmdData0 - 50 [mm/min]
# --> 50 [mm/min] * Getriebe 0,5 * Geschwindigkeitsfaktor 3 * Geschwindigkeit 10^1 / Vorschub [5 mm/U] = 150 [U/min]

d.SdoWr(0x3000, 0x11, 50)        # DEV_CmdData1  - 50 [mm]
# --> 50 [mm] * Getriebe 0,5 * Positionsskalierung 4 / Vorschub [5 mm/U] = 20 [U]

d.SdoWr(0x3000, 0x01, 0)         # DEV_Cmd_ExecOnChange - toggle
d.SdoWr(0x3000, 0x01, 0x34)      # DEV_Cmd_ExecOnChange - MovR


Inhalt - Parameter 3000h (DSA) - Diagnostik

3F00.00h | DIAG_Enable | Diagnostik - Schreibfreigabe
3FA0.00h | DIAG_SIM_Control | Diagnostik - Aktivierung der Simulation der E/A's
3FA1.00h | DIAG_SIM_AIN_Mask | Diagnostik - Ain-Simulation - Maske
3FA2.00h | DIAG_SIM_AIN_ValueAin0 | Diagnostik - Ain-Simulation - Wert von Ain0
3FA2.01h | DIAG_SIM_AIN_ValueAin1 | Diagnostik - Ain-Simulation - Wert von Ain1
3FA3.00h | DIAG_SIM_DIN_Mask | Diagnostik - Din-Simulation - Maske
3FA4.00h | DIAG_SIM_DIN_Value | Diagnostik - Din-Simulation - Wert der digitalen Eingänge


3F00.00h Diagnostik - Schreibfreigabe

Name | DIAG_Enable
Bezeichnung | Diagnostik - Schreibfreigabe
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.CB
Geräte | Alle
PLC Funktion | -
Querverweis | DIAG_SIM_Control, DIAG_SIM_AIN_Mask, DIAG_SIM_AIN_ValueAin0, DIAG_SIM_AIN_ValueAin1, DIAG_SIM_DIN_Mask, DIAG_SIM_DIN_Value

Beschreibung

Der Parameter setzt die Schreibfreigabe für die Diagnoseparameter. Zur Vermeidung der unbeabsichtigten Änderung der Diagnoseparameter , wird ein spezielles Codewort benötigt. Um die Schreibfreigabe zu aktivieren, muss man den Parameter auf 0x55AA55AA setzen. Alle ändere Werte deaktivieren die Schreibfreigabe.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x03)            # DIAG_SIM_Control - virtuelle Ain & Din freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren

d.SdoWr(0x3FA1, 0x00, 0x03)            # DIAG_SIM_AIN_Mask - Maske für virtuell Ain0 & Ain1
d.SdoWr(0x3FA2, 0x00, 4500)            # DIAG_SIM_AIN_ValueAin0 - Ain0 4500 mV
d.SdoWr(0x3FA2, 0x01, 7699)            # DIAG_SIM_AIN_ValueAin1 - Ain0 7699 mV

d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x09)            # DIAG_SIM_DIN_Value - Din0 & Din3 setzen


3FA0.00h Diagnostik - Aktivierung der Simulation der E/A's

Name | DIAG_SIM_Control
Bezeichnung | Diagnostik - Aktivierung der Simulation der E/A's
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.CB
Geräte | Alle
PLC Funktion | -
Querverweis | DIAG_Enable, DIAG_SIM_AIN_Mask, DIAG_SIM_AIN_ValueAin0, DIAG_SIM_AIN_ValueAin1, DIAG_SIM_DIN_Mask, DIAG_SIM_DIN_Value

Beschreibung

Mit diesem Parameter können die virtuellen digitalen und anlaogen Eingänge global aktiviert und deaktiviert werden.

Bitbelegung:
Bit Name Beschreibung
0 Global SimAin
 Bit = 0 - virtuelle analoge Eingänge deaktiviert
Bit = 1 - virtuelle analoge Eingänge aktiviert
1
 Global SimDin
 Bit = 0 - virtuelle digitale Eingänge deaktiviert
Bit = 1 - virtuelle digitale Eingänge aktiviert

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x03)            # DIAG_SIM_Control - virtuelle Ain & Din freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren

d.SdoWr(0x3FA1, 0x00, 0x03)            # DIAG_SIM_AIN_Mask - Maske für virtuell Ain0 & Ain1
d.SdoWr(0x3FA2, 0x00, 4500)            # DIAG_SIM_AIN_ValueAin0 - Ain0 4500 mV
d.SdoWr(0x3FA2, 0x01, 7699)            # DIAG_SIM_AIN_ValueAin1 - Ain0 7699 mV

d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x09)            # DIAG_SIM_DIN_Value - Din0 & Din3 setzen


3FA1.00h Diagnostik - Ain-Simulation - Maske

Name | DIAG_SIM_AIN_Mask
Bezeichnung | Diagnostik - Ain-Simulation - Maske
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.CB
Geräte | Alle
PLC Funktion | -
Querverweis | DIAG_Enable, DIAG_SIM_Control, DIAG_SIM_AIN_ValueAin0, DIAG_SIM_AIN_ValueAin1, DIAG_SIM_DIN_Mask, DIAG_SIM_DIN_Value

Beschreibung

Mit diesem Parameter wird eine bitweise Maske generiert, um zu entscheiden, welche analogen Eingänge simuliert werden. Bit 0 entspricht dem analogen Eingang 0, Bit 1 dem analogen Eingang 1, usw.. Der Parameter setzt den analogen Eingang nicht, er schaltet lediglich den virtuellen Modus für den Eingang frei.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x03)            # DIAG_SIM_Control - virtuelle Ain & Din freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren

d.SdoWr(0x3FA1, 0x00, 0x03)            # DIAG_SIM_AIN_Mask - Maske für virtuell Ain0 & Ain1
d.SdoWr(0x3FA2, 0x00, 4500)            # DIAG_SIM_AIN_ValueAin0 - Ain0 4500 mV
d.SdoWr(0x3FA2, 0x01, 7699)            # DIAG_SIM_AIN_ValueAin1 - Ain0 7699 mV

d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x09)            # DIAG_SIM_DIN_Value - Din0 & Din3 setzen


3FA2.00h Diagnostik - Ain-Simulation - Wert von Ain0

Name | DIAG_SIM_AIN_ValueAin0
Bezeichnung | Diagnostik - Ain-Simulation - Wert von Ain0
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [-10000 .. 10000]
Defaultwert | 0
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.89.00.CB
Geräte | Alle
PLC Funktion | -
Querverweis | DIAG_Enable, DIAG_SIM_Control, DIAG_SIM_AIN_Mask, DIAG_SIM_AIN_ValueAin1, DIAG_SIM_DIN_Mask, DIAG_SIM_DIN_Value

Beschreibung

Mit diesem Parameter wird der zu simulierende Wert für den analogen Eingang 0 vorgegeben. Damit der analoge Eingang 0 wirklich simuliert wird, muss er auf den virtuellen Modus umgestellt worden sein.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x03)            # DIAG_SIM_Control - virtuelle Ain & Din freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren

d.SdoWr(0x3FA1, 0x00, 0x03)            # DIAG_SIM_AIN_Mask - Maske für virtuell Ain0 & Ain1
d.SdoWr(0x3FA2, 0x00, 4500)            # DIAG_SIM_AIN_ValueAin0 - Ain0 4500 mV
d.SdoWr(0x3FA2, 0x01, 7699)            # DIAG_SIM_AIN_ValueAin1 - Ain0 7699 mV

d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x09)            # DIAG_SIM_DIN_Value - Din0 & Din3 setzen


3FA2.01h Diagnostik - Ain-Simulation - Wert von Ain1

Name | DIAG_SIM_AIN_ValueAin1
Bezeichnung | Diagnostik - Ain-Simulation - Wert von Ain1
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [-10000 .. 10000]
Defaultwert | 0
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.89.00.CB
Geräte | Alle
PLC Funktion | -
Querverweis | DIAG_Enable, DIAG_SIM_Control, DIAG_SIM_AIN_Mask, DIAG_SIM_AIN_ValueAin0, DIAG_SIM_DIN_Mask, DIAG_SIM_DIN_Value

Beschreibung

Mit diesem Parameter wird der zu simulierende Wert für den analogen Eingang 1 vorgegeben. Damit der analoge Eingang 1 wirklich simuliert wird, muss er auf den virtuellen Modus umgestellt worden sein.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x03)            # DIAG_SIM_Control - virtuelle Ain & Din freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren

d.SdoWr(0x3FA1, 0x00, 0x03)            # DIAG_SIM_AIN_Mask - Maske für virtuell Ain0 & Ain1
d.SdoWr(0x3FA2, 0x00, 4500)            # DIAG_SIM_AIN_ValueAin0 - Ain0 4500 mV
d.SdoWr(0x3FA2, 0x01, 7699)            # DIAG_SIM_AIN_ValueAin1 - Ain0 7699 mV

d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x09)            # DIAG_SIM_DIN_Value - Din0 & Din3 setzen


3FA3.00h Diagnostik - Din-Simulation - Maske

Name | DIAG_SIM_DIN_Mask
Bezeichnung | Diagnostik - Din-Simulation - Maske
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.CB
Geräte | Alle
PLC Funktion | -
Querverweis | DIAG_Enable, DIAG_SIM_Control, DIAG_SIM_AIN_Mask, DIAG_SIM_AIN_ValueAin0, DIAG_SIM_AIN_ValueAin1, DIAG_SIM_DIN_Value

Beschreibung

Mit diesem Parameter wird eine bitweise Maske generiert, um zu entscheiden, welche digitalen Eingänge simuliert werden. Bit 0 entspricht dem digitalen Eingang 0, Bit 1 dem digitalen Eingang 1 usw.. Der Parameter setzt die digitalen Eingänge nicht, er schaltet lediglich den virtuellen Modus für die Eingänge frei.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x03)            # DIAG_SIM_Control - virtuelle Ain & Din freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren

d.SdoWr(0x3FA1, 0x00, 0x03)            # DIAG_SIM_AIN_Mask - Maske für virtuell Ain0 & Ain1
d.SdoWr(0x3FA2, 0x00, 4500)            # DIAG_SIM_AIN_ValueAin0 - Ain0 4500 mV
d.SdoWr(0x3FA2, 0x01, 7699)            # DIAG_SIM_AIN_ValueAin1 - Ain0 7699 mV

d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x09)            # DIAG_SIM_DIN_Value - Din0 & Din3 setzen


3FA4.00h Diagnostik - Din-Simulation - Wert der digitalen Eingänge

Name | DIAG_SIM_DIN_Value
Bezeichnung | Diagnostik - Din-Simulation - Wert der digitalen Eingänge
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.CB
Geräte | Alle
PLC Funktion | -
Querverweis | DIAG_Enable, DIAG_SIM_Control, DIAG_SIM_AIN_Mask, DIAG_SIM_AIN_ValueAin0, DIAG_SIM_AIN_ValueAin1, DIAG_SIM_DIN_Mask

Beschreibung

Mit diesem Parameter werden die digitalen Eingänge gesetzt, wenn sie sich im virtuellen Modus befinden. Bit 0 entspricht dem digitalen Eingang 0, Bit 1 dem digitalen Eingang 1 usw..

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x03)            # DIAG_SIM_Control - virtuelle Ain & Din freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren

d.SdoWr(0x3FA1, 0x00, 0x03)            # DIAG_SIM_AIN_Mask - Maske für virtuell Ain0 & Ain1
d.SdoWr(0x3FA2, 0x00, 4500)            # DIAG_SIM_AIN_ValueAin0 - Ain0 4500 mV
d.SdoWr(0x3FA2, 0x01, 7699)            # DIAG_SIM_AIN_ValueAin1 - Ain0 7699 mV

d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x09)            # DIAG_SIM_DIN_Value - Din0 & Din3 setzen


Inhalt - Parameter 5000h (MPU)

5000.00h | MPU_Cmd | MPU-Kommando
5000.01h | MPU_Autostart | MPU-Autostart
5001.00h | MPU_Error | MPU-Fehlerregister
5002.00h | MPU_Status | MPU-Statusregister
5023.00h | MPU_Version | MPU-Version
5023.01h | MPU_SubVersion | MPU-Subversion
5028.00h | MPU_PrgSize | Maximale Größe des MPU-Programms
5028.01h | MPU_RegSize | Maximale Anzahl der MPU-Register
5028.04h | MPU_PVarSize | Maximale Anzahl der MPU-Register im EEPROM


5000.00h MPU-Kommando

Name | MPU_Cmd
Bezeichnung | MPU-Kommando
Datentyp | int16
Zugriff | nur Schreiben
Attribute | -
Wertbereich | [-8000h .. 7FFFh]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Beim Beschreiben dieses Parameters wird ein MPU-Kommando ausgeführt.

Parameterwerte:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | MPU_CMD_NOP | - | Keine Wirkung
01h | 1 | MPU_CMD_ClearError | ClearError() | Löscht einen eventuellen Fehler.
02h | 2 | MPU_CMD_Start | Start() | Startet das MPU Programm auf dem Gerät.
03h | 3 | MPU_CMD_Break | Break() | Unterbricht das MPU Programm auf dem Gerät.
04h | 4 | MPU_CMD_Continue | Continue() | Setzt das MPU Programm auf dem Gerät fort, nachdem es unterbrochen wurde.
80h | 128 | MPU_CMD_Store | Store() | Speichert das MPU Programm in einem nichtflüchtigen Speicher.
81h | 129 | MPU_CMD_Restore | Restore() | Lädt das MPU Programm aus den nichtflüchtigen Speicher.
82h | 130 | MPU_CMD_Default | Default() | Löscht das MPU Programm aus dem RAM (das Programm bleibt im nichtflüchtigen Speicher)
83h | 131 | MPU_CMD_Clear | Clear() | Löscht das MPU Programm auf dem Gerät.


5000.01h MPU-Autostart

Name | MPU_Autostart
Bezeichnung | MPU-Autostart
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {0h, 1h}
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Der Parameter deaktiviert / aktiviert den Autostart (den Start des MPU-Programms nach dem Einschalten des Gerätes).

Parameterwerte:
Wert | Bedeutung
0 | Autostart deaktivieren
1 | Autostart aktivieren


5001.00h MPU-Fehlerregister

Name | MPU_Error
Bezeichnung | MPU-Fehlerregister
Datentyp | int16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-32768 .. 32767]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Der Parameter liefert einen Fehlercode zurück. Ein eventueller Fehler kann durch Beschreiben vom MPU_Cmd mit dem Wert 1 (MPU_CMD_ClearError) gelöscht werden.

Wertigkeit:
Wert | Beschreibung
=0 | Es liegt kein Fehler vor.
<0 | Fehlercode (siehe Fehlercodetabelle)

Fehlercodes:
Fehlercode [dezimal] | Fehlercode [hex] | Fehlername | Beschreibung
-6000 | 0xE890 | ERR_MPU_BadCode | Falscher MPU-Befehl (MPU-Programm ist defekt !)
-6001 | 0xE88F | ERR_MPU_ProgramCounterOutOfRange | Programmzähler ist außerhalb des zulässigen Bereiches
-6002 | 0xE88E | ERR_MPU_JmpOutOfRange | Es wurde ein Sprung in einen unzulässigen Bereich ausgeführt.
-6003 | 0xE88D | ERR_MPU_Div0 | Es wurde Division durch Null ausgeführt.
-6020 | 0xE87C | ERR_MPU_RdErrArg0 | Erstes Argument des MPU-Befehls kann nicht gelesen werden.
-6021 | 0xE87B | ERR_MPU_RdErrArg1 | Zweites Argument des MPU-Befehls kann nicht gelesen werden.
-6030 | 0xE872 | ERR_MPU_WrErrArg0 | Erstes Argument des MPU-Befehls kann nicht geschrieben werden.
-6031 | 0xE871 | ERR_MPU_WrErrArg1 | Zweites Argument des MPU-Befehls kann nicht geschrieben werden.
-6040 | 0xE868 | ERR_MPU_CallStackOverflow | MPU-Programmstapelüberlauf
-6041 | 0xE867 | ERR_MPU_CallStackUnderflow | MPU-Programmstapelunterlauf
-6050 | 0xE85E | ERR_MPU_PrgBadMpuVersion | Falsche MPU-Version
-6051 | 0xE85D | ERR_MPU_PrgBadMpuCode | Falsche MPU-Kennung
-6052 | 0xE85C | ERR_MPU_PrgStoreFailed | MPU-Programm wurde nicht gespeichert.
-6053 | 0xE84B | ERR_MPU_PrgRestoreFailed | MPU-Programm wurde nicht geladen.
-6054 | 0xE85A | ERR_MPU_PrgBadCrc | Falsche Kontrollsume (CRC32) des MPU-Programms


5002.00h MPU-Statusregister

Name | MPU_Status
Bezeichnung | MPU-Statusregister
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Der Parameter liefert den Wert vom Statusregister zurück. Jedes Bit des Statusregisters hat eine eigene Bedeutung (siehe Tabelle).

Bitbelegung:
Bit | Name | Beschreibung für Bitwert = 1
0 | MPU_STAT_PrgRunning | Das MPU-Programm läuft.
1 | MPU_STAT_Error | Fehler ist aufgetreten. Fehlercode befindet sich im MPU_Error.


5023.00h MPU-Version

Name | MPU_Version
Bezeichnung | MPU-Version
Datentyp | const uint16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0000h .. FFFFh]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | MPU_SubVersion

Beschreibung

Der Parameter liefert die Version der MPU zurück. Der Parameter MPU_Version bildet zusammen mit dem Parameter MPU_SubVersion eine vollständige Versionsnummer.

Die Version wird wie unten beschrieben verschlüsselt.

    MPU_Version    = XXYYh        (in der Hex-Notation)
    MPU_SubVersion = UUZZh        (in der Hex-Notation)

daraus ergibt sich folgender Versionsnummer:

    XX.YY.UU.ZZ

Beispiel

    MPU_Version    = 0177h
    MPU_SubVersion = 0203h

    => Version = 1.77.02.03


5023.01h MPU-Subversion

Name | MPU_SubVersion
Bezeichnung | MPU-Subversion
Datentyp | const uint16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0000h .. FFFFh]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | MPU_Version

Beschreibung

Der Parameter liefert die Subversion der MPU zurück. Der Parameter MPU_SubVersion bildet zusammen mit dem Parameter MPU_Version eine vollständige Versionsnummer.

Die Version wird wie unten beschrieben verschlüsselt.

    MPU_Version    = XXYYh        (in der Hex-Notation)
    MPU_SubVersion = UUZZh        (in der Hex-Notation)

daraus ergibt sich folgender Versionsnummer:

    XX.YY.UU.ZZ

Beispiel

    MPU_Version    = 0177h
    MPU_SubVersion = 0203h

    => Version = 1.77.02.03


5028.00h Maximale Größe des MPU-Programms

Name | MPU_PrgSize
Bezeichnung | Maximale Größe des MPU-Programms
Datentyp | const uint16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 65535]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Der Parameter liefert die maximale Anzahl der Befehle des MPU-Programms zurück.


5028.01h Maximale Anzahl der MPU-Register

Name | MPU_RegSize
Bezeichnung | Maximale Anzahl der MPU-Register
Datentyp | const uint16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 65535]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Der Parameter liefert die maximale Anzahl der MPU-Register zurück.


5028.04h Maximale Anzahl der MPU-Register im EEPROM

Name | MPU_PVarSize
Bezeichnung | Maximale Anzahl der MPU-Register im EEPROM
Datentyp | const uint16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 65535]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.77.00.09
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Der Parameter liefert die maximale Anzahl der nichtflüchtigen MPU-Register (der Objekte mit dem Index 5060h) zurück.


Inhalt - Parameter 1000h (DS301)

1000.00h | COP_DeviceType | Gerätetyp
1001.00h | COP_ErrorRegister | Fehlerregister
1002.00h | COP_ManufacturerStatusRegister | Statusregister des Herstellers
1003.00h | COP_PredefinedErrorField_NumberOfErrors | Vordefinierte Fehlerfeld - Anzahl der Fehler
1003.01h | COP_PredefinedErrorField_StandardErrorField1 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 1
1003.02h | COP_PredefinedErrorField_StandardErrorField2 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 2
1003.03h | COP_PredefinedErrorField_StandardErrorField3 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 3
1003.04h | COP_PredefinedErrorField_StandardErrorField4 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 4
1003.05h | COP_PredefinedErrorField_StandardErrorField5 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 5
1003.06h | COP_PredefinedErrorField_StandardErrorField6 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 6
1003.07h | COP_PredefinedErrorField_StandardErrorField7 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 7
1003.08h | COP_PredefinedErrorField_StandardErrorField8 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 8
1005.00h | COP_CobId_Sync | COB-ID SYNC
1006.00h | COP_CommunicationCyclePeriod | Zykluszeit der Kommunikation
1008.00h | COP_ManufacturerDeviceName | Gerätename des Herstellers
1009.00h | COP_ManufacturerHardwareVersion | Hardwareversion des Herstellers
100A.00h | COP_ManufacturerSoftwareVersion | Softwareversion des Herstellers
100C.00h | COP_GuardTime | Überwachungszeit
100D.00h | COP_LifeTimeFactor | Überwachungszeitfaktor
100E.00h | COP_CobId_Guarding | COB-ID Node und Life Guarding
1010.00h | COP_StoreParameters_HighestSubindexSupported | Parameterspeicher - Höchster unterstützter Subindex
1010.01h | COP_StoreParameters_All | Parameterspeicher - Alle Parameter speichern
1010.02h | COP_StoreParameters_Communication | Parameterspeicher - Kommunikationsparameter speichern
1010.03h | COP_StoreParameters_Application | Parameterspeicher - Applikationsparameter speichern
1010.05h | COP_StoreParameters_Manufacturer_0x2000 | Parameterspeicher - Herstellersparameter speichern (Bereich 0x2000-0x2FFF)
1010.06h | COP_StoreParameters_Manufacturer_0x3000 | Parameterspeicher - Herstellersparameter speichern (Bereich 0x3000-0x3FFF)
1011.00h | COP_RestoreDefaultParameters_HighestSubindexSupported | Defaultparameter wiederherstellen - Höchster unterstützter Subindex
1011.01h | COP_RestoreDefaultParameters_All | Defaultparameter wiederherstellen - Alle Defaultparameter wiederherstellen
1011.02h | COP_RestoreDefaultParameters_Communication | Defaultparameter wiederherstellen - Kommunikationsdefaultparameter wiederherstellen
1011.03h | COP_RestoreDefaultParameters_Application | Defaultparameter wiederherstellen - Applikationsdefaultparameter wiederherstellen
1011.05h | COP_RestoreDefaultParameters_Manufacturer_0x2000 | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x2000-0x2FFF)
1011.06h | COP_RestoreDefaultParameters_Manufacturer_0x3000 | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x3000-0x3FFF)
1012.00h | COP_CobId_TimeStampMessage | COB-ID Zeitstempel der Meldung
1014.00h | COP_CobId_EmergencyMessage | COB-ID Emergency-Meldung
1016.00h | COP_ConsumerHeartbeatTime_HighestSubindexSupported | Heartbeat-Zeit des Konsumenten - Höchster unterstützter Subindex
1016.01h | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime1 | Heartbeat-Zeit des Konsumenten 1 - Heartbeat-Zeit des Konsumenten
1016.02h | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime2 | Heartbeat-Zeit des Konsumenten 2 - Heartbeat-Zeit des Konsumenten
1016.03h | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime3 | Heartbeat-Zeit des Konsumenten 3 - Heartbeat-Zeit des Konsumenten
1016.04h | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime4 | Heartbeat-Zeit des Konsumenten 4 - Heartbeat-Zeit des Konsumenten
1017.00h | COP_ProducerHeartbeatTime | Heartbeat-Zeit des Produzent
1018.00h | COP_IdentityObject_HighestSubindexSupported | Identitätsobjekt - Höchster unterstützter Subindex
1018.01h | COP_IdentityObject_VendorID | Identitätsobjekt - Vendor-ID
1018.02h | COP_IdentityObject_ProductCode | Identitätsobjekt - Produktcode
1018.03h | COP_IdentityObject_RevisionNumber | Identitätsobjekt - Revisionsnummer
1029.00h | COP_ErrorBehavior_HighestSubindexSupported | Fehlersverhalten - Höchster unterstützter Subindex
1029.01h | COP_ErrorBehavior_CommunicationError | Fehlersverhalten - Kommunkationsfehler
1200.00h | COP_SDO_ServerParameter_HighestSubindexSupported | SDO Server-Parameter - Höchster unterstützter Subindex
1200.01h | COP_SDO_ServerParameter_CobIdClientServer_Rx | SDO Server-Parameter - COB-ID Client -> Server (rx)
1200.02h | COP_SDO_ServerParameter_CobIdServerClient_Tx | SDO Server-Parameter - COB-ID Server -> Client (tx)
1400.00h | COP_RxPDO1_CommunicationParameter_HighestSubindexSupported | RxPDO1 Kommunikationsparameter - Höchster unterstützter Subindex
1400.01h | COP_RxPDO1_CommunicationParameter_CobId | RxPDO1 Kommunikationsparameter - COB-ID benutzt durch RxPDO 1
1400.02h | COP_RxPDO1_CommunicationParameter_TransmissionType | RxPDO1 Kommunikationsparameter - Typ der Transmission
1400.03h | COP_RxPDO1_CommunicationParameter_InhibitTime | RxPDO1 Kommunikationsparameter - Inhibit-time
1401.00h | COP_RxPDO2_CommunicationParameter_HighestSubindexSupported | RxPDO2 Kommunikationsparameter - Höchster unterstützter Subindex
1401.01h | COP_RxPDO2_CommunicationParameter_CobId | RxPDO2 Kommunikationsparameter - COB-ID benutzt durch RxPDO 2
1401.02h | COP_RxPDO2_CommunicationParameter_TransmissionType | RxPDO2 Kommunikationsparameter - Typ der Transmission
1401.03h | COP_RxPDO2_CommunicationParameter_InhibitTime | RxPDO2 Kommunikationsparameter - Inhibit-time
1402.00h | COP_RxPDO3_CommunicationParameter_HighestSubindexSupported | RxPDO3 Kommunikationsparameter - Höchster unterstützter Subindex
1402.01h | COP_RxPDO3_CommunicationParameter_CobId | RxPDO3 Kommunikationsparameter - COB-ID benutzt durch RxPDO 3
1402.02h | COP_RxPDO3_CommunicationParameter_TransmissionType | RxPDO3 Kommunikationsparameter - Typ der Transmission
1402.03h | COP_RxPDO3_CommunicationParameter_InhibitTime | RxPDO3 Kommunikationsparameter - Inhibit-time
1403.00h | COP_RxPDO4_CommunicationParameter_HighestSubindexSupported | RxPDO4 Kommunikationsparameter - Höchster unterstützter Subindex
1403.01h | COP_RxPDO4_CommunicationParameter_CobId | RxPDO4 Kommunikationsparameter - COB-ID benutzt durch RxPDO 4
1403.02h | COP_RxPDO4_CommunicationParameter_TransmissionType | RxPDO4 Kommunikationsparameter - Typ der Transmission
1403.03h | COP_RxPDO4_CommunicationParameter_InhibitTime | RxPDO4 Kommunikationsparameter - Inhibit-time
1404.00h | COP_RxPDO5_CommunicationParameter_HighestSubindexSupported | RxPDO5 Kommunikationsparameter - Höchster unterstützter Subindex
1404.01h | COP_RxPDO5_CommunicationParameter_CobId | RxPDO5 Kommunikationsparameter - COB-ID benutzt durch RxPDO 5
1404.02h | COP_RxPDO5_CommunicationParameter_TransmissionType | RxPDO5 Kommunikationsparameter - Typ der Transmission
1404.03h | COP_RxPDO5_CommunicationParameter_InhibitTime | RxPDO5 Kommunikationsparameter - Inhibit-time
1405.00h | COP_RxPDO6_CommunicationParameter_HighestSubindexSupported | RxPDO6 Kommunikationsparameter - Höchster unterstützter Subindex
1405.01h | COP_RxPDO6_CommunicationParameter_CobId | RxPDO6 Kommunikationsparameter - COB-ID benutzt durch RxPDO 6
1405.02h | COP_RxPDO6_CommunicationParameter_TransmissionType | RxPDO6 Kommunikationsparameter - Typ der Transmission
1405.03h | COP_RxPDO6_CommunicationParameter_InhibitTime | RxPDO6 Kommunikationsparameter - Inhibit-time
1406.00h | COP_RxPDO7_CommunicationParameter_HighestSubindexSupported | RxPDO7 Kommunikationsparameter - Höchster unterstützter Subindex
1406.01h | COP_RxPDO7_CommunicationParameter_CobId | RxPDO7 Kommunikationsparameter - COB-ID benutzt durch RxPDO 7
1406.02h | COP_RxPDO7_CommunicationParameter_TransmissionType | RxPDO7 Kommunikationsparameter - Typ der Transmission
1406.03h | COP_RxPDO7_CommunicationParameter_InhibitTime | RxPDO7 Kommunikationsparameter - Inhibit-time
1414.00h | COP_RxPDO21_CommunicationParameter_HighestSubindexSupported | RxPDO21 Kommunikationsparameter - Höchster unterstützter Subindex
1414.01h | COP_RxPDO21_CommunicationParameter_CobId | RxPDO21 Kommunikationsparameter - COB-ID benutzt durch RxPDO 21
1414.02h | COP_RxPDO21_CommunicationParameter_TransmissionType | RxPDO21 Kommunikationsparameter - Typ der Transmission
1414.03h | COP_RxPDO21_CommunicationParameter_InhibitTime | RxPDO21 Kommunikationsparameter - Inhibit-time
1600.00h | COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects | RxPDO1 Mapping - Anzahl der gemappten Obiekte in RxPDO 1
1600.01h | COP_RxPDO1_Mapping_1ApplicationObject | RxPDO1 Mapping - Erstes gemapptes Objekt
1600.02h | COP_RxPDO1_Mapping_2ApplicationObject | RxPDO1 Mapping - Zweites gemapptes Objekt
1600.03h | COP_RxPDO1_Mapping_3ApplicationObject | RxPDO1 Mapping - Drittes gemapptes Objekt
1600.04h | COP_RxPDO1_Mapping_4ApplicationObject | RxPDO1 Mapping - Viertes gemapptes Objekt
1600.05h | COP_RxPDO1_Mapping_5ApplicationObject | RxPDO1 Mapping - Fünftes gemapptes Objekt
1600.06h | COP_RxPDO1_Mapping_6ApplicationObject | RxPDO1 Mapping - Sechstes gemapptes Objekt
1600.07h | COP_RxPDO1_Mapping_7ApplicationObject | RxPDO1 Mapping - Siebtes gemapptes Objekt
1600.08h | COP_RxPDO1_Mapping_8ApplicationObject | RxPDO1 Mapping - Achtes gemapptes Objekt
1601.00h | COP_RxPDO2_Mapping_NumberOfMappedApplicationObjects | RxPDO2 Mapping - Anzahl der gemappten Obiekte in RxPDO 2
1601.01h | COP_RxPDO2_Mapping_1ApplicationObject | RxPDO2 Mapping - Erstes gemapptes Objekt
1601.02h | COP_RxPDO2_Mapping_2ApplicationObject | RxPDO2 Mapping - Zweites gemapptes Objekt
1601.03h | COP_RxPDO2_Mapping_3ApplicationObject | RxPDO2 Mapping - Drittes gemapptes Objekt
1601.04h | COP_RxPDO2_Mapping_4ApplicationObject | RxPDO2 Mapping - Viertes gemapptes Objekt
1601.05h | COP_RxPDO2_Mapping_5ApplicationObject | RxPDO2 Mapping - Fünftes gemapptes Objekt
1601.06h | COP_RxPDO2_Mapping_6ApplicationObject | RxPDO2 Mapping - Sechstes gemapptes Objekt
1601.07h | COP_RxPDO2_Mapping_7ApplicationObject | RxPDO2 Mapping - Siebtes gemapptes Objekt
1601.08h | COP_RxPDO2_Mapping_8ApplicationObject | RxPDO2 Mapping - Achtes gemapptes Objekt
1602.00h | COP_RxPDO3_Mapping_NumberOfMappedApplicationObjects | RxPDO3 Mapping - Anzahl der gemappten Obiekte in RxPDO 3
1602.01h | COP_RxPDO3_Mapping_1ApplicationObject | RxPDO3 Mapping - Erstes gemapptes Objekt
1602.02h | COP_RxPDO3_Mapping_2ApplicationObject | RxPDO3 Mapping - Zweites gemapptes Objekt
1602.03h | COP_RxPDO3_Mapping_3ApplicationObject | RxPDO3 Mapping - Drittes gemapptes Objekt
1602.04h | COP_RxPDO3_Mapping_4ApplicationObject | RxPDO3 Mapping - Viertes gemapptes Objekt
1602.05h | COP_RxPDO3_Mapping_5ApplicationObject | RxPDO3 Mapping - Fünftes gemapptes Objekt
1602.06h | COP_RxPDO3_Mapping_6ApplicationObject | RxPDO3 Mapping - Sechstes gemapptes Objekt
1602.07h | COP_RxPDO3_Mapping_7ApplicationObject | RxPDO3 Mapping - Siebtes gemapptes Objekt
1602.08h | COP_RxPDO3_Mapping_8ApplicationObject | RxPDO3 Mapping - Achtes gemapptes Objekt
1603.00h | COP_RxPDO4_Mapping_NumberOfMappedApplicationObjects | RxPDO4 Mapping - Anzahl der gemappten Obiekte in RxPDO 4
1603.01h | COP_RxPDO4_Mapping_1ApplicationObject | RxPDO4 Mapping - Erstes gemapptes Objekt
1603.02h | COP_RxPDO4_Mapping_2ApplicationObject | RxPDO4 Mapping - Zweites gemapptes Objekt
1603.03h | COP_RxPDO4_Mapping_3ApplicationObject | RxPDO4 Mapping - Drittes gemapptes Objekt
1603.04h | COP_RxPDO4_Mapping_4ApplicationObject | RxPDO4 Mapping - Viertes gemapptes Objekt
1603.05h | COP_RxPDO4_Mapping_5ApplicationObject | RxPDO4 Mapping - Fünftes gemapptes Objekt
1603.06h | COP_RxPDO4_Mapping_6ApplicationObject | RxPDO4 Mapping - Sechstes gemapptes Objekt
1603.07h | COP_RxPDO4_Mapping_7ApplicationObject | RxPDO4 Mapping - Siebtes gemapptes Objekt
1603.08h | COP_RxPDO4_Mapping_8ApplicationObject | RxPDO4 Mapping - Achtes gemapptes Objekt
1604.00h | COP_RxPDO5_Mapping_NumberOfMappedApplicationObjects | RxPDO5 Mapping - Anzahl der gemappten Obiekte in RxPDO 5
1604.01h | COP_RxPDO5_Mapping_1ApplicationObject | RxPDO5 Mapping - Erstes gemapptes Objekt
1604.02h | COP_RxPDO5_Mapping_2ApplicationObject | RxPDO5 Mapping - Zweites gemapptes Objekt
1604.03h | COP_RxPDO5_Mapping_3ApplicationObject | RxPDO5 Mapping - Drittes gemapptes Objekt
1604.04h | COP_RxPDO5_Mapping_4ApplicationObject | RxPDO5 Mapping - Viertes gemapptes Objekt
1604.05h | COP_RxPDO5_Mapping_5ApplicationObject | RxPDO5 Mapping - Fünftes gemapptes Objekt
1604.06h | COP_RxPDO5_Mapping_6ApplicationObject | RxPDO5 Mapping - Sechstes gemapptes Objekt
1604.07h | COP_RxPDO5_Mapping_7ApplicationObject | RxPDO5 Mapping - Siebtes gemapptes Objekt
1604.08h | COP_RxPDO5_Mapping_8ApplicationObject | RxPDO5 Mapping - Achtes gemapptes Objekt
1605.00h | COP_RxPDO6_Mapping_NumberOfMappedApplicationObjects | RxPDO6 Mapping - Anzahl der gemappten Obiekte in RxPDO 6
1605.01h | COP_RxPDO6_Mapping_1ApplicationObject | RxPDO6 Mapping - Erstes gemapptes Objekt
1605.02h | COP_RxPDO6_Mapping_2ApplicationObject | RxPDO6 Mapping - Zweites gemapptes Objekt
1605.03h | COP_RxPDO6_Mapping_3ApplicationObject | RxPDO6 Mapping - Drittes gemapptes Objekt
1605.04h | COP_RxPDO6_Mapping_4ApplicationObject | RxPDO6 Mapping - Viertes gemapptes Objekt
1605.05h | COP_RxPDO6_Mapping_5ApplicationObject | RxPDO6 Mapping - Fünftes gemapptes Objekt
1605.06h | COP_RxPDO6_Mapping_6ApplicationObject | RxPDO6 Mapping - Sechstes gemapptes Objekt
1605.07h | COP_RxPDO6_Mapping_7ApplicationObject | RxPDO6 Mapping - Siebtes gemapptes Objekt
1605.08h | COP_RxPDO6_Mapping_8ApplicationObject | RxPDO6 Mapping - Achtes gemapptes Objekt
1606.00h | COP_RxPDO7_Mapping_NumberOfMappedApplicationObjects | RxPDO7 Mapping - Anzahl der gemappten Obiekte in RxPDO 7
1606.01h | COP_RxPDO7_Mapping_1ApplicationObject | RxPDO7 Mapping - Erstes gemapptes Objekt
1606.02h | COP_RxPDO7_Mapping_2ApplicationObject | RxPDO7 Mapping - Zweites gemapptes Objekt
1606.03h | COP_RxPDO7_Mapping_3ApplicationObject | RxPDO7 Mapping - Drittes gemapptes Objekt
1606.04h | COP_RxPDO7_Mapping_4ApplicationObject | RxPDO7 Mapping - Viertes gemapptes Objekt
1606.05h | COP_RxPDO7_Mapping_5ApplicationObject | RxPDO7 Mapping - Fünftes gemapptes Objekt
1606.06h | COP_RxPDO7_Mapping_6ApplicationObject | RxPDO7 Mapping - Sechstes gemapptes Objekt
1606.07h | COP_RxPDO7_Mapping_7ApplicationObject | RxPDO7 Mapping - Siebtes gemapptes Objekt
1606.08h | COP_RxPDO7_Mapping_8ApplicationObject | RxPDO7 Mapping - Achtes gemapptes Objekt
1614.00h | COP_RxPDO21_Mapping_NumberOfMappedApplicationObjects | RxPDO21 Mapping - Anzahl der gemappten Obiekte in RxPDO 21
1614.01h | COP_RxPDO21_Mapping_1ApplicationObject | RxPDO21 Mapping - Erstes gemapptes Objekt
1614.02h | COP_RxPDO21_Mapping_2ApplicationObject | RxPDO21 Mapping - Zweites gemapptes Objekt
1614.03h | COP_RxPDO21_Mapping_3ApplicationObject | RxPDO21 Mapping - Drittes gemapptes Objekt
1614.04h | COP_RxPDO21_Mapping_4ApplicationObject | RxPDO21 Mapping - Viertes gemapptes Objekt
1614.05h | COP_RxPDO21_Mapping_5ApplicationObject | RxPDO21 Mapping - Fünftes gemapptes Objekt
1614.06h | COP_RxPDO21_Mapping_6ApplicationObject | RxPDO21 Mapping - Sechstes gemapptes Objekt
1614.07h | COP_RxPDO21_Mapping_7ApplicationObject | RxPDO21 Mapping - Siebtes gemapptes Objekt
1614.08h | COP_RxPDO21_Mapping_8ApplicationObject | RxPDO21 Mapping - Achtes gemapptes Objekt
1800.00h | COP_TxPDO1_CommunicationParameter_HighestSubindexSupported | TxPDO1 Kommunikationsparameter - Höchster unterstützter Subindex
1800.01h | COP_TxPDO1_CommunicationParameter_CobId | TxPDO1 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1800.02h | COP_TxPDO1_CommunicationParameter_TransmissionType | TxPDO1 Kommunikationsparameter - Typ der Transmission
1800.03h | COP_TxPDO1_CommunicationParameter_InhibitTime | TxPDO1 Kommunikationsparameter - Inhibit-time
1801.00h | COP_TxPDO2_CommunicationParameter_HighestSubindexSupported | TxPDO2 Kommunikationsparameter - Höchster unterstützter Subindex
1801.01h | COP_TxPDO2_CommunicationParameter_CobId | TxPDO2 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1801.02h | COP_TxPDO2_CommunicationParameter_TransmissionType | TxPDO2 Kommunikationsparameter - Typ der Transmission
1801.03h | COP_TxPDO2_CommunicationParameter_InhibitTime | TxPDO2 Kommunikationsparameter - Inhibit-time
1802.00h | COP_TxPDO3_CommunicationParameter_HighestSubindexSupported | TxPDO3 Kommunikationsparameter - Höchster unterstützter Subindex
1802.01h | COP_TxPDO3_CommunicationParameter_CobId | TxPDO3 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1802.02h | COP_TxPDO3_CommunicationParameter_TransmissionType | TxPDO3 Kommunikationsparameter - Typ der Transmission
1802.03h | COP_TxPDO3_CommunicationParameter_InhibitTime | TxPDO3 Kommunikationsparameter - Inhibit-time
1803.00h | COP_TxPDO4_CommunicationParameter_HighestSubindexSupported | TxPDO4 Kommunikationsparameter - Höchster unterstützter Subindex
1803.01h | COP_TxPDO4_CommunicationParameter_CobId | TxPDO4 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1803.02h | COP_TxPDO4_CommunicationParameter_TransmissionType | TxPDO4 Kommunikationsparameter - Typ der Transmission
1803.03h | COP_TxPDO4_CommunicationParameter_InhibitTime | TxPDO4 Kommunikationsparameter - Inhibit-time
1804.00h | COP_TxPDO5_CommunicationParameter_HighestSubindexSupported | TxPDO5 Kommunikationsparameter - Höchster unterstützter Subindex
1804.01h | COP_TxPDO5_CommunicationParameter_CobId | TxPDO5 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1804.02h | COP_TxPDO5_CommunicationParameter_TransmissionType | TxPDO5 Kommunikationsparameter - Typ der Transmission
1804.03h | COP_TxPDO5_CommunicationParameter_InhibitTime | TxPDO5 Kommunikationsparameter - Inhibit-time
1805.00h | COP_TxPDO6_CommunicationParameter_HighestSubindexSupported | TxPDO6 Kommunikationsparameter - Höchster unterstützter Subindex
1805.01h | COP_TxPDO6_CommunicationParameter_CobId | TxPDO6 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1805.02h | COP_TxPDO6_CommunicationParameter_TransmissionType | TxPDO6 Kommunikationsparameter - Typ der Transmission
1805.03h | COP_TxPDO6_CommunicationParameter_InhibitTime | TxPDO6 Kommunikationsparameter - Inhibit-time
1806.00h | COP_TxPDO7_CommunicationParameter_HighestSubindexSupported | TxPDO7 Kommunikationsparameter - Höchster unterstützter Subindex
1806.01h | COP_TxPDO7_CommunicationParameter_CobId | TxPDO7 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1806.02h | COP_TxPDO7_CommunicationParameter_TransmissionType | TxPDO7 Kommunikationsparameter - Typ der Transmission
1806.03h | COP_TxPDO7_CommunicationParameter_InhibitTime | TxPDO7 Kommunikationsparameter - Inhibit-time
1814.00h | COP_TxPDO21_CommunicationParameter_HighestSubindexSupported | TxPDO21 Kommunikationsparameter - Höchster unterstützter Subindex
1814.01h | COP_TxPDO21_CommunicationParameter_CobId | TxPDO21 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1814.02h | COP_TxPDO21_CommunicationParameter_TransmissionType | TxPDO21 Kommunikationsparameter - Typ der Transmission
1814.03h | COP_TxPDO21_CommunicationParameter_InhibitTime | TxPDO21 Kommunikationsparameter - Inhibit-time
1A00.00h | COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects | TxPDO1 Mapping - Anzahl der gemappten Obiekte in TxPDO 1
1A00.01h | COP_TxPDO1_Mapping_1ApplicationObject | TxPDO1 Mapping - Erstes gemapptes Objekt
1A00.02h | COP_TxPDO1_Mapping_2ApplicationObject | TxPDO1 Mapping - Zweites gemapptes Objekt
1A00.03h | COP_TxPDO1_Mapping_3ApplicationObject | TxPDO1 Mapping - Drittes gemapptes Objekt
1A00.04h | COP_TxPDO1_Mapping_4ApplicationObject | TxPDO1 Mapping - Viertes gemapptes Objekt
1A00.05h | COP_TxPDO1_Mapping_5ApplicationObject | TxPDO1 Mapping - Fünftes gemapptes Objekt
1A00.06h | COP_TxPDO1_Mapping_6ApplicationObject | TxPDO1 Mapping - Sechstes gemapptes Objekt
1A00.07h | COP_TxPDO1_Mapping_7ApplicationObject | TxPDO1 Mapping - Siebtes gemapptes Objekt
1A00.08h | COP_TxPDO1_Mapping_8ApplicationObject | TxPDO1 Mapping - Achtes gemapptes Objekt
1A01.00h | COP_TxPDO2_Mapping_NumberOfMappedApplicationObjects | TxPDO2 Mapping - Anzahl der gemappten Obiekte in TxPDO 2
1A01.01h | COP_TxPDO2_Mapping_1ApplicationObject | TxPDO2 Mapping - Erstes gemapptes Objekt
1A01.02h | COP_TxPDO2_Mapping_2ApplicationObject | TxPDO2 Mapping - Zweites gemapptes Objekt
1A01.03h | COP_TxPDO2_Mapping_3ApplicationObject | TxPDO2 Mapping - Drittes gemapptes Objekt
1A01.04h | COP_TxPDO2_Mapping_4ApplicationObject | TxPDO2 Mapping - Viertes gemapptes Objekt
1A01.05h | COP_TxPDO2_Mapping_5ApplicationObject | TxPDO2 Mapping - Fünftes gemapptes Objekt
1A01.06h | COP_TxPDO2_Mapping_6ApplicationObject | TxPDO2 Mapping - Sechstes gemapptes Objekt
1A01.07h | COP_TxPDO2_Mapping_7ApplicationObject | TxPDO2 Mapping - Siebtes gemapptes Objekt
1A01.08h | COP_TxPDO2_Mapping_8ApplicationObject | TxPDO2 Mapping - Achtes gemapptes Objekt
1A02.00h | COP_TxPDO3_Mapping_NumberOfMappedApplicationObjects | TxPDO3 Mapping - Anzahl der gemappten Obiekte in TxPDO 3
1A02.01h | COP_TxPDO3_Mapping_1ApplicationObject | TxPDO3 Mapping - Erstes gemapptes Objekt
1A02.02h | COP_TxPDO3_Mapping_2ApplicationObject | TxPDO3 Mapping - Zweites gemapptes Objekt
1A02.03h | COP_TxPDO3_Mapping_3ApplicationObject | TxPDO3 Mapping - Drittes gemapptes Objekt
1A02.04h | COP_TxPDO3_Mapping_4ApplicationObject | TxPDO3 Mapping - Viertes gemapptes Objekt
1A02.05h | COP_TxPDO3_Mapping_5ApplicationObject | TxPDO3 Mapping - Fünftes gemapptes Objekt
1A02.06h | COP_TxPDO3_Mapping_6ApplicationObject | TxPDO3 Mapping - Sechstes gemapptes Objekt
1A02.07h | COP_TxPDO3_Mapping_7ApplicationObject | TxPDO3 Mapping - Siebtes gemapptes Objekt
1A02.08h | COP_TxPDO3_Mapping_8ApplicationObject | TxPDO3 Mapping - Achtes gemapptes Objekt
1A03.00h | COP_TxPDO4_Mapping_NumberOfMappedApplicationObjects | TxPDO4 Mapping - Anzahl der gemappten Obiekte in TxPDO 4
1A03.01h | COP_TxPDO4_Mapping_1ApplicationObject | TxPDO4 Mapping - Erstes gemapptes Objekt
1A03.02h | COP_TxPDO4_Mapping_2ApplicationObject | TxPDO4 Mapping - Zweites gemapptes Objekt
1A03.03h | COP_TxPDO4_Mapping_3ApplicationObject | TxPDO4 Mapping - Drittes gemapptes Objekt
1A03.04h | COP_TxPDO4_Mapping_4ApplicationObject | TxPDO4 Mapping - Viertes gemapptes Objekt
1A03.05h | COP_TxPDO4_Mapping_5ApplicationObject | TxPDO4 Mapping - Fünftes gemapptes Objekt
1A03.06h | COP_TxPDO4_Mapping_6ApplicationObject | TxPDO4 Mapping - Sechstes gemapptes Objekt
1A03.07h | COP_TxPDO4_Mapping_7ApplicationObject | TxPDO4 Mapping - Siebtes gemapptes Objekt
1A03.08h | COP_TxPDO4_Mapping_8ApplicationObject | TxPDO4 Mapping - Achtes gemapptes Objekt
1A04.00h | COP_TxPDO5_Mapping_NumberOfMappedApplicationObjects | TxPDO5 Mapping - Anzahl der gemappten Obiekte in TxPDO 5
1A04.01h | COP_TxPDO5_Mapping_1ApplicationObject | TxPDO5 Mapping - Erstes gemapptes Objekt
1A04.02h | COP_TxPDO5_Mapping_2ApplicationObject | TxPDO5 Mapping - Zweites gemapptes Objekt
1A04.03h | COP_TxPDO5_Mapping_3ApplicationObject | TxPDO5 Mapping - Drittes gemapptes Objekt
1A04.04h | COP_TxPDO5_Mapping_4ApplicationObject | TxPDO5 Mapping - Viertes gemapptes Objekt
1A04.05h | COP_TxPDO5_Mapping_5ApplicationObject | TxPDO5 Mapping - Fünftes gemapptes Objekt
1A04.06h | COP_TxPDO5_Mapping_6ApplicationObject | TxPDO5 Mapping - Sechstes gemapptes Objekt
1A04.07h | COP_TxPDO5_Mapping_7ApplicationObject | TxPDO5 Mapping - Siebtes gemapptes Objekt
1A04.08h | COP_TxPDO5_Mapping_8ApplicationObject | TxPDO5 Mapping - Achtes gemapptes Objekt
1A05.00h | COP_TxPDO6_Mapping_NumberOfMappedApplicationObjects | TxPDO6 Mapping - Anzahl der gemappten Obiekte in TxPDO 6
1A05.01h | COP_TxPDO6_Mapping_1ApplicationObject | TxPDO6 Mapping - Erstes gemapptes Objekt
1A05.02h | COP_TxPDO6_Mapping_2ApplicationObject | TxPDO6 Mapping - Zweites gemapptes Objekt
1A05.03h | COP_TxPDO6_Mapping_3ApplicationObject | TxPDO6 Mapping - Drittes gemapptes Objekt
1A05.04h | COP_TxPDO6_Mapping_4ApplicationObject | TxPDO6 Mapping - Viertes gemapptes Objekt
1A05.05h | COP_TxPDO6_Mapping_5ApplicationObject | TxPDO6 Mapping - Fünftes gemapptes Objekt
1A05.06h | COP_TxPDO6_Mapping_6ApplicationObject | TxPDO6 Mapping - Sechstes gemapptes Objekt
1A05.07h | COP_TxPDO6_Mapping_7ApplicationObject | TxPDO6 Mapping - Siebtes gemapptes Objekt
1A05.08h | COP_TxPDO6_Mapping_8ApplicationObject | TxPDO6 Mapping - Achtes gemapptes Objekt
1A06.00h | COP_TxPDO7_Mapping_NumberOfMappedApplicationObjects | TxPDO7 Mapping - Anzahl der gemappten Obiekte in TxPDO 7
1A06.01h | COP_TxPDO7_Mapping_1ApplicationObject | TxPDO7 Mapping - Erstes gemapptes Objekt
1A06.02h | COP_TxPDO7_Mapping_2ApplicationObject | TxPDO7 Mapping - Zweites gemapptes Objekt
1A06.03h | COP_TxPDO7_Mapping_3ApplicationObject | TxPDO7 Mapping - Drittes gemapptes Objekt
1A06.04h | COP_TxPDO7_Mapping_4ApplicationObject | TxPDO7 Mapping - Viertes gemapptes Objekt
1A06.05h | COP_TxPDO7_Mapping_5ApplicationObject | TxPDO7 Mapping - Fünftes gemapptes Objekt
1A06.06h | COP_TxPDO7_Mapping_6ApplicationObject | TxPDO7 Mapping - Sechstes gemapptes Objekt
1A06.07h | COP_TxPDO7_Mapping_7ApplicationObject | TxPDO7 Mapping - Siebtes gemapptes Objekt
1A06.08h | COP_TxPDO7_Mapping_8ApplicationObject | TxPDO7 Mapping - Achtes gemapptes Objekt
1A14.00h | COP_TxPDO21_Mapping_NumberOfMappedApplicationObjects | TxPDO21 Mapping - Anzahl der gemappten Obiekte in TxPDO 21
1A14.01h | COP_TxPDO21_Mapping_1ApplicationObject | TxPDO21 Mapping - Erstes gemapptes Objekt
1A14.02h | COP_TxPDO21_Mapping_2ApplicationObject | TxPDO21 Mapping - Zweites gemapptes Objekt
1A14.03h | COP_TxPDO21_Mapping_3ApplicationObject | TxPDO21 Mapping - Drittes gemapptes Objekt
1A14.04h | COP_TxPDO21_Mapping_4ApplicationObject | TxPDO21 Mapping - Viertes gemapptes Objekt
1A14.05h | COP_TxPDO21_Mapping_5ApplicationObject | TxPDO21 Mapping - Fünftes gemapptes Objekt
1A14.06h | COP_TxPDO21_Mapping_6ApplicationObject | TxPDO21 Mapping - Sechstes gemapptes Objekt
1A14.07h | COP_TxPDO21_Mapping_7ApplicationObject | TxPDO21 Mapping - Siebtes gemapptes Objekt
1A14.08h | COP_TxPDO21_Mapping_8ApplicationObject | TxPDO21 Mapping - Achtes gemapptes Objekt


1400.00h RxPDO1 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_RxPDO1_CommunicationParameter_HighestSubindexSupported
Bezeichnung | RxPDO1 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO1_CommunicationParameter_CobId, COP_RxPDO1_CommunicationParameter_TransmissionType, COP_RxPDO1_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Empfangs-PDOs des Gerätes.

Subindex 00h enthält die Anzahl der Subindizes.

Mit Subindex 01h wird die COB-ID des RxPDOs eingestellt (siehe Abb und Tabelle).

Structure of RxPDO COB-ID

Beschreibung des RxPDO COB-ID:

Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID (CAN base frame) 29-bit CAN-ID (CAN extended frame)
11..28 | x | 29-bit CAN-ID vom CAN extended frame
0..10 | x | 11-bit CAN-ID vom CAN base frame

Mit dem Bit 31 können PDOs an- und abgeschaltet werden im NMT State Operational. Es können damit PDO konfiguriert sein, aber nicht verwendet. Die Funktion ist nötig für CANopen Geräte, welche mehr als 4 PDOs unterstützen, denn einem CANopen-Gerät sind per default nur 4 PDOs zugeordnet (pre-defined connection set).
Die COB ID kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für RxPDO:
Index | Default value
1400h | CAN-ID: 200h + Node-ID frame: 0b RTR: 1b valid: 0b
1401h | CAN-ID: 300h + Node-ID frame: 0b RTR: 1b valid: 0b
1402h | CAN-ID: 400h + Node-ID frame: 0b RTR: 1b valid: 0b
1403h | CAN-ID: 500h + Node-ID frame: 0b RTR: 1b valid: 0b
1404h - 1406h and 1414h | CAN-ID: 000h frame: 0b RTR: 1b valid: 1b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom RxPDO fest (siehe).

Beschreibung RxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO zuerst zwar empfangen wird (vor einem SYNC), aber erst bei Empfang der SYNC Message intern verarbeitet / aktualisiert wird. Damit können zuerst Daten an mehrere CAN Slaves gesendet und per SYNC aktualisiert werden .
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
    Bei einem synchronen PDO werden die Daten erst gepuffert und bei Empfang eines SYNC aktualisiert (siehe Abb).
  • Bei einem ereignisgesteuerten Type werden die Daten sofort aktualisiert, wenn sie empfangen werden.

Bus synchronization and actuation

Subindex 03h enthält die Sperrzeit in 100 μs. Der Wert 0 deaktiviert.
Der Wert kann nicht geändert werden,wenn das PDO aktiv ist (Bit 31 des Subindex 01h =0 ).
Für Empfangs-PDOs ist der Parameter nicht verwendet

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1400h
  • PDO 2 - Index 1401h
  • PDO 3 - Index 1402h
  • PDO 4 - Index 1403h
  • PDO 5 - Index 1404h
  • PDO 6 - Index 1405h
  • PDO 7 - Index 1406h
  • PDO 8 - Index 1414h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - RxPDO-2 Kommunikationsparameter

1401.00h | COP_RxPDO2_CommunicationParameter_HighestSubindexSupported | RxPDO2 Kommunikationsparameter - Höchster unterstützter Subindex
1401.01h | COP_RxPDO2_CommunicationParameter_CobId | RxPDO2 Kommunikationsparameter - COB-ID benutzt durch RxPDO 2
1401.02h | COP_RxPDO2_CommunicationParameter_TransmissionType | RxPDO2 Kommunikationsparameter - Typ der Transmission
1401.03h | COP_RxPDO2_CommunicationParameter_InhibitTime | RxPDO2 Kommunikationsparameter - Inhibit-time


1401.00h RxPDO2 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_RxPDO2_CommunicationParameter_HighestSubindexSupported
Bezeichnung | RxPDO2 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO2_CommunicationParameter_CobId, COP_RxPDO2_CommunicationParameter_TransmissionType, COP_RxPDO2_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Empfangs-PDOs des Gerätes.

Subindex 00h enthält die Anzahl der Subindizes.

Mit Subindex 01h wird die COB-ID des RxPDOs eingestellt (siehe Abb und Tabelle).

Structure of RxPDO COB-ID

Beschreibung des RxPDO COB-ID:

Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID (CAN base frame) 29-bit CAN-ID (CAN extended frame)
11..28 | x | 29-bit CAN-ID vom CAN extended frame
0..10 | x | 11-bit CAN-ID vom CAN base frame

Mit dem Bit 31 können PDOs an- und abgeschaltet werden im NMT State Operational. Es können damit PDO konfiguriert sein, aber nicht verwendet. Die Funktion ist nötig für CANopen Geräte, welche mehr als 4 PDOs unterstützen, denn einem CANopen-Gerät sind per default nur 4 PDOs zugeordnet (pre-defined connection set).
Die COB ID kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für RxPDO:
Index | Default value
1400h | CAN-ID: 200h + Node-ID frame: 0b RTR: 1b valid: 0b
1401h | CAN-ID: 300h + Node-ID frame: 0b RTR: 1b valid: 0b
1402h | CAN-ID: 400h + Node-ID frame: 0b RTR: 1b valid: 0b
1403h | CAN-ID: 500h + Node-ID frame: 0b RTR: 1b valid: 0b
1404h - 1406h and 1414h | CAN-ID: 000h frame: 0b RTR: 1b valid: 1b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom RxPDO fest (siehe).

Beschreibung RxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO zuerst zwar empfangen wird (vor einem SYNC), aber erst bei Empfang der SYNC Message intern verarbeitet / aktualisiert wird. Damit können zuerst Daten an mehrere CAN Slaves gesendet und per SYNC aktualisiert werden .
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
    Bei einem synchronen PDO werden die Daten erst gepuffert und bei Empfang eines SYNC aktualisiert (siehe Abb).
  • Bei einem ereignisgesteuerten Type werden die Daten sofort aktualisiert, wenn sie empfangen werden.

Bus synchronization and actuation

Subindex 03h enthält die Sperrzeit in 100 μs. Der Wert 0 deaktiviert.
Der Wert kann nicht geändert werden,wenn das PDO aktiv ist (Bit 31 des Subindex 01h =0 ).
Für Empfangs-PDOs ist der Parameter nicht verwendet

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1400h
  • PDO 2 - Index 1401h
  • PDO 3 - Index 1402h
  • PDO 4 - Index 1403h
  • PDO 5 - Index 1404h
  • PDO 6 - Index 1405h
  • PDO 7 - Index 1406h
  • PDO 8 - Index 1414h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1401.01h RxPDO2 Kommunikationsparameter - COB-ID benutzt durch RxPDO 2

Name | COP_RxPDO2_CommunicationParameter_CobId
Bezeichnung | RxPDO2 Kommunikationsparameter - COB-ID benutzt durch RxPDO 2
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 40000300h + NodeId
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_CobId(pdo_nr,cob_id)
Querverweis | COP_RxPDO2_CommunicationParameter_HighestSubindexSupported, COP_RxPDO2_CommunicationParameter_TransmissionType, COP_RxPDO2_CommunicationParameter_InhibitTime

Beschreibung

Subindex 01h setzt die COB-ID vom RxPDO.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1401.02h RxPDO2 Kommunikationsparameter - Typ der Transmission

Name | COP_RxPDO2_CommunicationParameter_TransmissionType
Bezeichnung | RxPDO2 Kommunikationsparameter - Typ der Transmission
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_TransmissionType(pdo_nr,type)
Querverweis | COP_RxPDO2_CommunicationParameter_HighestSubindexSupported, COP_RxPDO2_CommunicationParameter_CobId, COP_RxPDO2_CommunicationParameter_InhibitTime

Beschreibung

Subindex 02h definiert die Übertragungsart vom RxPDO.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1401.03h RxPDO2 Kommunikationsparameter - Inhibit-time

Name | COP_RxPDO2_CommunicationParameter_InhibitTime
Bezeichnung | RxPDO2 Kommunikationsparameter - Inhibit-time
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [100us]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_InhibitTime(pdo_nr,t_ms)
Querverweis | COP_RxPDO2_CommunicationParameter_HighestSubindexSupported, COP_RxPDO2_CommunicationParameter_CobId, COP_RxPDO2_CommunicationParameter_TransmissionType

Beschreibung

Subindex 03h enthält die Sperrzeit in 100 μs.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - RxPDO-3 Kommunikationsparameter

1402.00h | COP_RxPDO3_CommunicationParameter_HighestSubindexSupported | RxPDO3 Kommunikationsparameter - Höchster unterstützter Subindex
1402.01h | COP_RxPDO3_CommunicationParameter_CobId | RxPDO3 Kommunikationsparameter - COB-ID benutzt durch RxPDO 3
1402.02h | COP_RxPDO3_CommunicationParameter_TransmissionType | RxPDO3 Kommunikationsparameter - Typ der Transmission
1402.03h | COP_RxPDO3_CommunicationParameter_InhibitTime | RxPDO3 Kommunikationsparameter - Inhibit-time


1402.00h RxPDO3 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_RxPDO3_CommunicationParameter_HighestSubindexSupported
Bezeichnung | RxPDO3 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO3_CommunicationParameter_CobId, COP_RxPDO3_CommunicationParameter_TransmissionType, COP_RxPDO3_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Empfangs-PDOs des Gerätes.

Subindex 00h enthält die Anzahl der Subindizes.

Mit Subindex 01h wird die COB-ID des RxPDOs eingestellt (siehe Abb und Tabelle).

Structure of RxPDO COB-ID

Beschreibung des RxPDO COB-ID:

Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID (CAN base frame) 29-bit CAN-ID (CAN extended frame)
11..28 | x | 29-bit CAN-ID vom CAN extended frame
0..10 | x | 11-bit CAN-ID vom CAN base frame

Mit dem Bit 31 können PDOs an- und abgeschaltet werden im NMT State Operational. Es können damit PDO konfiguriert sein, aber nicht verwendet. Die Funktion ist nötig für CANopen Geräte, welche mehr als 4 PDOs unterstützen, denn einem CANopen-Gerät sind per default nur 4 PDOs zugeordnet (pre-defined connection set).
Die COB ID kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für RxPDO:
Index | Default value
1400h | CAN-ID: 200h + Node-ID frame: 0b RTR: 1b valid: 0b
1401h | CAN-ID: 300h + Node-ID frame: 0b RTR: 1b valid: 0b
1402h | CAN-ID: 400h + Node-ID frame: 0b RTR: 1b valid: 0b
1403h | CAN-ID: 500h + Node-ID frame: 0b RTR: 1b valid: 0b
1404h - 1406h and 1414h | CAN-ID: 000h frame: 0b RTR: 1b valid: 1b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom RxPDO fest (siehe).

Beschreibung RxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO zuerst zwar empfangen wird (vor einem SYNC), aber erst bei Empfang der SYNC Message intern verarbeitet / aktualisiert wird. Damit können zuerst Daten an mehrere CAN Slaves gesendet und per SYNC aktualisiert werden .
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
    Bei einem synchronen PDO werden die Daten erst gepuffert und bei Empfang eines SYNC aktualisiert (siehe Abb).
  • Bei einem ereignisgesteuerten Type werden die Daten sofort aktualisiert, wenn sie empfangen werden.

Bus synchronization and actuation

Subindex 03h enthält die Sperrzeit in 100 μs. Der Wert 0 deaktiviert.
Der Wert kann nicht geändert werden,wenn das PDO aktiv ist (Bit 31 des Subindex 01h =0 ).
Für Empfangs-PDOs ist der Parameter nicht verwendet

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1400h
  • PDO 2 - Index 1401h
  • PDO 3 - Index 1402h
  • PDO 4 - Index 1403h
  • PDO 5 - Index 1404h
  • PDO 6 - Index 1405h
  • PDO 7 - Index 1406h
  • PDO 8 - Index 1414h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1402.01h RxPDO3 Kommunikationsparameter - COB-ID benutzt durch RxPDO 3

Name | COP_RxPDO3_CommunicationParameter_CobId
Bezeichnung | RxPDO3 Kommunikationsparameter - COB-ID benutzt durch RxPDO 3
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 40000400h + NodeId
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_CobId(pdo_nr,cob_id)
Querverweis | COP_RxPDO3_CommunicationParameter_HighestSubindexSupported, COP_RxPDO3_CommunicationParameter_TransmissionType, COP_RxPDO3_CommunicationParameter_InhibitTime

Beschreibung

Subindex 01h setzt die COB-ID vom RxPDO.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1402.02h RxPDO3 Kommunikationsparameter - Typ der Transmission

Name | COP_RxPDO3_CommunicationParameter_TransmissionType
Bezeichnung | RxPDO3 Kommunikationsparameter - Typ der Transmission
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_TransmissionType(pdo_nr,type)
Querverweis | COP_RxPDO3_CommunicationParameter_HighestSubindexSupported, COP_RxPDO3_CommunicationParameter_CobId, COP_RxPDO3_CommunicationParameter_InhibitTime

Beschreibung

Subindex 02h definiert die Übertragungsart vom RxPDO.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1402.03h RxPDO3 Kommunikationsparameter - Inhibit-time

Name | COP_RxPDO3_CommunicationParameter_InhibitTime
Bezeichnung | RxPDO3 Kommunikationsparameter - Inhibit-time
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [100us]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_InhibitTime(pdo_nr,t_ms)
Querverweis | COP_RxPDO3_CommunicationParameter_HighestSubindexSupported, COP_RxPDO3_CommunicationParameter_CobId, COP_RxPDO3_CommunicationParameter_TransmissionType

Beschreibung

Subindex 03h enthält die Sperrzeit in 100 μs.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - RxPDO-4 Kommunikationsparameter

1403.00h | COP_RxPDO4_CommunicationParameter_HighestSubindexSupported | RxPDO4 Kommunikationsparameter - Höchster unterstützter Subindex
1403.01h | COP_RxPDO4_CommunicationParameter_CobId | RxPDO4 Kommunikationsparameter - COB-ID benutzt durch RxPDO 4
1403.02h | COP_RxPDO4_CommunicationParameter_TransmissionType | RxPDO4 Kommunikationsparameter - Typ der Transmission
1403.03h | COP_RxPDO4_CommunicationParameter_InhibitTime | RxPDO4 Kommunikationsparameter - Inhibit-time


1403.00h RxPDO4 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_RxPDO4_CommunicationParameter_HighestSubindexSupported
Bezeichnung | RxPDO4 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO4_CommunicationParameter_CobId, COP_RxPDO4_CommunicationParameter_TransmissionType, COP_RxPDO4_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Empfangs-PDOs des Gerätes.

Subindex 00h enthält die Anzahl der Subindizes.

Mit Subindex 01h wird die COB-ID des RxPDOs eingestellt (siehe Abb und Tabelle).

Structure of RxPDO COB-ID

Beschreibung des RxPDO COB-ID:

Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID (CAN base frame) 29-bit CAN-ID (CAN extended frame)
11..28 | x | 29-bit CAN-ID vom CAN extended frame
0..10 | x | 11-bit CAN-ID vom CAN base frame

Mit dem Bit 31 können PDOs an- und abgeschaltet werden im NMT State Operational. Es können damit PDO konfiguriert sein, aber nicht verwendet. Die Funktion ist nötig für CANopen Geräte, welche mehr als 4 PDOs unterstützen, denn einem CANopen-Gerät sind per default nur 4 PDOs zugeordnet (pre-defined connection set).
Die COB ID kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für RxPDO:
Index | Default value
1400h | CAN-ID: 200h + Node-ID frame: 0b RTR: 1b valid: 0b
1401h | CAN-ID: 300h + Node-ID frame: 0b RTR: 1b valid: 0b
1402h | CAN-ID: 400h + Node-ID frame: 0b RTR: 1b valid: 0b
1403h | CAN-ID: 500h + Node-ID frame: 0b RTR: 1b valid: 0b
1404h - 1406h and 1414h | CAN-ID: 000h frame: 0b RTR: 1b valid: 1b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom RxPDO fest (siehe).

Beschreibung RxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO zuerst zwar empfangen wird (vor einem SYNC), aber erst bei Empfang der SYNC Message intern verarbeitet / aktualisiert wird. Damit können zuerst Daten an mehrere CAN Slaves gesendet und per SYNC aktualisiert werden .
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
    Bei einem synchronen PDO werden die Daten erst gepuffert und bei Empfang eines SYNC aktualisiert (siehe Abb).
  • Bei einem ereignisgesteuerten Type werden die Daten sofort aktualisiert, wenn sie empfangen werden.

Bus synchronization and actuation

Subindex 03h enthält die Sperrzeit in 100 μs. Der Wert 0 deaktiviert.
Der Wert kann nicht geändert werden,wenn das PDO aktiv ist (Bit 31 des Subindex 01h =0 ).
Für Empfangs-PDOs ist der Parameter nicht verwendet

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1400h
  • PDO 2 - Index 1401h
  • PDO 3 - Index 1402h
  • PDO 4 - Index 1403h
  • PDO 5 - Index 1404h
  • PDO 6 - Index 1405h
  • PDO 7 - Index 1406h
  • PDO 8 - Index 1414h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1403.01h RxPDO4 Kommunikationsparameter - COB-ID benutzt durch RxPDO 4

Name | COP_RxPDO4_CommunicationParameter_CobId
Bezeichnung | RxPDO4 Kommunikationsparameter - COB-ID benutzt durch RxPDO 4
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 40000500h + NodeId
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_CobId(pdo_nr,cob_id)
Querverweis | COP_RxPDO4_CommunicationParameter_HighestSubindexSupported, COP_RxPDO4_CommunicationParameter_TransmissionType, COP_RxPDO4_CommunicationParameter_InhibitTime

Beschreibung

Subindex 01h setzt die COB-ID vom RxPDO.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1403.02h RxPDO4 Kommunikationsparameter - Typ der Transmission

Name | COP_RxPDO4_CommunicationParameter_TransmissionType
Bezeichnung | RxPDO4 Kommunikationsparameter - Typ der Transmission
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_TransmissionType(pdo_nr,type)
Querverweis | COP_RxPDO4_CommunicationParameter_HighestSubindexSupported, COP_RxPDO4_CommunicationParameter_CobId, COP_RxPDO4_CommunicationParameter_InhibitTime

Beschreibung

Subindex 02h definiert die Übertragungsart vom RxPDO.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1403.03h RxPDO4 Kommunikationsparameter - Inhibit-time

Name | COP_RxPDO4_CommunicationParameter_InhibitTime
Bezeichnung | RxPDO4 Kommunikationsparameter - Inhibit-time
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [100us]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_InhibitTime(pdo_nr,t_ms)
Querverweis | COP_RxPDO4_CommunicationParameter_HighestSubindexSupported, COP_RxPDO4_CommunicationParameter_CobId, COP_RxPDO4_CommunicationParameter_TransmissionType

Beschreibung

Subindex 03h enthält die Sperrzeit in 100 μs.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - RxPDO-5 Kommunikationsparameter

1404.00h | COP_RxPDO5_CommunicationParameter_HighestSubindexSupported | RxPDO5 Kommunikationsparameter - Höchster unterstützter Subindex
1404.01h | COP_RxPDO5_CommunicationParameter_CobId | RxPDO5 Kommunikationsparameter - COB-ID benutzt durch RxPDO 5
1404.02h | COP_RxPDO5_CommunicationParameter_TransmissionType | RxPDO5 Kommunikationsparameter - Typ der Transmission
1404.03h | COP_RxPDO5_CommunicationParameter_InhibitTime | RxPDO5 Kommunikationsparameter - Inhibit-time


1404.00h RxPDO5 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_RxPDO5_CommunicationParameter_HighestSubindexSupported
Bezeichnung | RxPDO5 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO5_CommunicationParameter_CobId, COP_RxPDO5_CommunicationParameter_TransmissionType, COP_RxPDO5_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Empfangs-PDOs des Gerätes.

Subindex 00h enthält die Anzahl der Subindizes.

Mit Subindex 01h wird die COB-ID des RxPDOs eingestellt (siehe Abb und Tabelle).

Structure of RxPDO COB-ID

Beschreibung des RxPDO COB-ID:

Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID (CAN base frame) 29-bit CAN-ID (CAN extended frame)
11..28 | x | 29-bit CAN-ID vom CAN extended frame
0..10 | x | 11-bit CAN-ID vom CAN base frame

Mit dem Bit 31 können PDOs an- und abgeschaltet werden im NMT State Operational. Es können damit PDO konfiguriert sein, aber nicht verwendet. Die Funktion ist nötig für CANopen Geräte, welche mehr als 4 PDOs unterstützen, denn einem CANopen-Gerät sind per default nur 4 PDOs zugeordnet (pre-defined connection set).
Die COB ID kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für RxPDO:
Index | Default value
1400h | CAN-ID: 200h + Node-ID frame: 0b RTR: 1b valid: 0b
1401h | CAN-ID: 300h + Node-ID frame: 0b RTR: 1b valid: 0b
1402h | CAN-ID: 400h + Node-ID frame: 0b RTR: 1b valid: 0b
1403h | CAN-ID: 500h + Node-ID frame: 0b RTR: 1b valid: 0b
1404h - 1406h and 1414h | CAN-ID: 000h frame: 0b RTR: 1b valid: 1b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom RxPDO fest (siehe).

Beschreibung RxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO zuerst zwar empfangen wird (vor einem SYNC), aber erst bei Empfang der SYNC Message intern verarbeitet / aktualisiert wird. Damit können zuerst Daten an mehrere CAN Slaves gesendet und per SYNC aktualisiert werden .
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
    Bei einem synchronen PDO werden die Daten erst gepuffert und bei Empfang eines SYNC aktualisiert (siehe Abb).
  • Bei einem ereignisgesteuerten Type werden die Daten sofort aktualisiert, wenn sie empfangen werden.

Bus synchronization and actuation

Subindex 03h enthält die Sperrzeit in 100 μs. Der Wert 0 deaktiviert.
Der Wert kann nicht geändert werden,wenn das PDO aktiv ist (Bit 31 des Subindex 01h =0 ).
Für Empfangs-PDOs ist der Parameter nicht verwendet

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1400h
  • PDO 2 - Index 1401h
  • PDO 3 - Index 1402h
  • PDO 4 - Index 1403h
  • PDO 5 - Index 1404h
  • PDO 6 - Index 1405h
  • PDO 7 - Index 1406h
  • PDO 8 - Index 1414h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1404.01h RxPDO5 Kommunikationsparameter - COB-ID benutzt durch RxPDO 5

Name | COP_RxPDO5_CommunicationParameter_CobId
Bezeichnung | RxPDO5 Kommunikationsparameter - COB-ID benutzt durch RxPDO 5
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | C0000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_CobId(pdo_nr,cob_id)
Querverweis | COP_RxPDO5_CommunicationParameter_HighestSubindexSupported, COP_RxPDO5_CommunicationParameter_TransmissionType, COP_RxPDO5_CommunicationParameter_InhibitTime

Beschreibung

Subindex 01h setzt die COB-ID vom RxPDO.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1404.02h RxPDO5 Kommunikationsparameter - Typ der Transmission

Name | COP_RxPDO5_CommunicationParameter_TransmissionType
Bezeichnung | RxPDO5 Kommunikationsparameter - Typ der Transmission
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_TransmissionType(pdo_nr,type)
Querverweis | COP_RxPDO5_CommunicationParameter_HighestSubindexSupported, COP_RxPDO5_CommunicationParameter_CobId, COP_RxPDO5_CommunicationParameter_InhibitTime

Beschreibung

Subindex 02h definiert die Übertragungsart vom RxPDO.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1404.03h RxPDO5 Kommunikationsparameter - Inhibit-time

Name | COP_RxPDO5_CommunicationParameter_InhibitTime
Bezeichnung | RxPDO5 Kommunikationsparameter - Inhibit-time
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [100us]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_InhibitTime(pdo_nr,t_ms)
Querverweis | COP_RxPDO5_CommunicationParameter_HighestSubindexSupported, COP_RxPDO5_CommunicationParameter_CobId, COP_RxPDO5_CommunicationParameter_TransmissionType

Beschreibung

Subindex 03h enthält die Sperrzeit in 100 μs.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - RxPDO-6 Kommunikationsparameter

1405.00h | COP_RxPDO6_CommunicationParameter_HighestSubindexSupported | RxPDO6 Kommunikationsparameter - Höchster unterstützter Subindex
1405.01h | COP_RxPDO6_CommunicationParameter_CobId | RxPDO6 Kommunikationsparameter - COB-ID benutzt durch RxPDO 6
1405.02h | COP_RxPDO6_CommunicationParameter_TransmissionType | RxPDO6 Kommunikationsparameter - Typ der Transmission
1405.03h | COP_RxPDO6_CommunicationParameter_InhibitTime | RxPDO6 Kommunikationsparameter - Inhibit-time


1405.00h RxPDO6 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_RxPDO6_CommunicationParameter_HighestSubindexSupported
Bezeichnung | RxPDO6 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO6_CommunicationParameter_CobId, COP_RxPDO6_CommunicationParameter_TransmissionType, COP_RxPDO6_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Empfangs-PDOs des Gerätes.

Subindex 00h enthält die Anzahl der Subindizes.

Mit Subindex 01h wird die COB-ID des RxPDOs eingestellt (siehe Abb und Tabelle).

Structure of RxPDO COB-ID

Beschreibung des RxPDO COB-ID:

Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID (CAN base frame) 29-bit CAN-ID (CAN extended frame)
11..28 | x | 29-bit CAN-ID vom CAN extended frame
0..10 | x | 11-bit CAN-ID vom CAN base frame

Mit dem Bit 31 können PDOs an- und abgeschaltet werden im NMT State Operational. Es können damit PDO konfiguriert sein, aber nicht verwendet. Die Funktion ist nötig für CANopen Geräte, welche mehr als 4 PDOs unterstützen, denn einem CANopen-Gerät sind per default nur 4 PDOs zugeordnet (pre-defined connection set).
Die COB ID kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für RxPDO:
Index | Default value
1400h | CAN-ID: 200h + Node-ID frame: 0b RTR: 1b valid: 0b
1401h | CAN-ID: 300h + Node-ID frame: 0b RTR: 1b valid: 0b
1402h | CAN-ID: 400h + Node-ID frame: 0b RTR: 1b valid: 0b
1403h | CAN-ID: 500h + Node-ID frame: 0b RTR: 1b valid: 0b
1404h - 1406h and 1414h | CAN-ID: 000h frame: 0b RTR: 1b valid: 1b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom RxPDO fest (siehe).

Beschreibung RxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO zuerst zwar empfangen wird (vor einem SYNC), aber erst bei Empfang der SYNC Message intern verarbeitet / aktualisiert wird. Damit können zuerst Daten an mehrere CAN Slaves gesendet und per SYNC aktualisiert werden .
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
    Bei einem synchronen PDO werden die Daten erst gepuffert und bei Empfang eines SYNC aktualisiert (siehe Abb).
  • Bei einem ereignisgesteuerten Type werden die Daten sofort aktualisiert, wenn sie empfangen werden.

Bus synchronization and actuation

Subindex 03h enthält die Sperrzeit in 100 μs. Der Wert 0 deaktiviert.
Der Wert kann nicht geändert werden,wenn das PDO aktiv ist (Bit 31 des Subindex 01h =0 ).
Für Empfangs-PDOs ist der Parameter nicht verwendet

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1400h
  • PDO 2 - Index 1401h
  • PDO 3 - Index 1402h
  • PDO 4 - Index 1403h
  • PDO 5 - Index 1404h
  • PDO 6 - Index 1405h
  • PDO 7 - Index 1406h
  • PDO 8 - Index 1414h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1405.01h RxPDO6 Kommunikationsparameter - COB-ID benutzt durch RxPDO 6

Name | COP_RxPDO6_CommunicationParameter_CobId
Bezeichnung | RxPDO6 Kommunikationsparameter - COB-ID benutzt durch RxPDO 6
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | C0000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_CobId(pdo_nr,cob_id)
Querverweis | COP_RxPDO6_CommunicationParameter_HighestSubindexSupported, COP_RxPDO6_CommunicationParameter_TransmissionType, COP_RxPDO6_CommunicationParameter_InhibitTime

Beschreibung

Subindex 01h setzt die COB-ID vom RxPDO.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1405.02h RxPDO6 Kommunikationsparameter - Typ der Transmission

Name | COP_RxPDO6_CommunicationParameter_TransmissionType
Bezeichnung | RxPDO6 Kommunikationsparameter - Typ der Transmission
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_TransmissionType(pdo_nr,type)
Querverweis | COP_RxPDO6_CommunicationParameter_HighestSubindexSupported, COP_RxPDO6_CommunicationParameter_CobId, COP_RxPDO6_CommunicationParameter_InhibitTime

Beschreibung

Subindex 02h definiert die Übertragungsart vom RxPDO.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1405.03h RxPDO6 Kommunikationsparameter - Inhibit-time

Name | COP_RxPDO6_CommunicationParameter_InhibitTime
Bezeichnung | RxPDO6 Kommunikationsparameter - Inhibit-time
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [100us]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_InhibitTime(pdo_nr,t_ms)
Querverweis | COP_RxPDO6_CommunicationParameter_HighestSubindexSupported, COP_RxPDO6_CommunicationParameter_CobId, COP_RxPDO6_CommunicationParameter_TransmissionType

Beschreibung

Subindex 03h enthält die Sperrzeit in 100 μs.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - RxPDO-7 Kommunikationsparameter

1406.00h | COP_RxPDO7_CommunicationParameter_HighestSubindexSupported | RxPDO7 Kommunikationsparameter - Höchster unterstützter Subindex
1406.01h | COP_RxPDO7_CommunicationParameter_CobId | RxPDO7 Kommunikationsparameter - COB-ID benutzt durch RxPDO 7
1406.02h | COP_RxPDO7_CommunicationParameter_TransmissionType | RxPDO7 Kommunikationsparameter - Typ der Transmission
1406.03h | COP_RxPDO7_CommunicationParameter_InhibitTime | RxPDO7 Kommunikationsparameter - Inhibit-time


1406.00h RxPDO7 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_RxPDO7_CommunicationParameter_HighestSubindexSupported
Bezeichnung | RxPDO7 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO7_CommunicationParameter_CobId, COP_RxPDO7_CommunicationParameter_TransmissionType, COP_RxPDO7_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Empfangs-PDOs des Gerätes.

Subindex 00h enthält die Anzahl der Subindizes.

Mit Subindex 01h wird die COB-ID des RxPDOs eingestellt (siehe Abb und Tabelle).

Structure of RxPDO COB-ID

Beschreibung des RxPDO COB-ID:

Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID (CAN base frame) 29-bit CAN-ID (CAN extended frame)
11..28 | x | 29-bit CAN-ID vom CAN extended frame
0..10 | x | 11-bit CAN-ID vom CAN base frame

Mit dem Bit 31 können PDOs an- und abgeschaltet werden im NMT State Operational. Es können damit PDO konfiguriert sein, aber nicht verwendet. Die Funktion ist nötig für CANopen Geräte, welche mehr als 4 PDOs unterstützen, denn einem CANopen-Gerät sind per default nur 4 PDOs zugeordnet (pre-defined connection set).
Die COB ID kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für RxPDO:
Index | Default value
1400h | CAN-ID: 200h + Node-ID frame: 0b RTR: 1b valid: 0b
1401h | CAN-ID: 300h + Node-ID frame: 0b RTR: 1b valid: 0b
1402h | CAN-ID: 400h + Node-ID frame: 0b RTR: 1b valid: 0b
1403h | CAN-ID: 500h + Node-ID frame: 0b RTR: 1b valid: 0b
1404h - 1406h and 1414h | CAN-ID: 000h frame: 0b RTR: 1b valid: 1b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom RxPDO fest (siehe).

Beschreibung RxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO zuerst zwar empfangen wird (vor einem SYNC), aber erst bei Empfang der SYNC Message intern verarbeitet / aktualisiert wird. Damit können zuerst Daten an mehrere CAN Slaves gesendet und per SYNC aktualisiert werden .
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
    Bei einem synchronen PDO werden die Daten erst gepuffert und bei Empfang eines SYNC aktualisiert (siehe Abb).
  • Bei einem ereignisgesteuerten Type werden die Daten sofort aktualisiert, wenn sie empfangen werden.

Bus synchronization and actuation

Subindex 03h enthält die Sperrzeit in 100 μs. Der Wert 0 deaktiviert.
Der Wert kann nicht geändert werden,wenn das PDO aktiv ist (Bit 31 des Subindex 01h =0 ).
Für Empfangs-PDOs ist der Parameter nicht verwendet

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1400h
  • PDO 2 - Index 1401h
  • PDO 3 - Index 1402h
  • PDO 4 - Index 1403h
  • PDO 5 - Index 1404h
  • PDO 6 - Index 1405h
  • PDO 7 - Index 1406h
  • PDO 8 - Index 1414h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1406.01h RxPDO7 Kommunikationsparameter - COB-ID benutzt durch RxPDO 7

Name | COP_RxPDO7_CommunicationParameter_CobId
Bezeichnung | RxPDO7 Kommunikationsparameter - COB-ID benutzt durch RxPDO 7
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | C0000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_CobId(pdo_nr,cob_id)
Querverweis | COP_RxPDO7_CommunicationParameter_HighestSubindexSupported, COP_RxPDO7_CommunicationParameter_TransmissionType, COP_RxPDO7_CommunicationParameter_InhibitTime

Beschreibung

Subindex 01h setzt die COB-ID vom RxPDO.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1406.02h RxPDO7 Kommunikationsparameter - Typ der Transmission

Name | COP_RxPDO7_CommunicationParameter_TransmissionType
Bezeichnung | RxPDO7 Kommunikationsparameter - Typ der Transmission
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_TransmissionType(pdo_nr,type)
Querverweis | COP_RxPDO7_CommunicationParameter_HighestSubindexSupported, COP_RxPDO7_CommunicationParameter_CobId, COP_RxPDO7_CommunicationParameter_InhibitTime

Beschreibung

Subindex 02h definiert die Übertragungsart vom RxPDO.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1406.03h RxPDO7 Kommunikationsparameter - Inhibit-time

Name | COP_RxPDO7_CommunicationParameter_InhibitTime
Bezeichnung | RxPDO7 Kommunikationsparameter - Inhibit-time
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [100us]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_InhibitTime(pdo_nr,t_ms)
Querverweis | COP_RxPDO7_CommunicationParameter_HighestSubindexSupported, COP_RxPDO7_CommunicationParameter_CobId, COP_RxPDO7_CommunicationParameter_TransmissionType

Beschreibung

Subindex 03h enthält die Sperrzeit in 100 μs.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - RxPDO-21 Kommunikationsparameter

1414.00h | COP_RxPDO21_CommunicationParameter_HighestSubindexSupported | RxPDO21 Kommunikationsparameter - Höchster unterstützter Subindex
1414.01h | COP_RxPDO21_CommunicationParameter_CobId | RxPDO21 Kommunikationsparameter - COB-ID benutzt durch RxPDO 21
1414.02h | COP_RxPDO21_CommunicationParameter_TransmissionType | RxPDO21 Kommunikationsparameter - Typ der Transmission
1414.03h | COP_RxPDO21_CommunicationParameter_InhibitTime | RxPDO21 Kommunikationsparameter - Inhibit-time


1414.00h RxPDO21 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_RxPDO21_CommunicationParameter_HighestSubindexSupported
Bezeichnung | RxPDO21 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO21_CommunicationParameter_CobId, COP_RxPDO21_CommunicationParameter_TransmissionType, COP_RxPDO21_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Empfangs-PDOs des Gerätes.

Subindex 00h enthält die Anzahl der Subindizes.

Mit Subindex 01h wird die COB-ID des RxPDOs eingestellt (siehe Abb und Tabelle).

Structure of RxPDO COB-ID

Beschreibung des RxPDO COB-ID:

Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID (CAN base frame) 29-bit CAN-ID (CAN extended frame)
11..28 | x | 29-bit CAN-ID vom CAN extended frame
0..10 | x | 11-bit CAN-ID vom CAN base frame

Mit dem Bit 31 können PDOs an- und abgeschaltet werden im NMT State Operational. Es können damit PDO konfiguriert sein, aber nicht verwendet. Die Funktion ist nötig für CANopen Geräte, welche mehr als 4 PDOs unterstützen, denn einem CANopen-Gerät sind per default nur 4 PDOs zugeordnet (pre-defined connection set).
Die COB ID kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für RxPDO:
Index | Default value
1400h | CAN-ID: 200h + Node-ID frame: 0b RTR: 1b valid: 0b
1401h | CAN-ID: 300h + Node-ID frame: 0b RTR: 1b valid: 0b
1402h | CAN-ID: 400h + Node-ID frame: 0b RTR: 1b valid: 0b
1403h | CAN-ID: 500h + Node-ID frame: 0b RTR: 1b valid: 0b
1404h - 1406h and 1414h | CAN-ID: 000h frame: 0b RTR: 1b valid: 1b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom RxPDO fest (siehe).

Beschreibung RxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO zuerst zwar empfangen wird (vor einem SYNC), aber erst bei Empfang der SYNC Message intern verarbeitet / aktualisiert wird. Damit können zuerst Daten an mehrere CAN Slaves gesendet und per SYNC aktualisiert werden .
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
    Bei einem synchronen PDO werden die Daten erst gepuffert und bei Empfang eines SYNC aktualisiert (siehe Abb).
  • Bei einem ereignisgesteuerten Type werden die Daten sofort aktualisiert, wenn sie empfangen werden.

Bus synchronization and actuation

Subindex 03h enthält die Sperrzeit in 100 μs. Der Wert 0 deaktiviert.
Der Wert kann nicht geändert werden,wenn das PDO aktiv ist (Bit 31 des Subindex 01h =0 ).
Für Empfangs-PDOs ist der Parameter nicht verwendet

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1400h
  • PDO 2 - Index 1401h
  • PDO 3 - Index 1402h
  • PDO 4 - Index 1403h
  • PDO 5 - Index 1404h
  • PDO 6 - Index 1405h
  • PDO 7 - Index 1406h
  • PDO 8 - Index 1414h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1414.01h RxPDO21 Kommunikationsparameter - COB-ID benutzt durch RxPDO 21

Name | COP_RxPDO21_CommunicationParameter_CobId
Bezeichnung | RxPDO21 Kommunikationsparameter - COB-ID benutzt durch RxPDO 21
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | C0000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_CobId(pdo_nr,cob_id)
Querverweis | COP_RxPDO21_CommunicationParameter_HighestSubindexSupported, COP_RxPDO21_CommunicationParameter_TransmissionType, COP_RxPDO21_CommunicationParameter_InhibitTime

Beschreibung

Subindex 01h setzt die COB-ID vom RxPDO.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1414.02h RxPDO21 Kommunikationsparameter - Typ der Transmission

Name | COP_RxPDO21_CommunicationParameter_TransmissionType
Bezeichnung | RxPDO21 Kommunikationsparameter - Typ der Transmission
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_TransmissionType(pdo_nr,type)
Querverweis | COP_RxPDO21_CommunicationParameter_HighestSubindexSupported, COP_RxPDO21_CommunicationParameter_CobId, COP_RxPDO21_CommunicationParameter_InhibitTime

Beschreibung

Subindex 02h definiert die Übertragungsart vom RxPDO.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1414.03h RxPDO21 Kommunikationsparameter - Inhibit-time

Name | COP_RxPDO21_CommunicationParameter_InhibitTime
Bezeichnung | RxPDO21 Kommunikationsparameter - Inhibit-time
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [100us]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamRxPdo_InhibitTime(pdo_nr,t_ms)
Querverweis | COP_RxPDO21_CommunicationParameter_HighestSubindexSupported, COP_RxPDO21_CommunicationParameter_CobId, COP_RxPDO21_CommunicationParameter_TransmissionType

Beschreibung

Subindex 03h enthält die Sperrzeit in 100 μs.

Beschreibung siehe COP_RxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1600.00h RxPDO1 Mapping - Anzahl der gemappten Obiekte in RxPDO 1

Name | COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | RxPDO1 Mapping - Anzahl der gemappten Obiekte in RxPDO 1
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 01h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingRxPdo(pdo_nr, mapp_list)
Querverweis | COP_RxPDO1_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Empfangs-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

RxPDO Mapping Werte:

Value | Description
00h | Mapping aus
01 bis 08 | Anzahl der Mappingeinträge
Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of RxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des RxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des RxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Empfängt das Gerät ein PDO, was mehr Bytes enhält, als gemappt wurden, wird nur die Anzahl der gemappten Bytes verwendet und eine EMCY-Messages erzeugt.
Enthält ein PDO weniger Bytes, als gemappt wurden, generiert das CANopen-Gerät eine EMCY-Message mit dem Error code 8210h.

Principle of RxPDO mapping

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1600h
  • PDO 2 - Index 1601h
  • PDO 3 - Index 1602h
  • PDO 4 - Index 1603h
  • PDO 5 - Index 1604h
  • PDO 6 - Index 1605h
  • PDO 7 - Index 1606h
  • PDO 8 - Index 1614h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1600.01h RxPDO1 Mapping - Erstes gemapptes Objekt

Name | COP_RxPDO1_Mapping_1ApplicationObject
Bezeichnung | RxPDO1 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 60400010h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - RxPDO-2 Mapping

1601.00h | COP_RxPDO2_Mapping_NumberOfMappedApplicationObjects | RxPDO2 Mapping - Anzahl der gemappten Obiekte in RxPDO 2
1601.01h | COP_RxPDO2_Mapping_1ApplicationObject | RxPDO2 Mapping - Erstes gemapptes Objekt
1601.02h | COP_RxPDO2_Mapping_2ApplicationObject | RxPDO2 Mapping - Zweites gemapptes Objekt
1601.03h | COP_RxPDO2_Mapping_3ApplicationObject | RxPDO2 Mapping - Drittes gemapptes Objekt
1601.04h | COP_RxPDO2_Mapping_4ApplicationObject | RxPDO2 Mapping - Viertes gemapptes Objekt
1601.05h | COP_RxPDO2_Mapping_5ApplicationObject | RxPDO2 Mapping - Fünftes gemapptes Objekt
1601.06h | COP_RxPDO2_Mapping_6ApplicationObject | RxPDO2 Mapping - Sechstes gemapptes Objekt
1601.07h | COP_RxPDO2_Mapping_7ApplicationObject | RxPDO2 Mapping - Siebtes gemapptes Objekt
1601.08h | COP_RxPDO2_Mapping_8ApplicationObject | RxPDO2 Mapping - Achtes gemapptes Objekt


1601.00h RxPDO2 Mapping - Anzahl der gemappten Obiekte in RxPDO 2

Name | COP_RxPDO2_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | RxPDO2 Mapping - Anzahl der gemappten Obiekte in RxPDO 2
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingRxPdo(pdo_nr, mapp_list)
Querverweis | COP_RxPDO2_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Empfangs-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

RxPDO Mapping Werte:

Value | Description
00h | Mapping aus
01 bis 08 | Anzahl der Mappingeinträge
Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of RxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des RxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des RxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Empfängt das Gerät ein PDO, was mehr Bytes enhält, als gemappt wurden, wird nur die Anzahl der gemappten Bytes verwendet und eine EMCY-Messages erzeugt.
Enthält ein PDO weniger Bytes, als gemappt wurden, generiert das CANopen-Gerät eine EMCY-Message mit dem Error code 8210h.

Principle of RxPDO mapping

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1600h
  • PDO 2 - Index 1601h
  • PDO 3 - Index 1602h
  • PDO 4 - Index 1603h
  • PDO 5 - Index 1604h
  • PDO 6 - Index 1605h
  • PDO 7 - Index 1606h
  • PDO 8 - Index 1614h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1601.01h RxPDO2 Mapping - Erstes gemapptes Objekt

Name | COP_RxPDO2_Mapping_1ApplicationObject
Bezeichnung | RxPDO2 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO2_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1601.02h RxPDO2 Mapping - Zweites gemapptes Objekt

Name | COP_RxPDO2_Mapping_2ApplicationObject
Bezeichnung | RxPDO2 Mapping - Zweites gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO2_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1601.03h RxPDO2 Mapping - Drittes gemapptes Objekt

Name | COP_RxPDO2_Mapping_3ApplicationObject
Bezeichnung | RxPDO2 Mapping - Drittes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO2_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1601.04h RxPDO2 Mapping - Viertes gemapptes Objekt

Name | COP_RxPDO2_Mapping_4ApplicationObject
Bezeichnung | RxPDO2 Mapping - Viertes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO2_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1601.05h RxPDO2 Mapping - Fünftes gemapptes Objekt

Name | COP_RxPDO2_Mapping_5ApplicationObject
Bezeichnung | RxPDO2 Mapping - Fünftes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO2_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1601.06h RxPDO2 Mapping - Sechstes gemapptes Objekt

Name | COP_RxPDO2_Mapping_6ApplicationObject
Bezeichnung | RxPDO2 Mapping - Sechstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO2_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1601.07h RxPDO2 Mapping - Siebtes gemapptes Objekt

Name | COP_RxPDO2_Mapping_7ApplicationObject
Bezeichnung | RxPDO2 Mapping - Siebtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO2_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1601.08h RxPDO2 Mapping - Achtes gemapptes Objekt

Name | COP_RxPDO2_Mapping_8ApplicationObject
Bezeichnung | RxPDO2 Mapping - Achtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO2_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - RxPDO-3 Mapping

1602.00h | COP_RxPDO3_Mapping_NumberOfMappedApplicationObjects | RxPDO3 Mapping - Anzahl der gemappten Obiekte in RxPDO 3
1602.01h | COP_RxPDO3_Mapping_1ApplicationObject | RxPDO3 Mapping - Erstes gemapptes Objekt
1602.02h | COP_RxPDO3_Mapping_2ApplicationObject | RxPDO3 Mapping - Zweites gemapptes Objekt
1602.03h | COP_RxPDO3_Mapping_3ApplicationObject | RxPDO3 Mapping - Drittes gemapptes Objekt
1602.04h | COP_RxPDO3_Mapping_4ApplicationObject | RxPDO3 Mapping - Viertes gemapptes Objekt
1602.05h | COP_RxPDO3_Mapping_5ApplicationObject | RxPDO3 Mapping - Fünftes gemapptes Objekt
1602.06h | COP_RxPDO3_Mapping_6ApplicationObject | RxPDO3 Mapping - Sechstes gemapptes Objekt
1602.07h | COP_RxPDO3_Mapping_7ApplicationObject | RxPDO3 Mapping - Siebtes gemapptes Objekt
1602.08h | COP_RxPDO3_Mapping_8ApplicationObject | RxPDO3 Mapping - Achtes gemapptes Objekt


1602.00h RxPDO3 Mapping - Anzahl der gemappten Obiekte in RxPDO 3

Name | COP_RxPDO3_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | RxPDO3 Mapping - Anzahl der gemappten Obiekte in RxPDO 3
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingRxPdo(pdo_nr, mapp_list)
Querverweis | COP_RxPDO3_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Empfangs-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

RxPDO Mapping Werte:

Value | Description
00h | Mapping aus
01 bis 08 | Anzahl der Mappingeinträge
Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of RxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des RxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des RxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Empfängt das Gerät ein PDO, was mehr Bytes enhält, als gemappt wurden, wird nur die Anzahl der gemappten Bytes verwendet und eine EMCY-Messages erzeugt.
Enthält ein PDO weniger Bytes, als gemappt wurden, generiert das CANopen-Gerät eine EMCY-Message mit dem Error code 8210h.

Principle of RxPDO mapping

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1600h
  • PDO 2 - Index 1601h
  • PDO 3 - Index 1602h
  • PDO 4 - Index 1603h
  • PDO 5 - Index 1604h
  • PDO 6 - Index 1605h
  • PDO 7 - Index 1606h
  • PDO 8 - Index 1614h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1602.01h RxPDO3 Mapping - Erstes gemapptes Objekt

Name | COP_RxPDO3_Mapping_1ApplicationObject
Bezeichnung | RxPDO3 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO3_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1602.02h RxPDO3 Mapping - Zweites gemapptes Objekt

Name | COP_RxPDO3_Mapping_2ApplicationObject
Bezeichnung | RxPDO3 Mapping - Zweites gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO3_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1602.03h RxPDO3 Mapping - Drittes gemapptes Objekt

Name | COP_RxPDO3_Mapping_3ApplicationObject
Bezeichnung | RxPDO3 Mapping - Drittes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO3_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1602.04h RxPDO3 Mapping - Viertes gemapptes Objekt

Name | COP_RxPDO3_Mapping_4ApplicationObject
Bezeichnung | RxPDO3 Mapping - Viertes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO3_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1602.05h RxPDO3 Mapping - Fünftes gemapptes Objekt

Name | COP_RxPDO3_Mapping_5ApplicationObject
Bezeichnung | RxPDO3 Mapping - Fünftes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO3_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1602.06h RxPDO3 Mapping - Sechstes gemapptes Objekt

Name | COP_RxPDO3_Mapping_6ApplicationObject
Bezeichnung | RxPDO3 Mapping - Sechstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO3_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1602.07h RxPDO3 Mapping - Siebtes gemapptes Objekt

Name | COP_RxPDO3_Mapping_7ApplicationObject
Bezeichnung | RxPDO3 Mapping - Siebtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO3_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1602.08h RxPDO3 Mapping - Achtes gemapptes Objekt

Name | COP_RxPDO3_Mapping_8ApplicationObject
Bezeichnung | RxPDO3 Mapping - Achtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO3_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - RxPDO-4 Mapping

1603.00h | COP_RxPDO4_Mapping_NumberOfMappedApplicationObjects | RxPDO4 Mapping - Anzahl der gemappten Obiekte in RxPDO 4
1603.01h | COP_RxPDO4_Mapping_1ApplicationObject | RxPDO4 Mapping - Erstes gemapptes Objekt
1603.02h | COP_RxPDO4_Mapping_2ApplicationObject | RxPDO4 Mapping - Zweites gemapptes Objekt
1603.03h | COP_RxPDO4_Mapping_3ApplicationObject | RxPDO4 Mapping - Drittes gemapptes Objekt
1603.04h | COP_RxPDO4_Mapping_4ApplicationObject | RxPDO4 Mapping - Viertes gemapptes Objekt
1603.05h | COP_RxPDO4_Mapping_5ApplicationObject | RxPDO4 Mapping - Fünftes gemapptes Objekt
1603.06h | COP_RxPDO4_Mapping_6ApplicationObject | RxPDO4 Mapping - Sechstes gemapptes Objekt
1603.07h | COP_RxPDO4_Mapping_7ApplicationObject | RxPDO4 Mapping - Siebtes gemapptes Objekt
1603.08h | COP_RxPDO4_Mapping_8ApplicationObject | RxPDO4 Mapping - Achtes gemapptes Objekt


1603.00h RxPDO4 Mapping - Anzahl der gemappten Obiekte in RxPDO 4

Name | COP_RxPDO4_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | RxPDO4 Mapping - Anzahl der gemappten Obiekte in RxPDO 4
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingRxPdo(pdo_nr, mapp_list)
Querverweis | COP_RxPDO4_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Empfangs-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

RxPDO Mapping Werte:

Value | Description
00h | Mapping aus
01 bis 08 | Anzahl der Mappingeinträge
Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of RxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des RxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des RxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Empfängt das Gerät ein PDO, was mehr Bytes enhält, als gemappt wurden, wird nur die Anzahl der gemappten Bytes verwendet und eine EMCY-Messages erzeugt.
Enthält ein PDO weniger Bytes, als gemappt wurden, generiert das CANopen-Gerät eine EMCY-Message mit dem Error code 8210h.

Principle of RxPDO mapping

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1600h
  • PDO 2 - Index 1601h
  • PDO 3 - Index 1602h
  • PDO 4 - Index 1603h
  • PDO 5 - Index 1604h
  • PDO 6 - Index 1605h
  • PDO 7 - Index 1606h
  • PDO 8 - Index 1614h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1603.01h RxPDO4 Mapping - Erstes gemapptes Objekt

Name | COP_RxPDO4_Mapping_1ApplicationObject
Bezeichnung | RxPDO4 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO4_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1603.02h RxPDO4 Mapping - Zweites gemapptes Objekt

Name | COP_RxPDO4_Mapping_2ApplicationObject
Bezeichnung | RxPDO4 Mapping - Zweites gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO4_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1603.03h RxPDO4 Mapping - Drittes gemapptes Objekt

Name | COP_RxPDO4_Mapping_3ApplicationObject
Bezeichnung | RxPDO4 Mapping - Drittes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO4_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1603.04h RxPDO4 Mapping - Viertes gemapptes Objekt

Name | COP_RxPDO4_Mapping_4ApplicationObject
Bezeichnung | RxPDO4 Mapping - Viertes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO4_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1603.05h RxPDO4 Mapping - Fünftes gemapptes Objekt

Name | COP_RxPDO4_Mapping_5ApplicationObject
Bezeichnung | RxPDO4 Mapping - Fünftes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO4_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1603.06h RxPDO4 Mapping - Sechstes gemapptes Objekt

Name | COP_RxPDO4_Mapping_6ApplicationObject
Bezeichnung | RxPDO4 Mapping - Sechstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO4_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1603.07h RxPDO4 Mapping - Siebtes gemapptes Objekt

Name | COP_RxPDO4_Mapping_7ApplicationObject
Bezeichnung | RxPDO4 Mapping - Siebtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO4_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1603.08h RxPDO4 Mapping - Achtes gemapptes Objekt

Name | COP_RxPDO4_Mapping_8ApplicationObject
Bezeichnung | RxPDO4 Mapping - Achtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO4_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - RxPDO-5 Mapping

1604.00h | COP_RxPDO5_Mapping_NumberOfMappedApplicationObjects | RxPDO5 Mapping - Anzahl der gemappten Obiekte in RxPDO 5
1604.01h | COP_RxPDO5_Mapping_1ApplicationObject | RxPDO5 Mapping - Erstes gemapptes Objekt
1604.02h | COP_RxPDO5_Mapping_2ApplicationObject | RxPDO5 Mapping - Zweites gemapptes Objekt
1604.03h | COP_RxPDO5_Mapping_3ApplicationObject | RxPDO5 Mapping - Drittes gemapptes Objekt
1604.04h | COP_RxPDO5_Mapping_4ApplicationObject | RxPDO5 Mapping - Viertes gemapptes Objekt
1604.05h | COP_RxPDO5_Mapping_5ApplicationObject | RxPDO5 Mapping - Fünftes gemapptes Objekt
1604.06h | COP_RxPDO5_Mapping_6ApplicationObject | RxPDO5 Mapping - Sechstes gemapptes Objekt
1604.07h | COP_RxPDO5_Mapping_7ApplicationObject | RxPDO5 Mapping - Siebtes gemapptes Objekt
1604.08h | COP_RxPDO5_Mapping_8ApplicationObject | RxPDO5 Mapping - Achtes gemapptes Objekt


1604.00h RxPDO5 Mapping - Anzahl der gemappten Obiekte in RxPDO 5

Name | COP_RxPDO5_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | RxPDO5 Mapping - Anzahl der gemappten Obiekte in RxPDO 5
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingRxPdo(pdo_nr, mapp_list)
Querverweis | COP_RxPDO5_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Empfangs-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

RxPDO Mapping Werte:

Value | Description
00h | Mapping aus
01 bis 08 | Anzahl der Mappingeinträge
Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of RxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des RxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des RxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Empfängt das Gerät ein PDO, was mehr Bytes enhält, als gemappt wurden, wird nur die Anzahl der gemappten Bytes verwendet und eine EMCY-Messages erzeugt.
Enthält ein PDO weniger Bytes, als gemappt wurden, generiert das CANopen-Gerät eine EMCY-Message mit dem Error code 8210h.

Principle of RxPDO mapping

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1600h
  • PDO 2 - Index 1601h
  • PDO 3 - Index 1602h
  • PDO 4 - Index 1603h
  • PDO 5 - Index 1604h
  • PDO 6 - Index 1605h
  • PDO 7 - Index 1606h
  • PDO 8 - Index 1614h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1604.01h RxPDO5 Mapping - Erstes gemapptes Objekt

Name | COP_RxPDO5_Mapping_1ApplicationObject
Bezeichnung | RxPDO5 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO5_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1604.02h RxPDO5 Mapping - Zweites gemapptes Objekt

Name | COP_RxPDO5_Mapping_2ApplicationObject
Bezeichnung | RxPDO5 Mapping - Zweites gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO5_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1604.03h RxPDO5 Mapping - Drittes gemapptes Objekt

Name | COP_RxPDO5_Mapping_3ApplicationObject
Bezeichnung | RxPDO5 Mapping - Drittes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO5_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1604.04h RxPDO5 Mapping - Viertes gemapptes Objekt

Name | COP_RxPDO5_Mapping_4ApplicationObject
Bezeichnung | RxPDO5 Mapping - Viertes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO5_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1604.05h RxPDO5 Mapping - Fünftes gemapptes Objekt

Name | COP_RxPDO5_Mapping_5ApplicationObject
Bezeichnung | RxPDO5 Mapping - Fünftes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO5_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1604.06h RxPDO5 Mapping - Sechstes gemapptes Objekt

Name | COP_RxPDO5_Mapping_6ApplicationObject
Bezeichnung | RxPDO5 Mapping - Sechstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO5_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1604.07h RxPDO5 Mapping - Siebtes gemapptes Objekt

Name | COP_RxPDO5_Mapping_7ApplicationObject
Bezeichnung | RxPDO5 Mapping - Siebtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO5_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1604.08h RxPDO5 Mapping - Achtes gemapptes Objekt

Name | COP_RxPDO5_Mapping_8ApplicationObject
Bezeichnung | RxPDO5 Mapping - Achtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO5_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - RxPDO-6 Mapping

1605.00h | COP_RxPDO6_Mapping_NumberOfMappedApplicationObjects | RxPDO6 Mapping - Anzahl der gemappten Obiekte in RxPDO 6
1605.01h | COP_RxPDO6_Mapping_1ApplicationObject | RxPDO6 Mapping - Erstes gemapptes Objekt
1605.02h | COP_RxPDO6_Mapping_2ApplicationObject | RxPDO6 Mapping - Zweites gemapptes Objekt
1605.03h | COP_RxPDO6_Mapping_3ApplicationObject | RxPDO6 Mapping - Drittes gemapptes Objekt
1605.04h | COP_RxPDO6_Mapping_4ApplicationObject | RxPDO6 Mapping - Viertes gemapptes Objekt
1605.05h | COP_RxPDO6_Mapping_5ApplicationObject | RxPDO6 Mapping - Fünftes gemapptes Objekt
1605.06h | COP_RxPDO6_Mapping_6ApplicationObject | RxPDO6 Mapping - Sechstes gemapptes Objekt
1605.07h | COP_RxPDO6_Mapping_7ApplicationObject | RxPDO6 Mapping - Siebtes gemapptes Objekt
1605.08h | COP_RxPDO6_Mapping_8ApplicationObject | RxPDO6 Mapping - Achtes gemapptes Objekt


1605.00h RxPDO6 Mapping - Anzahl der gemappten Obiekte in RxPDO 6

Name | COP_RxPDO6_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | RxPDO6 Mapping - Anzahl der gemappten Obiekte in RxPDO 6
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingRxPdo(pdo_nr, mapp_list)
Querverweis | COP_RxPDO6_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Empfangs-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

RxPDO Mapping Werte:

Value | Description
00h | Mapping aus
01 bis 08 | Anzahl der Mappingeinträge
Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of RxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des RxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des RxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Empfängt das Gerät ein PDO, was mehr Bytes enhält, als gemappt wurden, wird nur die Anzahl der gemappten Bytes verwendet und eine EMCY-Messages erzeugt.
Enthält ein PDO weniger Bytes, als gemappt wurden, generiert das CANopen-Gerät eine EMCY-Message mit dem Error code 8210h.

Principle of RxPDO mapping

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1600h
  • PDO 2 - Index 1601h
  • PDO 3 - Index 1602h
  • PDO 4 - Index 1603h
  • PDO 5 - Index 1604h
  • PDO 6 - Index 1605h
  • PDO 7 - Index 1606h
  • PDO 8 - Index 1614h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1605.01h RxPDO6 Mapping - Erstes gemapptes Objekt

Name | COP_RxPDO6_Mapping_1ApplicationObject
Bezeichnung | RxPDO6 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO6_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1605.02h RxPDO6 Mapping - Zweites gemapptes Objekt

Name | COP_RxPDO6_Mapping_2ApplicationObject
Bezeichnung | RxPDO6 Mapping - Zweites gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO6_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1605.03h RxPDO6 Mapping - Drittes gemapptes Objekt

Name | COP_RxPDO6_Mapping_3ApplicationObject
Bezeichnung | RxPDO6 Mapping - Drittes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO6_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1605.04h RxPDO6 Mapping - Viertes gemapptes Objekt

Name | COP_RxPDO6_Mapping_4ApplicationObject
Bezeichnung | RxPDO6 Mapping - Viertes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO6_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1605.05h RxPDO6 Mapping - Fünftes gemapptes Objekt

Name | COP_RxPDO6_Mapping_5ApplicationObject
Bezeichnung | RxPDO6 Mapping - Fünftes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO6_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1605.06h RxPDO6 Mapping - Sechstes gemapptes Objekt

Name | COP_RxPDO6_Mapping_6ApplicationObject
Bezeichnung | RxPDO6 Mapping - Sechstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO6_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1605.07h RxPDO6 Mapping - Siebtes gemapptes Objekt

Name | COP_RxPDO6_Mapping_7ApplicationObject
Bezeichnung | RxPDO6 Mapping - Siebtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO6_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1605.08h RxPDO6 Mapping - Achtes gemapptes Objekt

Name | COP_RxPDO6_Mapping_8ApplicationObject
Bezeichnung | RxPDO6 Mapping - Achtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO6_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - RxPDO-7 Mapping

1606.00h | COP_RxPDO7_Mapping_NumberOfMappedApplicationObjects | RxPDO7 Mapping - Anzahl der gemappten Obiekte in RxPDO 7
1606.01h | COP_RxPDO7_Mapping_1ApplicationObject | RxPDO7 Mapping - Erstes gemapptes Objekt
1606.02h | COP_RxPDO7_Mapping_2ApplicationObject | RxPDO7 Mapping - Zweites gemapptes Objekt
1606.03h | COP_RxPDO7_Mapping_3ApplicationObject | RxPDO7 Mapping - Drittes gemapptes Objekt
1606.04h | COP_RxPDO7_Mapping_4ApplicationObject | RxPDO7 Mapping - Viertes gemapptes Objekt
1606.05h | COP_RxPDO7_Mapping_5ApplicationObject | RxPDO7 Mapping - Fünftes gemapptes Objekt
1606.06h | COP_RxPDO7_Mapping_6ApplicationObject | RxPDO7 Mapping - Sechstes gemapptes Objekt
1606.07h | COP_RxPDO7_Mapping_7ApplicationObject | RxPDO7 Mapping - Siebtes gemapptes Objekt
1606.08h | COP_RxPDO7_Mapping_8ApplicationObject | RxPDO7 Mapping - Achtes gemapptes Objekt


1606.00h RxPDO7 Mapping - Anzahl der gemappten Obiekte in RxPDO 7

Name | COP_RxPDO7_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | RxPDO7 Mapping - Anzahl der gemappten Obiekte in RxPDO 7
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingRxPdo(pdo_nr, mapp_list)
Querverweis | COP_RxPDO7_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Empfangs-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

RxPDO Mapping Werte:

Value | Description
00h | Mapping aus
01 bis 08 | Anzahl der Mappingeinträge
Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of RxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des RxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des RxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Empfängt das Gerät ein PDO, was mehr Bytes enhält, als gemappt wurden, wird nur die Anzahl der gemappten Bytes verwendet und eine EMCY-Messages erzeugt.
Enthält ein PDO weniger Bytes, als gemappt wurden, generiert das CANopen-Gerät eine EMCY-Message mit dem Error code 8210h.

Principle of RxPDO mapping

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1600h
  • PDO 2 - Index 1601h
  • PDO 3 - Index 1602h
  • PDO 4 - Index 1603h
  • PDO 5 - Index 1604h
  • PDO 6 - Index 1605h
  • PDO 7 - Index 1606h
  • PDO 8 - Index 1614h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1606.01h RxPDO7 Mapping - Erstes gemapptes Objekt

Name | COP_RxPDO7_Mapping_1ApplicationObject
Bezeichnung | RxPDO7 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO7_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1606.02h RxPDO7 Mapping - Zweites gemapptes Objekt

Name | COP_RxPDO7_Mapping_2ApplicationObject
Bezeichnung | RxPDO7 Mapping - Zweites gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO7_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1606.03h RxPDO7 Mapping - Drittes gemapptes Objekt

Name | COP_RxPDO7_Mapping_3ApplicationObject
Bezeichnung | RxPDO7 Mapping - Drittes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO7_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1606.04h RxPDO7 Mapping - Viertes gemapptes Objekt

Name | COP_RxPDO7_Mapping_4ApplicationObject
Bezeichnung | RxPDO7 Mapping - Viertes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO7_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1606.05h RxPDO7 Mapping - Fünftes gemapptes Objekt

Name | COP_RxPDO7_Mapping_5ApplicationObject
Bezeichnung | RxPDO7 Mapping - Fünftes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO7_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1606.06h RxPDO7 Mapping - Sechstes gemapptes Objekt

Name | COP_RxPDO7_Mapping_6ApplicationObject
Bezeichnung | RxPDO7 Mapping - Sechstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO7_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1606.07h RxPDO7 Mapping - Siebtes gemapptes Objekt

Name | COP_RxPDO7_Mapping_7ApplicationObject
Bezeichnung | RxPDO7 Mapping - Siebtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO7_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1606.08h RxPDO7 Mapping - Achtes gemapptes Objekt

Name | COP_RxPDO7_Mapping_8ApplicationObject
Bezeichnung | RxPDO7 Mapping - Achtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO7_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - RxPDO-21 Mapping

1614.00h | COP_RxPDO21_Mapping_NumberOfMappedApplicationObjects | RxPDO21 Mapping - Anzahl der gemappten Obiekte in RxPDO 21
1614.01h | COP_RxPDO21_Mapping_1ApplicationObject | RxPDO21 Mapping - Erstes gemapptes Objekt
1614.02h | COP_RxPDO21_Mapping_2ApplicationObject | RxPDO21 Mapping - Zweites gemapptes Objekt
1614.03h | COP_RxPDO21_Mapping_3ApplicationObject | RxPDO21 Mapping - Drittes gemapptes Objekt
1614.04h | COP_RxPDO21_Mapping_4ApplicationObject | RxPDO21 Mapping - Viertes gemapptes Objekt
1614.05h | COP_RxPDO21_Mapping_5ApplicationObject | RxPDO21 Mapping - Fünftes gemapptes Objekt
1614.06h | COP_RxPDO21_Mapping_6ApplicationObject | RxPDO21 Mapping - Sechstes gemapptes Objekt
1614.07h | COP_RxPDO21_Mapping_7ApplicationObject | RxPDO21 Mapping - Siebtes gemapptes Objekt
1614.08h | COP_RxPDO21_Mapping_8ApplicationObject | RxPDO21 Mapping - Achtes gemapptes Objekt


1614.00h RxPDO21 Mapping - Anzahl der gemappten Obiekte in RxPDO 21

Name | COP_RxPDO21_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | RxPDO21 Mapping - Anzahl der gemappten Obiekte in RxPDO 21
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingRxPdo(pdo_nr, mapp_list)
Querverweis | COP_RxPDO21_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Empfangs-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

RxPDO Mapping Werte:

Value | Description
00h | Mapping aus
01 bis 08 | Anzahl der Mappingeinträge
Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of RxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des RxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des RxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden RxPDO Kommunikationsparameter-Einstellungen (COP_RxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Empfängt das Gerät ein PDO, was mehr Bytes enhält, als gemappt wurden, wird nur die Anzahl der gemappten Bytes verwendet und eine EMCY-Messages erzeugt.
Enthält ein PDO weniger Bytes, als gemappt wurden, generiert das CANopen-Gerät eine EMCY-Message mit dem Error code 8210h.

Principle of RxPDO mapping

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1600h
  • PDO 2 - Index 1601h
  • PDO 3 - Index 1602h
  • PDO 4 - Index 1603h
  • PDO 5 - Index 1604h
  • PDO 6 - Index 1605h
  • PDO 7 - Index 1606h
  • PDO 8 - Index 1614h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1614.01h RxPDO21 Mapping - Erstes gemapptes Objekt

Name | COP_RxPDO21_Mapping_1ApplicationObject
Bezeichnung | RxPDO21 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO21_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1614.02h RxPDO21 Mapping - Zweites gemapptes Objekt

Name | COP_RxPDO21_Mapping_2ApplicationObject
Bezeichnung | RxPDO21 Mapping - Zweites gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO21_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1614.03h RxPDO21 Mapping - Drittes gemapptes Objekt

Name | COP_RxPDO21_Mapping_3ApplicationObject
Bezeichnung | RxPDO21 Mapping - Drittes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO21_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1614.04h RxPDO21 Mapping - Viertes gemapptes Objekt

Name | COP_RxPDO21_Mapping_4ApplicationObject
Bezeichnung | RxPDO21 Mapping - Viertes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO21_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1614.05h RxPDO21 Mapping - Fünftes gemapptes Objekt

Name | COP_RxPDO21_Mapping_5ApplicationObject
Bezeichnung | RxPDO21 Mapping - Fünftes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO21_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1614.06h RxPDO21 Mapping - Sechstes gemapptes Objekt

Name | COP_RxPDO21_Mapping_6ApplicationObject
Bezeichnung | RxPDO21 Mapping - Sechstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO21_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1614.07h RxPDO21 Mapping - Siebtes gemapptes Objekt

Name | COP_RxPDO21_Mapping_7ApplicationObject
Bezeichnung | RxPDO21 Mapping - Siebtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO21_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1614.08h RxPDO21 Mapping - Achtes gemapptes Objekt

Name | COP_RxPDO21_Mapping_8ApplicationObject
Bezeichnung | RxPDO21 Mapping - Achtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RxPDO21_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthalten die Informationen der gemappten Objekte. Das Objekt beschreibt den Inhalt eines PDOs mit Index, Subindex und Länge. Die Länge wird in Bit angegeben. Folgende Längen werden unterstützt: 8,16,32 bits.

Siehe auch COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1800.00h TxPDO1 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_TxPDO1_CommunicationParameter_HighestSubindexSupported
Bezeichnung | TxPDO1 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_TxPDO1_CommunicationParameter_CobId, COP_TxPDO1_CommunicationParameter_TransmissionType, COP_TxPDO1_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Sende-PDOs (TxPDO) des Gerätes.

Subindex 00h - Anzahl der Subindexe.
Subindex 01h - COB-ID des TxPDO.
Subindex 02h - Übertragungsart.
Subindex 03h - Sperrzeit (Inhibittime).

Mit Subindex 01h wird die COB-ID des TxPDOs eingestellt (siehe Abb und Tabelle).

Structure of TxPDO COB-ID

Beschreibung des RxPDO COB-ID:
Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID valid (CAN base frame) 29-bit CAN-ID valid (CAN extended frame)
11..28 | x | 29-bit CAN-ID of the CAN extended frame
0..10 | x | 11-bit CAN-ID of the CAN base frame

Mit dem Bit 31 können PDOs an- und abgeschaltet werden im NMT State Operational. Bei gesetztem Bit 31 können PDO konfiguriert werden, aber nicht verwendet. Bei CANopen Geräte, welche mehr als 4 PDOs unterstützen, sind per default nur 4 erste PDOs aktiviert (pre-defined connection set). Die COB ID des PDO's kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für TxPDO:

Index | Default Werte
1800h | CAN-ID: 180h + Node-ID frame: 0b RTR: 0b valid: 0b
1801h | CAN-ID: 280h + Node-ID frame: 0b RTR: 0b valid: 0b
1802h | CAN-ID: 380h + Node-ID frame: 0b RTR: 0b valid: 0b
1803h | CAN-ID: 480h + Node-ID frame: 0b RTR: 0b valid: 0b
1804h - 1806h and 1814h | CAN-ID: 000h frame: 0b RTR: 0b valid: 1b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom TxPDO fest (siehe Tabelle).

Beschreibung TxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron azyklisch
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO nur gesendet wird, wenn ein SYNC Telegramm empfangen wurde.
    Damit kann der Datenverkehr auf dem Bus kontrolliert werden. Weiterhin können die Informationen verschiedener Teilnehmer zeitsynchron empfangen werden.

    PDOs der Übertragungsart 0 arbeiten synchron, aber nicht zyklisch. Ein Gerät, dessen TxPDO auf Übertragungsart 0 konfiguriert ist, ermittelt seine Eingangsdaten beim Empfang des SYNC (synchrones Prozessabbild) und sendet sie anschließend, falls die Daten sich gändert haben. Die Übertragungsart 0 kombiniert also den Sendegrund "ereignisgesteuert" mit dem Sende- (und möglichst Sample-) bzw. Verarbeitungs-Zeitpunkt "SYNC-Empfang".

    Bei Übertragungsart 1-240 wird das PDO zyklisch gesendet: nach jedem "n-ten" SYNC (n=1...240).
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
  • Bei einem ereignisgesteuerten Type, werden die Daten sofort gesendet nach einer Änderung.
    • Hinweis: Bei dieser Übertragungsart kommt es, bei sich schnell ändernden Daten (z.B.: Spannung, Strom , Position) ,
      zu einer sehr hohen Buslast, wodurch der Datenverkehr anderer Teilnehmer (mit niedriger CAN-Priorität) blockiert werden kann.
      Durch Setzen einer Sperrzeit (Inhibittime) kann dies vermieden werden (siehe Subindex 03).

Bus synchronization and sampling

Subindex 03h enthält die Sperrzeit (inhibit time). Die Zeit ist das kürzeste Intervall in dem ein PDO gesendet werden kann, auch wenn sich die Daten schneller ändern.
Dieser Parameter gilt nur bei Übertragungsart 254 und 255. Die Einheit ist ein Vielfaches von 100 μs. Bei unseren Geräten wird die Zeit intern auf volle Milisekunden abgerundet. D.h. kleinste kleinste Sperrzeit ist 1ms (Parameterwert=0..9 -> effektive Sperrzeit=0ms, Parameterwert=10..19 -> effektive Sperrzeit=1ms, Parameterwert=20..29 -> effektive Sperrzeit=2ms, u.s.w.). Der Wert 0 deaktiviert die Sperrzeit.
Bei aktiviertem PDO (Bit 31 von Subindex 01h ist = 0) darf der Parameter nicht geändert werden.

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1800h
  • PDO 2 - Index 1801h
  • PDO 3 - Index 1802h
  • PDO 4 - Index 1803h
  • PDO 5 - Index 1804h
  • PDO 6 - Index 1805h
  • PDO 7 - Index 1806h
  • PDO 8 - Index 1814h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - TxPDO-2 Kommunikationsparameter

1801.00h | COP_TxPDO2_CommunicationParameter_HighestSubindexSupported | TxPDO2 Kommunikationsparameter - Höchster unterstützter Subindex
1801.01h | COP_TxPDO2_CommunicationParameter_CobId | TxPDO2 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1801.02h | COP_TxPDO2_CommunicationParameter_TransmissionType | TxPDO2 Kommunikationsparameter - Typ der Transmission
1801.03h | COP_TxPDO2_CommunicationParameter_InhibitTime | TxPDO2 Kommunikationsparameter - Inhibit-time


1801.00h TxPDO2 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_TxPDO2_CommunicationParameter_HighestSubindexSupported
Bezeichnung | TxPDO2 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_TxPDO2_CommunicationParameter_CobId, COP_TxPDO2_CommunicationParameter_TransmissionType, COP_TxPDO2_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Sende-PDOs (TxPDO) des Gerätes.

Subindex 00h - Anzahl der Subindexe.
Subindex 01h - COB-ID des TxPDO.
Subindex 02h - Übertragungsart.
Subindex 03h - Sperrzeit (Inhibittime).

Mit Subindex 01h wird die COB-ID des TxPDOs eingestellt (siehe Abb und Tabelle).

Structure of TxPDO COB-ID

Beschreibung des RxPDO COB-ID:
Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID valid (CAN base frame) 29-bit CAN-ID valid (CAN extended frame)
11..28 | x | 29-bit CAN-ID of the CAN extended frame
0..10 | x | 11-bit CAN-ID of the CAN base frame

Mit dem Bit 31 können PDOs an- und abgeschaltet werden im NMT State Operational. Bei gesetztem Bit 31 können PDO konfiguriert werden, aber nicht verwendet. Bei CANopen Geräte, welche mehr als 4 PDOs unterstützen, sind per default nur 4 erste PDOs aktiviert (pre-defined connection set). Die COB ID des PDO's kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für TxPDO:

Index | Default Werte
1800h | CAN-ID: 180h + Node-ID frame: 0b RTR: 0b valid: 0b
1801h | CAN-ID: 280h + Node-ID frame: 0b RTR: 0b valid: 0b
1802h | CAN-ID: 380h + Node-ID frame: 0b RTR: 0b valid: 0b
1803h | CAN-ID: 480h + Node-ID frame: 0b RTR: 0b valid: 0b
1804h - 1806h and 1814h | CAN-ID: 000h frame: 0b RTR: 0b valid: 1b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom TxPDO fest (siehe Tabelle).

Beschreibung TxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron azyklisch
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO nur gesendet wird, wenn ein SYNC Telegramm empfangen wurde.
    Damit kann der Datenverkehr auf dem Bus kontrolliert werden. Weiterhin können die Informationen verschiedener Teilnehmer zeitsynchron empfangen werden.

    PDOs der Übertragungsart 0 arbeiten synchron, aber nicht zyklisch. Ein Gerät, dessen TxPDO auf Übertragungsart 0 konfiguriert ist, ermittelt seine Eingangsdaten beim Empfang des SYNC (synchrones Prozessabbild) und sendet sie anschließend, falls die Daten sich gändert haben. Die Übertragungsart 0 kombiniert also den Sendegrund "ereignisgesteuert" mit dem Sende- (und möglichst Sample-) bzw. Verarbeitungs-Zeitpunkt "SYNC-Empfang".

    Bei Übertragungsart 1-240 wird das PDO zyklisch gesendet: nach jedem "n-ten" SYNC (n=1...240).
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
  • Bei einem ereignisgesteuerten Type, werden die Daten sofort gesendet nach einer Änderung.
    • Hinweis: Bei dieser Übertragungsart kommt es, bei sich schnell ändernden Daten (z.B.: Spannung, Strom , Position) ,
      zu einer sehr hohen Buslast, wodurch der Datenverkehr anderer Teilnehmer (mit niedriger CAN-Priorität) blockiert werden kann.
      Durch Setzen einer Sperrzeit (Inhibittime) kann dies vermieden werden (siehe Subindex 03).

Bus synchronization and sampling

Subindex 03h enthält die Sperrzeit (inhibit time). Die Zeit ist das kürzeste Intervall in dem ein PDO gesendet werden kann, auch wenn sich die Daten schneller ändern.
Dieser Parameter gilt nur bei Übertragungsart 254 und 255. Die Einheit ist ein Vielfaches von 100 μs. Bei unseren Geräten wird die Zeit intern auf volle Milisekunden abgerundet. D.h. kleinste kleinste Sperrzeit ist 1ms (Parameterwert=0..9 -> effektive Sperrzeit=0ms, Parameterwert=10..19 -> effektive Sperrzeit=1ms, Parameterwert=20..29 -> effektive Sperrzeit=2ms, u.s.w.). Der Wert 0 deaktiviert die Sperrzeit.
Bei aktiviertem PDO (Bit 31 von Subindex 01h ist = 0) darf der Parameter nicht geändert werden.

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1800h
  • PDO 2 - Index 1801h
  • PDO 3 - Index 1802h
  • PDO 4 - Index 1803h
  • PDO 5 - Index 1804h
  • PDO 6 - Index 1805h
  • PDO 7 - Index 1806h
  • PDO 8 - Index 1814h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1801.01h TxPDO2 Kommunikationsparameter - COB-ID benutzt durch TxPDO

Name | COP_TxPDO2_CommunicationParameter_CobId
Bezeichnung | TxPDO2 Kommunikationsparameter - COB-ID benutzt durch TxPDO
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 280h + NodeId
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_CobId(pdo_nr,cob_id)
Querverweis | COP_TxPDO2_CommunicationParameter_HighestSubindexSupported, COP_TxPDO2_CommunicationParameter_TransmissionType, COP_TxPDO2_CommunicationParameter_InhibitTime

Beschreibung

Subindex 01h bestimmt die COB-ID des TxPDO.

Beschreibung siehe: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1801.02h TxPDO2 Kommunikationsparameter - Typ der Transmission

Name | COP_TxPDO2_CommunicationParameter_TransmissionType
Bezeichnung | TxPDO2 Kommunikationsparameter - Typ der Transmission
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_TransmissionType(pdo_nr,type)
Querverweis | COP_TxPDO2_CommunicationParameter_HighestSubindexSupported, COP_TxPDO2_CommunicationParameter_CobId, COP_TxPDO2_CommunicationParameter_InhibitTime

Beschreibung

Subindex 02h bestimmt die Übertragungsart des TxPDO.

Beschreibung siehe: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1801.03h TxPDO2 Kommunikationsparameter - Inhibit-time

Name | COP_TxPDO2_CommunicationParameter_InhibitTime
Bezeichnung | TxPDO2 Kommunikationsparameter - Inhibit-time
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [100us]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_InhibitTime(pdo_nr,t_ms)
Querverweis | COP_TxPDO2_CommunicationParameter_HighestSubindexSupported, COP_TxPDO2_CommunicationParameter_CobId, COP_TxPDO2_CommunicationParameter_TransmissionType

Beschreibung

Subindex 03h enthält die Sperrzeit (inhibit time). Die Zeit ist das kürzeste Intervall in dem ein PDO gesendet werden kann, auch wenn sich die Daten schneller ändern.
Dieser Parameter gilt nur bei Übertragungsart 254 und 255. Die Einheit ist ein Vielfaches von 100 μs. Bei unseren Geräten wird die Zeit intern auf volle Milisekunden abgerundet. D.h. kleinste kleinste Sperrzeit ist 1ms (Parameterwert=0..9 -> effektive Sperrzeit=0ms, Parameterwert=10..19 -> effektive Sperrzeit=1ms, Parameterwert=20..29 -> effektive Sperrzeit=2ms, u.s.w.). Der Wert 0 deaktiviert die Sperrzeit.
Bei aktiviertem PDO (Bit 31 von Subindex 01h ist = 0) darf der Parameter nicht geändert werden.

Siehe auch: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - TxPDO-3 Kommunikationsparameter

1802.00h | COP_TxPDO3_CommunicationParameter_HighestSubindexSupported | TxPDO3 Kommunikationsparameter - Höchster unterstützter Subindex
1802.01h | COP_TxPDO3_CommunicationParameter_CobId | TxPDO3 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1802.02h | COP_TxPDO3_CommunicationParameter_TransmissionType | TxPDO3 Kommunikationsparameter - Typ der Transmission
1802.03h | COP_TxPDO3_CommunicationParameter_InhibitTime | TxPDO3 Kommunikationsparameter - Inhibit-time


1802.00h TxPDO3 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_TxPDO3_CommunicationParameter_HighestSubindexSupported
Bezeichnung | TxPDO3 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_TxPDO3_CommunicationParameter_CobId, COP_TxPDO3_CommunicationParameter_TransmissionType, COP_TxPDO3_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Sende-PDOs (TxPDO) des Gerätes.

Subindex 00h - Anzahl der Subindexe.
Subindex 01h - COB-ID des TxPDO.
Subindex 02h - Übertragungsart.
Subindex 03h - Sperrzeit (Inhibittime).

Mit Subindex 01h wird die COB-ID des TxPDOs eingestellt (siehe Abb und Tabelle).

Structure of TxPDO COB-ID

Beschreibung des RxPDO COB-ID:
Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID valid (CAN base frame) 29-bit CAN-ID valid (CAN extended frame)
11..28 | x | 29-bit CAN-ID of the CAN extended frame
0..10 | x | 11-bit CAN-ID of the CAN base frame

Mit dem Bit 31 können PDOs an- und abgeschaltet werden im NMT State Operational. Bei gesetztem Bit 31 können PDO konfiguriert werden, aber nicht verwendet. Bei CANopen Geräte, welche mehr als 4 PDOs unterstützen, sind per default nur 4 erste PDOs aktiviert (pre-defined connection set). Die COB ID des PDO's kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für TxPDO:

Index | Default Werte
1800h | CAN-ID: 180h + Node-ID frame: 0b RTR: 0b valid: 0b
1801h | CAN-ID: 280h + Node-ID frame: 0b RTR: 0b valid: 0b
1802h | CAN-ID: 380h + Node-ID frame: 0b RTR: 0b valid: 0b
1803h | CAN-ID: 480h + Node-ID frame: 0b RTR: 0b valid: 0b
1804h - 1806h and 1814h | CAN-ID: 000h frame: 0b RTR: 0b valid: 1b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom TxPDO fest (siehe Tabelle).

Beschreibung TxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron azyklisch
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO nur gesendet wird, wenn ein SYNC Telegramm empfangen wurde.
    Damit kann der Datenverkehr auf dem Bus kontrolliert werden. Weiterhin können die Informationen verschiedener Teilnehmer zeitsynchron empfangen werden.

    PDOs der Übertragungsart 0 arbeiten synchron, aber nicht zyklisch. Ein Gerät, dessen TxPDO auf Übertragungsart 0 konfiguriert ist, ermittelt seine Eingangsdaten beim Empfang des SYNC (synchrones Prozessabbild) und sendet sie anschließend, falls die Daten sich gändert haben. Die Übertragungsart 0 kombiniert also den Sendegrund "ereignisgesteuert" mit dem Sende- (und möglichst Sample-) bzw. Verarbeitungs-Zeitpunkt "SYNC-Empfang".

    Bei Übertragungsart 1-240 wird das PDO zyklisch gesendet: nach jedem "n-ten" SYNC (n=1...240).
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
  • Bei einem ereignisgesteuerten Type, werden die Daten sofort gesendet nach einer Änderung.
    • Hinweis: Bei dieser Übertragungsart kommt es, bei sich schnell ändernden Daten (z.B.: Spannung, Strom , Position) ,
      zu einer sehr hohen Buslast, wodurch der Datenverkehr anderer Teilnehmer (mit niedriger CAN-Priorität) blockiert werden kann.
      Durch Setzen einer Sperrzeit (Inhibittime) kann dies vermieden werden (siehe Subindex 03).

Bus synchronization and sampling

Subindex 03h enthält die Sperrzeit (inhibit time). Die Zeit ist das kürzeste Intervall in dem ein PDO gesendet werden kann, auch wenn sich die Daten schneller ändern.
Dieser Parameter gilt nur bei Übertragungsart 254 und 255. Die Einheit ist ein Vielfaches von 100 μs. Bei unseren Geräten wird die Zeit intern auf volle Milisekunden abgerundet. D.h. kleinste kleinste Sperrzeit ist 1ms (Parameterwert=0..9 -> effektive Sperrzeit=0ms, Parameterwert=10..19 -> effektive Sperrzeit=1ms, Parameterwert=20..29 -> effektive Sperrzeit=2ms, u.s.w.). Der Wert 0 deaktiviert die Sperrzeit.
Bei aktiviertem PDO (Bit 31 von Subindex 01h ist = 0) darf der Parameter nicht geändert werden.

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1800h
  • PDO 2 - Index 1801h
  • PDO 3 - Index 1802h
  • PDO 4 - Index 1803h
  • PDO 5 - Index 1804h
  • PDO 6 - Index 1805h
  • PDO 7 - Index 1806h
  • PDO 8 - Index 1814h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1802.01h TxPDO3 Kommunikationsparameter - COB-ID benutzt durch TxPDO

Name | COP_TxPDO3_CommunicationParameter_CobId
Bezeichnung | TxPDO3 Kommunikationsparameter - COB-ID benutzt durch TxPDO
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 380h + NodeId
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_CobId(pdo_nr,cob_id)
Querverweis | COP_TxPDO3_CommunicationParameter_HighestSubindexSupported, COP_TxPDO3_CommunicationParameter_TransmissionType, COP_TxPDO3_CommunicationParameter_InhibitTime

Beschreibung

Subindex 01h bestimmt die COB-ID des TxPDO.

Beschreibung siehe: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1802.02h TxPDO3 Kommunikationsparameter - Typ der Transmission

Name | COP_TxPDO3_CommunicationParameter_TransmissionType
Bezeichnung | TxPDO3 Kommunikationsparameter - Typ der Transmission
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_TransmissionType(pdo_nr,type)
Querverweis | COP_TxPDO3_CommunicationParameter_HighestSubindexSupported, COP_TxPDO3_CommunicationParameter_CobId, COP_TxPDO3_CommunicationParameter_InhibitTime

Beschreibung

Subindex 02h bestimmt die Übertragungsart des TxPDO.

Beschreibung siehe: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1802.03h TxPDO3 Kommunikationsparameter - Inhibit-time

Name | COP_TxPDO3_CommunicationParameter_InhibitTime
Bezeichnung | TxPDO3 Kommunikationsparameter - Inhibit-time
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [100us]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_InhibitTime(pdo_nr,t_ms)
Querverweis | COP_TxPDO3_CommunicationParameter_HighestSubindexSupported, COP_TxPDO3_CommunicationParameter_CobId, COP_TxPDO3_CommunicationParameter_TransmissionType

Beschreibung

Subindex 03h enthält die Sperrzeit (inhibit time). Die Zeit ist das kürzeste Intervall in dem ein PDO gesendet werden kann, auch wenn sich die Daten schneller ändern.
Dieser Parameter gilt nur bei Übertragungsart 254 und 255. Die Einheit ist ein Vielfaches von 100 μs. Bei unseren Geräten wird die Zeit intern auf volle Milisekunden abgerundet. D.h. kleinste kleinste Sperrzeit ist 1ms (Parameterwert=0..9 -> effektive Sperrzeit=0ms, Parameterwert=10..19 -> effektive Sperrzeit=1ms, Parameterwert=20..29 -> effektive Sperrzeit=2ms, u.s.w.). Der Wert 0 deaktiviert die Sperrzeit.
Bei aktiviertem PDO (Bit 31 von Subindex 01h ist = 0) darf der Parameter nicht geändert werden.

Siehe auch: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - TxPDO-4 Kommunikationsparameter

1803.00h | COP_TxPDO4_CommunicationParameter_HighestSubindexSupported | TxPDO4 Kommunikationsparameter - Höchster unterstützter Subindex
1803.01h | COP_TxPDO4_CommunicationParameter_CobId | TxPDO4 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1803.02h | COP_TxPDO4_CommunicationParameter_TransmissionType | TxPDO4 Kommunikationsparameter - Typ der Transmission
1803.03h | COP_TxPDO4_CommunicationParameter_InhibitTime | TxPDO4 Kommunikationsparameter - Inhibit-time


1803.00h TxPDO4 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_TxPDO4_CommunicationParameter_HighestSubindexSupported
Bezeichnung | TxPDO4 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_TxPDO4_CommunicationParameter_CobId, COP_TxPDO4_CommunicationParameter_TransmissionType, COP_TxPDO4_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Sende-PDOs (TxPDO) des Gerätes.

Subindex 00h - Anzahl der Subindexe.
Subindex 01h - COB-ID des TxPDO.
Subindex 02h - Übertragungsart.
Subindex 03h - Sperrzeit (Inhibittime).

Mit Subindex 01h wird die COB-ID des TxPDOs eingestellt (siehe Abb und Tabelle).

Structure of TxPDO COB-ID

Beschreibung des RxPDO COB-ID:
Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID valid (CAN base frame) 29-bit CAN-ID valid (CAN extended frame)
11..28 | x | 29-bit CAN-ID of the CAN extended frame
0..10 | x | 11-bit CAN-ID of the CAN base frame

Mit dem Bit 31 können PDOs an- und abgeschaltet werden im NMT State Operational. Bei gesetztem Bit 31 können PDO konfiguriert werden, aber nicht verwendet. Bei CANopen Geräte, welche mehr als 4 PDOs unterstützen, sind per default nur 4 erste PDOs aktiviert (pre-defined connection set). Die COB ID des PDO's kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für TxPDO:

Index | Default Werte
1800h | CAN-ID: 180h + Node-ID frame: 0b RTR: 0b valid: 0b
1801h | CAN-ID: 280h + Node-ID frame: 0b RTR: 0b valid: 0b
1802h | CAN-ID: 380h + Node-ID frame: 0b RTR: 0b valid: 0b
1803h | CAN-ID: 480h + Node-ID frame: 0b RTR: 0b valid: 0b
1804h - 1806h and 1814h | CAN-ID: 000h frame: 0b RTR: 0b valid: 1b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom TxPDO fest (siehe Tabelle).

Beschreibung TxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron azyklisch
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO nur gesendet wird, wenn ein SYNC Telegramm empfangen wurde.
    Damit kann der Datenverkehr auf dem Bus kontrolliert werden. Weiterhin können die Informationen verschiedener Teilnehmer zeitsynchron empfangen werden.

    PDOs der Übertragungsart 0 arbeiten synchron, aber nicht zyklisch. Ein Gerät, dessen TxPDO auf Übertragungsart 0 konfiguriert ist, ermittelt seine Eingangsdaten beim Empfang des SYNC (synchrones Prozessabbild) und sendet sie anschließend, falls die Daten sich gändert haben. Die Übertragungsart 0 kombiniert also den Sendegrund "ereignisgesteuert" mit dem Sende- (und möglichst Sample-) bzw. Verarbeitungs-Zeitpunkt "SYNC-Empfang".

    Bei Übertragungsart 1-240 wird das PDO zyklisch gesendet: nach jedem "n-ten" SYNC (n=1...240).
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
  • Bei einem ereignisgesteuerten Type, werden die Daten sofort gesendet nach einer Änderung.
    • Hinweis: Bei dieser Übertragungsart kommt es, bei sich schnell ändernden Daten (z.B.: Spannung, Strom , Position) ,
      zu einer sehr hohen Buslast, wodurch der Datenverkehr anderer Teilnehmer (mit niedriger CAN-Priorität) blockiert werden kann.
      Durch Setzen einer Sperrzeit (Inhibittime) kann dies vermieden werden (siehe Subindex 03).

Bus synchronization and sampling

Subindex 03h enthält die Sperrzeit (inhibit time). Die Zeit ist das kürzeste Intervall in dem ein PDO gesendet werden kann, auch wenn sich die Daten schneller ändern.
Dieser Parameter gilt nur bei Übertragungsart 254 und 255. Die Einheit ist ein Vielfaches von 100 μs. Bei unseren Geräten wird die Zeit intern auf volle Milisekunden abgerundet. D.h. kleinste kleinste Sperrzeit ist 1ms (Parameterwert=0..9 -> effektive Sperrzeit=0ms, Parameterwert=10..19 -> effektive Sperrzeit=1ms, Parameterwert=20..29 -> effektive Sperrzeit=2ms, u.s.w.). Der Wert 0 deaktiviert die Sperrzeit.
Bei aktiviertem PDO (Bit 31 von Subindex 01h ist = 0) darf der Parameter nicht geändert werden.

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1800h
  • PDO 2 - Index 1801h
  • PDO 3 - Index 1802h
  • PDO 4 - Index 1803h
  • PDO 5 - Index 1804h
  • PDO 6 - Index 1805h
  • PDO 7 - Index 1806h
  • PDO 8 - Index 1814h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1803.01h TxPDO4 Kommunikationsparameter - COB-ID benutzt durch TxPDO

Name | COP_TxPDO4_CommunicationParameter_CobId
Bezeichnung | TxPDO4 Kommunikationsparameter - COB-ID benutzt durch TxPDO
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 480h + NodeId
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_CobId(pdo_nr,cob_id)
Querverweis | COP_TxPDO4_CommunicationParameter_HighestSubindexSupported, COP_TxPDO4_CommunicationParameter_TransmissionType, COP_TxPDO4_CommunicationParameter_InhibitTime

Beschreibung

Subindex 01h bestimmt die COB-ID des TxPDO.

Beschreibung siehe: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1803.02h TxPDO4 Kommunikationsparameter - Typ der Transmission

Name | COP_TxPDO4_CommunicationParameter_TransmissionType
Bezeichnung | TxPDO4 Kommunikationsparameter - Typ der Transmission
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_TransmissionType(pdo_nr,type)
Querverweis | COP_TxPDO4_CommunicationParameter_HighestSubindexSupported, COP_TxPDO4_CommunicationParameter_CobId, COP_TxPDO4_CommunicationParameter_InhibitTime

Beschreibung

Subindex 02h bestimmt die Übertragungsart des TxPDO.

Beschreibung siehe: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1803.03h TxPDO4 Kommunikationsparameter - Inhibit-time

Name | COP_TxPDO4_CommunicationParameter_InhibitTime
Bezeichnung | TxPDO4 Kommunikationsparameter - Inhibit-time
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [100us]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_InhibitTime(pdo_nr,t_ms)
Querverweis | COP_TxPDO4_CommunicationParameter_HighestSubindexSupported, COP_TxPDO4_CommunicationParameter_CobId, COP_TxPDO4_CommunicationParameter_TransmissionType

Beschreibung

Subindex 03h enthält die Sperrzeit (inhibit time). Die Zeit ist das kürzeste Intervall in dem ein PDO gesendet werden kann, auch wenn sich die Daten schneller ändern.
Dieser Parameter gilt nur bei Übertragungsart 254 und 255. Die Einheit ist ein Vielfaches von 100 μs. Bei unseren Geräten wird die Zeit intern auf volle Milisekunden abgerundet. D.h. kleinste kleinste Sperrzeit ist 1ms (Parameterwert=0..9 -> effektive Sperrzeit=0ms, Parameterwert=10..19 -> effektive Sperrzeit=1ms, Parameterwert=20..29 -> effektive Sperrzeit=2ms, u.s.w.). Der Wert 0 deaktiviert die Sperrzeit.
Bei aktiviertem PDO (Bit 31 von Subindex 01h ist = 0) darf der Parameter nicht geändert werden.

Siehe auch: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - TxPDO-5 Kommunikationsparameter

1804.00h | COP_TxPDO5_CommunicationParameter_HighestSubindexSupported | TxPDO5 Kommunikationsparameter - Höchster unterstützter Subindex
1804.01h | COP_TxPDO5_CommunicationParameter_CobId | TxPDO5 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1804.02h | COP_TxPDO5_CommunicationParameter_TransmissionType | TxPDO5 Kommunikationsparameter - Typ der Transmission
1804.03h | COP_TxPDO5_CommunicationParameter_InhibitTime | TxPDO5 Kommunikationsparameter - Inhibit-time


1804.00h TxPDO5 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_TxPDO5_CommunicationParameter_HighestSubindexSupported
Bezeichnung | TxPDO5 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_TxPDO5_CommunicationParameter_CobId, COP_TxPDO5_CommunicationParameter_TransmissionType, COP_TxPDO5_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Sende-PDOs (TxPDO) des Gerätes.

Subindex 00h - Anzahl der Subindexe.
Subindex 01h - COB-ID des TxPDO.
Subindex 02h - Übertragungsart.
Subindex 03h - Sperrzeit (Inhibittime).

Mit Subindex 01h wird die COB-ID des TxPDOs eingestellt (siehe Abb und Tabelle).

Structure of TxPDO COB-ID

Beschreibung des RxPDO COB-ID:
Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID valid (CAN base frame) 29-bit CAN-ID valid (CAN extended frame)
11..28 | x | 29-bit CAN-ID of the CAN extended frame
0..10 | x | 11-bit CAN-ID of the CAN base frame

Mit dem Bit 31 können PDOs an- und abgeschaltet werden im NMT State Operational. Bei gesetztem Bit 31 können PDO konfiguriert werden, aber nicht verwendet. Bei CANopen Geräte, welche mehr als 4 PDOs unterstützen, sind per default nur 4 erste PDOs aktiviert (pre-defined connection set). Die COB ID des PDO's kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für TxPDO:

Index | Default Werte
1800h | CAN-ID: 180h + Node-ID frame: 0b RTR: 0b valid: 0b
1801h | CAN-ID: 280h + Node-ID frame: 0b RTR: 0b valid: 0b
1802h | CAN-ID: 380h + Node-ID frame: 0b RTR: 0b valid: 0b
1803h | CAN-ID: 480h + Node-ID frame: 0b RTR: 0b valid: 0b
1804h - 1806h and 1814h | CAN-ID: 000h frame: 0b RTR: 0b valid: 1b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom TxPDO fest (siehe Tabelle).

Beschreibung TxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron azyklisch
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO nur gesendet wird, wenn ein SYNC Telegramm empfangen wurde.
    Damit kann der Datenverkehr auf dem Bus kontrolliert werden. Weiterhin können die Informationen verschiedener Teilnehmer zeitsynchron empfangen werden.

    PDOs der Übertragungsart 0 arbeiten synchron, aber nicht zyklisch. Ein Gerät, dessen TxPDO auf Übertragungsart 0 konfiguriert ist, ermittelt seine Eingangsdaten beim Empfang des SYNC (synchrones Prozessabbild) und sendet sie anschließend, falls die Daten sich gändert haben. Die Übertragungsart 0 kombiniert also den Sendegrund "ereignisgesteuert" mit dem Sende- (und möglichst Sample-) bzw. Verarbeitungs-Zeitpunkt "SYNC-Empfang".

    Bei Übertragungsart 1-240 wird das PDO zyklisch gesendet: nach jedem "n-ten" SYNC (n=1...240).
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
  • Bei einem ereignisgesteuerten Type, werden die Daten sofort gesendet nach einer Änderung.
    • Hinweis: Bei dieser Übertragungsart kommt es, bei sich schnell ändernden Daten (z.B.: Spannung, Strom , Position) ,
      zu einer sehr hohen Buslast, wodurch der Datenverkehr anderer Teilnehmer (mit niedriger CAN-Priorität) blockiert werden kann.
      Durch Setzen einer Sperrzeit (Inhibittime) kann dies vermieden werden (siehe Subindex 03).

Bus synchronization and sampling

Subindex 03h enthält die Sperrzeit (inhibit time). Die Zeit ist das kürzeste Intervall in dem ein PDO gesendet werden kann, auch wenn sich die Daten schneller ändern.
Dieser Parameter gilt nur bei Übertragungsart 254 und 255. Die Einheit ist ein Vielfaches von 100 μs. Bei unseren Geräten wird die Zeit intern auf volle Milisekunden abgerundet. D.h. kleinste kleinste Sperrzeit ist 1ms (Parameterwert=0..9 -> effektive Sperrzeit=0ms, Parameterwert=10..19 -> effektive Sperrzeit=1ms, Parameterwert=20..29 -> effektive Sperrzeit=2ms, u.s.w.). Der Wert 0 deaktiviert die Sperrzeit.
Bei aktiviertem PDO (Bit 31 von Subindex 01h ist = 0) darf der Parameter nicht geändert werden.

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1800h
  • PDO 2 - Index 1801h
  • PDO 3 - Index 1802h
  • PDO 4 - Index 1803h
  • PDO 5 - Index 1804h
  • PDO 6 - Index 1805h
  • PDO 7 - Index 1806h
  • PDO 8 - Index 1814h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1804.01h TxPDO5 Kommunikationsparameter - COB-ID benutzt durch TxPDO

Name | COP_TxPDO5_CommunicationParameter_CobId
Bezeichnung | TxPDO5 Kommunikationsparameter - COB-ID benutzt durch TxPDO
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 80000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_CobId(pdo_nr,cob_id)
Querverweis | COP_TxPDO5_CommunicationParameter_HighestSubindexSupported, COP_TxPDO5_CommunicationParameter_TransmissionType, COP_TxPDO5_CommunicationParameter_InhibitTime

Beschreibung

Subindex 01h bestimmt die COB-ID des TxPDO.

Beschreibung siehe: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1804.02h TxPDO5 Kommunikationsparameter - Typ der Transmission

Name | COP_TxPDO5_CommunicationParameter_TransmissionType
Bezeichnung | TxPDO5 Kommunikationsparameter - Typ der Transmission
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_TransmissionType(pdo_nr,type)
Querverweis | COP_TxPDO5_CommunicationParameter_HighestSubindexSupported, COP_TxPDO5_CommunicationParameter_CobId, COP_TxPDO5_CommunicationParameter_InhibitTime

Beschreibung

Subindex 02h bestimmt die Übertragungsart des TxPDO.

Beschreibung siehe: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1804.03h TxPDO5 Kommunikationsparameter - Inhibit-time

Name | COP_TxPDO5_CommunicationParameter_InhibitTime
Bezeichnung | TxPDO5 Kommunikationsparameter - Inhibit-time
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [100us]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_InhibitTime(pdo_nr,t_ms)
Querverweis | COP_TxPDO5_CommunicationParameter_HighestSubindexSupported, COP_TxPDO5_CommunicationParameter_CobId, COP_TxPDO5_CommunicationParameter_TransmissionType

Beschreibung

Subindex 03h enthält die Sperrzeit (inhibit time). Die Zeit ist das kürzeste Intervall in dem ein PDO gesendet werden kann, auch wenn sich die Daten schneller ändern.
Dieser Parameter gilt nur bei Übertragungsart 254 und 255. Die Einheit ist ein Vielfaches von 100 μs. Bei unseren Geräten wird die Zeit intern auf volle Milisekunden abgerundet. D.h. kleinste kleinste Sperrzeit ist 1ms (Parameterwert=0..9 -> effektive Sperrzeit=0ms, Parameterwert=10..19 -> effektive Sperrzeit=1ms, Parameterwert=20..29 -> effektive Sperrzeit=2ms, u.s.w.). Der Wert 0 deaktiviert die Sperrzeit.
Bei aktiviertem PDO (Bit 31 von Subindex 01h ist = 0) darf der Parameter nicht geändert werden.

Siehe auch: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - TxPDO-6 Kommunikationsparameter

1805.00h | COP_TxPDO6_CommunicationParameter_HighestSubindexSupported | TxPDO6 Kommunikationsparameter - Höchster unterstützter Subindex
1805.01h | COP_TxPDO6_CommunicationParameter_CobId | TxPDO6 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1805.02h | COP_TxPDO6_CommunicationParameter_TransmissionType | TxPDO6 Kommunikationsparameter - Typ der Transmission
1805.03h | COP_TxPDO6_CommunicationParameter_InhibitTime | TxPDO6 Kommunikationsparameter - Inhibit-time


1805.00h TxPDO6 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_TxPDO6_CommunicationParameter_HighestSubindexSupported
Bezeichnung | TxPDO6 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_TxPDO6_CommunicationParameter_CobId, COP_TxPDO6_CommunicationParameter_TransmissionType, COP_TxPDO6_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Sende-PDOs (TxPDO) des Gerätes.

Subindex 00h - Anzahl der Subindexe.
Subindex 01h - COB-ID des TxPDO.
Subindex 02h - Übertragungsart.
Subindex 03h - Sperrzeit (Inhibittime).

Mit Subindex 01h wird die COB-ID des TxPDOs eingestellt (siehe Abb und Tabelle).

Structure of TxPDO COB-ID

Beschreibung des RxPDO COB-ID:
Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID valid (CAN base frame) 29-bit CAN-ID valid (CAN extended frame)
11..28 | x | 29-bit CAN-ID of the CAN extended frame
0..10 | x | 11-bit CAN-ID of the CAN base frame

Mit dem Bit 31 können PDOs an- und abgeschaltet werden im NMT State Operational. Bei gesetztem Bit 31 können PDO konfiguriert werden, aber nicht verwendet. Bei CANopen Geräte, welche mehr als 4 PDOs unterstützen, sind per default nur 4 erste PDOs aktiviert (pre-defined connection set). Die COB ID des PDO's kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für TxPDO:

Index | Default Werte
1800h | CAN-ID: 180h + Node-ID frame: 0b RTR: 0b valid: 0b
1801h | CAN-ID: 280h + Node-ID frame: 0b RTR: 0b valid: 0b
1802h | CAN-ID: 380h + Node-ID frame: 0b RTR: 0b valid: 0b
1803h | CAN-ID: 480h + Node-ID frame: 0b RTR: 0b valid: 0b
1804h - 1806h and 1814h | CAN-ID: 000h frame: 0b RTR: 0b valid: 1b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom TxPDO fest (siehe Tabelle).

Beschreibung TxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron azyklisch
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO nur gesendet wird, wenn ein SYNC Telegramm empfangen wurde.
    Damit kann der Datenverkehr auf dem Bus kontrolliert werden. Weiterhin können die Informationen verschiedener Teilnehmer zeitsynchron empfangen werden.

    PDOs der Übertragungsart 0 arbeiten synchron, aber nicht zyklisch. Ein Gerät, dessen TxPDO auf Übertragungsart 0 konfiguriert ist, ermittelt seine Eingangsdaten beim Empfang des SYNC (synchrones Prozessabbild) und sendet sie anschließend, falls die Daten sich gändert haben. Die Übertragungsart 0 kombiniert also den Sendegrund "ereignisgesteuert" mit dem Sende- (und möglichst Sample-) bzw. Verarbeitungs-Zeitpunkt "SYNC-Empfang".

    Bei Übertragungsart 1-240 wird das PDO zyklisch gesendet: nach jedem "n-ten" SYNC (n=1...240).
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
  • Bei einem ereignisgesteuerten Type, werden die Daten sofort gesendet nach einer Änderung.
    • Hinweis: Bei dieser Übertragungsart kommt es, bei sich schnell ändernden Daten (z.B.: Spannung, Strom , Position) ,
      zu einer sehr hohen Buslast, wodurch der Datenverkehr anderer Teilnehmer (mit niedriger CAN-Priorität) blockiert werden kann.
      Durch Setzen einer Sperrzeit (Inhibittime) kann dies vermieden werden (siehe Subindex 03).

Bus synchronization and sampling

Subindex 03h enthält die Sperrzeit (inhibit time). Die Zeit ist das kürzeste Intervall in dem ein PDO gesendet werden kann, auch wenn sich die Daten schneller ändern.
Dieser Parameter gilt nur bei Übertragungsart 254 und 255. Die Einheit ist ein Vielfaches von 100 μs. Bei unseren Geräten wird die Zeit intern auf volle Milisekunden abgerundet. D.h. kleinste kleinste Sperrzeit ist 1ms (Parameterwert=0..9 -> effektive Sperrzeit=0ms, Parameterwert=10..19 -> effektive Sperrzeit=1ms, Parameterwert=20..29 -> effektive Sperrzeit=2ms, u.s.w.). Der Wert 0 deaktiviert die Sperrzeit.
Bei aktiviertem PDO (Bit 31 von Subindex 01h ist = 0) darf der Parameter nicht geändert werden.

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1800h
  • PDO 2 - Index 1801h
  • PDO 3 - Index 1802h
  • PDO 4 - Index 1803h
  • PDO 5 - Index 1804h
  • PDO 6 - Index 1805h
  • PDO 7 - Index 1806h
  • PDO 8 - Index 1814h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1805.01h TxPDO6 Kommunikationsparameter - COB-ID benutzt durch TxPDO

Name | COP_TxPDO6_CommunicationParameter_CobId
Bezeichnung | TxPDO6 Kommunikationsparameter - COB-ID benutzt durch TxPDO
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 80000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_CobId(pdo_nr,cob_id)
Querverweis | COP_TxPDO6_CommunicationParameter_HighestSubindexSupported, COP_TxPDO6_CommunicationParameter_TransmissionType, COP_TxPDO6_CommunicationParameter_InhibitTime

Beschreibung

Subindex 01h bestimmt die COB-ID des TxPDO.

Beschreibung siehe: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1805.02h TxPDO6 Kommunikationsparameter - Typ der Transmission

Name | COP_TxPDO6_CommunicationParameter_TransmissionType
Bezeichnung | TxPDO6 Kommunikationsparameter - Typ der Transmission
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_TransmissionType(pdo_nr,type)
Querverweis | COP_TxPDO6_CommunicationParameter_HighestSubindexSupported, COP_TxPDO6_CommunicationParameter_CobId, COP_TxPDO6_CommunicationParameter_InhibitTime

Beschreibung

Subindex 02h bestimmt die Übertragungsart des TxPDO.

Beschreibung siehe: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1805.03h TxPDO6 Kommunikationsparameter - Inhibit-time

Name | COP_TxPDO6_CommunicationParameter_InhibitTime
Bezeichnung | TxPDO6 Kommunikationsparameter - Inhibit-time
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [100us]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_InhibitTime(pdo_nr,t_ms)
Querverweis | COP_TxPDO6_CommunicationParameter_HighestSubindexSupported, COP_TxPDO6_CommunicationParameter_CobId, COP_TxPDO6_CommunicationParameter_TransmissionType

Beschreibung

Subindex 03h enthält die Sperrzeit (inhibit time). Die Zeit ist das kürzeste Intervall in dem ein PDO gesendet werden kann, auch wenn sich die Daten schneller ändern.
Dieser Parameter gilt nur bei Übertragungsart 254 und 255. Die Einheit ist ein Vielfaches von 100 μs. Bei unseren Geräten wird die Zeit intern auf volle Milisekunden abgerundet. D.h. kleinste kleinste Sperrzeit ist 1ms (Parameterwert=0..9 -> effektive Sperrzeit=0ms, Parameterwert=10..19 -> effektive Sperrzeit=1ms, Parameterwert=20..29 -> effektive Sperrzeit=2ms, u.s.w.). Der Wert 0 deaktiviert die Sperrzeit.
Bei aktiviertem PDO (Bit 31 von Subindex 01h ist = 0) darf der Parameter nicht geändert werden.

Siehe auch: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - TxPDO-7 Kommunikationsparameter

1806.00h | COP_TxPDO7_CommunicationParameter_HighestSubindexSupported | TxPDO7 Kommunikationsparameter - Höchster unterstützter Subindex
1806.01h | COP_TxPDO7_CommunicationParameter_CobId | TxPDO7 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1806.02h | COP_TxPDO7_CommunicationParameter_TransmissionType | TxPDO7 Kommunikationsparameter - Typ der Transmission
1806.03h | COP_TxPDO7_CommunicationParameter_InhibitTime | TxPDO7 Kommunikationsparameter - Inhibit-time


1806.00h TxPDO7 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_TxPDO7_CommunicationParameter_HighestSubindexSupported
Bezeichnung | TxPDO7 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_TxPDO7_CommunicationParameter_CobId, COP_TxPDO7_CommunicationParameter_TransmissionType, COP_TxPDO7_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Sende-PDOs (TxPDO) des Gerätes.

Subindex 00h - Anzahl der Subindexe.
Subindex 01h - COB-ID des TxPDO.
Subindex 02h - Übertragungsart.
Subindex 03h - Sperrzeit (Inhibittime).

Mit Subindex 01h wird die COB-ID des TxPDOs eingestellt (siehe Abb und Tabelle).

Structure of TxPDO COB-ID

Beschreibung des RxPDO COB-ID:
Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID valid (CAN base frame) 29-bit CAN-ID valid (CAN extended frame)
11..28 | x | 29-bit CAN-ID of the CAN extended frame
0..10 | x | 11-bit CAN-ID of the CAN base frame

Mit dem Bit 31 können PDOs an- und abgeschaltet werden im NMT State Operational. Bei gesetztem Bit 31 können PDO konfiguriert werden, aber nicht verwendet. Bei CANopen Geräte, welche mehr als 4 PDOs unterstützen, sind per default nur 4 erste PDOs aktiviert (pre-defined connection set). Die COB ID des PDO's kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für TxPDO:

Index | Default Werte
1800h | CAN-ID: 180h + Node-ID frame: 0b RTR: 0b valid: 0b
1801h | CAN-ID: 280h + Node-ID frame: 0b RTR: 0b valid: 0b
1802h | CAN-ID: 380h + Node-ID frame: 0b RTR: 0b valid: 0b
1803h | CAN-ID: 480h + Node-ID frame: 0b RTR: 0b valid: 0b
1804h - 1806h and 1814h | CAN-ID: 000h frame: 0b RTR: 0b valid: 1b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom TxPDO fest (siehe Tabelle).

Beschreibung TxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron azyklisch
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO nur gesendet wird, wenn ein SYNC Telegramm empfangen wurde.
    Damit kann der Datenverkehr auf dem Bus kontrolliert werden. Weiterhin können die Informationen verschiedener Teilnehmer zeitsynchron empfangen werden.

    PDOs der Übertragungsart 0 arbeiten synchron, aber nicht zyklisch. Ein Gerät, dessen TxPDO auf Übertragungsart 0 konfiguriert ist, ermittelt seine Eingangsdaten beim Empfang des SYNC (synchrones Prozessabbild) und sendet sie anschließend, falls die Daten sich gändert haben. Die Übertragungsart 0 kombiniert also den Sendegrund "ereignisgesteuert" mit dem Sende- (und möglichst Sample-) bzw. Verarbeitungs-Zeitpunkt "SYNC-Empfang".

    Bei Übertragungsart 1-240 wird das PDO zyklisch gesendet: nach jedem "n-ten" SYNC (n=1...240).
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
  • Bei einem ereignisgesteuerten Type, werden die Daten sofort gesendet nach einer Änderung.
    • Hinweis: Bei dieser Übertragungsart kommt es, bei sich schnell ändernden Daten (z.B.: Spannung, Strom , Position) ,
      zu einer sehr hohen Buslast, wodurch der Datenverkehr anderer Teilnehmer (mit niedriger CAN-Priorität) blockiert werden kann.
      Durch Setzen einer Sperrzeit (Inhibittime) kann dies vermieden werden (siehe Subindex 03).

Bus synchronization and sampling

Subindex 03h enthält die Sperrzeit (inhibit time). Die Zeit ist das kürzeste Intervall in dem ein PDO gesendet werden kann, auch wenn sich die Daten schneller ändern.
Dieser Parameter gilt nur bei Übertragungsart 254 und 255. Die Einheit ist ein Vielfaches von 100 μs. Bei unseren Geräten wird die Zeit intern auf volle Milisekunden abgerundet. D.h. kleinste kleinste Sperrzeit ist 1ms (Parameterwert=0..9 -> effektive Sperrzeit=0ms, Parameterwert=10..19 -> effektive Sperrzeit=1ms, Parameterwert=20..29 -> effektive Sperrzeit=2ms, u.s.w.). Der Wert 0 deaktiviert die Sperrzeit.
Bei aktiviertem PDO (Bit 31 von Subindex 01h ist = 0) darf der Parameter nicht geändert werden.

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1800h
  • PDO 2 - Index 1801h
  • PDO 3 - Index 1802h
  • PDO 4 - Index 1803h
  • PDO 5 - Index 1804h
  • PDO 6 - Index 1805h
  • PDO 7 - Index 1806h
  • PDO 8 - Index 1814h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1806.01h TxPDO7 Kommunikationsparameter - COB-ID benutzt durch TxPDO

Name | COP_TxPDO7_CommunicationParameter_CobId
Bezeichnung | TxPDO7 Kommunikationsparameter - COB-ID benutzt durch TxPDO
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 80000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_CobId(pdo_nr,cob_id)
Querverweis | COP_TxPDO7_CommunicationParameter_HighestSubindexSupported, COP_TxPDO7_CommunicationParameter_TransmissionType, COP_TxPDO7_CommunicationParameter_InhibitTime

Beschreibung

Subindex 01h bestimmt die COB-ID des TxPDO.

Beschreibung siehe: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1806.02h TxPDO7 Kommunikationsparameter - Typ der Transmission

Name | COP_TxPDO7_CommunicationParameter_TransmissionType
Bezeichnung | TxPDO7 Kommunikationsparameter - Typ der Transmission
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_TransmissionType(pdo_nr,type)
Querverweis | COP_TxPDO7_CommunicationParameter_HighestSubindexSupported, COP_TxPDO7_CommunicationParameter_CobId, COP_TxPDO7_CommunicationParameter_InhibitTime

Beschreibung

Subindex 02h bestimmt die Übertragungsart des TxPDO.

Beschreibung siehe: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1806.03h TxPDO7 Kommunikationsparameter - Inhibit-time

Name | COP_TxPDO7_CommunicationParameter_InhibitTime
Bezeichnung | TxPDO7 Kommunikationsparameter - Inhibit-time
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [100us]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_InhibitTime(pdo_nr,t_ms)
Querverweis | COP_TxPDO7_CommunicationParameter_HighestSubindexSupported, COP_TxPDO7_CommunicationParameter_CobId, COP_TxPDO7_CommunicationParameter_TransmissionType

Beschreibung

Subindex 03h enthält die Sperrzeit (inhibit time). Die Zeit ist das kürzeste Intervall in dem ein PDO gesendet werden kann, auch wenn sich die Daten schneller ändern.
Dieser Parameter gilt nur bei Übertragungsart 254 und 255. Die Einheit ist ein Vielfaches von 100 μs. Bei unseren Geräten wird die Zeit intern auf volle Milisekunden abgerundet. D.h. kleinste kleinste Sperrzeit ist 1ms (Parameterwert=0..9 -> effektive Sperrzeit=0ms, Parameterwert=10..19 -> effektive Sperrzeit=1ms, Parameterwert=20..29 -> effektive Sperrzeit=2ms, u.s.w.). Der Wert 0 deaktiviert die Sperrzeit.
Bei aktiviertem PDO (Bit 31 von Subindex 01h ist = 0) darf der Parameter nicht geändert werden.

Siehe auch: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - TxPDO-21 Kommunikationsparameter

1814.00h | COP_TxPDO21_CommunicationParameter_HighestSubindexSupported | TxPDO21 Kommunikationsparameter - Höchster unterstützter Subindex
1814.01h | COP_TxPDO21_CommunicationParameter_CobId | TxPDO21 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1814.02h | COP_TxPDO21_CommunicationParameter_TransmissionType | TxPDO21 Kommunikationsparameter - Typ der Transmission
1814.03h | COP_TxPDO21_CommunicationParameter_InhibitTime | TxPDO21 Kommunikationsparameter - Inhibit-time


1814.00h TxPDO21 Kommunikationsparameter - Höchster unterstützter Subindex

Name | COP_TxPDO21_CommunicationParameter_HighestSubindexSupported
Bezeichnung | TxPDO21 Kommunikationsparameter - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 03h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_TxPDO21_CommunicationParameter_CobId, COP_TxPDO21_CommunicationParameter_TransmissionType, COP_TxPDO21_CommunicationParameter_InhibitTime

Beschreibung

Das Objekt enthält die Kommunikationsparameter für die Sende-PDOs (TxPDO) des Gerätes.

Subindex 00h - Anzahl der Subindexe.
Subindex 01h - COB-ID des TxPDO.
Subindex 02h - Übertragungsart.
Subindex 03h - Sperrzeit (Inhibittime).

Mit Subindex 01h wird die COB-ID des TxPDOs eingestellt (siehe Abb und Tabelle).

Structure of TxPDO COB-ID

Beschreibung des RxPDO COB-ID:
Bit(s) | Wert | Beschreibung
31 | 0b 1b | PDO existiert/gültig PDO existiert nicht /ungültig
30 | 0b 1b | RTR erlaubt (Abfrage des PDOs ) kein RTR erlaubt
29 | 0b 1b | 11-bit CAN-ID valid (CAN base frame) 29-bit CAN-ID valid (CAN extended frame)
11..28 | x | 29-bit CAN-ID of the CAN extended frame
0..10 | x | 11-bit CAN-ID of the CAN base frame

Mit dem Bit 31 können PDOs an- und abgeschaltet werden im NMT State Operational. Bei gesetztem Bit 31 können PDO konfiguriert werden, aber nicht verwendet. Bei CANopen Geräte, welche mehr als 4 PDOs unterstützen, sind per default nur 4 erste PDOs aktiviert (pre-defined connection set). Die COB ID des PDO's kann nicht geändert werden, wenn das PDO aktiv ist (Bit 31 = 0b).

vorbelegte COB IDs für TxPDO:

Index | Default Werte
1800h | CAN-ID: 180h + Node-ID frame: 0b RTR: 0b valid: 0b
1801h | CAN-ID: 280h + Node-ID frame: 0b RTR: 0b valid: 0b
1802h | CAN-ID: 380h + Node-ID frame: 0b RTR: 0b valid: 0b
1803h | CAN-ID: 480h + Node-ID frame: 0b RTR: 0b valid: 0b
1804h - 1806h and 1814h | CAN-ID: 000h frame: 0b RTR: 0b valid: 1b

Subindex 02h legt die Übertragungs-/Empfangsart (transmission type) vom TxPDO fest (siehe Tabelle).

Beschreibung TxPDO Übertragungsart:

Wert | Beschreibung
0 | synchron azyklisch
::::: | :::::
1...240 | synchronon zyklisch nach jedem nten SYNC
241 | reserviert
::::: | :::::
251 | reserviert
252 | RTR-only (synchron)
253 | RTR-only (ereignisgesteuert)
254 | ereignisgesteuert (herstellerspezifisch)
255 | ereignisgesteuert (bei Änderung)
  • Synchron bedeutet, dass ein PDO nur gesendet wird, wenn ein SYNC Telegramm empfangen wurde.
    Damit kann der Datenverkehr auf dem Bus kontrolliert werden. Weiterhin können die Informationen verschiedener Teilnehmer zeitsynchron empfangen werden.

    PDOs der Übertragungsart 0 arbeiten synchron, aber nicht zyklisch. Ein Gerät, dessen TxPDO auf Übertragungsart 0 konfiguriert ist, ermittelt seine Eingangsdaten beim Empfang des SYNC (synchrones Prozessabbild) und sendet sie anschließend, falls die Daten sich gändert haben. Die Übertragungsart 0 kombiniert also den Sendegrund "ereignisgesteuert" mit dem Sende- (und möglichst Sample-) bzw. Verarbeitungs-Zeitpunkt "SYNC-Empfang".

    Bei Übertragungsart 1-240 wird das PDO zyklisch gesendet: nach jedem "n-ten" SYNC (n=1...240).
  • RTR-only bedeutet, dass ein PDO nicht automatisch übertragen wird, sondern nur bei Anforderung durch einen Remote Request.
  • Bei einem ereignisgesteuerten Type, werden die Daten sofort gesendet nach einer Änderung.
    • Hinweis: Bei dieser Übertragungsart kommt es, bei sich schnell ändernden Daten (z.B.: Spannung, Strom , Position) ,
      zu einer sehr hohen Buslast, wodurch der Datenverkehr anderer Teilnehmer (mit niedriger CAN-Priorität) blockiert werden kann.
      Durch Setzen einer Sperrzeit (Inhibittime) kann dies vermieden werden (siehe Subindex 03).

Bus synchronization and sampling

Subindex 03h enthält die Sperrzeit (inhibit time). Die Zeit ist das kürzeste Intervall in dem ein PDO gesendet werden kann, auch wenn sich die Daten schneller ändern.
Dieser Parameter gilt nur bei Übertragungsart 254 und 255. Die Einheit ist ein Vielfaches von 100 μs. Bei unseren Geräten wird die Zeit intern auf volle Milisekunden abgerundet. D.h. kleinste kleinste Sperrzeit ist 1ms (Parameterwert=0..9 -> effektive Sperrzeit=0ms, Parameterwert=10..19 -> effektive Sperrzeit=1ms, Parameterwert=20..29 -> effektive Sperrzeit=2ms, u.s.w.). Der Wert 0 deaktiviert die Sperrzeit.
Bei aktiviertem PDO (Bit 31 von Subindex 01h ist = 0) darf der Parameter nicht geändert werden.

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1800h
  • PDO 2 - Index 1801h
  • PDO 3 - Index 1802h
  • PDO 4 - Index 1803h
  • PDO 5 - Index 1804h
  • PDO 6 - Index 1805h
  • PDO 7 - Index 1806h
  • PDO 8 - Index 1814h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1814.01h TxPDO21 Kommunikationsparameter - COB-ID benutzt durch TxPDO

Name | COP_TxPDO21_CommunicationParameter_CobId
Bezeichnung | TxPDO21 Kommunikationsparameter - COB-ID benutzt durch TxPDO
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Wird beim Beschreiben gespeichert
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 80000000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_CobId(pdo_nr,cob_id)
Querverweis | COP_TxPDO21_CommunicationParameter_HighestSubindexSupported, COP_TxPDO21_CommunicationParameter_TransmissionType, COP_TxPDO21_CommunicationParameter_InhibitTime

Beschreibung

Subindex 01h bestimmt die COB-ID des TxPDO.

Beschreibung siehe: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1814.02h TxPDO21 Kommunikationsparameter - Typ der Transmission

Name | COP_TxPDO21_CommunicationParameter_TransmissionType
Bezeichnung | TxPDO21 Kommunikationsparameter - Typ der Transmission
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_TransmissionType(pdo_nr,type)
Querverweis | COP_TxPDO21_CommunicationParameter_HighestSubindexSupported, COP_TxPDO21_CommunicationParameter_CobId, COP_TxPDO21_CommunicationParameter_InhibitTime

Beschreibung

Subindex 02h bestimmt die Übertragungsart des TxPDO.

Beschreibung siehe: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1814.03h TxPDO21 Kommunikationsparameter - Inhibit-time

Name | COP_TxPDO21_CommunicationParameter_InhibitTime
Bezeichnung | TxPDO21 Kommunikationsparameter - Inhibit-time
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [100us]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ParamTxPdo_InhibitTime(pdo_nr,t_ms)
Querverweis | COP_TxPDO21_CommunicationParameter_HighestSubindexSupported, COP_TxPDO21_CommunicationParameter_CobId, COP_TxPDO21_CommunicationParameter_TransmissionType

Beschreibung

Subindex 03h enthält die Sperrzeit (inhibit time). Die Zeit ist das kürzeste Intervall in dem ein PDO gesendet werden kann, auch wenn sich die Daten schneller ändern.
Dieser Parameter gilt nur bei Übertragungsart 254 und 255. Die Einheit ist ein Vielfaches von 100 μs. Bei unseren Geräten wird die Zeit intern auf volle Milisekunden abgerundet. D.h. kleinste kleinste Sperrzeit ist 1ms (Parameterwert=0..9 -> effektive Sperrzeit=0ms, Parameterwert=10..19 -> effektive Sperrzeit=1ms, Parameterwert=20..29 -> effektive Sperrzeit=2ms, u.s.w.). Der Wert 0 deaktiviert die Sperrzeit.
Bei aktiviertem PDO (Bit 31 von Subindex 01h ist = 0) darf der Parameter nicht geändert werden.

Siehe auch: COP_TxPDO1_CommunicationParameter_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A00.00h TxPDO1 Mapping - Anzahl der gemappten Obiekte in TxPDO 1

Name | COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | TxPDO1 Mapping - Anzahl der gemappten Obiekte in TxPDO 1
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 01h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO1_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Sende-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

TxPDO Mapping Werte:

Value | Description
00h | Mappingtabelle deaktiviert
01 bis 08 | Anzahl der Mappingeinträge

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of TxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des TxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des TxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Principle of TxPDO mapping

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1A00h
  • PDO 2 - Index 1A01h
  • PDO 3 - Index 1A02h
  • PDO 4 - Index 1A03h
  • PDO 5 - Index 1A04h
  • PDO 6 - Index 1A05h
  • PDO 7 - Index 1A06h
  • PDO 8 - Index 1A14h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A00.01h TxPDO1 Mapping - Erstes gemapptes Objekt

Name | COP_TxPDO1_Mapping_1ApplicationObject
Bezeichnung | TxPDO1 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 60410010h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - TxPDO-2 Mapping

1A01.00h | COP_TxPDO2_Mapping_NumberOfMappedApplicationObjects | TxPDO2 Mapping - Anzahl der gemappten Obiekte in TxPDO 2
1A01.01h | COP_TxPDO2_Mapping_1ApplicationObject | TxPDO2 Mapping - Erstes gemapptes Objekt
1A01.02h | COP_TxPDO2_Mapping_2ApplicationObject | TxPDO2 Mapping - Zweites gemapptes Objekt
1A01.03h | COP_TxPDO2_Mapping_3ApplicationObject | TxPDO2 Mapping - Drittes gemapptes Objekt
1A01.04h | COP_TxPDO2_Mapping_4ApplicationObject | TxPDO2 Mapping - Viertes gemapptes Objekt
1A01.05h | COP_TxPDO2_Mapping_5ApplicationObject | TxPDO2 Mapping - Fünftes gemapptes Objekt
1A01.06h | COP_TxPDO2_Mapping_6ApplicationObject | TxPDO2 Mapping - Sechstes gemapptes Objekt
1A01.07h | COP_TxPDO2_Mapping_7ApplicationObject | TxPDO2 Mapping - Siebtes gemapptes Objekt
1A01.08h | COP_TxPDO2_Mapping_8ApplicationObject | TxPDO2 Mapping - Achtes gemapptes Objekt


1A01.00h TxPDO2 Mapping - Anzahl der gemappten Obiekte in TxPDO 2

Name | COP_TxPDO2_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | TxPDO2 Mapping - Anzahl der gemappten Obiekte in TxPDO 2
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO2_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Sende-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

TxPDO Mapping Werte:

Value | Description
00h | Mappingtabelle deaktiviert
01 bis 08 | Anzahl der Mappingeinträge

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of TxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des TxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des TxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Principle of TxPDO mapping

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1A00h
  • PDO 2 - Index 1A01h
  • PDO 3 - Index 1A02h
  • PDO 4 - Index 1A03h
  • PDO 5 - Index 1A04h
  • PDO 6 - Index 1A05h
  • PDO 7 - Index 1A06h
  • PDO 8 - Index 1A14h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A01.01h TxPDO2 Mapping - Erstes gemapptes Objekt

Name | COP_TxPDO2_Mapping_1ApplicationObject
Bezeichnung | TxPDO2 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO2_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A01.02h TxPDO2 Mapping - Zweites gemapptes Objekt

Name | COP_TxPDO2_Mapping_2ApplicationObject
Bezeichnung | TxPDO2 Mapping - Zweites gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO2_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A01.03h TxPDO2 Mapping - Drittes gemapptes Objekt

Name | COP_TxPDO2_Mapping_3ApplicationObject
Bezeichnung | TxPDO2 Mapping - Drittes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO2_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A01.04h TxPDO2 Mapping - Viertes gemapptes Objekt

Name | COP_TxPDO2_Mapping_4ApplicationObject
Bezeichnung | TxPDO2 Mapping - Viertes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO2_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A01.05h TxPDO2 Mapping - Fünftes gemapptes Objekt

Name | COP_TxPDO2_Mapping_5ApplicationObject
Bezeichnung | TxPDO2 Mapping - Fünftes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO2_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A01.06h TxPDO2 Mapping - Sechstes gemapptes Objekt

Name | COP_TxPDO2_Mapping_6ApplicationObject
Bezeichnung | TxPDO2 Mapping - Sechstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO2_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A01.07h TxPDO2 Mapping - Siebtes gemapptes Objekt

Name | COP_TxPDO2_Mapping_7ApplicationObject
Bezeichnung | TxPDO2 Mapping - Siebtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO2_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A01.08h TxPDO2 Mapping - Achtes gemapptes Objekt

Name | COP_TxPDO2_Mapping_8ApplicationObject
Bezeichnung | TxPDO2 Mapping - Achtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO2_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - TxPDO-3 Mapping

1A02.00h | COP_TxPDO3_Mapping_NumberOfMappedApplicationObjects | TxPDO3 Mapping - Anzahl der gemappten Obiekte in TxPDO 3
1A02.01h | COP_TxPDO3_Mapping_1ApplicationObject | TxPDO3 Mapping - Erstes gemapptes Objekt
1A02.02h | COP_TxPDO3_Mapping_2ApplicationObject | TxPDO3 Mapping - Zweites gemapptes Objekt
1A02.03h | COP_TxPDO3_Mapping_3ApplicationObject | TxPDO3 Mapping - Drittes gemapptes Objekt
1A02.04h | COP_TxPDO3_Mapping_4ApplicationObject | TxPDO3 Mapping - Viertes gemapptes Objekt
1A02.05h | COP_TxPDO3_Mapping_5ApplicationObject | TxPDO3 Mapping - Fünftes gemapptes Objekt
1A02.06h | COP_TxPDO3_Mapping_6ApplicationObject | TxPDO3 Mapping - Sechstes gemapptes Objekt
1A02.07h | COP_TxPDO3_Mapping_7ApplicationObject | TxPDO3 Mapping - Siebtes gemapptes Objekt
1A02.08h | COP_TxPDO3_Mapping_8ApplicationObject | TxPDO3 Mapping - Achtes gemapptes Objekt


1A02.00h TxPDO3 Mapping - Anzahl der gemappten Obiekte in TxPDO 3

Name | COP_TxPDO3_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | TxPDO3 Mapping - Anzahl der gemappten Obiekte in TxPDO 3
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO3_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Sende-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

TxPDO Mapping Werte:

Value | Description
00h | Mappingtabelle deaktiviert
01 bis 08 | Anzahl der Mappingeinträge

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of TxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des TxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des TxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Principle of TxPDO mapping

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1A00h
  • PDO 2 - Index 1A01h
  • PDO 3 - Index 1A02h
  • PDO 4 - Index 1A03h
  • PDO 5 - Index 1A04h
  • PDO 6 - Index 1A05h
  • PDO 7 - Index 1A06h
  • PDO 8 - Index 1A14h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A02.01h TxPDO3 Mapping - Erstes gemapptes Objekt

Name | COP_TxPDO3_Mapping_1ApplicationObject
Bezeichnung | TxPDO3 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO3_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A02.02h TxPDO3 Mapping - Zweites gemapptes Objekt

Name | COP_TxPDO3_Mapping_2ApplicationObject
Bezeichnung | TxPDO3 Mapping - Zweites gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO3_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A02.03h TxPDO3 Mapping - Drittes gemapptes Objekt

Name | COP_TxPDO3_Mapping_3ApplicationObject
Bezeichnung | TxPDO3 Mapping - Drittes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO3_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A02.04h TxPDO3 Mapping - Viertes gemapptes Objekt

Name | COP_TxPDO3_Mapping_4ApplicationObject
Bezeichnung | TxPDO3 Mapping - Viertes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO3_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A02.05h TxPDO3 Mapping - Fünftes gemapptes Objekt

Name | COP_TxPDO3_Mapping_5ApplicationObject
Bezeichnung | TxPDO3 Mapping - Fünftes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO3_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A02.06h TxPDO3 Mapping - Sechstes gemapptes Objekt

Name | COP_TxPDO3_Mapping_6ApplicationObject
Bezeichnung | TxPDO3 Mapping - Sechstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO3_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A02.07h TxPDO3 Mapping - Siebtes gemapptes Objekt

Name | COP_TxPDO3_Mapping_7ApplicationObject
Bezeichnung | TxPDO3 Mapping - Siebtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO3_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A02.08h TxPDO3 Mapping - Achtes gemapptes Objekt

Name | COP_TxPDO3_Mapping_8ApplicationObject
Bezeichnung | TxPDO3 Mapping - Achtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO3_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - TxPDO-4 Mapping

1A03.00h | COP_TxPDO4_Mapping_NumberOfMappedApplicationObjects | TxPDO4 Mapping - Anzahl der gemappten Obiekte in TxPDO 4
1A03.01h | COP_TxPDO4_Mapping_1ApplicationObject | TxPDO4 Mapping - Erstes gemapptes Objekt
1A03.02h | COP_TxPDO4_Mapping_2ApplicationObject | TxPDO4 Mapping - Zweites gemapptes Objekt
1A03.03h | COP_TxPDO4_Mapping_3ApplicationObject | TxPDO4 Mapping - Drittes gemapptes Objekt
1A03.04h | COP_TxPDO4_Mapping_4ApplicationObject | TxPDO4 Mapping - Viertes gemapptes Objekt
1A03.05h | COP_TxPDO4_Mapping_5ApplicationObject | TxPDO4 Mapping - Fünftes gemapptes Objekt
1A03.06h | COP_TxPDO4_Mapping_6ApplicationObject | TxPDO4 Mapping - Sechstes gemapptes Objekt
1A03.07h | COP_TxPDO4_Mapping_7ApplicationObject | TxPDO4 Mapping - Siebtes gemapptes Objekt
1A03.08h | COP_TxPDO4_Mapping_8ApplicationObject | TxPDO4 Mapping - Achtes gemapptes Objekt


1A03.00h TxPDO4 Mapping - Anzahl der gemappten Obiekte in TxPDO 4

Name | COP_TxPDO4_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | TxPDO4 Mapping - Anzahl der gemappten Obiekte in TxPDO 4
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO4_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Sende-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

TxPDO Mapping Werte:

Value | Description
00h | Mappingtabelle deaktiviert
01 bis 08 | Anzahl der Mappingeinträge

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of TxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des TxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des TxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Principle of TxPDO mapping

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1A00h
  • PDO 2 - Index 1A01h
  • PDO 3 - Index 1A02h
  • PDO 4 - Index 1A03h
  • PDO 5 - Index 1A04h
  • PDO 6 - Index 1A05h
  • PDO 7 - Index 1A06h
  • PDO 8 - Index 1A14h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A03.01h TxPDO4 Mapping - Erstes gemapptes Objekt

Name | COP_TxPDO4_Mapping_1ApplicationObject
Bezeichnung | TxPDO4 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO4_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A03.02h TxPDO4 Mapping - Zweites gemapptes Objekt

Name | COP_TxPDO4_Mapping_2ApplicationObject
Bezeichnung | TxPDO4 Mapping - Zweites gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO4_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A03.03h TxPDO4 Mapping - Drittes gemapptes Objekt

Name | COP_TxPDO4_Mapping_3ApplicationObject
Bezeichnung | TxPDO4 Mapping - Drittes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO4_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A03.04h TxPDO4 Mapping - Viertes gemapptes Objekt

Name | COP_TxPDO4_Mapping_4ApplicationObject
Bezeichnung | TxPDO4 Mapping - Viertes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO4_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A03.05h TxPDO4 Mapping - Fünftes gemapptes Objekt

Name | COP_TxPDO4_Mapping_5ApplicationObject
Bezeichnung | TxPDO4 Mapping - Fünftes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO4_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A03.06h TxPDO4 Mapping - Sechstes gemapptes Objekt

Name | COP_TxPDO4_Mapping_6ApplicationObject
Bezeichnung | TxPDO4 Mapping - Sechstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO4_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A03.07h TxPDO4 Mapping - Siebtes gemapptes Objekt

Name | COP_TxPDO4_Mapping_7ApplicationObject
Bezeichnung | TxPDO4 Mapping - Siebtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO4_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A03.08h TxPDO4 Mapping - Achtes gemapptes Objekt

Name | COP_TxPDO4_Mapping_8ApplicationObject
Bezeichnung | TxPDO4 Mapping - Achtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO4_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - TxPDO-5 Mapping

1A04.00h | COP_TxPDO5_Mapping_NumberOfMappedApplicationObjects | TxPDO5 Mapping - Anzahl der gemappten Obiekte in TxPDO 5
1A04.01h | COP_TxPDO5_Mapping_1ApplicationObject | TxPDO5 Mapping - Erstes gemapptes Objekt
1A04.02h | COP_TxPDO5_Mapping_2ApplicationObject | TxPDO5 Mapping - Zweites gemapptes Objekt
1A04.03h | COP_TxPDO5_Mapping_3ApplicationObject | TxPDO5 Mapping - Drittes gemapptes Objekt
1A04.04h | COP_TxPDO5_Mapping_4ApplicationObject | TxPDO5 Mapping - Viertes gemapptes Objekt
1A04.05h | COP_TxPDO5_Mapping_5ApplicationObject | TxPDO5 Mapping - Fünftes gemapptes Objekt
1A04.06h | COP_TxPDO5_Mapping_6ApplicationObject | TxPDO5 Mapping - Sechstes gemapptes Objekt
1A04.07h | COP_TxPDO5_Mapping_7ApplicationObject | TxPDO5 Mapping - Siebtes gemapptes Objekt
1A04.08h | COP_TxPDO5_Mapping_8ApplicationObject | TxPDO5 Mapping - Achtes gemapptes Objekt


1A04.00h TxPDO5 Mapping - Anzahl der gemappten Obiekte in TxPDO 5

Name | COP_TxPDO5_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | TxPDO5 Mapping - Anzahl der gemappten Obiekte in TxPDO 5
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO5_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Sende-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

TxPDO Mapping Werte:

Value | Description
00h | Mappingtabelle deaktiviert
01 bis 08 | Anzahl der Mappingeinträge

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of TxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des TxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des TxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Principle of TxPDO mapping

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1A00h
  • PDO 2 - Index 1A01h
  • PDO 3 - Index 1A02h
  • PDO 4 - Index 1A03h
  • PDO 5 - Index 1A04h
  • PDO 6 - Index 1A05h
  • PDO 7 - Index 1A06h
  • PDO 8 - Index 1A14h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A04.01h TxPDO5 Mapping - Erstes gemapptes Objekt

Name | COP_TxPDO5_Mapping_1ApplicationObject
Bezeichnung | TxPDO5 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO5_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A04.02h TxPDO5 Mapping - Zweites gemapptes Objekt

Name | COP_TxPDO5_Mapping_2ApplicationObject
Bezeichnung | TxPDO5 Mapping - Zweites gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO5_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A04.03h TxPDO5 Mapping - Drittes gemapptes Objekt

Name | COP_TxPDO5_Mapping_3ApplicationObject
Bezeichnung | TxPDO5 Mapping - Drittes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO5_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A04.04h TxPDO5 Mapping - Viertes gemapptes Objekt

Name | COP_TxPDO5_Mapping_4ApplicationObject
Bezeichnung | TxPDO5 Mapping - Viertes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO5_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A04.05h TxPDO5 Mapping - Fünftes gemapptes Objekt

Name | COP_TxPDO5_Mapping_5ApplicationObject
Bezeichnung | TxPDO5 Mapping - Fünftes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO5_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A04.06h TxPDO5 Mapping - Sechstes gemapptes Objekt

Name | COP_TxPDO5_Mapping_6ApplicationObject
Bezeichnung | TxPDO5 Mapping - Sechstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO5_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A04.07h TxPDO5 Mapping - Siebtes gemapptes Objekt

Name | COP_TxPDO5_Mapping_7ApplicationObject
Bezeichnung | TxPDO5 Mapping - Siebtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO5_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A04.08h TxPDO5 Mapping - Achtes gemapptes Objekt

Name | COP_TxPDO5_Mapping_8ApplicationObject
Bezeichnung | TxPDO5 Mapping - Achtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO5_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - TxPDO-6 Mapping

1A05.00h | COP_TxPDO6_Mapping_NumberOfMappedApplicationObjects | TxPDO6 Mapping - Anzahl der gemappten Obiekte in TxPDO 6
1A05.01h | COP_TxPDO6_Mapping_1ApplicationObject | TxPDO6 Mapping - Erstes gemapptes Objekt
1A05.02h | COP_TxPDO6_Mapping_2ApplicationObject | TxPDO6 Mapping - Zweites gemapptes Objekt
1A05.03h | COP_TxPDO6_Mapping_3ApplicationObject | TxPDO6 Mapping - Drittes gemapptes Objekt
1A05.04h | COP_TxPDO6_Mapping_4ApplicationObject | TxPDO6 Mapping - Viertes gemapptes Objekt
1A05.05h | COP_TxPDO6_Mapping_5ApplicationObject | TxPDO6 Mapping - Fünftes gemapptes Objekt
1A05.06h | COP_TxPDO6_Mapping_6ApplicationObject | TxPDO6 Mapping - Sechstes gemapptes Objekt
1A05.07h | COP_TxPDO6_Mapping_7ApplicationObject | TxPDO6 Mapping - Siebtes gemapptes Objekt
1A05.08h | COP_TxPDO6_Mapping_8ApplicationObject | TxPDO6 Mapping - Achtes gemapptes Objekt


1A05.00h TxPDO6 Mapping - Anzahl der gemappten Obiekte in TxPDO 6

Name | COP_TxPDO6_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | TxPDO6 Mapping - Anzahl der gemappten Obiekte in TxPDO 6
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO6_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Sende-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

TxPDO Mapping Werte:

Value | Description
00h | Mappingtabelle deaktiviert
01 bis 08 | Anzahl der Mappingeinträge

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of TxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des TxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des TxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Principle of TxPDO mapping

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1A00h
  • PDO 2 - Index 1A01h
  • PDO 3 - Index 1A02h
  • PDO 4 - Index 1A03h
  • PDO 5 - Index 1A04h
  • PDO 6 - Index 1A05h
  • PDO 7 - Index 1A06h
  • PDO 8 - Index 1A14h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A05.01h TxPDO6 Mapping - Erstes gemapptes Objekt

Name | COP_TxPDO6_Mapping_1ApplicationObject
Bezeichnung | TxPDO6 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO6_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A05.02h TxPDO6 Mapping - Zweites gemapptes Objekt

Name | COP_TxPDO6_Mapping_2ApplicationObject
Bezeichnung | TxPDO6 Mapping - Zweites gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO6_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A05.03h TxPDO6 Mapping - Drittes gemapptes Objekt

Name | COP_TxPDO6_Mapping_3ApplicationObject
Bezeichnung | TxPDO6 Mapping - Drittes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO6_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A05.04h TxPDO6 Mapping - Viertes gemapptes Objekt

Name | COP_TxPDO6_Mapping_4ApplicationObject
Bezeichnung | TxPDO6 Mapping - Viertes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO6_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A05.05h TxPDO6 Mapping - Fünftes gemapptes Objekt

Name | COP_TxPDO6_Mapping_5ApplicationObject
Bezeichnung | TxPDO6 Mapping - Fünftes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO6_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A05.06h TxPDO6 Mapping - Sechstes gemapptes Objekt

Name | COP_TxPDO6_Mapping_6ApplicationObject
Bezeichnung | TxPDO6 Mapping - Sechstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO6_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A05.07h TxPDO6 Mapping - Siebtes gemapptes Objekt

Name | COP_TxPDO6_Mapping_7ApplicationObject
Bezeichnung | TxPDO6 Mapping - Siebtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO6_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A05.08h TxPDO6 Mapping - Achtes gemapptes Objekt

Name | COP_TxPDO6_Mapping_8ApplicationObject
Bezeichnung | TxPDO6 Mapping - Achtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO6_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - TxPDO-7 Mapping

1A06.00h | COP_TxPDO7_Mapping_NumberOfMappedApplicationObjects | TxPDO7 Mapping - Anzahl der gemappten Obiekte in TxPDO 7
1A06.01h | COP_TxPDO7_Mapping_1ApplicationObject | TxPDO7 Mapping - Erstes gemapptes Objekt
1A06.02h | COP_TxPDO7_Mapping_2ApplicationObject | TxPDO7 Mapping - Zweites gemapptes Objekt
1A06.03h | COP_TxPDO7_Mapping_3ApplicationObject | TxPDO7 Mapping - Drittes gemapptes Objekt
1A06.04h | COP_TxPDO7_Mapping_4ApplicationObject | TxPDO7 Mapping - Viertes gemapptes Objekt
1A06.05h | COP_TxPDO7_Mapping_5ApplicationObject | TxPDO7 Mapping - Fünftes gemapptes Objekt
1A06.06h | COP_TxPDO7_Mapping_6ApplicationObject | TxPDO7 Mapping - Sechstes gemapptes Objekt
1A06.07h | COP_TxPDO7_Mapping_7ApplicationObject | TxPDO7 Mapping - Siebtes gemapptes Objekt
1A06.08h | COP_TxPDO7_Mapping_8ApplicationObject | TxPDO7 Mapping - Achtes gemapptes Objekt


1A06.00h TxPDO7 Mapping - Anzahl der gemappten Obiekte in TxPDO 7

Name | COP_TxPDO7_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | TxPDO7 Mapping - Anzahl der gemappten Obiekte in TxPDO 7
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO7_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Sende-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

TxPDO Mapping Werte:

Value | Description
00h | Mappingtabelle deaktiviert
01 bis 08 | Anzahl der Mappingeinträge

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of TxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des TxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des TxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Principle of TxPDO mapping

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1A00h
  • PDO 2 - Index 1A01h
  • PDO 3 - Index 1A02h
  • PDO 4 - Index 1A03h
  • PDO 5 - Index 1A04h
  • PDO 6 - Index 1A05h
  • PDO 7 - Index 1A06h
  • PDO 8 - Index 1A14h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A06.01h TxPDO7 Mapping - Erstes gemapptes Objekt

Name | COP_TxPDO7_Mapping_1ApplicationObject
Bezeichnung | TxPDO7 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO7_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A06.02h TxPDO7 Mapping - Zweites gemapptes Objekt

Name | COP_TxPDO7_Mapping_2ApplicationObject
Bezeichnung | TxPDO7 Mapping - Zweites gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO7_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A06.03h TxPDO7 Mapping - Drittes gemapptes Objekt

Name | COP_TxPDO7_Mapping_3ApplicationObject
Bezeichnung | TxPDO7 Mapping - Drittes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO7_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A06.04h TxPDO7 Mapping - Viertes gemapptes Objekt

Name | COP_TxPDO7_Mapping_4ApplicationObject
Bezeichnung | TxPDO7 Mapping - Viertes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO7_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A06.05h TxPDO7 Mapping - Fünftes gemapptes Objekt

Name | COP_TxPDO7_Mapping_5ApplicationObject
Bezeichnung | TxPDO7 Mapping - Fünftes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO7_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A06.06h TxPDO7 Mapping - Sechstes gemapptes Objekt

Name | COP_TxPDO7_Mapping_6ApplicationObject
Bezeichnung | TxPDO7 Mapping - Sechstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO7_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A06.07h TxPDO7 Mapping - Siebtes gemapptes Objekt

Name | COP_TxPDO7_Mapping_7ApplicationObject
Bezeichnung | TxPDO7 Mapping - Siebtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO7_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A06.08h TxPDO7 Mapping - Achtes gemapptes Objekt

Name | COP_TxPDO7_Mapping_8ApplicationObject
Bezeichnung | TxPDO7 Mapping - Achtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO7_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 1000h (DS301) - TxPDO-21 Mapping

1A14.00h | COP_TxPDO21_Mapping_NumberOfMappedApplicationObjects | TxPDO21 Mapping - Anzahl der gemappten Obiekte in TxPDO 21
1A14.01h | COP_TxPDO21_Mapping_1ApplicationObject | TxPDO21 Mapping - Erstes gemapptes Objekt
1A14.02h | COP_TxPDO21_Mapping_2ApplicationObject | TxPDO21 Mapping - Zweites gemapptes Objekt
1A14.03h | COP_TxPDO21_Mapping_3ApplicationObject | TxPDO21 Mapping - Drittes gemapptes Objekt
1A14.04h | COP_TxPDO21_Mapping_4ApplicationObject | TxPDO21 Mapping - Viertes gemapptes Objekt
1A14.05h | COP_TxPDO21_Mapping_5ApplicationObject | TxPDO21 Mapping - Fünftes gemapptes Objekt
1A14.06h | COP_TxPDO21_Mapping_6ApplicationObject | TxPDO21 Mapping - Sechstes gemapptes Objekt
1A14.07h | COP_TxPDO21_Mapping_7ApplicationObject | TxPDO21 Mapping - Siebtes gemapptes Objekt
1A14.08h | COP_TxPDO21_Mapping_8ApplicationObject | TxPDO21 Mapping - Achtes gemapptes Objekt


1A14.00h TxPDO21 Mapping - Anzahl der gemappten Obiekte in TxPDO 21

Name | COP_TxPDO21_Mapping_NumberOfMappedApplicationObjects
Bezeichnung | TxPDO21 Mapping - Anzahl der gemappten Obiekte in TxPDO 21
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. 08h]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO21_Mapping_1ApplicationObject

Beschreibung

Das Objekt enthält die Mapping -Parameter für Sende-PDOs.

Sub-index 00h enthält die Anzahl der gemappten SDO-Objekte in diesem PDO.
Es können 1 bis zu 8 Objekte in ein PDO (8 mal 1 Byte) gemapped werden -> maximal 8 Byte in ein PDO.

TxPDO Mapping Werte:

Value | Description
00h | Mappingtabelle deaktiviert
01 bis 08 | Anzahl der Mappingeinträge

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte mit Index, Subindex und Datenlänge in Bits. Es sind Datenlängen 8,16,32 Bit möglich.

Structure of TxPDO mapping

Beim Versuch einen ungültigen Wert zu setzen,antwortet das Gerät mit einer Fehlermeldung.
Ursachen für nicht plausible Werte können sein:
- Versuch ein nicht existierendes Objekt zu mappen
- eine falsche Angabe der Bitlänge
- überschreiten der Gesamtlänge von 8 Byte in einem PDO.

Folgende Prozedur erlaubt ein dynamisches Mapping im NMT State Operational und Preoperational:
  1. Deaktivieren des TxPDO durch Setzen von Bit 31 = 1b im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
  2. Deaktivieren des PDOs durch Setzen von Subindex 00h auf 00h.
  3. Ändern des Mappings durch Ändern der jeweiligen Subindizes.
  4. Aktivieren des Mappings durch Setzen des Subindex 00h auf die Anzahl der gemappten Objekte.
  5. Aktivieren des TxPDO durch Setzen von Bit 31 = 0 im Subindex 01h der entsprechenden TxPDO Kommunikationsparameter-Einstellungen (COP_TxPDO1_CommunicationParameter_HighestSubindexSupported).
Kann ein Objekt nicht gemappt werden oder existiert das Objekt nicht, wird ein SDO Fehler zurückgemeldet (abort code: 0602 0000h or 0604 0041h).
Wird bei Aktivierung des Mappings ein Fehler festgestellt, wird ebenfalls ein SDO-Fehlercode zurückgemeldet.

Principle of TxPDO mapping

Das Gerät unterstützt 8 PDOs:
  • PDO 1 - Index 1A00h
  • PDO 2 - Index 1A01h
  • PDO 3 - Index 1A02h
  • PDO 4 - Index 1A03h
  • PDO 5 - Index 1A04h
  • PDO 6 - Index 1A05h
  • PDO 7 - Index 1A06h
  • PDO 8 - Index 1A14h

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A14.01h TxPDO21 Mapping - Erstes gemapptes Objekt

Name | COP_TxPDO21_Mapping_1ApplicationObject
Bezeichnung | TxPDO21 Mapping - Erstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO21_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A14.02h TxPDO21 Mapping - Zweites gemapptes Objekt

Name | COP_TxPDO21_Mapping_2ApplicationObject
Bezeichnung | TxPDO21 Mapping - Zweites gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO21_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A14.03h TxPDO21 Mapping - Drittes gemapptes Objekt

Name | COP_TxPDO21_Mapping_3ApplicationObject
Bezeichnung | TxPDO21 Mapping - Drittes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO21_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A14.04h TxPDO21 Mapping - Viertes gemapptes Objekt

Name | COP_TxPDO21_Mapping_4ApplicationObject
Bezeichnung | TxPDO21 Mapping - Viertes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO21_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A14.05h TxPDO21 Mapping - Fünftes gemapptes Objekt

Name | COP_TxPDO21_Mapping_5ApplicationObject
Bezeichnung | TxPDO21 Mapping - Fünftes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO21_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A14.06h TxPDO21 Mapping - Sechstes gemapptes Objekt

Name | COP_TxPDO21_Mapping_6ApplicationObject
Bezeichnung | TxPDO21 Mapping - Sechstes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO21_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A14.07h TxPDO21 Mapping - Siebtes gemapptes Objekt

Name | COP_TxPDO21_Mapping_7ApplicationObject
Bezeichnung | TxPDO21 Mapping - Siebtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO21_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


1A14.08h TxPDO21 Mapping - Achtes gemapptes Objekt

Name | COP_TxPDO21_Mapping_8ApplicationObject
Bezeichnung | TxPDO21 Mapping - Achtes gemapptes Objekt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [00h .. FFFFFFFFh]
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MappingTxPdo(pdo_nr, mapp_list)
Querverweis | COP_TxPDO21_Mapping_NumberOfMappedApplicationObjects

Beschreibung

Subindex 01h bis 08h enthält die Informationen der gemappten Objekte. Ein Objekt beschreibt einen Eintrag in die Mappingtabelle mit Index, Subindex und Datenlänge. Die Länge wird dabei in Bit angegeben. Es werden 8,16,32 Bit-Längen unterstützt.

Siehe auch COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import mc

d = Dsa(1)                 # NodeId = 1

pdo = 1                    # PDO-Nummer [1..7, 21]

print "------"
print "RxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1400+(pdo-1),0x01))
print "TxPdo%d_CobId            = 0x%04X" % (pdo,d.SdoRd(0x1800+(pdo-1),0x01))

print "RxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1400+(pdo-1),0x02))
print "TxPdo%d_TransmissionType = 0x%x"   % (pdo,d.SdoRd(0x1800+(pdo-1),0x02))

print "RxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1400+(pdo-1),0x03)/10)
print "TxPdo%d_InhibitTime      = %d"     % (pdo,d.SdoRd(0x1800+(pdo-1),0x03)/10)

print "MappingRxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1600+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1600+(pdo-1),subindex))

print "MappingTxPdo%d:"                   % (pdo)
for subindex in xrange(1,d.SdoRd(0x1A00+(pdo-1),0x00)+1):
   print "   - 0x%X" % (d.SdoRd(0x1A00+(pdo-1),subindex))

#  Mapping des RxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits        8Bits                 32Bits                 8Bits MSB

d.SdoWr(0x1600,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1600,0x01, 0x30002010)       # Objekt 0: Device command - data 0 (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x20)
#                      index (0x3000)

d.SdoWr(0x1600,0x02, 0x30001208)       # Objekt 1: Device command - data 2 (1 Byte)
d.SdoWr(0x1600,0x03, 0x30001120)       # Objekt 2: Device command - data 1 (4 Bytes)
d.SdoWr(0x1600,0x04, 0x30000108)       # Objekt 3: Device command - execute on change (1 Byte)
d.SdoWr(0x1600,0x00, 0x04)             # Mapping mit 4 Objekten aktivieren

#  Mapping des TxPDO1's setzen.
#
#  PDO Byte-Konfiguration:
#
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
#  +--------+--------+--------+--------+--------+--------+--------+--------+
#  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
#  +--------+--------+--------+--------+--------+--------+--------+--------+
# LSB    16Bits            16Bits                     32Bits              MSB

d.SdoWr(0x1A00,0x00, 0x00)             # Mapping deaktivieren
d.SdoWr(0x1A00,0x01, 0x30020010)       # Objekt 0: Status register (2 Bytes)
#                      |   | |
#                      |   | length in bits (only 0x08,0x10,0x20 possible) (0x10)
#                      |   subindex (0x00)
#                      index (0x3002)

d.SdoWr(0x1A00,0x02, 0x30010010)       # Objekt 1: Error register (2 Bytes)
d.SdoWr(0x1A00,0x03, 0x30007020)       # Objekt 2: Device command - result 0 (4 Bytes)
d.SdoWr(0x1A00,0x00, 0x03)             # Mapping mit 3 Objekten aktivieren

mc.Can.PdoWr(0, [ 1, 1])               # StartNode - Gerät in Operational-Zustand umschalten
                                       # (PDO werden aktiviert)


Inhalt - Parameter 2000h

2000.00h | DS2000_CopConfigParam_HighestSubindexSupported | CANopen Konfiguration - Höchster unterstützter Subindex
2000.01h | DS2000_CopConfigParam_WriteEnable | CANopen Konfiguration - Schreibfreigabe
2000.02h | DS2000_CopConfigParam_UserNodeId | CANopen Konfiguration - Benutzer Node-ID
2000.03h | DS2000_CopConfigParam_UserBaudrate | CANopen Konfiguration - Benutzer Baudrate
2000.04h | DS2000_CopConfigParam_AutoOperational | CANopen Konfiguration - Auto Operational
2000.05h | DS2000_CopConfigParam_MessageOnBootup | CANopen Konfiguration - Nachricht beim Bootup
2000.07h | DS2000_CopConfigParam_ProfibusSlaveNr | CANopen Konfiguration - PROFIBUS Slave-Nummer
2002.00h | DS2000_DS402ConfigParam_HighestSubindexSupported | DS402 Konfiguration - Höchster unterstützter Subindex
2002.01h | DS2000_DS402ConfigParam_WriteEnable | DS402 Konfiguration - Schreibfreigabe
2002.02h | DS2000_DS402ConfigParam_DS402Activation | DS402 Konfiguration - DS402 Aktivierung
2009.00h | DS2000_CpuCommand_HighestSubindexSupported | CPU Kommando - Höchster unterstützter Subindex
2009.01h | DS2000_CpuCommand_WriteEnable | CPU Kommando - Schreibfreigabe
2009.02h | DS2000_CpuCommand_Command | CPU Kommando - Kommando
2009.03h | DS2000_CpuCommand_DelayTime | CPU Kommando - Verzögerungszeit
2011.00h | DS2000_RestoreDefaultParameters_HighestSubindexSupported | Defaultparameter wiederherstellen - Höchster unterstützter Subindex
2011.01h | DS2000_RestoreDefaultParameters_All | Defaultparameter wiederherstellen - Alle Defaultparameter wiederherstellen
2011.02h | DS2000_RestoreDefaultParameters_Communication | Defaultparameter wiederherstellen - Kommunikationsdefaultparameter wiederherstellen
2011.03h | DS2000_RestoreDefaultParameters_Application | Defaultparameter wiederherstellen - Applikationsdefaultparameter wiederherstellen
2011.05h | DS2000_RestoreDefaultParameters_Manufacturer_0x2000 | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x2000-0x2FFF)
2011.06h | DS2000_RestoreDefaultParameters_Manufacturer_0x3000 | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x3000-0x3FFF)
2021.00h | DS2000_SyncProducer_HighestSubindexSupported | Sync Producer - Höchster unterstützter Subindex
2021.01h | DS2000_SyncProducer_Enable | Sync Producer - Aktivierung


Inhalt - Parameter 2000h - CANopen Konfiguration

2000.00h | DS2000_CopConfigParam_HighestSubindexSupported | CANopen Konfiguration - Höchster unterstützter Subindex
2000.01h | DS2000_CopConfigParam_WriteEnable | CANopen Konfiguration - Schreibfreigabe
2000.02h | DS2000_CopConfigParam_UserNodeId | CANopen Konfiguration - Benutzer Node-ID
2000.03h | DS2000_CopConfigParam_UserBaudrate | CANopen Konfiguration - Benutzer Baudrate
2000.04h | DS2000_CopConfigParam_AutoOperational | CANopen Konfiguration - Auto Operational
2000.05h | DS2000_CopConfigParam_MessageOnBootup | CANopen Konfiguration - Nachricht beim Bootup
2000.07h | DS2000_CopConfigParam_ProfibusSlaveNr | CANopen Konfiguration - PROFIBUS Slave-Nummer


2000.00h CANopen Konfiguration - Höchster unterstützter Subindex

Name | DS2000_CopConfigParam_HighestSubindexSupported
Bezeichnung | CANopen Konfiguration - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | 7
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS2000_CopConfigParam_WriteEnable, DS2000_CopConfigParam_UserNodeId, DS2000_CopConfigParam_UserBaudrate, DS2000_CopConfigParam_AutoOperational, DS2000_CopConfigParam_MessageOnBootup, DS2000_CopConfigParam_ProfibusSlaveNr

Beschreibung

Das Objekt enthält die CANopen-Konfigurationsparameter.

Funktion der Subindizes:
  • Sub-index 00h - enthält die Anzahl der unterstützen Subindizes.
  • Sub-index 01h - setzt die Schreibfreigabe
  • Sub-index 02h - enthält die Benutzer-NodeId
  • Sub-index 03h - enthält die Benutzer-Baudrate des CAN-Busses
  • Sub-index 04h - enthält die Zeit für Auto-Operational
  • Sub-index 05h - enthält die Konfiguration der Nachrichten beim Bootup
  • Sub-index 06h - enthält die PIN-Nummer
  • Sub-index 07h - enthält die PROFIBUS Slave-Nummer


2000.07h CANopen Konfiguration - PROFIBUS Slave-Nummer

Name | DS2000_CopConfigParam_ProfibusSlaveNr
Bezeichnung | CANopen Konfiguration - PROFIBUS Slave-Nummer
Datentyp | int8
Zugriff | Lesen / Schreiben
Attribute | Wird beim Beschreiben gespeichert; Passwortgeschützt
Wertbereich | [-3 .. 126] ausgenommen {0}
Defaultwert | -1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.03.B5
Geräte | Alle
PLC Funktion | -
Querverweis | DS2000_CopConfigParam_WriteEnable

Beschreibung

Der Parameter definiert die PROFIBUS Slave-Nummer des Gerätes. Der Wert wird nur bei den Geräten mit der PROFIBUS-Schnittstelle ausgewertet.

Parameterwerte:
Wert | Bedeutung (Geräte ohne Hex-Schalter) | Bedeutung (Geräte mit Hex-Schalter)
-3 | Die PROFIBUS Slave-Nummer definieren die entsprechende Eingänge (nur bei den Modul-Varianten). 5 pins und externe Schaltung (MUX) sind nötig. | Nicht möglich
-2 | Die PROFIBUS Slave-Nummer definieren die entsprechende Eingänge (nur bei den Modul-Varianten). 8 pins sind nötig | Nicht möglich
-1 | Die PROFIBUS Slave-Nummer ist 126. | Die PROFIBUS Slave-Nummer definieren die HEX-Schalter.
1 ... 126 | Software PROFIBUS Slave-Nummer. Der Wert des Parameters wird als die PROFIBUS Slave-Nummer genommen.
Wichtig !!!
Der Wert des Parameters wird erst nach dem Neustart des Gerätes übernommen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId

d.SdoWr(0x2000, 0x01, 0x6E657277)               # Schreiben aktivieren
d.SdoWr(0x2000, 0x07, 76, timeout=500)          # PROFIBUS Slave-Nummer setzen

print "Die PROFIBUS Slave-Nummer wird erst nach dem Neustart des Gerätes übernommen."


Inhalt - Parameter 2000h - DS402 Konfiguration

2002.00h | DS2000_DS402ConfigParam_HighestSubindexSupported | DS402 Konfiguration - Höchster unterstützter Subindex
2002.01h | DS2000_DS402ConfigParam_WriteEnable | DS402 Konfiguration - Schreibfreigabe
2002.02h | DS2000_DS402ConfigParam_DS402Activation | DS402 Konfiguration - DS402 Aktivierung


2002.00h DS402 Konfiguration - Höchster unterstützter Subindex

Name | DS2000_DS402ConfigParam_HighestSubindexSupported
Bezeichnung | DS402 Konfiguration - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | 2
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS2000_DS402ConfigParam_WriteEnable, DS2000_DS402ConfigParam_DS402Activation

Beschreibung

Das Objekt enthält die DS402-Konfigurationsparameter.

Funktion der Subindizes:
  • Sub-index 00h - enthält die Anzahl der unterstützen Subindizes.
  • Sub-index 01h - setzt die Schreibfreigabe
  • Sub-index 02h - deaktiviert / aktiviert das Profil DS402


2002.01h DS402 Konfiguration - Schreibfreigabe

Name | DS2000_DS402ConfigParam_WriteEnable
Bezeichnung | DS402 Konfiguration - Schreibfreigabe
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS2000_DS402ConfigParam_HighestSubindexSupported

Beschreibung

Der Parameter setzt die Schreibfreigabe für alle Subindizes des Objektes mit dem Index 2002h.

Zur Vermeidung der unbeabsichtigten Änderung der Parameter mit dem Index 2002h , wird ein spezielles Codewort benötigt. Um die Schreibfreigabe zu aktivieren, muss man den Parameter auf 0x6E657277 (die ASCII-Zeichen für "WREN") setzen. Alle ändere Werte deaktivieren die Schreibfreigabe.

Die Information, ob die Schreibfreigabe aktiv ist, wird beim Lesen des Parameters zurückgeliefert.

Parameterwerte beim Lesen:
Wert | Bedeutung
0 | nur Lesezugriff
1 | Lese- und Schreibzugriff


2002.02h DS402 Konfiguration - DS402 Aktivierung

Name | DS2000_DS402ConfigParam_DS402Activation
Bezeichnung | DS402 Konfiguration - DS402 Aktivierung
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | {0, 1}
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | EnableDs402(), DisableDs402(), IsEnabledDs402(), IsDisabledDs402()
Querverweis | DS2000_DS402ConfigParam_WriteEnable

Beschreibung

Der Parameter deaktiviert / aktiviert das Profil DS402.

Parameterwerte:
Wert | Bedeutung
0 | Das Profil DS402 deaktivieren
1 | Das Profil DS402 aktivieren

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId

d.SdoWr(0x2002, 0x01, 0x6E657277)               # Schreiben aktivieren
d.SdoWr(0x2002, 0x02, 0, timeout=500)           # DS402 deaktivieren

#d.SdoWr(0x1010,0x05,0x65766173,timeout=21000)  # Parameter von 0x2000-Bereich speichern


Inhalt - Parameter 3000h (DSA)

3000.00h | DEV_Cmd | Gerätekommando
3000.01h | DEV_Cmd_ExecOnChange | Gerätekommando - Ausführbar bei Änderung
3000.02h | DEV_Cmd2 | Gerätekommando 2
3000.08h | DEV_Cmd_SetError | Gerätekommando - Fehlersetzen
3000.10h | DEV_CmdData0 | Gerätekommando - Daten 0
3000.11h | DEV_CmdData1 | Gerätekommando - Daten 1
3000.12h | DEV_CmdData2 | Gerätekommando - Daten 2
3000.20h | DEV_CmdData0_i16 | Gerätekommando - Daten 0 (int16)
3000.21h | DEV_CmdData1_i16 | Gerätekommando - Daten 1 (int16)
3000.22h | DEV_CmdData2_i16 | Gerätekommando - Daten 2 (int16)
3000.70h | DEV_CmdResult | Gerätekommando - Ergebnis
3000.81h | DEV_CmdError | Gerätekommando - Fehler
3000.83h | DEV_CmdCounter | Gerätekommando - Zähler
3001.00h | DEV_ErrorReg | Error Register
3002.00h | DEV_Status | Statusregister
3003.00h | DEV_Mode | Betriebsart
3004.00h | DEV_Enable | Betriebsfreigabe
3008.00h | DEV_ConfigErrors | Fehler Konfiguration
3010.11h | DEV_Event_Cmd1OnError | Erreigniskommando 1 - bei Fehlern
3010.12h | DEV_Event_Cmd2OnError | Erreigniskommando 2 - bei Fehlern
3010.13h | DEV_Event_Cmd3OnError | Erreigniskommando 3 - bei Fehlern
3010.14h | DEV_Event_Cmd4OnError | Erreigniskommando 4 - bei Fehlern
3010.31h | DEV_Event_Cmd1OnCommError | Erreigniskommando 1 - bei Kommunikationsfehlern
3010.32h | DEV_Event_Cmd2OnCommError | Erreigniskommando 2 - bei Kommunikationsfehlern
3010.33h | DEV_Event_Cmd3OnCommError | Erreigniskommando 3 - bei Kommunikationsfehlern
3010.34h | DEV_Event_Cmd4OnCommError | Erreigniskommando 4 - bei Kommunikationsfehlern
3012.10h | DEV_Event_CmdOnSpecificError1 | Erreigniskommandos - bei spezifischem Fehler 1
3012.11h | DEV_Event_Cmd1OnSpecificError1 | Erreigniskommando 1 - bei spezifischem Fehler 1
3012.12h | DEV_Event_Cmd2OnSpecificError1 | Erreigniskommando 2 - bei spezifischem Fehler 1
3012.13h | DEV_Event_Cmd3OnSpecificError1 | Erreigniskommando 3 - bei spezifischem Fehler 1
3012.14h | DEV_Event_Cmd4OnSpecificError1 | Erreigniskommando 4 - bei spezifischem Fehler 1
3012.20h | DEV_Event_CmdOnSpecificError2 | Erreigniskommandos - bei spezifischem Fehler 2
3012.21h | DEV_Event_Cmd1OnSpecificError2 | Erreigniskommando 1 - bei spezifischem Fehler 2
3012.22h | DEV_Event_Cmd2OnSpecificError2 | Erreigniskommando 2 - bei spezifischem Fehler 2
3012.23h | DEV_Event_Cmd3OnSpecificError2 | Erreigniskommando 3 - bei spezifischem Fehler 2
3012.24h | DEV_Event_Cmd4OnSpecificError2 | Erreigniskommando 4 - bei spezifischem Fehler 2
3012.30h | DEV_Event_CmdOnSpecificError3 | Erreigniskommandos - bei spezifischem Fehler 3
3012.31h | DEV_Event_Cmd1OnSpecificError3 | Erreigniskommando 1 - bei spezifischem Fehler 3
3012.32h | DEV_Event_Cmd2OnSpecificError3 | Erreigniskommando 2 - bei spezifischem Fehler 3
3012.33h | DEV_Event_Cmd3OnSpecificError3 | Erreigniskommando 3 - bei spezifischem Fehler 3
3012.34h | DEV_Event_Cmd4OnSpecificError3 | Erreigniskommando 4 - bei spezifischem Fehler 3
3012.40h | DEV_Event_CmdOnSpecificError4 | Erreigniskommandos - bei spezifischen Fehler 4
3012.41h | DEV_Event_Cmd1OnSpecificError4 | Erreigniskommando 1 - bei spezifischem Fehler 4
3012.42h | DEV_Event_Cmd2OnSpecificError4 | Erreigniskommando 2 - bei spezifischem Fehler 4
3012.43h | DEV_Event_Cmd3OnSpecificError4 | Erreigniskommando 3 - bei spezifischem Fehler 4
3012.44h | DEV_Event_Cmd4OnSpecificError4 | Erreigniskommando 4 - bei spezifischem Fehler 4
3014.11h | DEV_Event1_OnUserCmd1 | Kommando 1 bei Benutzerkommando 1
3014.12h | DEV_Event2_OnUserCmd1 | Kommando 2 bei Benutzerkommando 1
3014.13h | DEV_Event3_OnUserCmd1 | Kommando 3 bei Benutzerkommando 1
3014.14h | DEV_Event4_OnUserCmd1 | Kommando 4 bei Benutzerkommando 1
3014.21h | DEV_Event1_OnUserCmd2 | Kommando 1 bei Benutzerkommando 2
3014.22h | DEV_Event2_OnUserCmd2 | Kommando 2 bei Benutzerkommando 2
3014.23h | DEV_Event3_OnUserCmd2 | Kommando 3 bei Benutzerkommando 2
3014.24h | DEV_Event4_OnUserCmd2 | Kommando 4 bei Benutzerkommando 2
3014.31h | DEV_Event1_OnUserCmd3 | Kommando 1 bei Benutzerkommando 3
3014.32h | DEV_Event2_OnUserCmd3 | Kommando 2 bei Benutzerkommando 3
3014.33h | DEV_Event3_OnUserCmd3 | Kommando 3 bei Benutzerkommando 3
3014.34h | DEV_Event4_OnUserCmd3 | Kommando 4 bei Benutzerkommando 3
3014.41h | DEV_Event1_OnUserCmd4 | Kommando 1 bei Benutzerkommando 4
3014.42h | DEV_Event2_OnUserCmd4 | Kommando 2 bei Benutzerkommando 4
3014.43h | DEV_Event3_OnUserCmd4 | Kommando 3 bei Benutzerkommando 4
3014.44h | DEV_Event4_OnUserCmd4 | Kommando 4 bei Benutzerkommando 4
3014.51h | DEV_Event1_OnUserCmd5 | Kommando 1 bei Benutzerkommando 5
3014.52h | DEV_Event2_OnUserCmd5 | Kommando 2 bei Benutzerkommando 5
3014.53h | DEV_Event3_OnUserCmd5 | Kommando 3 bei Benutzerkommando 5
3014.54h | DEV_Event4_OnUserCmd5 | Kommando 4 bei Benutzerkommando 5
3014.61h | DEV_Event1_OnUserCmd6 | Kommando 1 bei Benutzerkommando 6
3014.62h | DEV_Event2_OnUserCmd6 | Kommando 2 bei Benutzerkommando 6
3014.63h | DEV_Event3_OnUserCmd6 | Kommando 3 bei Benutzerkommando 6
3014.64h | DEV_Event4_OnUserCmd6 | Kommando 4 bei Benutzerkommando 6
3014.71h | DEV_Event1_OnUserCmd7 | Kommando 1 bei Benutzerkommando 7
3014.72h | DEV_Event2_OnUserCmd7 | Kommando 2 bei Benutzerkommando 7
3014.73h | DEV_Event3_OnUserCmd7 | Kommando 3 bei Benutzerkommando 7
3014.74h | DEV_Event4_OnUserCmd7 | Kommando 4 bei Benutzerkommando 7
3014.81h | DEV_Event1_OnUserCmd8 | Kommando 1 bei Benutzerkommando 8
3014.82h | DEV_Event2_OnUserCmd8 | Kommando 2 bei Benutzerkommando 8
3014.83h | DEV_Event3_OnUserCmd8 | Kommando 3 bei Benutzerkommando 8
3014.84h | DEV_Event4_OnUserCmd8 | Kommando 4 bei Benutzerkommando 8
301A.00h | DEV_ValueEvent1_Config | Ereignis bei Wert 1 - Konfiguration
301A.01h | DEV_ValueEvent1_Status | Ereignis bei Wert 1 - Status
301A.02h | DEV_ValueEvent1_ParNr | Ereignis bei Wert 1 - Parameter
301A.03h | DEV_ValueEvent1_PollingTime | Ereignis bei Wert 1 - Polling Zeit
301A.04h | DEV_ValueEvent1_ScaleNum | Ereignis bei Wert 1 - Skalierung Nenner
301A.05h | DEV_ValueEvent1_ScaleDen | Ereignis bei Wert 1 - Skalierung Zähler
301A.06h | DEV_ValueEvent1_ScaledValue | Ereignis bei Wert 1 - Skalierter Wert
301A.08h | DEV_ValueEvent1_Treshold1 | Ereignis bei Wert 1 - Schwellwert 1
301A.09h | DEV_ValueEvent1_Hysteresis1 | Ereignis bei Wert 1 - Hysterese 1
301A.0Ah | DEV_ValueEvent1_Mask1 | Ereignis bei Wert 1 - Maske 1
301A.0Bh | DEV_ValueEvent1_Cmd1 | Ereignis bei Wert 1 - Kommando 1
301A.0Ch | DEV_ValueEvent1_Cmd1_Data0 | Ereignis bei Wert 1 - Kommando 1 Daten 0
301A.0Dh | DEV_ValueEvent1_Cmd1_Data1 | Ereignis bei Wert 1 - Kommando 1 Daten 1
301A.0Eh | DEV_ValueEvent1_Treshold2 | Ereignis bei Wert 1 - Schwellwert 2
301A.0Fh | DEV_ValueEvent1_Hysteresis2 | Ereignis bei Wert 1 - Hysterese 2
301A.10h | DEV_ValueEvent1_Mask2 | Ereignis bei Wert 1 - Maske 2
301A.11h | DEV_ValueEvent1_Cmd2 | Ereignis bei Wert 1 - Kommando 2
301A.12h | DEV_ValueEvent1_Cmd2_Data0 | Ereignis bei Wert 1 - Kommando 2 Daten 0
301A.13h | DEV_ValueEvent1_Cmd2_Data1 | Ereignis bei Wert 1 - Kommando 2 Daten 1
301D.00h | DEV_LatchEvent0_Control | Latch Event 1 - Control
301D.01h | DEV_LatchEvent0_Status | Latch Event 1 - Status
301D.03h | DEV_LatchEvent0_Mode | Latch Event 1 - Modus
301D.08h | DEV_LatchEvent0_ParTrigger | Latch Event 1 - Trigger Parameter
301D.09h | DEV_LatchEvent0_ParToLatch | Latch Event 1 - Gelatchter Parameter
301D.10h | DEV_LatchEvent0_LhCount | Latch Event 1 - Low-High Flankenzähler
301D.11h | DEV_LatchEvent0_LhVal | Latch Event 1 - Low-High Flanke gelatchter Wert
301D.12h | DEV_LatchEvent0_LhDiff | Latch Event 1 - Differenz Low-High - High-Low
301D.13h | DEV_LatchEvent0_HlCount | Latch Event 1 - High-Low Flankenzähler
301D.14h | DEV_LatchEvent0_HlVal | Latch Event 1 - High-Low Flanke gelatchter Wert
301D.15h | DEV_LatchEvent0_HlDiff | Latch Event 1 - Differenz High-Low - Low-High
301D.20h | DEV_LatchEvent1_Control | Latch Event 2 - Control
301D.21h | DEV_LatchEvent1_Status | Latch Event 2 - Status
301D.23h | DEV_LatchEvent1_Mode | Latch Event 2 - Modus
301D.28h | DEV_LatchEvent1_ParTrigger | Latch Event 2 - Trigger Parameter
301D.29h | DEV_LatchEvent1_ParToLatch | Latch Event 2 - Gelatchter Parameter
301D.30h | DEV_LatchEvent1_LhCount | Latch Event 2 - Low-High Flankenzähler
301D.31h | DEV_LatchEvent1_LhVal | Latch Event 2 - Low-High Flanke gelatchter Wert
301D.32h | DEV_LatchEvent1_LhDiff | Latch Event 2 - Differenz Low-High - High-Low
301D.33h | DEV_LatchEvent1_HlCount | Latch Event 2 - High-Low Flankenzähler
301D.34h | DEV_LatchEvent1_HlVal | Latch Event 2 - High-Low Flanke gelatchter Wert
301D.35h | DEV_LatchEvent1_HlDiff | Latch Event 2 - Differenz High-Low - Low-High
3020.00h | DEV_Code | Gerätecode
3020.01h | DEV_SubCode | Gerätesubcode
3020.02h | DEV_Revision | Revisionscode
3020.06h | DEV_McCpuId | CPU Kennungscode
3023.00h | DEV_VersionSw | Softwareversion
3023.01h | DEV_SubVersionSw | Softwaresubversion
3023.02h | DEV_RelVersionSw | Software release
3024.00h | DEV_VersionHw | Hardwareversion
3025.00h | DEV_CustomerCode | Kundencode
3025.01h | DEV_CustomerSwOption | Kundencode der Software
3025.02h | DEV_CustomerHwOption | Kundencode der Hardware
302C.00h | DEV_FreeData | Freie Daten
302D.01h | DEV_Article_Nr | Artikelnummer des Gerätes
302D.02h | DEV_Serial_Nr | Seriennummer des Gerätes
302E.00h | DEV_OemData_Cmd | OEM Daten - Kommando
302E.01h | DEV_OemData_D0 | OEM Daten - D0
302E.02h | DEV_OemData_D1 | OEM Daten - D1
302E.03h | DEV_OemData_D2 | OEM Daten - D2
302E.04h | DEV_OemData_D3 | OEM Daten - D3
302E.05h | DEV_OemData_D4 | OEM Daten - D4
302E.06h | DEV_OemData_D5 | OEM Daten - D5
302E.07h | DEV_OemData_D6 | OEM Daten - D6
302E.08h | DEV_OemData_D7 | OEM Daten - D7
302E.09h | DEV_OemData_D8 | OEM Daten - D8
302E.0Ah | DEV_OemData_D9 | OEM Daten - D9
302F.00h | DEV_UserData_Cmd | Benutzer Daten - Kommando
302F.01h | DEV_UserData_D0 | Benutzer Daten - D0
302F.02h | DEV_UserData_D1 | Benutzer Daten - D1
302F.03h | DEV_UserData_D2 | Benutzer Daten - D2
302F.04h | DEV_UserData_D3 | Benutzer Daten - D3
3031.00h | DEV_MaxUp | Max. Leistungsspannung
3032.00h | DEV_MaxIm | Max. Motorstrom
3050.00h | DEV_DinEnable | Eingangszuordnung - Betriebsfreigabe
3051.00h | DEV_DinClearError | Eingangszuordnung - Fehlerquittierung
3052.00h | DEV_DinStartStop | Eingangszuordnung - Start/Stop
3053.00h | DEV_DinDir | Eingangszuordnung - Drehrichtungsumkehr
3055.00h | DEV_DinLimitPos | Eingangszuordnung - positive Endschalter
3056.00h | DEV_DinLimitNeg | Eingangszuordnung - negative Endschalter
3057.00h | DEV_DinReference | Eingangszuordnung - Referenzschalter
3060.00h | DEV_DoutError | Ausgangszuordnung - Fehler
3080.00h | DEV_ContinueMode | Continue - Modus
3090.00h | DEV_MinUp_Error | Minimum Up - Error
3090.04h | DEV_UpOff_Stotterbremse | Up - Ausschalten Stotterbremse
3090.05h | DEV_UpOn_Stotterbremse | Up - Einschalten Stotterbremse
3100.00h | IO_AIN0 | Analoger Eingang 0
3101.00h | IO_AIN1 | Analoger Eingang 1
3108.00h | IO_AIN0_Offset | Analoger Eingang 0 - Offset
3108.01h | IO_AIN1_Offset | Analoger Eingang 1 - Offset
310A.00h | IO_AIN0_DeadBand | Analoger Eingang 0 - Totbereich
310A.01h | IO_AIN1_DeadBand | Analoger Eingang 1 - Totbereich
3110.00h | IO_AIN_Voltage_Ue | Elektronikspannung - Ue
3111.00h | IO_AIN_Voltage_Up | Leistungsspannung - Up
3112.00h | IO_AIN_Voltage_Um | Motorspannung - Um
3113.00h | IO_AIN_Current_Im | Motorstrom - Im
3114.00h | IO_AIN_Temperature_Power | Temperatur - Leistungsstufe
3120.00h | IO_DIN_P0 | Digitale Eingänge - Port0
3120.01h | IO_DIN_P1 | Digitale Eingänge - Port1
3128.00h | IO_DIN_Hall | Digitale Eingänge - Hallsensoren
3128.01h | IO_DIN_Enc | Digitale Eingänge - Encoder
3129.01h | IO_DIN_NodeIdSwitch | NodeId-Schalter - Zustand
3150.00h | IO_DOUT_P0 | Digitale Ausgänge - Port0
3154.00h | IO_DOUT_Enable | Freigabe der digitalen Ausgänge
3158.00h | IO_DOUT_LedsEnable | LED - Benutzersteuerung aktivieren
3158.01h | IO_DOUT_LedsState | LED - Zustand
3200.00h | CURR_DesiredValue | Stromsollwert
3204.00h | CURR_DesiredValue_Source | Stromsollwertquelle
3205.00h | CURR_DesiredValue_Reference | Strombezugswert für analogen Eingang
3210.00h | CURR_Kp | PI-Stromregler - Proportionalfaktor
3211.00h | CURR_Ki | PI-Stromregler - Integralfaktor
3219.00h | CURR_Pid_FactorNum | PI-Stromregler - Faktor Zähler
3219.01h | CURR_Pid_FactorDen | PI-Stromregler - Faktor Nenner
3221.00h | CURR_LimitMaxPos | Strombegrenzung - max. positiv
3223.00h | CURR_LimitMaxNeg | Strombegrenzung - max. negativ
3224.00h | CURR_DynLimitMode | Dynamische Strombegrenzung - Mode
3224.01h | CURR_DynLimitPeak | Dynamische Strombegrenzung - Spitzenstrom
3224.02h | CURR_DynLimitCont | Dynamische Strombegrenzung - Dauerstrom
3224.03h | CURR_DynLimitTime | Dynamische Strombegrenzung - Zeit
3224.12h | CURR_ActDynLimitCurrent | Dynamische Strombegrenzung I*t - aktuelle Strombegrenzung
3240.00h | CURR_Acc_dI | Strombeschleunigung - delta I
3241.00h | CURR_Acc_dT | Strombeschleunigung - delta T
3242.00h | CURR_Dec_dI | Stromverzögerung - delta I
3243.00h | CURR_Dec_dT | Stromverzögerung - delta T
3244.00h | CURR_Dec_QuickStop_dI | Stromschnellhaltverzögerung - delta I
3245.00h | CURR_Dec_QuickStop_dT | Stromschnellhaltverzögerung - delta T
324C.00h | CURR_RampType | Stromrampengenerator - Rampentyp
324D.00h | CURR_RampState | Stromrampengenerator - Zustand
3250.00h | CURR_Feedback | Stromregler - Rückführung
3250.03h | CURR_Feedback_Reference | Stromregler - Rückführungsbezugswert
3260.00h | CURR_ActualTargetCurrent | Aktueller Stromsollwert
3261.00h | CURR_ActualCommandCurrent | Aktueller Kommandostrom
3262.00h | CURR_ActualCurrent | Aktueller Motorstrom
3262.01h | CURR_ActualAvgCurrent | Aktueller gefilterter Motorstrom
3262.04h | CURR_ActualPosMaxCurr | Maximaler positiver Motorstrom
3262.05h | CURR_ActualNegMaxCurr | Maximaler negativer Motorstrom
3263.00h | CURR_ActualFollowingError | Aktueller Stromfehler
32A0.00h | CURR_SampleTime | Stromregler - Abtastrate
32A0.08h | CURR_SamplePoint | Stromregler - Abtastzeitpunkt Korrektur
32A0.09h | CURR_SampleRlCorr | Stromregler - R/L Korrektur
32A0.10h | CURR_ActAvgCurrFilterLevel | Filterstufe für Aktueller gefilterter Motorstrom
3300.00h | VEL_DesiredValue | Drehzahlsollwert
3302.00h | VEL_ScaleNum | Drehzahlskalierungsfaktor - Zähler
3303.00h | VEL_ScaleDen | Drehzahlskalierungsfaktor - Nenner
3304.00h | VEL_DesiredValue_Source | Drehzahlsollwertquelle
3305.00h | VEL_DesiredValue_Reference | Drehzahlbezugswert für analogen Eingang
330A.00h | VEL_DimensionNum | Drehzahldimensionsfaktor - Zähler
330B.00h | VEL_DimensionDen | Drehzahldimensionsfaktor - Nenner
3310.00h | VEL_Kp | PID-Regler - Proportionalfaktor
3311.00h | VEL_Ki | PID-Regler - Integralfaktor
3312.00h | VEL_Kd | PID-Regler - Differential faktor
3313.00h | VEL_ILimit | PID-Regler - Integrationslimit
3314.00h | VEL_Kvff | PID-Regler - Geschwindigkeitsvorsteuerung
3315.00h | VEL_Kaff | PID-Regler - Beschleunigungsvorsteuerung
3317.00h | VEL_KIxR | IxR Faktor
3318.00h | VEL_KdSampleTime | PID-Regler - Aktualisierungszeit für Differentialfaktor
3321.00h | VEL_LimitMaxPos | Drehzahlbegrenzung - max. positiv
3323.00h | VEL_LimitMaxNeg | Drehzahlbegrenzung - max. negativ
3340.00h | VEL_Acc_dV | Drehzahlbeschleunigung - delta V
3341.00h | VEL_Acc_dT | Drehzahlbeschleunigung - delta T
3342.00h | VEL_Dec_dV | Drehzahlverzögerung - delta V
3343.00h | VEL_Dec_dT | Drehzahlverzögerung - delta T
3344.00h | VEL_Dec_QuickStop_dV | QuickStop-Drehzahlverzögerung - delta V
3345.00h | VEL_Dec_QuickStop_dT | QuickStop-Drehzahlverzögerung - delta T
334C.00h | VEL_RampType | Rampengenerator - Rampentyp
334D.00h | VEL_RampState | Rampengenerator - Zustand
3350.00h | VEL_Feedback | Drehzahlrückführung
3350.03h | VEL_Feedback_Reference | Drehzahlrückführung - Bezugswert
3360.00h | VEL_ActualTargetVel | Aktuelle Sollgeschwindigkeit
3361.00h | VEL_ActualCommandVel | Aktuelle Kommandogeschwindigkeit
3362.00h | VEL_ActualVel | Aktuelle ungefilterte Geschwindigkeit
3380.00h | VEL_Acc | Drehzahlbeschleunigung in [U/min²]
3381.00h | VEL_Dec | Drehzahlverzögerung in [U/min²]
3382.00h | VEL_Dec_QuickStop | Drehzahl-QuickStop-Verzögerung in [U/min²]
33A0.00h | VEL_SampleTime | Drehzahl-/Positionerregler - Abtastrate
33C0.00h | VEL_BlockageGuarding_ConfigFlags | Blockierungsüberwachung - Konfigurationsflags
33C0.01h | VEL_BlockageGuarding_VelLow | Blockierungsüberwachung - untere Drehzahl
33C0.02h | VEL_BlockageGuarding_VelHigh | Blockierungsüberwachung - obere Drehzahl
33C0.03h | VEL_BlockageGuarding_Time | Blockierungsüberwachung - Zeit
33C0.04h | VEL_BlockageGuarding_Status | Blockierungsüberwachung - Status
3500.00h | SVEL_DesiredValue | SVel Sollwert
3502.00h | SVEL_ScaleNum | SVel Skalierungsfaktor - Zähler
3503.00h | SVEL_ScaleDen | SVel Skalierungsfaktor - Nenner
3504.00h | SVEL_DesiredValue_Source | SVel Sollwertquelle
3505.00h | SVEL_DesiredValue_Reference | SVel Bezugswert für analogen Eingang
3510.00h | SVEL_Kp | SVel PI-Regler - Proportionalfaktor
3511.00h | SVEL_Ki | SVel PI-Regler - Integralfaktor
3517.00h | SVEL_KIxR | SVel IxR Faktor
3521.00h | SVEL_LimitMaxPos | SDrehzahlbegrenzung - max. positiv
3523.00h | SVEL_LimitMaxNeg | SDrehzahlbegrenzung - max. negativ
3550.00h | SVEL_Feedback | SVel Rückführung
3560.00h | SVEL_ActualTargetVel | SVel - Aktuelle Sollgeschwindigkeit
3561.00h | SVEL_ActualCommandVel | SVel - Aktuelle Kommandogeschwindigkeit
35A1.00h | SVEL_MaxVelRange | SVel max. Drehzahlbereich
3708.00h | POS_Mode | Pos Betriebsart
3709.00h | POS_ConfigFlags | Pos Konfiguration
3720.00h | POS_PositionLimitMin | Positionsbegrenzung - minimum
3720.01h | POS_PositionLimitMax | Positionsbegrenzung - maximum
3732.00h | POS_FollowingErrorWindow | Positionsschleppfehler - Fenster
3732.01h | POS_FollowingErrorWindowDyn | Positionsschleppfehler - Fenster, Dynamisch
3733.00h | POS_FollowingErrorTime | Positionsschleppfehler - Zeit
3733.01h | POS_FollowingErrorTimeDyn | Positionsschleppfehler - Zeit, Dynamisch
3734.00h | POS_FollowingErrorLimit | Positionsschleppfehler - Begrenzung
373A.00h | POS_PositionWindow | Positionierfenster
373B.00h | POS_PositionWindowTime | Positionierfenster - Zeit
373B.01h | POS_PositionWindowTimeout | Positionierfenster - Timeout
373C.00h | POS_ReachedConfigFlags | Position erreicht - Konfigurationsbits
373D.00h | POS_DeadWindowOff | Positionierfenster - Endstufe sperren
373D.01h | POS_DeadWindowOn | Positionierfenster - Endstufe aktivieren
373E.00h | POS_DeadTimeOff | Positionierfenster Zeit - Endstufe sperren
373E.01h | POS_DeadTimeOn | Positionierfenster Zeit - Endstufe aktivieren
373F.00h | POS_DeadVel | Positionierfenster - Geschwindigkeit
374C.00h | POS_RampType | Pos. Rampengenerator - Rampentyp
374C.11h | POS_Ramp_JerkFactorAcc | Verschliff Beschleunigung
374C.12h | POS_Ramp_JerkFactorDec | Verschliff Bremsrampe
374D.00h | POS_RampState | Pos. Rampengenerator - Zustand
3760.00h | POS_ActualTargetPosition | Aktuelle Zielposition
3761.00h | POS_ActualCommandPosition | Aktuelle Kommandoposition
3761.01h | POS_ActualCommandPositionReg | Aktuelle interne Kommandoposition
3762.00h | POS_ActualPosition | Aktuelle Position (Istposition)
3762.01h | POS_ActualPositionReg | Aktuelle interne Position (Istposition)
3763.00h | POS_ActualFollowingError | Aktueller Positionsschleppabstand
3763.01h | POS_ActualFollowingErrorReg | Aktueller interner Positionsschleppabstand
3764.00h | POS_ActualIndexPosition | Aktuelle Indexposition
3765.00h | POS_ActualOrigin | Position Ursprung
3770.00h | POS_ActualTargetPosition_cnt | Aktuelle Zielposition in Inkrementen
3771.00h | POS_ActualCommandPosition_cnt | Aktuelle Kommandoposition in Inkrementen
3772.00h | POS_ActualPosition_cnt | Aktuelle Position in Inkrementen
3773.00h | POS_ActualFollowingError_cnt | Aktueller Positionsschleppabstand in Inkrementen
3774.00h | POS_ActualIndexPosition_cnt | Aktuelle Indexposition in Inkrementen
3775.00h | POS_ActualOrigin_cnt | Position Ursprung in Inkrementen
3790.00h | POS_Mova | Absolute Positionierung
3791.00h | POS_Movr | Relative Positionierung
37A4.01h | POS_GearBacklashComp_Path | Getriebespielausgleich - Strecke
37A4.02h | POS_GearBacklashComp_Vel | Getriebespielausgleich - Drehzahl
37B0.00h | POS_HomingCmd | Referenzfahrt - Kommando
37B1.00h | POS_HomingStatus | Referenzfahrt - Status
37B1.01h | POS_HomingError | Referenzfahrt - Error
37B1.02h | POS_HomingState | Referenzfahrt - Zustand
37B1.03h | POS_HomingRefToIndex | Referenzfahrt - Strecke Referenzschalter zu Index
37B1.04h | POS_HomingRefToIndex_cnt | Referenzfahrt - Strecke Referenzschalter zu Index in Ink.
37B2.00h | POS_HomingMethod | Referenzfahrt - Methode
37B3.00h | POS_HomingOffset | Referenzfahrt - Referenzoffset
37B4.00h | POS_HomingVelSwitch | Referenzfahrt - Geschwindigkeit für Schaltersuche
37B4.01h | POS_HomingVelZero | Referenzfahrt - Geschwindigkeit für Nullpunktanfahrt
37B5.00h | POS_HomingAcc | Referenzfahrt - Beschleunigung
37B5.01h | POS_HomingDec | Referenzfahrt - Verzögerung
37B6.00h | POS_HomingMaxIndexPath | Referenzfahrt - max. Strecke für Indexsuche
37B6.01h | POS_HomingIndexOffset | Referenzfahrt - Indexoffset
37B7.00h | POS_HomingBlock_ConfigFlags | Referenzfahrt auf Block - Konfiguration
37B7.01h | POS_HomingBlock_VelLow | Referenzfahrt auf Block - untere Drehzahl
37B7.02h | POS_HomingBlock_VelHigh | Referenzfahrt auf Block - obere Drehzahl
37B7.03h | POS_HomingBlock_Time | Referenzfahrt auf Block - Zeit
37B7.04h | POS_HomingBlock_FollowingErrorWindow | Referenzfahrt auf Block - Positionsschleppfehlerfenster
37C1.00h | POS_InterpStatus | Interpolation - Status
37C2.00h | POS_InterpMethod | Interpolation - Methode
37C2.01h | POS_InterpTime | Interpolation - Zeit
37C2.02h | POS_InterpReference | Interpolation - Referenz
37C5.00h | POS_InterpBufConfig | Interpolation - Bufferkonfiguration
37C6.00h | POS_InterpData | Interpolation - Daten
37C7.00h | POS_InterpActualTargetPosition | Interpolation - Aktuelle Zielposition
37C7.01h | POS_InterpActualCommandPosition | Interpolation - Aktuelle Kommandoposition
37C7.02h | POS_InterpActualPosition | Interpolation - Aktuelle Position
37C8.00h | POS_ModuloMethod | Modulomethode
37C9.00h | POS_ModuloValue | Modulowert
3830.00h | PWM_Frequency | PWM Frequenz
3830.01h | PWM_Mode | PWM Modus
3830.62h | PWM_ActualPwm_oo | Aktuelle PWM des Geräts
3850.00h | SYS_Clock | System Clock
3850.02h | SYS_Timer_2ms | System Timer 2ms
3900.00h | MOTOR_Type | Motortyp
3901.00h | MOTOR_Nn | Motornenndrehzahl
3902.00h | MOTOR_Un | Motornennspannung
3910.00h | MOTOR_PolN | Motorpolanzahl
3911.00h | MOTOR_Polarity | Motorpolarität
3913.00h | MOTOR_CommutationType | Kommutierungsart des Motors
3913.07h | MOTOR_Commutation_Polarity | Kommutierungspolarität des Motors
3913.10h | MOTOR_Commutation_Referencing | Encoderkommutierungsabgleich
3913.11h | MOTOR_Commutation_ReferencingMode | Encoderkommutierungsabgleichs Methode
3913.20h | PreCommutationConfig | Vorkommutierung
3913.21h | PreCommutationVel | Vorkommutierung Bezugsdrehzahl
3913.23h | PreCommutationAngle | Vorkommutierungswinkel
3940.00h | MOTOR_HALL_Type | Hallsensortyp
3944.01h | MOTOR_HALL_Diag_ErrCnt1 | Halldiagnostik - falsche Pulse
3944.02h | MOTOR_HALL_Diag_ErrCnt2 | Halldiagnostik - falsche Reihenfolge
3946.00h | MOTOR_HALL_Tuning_Sector0 | Halltuning - Sektor 0
3946.01h | MOTOR_HALL_Tuning_Sector1 | Halltuning - Sektor 1
3946.02h | MOTOR_HALL_Tuning_Sector2 | Halltuning - Sektor 2
3946.03h | MOTOR_HALL_Tuning_Sector3 | Halltuning - Sektor 3
3946.04h | MOTOR_HALL_Tuning_Sector4 | Halltuning - Sektor 4
3946.05h | MOTOR_HALL_Tuning_Sector5 | Halltuning - Sektor 5
3946.08h | MOTOR_HALL_Tuning_WrEnable | Halltuning - Schreibfreigabe
3949.00h | MOTOR_HALL_DoutPulses_Mode | Hallpulse - Konfigurationsflags
3949.01h | MOTOR_HALL_DoutPulses_PosDirMask | Hallpulse - Bitmaske für positive Richtung
3949.02h | MOTOR_HALL_DoutPulses_NegDirMask | Hallpulse - Bitmaske für negative Richtung
3949.03h | MOTOR_HALL_DoutPulses_ModuloValue | Hallpulse - Modulowert
394A.00h | MOTOR_HALL_ActualPosition | Aktuelle Hallposition
3961.22h | MOTOR_ENC_INC2_Config_McSpiAddr | mcSPI-IC2 Encoder Konfiguration - SPI Adresse
3962.00h | MOTOR_ENC_Resolution | Encoderauflösung in Inkrementen
3962.20h | MOTOR_ENC_INC2_Resolution_Cnt | mcSPI-IC2 Encoderauflösung in Inkrementen
3963.00h | MOTOR_ENC_Resolution_lines | Encoderauflösung in Encoderstrichen
3964.00h | MOTOR_ENC_Diag_Enable | Encoderüberwachung - Aktivieren
3964.01h | MOTOR_ENC_Diag_Status | Encoderüberwachung - Status
396A.00h | MOTOR_ENC_ActualPosition | Aktuelle Encoderposition
396A.20h | MOTOR_ENC_INC2_ActualPosition | Aktuelle mcSPI-IC2 Encoderposition
396B.00h | MOTOR_ENC_ActualIndexPosition | Aktuelle Encoder Indexposition
396C.00h | MOTOR_ENC_ActualIndexCount | Anzahl der Indexpulse vom Encoder
3970.00h | MOTOR_ENC_SSI_Enable | SSI Absolutencoder - Freigabe
3970.01h | MOTOR_ENC_SSI_Status | SSI Absolutencoder - Status
3970.08h | MOTOR_ENC_SSI_Save | SSI Absolutencoder - Speichern
3971.00h | MOTOR_ENC_SSI_Code | SSI Absolutencoder - Code
3971.01h | MOTOR_ENC_SSI_SignificantBits | SSI Absolutencoder - Signifikante Bits
3971.02h | MOTOR_ENC_SSI_Bits | SSI Absolutencoder - Bits
3972.00h | MOTOR_ENC_SSI_Resolution | SSI Absolutencoder - Single Turn Auflösung in Inkrementen
397A.00h | MOTOR_ENC_SSI_ActualPosition | SSI Absolutencoder - Aktuelle Position (auf 32 Bit erweitert)
397A.02h | MOTOR_ENC_SSI_ActualSsiDirectPosition | SSI Absolutencoder - Direkte Position
398F.00h | HENC_Cmd | HALL Encoder - Kommando
398F.08h | HENC_ReferencePos | HALL Encoder - Referenz Position
398F.0Ah | HENC_Hysteresis | HALL Encoder - Hysterese
3990.08h | MOTOR_ENC_VIRT0_RawPosBits | Virtueller Encoder 0 - Bits
3990.10h | MOTOR_ENC_VIRT0_RawPos | Virtueller Encoder 0 - Raw Position
3990.11h | MOTOR_ENC_VIRT0_RawIndexPos | Virtueller Encoder 0 - Raw Index Position
3990.20h | MOTOR_ENC_VIRT0_Resolution_Cnt | Virtueller Encoder 0 - Auflösung in Inkrementen
3990.A0h | MOTOR_ENC_VIRT0_ActualPosition | Virtueller Encoder 0 - Aktuelle Position
3990.B0h | MOTOR_ENC_VIRT0_ActualIndexPosition | Virtueller Encoder 0 - Aktuelle Index Position
3990.C0h | MOTOR_ENC_VIRT0_ActualIndexCount | Virtueller Encoder 0 - Index Zähler
3991.08h | MOTOR_ENC_VIRT1_RawPosBits | Virtueller Encoder 1 - Bits
3991.10h | MOTOR_ENC_VIRT1_RawPos | Virtueller Encoder 1 - Raw Position
3991.11h | MOTOR_ENC_VIRT1_RawIndexPos | Virtueller Encoder 1 - Raw Index Position
3991.20h | MOTOR_ENC_VIRT1_Resolution_Cnt | Virtueller Encoder 1 - Auflösung in Inkrementen
3991.A0h | MOTOR_ENC_VIRT1_ActualPosition | Virtueller Encoder 1 - Aktuelle Position
3991.B0h | MOTOR_ENC_VIRT1_ActualIndexPosition | Virtueller Encoder 1 - Aktuelle Index Position
3991.C0h | MOTOR_ENC_VIRT1_ActualIndexCount | Virtueller Encoder 1 - Index Zähler
39A0.00h | MOTOR_BrakeManagement_Config | Bremsenmanagement - Konfiguration
39A0.01h | MOTOR_BrakeManagement_Status | Bremsenmanagement - Status
39A0.06h | MOTOR_BrakeManagement_VelMin | Bremsenmanagement - Drehzahlschwelle
39A0.07h | MOTOR_BrakeManagement_Din | Bremsenmanagement - Bremseingang
39A0.08h | MOTOR_BrakeManagement_Dout | Bremsenmanagement - Bremsausgang
39A0.09h | MOTOR_BrakeManagement_UpBrakeOff | Bremsenmanagement - Spannungsschwelle OFF
39A0.0Ah | MOTOR_BrakeManagement_UpBrakeOn | Bremsenmanagement - Spannungsschwelle ON
39A0.10h | MOTOR_BrakeManagement_OffDelay1 | Bremsenmanagement - AUS-Zeitverzögerung1
39A0.11h | MOTOR_BrakeManagement_OffDelay2 | Bremsenmanagement - AUS-Zeitverzögerung2
39A0.12h | MOTOR_BrakeManagement_OnDelay1 | Bremsenmanagement - EIN-Zeitverzögerung1
39A0.13h | MOTOR_BrakeManagement_OnDelay2 | Bremsenmanagement - EIN-Zeitverzögerung2
39A0.18h | MOTOR_BrakeManagement_OffOrConditionFlags | Bremsenmanagement - AUS-ODER-Bedingung
39A0.19h | MOTOR_BrakeManagement_OffAndConditionFlags | Bremsenmanagement - AUS-UND-Bedingung
39A0.1Ah | MOTOR_BrakeManagement_OnOrConditionFlags | Bremsenmanagement - EIN-ODER-Bedingung
39A0.1Bh | MOTOR_BrakeManagement_OnAndConditionFlags | Bremsenmanagement - EIN-UND-Bedingung
39A2.00h | MOTOR_QuasiAbsEncoder_ConfigFlags | Quasi-Absolutencoder - Konfigurationsflag
39A2.01h | MOTOR_QuasiAbsEncoder_Status | Quasi-Absolutencoder - Status
39A2.02h | MOTOR_QuasiAbsEncoder_Error | Quasi-Absolutencoder - Fehler
39A2.07h | MOTOR_QuasiAbsEncoder_Tolerance_cnt | Quasi-Absolutencoder - Toleranz
39A2.08h | MOTOR_QuasiAbsEncoder_Action | Quasi-Absolutencoder - Kommando
39A2.10h | MOTOR_QuasiAbsEncoder_DeltaPos | Quasi-Absolutencoder - Korrekturabstand
39A2.20h | MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe | Quasi-Absolutencoder - minimale Spannung zum Positionspeichern
39A2.21h | MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe | Quasi-Absolutencoder - maximale Spannung zum Positionspeichern
39A2.31h | MOTOR_QuasiAbsEncoder_SavedPosition | Quasi-Absolutencoder - Gespeicherte Position
39A2.32h | MOTOR_QuasiAbsEncoder_SavedIndexPosition | Quasi-Absolutencoder - Gespeicherte Indexposition
39A2.33h | MOTOR_QuasiAbsEncoder_SavesCounter | Quasi-Absolutencoder - Speicherzähler
3A02.00h | MEASUREMENT_VelTime_ms | Zeitspanne für Geschwindigkeitsmessung
3A04.00h | MEASUREMENT_Vel_cnt | Gemessene Geschwindigkeit in Inkrementen
3A04.01h | MEASUREMENT_Vel_rpm | Gemessene Geschwindigkeit in [U/min]
3B00.00h | FCT_Control | Faktorgruppe - Control
3B00.01h | FCT_Precision | Faktorgruppe - Precision
3B10.00h | FCT_Polarity | Faktorgruppe - Polarität
3B11.00h | FCT_PosNotationIndex | Faktorgruppe - Position-Einheitenindex
3B12.00h | FCT_PosDimIndex | Faktorgruppe - Positions-Größenindex
3B13.00h | FCT_VelNotationIndex | Faktorgruppe - Geschwindigkeit-Einheitenindex
3B14.00h | FCT_VelDimIndex | Faktorgruppe - Geschwindigkeits-Größenindex
3B15.00h | FCT_AccNotationIndex | Faktorgruppe - Beschleinigung-Einheitenindex
3B16.00h | FCT_AccDimIndex | Faktorgruppe - Beschleunigungs-Größenindex
3B16.01h | FCT_AccFactorNum | Faktorgruppe - Beschleunigungsskalierung-Zähler
3B16.02h | FCT_AccFactorDen | Faktorgruppe - Beschleunigungsskalierung-Nenner
3B17.00h | FCT_PosScaleNum | Faktorgruppe - Positionsskalierung-Zähler
3B17.01h | FCT_PosScaleDen | Faktorgruppe - Positionsskalierung-Nenner
3B18.00h | FCT_VelScaleNum | Faktorgruppe - Geschwindigkeitsskalierung-Zähler
3B18.01h | FCT_VelScaleDen | Faktorgruppe - Geschwindigkeitsskalierung-Nenner
3B19.00h | FCT_GearRatio_MotorRev | Faktorgruppe - Getriebeübersetzung-Motorwelleumdrehungen
3B19.01h | FCT_GearRatio_ShaftRev | Faktorgruppe - Getriebeübersetzung-Wellenumdrehungen
3B1A.00h | FCT_FeedConstant_Feed | Faktorgruppe - Vorschubkonstante-Vorschub
3B1A.01h | FCT_FeedConstant_ShaftRev | Faktorgruppe - Vorschubkonstante-Wellenumdrehung
3CE0.00h | COM_ASI_Cmd | ASI-Kommando
3CE0.06h | COM_ASI_Baudrate | ASI-Baudrate
3D14.00h | TOOL_Master_Control | Master-Tool - Konfiguration
3D14.10h | TOOL_Master_ParSource | Master-Tool - Rückführungs-Parameter
3D14.12h | TOOL_Master_ScaleNum | Master-Tool - Skalierung Zähler
3D14.13h | TOOL_Master_ScaleDen | Master-Tool - Skalierung Nenner
3D14.14h | TOOL_Master_MaxVel | Master-Tool - Maximale Geschwindigkeit
3D14.31h | TOOL_Master_FilterKp | Master-Tool - Filter Proportionalfaktor
3F00.00h | DIAG_Enable | Diagnostik - Schreibfreigabe
3FA0.00h | DIAG_SIM_Control | Diagnostik - Aktivierung der Simulation der E/A's
3FA1.00h | DIAG_SIM_AIN_Mask | Diagnostik - Ain-Simulation - Maske
3FA2.00h | DIAG_SIM_AIN_ValueAin0 | Diagnostik - Ain-Simulation - Wert von Ain0
3FA2.01h | DIAG_SIM_AIN_ValueAin1 | Diagnostik - Ain-Simulation - Wert von Ain1
3FA3.00h | DIAG_SIM_DIN_Mask | Diagnostik - Din-Simulation - Maske
3FA4.00h | DIAG_SIM_DIN_Value | Diagnostik - Din-Simulation - Wert der digitalen Eingänge


Inhalt - Parameter 3000h (DSA) - Ereignis bei Wert

301A.00h | DEV_ValueEvent1_Config | Ereignis bei Wert 1 - Konfiguration
301A.01h | DEV_ValueEvent1_Status | Ereignis bei Wert 1 - Status
301A.02h | DEV_ValueEvent1_ParNr | Ereignis bei Wert 1 - Parameter
301A.03h | DEV_ValueEvent1_PollingTime | Ereignis bei Wert 1 - Polling Zeit
301A.04h | DEV_ValueEvent1_ScaleNum | Ereignis bei Wert 1 - Skalierung Nenner
301A.05h | DEV_ValueEvent1_ScaleDen | Ereignis bei Wert 1 - Skalierung Zähler
301A.06h | DEV_ValueEvent1_ScaledValue | Ereignis bei Wert 1 - Skalierter Wert
301A.08h | DEV_ValueEvent1_Treshold1 | Ereignis bei Wert 1 - Schwellwert 1
301A.09h | DEV_ValueEvent1_Hysteresis1 | Ereignis bei Wert 1 - Hysterese 1
301A.0Ah | DEV_ValueEvent1_Mask1 | Ereignis bei Wert 1 - Maske 1
301A.0Bh | DEV_ValueEvent1_Cmd1 | Ereignis bei Wert 1 - Kommando 1
301A.0Ch | DEV_ValueEvent1_Cmd1_Data0 | Ereignis bei Wert 1 - Kommando 1 Daten 0
301A.0Dh | DEV_ValueEvent1_Cmd1_Data1 | Ereignis bei Wert 1 - Kommando 1 Daten 1
301A.0Eh | DEV_ValueEvent1_Treshold2 | Ereignis bei Wert 1 - Schwellwert 2
301A.0Fh | DEV_ValueEvent1_Hysteresis2 | Ereignis bei Wert 1 - Hysterese 2
301A.10h | DEV_ValueEvent1_Mask2 | Ereignis bei Wert 1 - Maske 2
301A.11h | DEV_ValueEvent1_Cmd2 | Ereignis bei Wert 1 - Kommando 2
301A.12h | DEV_ValueEvent1_Cmd2_Data0 | Ereignis bei Wert 1 - Kommando 2 Daten 0
301A.13h | DEV_ValueEvent1_Cmd2_Data1 | Ereignis bei Wert 1 - Kommando 2 Daten 1


301A.00h Ereignis bei Wert 1 - Konfiguration

Name | DEV_ValueEvent1_Config
Bezeichnung | Ereignis bei Wert 1 - Konfiguration
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 255]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Status, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data0, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit diesem Parameter können die "Ereignisse bei Wert" konfiguriert werden.

Bedeutung der Bits:
Bit | Name | Beschreibung
[0..2] | Mode | 0 = deaktiviert 1 = aktiviert
3 | reserviert | -
4 | Edge1 | 0 = reagieren auf steigende Flanke 1 = reagieren auf fallende Flanke
5 | Edge2 | 0 = reagieren auf steigende Flanke 1 = reagieren auf fallende Flanke

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.01h Ereignis bei Wert 1 - Status

Name | DEV_ValueEvent1_Status
Bezeichnung | Ereignis bei Wert 1 - Status
Datentyp | uint16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data0, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit diesem Parameter kann der aktuelle Zustand des "Ereignis bei Wert" abgefragt werden.

Bedeutung der Bits:
Bit | Name | Beschreibung
0 | VALUE_EVENT_STATUS_Enabled | Gibt an ob "Ereignis bei Wert" aktiv ist
1 | VALUE_EVENT_STATUS_GetParValueError | Zeigt an ob ein Parameterfehler aufgetreten ist (wenn beispielsweise versucht wird einen nicht vorhandenen Parameter zu lesen)
2 | VALUE_EVENT_STATUS_DevCmdError | Zeigt an ob ein Kommando-Fehler aufgetreten ist. (siehe DEV_CmdError)
[3..7] | reserviert | -
[8..11] | State1 | Zeigt den Zustand des 1. Schwellwerts an. Bei Edge1 = 0: Fällt der aktuell gemessene Wert unterhalb des Schwellwerts - Hysterese , so ist State1 = 0. Steigt der aktuell gemessene Wert oberhalb des Schwellwerts, so ist State1 = 1 Bei Edge1 = 1: Steigt der aktuell gemessene Wert oberhalb des Schwellwerts + Hysterese , so ist State1 = 0. Fällt der aktuell gemessene Wert unterhalb des Schwellwerts, so ist State1 = 1
[12..15] | State2 | Zeigt den Zustand des 2. Schwellwerts an. Bei Edge1 = 0: Fällt der aktuell gemessene Wert unterhalb des Schwellwerts - Hysterese , so ist State2 = 0. Steigt der aktuell gemessene Wert oberhalb des Schwellwerts, so ist State2 = 1 Bei Edge1 = 1: Steigt der aktuell gemessene Wert oberhalb des Schwellwerts + Hysterese , so ist State2 = 0. Fällt der aktuell gemessene Wert unterhalb des Schwellwerts, so ist State2 = 1

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.02h Ereignis bei Wert 1 - Parameter

Name | DEV_ValueEvent1_ParNr
Bezeichnung | Ereignis bei Wert 1 - Parameter
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 3211264
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_Status, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data0, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit der Funktion "Ereignis bei Wert" können Kommandos ausgelöst werden, wenn ein bestimmter Parameter einen gewissen Schwellwert überschreitet.

Der Parameter, welcher überwacht wird, muss in dem Objekt DEV_ValueEvent1_ParNr hinterlegt werden. Angegeben wird der Parameter dabei folgendermaßen:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des zu überwachenden Parameters angibt.

Mit dem Parameter DEV_ValueEvent1_PollingTime wird festgelegt, in welchen zeitlichen Abständen der zu überwachende Parameter abgelesen wird. Die Angabe ist in Millisekunden.

Der Wert des zu überwachenden Parameters kann mit den Objekten DEV_ValueEvent1_ScaleNum und DEV_ValueEvent1_ScaleDen skaliert werden und über das Objekt DEV_ValueEvent1_ScaledValue kann der dann skalierte Parameter abgelesen werden.

Mit den Objekten DEV_ValueEvent1_Treshold1 und DEV_ValueEvent1_Treshold2 können die Schwellwerte festgelegt werden, bei welchen ein Kommando ausgelöst werden soll. Ist der zu überwachende Parameter dabei gleich oder größer dem Schwellwert wird das Kommando ausgelöst.

Damit bei einem Rauschen auf dem Wert des Parameters die Kommandos nicht mehr als einmal ausgelöst werden, kann in dem Objekten DEV_ValueEvent1_Hysteresis1 und DEV_ValueEvent1_Hysteresis2 eine Hysterese zu den Schwellwerten hinzugefügt werden.

Das Kommando wird ausgelöst wenn der entsprechende State (siehe DEV_ValueEvent1_Status) einen Zustandswechsel von 0 auf 1 macht.

Sollen nur gewisse Bits des zu überwachenden Parameters ausgewertet werden kann mit den Objekten DEV_ValueEvent1_Mask1 und DEV_ValueEvent1_Mask2 eine Bitmaske definiert werden, die für die entsprechende Schwellwerte gilt. Dies ist vor allem dann interessant, wenn digitale Eingänge überwacht werden sollen.

Das Kommando zu den Schwellwerten wird in den Objekten DEV_ValueEvent1_Cmd1 und DEV_ValueEvent1_Cmd2 hinterlegt. Die Funktionalität des Kommandos entspricht der Funktionalität des Gerätekommandos DEV_Cmd_ExecOnChange.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd1 werden in den Objekten DEV_ValueEvent1_Cmd1_Data0 und DEV_ValueEvent1_Cmd1_Data1 hinterlegt.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd2 werden in den Objekten DEV_ValueEvent1_Cmd2_Data0 und DEV_ValueEvent1_Cmd2_Data1 hinterlegt.

Das folgende Bild soll die Funktion der "Ereignis bei Wert" Funktion verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.03h Ereignis bei Wert 1 - Polling Zeit

Name | DEV_ValueEvent1_PollingTime
Bezeichnung | Ereignis bei Wert 1 - Polling Zeit
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [1 .. 65535]
Defaultwert | 100
Einheit | [ms]
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_Status, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data0, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit der Funktion "Ereignis bei Wert" können Kommandos ausgelöst werden, wenn ein bestimmter Parameter einen gewissen Schwellwert überschreitet.

Der Parameter, welcher überwacht wird, muss in dem Objekt DEV_ValueEvent1_ParNr hinterlegt werden. Angegeben wird der Parameter dabei folgendermaßen:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des zu überwachenden Parameters angibt.

Mit dem Parameter DEV_ValueEvent1_PollingTime wird festgelegt, in welchen zeitlichen Abständen der zu überwachende Parameter abgelesen wird. Die Angabe ist in Millisekunden.

Der Wert des zu überwachenden Parameters kann mit den Objekten DEV_ValueEvent1_ScaleNum und DEV_ValueEvent1_ScaleDen skaliert werden und über das Objekt DEV_ValueEvent1_ScaledValue kann der dann skalierte Parameter abgelesen werden.

Mit den Objekten DEV_ValueEvent1_Treshold1 und DEV_ValueEvent1_Treshold2 können die Schwellwerte festgelegt werden, bei welchen ein Kommando ausgelöst werden soll. Ist der zu überwachende Parameter dabei gleich oder größer dem Schwellwert wird das Kommando ausgelöst.

Damit bei einem Rauschen auf dem Wert des Parameters die Kommandos nicht mehr als einmal ausgelöst werden, kann in dem Objekten DEV_ValueEvent1_Hysteresis1 und DEV_ValueEvent1_Hysteresis2 eine Hysterese zu den Schwellwerten hinzugefügt werden.

Das Kommando wird ausgelöst wenn der entsprechende State (siehe DEV_ValueEvent1_Status) einen Zustandswechsel von 0 auf 1 macht.

Sollen nur gewisse Bits des zu überwachenden Parameters ausgewertet werden kann mit den Objekten DEV_ValueEvent1_Mask1 und DEV_ValueEvent1_Mask2 eine Bitmaske definiert werden, die für die entsprechende Schwellwerte gilt. Dies ist vor allem dann interessant, wenn digitale Eingänge überwacht werden sollen.

Das Kommando zu den Schwellwerten wird in den Objekten DEV_ValueEvent1_Cmd1 und DEV_ValueEvent1_Cmd2 hinterlegt. Die Funktionalität des Kommandos entspricht der Funktionalität des Gerätekommandos DEV_Cmd_ExecOnChange.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd1 werden in den Objekten DEV_ValueEvent1_Cmd1_Data0 und DEV_ValueEvent1_Cmd1_Data1 hinterlegt.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd2 werden in den Objekten DEV_ValueEvent1_Cmd2_Data0 und DEV_ValueEvent1_Cmd2_Data1 hinterlegt.

Das folgende Bild soll die Funktion der "Ereignis bei Wert" Funktion verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.04h Ereignis bei Wert 1 - Skalierung Nenner

Name | DEV_ValueEvent1_ScaleNum
Bezeichnung | Ereignis bei Wert 1 - Skalierung Nenner
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-32768 .. 32767]
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_Status, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data0, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit der Funktion "Ereignis bei Wert" können Kommandos ausgelöst werden, wenn ein bestimmter Parameter einen gewissen Schwellwert überschreitet.

Der Parameter, welcher überwacht wird, muss in dem Objekt DEV_ValueEvent1_ParNr hinterlegt werden. Angegeben wird der Parameter dabei folgendermaßen:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des zu überwachenden Parameters angibt.

Mit dem Parameter DEV_ValueEvent1_PollingTime wird festgelegt, in welchen zeitlichen Abständen der zu überwachende Parameter abgelesen wird. Die Angabe ist in Millisekunden.

Der Wert des zu überwachenden Parameters kann mit den Objekten DEV_ValueEvent1_ScaleNum und DEV_ValueEvent1_ScaleDen skaliert werden und über das Objekt DEV_ValueEvent1_ScaledValue kann der dann skalierte Parameter abgelesen werden.

Mit den Objekten DEV_ValueEvent1_Treshold1 und DEV_ValueEvent1_Treshold2 können die Schwellwerte festgelegt werden, bei welchen ein Kommando ausgelöst werden soll. Ist der zu überwachende Parameter dabei gleich oder größer dem Schwellwert wird das Kommando ausgelöst.

Damit bei einem Rauschen auf dem Wert des Parameters die Kommandos nicht mehr als einmal ausgelöst werden, kann in dem Objekten DEV_ValueEvent1_Hysteresis1 und DEV_ValueEvent1_Hysteresis2 eine Hysterese zu den Schwellwerten hinzugefügt werden.

Das Kommando wird ausgelöst wenn der entsprechende State (siehe DEV_ValueEvent1_Status) einen Zustandswechsel von 0 auf 1 macht.

Sollen nur gewisse Bits des zu überwachenden Parameters ausgewertet werden kann mit den Objekten DEV_ValueEvent1_Mask1 und DEV_ValueEvent1_Mask2 eine Bitmaske definiert werden, die für die entsprechende Schwellwerte gilt. Dies ist vor allem dann interessant, wenn digitale Eingänge überwacht werden sollen.

Das Kommando zu den Schwellwerten wird in den Objekten DEV_ValueEvent1_Cmd1 und DEV_ValueEvent1_Cmd2 hinterlegt. Die Funktionalität des Kommandos entspricht der Funktionalität des Gerätekommandos DEV_Cmd_ExecOnChange.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd1 werden in den Objekten DEV_ValueEvent1_Cmd1_Data0 und DEV_ValueEvent1_Cmd1_Data1 hinterlegt.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd2 werden in den Objekten DEV_ValueEvent1_Cmd2_Data0 und DEV_ValueEvent1_Cmd2_Data1 hinterlegt.

Das folgende Bild soll die Funktion der "Ereignis bei Wert" Funktion verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.05h Ereignis bei Wert 1 - Skalierung Zähler

Name | DEV_ValueEvent1_ScaleDen
Bezeichnung | Ereignis bei Wert 1 - Skalierung Zähler
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-32768 .. 32767]
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_Status, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data0, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit der Funktion "Ereignis bei Wert" können Kommandos ausgelöst werden, wenn ein bestimmter Parameter einen gewissen Schwellwert überschreitet.

Der Parameter, welcher überwacht wird, muss in dem Objekt DEV_ValueEvent1_ParNr hinterlegt werden. Angegeben wird der Parameter dabei folgendermaßen:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des zu überwachenden Parameters angibt.

Mit dem Parameter DEV_ValueEvent1_PollingTime wird festgelegt, in welchen zeitlichen Abständen der zu überwachende Parameter abgelesen wird. Die Angabe ist in Millisekunden.

Der Wert des zu überwachenden Parameters kann mit den Objekten DEV_ValueEvent1_ScaleNum und DEV_ValueEvent1_ScaleDen skaliert werden und über das Objekt DEV_ValueEvent1_ScaledValue kann der dann skalierte Parameter abgelesen werden.

Mit den Objekten DEV_ValueEvent1_Treshold1 und DEV_ValueEvent1_Treshold2 können die Schwellwerte festgelegt werden, bei welchen ein Kommando ausgelöst werden soll. Ist der zu überwachende Parameter dabei gleich oder größer dem Schwellwert wird das Kommando ausgelöst.

Damit bei einem Rauschen auf dem Wert des Parameters die Kommandos nicht mehr als einmal ausgelöst werden, kann in dem Objekten DEV_ValueEvent1_Hysteresis1 und DEV_ValueEvent1_Hysteresis2 eine Hysterese zu den Schwellwerten hinzugefügt werden.

Das Kommando wird ausgelöst wenn der entsprechende State (siehe DEV_ValueEvent1_Status) einen Zustandswechsel von 0 auf 1 macht.

Sollen nur gewisse Bits des zu überwachenden Parameters ausgewertet werden kann mit den Objekten DEV_ValueEvent1_Mask1 und DEV_ValueEvent1_Mask2 eine Bitmaske definiert werden, die für die entsprechende Schwellwerte gilt. Dies ist vor allem dann interessant, wenn digitale Eingänge überwacht werden sollen.

Das Kommando zu den Schwellwerten wird in den Objekten DEV_ValueEvent1_Cmd1 und DEV_ValueEvent1_Cmd2 hinterlegt. Die Funktionalität des Kommandos entspricht der Funktionalität des Gerätekommandos DEV_Cmd_ExecOnChange.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd1 werden in den Objekten DEV_ValueEvent1_Cmd1_Data0 und DEV_ValueEvent1_Cmd1_Data1 hinterlegt.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd2 werden in den Objekten DEV_ValueEvent1_Cmd2_Data0 und DEV_ValueEvent1_Cmd2_Data1 hinterlegt.

Das folgende Bild soll die Funktion der "Ereignis bei Wert" Funktion verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.06h Ereignis bei Wert 1 - Skalierter Wert

Name | DEV_ValueEvent1_ScaledValue
Bezeichnung | Ereignis bei Wert 1 - Skalierter Wert
Datentyp | int32
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_Status, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data0, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit der Funktion "Ereignis bei Wert" können Kommandos ausgelöst werden, wenn ein bestimmter Parameter einen gewissen Schwellwert überschreitet.

Der Parameter, welcher überwacht wird, muss in dem Objekt DEV_ValueEvent1_ParNr hinterlegt werden. Angegeben wird der Parameter dabei folgendermaßen:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des zu überwachenden Parameters angibt.

Mit dem Parameter DEV_ValueEvent1_PollingTime wird festgelegt, in welchen zeitlichen Abständen der zu überwachende Parameter abgelesen wird. Die Angabe ist in Millisekunden.

Der Wert des zu überwachenden Parameters kann mit den Objekten DEV_ValueEvent1_ScaleNum und DEV_ValueEvent1_ScaleDen skaliert werden und über das Objekt DEV_ValueEvent1_ScaledValue kann der dann skalierte Parameter abgelesen werden.

Mit den Objekten DEV_ValueEvent1_Treshold1 und DEV_ValueEvent1_Treshold2 können die Schwellwerte festgelegt werden, bei welchen ein Kommando ausgelöst werden soll. Ist der zu überwachende Parameter dabei gleich oder größer dem Schwellwert wird das Kommando ausgelöst.

Damit bei einem Rauschen auf dem Wert des Parameters die Kommandos nicht mehr als einmal ausgelöst werden, kann in dem Objekten DEV_ValueEvent1_Hysteresis1 und DEV_ValueEvent1_Hysteresis2 eine Hysterese zu den Schwellwerten hinzugefügt werden.

Das Kommando wird ausgelöst wenn der entsprechende State (siehe DEV_ValueEvent1_Status) einen Zustandswechsel von 0 auf 1 macht.

Sollen nur gewisse Bits des zu überwachenden Parameters ausgewertet werden kann mit den Objekten DEV_ValueEvent1_Mask1 und DEV_ValueEvent1_Mask2 eine Bitmaske definiert werden, die für die entsprechende Schwellwerte gilt. Dies ist vor allem dann interessant, wenn digitale Eingänge überwacht werden sollen.

Das Kommando zu den Schwellwerten wird in den Objekten DEV_ValueEvent1_Cmd1 und DEV_ValueEvent1_Cmd2 hinterlegt. Die Funktionalität des Kommandos entspricht der Funktionalität des Gerätekommandos DEV_Cmd_ExecOnChange.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd1 werden in den Objekten DEV_ValueEvent1_Cmd1_Data0 und DEV_ValueEvent1_Cmd1_Data1 hinterlegt.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd2 werden in den Objekten DEV_ValueEvent1_Cmd2_Data0 und DEV_ValueEvent1_Cmd2_Data1 hinterlegt.

Das folgende Bild soll die Funktion der "Ereignis bei Wert" Funktion verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.08h Ereignis bei Wert 1 - Schwellwert 1

Name | DEV_ValueEvent1_Treshold1
Bezeichnung | Ereignis bei Wert 1 - Schwellwert 1
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 5000
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_Status, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data0, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit der Funktion "Ereignis bei Wert" können Kommandos ausgelöst werden, wenn ein bestimmter Parameter einen gewissen Schwellwert überschreitet.

Der Parameter, welcher überwacht wird, muss in dem Objekt DEV_ValueEvent1_ParNr hinterlegt werden. Angegeben wird der Parameter dabei folgendermaßen:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des zu überwachenden Parameters angibt.

Mit dem Parameter DEV_ValueEvent1_PollingTime wird festgelegt, in welchen zeitlichen Abständen der zu überwachende Parameter abgelesen wird. Die Angabe ist in Millisekunden.

Der Wert des zu überwachenden Parameters kann mit den Objekten DEV_ValueEvent1_ScaleNum und DEV_ValueEvent1_ScaleDen skaliert werden und über das Objekt DEV_ValueEvent1_ScaledValue kann der dann skalierte Parameter abgelesen werden.

Mit den Objekten DEV_ValueEvent1_Treshold1 und DEV_ValueEvent1_Treshold2 können die Schwellwerte festgelegt werden, bei welchen ein Kommando ausgelöst werden soll. Ist der zu überwachende Parameter dabei gleich oder größer dem Schwellwert wird das Kommando ausgelöst.

Damit bei einem Rauschen auf dem Wert des Parameters die Kommandos nicht mehr als einmal ausgelöst werden, kann in dem Objekten DEV_ValueEvent1_Hysteresis1 und DEV_ValueEvent1_Hysteresis2 eine Hysterese zu den Schwellwerten hinzugefügt werden.

Das Kommando wird ausgelöst wenn der entsprechende State (siehe DEV_ValueEvent1_Status) einen Zustandswechsel von 0 auf 1 macht.

Sollen nur gewisse Bits des zu überwachenden Parameters ausgewertet werden kann mit den Objekten DEV_ValueEvent1_Mask1 und DEV_ValueEvent1_Mask2 eine Bitmaske definiert werden, die für die entsprechende Schwellwerte gilt. Dies ist vor allem dann interessant, wenn digitale Eingänge überwacht werden sollen.

Das Kommando zu den Schwellwerten wird in den Objekten DEV_ValueEvent1_Cmd1 und DEV_ValueEvent1_Cmd2 hinterlegt. Die Funktionalität des Kommandos entspricht der Funktionalität des Gerätekommandos DEV_Cmd_ExecOnChange.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd1 werden in den Objekten DEV_ValueEvent1_Cmd1_Data0 und DEV_ValueEvent1_Cmd1_Data1 hinterlegt.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd2 werden in den Objekten DEV_ValueEvent1_Cmd2_Data0 und DEV_ValueEvent1_Cmd2_Data1 hinterlegt.

Das folgende Bild soll die Funktion der "Ereignis bei Wert" Funktion verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.09h Ereignis bei Wert 1 - Hysterese 1

Name | DEV_ValueEvent1_Hysteresis1
Bezeichnung | Ereignis bei Wert 1 - Hysterese 1
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 1000
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_Status, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data0, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit der Funktion "Ereignis bei Wert" können Kommandos ausgelöst werden, wenn ein bestimmter Parameter einen gewissen Schwellwert überschreitet.

Der Parameter, welcher überwacht wird, muss in dem Objekt DEV_ValueEvent1_ParNr hinterlegt werden. Angegeben wird der Parameter dabei folgendermaßen:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des zu überwachenden Parameters angibt.

Mit dem Parameter DEV_ValueEvent1_PollingTime wird festgelegt, in welchen zeitlichen Abständen der zu überwachende Parameter abgelesen wird. Die Angabe ist in Millisekunden.

Der Wert des zu überwachenden Parameters kann mit den Objekten DEV_ValueEvent1_ScaleNum und DEV_ValueEvent1_ScaleDen skaliert werden und über das Objekt DEV_ValueEvent1_ScaledValue kann der dann skalierte Parameter abgelesen werden.

Mit den Objekten DEV_ValueEvent1_Treshold1 und DEV_ValueEvent1_Treshold2 können die Schwellwerte festgelegt werden, bei welchen ein Kommando ausgelöst werden soll. Ist der zu überwachende Parameter dabei gleich oder größer dem Schwellwert wird das Kommando ausgelöst.

Damit bei einem Rauschen auf dem Wert des Parameters die Kommandos nicht mehr als einmal ausgelöst werden, kann in dem Objekten DEV_ValueEvent1_Hysteresis1 und DEV_ValueEvent1_Hysteresis2 eine Hysterese zu den Schwellwerten hinzugefügt werden.

Das Kommando wird ausgelöst wenn der entsprechende State (siehe DEV_ValueEvent1_Status) einen Zustandswechsel von 0 auf 1 macht.

Sollen nur gewisse Bits des zu überwachenden Parameters ausgewertet werden kann mit den Objekten DEV_ValueEvent1_Mask1 und DEV_ValueEvent1_Mask2 eine Bitmaske definiert werden, die für die entsprechende Schwellwerte gilt. Dies ist vor allem dann interessant, wenn digitale Eingänge überwacht werden sollen.

Das Kommando zu den Schwellwerten wird in den Objekten DEV_ValueEvent1_Cmd1 und DEV_ValueEvent1_Cmd2 hinterlegt. Die Funktionalität des Kommandos entspricht der Funktionalität des Gerätekommandos DEV_Cmd_ExecOnChange.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd1 werden in den Objekten DEV_ValueEvent1_Cmd1_Data0 und DEV_ValueEvent1_Cmd1_Data1 hinterlegt.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd2 werden in den Objekten DEV_ValueEvent1_Cmd2_Data0 und DEV_ValueEvent1_Cmd2_Data1 hinterlegt.

Das folgende Bild soll die Funktion der "Ereignis bei Wert" Funktion verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.0Ah Ereignis bei Wert 1 - Maske 1

Name | DEV_ValueEvent1_Mask1
Bezeichnung | Ereignis bei Wert 1 - Maske 1
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 4294967295
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_Status, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data0, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit der Funktion "Ereignis bei Wert" können Kommandos ausgelöst werden, wenn ein bestimmter Parameter einen gewissen Schwellwert überschreitet.

Der Parameter, welcher überwacht wird, muss in dem Objekt DEV_ValueEvent1_ParNr hinterlegt werden. Angegeben wird der Parameter dabei folgendermaßen:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des zu überwachenden Parameters angibt.

Mit dem Parameter DEV_ValueEvent1_PollingTime wird festgelegt, in welchen zeitlichen Abständen der zu überwachende Parameter abgelesen wird. Die Angabe ist in Millisekunden.

Der Wert des zu überwachenden Parameters kann mit den Objekten DEV_ValueEvent1_ScaleNum und DEV_ValueEvent1_ScaleDen skaliert werden und über das Objekt DEV_ValueEvent1_ScaledValue kann der dann skalierte Parameter abgelesen werden.

Mit den Objekten DEV_ValueEvent1_Treshold1 und DEV_ValueEvent1_Treshold2 können die Schwellwerte festgelegt werden, bei welchen ein Kommando ausgelöst werden soll. Ist der zu überwachende Parameter dabei gleich oder größer dem Schwellwert wird das Kommando ausgelöst.

Damit bei einem Rauschen auf dem Wert des Parameters die Kommandos nicht mehr als einmal ausgelöst werden, kann in dem Objekten DEV_ValueEvent1_Hysteresis1 und DEV_ValueEvent1_Hysteresis2 eine Hysterese zu den Schwellwerten hinzugefügt werden.

Das Kommando wird ausgelöst wenn der entsprechende State (siehe DEV_ValueEvent1_Status) einen Zustandswechsel von 0 auf 1 macht.

Sollen nur gewisse Bits des zu überwachenden Parameters ausgewertet werden kann mit den Objekten DEV_ValueEvent1_Mask1 und DEV_ValueEvent1_Mask2 eine Bitmaske definiert werden, die für die entsprechende Schwellwerte gilt. Dies ist vor allem dann interessant, wenn digitale Eingänge überwacht werden sollen.

Das Kommando zu den Schwellwerten wird in den Objekten DEV_ValueEvent1_Cmd1 und DEV_ValueEvent1_Cmd2 hinterlegt. Die Funktionalität des Kommandos entspricht der Funktionalität des Gerätekommandos DEV_Cmd_ExecOnChange.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd1 werden in den Objekten DEV_ValueEvent1_Cmd1_Data0 und DEV_ValueEvent1_Cmd1_Data1 hinterlegt.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd2 werden in den Objekten DEV_ValueEvent1_Cmd2_Data0 und DEV_ValueEvent1_Cmd2_Data1 hinterlegt.

Das folgende Bild soll die Funktion der "Ereignis bei Wert" Funktion verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.0Bh Ereignis bei Wert 1 - Kommando 1

Name | DEV_ValueEvent1_Cmd1
Bezeichnung | Ereignis bei Wert 1 - Kommando 1
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 255]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_Status, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data0, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit der Funktion "Ereignis bei Wert" können Kommandos ausgelöst werden, wenn ein bestimmter Parameter einen gewissen Schwellwert überschreitet.

Der Parameter, welcher überwacht wird, muss in dem Objekt DEV_ValueEvent1_ParNr hinterlegt werden. Angegeben wird der Parameter dabei folgendermaßen:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des zu überwachenden Parameters angibt.

Mit dem Parameter DEV_ValueEvent1_PollingTime wird festgelegt, in welchen zeitlichen Abständen der zu überwachende Parameter abgelesen wird. Die Angabe ist in Millisekunden.

Der Wert des zu überwachenden Parameters kann mit den Objekten DEV_ValueEvent1_ScaleNum und DEV_ValueEvent1_ScaleDen skaliert werden und über das Objekt DEV_ValueEvent1_ScaledValue kann der dann skalierte Parameter abgelesen werden.

Mit den Objekten DEV_ValueEvent1_Treshold1 und DEV_ValueEvent1_Treshold2 können die Schwellwerte festgelegt werden, bei welchen ein Kommando ausgelöst werden soll. Ist der zu überwachende Parameter dabei gleich oder größer dem Schwellwert wird das Kommando ausgelöst.

Damit bei einem Rauschen auf dem Wert des Parameters die Kommandos nicht mehr als einmal ausgelöst werden, kann in dem Objekten DEV_ValueEvent1_Hysteresis1 und DEV_ValueEvent1_Hysteresis2 eine Hysterese zu den Schwellwerten hinzugefügt werden.

Das Kommando wird ausgelöst wenn der entsprechende State (siehe DEV_ValueEvent1_Status) einen Zustandswechsel von 0 auf 1 macht.

Sollen nur gewisse Bits des zu überwachenden Parameters ausgewertet werden kann mit den Objekten DEV_ValueEvent1_Mask1 und DEV_ValueEvent1_Mask2 eine Bitmaske definiert werden, die für die entsprechende Schwellwerte gilt. Dies ist vor allem dann interessant, wenn digitale Eingänge überwacht werden sollen.

Das Kommando zu den Schwellwerten wird in den Objekten DEV_ValueEvent1_Cmd1 und DEV_ValueEvent1_Cmd2 hinterlegt. Die Funktionalität des Kommandos entspricht der Funktionalität des Gerätekommandos DEV_Cmd_ExecOnChange.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd1 werden in den Objekten DEV_ValueEvent1_Cmd1_Data0 und DEV_ValueEvent1_Cmd1_Data1 hinterlegt.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd2 werden in den Objekten DEV_ValueEvent1_Cmd2_Data0 und DEV_ValueEvent1_Cmd2_Data1 hinterlegt.

Das folgende Bild soll die Funktion der "Ereignis bei Wert" Funktion verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.0Ch Ereignis bei Wert 1 - Kommando 1 Daten 0

Name | DEV_ValueEvent1_Cmd1_Data0
Bezeichnung | Ereignis bei Wert 1 - Kommando 1 Daten 0
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_Status, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data0, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit der Funktion "Ereignis bei Wert" können Kommandos ausgelöst werden, wenn ein bestimmter Parameter einen gewissen Schwellwert überschreitet.

Der Parameter, welcher überwacht wird, muss in dem Objekt DEV_ValueEvent1_ParNr hinterlegt werden. Angegeben wird der Parameter dabei folgendermaßen:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des zu überwachenden Parameters angibt.

Mit dem Parameter DEV_ValueEvent1_PollingTime wird festgelegt, in welchen zeitlichen Abständen der zu überwachende Parameter abgelesen wird. Die Angabe ist in Millisekunden.

Der Wert des zu überwachenden Parameters kann mit den Objekten DEV_ValueEvent1_ScaleNum und DEV_ValueEvent1_ScaleDen skaliert werden und über das Objekt DEV_ValueEvent1_ScaledValue kann der dann skalierte Parameter abgelesen werden.

Mit den Objekten DEV_ValueEvent1_Treshold1 und DEV_ValueEvent1_Treshold2 können die Schwellwerte festgelegt werden, bei welchen ein Kommando ausgelöst werden soll. Ist der zu überwachende Parameter dabei gleich oder größer dem Schwellwert wird das Kommando ausgelöst.

Damit bei einem Rauschen auf dem Wert des Parameters die Kommandos nicht mehr als einmal ausgelöst werden, kann in dem Objekten DEV_ValueEvent1_Hysteresis1 und DEV_ValueEvent1_Hysteresis2 eine Hysterese zu den Schwellwerten hinzugefügt werden.

Das Kommando wird ausgelöst wenn der entsprechende State (siehe DEV_ValueEvent1_Status) einen Zustandswechsel von 0 auf 1 macht.

Sollen nur gewisse Bits des zu überwachenden Parameters ausgewertet werden kann mit den Objekten DEV_ValueEvent1_Mask1 und DEV_ValueEvent1_Mask2 eine Bitmaske definiert werden, die für die entsprechende Schwellwerte gilt. Dies ist vor allem dann interessant, wenn digitale Eingänge überwacht werden sollen.

Das Kommando zu den Schwellwerten wird in den Objekten DEV_ValueEvent1_Cmd1 und DEV_ValueEvent1_Cmd2 hinterlegt. Die Funktionalität des Kommandos entspricht der Funktionalität des Gerätekommandos DEV_Cmd_ExecOnChange.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd1 werden in den Objekten DEV_ValueEvent1_Cmd1_Data0 und DEV_ValueEvent1_Cmd1_Data1 hinterlegt.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd2 werden in den Objekten DEV_ValueEvent1_Cmd2_Data0 und DEV_ValueEvent1_Cmd2_Data1 hinterlegt.

Das folgende Bild soll die Funktion der "Ereignis bei Wert" Funktion verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.0Dh Ereignis bei Wert 1 - Kommando 1 Daten 1

Name | DEV_ValueEvent1_Cmd1_Data1
Bezeichnung | Ereignis bei Wert 1 - Kommando 1 Daten 1
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_Status, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data0, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit der Funktion "Ereignis bei Wert" können Kommandos ausgelöst werden, wenn ein bestimmter Parameter einen gewissen Schwellwert überschreitet.

Der Parameter, welcher überwacht wird, muss in dem Objekt DEV_ValueEvent1_ParNr hinterlegt werden. Angegeben wird der Parameter dabei folgendermaßen:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des zu überwachenden Parameters angibt.

Mit dem Parameter DEV_ValueEvent1_PollingTime wird festgelegt, in welchen zeitlichen Abständen der zu überwachende Parameter abgelesen wird. Die Angabe ist in Millisekunden.

Der Wert des zu überwachenden Parameters kann mit den Objekten DEV_ValueEvent1_ScaleNum und DEV_ValueEvent1_ScaleDen skaliert werden und über das Objekt DEV_ValueEvent1_ScaledValue kann der dann skalierte Parameter abgelesen werden.

Mit den Objekten DEV_ValueEvent1_Treshold1 und DEV_ValueEvent1_Treshold2 können die Schwellwerte festgelegt werden, bei welchen ein Kommando ausgelöst werden soll. Ist der zu überwachende Parameter dabei gleich oder größer dem Schwellwert wird das Kommando ausgelöst.

Damit bei einem Rauschen auf dem Wert des Parameters die Kommandos nicht mehr als einmal ausgelöst werden, kann in dem Objekten DEV_ValueEvent1_Hysteresis1 und DEV_ValueEvent1_Hysteresis2 eine Hysterese zu den Schwellwerten hinzugefügt werden.

Das Kommando wird ausgelöst wenn der entsprechende State (siehe DEV_ValueEvent1_Status) einen Zustandswechsel von 0 auf 1 macht.

Sollen nur gewisse Bits des zu überwachenden Parameters ausgewertet werden kann mit den Objekten DEV_ValueEvent1_Mask1 und DEV_ValueEvent1_Mask2 eine Bitmaske definiert werden, die für die entsprechende Schwellwerte gilt. Dies ist vor allem dann interessant, wenn digitale Eingänge überwacht werden sollen.

Das Kommando zu den Schwellwerten wird in den Objekten DEV_ValueEvent1_Cmd1 und DEV_ValueEvent1_Cmd2 hinterlegt. Die Funktionalität des Kommandos entspricht der Funktionalität des Gerätekommandos DEV_Cmd_ExecOnChange.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd1 werden in den Objekten DEV_ValueEvent1_Cmd1_Data0 und DEV_ValueEvent1_Cmd1_Data1 hinterlegt.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd2 werden in den Objekten DEV_ValueEvent1_Cmd2_Data0 und DEV_ValueEvent1_Cmd2_Data1 hinterlegt.

Das folgende Bild soll die Funktion der "Ereignis bei Wert" Funktion verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.0Eh Ereignis bei Wert 1 - Schwellwert 2

Name | DEV_ValueEvent1_Treshold2
Bezeichnung | Ereignis bei Wert 1 - Schwellwert 2
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_Status, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data0, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit der Funktion "Ereignis bei Wert" können Kommandos ausgelöst werden, wenn ein bestimmter Parameter einen gewissen Schwellwert überschreitet.

Der Parameter, welcher überwacht wird, muss in dem Objekt DEV_ValueEvent1_ParNr hinterlegt werden. Angegeben wird der Parameter dabei folgendermaßen:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des zu überwachenden Parameters angibt.

Mit dem Parameter DEV_ValueEvent1_PollingTime wird festgelegt, in welchen zeitlichen Abständen der zu überwachende Parameter abgelesen wird. Die Angabe ist in Millisekunden.

Der Wert des zu überwachenden Parameters kann mit den Objekten DEV_ValueEvent1_ScaleNum und DEV_ValueEvent1_ScaleDen skaliert werden und über das Objekt DEV_ValueEvent1_ScaledValue kann der dann skalierte Parameter abgelesen werden.

Mit den Objekten DEV_ValueEvent1_Treshold1 und DEV_ValueEvent1_Treshold2 können die Schwellwerte festgelegt werden, bei welchen ein Kommando ausgelöst werden soll. Ist der zu überwachende Parameter dabei gleich oder größer dem Schwellwert wird das Kommando ausgelöst.

Damit bei einem Rauschen auf dem Wert des Parameters die Kommandos nicht mehr als einmal ausgelöst werden, kann in dem Objekten DEV_ValueEvent1_Hysteresis1 und DEV_ValueEvent1_Hysteresis2 eine Hysterese zu den Schwellwerten hinzugefügt werden.

Das Kommando wird ausgelöst wenn der entsprechende State (siehe DEV_ValueEvent1_Status) einen Zustandswechsel von 0 auf 1 macht.

Sollen nur gewisse Bits des zu überwachenden Parameters ausgewertet werden kann mit den Objekten DEV_ValueEvent1_Mask1 und DEV_ValueEvent1_Mask2 eine Bitmaske definiert werden, die für die entsprechende Schwellwerte gilt. Dies ist vor allem dann interessant, wenn digitale Eingänge überwacht werden sollen.

Das Kommando zu den Schwellwerten wird in den Objekten DEV_ValueEvent1_Cmd1 und DEV_ValueEvent1_Cmd2 hinterlegt. Die Funktionalität des Kommandos entspricht der Funktionalität des Gerätekommandos DEV_Cmd_ExecOnChange.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd1 werden in den Objekten DEV_ValueEvent1_Cmd1_Data0 und DEV_ValueEvent1_Cmd1_Data1 hinterlegt.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd2 werden in den Objekten DEV_ValueEvent1_Cmd2_Data0 und DEV_ValueEvent1_Cmd2_Data1 hinterlegt.

Das folgende Bild soll die Funktion der "Ereignis bei Wert" Funktion verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.0Fh Ereignis bei Wert 1 - Hysterese 2

Name | DEV_ValueEvent1_Hysteresis2
Bezeichnung | Ereignis bei Wert 1 - Hysterese 2
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 1000
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_Status, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data0, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit der Funktion "Ereignis bei Wert" können Kommandos ausgelöst werden, wenn ein bestimmter Parameter einen gewissen Schwellwert überschreitet.

Der Parameter, welcher überwacht wird, muss in dem Objekt DEV_ValueEvent1_ParNr hinterlegt werden. Angegeben wird der Parameter dabei folgendermaßen:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des zu überwachenden Parameters angibt.

Mit dem Parameter DEV_ValueEvent1_PollingTime wird festgelegt, in welchen zeitlichen Abständen der zu überwachende Parameter abgelesen wird. Die Angabe ist in Millisekunden.

Der Wert des zu überwachenden Parameters kann mit den Objekten DEV_ValueEvent1_ScaleNum und DEV_ValueEvent1_ScaleDen skaliert werden und über das Objekt DEV_ValueEvent1_ScaledValue kann der dann skalierte Parameter abgelesen werden.

Mit den Objekten DEV_ValueEvent1_Treshold1 und DEV_ValueEvent1_Treshold2 können die Schwellwerte festgelegt werden, bei welchen ein Kommando ausgelöst werden soll. Ist der zu überwachende Parameter dabei gleich oder größer dem Schwellwert wird das Kommando ausgelöst.

Damit bei einem Rauschen auf dem Wert des Parameters die Kommandos nicht mehr als einmal ausgelöst werden, kann in dem Objekten DEV_ValueEvent1_Hysteresis1 und DEV_ValueEvent1_Hysteresis2 eine Hysterese zu den Schwellwerten hinzugefügt werden.

Das Kommando wird ausgelöst wenn der entsprechende State (siehe DEV_ValueEvent1_Status) einen Zustandswechsel von 0 auf 1 macht.

Sollen nur gewisse Bits des zu überwachenden Parameters ausgewertet werden kann mit den Objekten DEV_ValueEvent1_Mask1 und DEV_ValueEvent1_Mask2 eine Bitmaske definiert werden, die für die entsprechende Schwellwerte gilt. Dies ist vor allem dann interessant, wenn digitale Eingänge überwacht werden sollen.

Das Kommando zu den Schwellwerten wird in den Objekten DEV_ValueEvent1_Cmd1 und DEV_ValueEvent1_Cmd2 hinterlegt. Die Funktionalität des Kommandos entspricht der Funktionalität des Gerätekommandos DEV_Cmd_ExecOnChange.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd1 werden in den Objekten DEV_ValueEvent1_Cmd1_Data0 und DEV_ValueEvent1_Cmd1_Data1 hinterlegt.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd2 werden in den Objekten DEV_ValueEvent1_Cmd2_Data0 und DEV_ValueEvent1_Cmd2_Data1 hinterlegt.

Das folgende Bild soll die Funktion der "Ereignis bei Wert" Funktion verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.10h Ereignis bei Wert 1 - Maske 2

Name | DEV_ValueEvent1_Mask2
Bezeichnung | Ereignis bei Wert 1 - Maske 2
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 4294967295
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_Status, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data0, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit der Funktion "Ereignis bei Wert" können Kommandos ausgelöst werden, wenn ein bestimmter Parameter einen gewissen Schwellwert überschreitet.

Der Parameter, welcher überwacht wird, muss in dem Objekt DEV_ValueEvent1_ParNr hinterlegt werden. Angegeben wird der Parameter dabei folgendermaßen:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des zu überwachenden Parameters angibt.

Mit dem Parameter DEV_ValueEvent1_PollingTime wird festgelegt, in welchen zeitlichen Abständen der zu überwachende Parameter abgelesen wird. Die Angabe ist in Millisekunden.

Der Wert des zu überwachenden Parameters kann mit den Objekten DEV_ValueEvent1_ScaleNum und DEV_ValueEvent1_ScaleDen skaliert werden und über das Objekt DEV_ValueEvent1_ScaledValue kann der dann skalierte Parameter abgelesen werden.

Mit den Objekten DEV_ValueEvent1_Treshold1 und DEV_ValueEvent1_Treshold2 können die Schwellwerte festgelegt werden, bei welchen ein Kommando ausgelöst werden soll. Ist der zu überwachende Parameter dabei gleich oder größer dem Schwellwert wird das Kommando ausgelöst.

Damit bei einem Rauschen auf dem Wert des Parameters die Kommandos nicht mehr als einmal ausgelöst werden, kann in dem Objekten DEV_ValueEvent1_Hysteresis1 und DEV_ValueEvent1_Hysteresis2 eine Hysterese zu den Schwellwerten hinzugefügt werden.

Das Kommando wird ausgelöst wenn der entsprechende State (siehe DEV_ValueEvent1_Status) einen Zustandswechsel von 0 auf 1 macht.

Sollen nur gewisse Bits des zu überwachenden Parameters ausgewertet werden kann mit den Objekten DEV_ValueEvent1_Mask1 und DEV_ValueEvent1_Mask2 eine Bitmaske definiert werden, die für die entsprechende Schwellwerte gilt. Dies ist vor allem dann interessant, wenn digitale Eingänge überwacht werden sollen.

Das Kommando zu den Schwellwerten wird in den Objekten DEV_ValueEvent1_Cmd1 und DEV_ValueEvent1_Cmd2 hinterlegt. Die Funktionalität des Kommandos entspricht der Funktionalität des Gerätekommandos DEV_Cmd_ExecOnChange.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd1 werden in den Objekten DEV_ValueEvent1_Cmd1_Data0 und DEV_ValueEvent1_Cmd1_Data1 hinterlegt.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd2 werden in den Objekten DEV_ValueEvent1_Cmd2_Data0 und DEV_ValueEvent1_Cmd2_Data1 hinterlegt.

Das folgende Bild soll die Funktion der "Ereignis bei Wert" Funktion verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.11h Ereignis bei Wert 1 - Kommando 2

Name | DEV_ValueEvent1_Cmd2
Bezeichnung | Ereignis bei Wert 1 - Kommando 2
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 255]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_Status, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2_Data0, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit der Funktion "Ereignis bei Wert" können Kommandos ausgelöst werden, wenn ein bestimmter Parameter einen gewissen Schwellwert überschreitet.

Der Parameter, welcher überwacht wird, muss in dem Objekt DEV_ValueEvent1_ParNr hinterlegt werden. Angegeben wird der Parameter dabei folgendermaßen:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des zu überwachenden Parameters angibt.

Mit dem Parameter DEV_ValueEvent1_PollingTime wird festgelegt, in welchen zeitlichen Abständen der zu überwachende Parameter abgelesen wird. Die Angabe ist in Millisekunden.

Der Wert des zu überwachenden Parameters kann mit den Objekten DEV_ValueEvent1_ScaleNum und DEV_ValueEvent1_ScaleDen skaliert werden und über das Objekt DEV_ValueEvent1_ScaledValue kann der dann skalierte Parameter abgelesen werden.

Mit den Objekten DEV_ValueEvent1_Treshold1 und DEV_ValueEvent1_Treshold2 können die Schwellwerte festgelegt werden, bei welchen ein Kommando ausgelöst werden soll. Ist der zu überwachende Parameter dabei gleich oder größer dem Schwellwert wird das Kommando ausgelöst.

Damit bei einem Rauschen auf dem Wert des Parameters die Kommandos nicht mehr als einmal ausgelöst werden, kann in dem Objekten DEV_ValueEvent1_Hysteresis1 und DEV_ValueEvent1_Hysteresis2 eine Hysterese zu den Schwellwerten hinzugefügt werden.

Das Kommando wird ausgelöst wenn der entsprechende State (siehe DEV_ValueEvent1_Status) einen Zustandswechsel von 0 auf 1 macht.

Sollen nur gewisse Bits des zu überwachenden Parameters ausgewertet werden kann mit den Objekten DEV_ValueEvent1_Mask1 und DEV_ValueEvent1_Mask2 eine Bitmaske definiert werden, die für die entsprechende Schwellwerte gilt. Dies ist vor allem dann interessant, wenn digitale Eingänge überwacht werden sollen.

Das Kommando zu den Schwellwerten wird in den Objekten DEV_ValueEvent1_Cmd1 und DEV_ValueEvent1_Cmd2 hinterlegt. Die Funktionalität des Kommandos entspricht der Funktionalität des Gerätekommandos DEV_Cmd_ExecOnChange.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd1 werden in den Objekten DEV_ValueEvent1_Cmd1_Data0 und DEV_ValueEvent1_Cmd1_Data1 hinterlegt.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd2 werden in den Objekten DEV_ValueEvent1_Cmd2_Data0 und DEV_ValueEvent1_Cmd2_Data1 hinterlegt.

Das folgende Bild soll die Funktion der "Ereignis bei Wert" Funktion verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.12h Ereignis bei Wert 1 - Kommando 2 Daten 0

Name | DEV_ValueEvent1_Cmd2_Data0
Bezeichnung | Ereignis bei Wert 1 - Kommando 2 Daten 0
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_Status, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data1

Beschreibung

Mit der Funktion "Ereignis bei Wert" können Kommandos ausgelöst werden, wenn ein bestimmter Parameter einen gewissen Schwellwert überschreitet.

Der Parameter, welcher überwacht wird, muss in dem Objekt DEV_ValueEvent1_ParNr hinterlegt werden. Angegeben wird der Parameter dabei folgendermaßen:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des zu überwachenden Parameters angibt.

Mit dem Parameter DEV_ValueEvent1_PollingTime wird festgelegt, in welchen zeitlichen Abständen der zu überwachende Parameter abgelesen wird. Die Angabe ist in Millisekunden.

Der Wert des zu überwachenden Parameters kann mit den Objekten DEV_ValueEvent1_ScaleNum und DEV_ValueEvent1_ScaleDen skaliert werden und über das Objekt DEV_ValueEvent1_ScaledValue kann der dann skalierte Parameter abgelesen werden.

Mit den Objekten DEV_ValueEvent1_Treshold1 und DEV_ValueEvent1_Treshold2 können die Schwellwerte festgelegt werden, bei welchen ein Kommando ausgelöst werden soll. Ist der zu überwachende Parameter dabei gleich oder größer dem Schwellwert wird das Kommando ausgelöst.

Damit bei einem Rauschen auf dem Wert des Parameters die Kommandos nicht mehr als einmal ausgelöst werden, kann in dem Objekten DEV_ValueEvent1_Hysteresis1 und DEV_ValueEvent1_Hysteresis2 eine Hysterese zu den Schwellwerten hinzugefügt werden.

Das Kommando wird ausgelöst wenn der entsprechende State (siehe DEV_ValueEvent1_Status) einen Zustandswechsel von 0 auf 1 macht.

Sollen nur gewisse Bits des zu überwachenden Parameters ausgewertet werden kann mit den Objekten DEV_ValueEvent1_Mask1 und DEV_ValueEvent1_Mask2 eine Bitmaske definiert werden, die für die entsprechende Schwellwerte gilt. Dies ist vor allem dann interessant, wenn digitale Eingänge überwacht werden sollen.

Das Kommando zu den Schwellwerten wird in den Objekten DEV_ValueEvent1_Cmd1 und DEV_ValueEvent1_Cmd2 hinterlegt. Die Funktionalität des Kommandos entspricht der Funktionalität des Gerätekommandos DEV_Cmd_ExecOnChange.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd1 werden in den Objekten DEV_ValueEvent1_Cmd1_Data0 und DEV_ValueEvent1_Cmd1_Data1 hinterlegt.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd2 werden in den Objekten DEV_ValueEvent1_Cmd2_Data0 und DEV_ValueEvent1_Cmd2_Data1 hinterlegt.

Das folgende Bild soll die Funktion der "Ereignis bei Wert" Funktion verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


301A.13h Ereignis bei Wert 1 - Kommando 2 Daten 1

Name | DEV_ValueEvent1_Cmd2_Data1
Bezeichnung | Ereignis bei Wert 1 - Kommando 2 Daten 1
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.46
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_ValueEvent1_Config, DEV_ValueEvent1_Status, DEV_ValueEvent1_ParNr, DEV_ValueEvent1_PollingTime, DEV_ValueEvent1_ScaleNum, DEV_ValueEvent1_ScaleDen, DEV_ValueEvent1_ScaledValue, DEV_ValueEvent1_Treshold1, DEV_ValueEvent1_Hysteresis1, DEV_ValueEvent1_Mask1, DEV_ValueEvent1_Cmd1, DEV_ValueEvent1_Cmd1_Data0, DEV_ValueEvent1_Cmd1_Data1, DEV_ValueEvent1_Treshold2, DEV_ValueEvent1_Hysteresis2, DEV_ValueEvent1_Mask2, DEV_ValueEvent1_Cmd2, DEV_ValueEvent1_Cmd2_Data0

Beschreibung

Mit der Funktion "Ereignis bei Wert" können Kommandos ausgelöst werden, wenn ein bestimmter Parameter einen gewissen Schwellwert überschreitet.

Der Parameter, welcher überwacht wird, muss in dem Objekt DEV_ValueEvent1_ParNr hinterlegt werden. Angegeben wird der Parameter dabei folgendermaßen:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des zu überwachenden Parameters angibt.

Mit dem Parameter DEV_ValueEvent1_PollingTime wird festgelegt, in welchen zeitlichen Abständen der zu überwachende Parameter abgelesen wird. Die Angabe ist in Millisekunden.

Der Wert des zu überwachenden Parameters kann mit den Objekten DEV_ValueEvent1_ScaleNum und DEV_ValueEvent1_ScaleDen skaliert werden und über das Objekt DEV_ValueEvent1_ScaledValue kann der dann skalierte Parameter abgelesen werden.

Mit den Objekten DEV_ValueEvent1_Treshold1 und DEV_ValueEvent1_Treshold2 können die Schwellwerte festgelegt werden, bei welchen ein Kommando ausgelöst werden soll. Ist der zu überwachende Parameter dabei gleich oder größer dem Schwellwert wird das Kommando ausgelöst.

Damit bei einem Rauschen auf dem Wert des Parameters die Kommandos nicht mehr als einmal ausgelöst werden, kann in dem Objekten DEV_ValueEvent1_Hysteresis1 und DEV_ValueEvent1_Hysteresis2 eine Hysterese zu den Schwellwerten hinzugefügt werden.

Das Kommando wird ausgelöst wenn der entsprechende State (siehe DEV_ValueEvent1_Status) einen Zustandswechsel von 0 auf 1 macht.

Sollen nur gewisse Bits des zu überwachenden Parameters ausgewertet werden kann mit den Objekten DEV_ValueEvent1_Mask1 und DEV_ValueEvent1_Mask2 eine Bitmaske definiert werden, die für die entsprechende Schwellwerte gilt. Dies ist vor allem dann interessant, wenn digitale Eingänge überwacht werden sollen.

Das Kommando zu den Schwellwerten wird in den Objekten DEV_ValueEvent1_Cmd1 und DEV_ValueEvent1_Cmd2 hinterlegt. Die Funktionalität des Kommandos entspricht der Funktionalität des Gerätekommandos DEV_Cmd_ExecOnChange.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd1 werden in den Objekten DEV_ValueEvent1_Cmd1_Data0 und DEV_ValueEvent1_Cmd1_Data1 hinterlegt.
Die Daten zu dem Kommando DEV_ValueEvent1_Cmd2 werden in den Objekten DEV_ValueEvent1_Cmd2_Data0 und DEV_ValueEvent1_Cmd2_Data1 hinterlegt.

Das folgende Bild soll die Funktion der "Ereignis bei Wert" Funktion verdeutlichen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

d.SdoWr(0x301A, 0x00, (1<<4)|(1<<0))   # DEV_ValueEvent1_Config
d.SdoWr(0x301A, 0x02, 0x376200)        # DEV_ValueEvent1_ParNr
d.SdoWr(0x301A, 0x03, 1)               # DEV_ValueEvent1_PollingTime

d.SdoWr(0x301A, 0x04, 1)               # DEV_ValueEvent1_ScaleNum
d.SdoWr(0x301A, 0x05, 10)              # DEV_ValueEvent1_ScaleDen

d.SdoWr(0x301A, 0x08, 2000)            # DEV_ValueEvent1_Treshold1
d.SdoWr(0x301A, 0x09, 100)             # DEV_ValueEvent1_Hysteresis1
d.SdoWr(0x301A, 0x0A, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask1

d.SdoWr(0x301A, 0x0B, 0x31)            # DEV_ValueEvent1_Cmd1
d.SdoWr(0x301A, 0x0C, 2000)            # DEV_ValueEvent1_Cmd1_Data0
d.SdoWr(0x301A, 0x0D, 0)               # DEV_ValueEvent1_Cmd1_Data1

d.SdoWr(0x301A, 0x0E, 6000)            # DEV_ValueEvent1_Treshold2
d.SdoWr(0x301A, 0x0F, 100)             # DEV_ValueEvent1_Hysteresis2

d.SdoWr(0x301A, 0x10, 0xFFFFFFFF)      # DEV_ValueEvent1_Mask2

d.SdoWr(0x301A, 0x11, 0x72)            # DEV_ValueEvent1_Cmd2
d.SdoWr(0x301A, 0x12, 0)               # DEV_ValueEvent1_Cmd2_Data0
d.SdoWr(0x301A, 0x13, 0)               # DEV_ValueEvent1_Cmd2_Data1

d.SdoWr(0x3003, 0x00, 3)               # DEV_Mode
d.SdoWr(0x3300, 0x00, 500)             # VEL_DesiredValue

d.SdoWr(0x3762, 0x00, 0)               # POS_ActualPosition

d.SdoWr(0x3004, 0x00, 1)               # DEV_Enable

while 1:
   Status = d.SdoRd(0x301A, 0x01)      # DEV_ValueEvent1_Status
   Value  = d.SdoRd(0x301A, 0x06)      # DEV_ValueEvent1_ScaledValue
   ActPos = d.SdoRd(0x3762, 0x00)      # POS_ActualPosition

   print
   print "Ereignis bei Wert - Status: 0x%X"  % (Status)
   print "Skalierter Wert: %d" % (Value)
   print "Aktuelle Position: %d" % (ActPos)
   if d.SdoRd(0x3004, 0x00) == 0:      # DEV_Enable
      break


Inhalt - Parameter 3000h (DSA) - Latch Ereignis

301D.00h | DEV_LatchEvent0_Control | Latch Event 1 - Control
301D.01h | DEV_LatchEvent0_Status | Latch Event 1 - Status
301D.03h | DEV_LatchEvent0_Mode | Latch Event 1 - Modus
301D.08h | DEV_LatchEvent0_ParTrigger | Latch Event 1 - Trigger Parameter
301D.09h | DEV_LatchEvent0_ParToLatch | Latch Event 1 - Gelatchter Parameter
301D.10h | DEV_LatchEvent0_LhCount | Latch Event 1 - Low-High Flankenzähler
301D.11h | DEV_LatchEvent0_LhVal | Latch Event 1 - Low-High Flanke gelatchter Wert
301D.12h | DEV_LatchEvent0_LhDiff | Latch Event 1 - Differenz Low-High - High-Low
301D.13h | DEV_LatchEvent0_HlCount | Latch Event 1 - High-Low Flankenzähler
301D.14h | DEV_LatchEvent0_HlVal | Latch Event 1 - High-Low Flanke gelatchter Wert
301D.15h | DEV_LatchEvent0_HlDiff | Latch Event 1 - Differenz High-Low - Low-High
301D.20h | DEV_LatchEvent1_Control | Latch Event 2 - Control
301D.21h | DEV_LatchEvent1_Status | Latch Event 2 - Status
301D.23h | DEV_LatchEvent1_Mode | Latch Event 2 - Modus
301D.28h | DEV_LatchEvent1_ParTrigger | Latch Event 2 - Trigger Parameter
301D.29h | DEV_LatchEvent1_ParToLatch | Latch Event 2 - Gelatchter Parameter
301D.30h | DEV_LatchEvent1_LhCount | Latch Event 2 - Low-High Flankenzähler
301D.31h | DEV_LatchEvent1_LhVal | Latch Event 2 - Low-High Flanke gelatchter Wert
301D.32h | DEV_LatchEvent1_LhDiff | Latch Event 2 - Differenz Low-High - High-Low
301D.33h | DEV_LatchEvent1_HlCount | Latch Event 2 - High-Low Flankenzähler
301D.34h | DEV_LatchEvent1_HlVal | Latch Event 2 - High-Low Flanke gelatchter Wert
301D.35h | DEV_LatchEvent1_HlDiff | Latch Event 2 - Differenz High-Low - Low-High


301D.00h Latch Event 1 - Control

Name | DEV_LatchEvent0_Control
Bezeichnung | Latch Event 1 - Control
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {0h, 1h, 2h, 3h}
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent0_Status, DEV_LatchEvent0_Mode, DEV_LatchEvent0_ParTrigger, DEV_LatchEvent0_ParToLatch, DEV_LatchEvent0_LhCount, DEV_LatchEvent0_LhVal, DEV_LatchEvent0_LhDiff, DEV_LatchEvent0_HlCount, DEV_LatchEvent0_HlVal, DEV_LatchEvent0_HlDiff

Beschreibung

Mit diesem Parameter kann der Latch Event konfiguriert werden.

Bei einem Latch Event wird ein Trigger und ein zu lesender Parameter ausgewählt. Wenn der Trigger aktiviert wird, wird der zu lesende Parameter abgelesen. Zusätzlich dazu wird die Häufigkeit des Auftretens des Triggers gezählt.
Damit können bspw. Positionsmarkierungen über digitale Eingänge gelesen werden.

Bitbelegung:
Bit | Name | Beschreibung
0 | Enable | Aktiviert die Latch Events
1 | BiDirCounters | Aktiviert das bidirektionale Zählen. Das nächst höhere Bit vom Trigger in DEV_LatchEvent0_ParTrigger bestimmt die Zählrichtung. (low = positiv, high = negativ)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x00, 3)               # DEV_LatchEvent0_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x03, 1)               # DEV_LatchEvent0_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x08, 0x31200001)      # DEV_LatchEvent0_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x09, 0x396A00)        # DEV_LatchEvent0_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x301D, 0x01, 0x01)            # DEV_LatchEvent0_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)


301D.01h Latch Event 1 - Status

Name | DEV_LatchEvent0_Status
Bezeichnung | Latch Event 1 - Status
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0h .. FFh]
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.E1
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent0_Control, DEV_LatchEvent0_Mode, DEV_LatchEvent0_ParTrigger, DEV_LatchEvent0_ParToLatch, DEV_LatchEvent0_LhCount, DEV_LatchEvent0_LhVal, DEV_LatchEvent0_LhDiff, DEV_LatchEvent0_HlCount, DEV_LatchEvent0_HlVal, DEV_LatchEvent0_HlDiff

Beschreibung

Mit diesem Parameter kann der Status Latch Event abgelesen werden. Durch das Beschreiben der Bits des Status kann dieser wieder zurückgesetzt werden. Das ist dann notwendig, wenn in DEV_LatchEvent0_Mode OneShot gewählt wird, da durch das Zurücksetzten des Status der Trigger wieder scharf gemacht wird.

Soll das Status Bit 0 (LhEdge) zurückgesetzt werden, muss in den Parameter DEV_LatchEvent0_Status eine 1 geschrieben werden.
Soll das Status Bit 1 (HlEdge) zurückgesetzt werden, muss in den Parameter DEV_LatchEvent0_Status eine 2 geschrieben werden.
Sollen die Status Bits 0 und 1 (LhEdge und HlEdge) zurückgesetzt werden, muss in den Parameter DEV_LatchEvent0_Status eine 3 geschrieben werden.

Bitbelegung:
Bit | Name | Beschreibung
0 | LhEdge | Wird high, wenn eine steigende Flanke erkannt wird.
1 | HlEdge | Wird high, wenn eine fallende Flanke erkannt wird.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x00, 3)               # DEV_LatchEvent0_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x03, 1)               # DEV_LatchEvent0_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x08, 0x31200001)      # DEV_LatchEvent0_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x09, 0x396A00)        # DEV_LatchEvent0_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x301D, 0x01, 0x01)            # DEV_LatchEvent0_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)


301D.03h Latch Event 1 - Modus

Name | DEV_LatchEvent0_Mode
Bezeichnung | Latch Event 1 - Modus
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0h .. FFh]
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.E1
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent0_Control, DEV_LatchEvent0_Status, DEV_LatchEvent0_ParTrigger, DEV_LatchEvent0_ParToLatch, DEV_LatchEvent0_LhCount, DEV_LatchEvent0_LhVal, DEV_LatchEvent0_LhDiff, DEV_LatchEvent0_HlCount, DEV_LatchEvent0_HlVal, DEV_LatchEvent0_HlDiff

Beschreibung

Mit diesem Parameter kann der Modus des Latch Event ausgewählt werden.

Wird der Modus OneShot gewählt, wird die entsprechende Flanke nur einmalig ausgewertet. Durch das Beschreiben des entsprechenden Status Bits in DEV_LatchEvent0_Status kann der Trigger wieder scharf gemacht werden.

Bitbelegung:
Bit | Name | Beschreibung
0 | OneShot_LhEdge | Aktivert OneShot auf der steigenden Flanke
1 | OneShot_HlEdge | Aktivert OneShot auf der fallenden Flanke

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x00, 3)               # DEV_LatchEvent0_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x03, 1)               # DEV_LatchEvent0_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x08, 0x31200001)      # DEV_LatchEvent0_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x09, 0x396A00)        # DEV_LatchEvent0_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x301D, 0x01, 0x01)            # DEV_LatchEvent0_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)


301D.08h Latch Event 1 - Trigger Parameter

Name | DEV_LatchEvent0_ParTrigger
Bezeichnung | Latch Event 1 - Trigger Parameter
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0h .. 312000FFh]
Defaultwert | 31200000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent0_Control, DEV_LatchEvent0_Status, DEV_LatchEvent0_Mode, DEV_LatchEvent0_ParToLatch, DEV_LatchEvent0_LhCount, DEV_LatchEvent0_LhVal, DEV_LatchEvent0_LhDiff, DEV_LatchEvent0_HlCount, DEV_LatchEvent0_HlVal, DEV_LatchEvent0_HlDiff

Beschreibung

Mit diesem Parameter kann der Trigger des Latch Event ausgewählt werden.

Der Trigger wird als Parameter folgendermaßen angegeben:

0xIIIISSBB

Wobei IIII den Index des Parameters und SS den Subindex des Parameters und BB die Bitnummer des Parameters angibt.

Wird im DEV_LatchEvent0_Control bidirektionales Zählen aktiviert, ist das nächst höhere Bit für die Zählrichtung zuständig.
Wird bspw. Din 0 als Trigger gewählt (0x31200000), gibt Din 1 die Zählrichtung an. (low = positiv, high = negativ)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x00, 3)               # DEV_LatchEvent0_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x03, 1)               # DEV_LatchEvent0_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x08, 0x31200001)      # DEV_LatchEvent0_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x09, 0x396A00)        # DEV_LatchEvent0_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x301D, 0x01, 0x01)            # DEV_LatchEvent0_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)


301D.09h Latch Event 1 - Gelatchter Parameter

Name | DEV_LatchEvent0_ParToLatch
Bezeichnung | Latch Event 1 - Gelatchter Parameter
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {376200h, 377200h, 394A00h, 396A00h, 394A20h, 397A00h, 3990A0h, 3991A0h}
Defaultwert | 376200h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent0_Control, DEV_LatchEvent0_Status, DEV_LatchEvent0_Mode, DEV_LatchEvent0_ParTrigger, DEV_LatchEvent0_LhCount, DEV_LatchEvent0_LhVal, DEV_LatchEvent0_LhDiff, DEV_LatchEvent0_HlCount, DEV_LatchEvent0_HlVal, DEV_LatchEvent0_HlDiff

Beschreibung

Mit diesem Parameter kann der zu latchende Parameter des Latch Events ausgewählt werden.

Der Parameter wird folgendermaßen angegeben:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des Parameters angibt.

Mögliche zu latchende Parameter sind:

Parameter Name | Parameter Index und Subindex
None | 0x000000
POS_ActualPosition | 0x376200
POS_ActualPosition_cnt | 0x377200
MOTOR_HALL_ActualPosition | 0x394A00
MOTOR_ENC_ActualPosition | 0x396A00
MOTOR_ENC_INC2_ActualPosition | 0x396A20
MOTOR_ENC_SSI_ActualPosition | 0x397A00
MOTOR_ENC_VIRT0_ActualPosition | 0x3990A0
MOTOR_ENC_VIRT1_ActualPosition | 0x3991A0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x00, 3)               # DEV_LatchEvent0_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x03, 1)               # DEV_LatchEvent0_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x08, 0x31200001)      # DEV_LatchEvent0_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x09, 0x396A00)        # DEV_LatchEvent0_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x301D, 0x01, 0x01)            # DEV_LatchEvent0_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)


301D.10h Latch Event 1 - Low-High Flankenzähler

Name | DEV_LatchEvent0_LhCount
Bezeichnung | Latch Event 1 - Low-High Flankenzähler
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent0_Control, DEV_LatchEvent0_Status, DEV_LatchEvent0_Mode, DEV_LatchEvent0_ParTrigger, DEV_LatchEvent0_ParToLatch, DEV_LatchEvent0_LhVal, DEV_LatchEvent0_LhDiff, DEV_LatchEvent0_HlCount, DEV_LatchEvent0_HlVal, DEV_LatchEvent0_HlDiff

Beschreibung

In diesem Parameter steht der Wert der gezählten steigenden Flanken des Latch Event Triggers.

Wird in DEV_LatchEvent0_Mode OneShot gewählt, werden die Flanken nur dann gezählt, wenn der Trigger scharf gemacht wurde.

Ist in DEV_LatchEvent0_Control bidiretkionales Zählen aktiviert, wird über das entsprechende Bit entschieden, ob in positive oder negative Richtung gezählt wird.

Wird im DEV_LatchEvent0_Control bidirektionales Zählen aktiviert, ist das nächst höhere Bit für die Zählrichtung zuständig.
Wird bspw. Din 0 als Trigger gewählt (0x31200000), gibt Din 1 die Zählrichtung an. (low = positiv, high = negativ)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x00, 3)               # DEV_LatchEvent0_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x03, 1)               # DEV_LatchEvent0_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x08, 0x31200001)      # DEV_LatchEvent0_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x09, 0x396A00)        # DEV_LatchEvent0_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x301D, 0x01, 0x01)            # DEV_LatchEvent0_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)


301D.11h Latch Event 1 - Low-High Flanke gelatchter Wert

Name | DEV_LatchEvent0_LhVal
Bezeichnung | Latch Event 1 - Low-High Flanke gelatchter Wert
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent0_Control, DEV_LatchEvent0_Status, DEV_LatchEvent0_Mode, DEV_LatchEvent0_ParTrigger, DEV_LatchEvent0_ParToLatch, DEV_LatchEvent0_LhCount, DEV_LatchEvent0_LhDiff, DEV_LatchEvent0_HlCount, DEV_LatchEvent0_HlVal, DEV_LatchEvent0_HlDiff

Beschreibung

In diesem Parameter steht der Wert der bei steigenden Flanken des Latch Event Triggers gelatcht wurde.

Wird in DEV_LatchEvent0_Mode OneShot gewählt, wird der Wert nur dann gelatcht, wenn der Trigger scharf gemacht wurde.

Der maximale zeitliche Abstand zwischen auslösen des Triggers und latchen des Werts beträg 125 µs.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x00, 3)               # DEV_LatchEvent0_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x03, 1)               # DEV_LatchEvent0_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x08, 0x31200001)      # DEV_LatchEvent0_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x09, 0x396A00)        # DEV_LatchEvent0_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x301D, 0x01, 0x01)            # DEV_LatchEvent0_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)


301D.12h Latch Event 1 - Differenz Low-High - High-Low

Name | DEV_LatchEvent0_LhDiff
Bezeichnung | Latch Event 1 - Differenz Low-High - High-Low
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent0_Control, DEV_LatchEvent0_Status, DEV_LatchEvent0_Mode, DEV_LatchEvent0_ParTrigger, DEV_LatchEvent0_ParToLatch, DEV_LatchEvent0_LhCount, DEV_LatchEvent0_LhVal, DEV_LatchEvent0_HlCount, DEV_LatchEvent0_HlVal, DEV_LatchEvent0_HlDiff

Beschreibung

In diesem Parameter steht die Differenz des Wertes der bei steigender Flanke des Latch Event Triggers und des Wertes der bei fallender Flanke des Latch Event Triggers gelatcht wurde.

DEV_LatchEvent0_LhDiff = DEV_LatchEvent0_LhVal - DEV_LatchEvent0_HlVal

Die Differenz wird gebildet, sobald eine steigende Flanke erkannt wird und der Wert in DEV_LatchEvent0_LhVal geschrieben wurde.

Wird in DEV_LatchEvent0_Mode OneShot gewählt, wird die Differenz nur dann gebildet, wenn der Trigger scharf gemacht wurde.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x00, 3)               # DEV_LatchEvent0_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x03, 1)               # DEV_LatchEvent0_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x08, 0x31200001)      # DEV_LatchEvent0_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x09, 0x396A00)        # DEV_LatchEvent0_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x301D, 0x01, 0x01)            # DEV_LatchEvent0_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)


301D.13h Latch Event 1 - High-Low Flankenzähler

Name | DEV_LatchEvent0_HlCount
Bezeichnung | Latch Event 1 - High-Low Flankenzähler
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent0_Control, DEV_LatchEvent0_Status, DEV_LatchEvent0_Mode, DEV_LatchEvent0_ParTrigger, DEV_LatchEvent0_ParToLatch, DEV_LatchEvent0_LhCount, DEV_LatchEvent0_LhVal, DEV_LatchEvent0_LhDiff, DEV_LatchEvent0_HlVal, DEV_LatchEvent0_HlDiff

Beschreibung

In diesem Parameter steht der Wert der gezählten fallenden Flanken des Latch Event Triggers.

Wird in DEV_LatchEvent0_Mode OneShot gewählt, werden die Flanken nur dann gezählt, wenn der Trigger scharf gemacht wurde.

Ist in DEV_LatchEvent0_Control bidiretkionales Zählen aktiviert, wird über das entsprechende Bit entschieden, ob in positive oder negative Richtung gezählt wird.

Wird im DEV_LatchEvent0_Control bidirektionales Zählen aktiviert, ist das nächst höhere Bit für die Zählrichtung zuständig.
Wird bspw. Din 0 als Trigger gewählt (0x31200000), gibt Din 1 die Zählrichtung an. (low = positiv, high = negativ)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x00, 3)               # DEV_LatchEvent0_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x03, 1)               # DEV_LatchEvent0_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x08, 0x31200001)      # DEV_LatchEvent0_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x09, 0x396A00)        # DEV_LatchEvent0_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x301D, 0x01, 0x01)            # DEV_LatchEvent0_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)


301D.14h Latch Event 1 - High-Low Flanke gelatchter Wert

Name | DEV_LatchEvent0_HlVal
Bezeichnung | Latch Event 1 - High-Low Flanke gelatchter Wert
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent0_Control, DEV_LatchEvent0_Status, DEV_LatchEvent0_Mode, DEV_LatchEvent0_ParTrigger, DEV_LatchEvent0_ParToLatch, DEV_LatchEvent0_LhCount, DEV_LatchEvent0_LhVal, DEV_LatchEvent0_LhDiff, DEV_LatchEvent0_HlCount, DEV_LatchEvent0_HlDiff

Beschreibung

In diesem Parameter steht der Wert der bei fallender Flanke des Latch Event Triggers gelatcht wurde.

Wird in DEV_LatchEvent0_Mode OneShot gewählt, wird der Wert nur dann gelatcht, wenn der Trigger scharf gemacht wurde.

Der maximale zeitliche Abstand zwischen auslösen des Trigger und latchen des Werts beträg 125 µs.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x00, 3)               # DEV_LatchEvent0_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x03, 1)               # DEV_LatchEvent0_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x08, 0x31200001)      # DEV_LatchEvent0_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x09, 0x396A00)        # DEV_LatchEvent0_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x301D, 0x01, 0x01)            # DEV_LatchEvent0_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)


301D.15h Latch Event 1 - Differenz High-Low - Low-High

Name | DEV_LatchEvent0_HlDiff
Bezeichnung | Latch Event 1 - Differenz High-Low - Low-High
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent0_Control, DEV_LatchEvent0_Status, DEV_LatchEvent0_Mode, DEV_LatchEvent0_ParTrigger, DEV_LatchEvent0_ParToLatch, DEV_LatchEvent0_LhCount, DEV_LatchEvent0_LhVal, DEV_LatchEvent0_LhDiff, DEV_LatchEvent0_HlCount, DEV_LatchEvent0_HlVal

Beschreibung

In diesem Parameter steht die Differenz des Wertes der bei fallender Flanke des Latch Event Triggers und des Wertes der bei steigender Flanke des Latch Event Triggers gelatcht wurde.

DEV_LatchEvent0_HlDiff = DEV_LatchEvent0_HlVal - DEV_LatchEvent0_LhVal

Die Differenz wird gebildet, sobald eine fallende Flanke erkannt wird und der Wert in DEV_LatchEvent0_HlVal geschrieben wurde.

Wird in DEV_LatchEvent0_Mode OneShot gewählt, wird die Differenz nur dann gebildet, wenn der Trigger scharf gemacht wurde.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x00, 3)               # DEV_LatchEvent0_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x03, 1)               # DEV_LatchEvent0_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x08, 0x31200001)      # DEV_LatchEvent0_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x09, 0x396A00)        # DEV_LatchEvent0_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x301D, 0x01, 0x01)            # DEV_LatchEvent0_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x01)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x10)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x11)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x12)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x13)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x14)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x15)


301D.20h Latch Event 2 - Control

Name | DEV_LatchEvent1_Control
Bezeichnung | Latch Event 2 - Control
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {0h, 1h, 2h, 3h}
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent1_Status, DEV_LatchEvent1_Mode, DEV_LatchEvent1_ParTrigger, DEV_LatchEvent1_ParToLatch, DEV_LatchEvent1_LhCount, DEV_LatchEvent1_LhVal, DEV_LatchEvent1_LhDiff, DEV_LatchEvent1_HlCount, DEV_LatchEvent1_HlVal, DEV_LatchEvent1_HlDiff

Beschreibung

Mit diesem Parameter kann der Latch Event konfiguriert werden.

Bei einem Latch Event wird ein Trigger und ein zu lesender Parameter ausgewählt. Wenn der Trigger aktiviert wird, wird der zu lesende Parameter abgelesen. Zusätzlich dazu wird die Häufigkeit des Auftretens des Triggers gezählt.
Damit können bspw. Positionsmarkierungen über digitale Eingänge gelesen werden.

Bitbelegung:
Bit | Name | Beschreibung
0 | Enable | Aktiviert die Latch Events
1 | BiDirCounters | Aktiviert das bidirektionale Zählen. Das nächst höhere Bit vom Trigger in DEV_LatchEvent1_ParTrigger bestimmt die Zählrichtung. (low = positiv, high = negativ)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x20, 3)               # DEV_LatchEvent1_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x23, 1)               # DEV_LatchEvent1_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x28, 0x31200001)      # DEV_LatchEvent1_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x29, 0x396A00)        # DEV_LatchEvent1_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x301D, 0x21, 0x01)            # DEV_LatchEvent1_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)


301D.21h Latch Event 2 - Status

Name | DEV_LatchEvent1_Status
Bezeichnung | Latch Event 2 - Status
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0h .. FFh]
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.E1
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent1_Control, DEV_LatchEvent1_Mode, DEV_LatchEvent1_ParTrigger, DEV_LatchEvent1_ParToLatch, DEV_LatchEvent1_LhCount, DEV_LatchEvent1_LhVal, DEV_LatchEvent1_LhDiff, DEV_LatchEvent1_HlCount, DEV_LatchEvent1_HlVal, DEV_LatchEvent1_HlDiff

Beschreibung

Mit diesem Parameter kann der Status Latch Event abgelesen werden. Durch das Beschreiben der Bits des Status kann dieser wieder zurückgesetzt werden. Das ist dann notwendig, wenn in DEV_LatchEvent1_Mode OneShot gewählt wird, da durch das Zurücksetzten des Status der Trigger wieder scharf gemacht wird.

Soll das Status Bit 0 (LhEdge) zurückgesetzt werden, muss in den Parameter DEV_LatchEvent1_Status eine 1 geschrieben werden.
Soll das Status Bit 1 (HlEdge) zurückgesetzt werden, muss in den Parameter DEV_LatchEvent1_Status eine 2 geschrieben werden.
Sollen die Status Bits 0 und 1 (LhEdge und HlEdge) zurückgesetzt werden, muss in den Parameter DEV_LatchEvent1_Status eine 3 geschrieben werden.

Bitbelegung:
Bit | Name | Beschreibung
0 | LhEdge | Wird high, wenn eine steigende Flanke erkannt wird.
1 | HlEdge | Wird high, wenn eine fallende Flanke erkannt wird.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x20, 3)               # DEV_LatchEvent1_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x23, 1)               # DEV_LatchEvent1_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x28, 0x31200001)      # DEV_LatchEvent1_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x29, 0x396A00)        # DEV_LatchEvent1_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x301D, 0x21, 0x01)            # DEV_LatchEvent1_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)


301D.23h Latch Event 2 - Modus

Name | DEV_LatchEvent1_Mode
Bezeichnung | Latch Event 2 - Modus
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0h .. FFh]
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.E1
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent1_Control, DEV_LatchEvent1_Status, DEV_LatchEvent1_ParTrigger, DEV_LatchEvent1_ParToLatch, DEV_LatchEvent1_LhCount, DEV_LatchEvent1_LhVal, DEV_LatchEvent1_LhDiff, DEV_LatchEvent1_HlCount, DEV_LatchEvent1_HlVal, DEV_LatchEvent1_HlDiff

Beschreibung

Mit diesem Parameter kann der Modus des Latch Event ausgewählt werden.

Wird der Modus OneShot gewählt, wird die entsprechende Flanke nur einmalig ausgewertet. Durch das Beschreiben des entsprechenden Status Bits in DEV_LatchEvent1_Status kann der Trigger wieder scharf gemacht werden.

Bitbelegung:
Bit | Name | Beschreibung
0 | OneShot_LhEdge | Aktivert OneShot auf der steigenden Flanke
1 | OneShot_HlEdge | Aktivert OneShot auf der fallenden Flanke

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x20, 3)               # DEV_LatchEvent1_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x23, 1)               # DEV_LatchEvent1_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x28, 0x31200001)      # DEV_LatchEvent1_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x29, 0x396A00)        # DEV_LatchEvent1_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x301D, 0x21, 0x01)            # DEV_LatchEvent1_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)


301D.28h Latch Event 2 - Trigger Parameter

Name | DEV_LatchEvent1_ParTrigger
Bezeichnung | Latch Event 2 - Trigger Parameter
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0h .. 312000FFh]
Defaultwert | 31200100h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent1_Control, DEV_LatchEvent1_Status, DEV_LatchEvent1_Mode, DEV_LatchEvent1_ParToLatch, DEV_LatchEvent1_LhCount, DEV_LatchEvent1_LhVal, DEV_LatchEvent1_LhDiff, DEV_LatchEvent1_HlCount, DEV_LatchEvent1_HlVal, DEV_LatchEvent1_HlDiff

Beschreibung

Mit diesem Parameter kann der Trigger des Latch Event ausgewählt werden.

Der Trigger wird als Parameter folgendermaßen angegeben:

0xIIIISSBB

Wobei IIII den Index des Parameters und SS den Subindex des Parameters und BB die Bitnummer des Parameters angibt.

Wird im DEV_LatchEvent1_Control bidirektionales Zählen aktiviert, ist das nächst höhere Bit für die Zählrichtung zuständig.
Wird bspw. Din 0 als Trigger gewählt (0x31200000), gibt Din 1 die Zählrichtung an. (low = positiv, high = negativ)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x20, 3)               # DEV_LatchEvent1_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x23, 1)               # DEV_LatchEvent1_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x28, 0x31200001)      # DEV_LatchEvent1_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x29, 0x396A00)        # DEV_LatchEvent1_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x301D, 0x21, 0x01)            # DEV_LatchEvent1_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)


301D.29h Latch Event 2 - Gelatchter Parameter

Name | DEV_LatchEvent1_ParToLatch
Bezeichnung | Latch Event 2 - Gelatchter Parameter
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {376200h, 377200h, 394A00h, 396A00h, 394A20h, 397A00h, 3990A0h, 3991A0h}
Defaultwert | 376200h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent1_Control, DEV_LatchEvent1_Status, DEV_LatchEvent1_Mode, DEV_LatchEvent1_ParTrigger, DEV_LatchEvent1_LhCount, DEV_LatchEvent1_LhVal, DEV_LatchEvent1_LhDiff, DEV_LatchEvent1_HlCount, DEV_LatchEvent1_HlVal, DEV_LatchEvent1_HlDiff

Beschreibung

Mit diesem Parameter kann der zu latchende Parameter des Latch Events ausgewählt werden.

Der Parameter wird folgendermaßen angegeben:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des Parameters angibt.

Mögliche zu latchende Parameter sind:

Parameter Name | Parameter Index und Subindex
None | 0x000000
POS_ActualPosition | 0x376200
POS_ActualPosition_cnt | 0x377200
MOTOR_HALL_ActualPosition | 0x394A00
MOTOR_ENC_ActualPosition | 0x396A00
MOTOR_ENC_INC2_ActualPosition | 0x396A20
MOTOR_ENC_SSI_ActualPosition | 0x397A00
MOTOR_ENC_VIRT0_ActualPosition | 0x3990A0
MOTOR_ENC_VIRT1_ActualPosition | 0x3991A0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x20, 3)               # DEV_LatchEvent1_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x23, 1)               # DEV_LatchEvent1_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x28, 0x31200001)      # DEV_LatchEvent1_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x29, 0x396A00)        # DEV_LatchEvent1_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x301D, 0x21, 0x01)            # DEV_LatchEvent1_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)


301D.30h Latch Event 2 - Low-High Flankenzähler

Name | DEV_LatchEvent1_LhCount
Bezeichnung | Latch Event 2 - Low-High Flankenzähler
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent1_Control, DEV_LatchEvent1_Status, DEV_LatchEvent1_Mode, DEV_LatchEvent1_ParTrigger, DEV_LatchEvent1_ParToLatch, DEV_LatchEvent1_LhVal, DEV_LatchEvent1_LhDiff, DEV_LatchEvent1_HlCount, DEV_LatchEvent1_HlVal, DEV_LatchEvent1_HlDiff

Beschreibung

In diesem Parameter steht der Wert der gezählten steigenden Flanken des Latch Event Triggers.

Wird in DEV_LatchEvent1_Mode OneShot gewählt, werden die Flanken nur dann gezählt, wenn der Trigger scharf gemacht wurde.

Ist in DEV_LatchEvent1_Control bidiretkionales Zählen aktiviert, wird über das entsprechende Bit entschieden, ob in positive oder negative Richtung gezählt wird.

Wird im DEV_LatchEvent1_Control bidirektionales Zählen aktiviert, ist das nächst höhere Bit für die Zählrichtung zuständig.
Wird bspw. Din 0 als Trigger gewählt (0x31200000), gibt Din 1 die Zählrichtung an. (low = positiv, high = negativ)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x20, 3)               # DEV_LatchEvent1_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x23, 1)               # DEV_LatchEvent1_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x28, 0x31200001)      # DEV_LatchEvent1_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x29, 0x396A00)        # DEV_LatchEvent1_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x301D, 0x21, 0x01)            # DEV_LatchEvent1_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)


301D.31h Latch Event 2 - Low-High Flanke gelatchter Wert

Name | DEV_LatchEvent1_LhVal
Bezeichnung | Latch Event 2 - Low-High Flanke gelatchter Wert
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent1_Control, DEV_LatchEvent1_Status, DEV_LatchEvent1_Mode, DEV_LatchEvent1_ParTrigger, DEV_LatchEvent1_ParToLatch, DEV_LatchEvent1_LhCount, DEV_LatchEvent1_LhDiff, DEV_LatchEvent1_HlCount, DEV_LatchEvent1_HlVal, DEV_LatchEvent1_HlDiff

Beschreibung

In diesem Parameter steht der Wert der bei steigenden Flanken des Latch Event Triggers gelatcht wurde.

Wird in DEV_LatchEvent1_Mode OneShot gewählt, wird der Wert nur dann gelatcht, wenn der Trigger scharf gemacht wurde.

Der maximale zeitliche Abstand zwischen auslösen des Trigger und latchen des Werts beträg 125 µs.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x20, 3)               # DEV_LatchEvent1_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x23, 1)               # DEV_LatchEvent1_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x28, 0x31200001)      # DEV_LatchEvent1_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x29, 0x396A00)        # DEV_LatchEvent1_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x301D, 0x21, 0x01)            # DEV_LatchEvent1_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)


301D.32h Latch Event 2 - Differenz Low-High - High-Low

Name | DEV_LatchEvent1_LhDiff
Bezeichnung | Latch Event 2 - Differenz Low-High - High-Low
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent1_Control, DEV_LatchEvent1_Status, DEV_LatchEvent1_Mode, DEV_LatchEvent1_ParTrigger, DEV_LatchEvent1_ParToLatch, DEV_LatchEvent1_LhCount, DEV_LatchEvent1_LhVal, DEV_LatchEvent1_HlCount, DEV_LatchEvent1_HlVal, DEV_LatchEvent1_HlDiff

Beschreibung

In diesem Parameter steht die Differenz des Wertes der bei steigenden Flanke des Latch Event Triggers und des Wertes der bei fallender Flanke des Latch Event Triggers gelatcht wurde.

DEV_LatchEvent1_LhDiff = DEV_LatchEvent1_LhVal - DEV_LatchEvent1_HlVal

Die Differenz wird gebildet, sobald eine steigende Flanke erkannt wird und der Wert in DEV_LatchEvent1_LhVal geschrieben wurde.

Wird in DEV_LatchEvent1_Mode OneShot gewählt, wird die Differenz nur dann gebildet, wenn der Trigger scharf gemacht wurde.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x20, 3)               # DEV_LatchEvent1_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x23, 1)               # DEV_LatchEvent1_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x28, 0x31200001)      # DEV_LatchEvent1_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x29, 0x396A00)        # DEV_LatchEvent1_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x301D, 0x21, 0x01)            # DEV_LatchEvent1_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)


301D.33h Latch Event 2 - High-Low Flankenzähler

Name | DEV_LatchEvent1_HlCount
Bezeichnung | Latch Event 2 - High-Low Flankenzähler
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent1_Control, DEV_LatchEvent1_Status, DEV_LatchEvent1_Mode, DEV_LatchEvent1_ParTrigger, DEV_LatchEvent1_ParToLatch, DEV_LatchEvent1_LhCount, DEV_LatchEvent1_LhVal, DEV_LatchEvent1_LhDiff, DEV_LatchEvent1_HlVal, DEV_LatchEvent1_HlDiff

Beschreibung

In diesem Parameter steht der Wert der gezählten fallenden Flanken des Latch Event Triggers.

Wird in DEV_LatchEvent1_Mode OneShot gewählt, werden die Flanken nur dann gezählt, wenn der Trigger scharf gemacht wurde.

Ist in DEV_LatchEvent1_Control bidiretkionales Zählen aktiviert, wird über das entsprechende Bit entschieden, ob in positive oder negative Richtung gezählt wird.

Wird im DEV_LatchEvent1_Control bidirektionales Zählen aktiviert, ist das nächst höhere Bit für die Zählrichtung zuständig.
Wird bspw. Din 0 als Trigger gewählt (0x31200000), gibt Din 1 die Zählrichtung an. (low = positiv, high = negativ)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x20, 3)               # DEV_LatchEvent1_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x23, 1)               # DEV_LatchEvent1_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x28, 0x31200001)      # DEV_LatchEvent1_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x29, 0x396A00)        # DEV_LatchEvent1_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x301D, 0x21, 0x01)            # DEV_LatchEvent1_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)


301D.34h Latch Event 2 - High-Low Flanke gelatchter Wert

Name | DEV_LatchEvent1_HlVal
Bezeichnung | Latch Event 2 - High-Low Flanke gelatchter Wert
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent1_Control, DEV_LatchEvent1_Status, DEV_LatchEvent1_Mode, DEV_LatchEvent1_ParTrigger, DEV_LatchEvent1_ParToLatch, DEV_LatchEvent1_LhCount, DEV_LatchEvent1_LhVal, DEV_LatchEvent1_LhDiff, DEV_LatchEvent1_HlCount, DEV_LatchEvent1_HlDiff

Beschreibung

In diesem Parameter steht der Wert der bei fallender Flanken des Latch Event Triggers gelatcht wurde.

Wird in DEV_LatchEvent1_Mode OneShot gewählt, wird der Wert nur dann gelatcht, wenn der Trigger scharf gemacht wurde.

Der maximale zeitliche Abstand zwischen auslösen des Trigger und latchen des Werts beträg 125 µs.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x20, 3)               # DEV_LatchEvent1_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x23, 1)               # DEV_LatchEvent1_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x28, 0x31200001)      # DEV_LatchEvent1_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x29, 0x396A00)        # DEV_LatchEvent1_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x301D, 0x21, 0x01)            # DEV_LatchEvent1_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)


301D.35h Latch Event 2 - Differenz High-Low - Low-High

Name | DEV_LatchEvent1_HlDiff
Bezeichnung | Latch Event 2 - Differenz High-Low - Low-High
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.DE
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_LatchEvent1_Control, DEV_LatchEvent1_Status, DEV_LatchEvent1_Mode, DEV_LatchEvent1_ParTrigger, DEV_LatchEvent1_ParToLatch, DEV_LatchEvent1_LhCount, DEV_LatchEvent1_LhVal, DEV_LatchEvent1_LhDiff, DEV_LatchEvent1_HlCount, DEV_LatchEvent1_HlVal

Beschreibung

In diesem Parameter steht die Differenz des Wertes der bei fallender Flanke des Latch Event Triggers und des Wertes der bei steigender Flanke des Latch Event Triggers gelatcht wurde.

DEV_LatchEvent1_HlDiff = DEV_LatchEvent1_HlVal - DEV_LatchEvent1_LhVal

Die Differenz wird gebildet, sobald eine fallende Flanke erkannt wird und der Wert in DEV_LatchEvent1_HlVal geschrieben wurde.

Wird in DEV_LatchEvent1_Mode OneShot gewählt, wird die Differenz nur dann gebildet, wenn der Trigger scharf gemacht wurde.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)

pos_1 = 2599
pos_2 = 4777
pos_3 = 6822
pos_4 = 9007

d.SdoWr(0x301D, 0x20, 3)               # DEV_LatchEvent1_Control - Enable & BiDirCounter
d.SdoWr(0x301D, 0x23, 1)               # DEV_LatchEvent1_Mode - OneShot auf steigende Flanke
d.SdoWr(0x301D, 0x28, 0x31200001)      # DEV_LatchEvent1_ParTrigger - Bit 1 von Digitalem Eingang Port 0
d.SdoWr(0x301D, 0x29, 0x396A00)        # DEV_LatchEvent1_ParToLatch - Encoderposition

d.SdoWr(0x3F00, 0x00, 0x55AA55AA)      # DIAG_Enable - zum Beschreiben freigeben
d.SdoWr(0x3FA0, 0x00, 0x02)            # DIAG_SIM_Control - virtuelleDin freischalten
d.SdoWr(0x3F00, 0x00, 0x00)            # DIAG_Enable - zum Beschreiben sperren
d.SdoWr(0x3FA3, 0x00, 0x0F)            # DIAG_SIM_DIN_Mask - Maske für virtuell Din0 & Din1 & Din2 & Din3
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din0 & Din1 & Din2 3 Din3 zurücksetzen

d.SdoWr(0x396A, 0x00, pos_1)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "1.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_2)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "1.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x396A, 0x00, pos_3)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "2.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 zurücksetzen
print
print "2.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x301D, 0x21, 0x01)            # DEV_LatchEvent1_Status - OneShot auf steigende Flanke scharf machen
d.SdoWr(0x396A, 0x00, pos_4)           # MOTOR_ENC_ActualPosition - Position setzen
d.SdoWr(0x3FA4, 0x00, 0x02)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke Low-High"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4, 0x00, 0x00)            # DIAG_SIM_DIN_Value - Din1 setzen
print
print "3.Flanke High-Low"
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)

d.SdoWr(0x3FA4,0x00, 0x04)            # DIAG_SIM_DIN_Value - Din2 setzen
for i in xrange (6):
   if not i%2:
      d.SdoWr(0x3FA4,0x00, 0x06)      # DIAG_SIM_DIN_Value - Din1 & Din2 setzen
   else:
      d.SdoWr(0x3FA4,0x00, 0x04)      # DIAG_SIM_DIN_Value - Din1 zurücksetzten & Din2 setzen
print
print "Latch Evt. Status   :",d.SdoRd(0x301D, 0x21)
print "Latch Evt. LhCount  :",d.SdoRd(0x301D, 0x30)
print "Latch Evt. LhValue  :",d.SdoRd(0x301D, 0x31)
print "Latch Evt. LhDiff   :",d.SdoRd(0x301D, 0x32)
print "Latch Evt. HlCount  :",d.SdoRd(0x301D, 0x33)
print "Latch Evt. HlValue  :",d.SdoRd(0x301D, 0x34)
print "Latch Evt. HlDiff   :",d.SdoRd(0x301D, 0x35)


3128.00h Digitale Eingänge - Hallsensoren

Name | IO_DIN_Hall
Bezeichnung | Digitale Eingänge - Hallsensoren
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 7]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | DinHall()
Querverweis | IO_DIN_Enc

Beschreibung

Liefert den aktuellen Zustand der digitalen Hallsensoreneingänge des Antriebsreglers zurück.
Beim Betrieb des Gerätes mit bürstenbehafteten Motoren können die Halleingänge als allgemeine digitale 5V-Eingänge verwendet werden.

ACHTUNG Die angelegte Spannung an die Hallsensoreneingänge darf 5V nicht überschreiten !!

Bitbelegung:

Bit-Nr. | Bedeutung
0 | Hallsensor 1
1 | Hallsensor 2
2 | Hallsensor 3

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                           # NodeId = 1

for i in range(0,10):
   print hex(d.SdoRd(0x3128, 0x00))  # Zustand der Hallsensoren in HEX ausgeben
   time.sleep(1)                     # 1 Sekunde warten


3129.01h NodeId-Schalter - Zustand

Name | IO_DIN_NodeIdSwitch
Bezeichnung | NodeId-Schalter - Zustand
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.10
Geräte | Alle
PLC Funktion | DinNodeId()
Querverweis | -

Beschreibung

Liefert den aktuellen Zustand der HEX-Schalter für die NodeId-Einstellung (NodeId = Knotenadresse) zurück.

Wenn die NodeId softwaremässig bestimmt wurde, werden die HEX-Schalter für die Bestimmung der Knotenadresse nicht mehr verwendet.
Somit steht der Wert des HEX-Schalters für eine applikationsspezifische Nutzung zur Verfügung.

Bitbelegung:

Bit-Nr. | Bedeutung
7.. 4 | NodeId-Hi
3 .. 0 | NodeId-Lo

Nur bei Geräten mit HEX-Schaltern verfügbar.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # Node ID = 1

print "Node-Id Schalter:", d.SdoRd(0x3129, 0x01) # IO_DIN_NodeIdSwitch


3154.00h Freigabe der digitalen Ausgänge

Name | IO_DOUT_Enable
Bezeichnung | Freigabe der digitalen Ausgänge
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.08
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_DoutError, IO_DOUT_P0, MOTOR_HALL_DoutPulses_Mode, MOTOR_BrakeManagement_Config

Beschreibung

Mit dem Parameter können die digitalen Ausgänge freigegeben oder gesperrt werden.

Die Freigabe gilt nur für den Parameter 3150.00h (IO_DOUT_P0), die Firmware selbst kann die Ausgänge jedoch weiterhin setzen.
Die Sperre verhindert, dass der Zustand des digitalen Ausgangs unbeabsichtigt bzw. unberechtigt geändert wird, wenn der Ausgang bereits durch interne Funktionen der Firmware genutzt wird (z.B. durch Bremsmanagement, Fehlerausgang usw.).

Die Anzahl der digitalen Ausgänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten des Gerätes).

Bitbelegung:
Bit-Nr. | Bedeutung
0 | digitaler Ausgang 0 (=1 freigegeben, =0 gesperrt)
1 | digitaler Ausgang 1 (=1 freigegeben, =0 gesperrt)
2 | digitaler Ausgang 2 (=1 freigegeben, =0 gesperrt)
3 | digitaler Ausgang 3 (=1 freigegeben, =0 gesperrt)
4 | digitaler Ausgang 4 (=1 freigegeben, =0 gesperrt)
5 | digitaler Ausgang 5 (=1 freigegeben, =0 gesperrt)
6 | digitaler Ausgang 6 (=1 freigegeben, =0 gesperrt)
7 | digitaler Ausgang 7 (=1 freigegeben, =0 gesperrt)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                  # NodeId = 1

# Freigeben der digitalen Ausgänge von Port0 mit Bitmaske
set_dout = 0x02             # Nur Bit 1 freigeben (dout1)
d_out = (d.SdoRd(0x3154, 0x00) | set_dout)
d.SdoWr(0x3154, 0x00, d_out)

# Sperren der digitalen Ausgänge von Port0 mit Bitmaske
reset_dout = 0x01          # Nur Bit 0 sperren (dout0)
d_out = (d.SdoRd(0x3154, 0x00) & ~reset_dout)
d.SdoWr(0x3154, 0x00, d_out)

# Ausgeben des Freigabezustandes von Port0
print "enable_Dout =", hex(d.SdoRd(0x3154, 0x00))


3224.00h Dynamische Strombegrenzung - Mode

Name | CURR_DynLimitMode
Bezeichnung | Dynamische Strombegrenzung - Mode
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1, *2} *Ab Firmware Version 1.93.00.FC
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.71
Geräte | Alle
PLC Funktion | CurrDynLimitMode(value), CurrDynLimitOn(), CurrDynLimitOff()
Querverweis | CURR_DynLimitPeak, CURR_DynLimitCont, CURR_DynLimitTime

Beschreibung

Dieser Parameter aktiviert bzw. deaktiviert die dynamische Strombegrenzung I*t bzw. I²t.

Parameterwerte:
Wert | Beschreibung
0 | dynamische Strombegrenzung deaktiviert
1 | dynamische Strombegrenzung I*t aktiviert
2 | dynamische Strombegrenzung I²t aktiviert
Für die Funktionsbeschreibung der dynamischen Strombegrenzung siehe die Parameter CURR_DynLimitPeak, CURR_DynLimitCont und CURR_DynLimitTime.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                   # NodeId = 1

# Ausgabe der Parameter
print "Dynamische Strombegrenzung:"
print " Enabled                  =", d.SdoRd(0x3224, 0x00)         # CURR_DynLimitMode
print " Spitzenstrom             =", d.SdoRd(0x3224, 0x01), "[mA]" # CURR_DynLimitPeak
print " Dauerstrom               =", d.SdoRd(0x3224, 0x02), "[mA]" # CURR_DynLimitCont
print " Zeit                     =", d.SdoRd(0x3224, 0x03), "[ms]" # CURR_DynLimitTime
print " aktuelle Strombegrenzung =", d.SdoRd(0x3224, 0x12), "[mA]" # CURR_ActDynLimitCurrent

# Beschreiben der Parameter
d.SdoWr(0x3224, 0x00, 1)     # CURR_DynLimitMode - dyn. Strombegrenzung aktivieren
d.SdoWr(0x3224, 0x01, 1500)  # CURR_DynLimitPeak - Spitzenstrom = 1500 mA
d.SdoWr(0x3224, 0x02, 1000)  # CURR_DynLimitCont - Dauerstrom   = 1000 mA
d.SdoWr(0x3224, 0x03, 1500)  # CURR_DynLimitTime - Zeit         = 1500 ms


3224.01h Dynamische Strombegrenzung - Spitzenstrom

Name | CURR_DynLimitPeak
Bezeichnung | Dynamische Strombegrenzung - Spitzenstrom
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 2147483647] Der max. Wert ist vom Gerät abhängig (siehe technische Daten)
Defaultwert | = max. Strom des Gerätes. Defaultwert ist vom Gerät abhängig (siehe technische Daten)
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.64.00.71
Geräte | Alle
PLC Funktion | CurrDynLimitPeak(value)
Querverweis | CURR_DynLimitMode, CURR_DynLimitCont, CURR_DynLimitTime

Beschreibung

Dynamische Strombegrenzung

Die dynamische Strombegrenzung begrenzt den Stromsollwertbereich des Antriebsreglers in Abhängigkeit des aktuellen Motorstroms und der Zeit.
Dieser Parameter legt den Wert des Spitzenstroms sowohl für positive als auch für negative Drehrichtung fest.

Wie lange der Spitzenstrom fließen kann, wird mit dem Parameter CURR_DynLimitTime bestimmt. Nach dieser Zeit sinkt der Motorstrom auf den Wert von Dauerstrom (CURR_DynLimitCont) ab. Das gilt für den Fall, wenn der Motorstrom die ganze Zeit auf den Spitzenstrom (CURR_DynLimitPeak) begrenzt wurde. Liegt der Motorstrom überhalb des Dauerstroms (CURR_DynLimitCont) aber unterhalb des Spitzenstromes (CURR_DynLimitPeak), wird die Zeit aus dem Produkt von Strom und Fläche (Ixt bzw. I²t) bestimmt. Damit der Motorstrom wieder über den Dauerstrom (CURR_DynLimitCont) steigen darf, muss der aktuelle Strom die entsprechende Zeit unterhalb des Dauerstromes (CURR_DynLimitCont) bleiben.

Erholt sich der Motor nur für die halbe Fläche von Ixt bzw. I²t, kann er auch nur für die halbe Fläche über den Dauerstrom ansteigen.

Unabhängig davon, ob die dynamische Strombegrenzung aktiviert oder deaktiviert ist, ist die statische Strombegrenzung (CURR_LimitMaxPos, CURR_LimitMaxNeg) immer aktiv. Auf dem untenstehenden Bild wurde der Zusammenhang der beiden Strombegrenzer dargestellt.

Bild - Zusammenhang der Strombegrenzer

Dynamische Strombegrenzung Ixt

Um die dynamische Strombegrenzung Ixt zu aktivieren, muss der Parameter CURR_DynLimitMode auf 1 gesetzt werden. Defaultmässig ist die dynamische Strombegrenzung deaktiviert.

Für eine korrekte dynamische Strombegrenzung ist eine stabile Arbeit des Stromreglers notwendig. Bei einem „instabilen“ Stromregler kann es vorkommen, dass trotz der gesetzten Begrenzungswerte der Motorstrom die Grenzen übersteigt.

Bild - Dynamische Strombegrenzung

Die Fläche aus der Differenz von Spitzenstrom und Dauerstrom ∫(Ip-Ic)dt bildet die maximal zulässige Leistung. Die aktuelle Leistung ∫(Im-Ic)dt wird mit der maximal zulässigen Leistung verglichen. Überschreitet die aktuelle Leistung die maximal zulässige Leistung, wird der Strom begrenzt. Dadurch kann der Motor vor einer Überlastung geschützt werden.

Dynamische Strombegrenzung I²t

Um die dynamische Strombegrenzung I²t zu aktivieren, muss der Parameter CURR_DynLimitMode auf 2 gesetzt werden. Defaultmässig ist die dynamische Strombegrenzung deaktiviert.

Für eine korrekte dynamische Strombegrenzung ist eine stabile Arbeit des Stromreglers notwendig. Bei einem „instabilen“ Stromregler kann es vorkommen, dass trotz der gesetzten Begrenzungswerte der Motorstrom die Grenzen übersteigt.

Die Fläche aus der Differenz von Spitzenstrom und Dauerstrom ∫(Ip²-Ic²)dt bildet die maximal zulässige Leistung. Die aktuelle Leistung ∫(Im²-Ic²)dt wird mit der maximal zulässigen Leistung verglichen. Überschreitet die aktuelle Leistung die maximal zulässige Leistung, wird der Strom begrenzt. Dadurch kann der Motor vor einer Überlastung geschützt werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                   # NodeId = 1

# Ausgabe der Parameter
print "Dynamische Strombegrenzung:"
print " Enabled                  =", d.SdoRd(0x3224, 0x00)         # CURR_DynLimitMode
print " Spitzenstrom             =", d.SdoRd(0x3224, 0x01), "[mA]" # CURR_DynLimitPeak
print " Dauerstrom               =", d.SdoRd(0x3224, 0x02), "[mA]" # CURR_DynLimitCont
print " Zeit                     =", d.SdoRd(0x3224, 0x03), "[ms]" # CURR_DynLimitTime
print " aktuelle Strombegrenzung =", d.SdoRd(0x3224, 0x12), "[mA]" # CURR_ActDynLimitCurrent

# Beschreiben der Parameter
d.SdoWr(0x3224, 0x00, 1)     # CURR_DynLimitMode - dyn. Strombegrenzung aktivieren
d.SdoWr(0x3224, 0x01, 1500)  # CURR_DynLimitPeak - Spitzenstrom = 1500 mA
d.SdoWr(0x3224, 0x02, 1000)  # CURR_DynLimitCont - Dauerstrom   = 1000 mA
d.SdoWr(0x3224, 0x03, 1500)  # CURR_DynLimitTime - Zeit         = 1500 ms


3224.02h Dynamische Strombegrenzung - Dauerstrom

Name | CURR_DynLimitCont
Bezeichnung | Dynamische Strombegrenzung - Dauerstrom
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 2147483647] Der max. Wert ist vom Gerät abhängig (siehe technische Daten)
Defaultwert | = max. Strom des Gerätes. Defaultwert ist vom Gerät abhängig (siehe technische Daten)
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.64.00.71
Geräte | Alle
PLC Funktion | CurrDynLimitCont(value)
Querverweis | CURR_DynLimitMode, CURR_DynLimitPeak, CURR_DynLimitTime

Beschreibung

Dynamische Strombegrenzung

Die dynamische Strombegrenzung begrenzt den Stromsollwertbereich des Antriebsreglers in Abhängigkeit des aktuellen Motorstroms und der Zeit.
Dieser Parameter legt den Wert des Dauerstroms sowohl für positive als auch für negative Drehrichtung fest.

Wie lange der Spitzenstrom fließen kann, wird mit dem Parameter CURR_DynLimitTime bestimmt. Nach dieser Zeit sinkt der Motorstrom auf den Wert von Dauerstrom (CURR_DynLimitCont) ab. Das gilt für den Fall, wenn der Motorstrom die ganze Zeit auf den Spitzenstrom (CURR_DynLimitPeak) begrenzt wurde. Liegt der Motorstrom überhalb des Dauerstroms (CURR_DynLimitCont) aber unterhalb des Spitzenstromes (CURR_DynLimitPeak), wird die Zeit aus dem Produkt von Strom und Fläche (Ixt bzw. I²t) bestimmt. Damit der Motorstrom wieder über den Dauerstrom (CURR_DynLimitCont) steigen darf, muss der aktuelle Strom die entsprechende Zeit unterhalb des Dauerstromes (CURR_DynLimitCont) bleiben.

Erholt sich der Motor nur für die halbe Fläche von Ixt bzw. I²t, kann er auch nur für die halbe Fläche über den Dauerstrom ansteigen.

Unabhängig davon, ob die dynamische Strombegrenzung aktiviert oder deaktiviert ist, ist die statische Strombegrenzung (CURR_LimitMaxPos, CURR_LimitMaxNeg) immer aktiv. Auf dem untenstehenden Bild wurde der Zusammenhang der beiden Strombegrenzer dargestellt.

Bild - Zusammenhang der Strombegrenzer

Dynamische Strombegrenzung Ixt

Um die dynamische Strombegrenzung Ixt zu aktivieren, muss der Parameter CURR_DynLimitMode auf 1 gesetzt werden. Defaultmässig ist die dynamische Strombegrenzung deaktiviert.

Für eine korrekte dynamische Strombegrenzung ist eine stabile Arbeit des Stromreglers notwendig. Bei einem „instabilen“ Stromregler kann es vorkommen, dass trotz der gesetzten Begrenzungswerte der Motorstrom die Grenzen übersteigt.

Bild - Dynamische Strombegrenzung

Die Fläche aus der Differenz von Spitzenstrom und Dauerstrom ∫(Ip-Ic)dt bildet die maximal zulässige Leistung. Die aktuelle Leistung ∫(Im-Ic)dt wird mit der maximal zulässigen Leistung verglichen. Überschreitet die aktuelle Leistung die maximal zulässige Leistung, wird der Strom begrenzt. Dadurch kann der Motor vor einer Überlastung geschützt werden.

Dynamische Strombegrenzung I²t

Um die dynamische Strombegrenzung I²t zu aktivieren, muss der Parameter CURR_DynLimitMode auf 2 gesetzt werden. Defaultmässig ist die dynamische Strombegrenzung deaktiviert.

Für eine korrekte dynamische Strombegrenzung ist eine stabile Arbeit des Stromreglers notwendig. Bei einem „instabilen“ Stromregler kann es vorkommen, dass trotz der gesetzten Begrenzungswerte der Motorstrom die Grenzen übersteigt.

Die Fläche aus der Differenz von Spitzenstrom und Dauerstrom ∫(Ip²-Ic²)dt bildet die maximal zulässige Leistung. Die aktuelle Leistung ∫(Im²-Ic²)dt wird mit der maximal zulässigen Leistung verglichen. Überschreitet die aktuelle Leistung die maximal zulässige Leistung, wird der Strom begrenzt. Dadurch kann der Motor vor einer Überlastung geschützt werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                   # NodeId = 1

# Ausgabe der Parameter
print "Dynamische Strombegrenzung:"
print " Enabled                  =", d.SdoRd(0x3224, 0x00)         # CURR_DynLimitMode
print " Spitzenstrom             =", d.SdoRd(0x3224, 0x01), "[mA]" # CURR_DynLimitPeak
print " Dauerstrom               =", d.SdoRd(0x3224, 0x02), "[mA]" # CURR_DynLimitCont
print " Zeit                     =", d.SdoRd(0x3224, 0x03), "[ms]" # CURR_DynLimitTime
print " aktuelle Strombegrenzung =", d.SdoRd(0x3224, 0x12), "[mA]" # CURR_ActDynLimitCurrent

# Beschreiben der Parameter
d.SdoWr(0x3224, 0x00, 1)     # CURR_DynLimitMode - dyn. Strombegrenzung aktivieren
d.SdoWr(0x3224, 0x01, 1500)  # CURR_DynLimitPeak - Spitzenstrom = 1500 mA
d.SdoWr(0x3224, 0x02, 1000)  # CURR_DynLimitCont - Dauerstrom   = 1000 mA
d.SdoWr(0x3224, 0x03, 1500)  # CURR_DynLimitTime - Zeit         = 1500 ms


3224.03h Dynamische Strombegrenzung - Zeit

Name | CURR_DynLimitTime
Bezeichnung | Dynamische Strombegrenzung - Zeit
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 10000]
Defaultwert | 1000
Einheit | [ms]
Betriebsart | Alle
Verfügbar ab | 1.64.00.71
Geräte | Alle
PLC Funktion | CurrDynLimitTime(value)
Querverweis | CURR_DynLimitMode, CURR_DynLimitPeak, CURR_DynLimitCont

Beschreibung

Dynamische Strombegrenzung

Die dynamische Strombegrenzung begrenzt den Stromsollwertbereich des Antriebsreglers in Abhängigkeit des aktuellen Motorstroms und der Zeit.
Dieser Parameter legt die Zeit für den Spitzenstrom fest.

Wie lange der Spitzenstrom fließen kann, wird mit dem Parameter CURR_DynLimitTime bestimmt. Nach dieser Zeit sinkt der Motorstrom auf den Wert von Dauerstrom (CURR_DynLimitCont) ab. Das gilt für den Fall, wenn der Motorstrom die ganze Zeit auf den Spitzenstrom (CURR_DynLimitPeak) begrenzt wurde. Liegt der Motorstrom überhalb des Dauerstroms (CURR_DynLimitCont) aber unterhalb des Spitzenstromes (CURR_DynLimitPeak), wird die Zeit aus dem Produkt von Strom und Fläche (Ixt bzw. I²t) bestimmt. Damit der Motorstrom wieder über den Dauerstrom (CURR_DynLimitCont) steigen darf, muss der aktuelle Strom die entsprechende Zeit unterhalb des Dauerstromes (CURR_DynLimitCont) bleiben.

Erholt sich der Motor nur für die halbe Fläche von Ixt bzw. I²t, kann er auch nur für die halbe Fläche über den Dauerstrom ansteigen.

Unabhängig davon, ob die dynamische Strombegrenzung aktiviert oder deaktiviert ist, ist die statische Strombegrenzung (CURR_LimitMaxPos, CURR_LimitMaxNeg) immer aktiv. Auf dem untenstehenden Bild wurde der Zusammenhang der beiden Strombegrenzer dargestellt.

Bild - Zusammenhang der Strombegrenzer

Dynamische Strombegrenzung Ixt

Um die dynamische Strombegrenzung Ixt zu aktivieren, muss der Parameter CURR_DynLimitMode auf 1 gesetzt werden. Defaultmässig ist die dynamische Strombegrenzung deaktiviert.

Für eine korrekte dynamische Strombegrenzung ist eine stabile Arbeit des Stromreglers notwendig. Bei einem „instabilen“ Stromregler kann es vorkommen, dass trotz der gesetzten Begrenzungswerte der Motorstrom die Grenzen übersteigt.

Bild - Dynamische Strombegrenzung

Die Fläche aus der Differenz von Spitzenstrom und Dauerstrom ∫(Ip-Ic)dt bildet die maximal zulässige Leistung. Die aktuelle Leistung ∫(Im-Ic)dt wird mit der maximal zulässigen Leistung verglichen. Überschreitet die aktuelle Leistung die maximal zulässige Leistung, wird der Strom begrenzt. Dadurch kann der Motor vor einer Überlastung geschützt werden.

Dynamische Strombegrenzung I²t

Um die dynamische Strombegrenzung I²t zu aktivieren, muss der Parameter CURR_DynLimitMode auf 2 gesetzt werden. Defaultmässig ist die dynamische Strombegrenzung deaktiviert.

Für eine korrekte dynamische Strombegrenzung ist eine stabile Arbeit des Stromreglers notwendig. Bei einem „instabilen“ Stromregler kann es vorkommen, dass trotz der gesetzten Begrenzungswerte der Motorstrom die Grenzen übersteigt.

Die Fläche aus der Differenz von Spitzenstrom und Dauerstrom ∫(Ip²-Ic²)dt bildet die maximal zulässige Leistung. Die aktuelle Leistung ∫(Im²-Ic²)dt wird mit der maximal zulässigen Leistung verglichen. Überschreitet die aktuelle Leistung die maximal zulässige Leistung, wird der Strom begrenzt. Dadurch kann der Motor vor einer Überlastung geschützt werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                   # NodeId = 1

# Ausgabe der Parameter
print "Dynamische Strombegrenzung:"
print " Enabled                  =", d.SdoRd(0x3224, 0x00)         # CURR_DynLimitMode
print " Spitzenstrom             =", d.SdoRd(0x3224, 0x01), "[mA]" # CURR_DynLimitPeak
print " Dauerstrom               =", d.SdoRd(0x3224, 0x02), "[mA]" # CURR_DynLimitCont
print " Zeit                     =", d.SdoRd(0x3224, 0x03), "[ms]" # CURR_DynLimitTime
print " aktuelle Strombegrenzung =", d.SdoRd(0x3224, 0x12), "[mA]" # CURR_ActDynLimitCurrent

# Beschreiben der Parameter
d.SdoWr(0x3224, 0x00, 1)     # CURR_DynLimitMode - dyn. Strombegrenzung aktivieren
d.SdoWr(0x3224, 0x01, 1500)  # CURR_DynLimitPeak - Spitzenstrom = 1500 mA
d.SdoWr(0x3224, 0x02, 1000)  # CURR_DynLimitCont - Dauerstrom   = 1000 mA
d.SdoWr(0x3224, 0x03, 1500)  # CURR_DynLimitTime - Zeit         = 1500 ms


3350.00h Drehzahlrückführung

Name | VEL_Feedback
Bezeichnung | Drehzahlrückführung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {0h, 100h, 112h, 94Ah, 96Ah, 97Ah, 990h, 991h, 96A20h}
Defaultwert | 0h
Einheit | -
Betriebsart | Velocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelFeedback(value), VelFeedbackAin0(), VelFeedbackAuto(), VelFeedbackUm(), VelFeedbackEmk(), VelFeedbackHall(), VelFeedbackEnc()
Querverweis | IO_AIN_Voltage_Um, MOTOR_Nn, MOTOR_Un, MOTOR_PolN, MOTOR_ENC_Resolution

Beschreibung

Mit dem Parameter wird die Quelle für die Rückführung des Drehzahlreglers und des Positionierreglers bestimmt.
Nicht jede Rückführung ist für jeden Motortyp einsetzbar. Die HALL-Rückführung kann nur bei bürstenlosen Motoren eingesetzt werden. Bei Antriebsreglern mit einem Encodereingang kann die Encoder-Rückführung für beide Motortypen benutzt werden.

Bemerkungen:
  • Dieser Parameter kann nur im gesperrten Betriebszustand (DEV_Enable = 0) geändert werden. Sonst werden die Änderungen des Parameters nicht angenommen, bzw. haben keine Wirkung.
  • Da dieser Parameter auch die Rückführung für den Positionierregler bestimmt, muss dieser Parameter für Pos-Betriebsart mit bürstenbehafteten Motoren mit Encoder auf den Wert 0x96A (MOTOR_ENC_ActualPosition) gesetzt werden.

Parameterwerte:
Wert (Hex) | Name | Beschreibung
0 | Default | bei bürstenbehafteten Motoren – EMK-Rückführung bei bürstenlosen Motoren – HALL- Rückführung
0100h | IO_AIN0 | Geschwindigkeitsrückführung über analog Eingang0 (nur für DC-Motoren)
0112h | IO_AIN_VOLTAGE_Um | EMK-Rückführung
094Ah | MOTOR_HALL_ActualPosition | HALL-Rückführung (nur bürstenlose Motoren)
096Ah | MOTOR_ENC_ActualPosition | Encoder-Rückführung
096A20h | MOTOR_ENC_INC2_ActualPosition | SPI Encoder-Rückführung Achtung: Nur bei Antriebsreglern mit SPI-Schnittstelle verfügbar.
097Ah | MOTOR_ENC_SSI_ActualPosition | Absolut-Encoder-Rückführung Achtung: Nur bei Antriebsreglern mit SSI-Schnittstelle verfügbar.
0990h | MOTOR_ENC_VIRT_ActualPosition | Virtueller Encoder 0 Rückführung
0991h | MOTOR_ENC_VIRT_ActualPosition | Virtueller Encoder 1 Rückführung
Dieser Parameter kann nur im gesperrten Betriebszustand(DEV_Enable = 0) geändert werden

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)         # DEV_Enable - Endstufe sperren

print "VelFeedback =", hex(d.SdoRd(0x3350, 0x00)) # VEL_Feedback

d.SdoWr(0x3350, 0x00, 0x096A)    # VEL_Feedback - Rückführung über Encoder
d.SdoWr(0x3003, 0x00, 3)         # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3300, 0x00, 0)         # VEL_DesiredValue - Drehzahl = 0


3550.00h SVel Rückführung

Name | SVEL_Feedback
Bezeichnung | SVel Rückführung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {0h, 100h, 112h, 94Ah, 96Ah, 97Ah, 990h, 991h, 96A20h}
Defaultwert | 0h
Einheit | -
Betriebsart | Velocity,Position,SVelocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SVelFeedback(value), SVelFeedbackAuto(), SVelFeedbackUm(), SVelFeedbackEmk(), SVelFeedbackHall(), SVelFeedbackEnc()
Querverweis | IO_AIN_Voltage_Um, MOTOR_Nn, MOTOR_Un, MOTOR_PolN, MOTOR_ENC_Resolution

Beschreibung

Mit dem Parameter wird die Quelle für die SVel-Rückführung bestimmt.
Nicht jede Rückführung ist für jeden Motortypen einsetzbar. Die HALL-Rückführung kann nur bei bürstenlosen Motoren eingesetzt werden. Bei Antriebsreglern mit einem Encodereingang kann die Encoder-Rückführung für beide Motortypen benutzt werden.

Bemerkungen:
  • Dieser Parameter kann nur in gesperrten Betriebszustand (DEV_Enable = 0) geändert werden. Sonst werden die Änderungen des Parameters nicht angenommen, bzw. haben keine Wirkung.
  • Da dieser Parameter auch die Rückführung für den Positionierregler bestimmt, muss dieser Parameter für Pos-Betriebsart mit bürstenbehafteten Motoren mit Encoder auf den Wert 0x96A (MOTOR_ENC_ActualPosition) gesetzt werden.

Parameterwerte:
Wert (Hex) | Name | Beschreibung
0 | Default | bei bürstenbehafteten Motoren – EMK-Rückführung bei bürstenlosen Motoren – PWM-Steller
0112h | IO_AIN_VOLTAGE_Um | EMK-Rückführung
094Ah | MOTOR_HALL_ActualPosition | HALL-Rückführung (nur bürstenlose Motoren)
096Ah | MOTOR_ENC_ActualPosition | Encoder-Rückführung
096A20h | MOTOR_ENC_INC2_ActualPosition | SPI Encoder-Rückführung Achtung: Nur bei Antriebsreglern mit SPI-Schnittstelle verfügbar.
097Ah | MOTOR_ENC_SSI_ActualPosition | Absolut-Encoder-Rückführung Achtung: Nur bei Antriebsreglern mit SSI-Schnittstelle verfügbar.
0990h | MOTOR_ENC_VIRT_ActualPosition | Virtueller Encoder 0 Rückführung
0991h | MOTOR_ENC_VIRT_ActualPosition | Virtueller Encoder 1 Rückführung

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                         # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)                           # DEV_Enable - Endstufe sperren

# Ausgeben des aktuellen Werts
print "SVelFeedback =", hex(d.SdoRd(0x3550, 0x00)) # SVEL_Feedback

# Setze neuen Wert
d.SdoWr(0x3550, 0x00, 0x096A)                      # SVEL_Feedback - Rückführung über Encoder


3708.00h Pos Betriebsart

Name | POS_Mode
Bezeichnung | Pos Betriebsart
Datentyp | int8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1, 2}
Defaultwert | 0
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.01.17
Geräte | Alle
PLC Funktion | PosMode(value), PosModeInterp(), PosModeInterpolation(), PosModeModulo()
Querverweis | POS_ModuloMethod, POS_ModuloValue

Beschreibung

Mit diesem Parameter wird die Betriebsart des Positioniermodus bestimmt.

Parameterwerte:
Wert Name Beschreibung
0 Positionierung "Normale" Positionierung
1 Interpolation Die Sollpositionen werden zyklisch vom übergeordneten System (Master) an den Antriebsregler gesendet. Falls die Aktualisierungszeit größer als die Abtastrate des Positionierreglers ist, dann werden die Zwischenpositionen durch Interpolation gewonnen. Die Aktualisierungszeit des Masters kann nur ein Vielfaches der Abtastrate des Positionierreglers betragen.
Mit dieser Betriebsart des Positioniermodus ist es möglich Anwendungen mit mehreren synchronen Achsen zu realisieren. Zum Beispiel:
  • Bahnsteuerungen
  • Elektronische Kurvenscheiben
Für genauere Beschreibung siehe die Parameter POS_InterpMethod, POS_InterpTime und POS_InterpReference.
2 Modulo-Positionierung Diese Betriebsart wird auch als "Rundachsenfunktion" bezeichnet.

z.B.: Wenn der Parameter POS_ModuloValue = 50 ist, dann ist die Positionsfolge wie unten dargestellt:

in positiver Richtung  ... 45 46 47 48 49 0  1  2  3  4  5 ...
in negativer Richtung  ...  5  4  3  2  1 0 49 48 47 46 45 ...

Für eine genauere Beschreibung siehe den Parameter POS_ModuloMethod.

  • Interpolation - Systemkonfiguration mit mehreren Achsen

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

# Abfrage des aktuellen Werts
print "PosMode =", d.SdoRd(0x3708, 0x00)

# Setzen des neuen Werts
d.SdoWr(0x3708, 0x00, 2)   # Modulo-Mode


374C.11h Verschliff Beschleunigung

Name | POS_Ramp_JerkFactorAcc
Bezeichnung | Verschliff Beschleunigung
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [1 .. 100]
Defaultwert | 100
Einheit | [%]
Betriebsart | Position
Verfügbar ab | 1.93.00.EB
Geräte | Alle
PLC Funktion | -
Querverweis | VEL_Acc_dV, VEL_Acc_dT, VEL_Dec_dV, VEL_Dec_dT, POS_RampType, POS_Ramp_JerkFactorDec

Beschreibung

Mit diesem Parameter kann der Verschliff der S²-Beschleunigungsrampe eingestellt werden. Durch Änderung des Verschliffs können Rampenverläufe zwischen einer Trapez-Rampe und der Standard-S²-Rampe vorgegeben werden.

Die mittlere Beschleunigung der Rampe wird durch die Parameter VEL_Acc_dV und VEL_Acc_dT festgelegt. Der Verschliff der Rampe wird in Prozent angegeben, wobei 1 einer Trapez-Rampe und 100 einer Standard-S²-Rampe entspricht.
Bei einer Standard-S²-Rampe beträgt die maximale Beschleunigung im Wendepunkt das doppelte (+100%) der mittleren Beschleunigung. Wird der Verschliff auf 50% gestellt, ergibt sich eine kurvenförmige Rampe deren maximale Beschleunigung das 1,5-fache (+50%) der mittleren Beschleunigung beträgt. Bei einem Verschliff von 0% ergibt sich eine lineare Beschleunigung, die genau der mittleren Beschleunigung entspricht.

Die maximale Beschleunigung berechnet sich wie folgt:

Acc_max = Acc * (1 + POS_Ramp_JerkFactorAcc / 100)

Je größer der Verschliff ist, desto geringer ist der maximale Ruck ( dA/dT ).

Der Verschliff kann für Beschleunigungs- und Bremsrampe separat eingestellt werden (POS_Ramp_JerkFactorAcc und POS_Ramp_JerkFactorDec)

Dieser Parameter wirkt sich nur dann aus, wenn der Rampentyp (POS_RampType) auf S² festgelegt wurde.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                          # NodeId = 1

d.SdoWr(0x374C, 0x00, 2)            # Rampentyp S²
d.SdoWr(0x374C, 0x11, 50)           # POS_Ramp_JerkFactorAcc
d.SdoWr(0x374C, 0x12, 50)           # POS_Ramp_JerkFactorDec


374C.12h Verschliff Bremsrampe

Name | POS_Ramp_JerkFactorDec
Bezeichnung | Verschliff Bremsrampe
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [1 .. 100]
Defaultwert | 100
Einheit | [%]
Betriebsart | Position
Verfügbar ab | 1.93.00.EB
Geräte | Alle
PLC Funktion | -
Querverweis | VEL_Acc_dV, VEL_Acc_dT, VEL_Dec_dV, VEL_Dec_dT, POS_RampType, POS_Ramp_JerkFactorAcc

Beschreibung

Mit diesem Parameter kann der Verschliff der S²-Beschleunigungsrampe eingestellt werden. Durch Änderung des Verschliffs können Rampenverläufe zwischen einer Trapez-Rampe und der Standard-S²-Rampe vorgegeben werden.

Die mittlere Beschleunigung der Rampe wird durch die Parameter VEL_Acc_dV und VEL_Acc_dT festgelegt. Der Verschliff der Rampe wird in Prozent angegeben, wobei 1 einer Trapez-Rampe und 100 einer Standard-S²-Rampe entspricht.
Bei einer Standard-S²-Rampe beträgt die maximale Beschleunigung im Wendepunkt das doppelte (+100%) der mittleren Beschleunigung. Wird der Verschliff auf 50% gestellt, ergibt sich eine kurvenförmige Rampe deren maximale Beschleunigung das 1,5-fache (+50%) der mittleren Beschleunigung beträgt. Bei einem Verschliff von 0% ergibt sich eine lineare Beschleunigung, die genau der mittleren Beschleunigung entspricht.

Die maximale Beschleunigung berechnet sich wie folgt:

Acc_max = Acc * (1 + POS_Ramp_JerkFactorAcc / 100)

Je größer der Verschliff ist, desto geringer ist der maximale Ruck ( dA/dT ).

Der Verschliff kann für Beschleunigungs- und Bremsrampe separat eingestellt werden (POS_Ramp_JerkFactorAcc und POS_Ramp_JerkFactorDec)

Dieser Parameter wirkt sich nur dann aus, wenn der Rampentyp (POS_RampType) auf S² festgelegt wurde.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                          # NodeId = 1

d.SdoWr(0x374C, 0x00, 2)            # Rampentyp S²
d.SdoWr(0x374C, 0x11, 50)           # POS_Ramp_JerkFactorAcc
d.SdoWr(0x374C, 0x12, 50)           # POS_Ramp_JerkFactorDec


Inhalt - Parameter 3000h (DSA) - Interpolation

37C1.00h | POS_InterpStatus | Interpolation - Status
37C2.00h | POS_InterpMethod | Interpolation - Methode
37C2.01h | POS_InterpTime | Interpolation - Zeit
37C2.02h | POS_InterpReference | Interpolation - Referenz
37C5.00h | POS_InterpBufConfig | Interpolation - Bufferkonfiguration
37C6.00h | POS_InterpData | Interpolation - Daten
37C7.00h | POS_InterpActualTargetPosition | Interpolation - Aktuelle Zielposition
37C7.01h | POS_InterpActualCommandPosition | Interpolation - Aktuelle Kommandoposition
37C7.02h | POS_InterpActualPosition | Interpolation - Aktuelle Position


37C1.00h Interpolation - Status

Name | POS_InterpStatus
Bezeichnung | Interpolation - Status
Datentyp | uint16
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | 0h
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.01.19
Geräte | Alle
PLC Funktion | -
Querverweis | POS_Mode, POS_InterpMethod, POS_InterpBufConfig, POS_InterpData

Beschreibung

Dieser Parameter gibt den aktuellen Interpolationsstatus zurück. Der Interpolationsstatus eignet sich vor allem für Diagnose-Zwecke.

Bitbelegung:
Bit Name Beschreibung
0 Enabled Bit = 0 - Interpolationsmodus ist deaktiviert
Bit = 1 - Interpolationsbodus ist aktiviert
1 Error Bit = 0 - Kein Fehler aufgetreten
Bit = 1 - Fehler ist aufgetreten
2 Warning Bit = 0 - Keine Warnung aufgetreten
Bit = 1 - Warnung aufgetreten
3 Armed Bit = 0 - Buffer ist nicht mit Daten geladen
Bit = 1 - Buffer ist mit gültigen Daten geladen
4 Active Bit = 0 - Buffer ist nicht aktiv
Bit = 1 - Buffer ist aktiv
5 Data Lost Bit = 0 - Datensatz nicht verloren
Bit = 1 - Datensatz verloren
6 Buffer Full Bit = 0 - Buffer ist nicht voll
Bit = 1 - Buffer ist voll

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

print "Interpolationsstatus =", hex(d.SdoRd(0x37C1, 0x00))


37C2.00h Interpolation - Methode

Name | POS_InterpMethod
Bezeichnung | Interpolation - Methode
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | {0}
Defaultwert | 0
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.01.19
Geräte | Alle
PLC Funktion | PosInterpolationMethod(value), InterpMethod(value)
Querverweis | POS_Mode, POS_InterpTime, POS_InterpReference

Beschreibung

Dieser Parameter liefert die Information über eingesetzte Interpolationsmethode.

Parameterwerte:
Wert | Beschreibung
0 | Lineare Interpolation
  • Lineare Interpolation

    Bei der linearen Interpolation werden die Zwischenpunkte (Bild: berechnete Punkte) nach linearer Formel berechnet:

    Pi+j = Mn + (Mn+1 - Mn) / N * j

    j = [0..N]

    N = TM / TP

    Interpolation - Detail A

Beispiel

from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # DS2000_RestoreDefaultParameters_Application - Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - Motortyp - bürstenloser Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN - Motorpolanzahl
d.SdoWr(0x3911, 0x00, 0)                  # MOTOR_Polarity - Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback- VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution - Encoderauflösung in Ink.

d.SdoWr(0x3310, 0x00, 10)                 # VEL_Kp - VEL PID-Regler - Proportionalfaktor
d.SdoWr(0x3314, 0x00, 1000)               # VEL_Kvff - VEL PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Betriebsart - Positioniermodus

d.SdoWr(0x3708, 0x00, 1)                  # POS_Mode - Position Betriebsart - Interpolation
d.SdoWr(0x37C2, 0x01, INTERPOLATION_TIME_MS*1000) # POS_InterpTime - Interpolation - Zeit [us]
d.SdoWr(0x37C5, 0x00, 3)                  # POS_InterpBufConfig - Interpolation - Bufferkonfiguration
                                          #    Bit0: 0=InterpData als absolute Position  1: InterpData als relative Position
                                          #    Bit1: 0=InterpData ist normalisiert       1: InterpData ist in Inkrementen

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable -  Endstufe freigeben

StartPos  = 0
TargetPos = StartPos

d.SdoWr(0x3762, 0x00, TargetPos)          # POS_ActualPosition - aktuelle Position setzen
d.SdoWr(0x37C6, 0x00, TargetPos)          # POS_InterpData - Interpolation - Daten

ts  = d.SdoRd(0x3850, 0x00)               # SYS_Clock - System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0
i = 1

print "Methode:" ,d.SdoRd(0x37C2, 0x00)  # POS_InterpMethod

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # SYS_Clock - System clock
      pass
   i += 1
   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x37C6, 0x00, TargetPos)       # POS_InterpData - Interpolation - Daten

   if i == 10:
     print
     print "Ziel Pos:" ,d.SdoRd(0x37C7, 0x00)     # POS_InterpActualTargetPosition
     print "Ist Pos:", d.SdoRd(0x37C7, 0x02)      # POS_InterpActualPosition
     print "Kommando Pos:" ,d.SdoRd(0x37C7, 0x01) # POS_InterpActualCommandPosition
     i = 1


37C2.01h Interpolation - Zeit

Name | POS_InterpTime
Bezeichnung | Interpolation - Zeit
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 1000000]
Defaultwert | 2000
Einheit | [us]
Betriebsart | Position
Verfügbar ab | 1.71.01.19
Geräte | Alle
PLC Funktion | PosInterpolationTime(time_us), InterpTime(time_us)
Querverweis | POS_InterpMethod, POS_InterpReference

Beschreibung

Dieser Parameter legt die Interpolationszeit fest.
Diese Zeit muss dem Mastertakt entsprechen, in welchem der Master (z.B. SPS) periodisch neue Stützpunkte an den Antriebsregler sendet. Die Interpolationszeit kann nur ein Vielfaches der Zykluszeit des Positionierreglers betragen (siehe Parameter VEL_SampleTime).

Beispiel

from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # DS2000_RestoreDefaultParameters_Application - Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - Motortyp - bürstenloser Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN - Motorpolanzahl
d.SdoWr(0x3911, 0x00, 0)                  # MOTOR_Polarity - Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback- VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution - Encoderauflösung in Ink.

d.SdoWr(0x3310, 0x00, 10)                 # VEL_Kp - VEL PID-Regler - Proportionalfaktor
d.SdoWr(0x3314, 0x00, 1000)               # VEL_Kvff - VEL PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Betriebsart - Positioniermodus

d.SdoWr(0x3708, 0x00, 1)                  # POS_Mode - Position Betriebsart - Interpolation
d.SdoWr(0x37C2, 0x01, INTERPOLATION_TIME_MS*1000) # POS_InterpTime - Interpolation - Zeit [us]
d.SdoWr(0x37C5, 0x00, 3)                  # POS_InterpBufConfig - Interpolation - Bufferkonfiguration
                                          #    Bit0: 0=InterpData als absolute Position  1: InterpData als relative Position
                                          #    Bit1: 0=InterpData ist normalisiert       1: InterpData ist in Inkrementen

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable -  Endstufe freigeben

StartPos  = 0
TargetPos = StartPos

d.SdoWr(0x3762, 0x00, TargetPos)          # POS_ActualPosition - aktuelle Position setzen
d.SdoWr(0x37C6, 0x00, TargetPos)          # POS_InterpData - Interpolation - Daten

ts  = d.SdoRd(0x3850, 0x00)               # SYS_Clock - System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0
i = 1

print "Methode:" ,d.SdoRd(0x37C2, 0x00)  # POS_InterpMethod

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # SYS_Clock - System clock
      pass
   i += 1
   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x37C6, 0x00, TargetPos)       # POS_InterpData - Interpolation - Daten

   if i == 10:
     print
     print "Ziel Pos:" ,d.SdoRd(0x37C7, 0x00)     # POS_InterpActualTargetPosition
     print "Ist Pos:", d.SdoRd(0x37C7, 0x02)      # POS_InterpActualPosition
     print "Kommando Pos:" ,d.SdoRd(0x37C7, 0x01) # POS_InterpActualCommandPosition
     i = 1


37C2.02h Interpolation - Referenz

Name | POS_InterpReference
Bezeichnung | Interpolation - Referenz
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [1 .. 100]
Defaultwert | 1
Einheit | [Umdrehung]
Betriebsart | Position
Verfügbar ab | 1.71.01.19
Geräte | Alle
PLC Funktion | PosInterpolationReference(value), InterpReference(value)
Querverweis | POS_InterpMethod, POS_InterpTime

Beschreibung

Dieser Parameter bestimmt die Relation zwischen den Interpolationsdaten und den Umdrehungen des Encoders.
D.h. wieviele Umdrehungen des Encoders entsprechen dem Wert 100000000h ( = 232 ).

Die folgenden Bilder zeigen die Interpolationspositionen entsprechend für POS_InterpReference=1 und POS_InterpReference=2.

Interpolation - Referenz, 1 Umdrehung

Interpolation - Referenz, 2 Umdrehung

Beispiel

from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # DS2000_RestoreDefaultParameters_Application - Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - Motortyp - bürstenloser Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN - Motorpolanzahl
d.SdoWr(0x3911, 0x00, 0)                  # MOTOR_Polarity - Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback- VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution - Encoderauflösung in Ink.

d.SdoWr(0x3310, 0x00, 10)                 # VEL_Kp - VEL PID-Regler - Proportionalfaktor
d.SdoWr(0x3314, 0x00, 1000)               # VEL_Kvff - VEL PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Betriebsart - Positioniermodus

d.SdoWr(0x3708, 0x00, 1)                  # POS_Mode - Position Betriebsart - Interpolation
d.SdoWr(0x37C2, 0x01, INTERPOLATION_TIME_MS*1000) # POS_InterpTime - Interpolation - Zeit [us]
d.SdoWr(0x37C5, 0x00, 3)                  # POS_InterpBufConfig - Interpolation - Bufferkonfiguration
                                          #    Bit0: 0=InterpData als absolute Position  1: InterpData als relative Position
                                          #    Bit1: 0=InterpData ist normalisiert       1: InterpData ist in Inkrementen

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable -  Endstufe freigeben

StartPos  = 0
TargetPos = StartPos

d.SdoWr(0x3762, 0x00, TargetPos)          # POS_ActualPosition - aktuelle Position setzen
d.SdoWr(0x37C6, 0x00, TargetPos)          # POS_InterpData - Interpolation - Daten

ts  = d.SdoRd(0x3850, 0x00)               # SYS_Clock - System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0
i = 1

print "Methode:" ,d.SdoRd(0x37C2, 0x00)  # POS_InterpMethod

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # SYS_Clock - System clock
      pass
   i += 1
   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x37C6, 0x00, TargetPos)       # POS_InterpData - Interpolation - Daten

   if i == 10:
     print
     print "Ziel Pos:" ,d.SdoRd(0x37C7, 0x00)     # POS_InterpActualTargetPosition
     print "Ist Pos:", d.SdoRd(0x37C7, 0x02)      # POS_InterpActualPosition
     print "Kommando Pos:" ,d.SdoRd(0x37C7, 0x01) # POS_InterpActualCommandPosition
     i = 1


37C5.00h Interpolation - Bufferkonfiguration

Name | POS_InterpBufConfig
Bezeichnung | Interpolation - Bufferkonfiguration
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 255]
Defaultwert | 0
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.01.19
Geräte | Alle
PLC Funktion | PosInterpolationBufConfig(value), InterpBufConfig(value)
Querverweis | POS_InterpData

Beschreibung

Mit diesem Parameter kann der Interpolationsdatenpuffer (Parameter POS_InterpData) konfiguriert werden.

Bitbelegung:
Bit | Name | Beschreibung
0 | INTERP_DATA_Relative | Bit = 0 Der Datentyp des Parameters POS_InterpData ist Uint32 und die Daten werden als absolute Zielpositionen interpretiert. Der Antrieb fährt zum Ziel auf dem kürzesten Weg. Bit = 1 Der Datentyp des Parameters POS_InterpData ist Int32 und die Daten werden als relative Zielpositionen interpretiert.
1 | INTERP_DATA_Normalized | Bit = 0 Der Datentyp des Parameters POS_InterpData ist Uint32 und die Daten werden normalisiert interpretiert. Bit = 1 Der Datentyp des Parameters POS_InterpData ist Int32 und die Daten werden nicht normalisiert. Die Einheit wird durch Bit 2 "INTERP_DATA_UseFactorGroup" definiert.
2 | INTERP_DATA_UseFactorGroup | Dieses Bit wird nur ausgewertet wenn Bit 1 "INTERP_DATA_Normalized" auf 1 gesetzt ist. Bit = 0 Der Datentyp des Parameters POS_InterpData ist Uint32. Die Daten werden als Inkremente interpretiert. Bit = 1 Der Datentyp des Parameters POS_InterpData ist Uint32. Die Daten werden interpretiert in der Einheit, welche sich durch die Faktorgruppen Einstellungen ergibt.
3..7 | Reserviert | -

Beispiel

from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # DS2000_RestoreDefaultParameters_Application - Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - Motortyp - bürstenloser Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN - Motorpolanzahl
d.SdoWr(0x3911, 0x00, 0)                  # MOTOR_Polarity - Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback- VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution - Encoderauflösung in Ink.

d.SdoWr(0x3310, 0x00, 10)                 # VEL_Kp - VEL PID-Regler - Proportionalfaktor
d.SdoWr(0x3314, 0x00, 1000)               # VEL_Kvff - VEL PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Betriebsart - Positioniermodus

d.SdoWr(0x3708, 0x00, 1)                  # POS_Mode - Position Betriebsart - Interpolation
d.SdoWr(0x37C2, 0x01, INTERPOLATION_TIME_MS*1000) # POS_InterpTime - Interpolation - Zeit [us]
d.SdoWr(0x37C5, 0x00, 3)                  # POS_InterpBufConfig - Interpolation - Bufferkonfiguration
                                          #    Bit0: 0=InterpData als absolute Position  1: InterpData als relative Position
                                          #    Bit1: 0=InterpData ist normalisiert       1: InterpData ist in Inkrementen

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable -  Endstufe freigeben

StartPos  = 0
TargetPos = StartPos

d.SdoWr(0x3762, 0x00, TargetPos)          # POS_ActualPosition - aktuelle Position setzen
d.SdoWr(0x37C6, 0x00, TargetPos)          # POS_InterpData - Interpolation - Daten

ts  = d.SdoRd(0x3850, 0x00)               # SYS_Clock - System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0
i = 1

print "Methode:" ,d.SdoRd(0x37C2, 0x00)  # POS_InterpMethod

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # SYS_Clock - System clock
      pass
   i += 1
   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x37C6, 0x00, TargetPos)       # POS_InterpData - Interpolation - Daten

   if i == 10:
     print
     print "Ziel Pos:" ,d.SdoRd(0x37C7, 0x00)     # POS_InterpActualTargetPosition
     print "Ist Pos:", d.SdoRd(0x37C7, 0x02)      # POS_InterpActualPosition
     print "Kommando Pos:" ,d.SdoRd(0x37C7, 0x01) # POS_InterpActualCommandPosition
     i = 1


37C6.00h Interpolation - Daten

Name | POS_InterpData
Bezeichnung | Interpolation - Daten
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.01.19
Geräte | Alle
PLC Funktion | PosInterpolationData(value), InterpData(value)
Querverweis | POS_InterpBufConfig

Beschreibung

Dieser Parameter bildet einen Puffer für Interpolationsdaten. Je nach Pufferkonfiguration (POS_InterpBufConfig), werden die Daten des Puffers entweder als absolute oder als relative Zielpositionen interpretiert.

Beispiel

from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # DS2000_RestoreDefaultParameters_Application - Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - Motortyp - bürstenloser Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN - Motorpolanzahl
d.SdoWr(0x3911, 0x00, 0)                  # MOTOR_Polarity - Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback- VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution - Encoderauflösung in Ink.

d.SdoWr(0x3310, 0x00, 10)                 # VEL_Kp - VEL PID-Regler - Proportionalfaktor
d.SdoWr(0x3314, 0x00, 1000)               # VEL_Kvff - VEL PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Betriebsart - Positioniermodus

d.SdoWr(0x3708, 0x00, 1)                  # POS_Mode - Position Betriebsart - Interpolation
d.SdoWr(0x37C2, 0x01, INTERPOLATION_TIME_MS*1000) # POS_InterpTime - Interpolation - Zeit [us]
d.SdoWr(0x37C5, 0x00, 3)                  # POS_InterpBufConfig - Interpolation - Bufferkonfiguration
                                          #    Bit0: 0=InterpData als absolute Position  1: InterpData als relative Position
                                          #    Bit1: 0=InterpData ist normalisiert       1: InterpData ist in Inkrementen

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable -  Endstufe freigeben

StartPos  = 0
TargetPos = StartPos

d.SdoWr(0x3762, 0x00, TargetPos)          # POS_ActualPosition - aktuelle Position setzen
d.SdoWr(0x37C6, 0x00, TargetPos)          # POS_InterpData - Interpolation - Daten

ts  = d.SdoRd(0x3850, 0x00)               # SYS_Clock - System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0
i = 1

print "Methode:" ,d.SdoRd(0x37C2, 0x00)  # POS_InterpMethod

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # SYS_Clock - System clock
      pass
   i += 1
   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x37C6, 0x00, TargetPos)       # POS_InterpData - Interpolation - Daten

   if i == 10:
     print
     print "Ziel Pos:" ,d.SdoRd(0x37C7, 0x00)     # POS_InterpActualTargetPosition
     print "Ist Pos:", d.SdoRd(0x37C7, 0x02)      # POS_InterpActualPosition
     print "Kommando Pos:" ,d.SdoRd(0x37C7, 0x01) # POS_InterpActualCommandPosition
     i = 1


37C7.00h Interpolation - Aktuelle Zielposition

Name | POS_InterpActualTargetPosition
Bezeichnung | Interpolation - Aktuelle Zielposition
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.01.19
Geräte | Alle
PLC Funktion | InterpActTrgPos()
Querverweis | POS_InterpActualCommandPosition, POS_InterpActualPosition

Beschreibung

Mit dem Parameter kann die aktuelle Zielposition im Interpolationsmodus abgefragt werden. Diese Position entspricht der Interpolationsdaten (POS_InterpData).

Beispiel

from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # DS2000_RestoreDefaultParameters_Application - Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - Motortyp - bürstenloser Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN - Motorpolanzahl
d.SdoWr(0x3911, 0x00, 0)                  # MOTOR_Polarity - Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback- VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution - Encoderauflösung in Ink.

d.SdoWr(0x3310, 0x00, 10)                 # VEL_Kp - VEL PID-Regler - Proportionalfaktor
d.SdoWr(0x3314, 0x00, 1000)               # VEL_Kvff - VEL PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Betriebsart - Positioniermodus

d.SdoWr(0x3708, 0x00, 1)                  # POS_Mode - Position Betriebsart - Interpolation
d.SdoWr(0x37C2, 0x01, INTERPOLATION_TIME_MS*1000) # POS_InterpTime - Interpolation - Zeit [us]
d.SdoWr(0x37C5, 0x00, 3)                  # POS_InterpBufConfig - Interpolation - Bufferkonfiguration
                                          #    Bit0: 0=InterpData als absolute Position  1: InterpData als relative Position
                                          #    Bit1: 0=InterpData ist normalisiert       1: InterpData ist in Inkrementen

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable -  Endstufe freigeben

StartPos  = 0
TargetPos = StartPos

d.SdoWr(0x3762, 0x00, TargetPos)          # POS_ActualPosition - aktuelle Position setzen
d.SdoWr(0x37C6, 0x00, TargetPos)          # POS_InterpData - Interpolation - Daten

ts  = d.SdoRd(0x3850, 0x00)               # SYS_Clock - System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0
i = 1

print "Methode:" ,d.SdoRd(0x37C2, 0x00)  # POS_InterpMethod

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # SYS_Clock - System clock
      pass
   i += 1
   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x37C6, 0x00, TargetPos)       # POS_InterpData - Interpolation - Daten

   if i == 10:
     print
     print "Ziel Pos:" ,d.SdoRd(0x37C7, 0x00)     # POS_InterpActualTargetPosition
     print "Ist Pos:", d.SdoRd(0x37C7, 0x02)      # POS_InterpActualPosition
     print "Kommando Pos:" ,d.SdoRd(0x37C7, 0x01) # POS_InterpActualCommandPosition
     i = 1


37C7.01h Interpolation - Aktuelle Kommandoposition

Name | POS_InterpActualCommandPosition
Bezeichnung | Interpolation - Aktuelle Kommandoposition
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.01.19
Geräte | Alle
PLC Funktion | InterpActCmdPos()
Querverweis | POS_InterpActualTargetPosition, POS_InterpActualPosition

Beschreibung

Mit dem Parameter kann die aktuelle Kommandoposition im Interpolationsmodus abgefragt werden.

Beispiel

from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # DS2000_RestoreDefaultParameters_Application - Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - Motortyp - bürstenloser Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN - Motorpolanzahl
d.SdoWr(0x3911, 0x00, 0)                  # MOTOR_Polarity - Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback- VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution - Encoderauflösung in Ink.

d.SdoWr(0x3310, 0x00, 10)                 # VEL_Kp - VEL PID-Regler - Proportionalfaktor
d.SdoWr(0x3314, 0x00, 1000)               # VEL_Kvff - VEL PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Betriebsart - Positioniermodus

d.SdoWr(0x3708, 0x00, 1)                  # POS_Mode - Position Betriebsart - Interpolation
d.SdoWr(0x37C2, 0x01, INTERPOLATION_TIME_MS*1000) # POS_InterpTime - Interpolation - Zeit [us]
d.SdoWr(0x37C5, 0x00, 3)                  # POS_InterpBufConfig - Interpolation - Bufferkonfiguration
                                          #    Bit0: 0=InterpData als absolute Position  1: InterpData als relative Position
                                          #    Bit1: 0=InterpData ist normalisiert       1: InterpData ist in Inkrementen

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable -  Endstufe freigeben

StartPos  = 0
TargetPos = StartPos

d.SdoWr(0x3762, 0x00, TargetPos)          # POS_ActualPosition - aktuelle Position setzen
d.SdoWr(0x37C6, 0x00, TargetPos)          # POS_InterpData - Interpolation - Daten

ts  = d.SdoRd(0x3850, 0x00)               # SYS_Clock - System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0
i = 1

print "Methode:" ,d.SdoRd(0x37C2, 0x00)  # POS_InterpMethod

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # SYS_Clock - System clock
      pass
   i += 1
   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x37C6, 0x00, TargetPos)       # POS_InterpData - Interpolation - Daten

   if i == 10:
     print
     print "Ziel Pos:" ,d.SdoRd(0x37C7, 0x00)     # POS_InterpActualTargetPosition
     print "Ist Pos:", d.SdoRd(0x37C7, 0x02)      # POS_InterpActualPosition
     print "Kommando Pos:" ,d.SdoRd(0x37C7, 0x01) # POS_InterpActualCommandPosition
     i = 1


37C7.02h Interpolation - Aktuelle Position

Name | POS_InterpActualPosition
Bezeichnung | Interpolation - Aktuelle Position
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.01.19
Geräte | Alle
PLC Funktion | InterpActPos()
Querverweis | POS_InterpActualTargetPosition, POS_InterpActualCommandPosition

Beschreibung

Mit dem Parameter kann die aktuelle Position im Interpolationsmodus abgefragt werden.

Beispiel

from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # DS2000_RestoreDefaultParameters_Application - Parameter 0x6000 zurücksetzen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Parameter 0x3000 zurücksetzen

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - Motortyp - bürstenloser Motor (BLDC)
d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN - Motorpolanzahl
d.SdoWr(0x3911, 0x00, 0)                  # MOTOR_Polarity - Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback- VEL Feedback - Encoder
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - SVEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution - Encoderauflösung in Ink.

d.SdoWr(0x3310, 0x00, 10)                 # VEL_Kp - VEL PID-Regler - Proportionalfaktor
d.SdoWr(0x3314, 0x00, 1000)               # VEL_Kvff - VEL PID-Regler - Geschwindigkeitsvorsteuerung [o/oo]

d.SdoWr(0x3003, 0x00, 7)                  # DEV_Mode - Betriebsart - Positioniermodus

d.SdoWr(0x3708, 0x00, 1)                  # POS_Mode - Position Betriebsart - Interpolation
d.SdoWr(0x37C2, 0x01, INTERPOLATION_TIME_MS*1000) # POS_InterpTime - Interpolation - Zeit [us]
d.SdoWr(0x37C5, 0x00, 3)                  # POS_InterpBufConfig - Interpolation - Bufferkonfiguration
                                          #    Bit0: 0=InterpData als absolute Position  1: InterpData als relative Position
                                          #    Bit1: 0=InterpData ist normalisiert       1: InterpData ist in Inkrementen

d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable -  Endstufe freigeben

StartPos  = 0
TargetPos = StartPos

d.SdoWr(0x3762, 0x00, TargetPos)          # POS_ActualPosition - aktuelle Position setzen
d.SdoWr(0x37C6, 0x00, TargetPos)          # POS_InterpData - Interpolation - Daten

ts  = d.SdoRd(0x3850, 0x00)               # SYS_Clock - System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0
i = 1

print "Methode:" ,d.SdoRd(0x37C2, 0x00)  # POS_InterpMethod

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # SYS_Clock - System clock
      pass
   i += 1
   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x37C6, 0x00, TargetPos)       # POS_InterpData - Interpolation - Daten

   if i == 10:
     print
     print "Ziel Pos:" ,d.SdoRd(0x37C7, 0x00)     # POS_InterpActualTargetPosition
     print "Ist Pos:", d.SdoRd(0x37C7, 0x02)      # POS_InterpActualPosition
     print "Kommando Pos:" ,d.SdoRd(0x37C7, 0x01) # POS_InterpActualCommandPosition
     i = 1


37C8.00h Modulomethode

Name | POS_ModuloMethod
Bezeichnung | Modulomethode
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1, 2}
Defaultwert | 0
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.01.27
Geräte | Alle
PLC Funktion | PosModuloMethod(value)
Querverweis | POS_Mode, POS_ModuloValue

Beschreibung

Dieser Parameter bestimmt den Modulomodus der Positionierfunktion. Der Modulomodus wird aktiviert in dem der Parameter POS_Mode mit dem Wert 2 beschrieben wird.

Parameterwerte:
Wert | Name | Beschreibung
0 | MODULO_METHOD_ShortPath | Der Antrieb fährt zum Ziel auf der kürzesten Strecke.
1 | MODULO_METHOD_PosOnly | Der Antrieb fährt zum Ziel nur in positiver Richtung.
2 | MODULO_METHOD_NegOnly | Der Antrieb fährt zum Ziel nur in negativer Richtung.

In den unterstehenden Beispielen ist der Parameter POS_ModuloValue = 1000.
D.h. mögliche absolute Positionen sind im Bereich von 0 bis 999.
In allen Modulomodis kann der Antrieb je nach Start- und Zielposition über 0 fahren.

Kürzeste Strecke Startposition = 0, Zielpositionen = 250 und 750

Modulo - kürzeste Strecke

Startposition = 0, Zielpositionen = 499 und 500

Modulo - kürzeste Strecke - Grenzfälle

Bewegung nur in positiver Richtung Startposition = 0, Zielpositionen = 250 und 750

Modulo - nur positiv

Bewegung nur in negativer Richtung Startposition = 0, Zielpositionen = 250 und 750

Modulo - nur negative Richtung

Beispiel

# -*- coding: iso-8859-1 -*-
import time
from mc.dsa import *

MODULO_VALUE = 30

d = Dsa(1)                            # NodeId = 1

def InitPars (d):
   d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Sperren
   d.SdoWr(0x3000, 0x00, 1)           # DEV_Cmd - Fehler löschen
   d.SdoWr(0x3000, 0x00, 0x82)        # DEV_Cmd - Defaultparameter

   d.SdoWr(0x3900, 0x00, 1)           # MOTOR_Type
   d.SdoWr(0x3911, 0x00, 1)           # MOTOR_Polarity

   d.SdoWr(0x3910, 0x00, 10)          # MOTOR_PolN

   d.SdoWr(0x3350, 0x00, 0)           # VEL_Feedback
   d.SdoWr(0x3550, 0x00, 0)           # SVEL_Feedback

   d.SdoWr(0x3221, 0x00, 5000)        # CURR_LimitMaxPos
   d.SdoWr(0x3223, 0x00, 5000)        # CURR_LimitMaxNeg

   d.SdoWr(0x3310, 0x00, 60)          # VEL_Kp
   d.SdoWr(0x3311, 0x00, 5)           # VEL_Ki
   d.SdoWr(0x3314, 0x00, 1000)        # VEL_Kvff

   d.SdoWr(0x3510, 0x00, 200)         # SVEL_Kp
   d.SdoWr(0x3511, 0x00, 200)         # SVEL_Ki

   d.SdoWr(0x3003, 0x00, 7)           # DEV_Mode -> Positioniermodus

InitPars(d)

d.SdoWr(0x3708, 0x00, 2)              # POS_Mode -> Modulo-Positionierung
d.SdoWr(0x37C8, 0x00, 1)              # POS_ModuloMethod -> MODULO_METHOD_PosOnly
d.SdoWr(0x37C9, 0x00, MODULO_VALUE)   # POS_ModuloValue

d.SdoWr(0x3300, 0x00, 3000)           # VEL_DesiredValue
d.SdoWr(0x3004, 0x00, 1)              # DEV_Enable - Freigabe

print "Start..."

for i in xrange(10):
   if i%2:
      d.SdoWr(0x3790, 0x00, MODULO_VALUE-1)   # POS_Mova
   else:
      d.SdoWr(0x3790, 0x00, MODULO_VALUE/2-1) # POS_Mova

   time.sleep(1)

   print "ActPos = ", d.SdoRd(0x3762, 0x00)   # POS_ActualPosition


37C9.00h Modulowert

Name | POS_ModuloValue
Bezeichnung | Modulowert
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 2147483647]
Defaultwert | 1
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.01.27
Geräte | Alle
PLC Funktion | PosModuloValue(value)
Querverweis | POS_Mode, POS_ModuloMethod

Beschreibung

Dieser Parameter legt ein s.g. Modulowert für die Modulopositionierung (Rundachsefunktion) fest.

Beispiel:

 Wenn der Parameter POS_ModuloValue = 50 ist, dann ist die Positionsfolge wie unten dargestellt:

   in positiver Richtung  ... 45 46 47 48 49 0  1  2  3  4  5 ...
   in negativer Richtung  ...  5  4  3  2  1 0 49 48 47 46 45 ...

Für weiter Beispiele siehe Parameter POS_ModuloMethod.

Beispiel

# -*- coding: iso-8859-1 -*-
import time
from mc.dsa import *

MODULO_VALUE = 30

d = Dsa(1)                            # NodeId = 1

def InitPars (d):
   d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Sperren
   d.SdoWr(0x3000, 0x00, 1)           # DEV_Cmd - Fehler löschen
   d.SdoWr(0x3000, 0x00, 0x82)        # DEV_Cmd - Defaultparameter

   d.SdoWr(0x3900, 0x00, 1)           # MOTOR_Type
   d.SdoWr(0x3911, 0x00, 1)           # MOTOR_Polarity

   d.SdoWr(0x3910, 0x00, 10)          # MOTOR_PolN

   d.SdoWr(0x3350, 0x00, 0)           # VEL_Feedback
   d.SdoWr(0x3550, 0x00, 0)           # SVEL_Feedback

   d.SdoWr(0x3221, 0x00, 5000)        # CURR_LimitMaxPos
   d.SdoWr(0x3223, 0x00, 5000)        # CURR_LimitMaxNeg

   d.SdoWr(0x3310, 0x00, 60)          # VEL_Kp
   d.SdoWr(0x3311, 0x00, 5)           # VEL_Ki
   d.SdoWr(0x3314, 0x00, 1000)        # VEL_Kvff

   d.SdoWr(0x3510, 0x00, 200)         # SVEL_Kp
   d.SdoWr(0x3511, 0x00, 200)         # SVEL_Ki

   d.SdoWr(0x3003, 0x00, 7)           # DEV_Mode -> Positioniermodus

InitPars(d)

d.SdoWr(0x3708, 0x00, 2)              # POS_Mode -> Modulo-Positionierung
d.SdoWr(0x37C8, 0x00, 1)              # POS_ModuloMethod -> MODULO_METHOD_PosOnly
d.SdoWr(0x37C9, 0x00, MODULO_VALUE)   # POS_ModuloValue

d.SdoWr(0x3300, 0x00, 3000)           # VEL_DesiredValue
d.SdoWr(0x3004, 0x00, 1)              # DEV_Enable - Freigabe

print "Start..."

for i in xrange(10):
   if i%2:
      d.SdoWr(0x3790, 0x00, MODULO_VALUE-1)   # POS_Mova
   else:
      d.SdoWr(0x3790, 0x00, MODULO_VALUE/2-1) # POS_Mova

   time.sleep(1)

   print "ActPos = ", d.SdoRd(0x3762, 0x00)   # POS_ActualPosition


3830.00h PWM Frequenz

Name | PWM_Frequency
Bezeichnung | PWM Frequenz
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {12500, 25000, 32000, 50000, *100000, *200000} *Ab Firmware Version 1.93.00.CD
Defaultwert | 25000
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.07
Geräte | Alle
PLC Funktion | PwmFreq(value)
Querverweis | -

Beschreibung

Mit diesem Parameter kann die PWM-Frequenz verstellt werden.

Eine PWM-Frequenz 200 kHz ist nur bei Geräten der Serie EDC-E6x möglich.

Achtung
Je kleiner die PWM-Frequenz und die Anschlußinduktivität des Motors, desto wärmer (größere Verluste) wird der Motor im Stillstand.

Beispiel

# -*- coding: iso-8859-1 -*-
   from mc.dsa import *

   d = Dsa(1)

   # Ablesen der aktuellen Parameter
   print "PWM Frequenz: ", d.SdoRd(0x3830, 0x00)   # PWM_Frequency
   print "PWM Modus: ", d.SdoRd(0x3830, 0x01)      # PWM_Mode

   # Schreiben der neuen Parameter
   d.SdoWr(0x3830, 0x00, 25000)                    # PWM_Frequency
   d.SdoWr(0x3830, 0x01, 1)                        # PWM_Mode


3830.01h PWM Modus

Name | PWM_Mode
Bezeichnung | PWM Modus
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {0, 1}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.07
Geräte | Alle
PLC Funktion | PwmMode(value), PwmModeSym(), PwmModeAsym()
Querverweis | -

Beschreibung

Mit dem Parameter kann der Modus vom PWM-Signal festgelegt werden.

Parameterwerte:
Wert | Name | Beschreibung
0 | PWM_Symetric | Im Stillstand ohne Belastung beträgt das PWM-Signal 50%. Das entspricht einer mittleren Spannung von 0 Volt.
1 | PWM_Asymetric | Im Stillstand ohne Belastung beträgt das PWM-Signal 0%. Je nach Drehrichtung wird das relative PWM-Signal "positiv" oder "negativ". Dieser Modus ist, wegen kleineren Verlusten im Stillstand, besonders für Motoren mit kleiner Anschlußinduktivität geeignet.

Beispiel

# -*- coding: iso-8859-1 -*-
   from mc.dsa import *

   d = Dsa(1)

   # Ablesen der aktuellen Parameter
   print "PWM Frequenz: ", d.SdoRd(0x3830, 0x00)   # PWM_Frequency
   print "PWM Modus: ", d.SdoRd(0x3830, 0x01)      # PWM_Mode

   # Schreiben der neuen Parameter
   d.SdoWr(0x3830, 0x00, 25000)                    # PWM_Frequency
   d.SdoWr(0x3830, 0x01, 1)                        # PWM_Mode


3913.00h Kommutierungsart des Motors

Name | MOTOR_CommutationType
Bezeichnung | Kommutierungsart des Motors
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {00h, 10h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.91.00.27
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_Commutation_Referencing, MOTOR_Commutation_Polarity

Beschreibung

Mit diesem Parameter kann die Kommutierungsart des Motors geändert werden.

Bemerkung:
  • Dieser Parameter kann nur im gesperrten Betriebszustand (DEV_Enable = 0) geändert werden. Sonst werden die Änderungen des Parameters nicht angenommen, bzw. haben keine Wirkung.

Informationen zum Kommutierungsschema sind in der Applikation Note AN_CommutationScheme.
Parameterwerte:
Wert | Beschreibung
0 | Blockkommutierung
0x10 | Encoder Blockkommutierung

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3911, 0x00, 1<<3)               # MOTOR_Polarity

d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution [inc]

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback - Ink. Drehgeber
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - Ink. Drehgeber

d.SdoWr(0x3221, 0x00, 3000)               # CURR_LimitMaxPos [mA]
d.SdoWr(0x3223, 0x00, 3000)               # CURR_LimitMaxNeg [mA]

if d.VersionSw() >= 0x1910027:
   d.SdoWr(0x3913, 0x00, 0x10)            # MOTOR_CommutationType - BlockEnc

if d.VersionSw() >= 0x1910034:            # ab V1.91.00.34 ist MOTOR_Commutation_Polarity vorhanden.
   d.SdoWr(0x3913, 0x07, 1)               # MOTOR_Commutation_Polarity => auf 1 setzen falls Motor auf der Stelle steht und brummt

d.SdoWr(0x3913, 0x10, 1000, timeout=3500) # MOTOR_Commutation_Referencing
                                          # Der Encoderabgleich mit dem Strom 4000mA

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback - Ink. Drehgeber
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - Ink. Drehgeber

d.SdoWr(0x3003, 0x00, 3)                  # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Freigeben
d.SdoWr(0x3300, 0x00, 1000)               # VEL_DesiredValue [rpm]


3913.07h Kommutierungspolarität des Motors

Name | MOTOR_Commutation_Polarity
Bezeichnung | Kommutierungspolarität des Motors
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | [0 .. 7]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.91.00.34
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_Commutation_Referencing, MOTOR_CommutationType

Beschreibung

Mit diesem Parameter kann die Kommutierungspolarität des Motors eingestellt werden.

Bitbelegung:
Bit | Beschreibung
0 | Encoderkommutierung: 0-positiv, 1-negativ
1 | Sektoren: 0-positiv, 1-negativ
2 | Richtung: 0-positiv, 1-negativ

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3911, 0x00, 1<<3)               # MOTOR_Polarity

d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution [inc]

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback - Ink. Drehgeber
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - Ink. Drehgeber

d.SdoWr(0x3221, 0x00, 3000)               # CURR_LimitMaxPos [mA]
d.SdoWr(0x3223, 0x00, 3000)               # CURR_LimitMaxNeg [mA]

if d.VersionSw() >= 0x1910027:
   d.SdoWr(0x3913, 0x00, 0x10)            # MOTOR_CommutationType - BlockEnc

if d.VersionSw() >= 0x1910034:            # ab V1.91.00.34 ist MOTOR_Commutation_Polarity vorhanden.
   d.SdoWr(0x3913, 0x07, 1)               # MOTOR_Commutation_Polarity => auf 1 setzen falls Motor auf der Stelle steht und brummt

d.SdoWr(0x3913, 0x10, 1000, timeout=3500) # MOTOR_Commutation_Referencing
                                          # Der Encoderabgleich mit dem Strom 4000mA

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback - Ink. Drehgeber
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - Ink. Drehgeber

d.SdoWr(0x3003, 0x00, 3)                  # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Freigeben
d.SdoWr(0x3300, 0x00, 1000)               # VEL_DesiredValue [rpm]


3913.10h Encoderkommutierungsabgleich

Name | MOTOR_Commutation_Referencing
Bezeichnung | Encoderkommutierungsabgleich
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.85.00.21
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_Commutation_Polarity, MOTOR_CommutationType

Beschreibung

Beim Schreiben dieses Parameters wird der Encoderabgleich mit dem bestimmten Strom gestartet. Der Wert des Parameters definiert den Strom. Der Abgleich muss immer nach dem Start des Reglers ausgeführt werden. Ansonsten bei der Freigabe generiert der Regler den Fehler -730.
Nach dem erfolgreichen Abgleich findet die Kommutierung über die Encodersignale statt. Die Hallsignale sind dafür nicht benötigt.

Beim Lesen des Parameters bekommt man die Information, ob der Abgleich durchgeführt worden ist. Der Wert 1 bedeutet, dass der Abgleich erfolgreich durchgeführt wurde.

ACHTUNG

Nach dem Ausführen des Kommandos kann sich die Welle des Motors ruckartig bewegen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3911, 0x00, 1<<3)               # MOTOR_Polarity

d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution [inc]

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback - Ink. Drehgeber
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - Ink. Drehgeber

d.SdoWr(0x3221, 0x00, 3000)               # CURR_LimitMaxPos [mA]
d.SdoWr(0x3223, 0x00, 3000)               # CURR_LimitMaxNeg [mA]

if d.VersionSw() >= 0x1910027:
   d.SdoWr(0x3913, 0x00, 0x10)            # MOTOR_CommutationType - BlockEnc

if d.VersionSw() >= 0x1910034:            # ab V1.91.00.34 ist MOTOR_Commutation_Polarity vorhanden.
   d.SdoWr(0x3913, 0x07, 1)               # MOTOR_Commutation_Polarity => auf 1 setzen falls Motor auf der Stelle steht und brummt

d.SdoWr(0x3913, 0x10, 1000, timeout=3500) # MOTOR_Commutation_Referencing
                                          # Der Encoderabgleich mit dem Strom 4000mA

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback - Ink. Drehgeber
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - Ink. Drehgeber

d.SdoWr(0x3003, 0x00, 3)                  # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Freigeben
d.SdoWr(0x3300, 0x00, 1000)               # VEL_DesiredValue [rpm]


3913.11h Encoderkommutierungsabgleichs Methode

Name | MOTOR_Commutation_ReferencingMode
Bezeichnung | Encoderkommutierungsabgleichs Methode
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {0, 1}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.D0
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_Commutation_Polarity, MOTOR_CommutationType

Beschreibung

Mit diesem Parameter kann die Encoder Referenzierungsmethode gewählt werden

Wert | Name | Beschreibung
0 | Encoder Kommutierungsabgleich | Manueller Kommutierungsabgleich, ausgeführt durch den Parameter MOTOR_Commutation_Referencing
1 | Hall Referenzierung | Automatischer Kommutierungsabgleich, ausgeführt über die Hallsensoren (der Abgleich findet wärend der Bewegung statt)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3911, 0x00, 1<<3)               # MOTOR_Polarity

d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution [inc]

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback - Ink. Drehgeber
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - Ink. Drehgeber

d.SdoWr(0x3913, 0x00, 0x10)               # MOTOR_Commutation_Type - Block Encoder
d.SdoWr(0x3913, 0x11, 1)                  # MOTOR_Commutation_ReferencingMode - Hall Referenzierung
d.SdoWr(0x3913, 0x20, 1)                  # PreCommutationConfig - Aktivieren
d.SdoWr(0x3913, 0x21, 3000)               # PreCommutationVel - 3000 rpm
d.SdoWr(0x3913, 0x23, 15)                 # PreCommutationAngle - 15°

d.SdoWr(0x3003, 0x00, 3)                  # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Freigeben
d.SdoWr(0x3300, 0x00, 1000)               # VEL_DesiredValue [rpm]


3944.01h Halldiagnostik - falsche Pulse

Name | MOTOR_HALL_Diag_ErrCnt1
Bezeichnung | Halldiagnostik - falsche Pulse
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.81.01.01
Geräte | Alle
PLC Funktion | HallDiagErrCounter(nr, value)
Querverweis | MOTOR_HALL_Diag_ErrCnt2

Beschreibung

Dieser Parameter dient zur Diagnose der Hallsignale.
Bei drei Hallsensoren gibt es theoretisch die Zustände [0..7]. Durch den elektrischen Aufbau bestimmt dürfen die Zustände 0 und 7 bei Halltyp=120° nicht vorkommen. MOTOR_HALL_Diag_ErrCnt1 zählt diese falschen Zustände.

Rechtslauf (Halltyp=120°):

° elektrisch | Hallsensor 1 | Hallsensor 2 | Hallsensor 3 | ° mechanisch 2 Polpaare | ° mechanisch 4 Polpaare | ° mechanisch 5 Polpaare
0 | 1 | 0 | 0 | 0 | 0 | 0
60 | 1 | 1 | 0 | 30 | 15 | 12
120 | 0 | 1 | 0 | 60 | 30 | 24
180 | 0 | 1 | 1 | 90 | 45 | 36
240 | 0 | 0 | 1 | 120 | 60 | 48
300 | 1 | 0 | 1 | 150 | 75 | 60
360 | 1 | 0 | 0 | 180 | 90 | 72

Linkslauf (Halltyp=120°):

° elektrisch | Hallsensor 1 | Hallsensor 2 | Hallsensor 3 | ° mechanisch 2 Polpaare | ° mechanisch 4 Polpaare | ° mechanisch 5 Polpaare
0 | 1 | 0 | 0 | 0 | 0 | 0
60 | 1 | 0 | 1 | 30 | 15 | 12
120 | 0 | 0 | 1 | 60 | 30 | 24
180 | 0 | 1 | 1 | 90 | 45 | 36
240 | 0 | 1 | 0 | 120 | 60 | 48
300 | 1 | 1 | 0 | 150 | 75 | 60
360 | 1 | 0 | 0 | 180 | 90 | 72

Hinweis
  • Bei einem Motor mit einem Polpaar sind die elektrischen Winkel gleich den mechanischen. Z.B. bei einem Motor mit 5 Polpaaren gibt es also 5 mal mehr Impulse, d.h. 360° elektrisch entsprechen 72° mechanisch.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                              # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                              # DEV_Cmd - Fehler löschen

d.SdoWr(0x3003, 0x00, 7)                              # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                              # VEL_DesiredValue - Solldrehzahl = 0 [U/min]

d.SdoWr(0x3940, 0x00, 0)                              # MOTOR_HALL_Type - 120° Hall sensoren

d.SdoWr(0x3949, 0x00, 2)                              # MOTOR_HALL_DoutPulses_Mode - out A => pulses / out B => direction

d.SdoWr(0x3949, 0x01, 0x01)                           # MOTOR_HALL_DoutPulses_PosDirMask - dout0 => out A
d.SdoWr(0x3949, 0x02, 0x02)                           # MOTOR_HALL_DoutPulses_NegDirMask - dout1 => out B

d.SdoWr(0x3949, 0x03, 3)                              # MOTOR_HALL_DoutPulses_ModuloValue - 3 pulses => 0 -> 1

d.SdoWr(0x3004, 0x00, 1)                              # DEV_Enable - Freigeben

# Schreibe Bewegungsbefehl
d.SdoWr(0x3000, 0x10, 1000)                           # DEV_CmdData0
d.SdoWr(0x3000, 0x11, 120)                            # DEV_CmdData1
d.SdoWr(0x3000, 0x01, 0x00)                           # DEV_Cmd_ExecOnChange - Toggle
d.SdoWr(0x3000, 0x01, 0x34)                           # DEV_Cmd_ExecOnChange - MovR

# Gebe Ergebnisse aus
print "Hallposition vorher:", d.SdoRd(0x394A, 0x00)   # MOTOR_HALL_ActualPosition
while 1:

   status = d.SdoRd(0x3002, 0x00)                     # DEV_Status - Status abfragen
   if (status & 0x0110) == 0x0110:                    # Ziel erreicht? (Bit4 & Bit8 == 1)
      print "Ziel erreicht"
      d.SdoWr(0x3004, 0x00, 0)                        # DEV_Enable - Sperren
      break                                           # Schleife beenden

print "Diag Cnt 1: ", d.SdoRd(0x3944, 0x01)           # MOTOR_HALL_Diag_ErrCnt1
print "Diag Cnt 2: ", d.SdoRd(0x3944, 0x02)           # MOTOR_HALL_Diag_ErrCnt2

print "Hallposition danach:", d.SdoRd(0x394A, 0x00)   # MOTOR_HALL_ActualPosition


3944.02h Halldiagnostik - falsche Reihenfolge

Name | MOTOR_HALL_Diag_ErrCnt2
Bezeichnung | Halldiagnostik - falsche Reihenfolge
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.81.01.01
Geräte | Alle
PLC Funktion | HallDiagErrCounter(nr, value)
Querverweis | MOTOR_HALL_Diag_ErrCnt1

Beschreibung

Dieser Parameter dient zur Diagnose der Hallsignale.
Die Reihenfolge, in der die Hallsignale kommen müssen, ist durch den Motoraufbau bestimmt. MOTOR_HALL_Diag_ErrCnt2 zählt falsche Reihenfolgen.

Rechtslauf (Halltyp=120°):

° elektrisch | Hallsensor 1 | Hallsensor 2 | Hallsensor 3 | ° mechanisch 2 Polpaare | ° mechanisch 4 Polpaare | ° mechanisch 5 Polpaare
0 | 1 | 0 | 0 | 0 | 0 | 0
60 | 1 | 1 | 0 | 30 | 15 | 12
120 | 0 | 1 | 0 | 60 | 30 | 24
180 | 0 | 1 | 1 | 90 | 45 | 36
240 | 0 | 0 | 1 | 120 | 60 | 48
300 | 1 | 0 | 1 | 150 | 75 | 60
360 | 1 | 0 | 0 | 180 | 90 | 72

Linkslauf (Halltyp=120°):

° elektrisch | Hallsensor 1 | Hallsensor 2 | Hallsensor 3 | ° mechanisch 2 Polpaare | ° mechanisch 4 Polpaare | ° mechanisch 5 Polpaare
0 | 1 | 0 | 0 | 0 | 0 | 0
60 | 1 | 0 | 1 | 30 | 15 | 12
120 | 0 | 0 | 1 | 60 | 30 | 24
180 | 0 | 1 | 1 | 90 | 45 | 36
240 | 0 | 1 | 0 | 120 | 60 | 48
300 | 1 | 1 | 0 | 150 | 75 | 60
360 | 1 | 0 | 0 | 180 | 90 | 72

Hinweis
  • Bei einem Motor mit einem Polpaar sind die elektrischen Winkel gleich den mechanischen. Z.B. bei einem Motor mit 5 Polpaaren gibt es also 5 mal mehr Impulse, d.h. 360° elektrisch entsprechen 72° mechanisch.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                              # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                              # DEV_Cmd - Fehler löschen

d.SdoWr(0x3003, 0x00, 7)                              # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                              # VEL_DesiredValue - Solldrehzahl = 0 [U/min]

d.SdoWr(0x3940, 0x00, 0)                              # MOTOR_HALL_Type - 120° Hall sensoren

d.SdoWr(0x3949, 0x00, 2)                              # MOTOR_HALL_DoutPulses_Mode - out A => pulses / out B => direction

d.SdoWr(0x3949, 0x01, 0x01)                           # MOTOR_HALL_DoutPulses_PosDirMask - dout0 => out A
d.SdoWr(0x3949, 0x02, 0x02)                           # MOTOR_HALL_DoutPulses_NegDirMask - dout1 => out B

d.SdoWr(0x3949, 0x03, 3)                              # MOTOR_HALL_DoutPulses_ModuloValue - 3 pulses => 0 -> 1

d.SdoWr(0x3004, 0x00, 1)                              # DEV_Enable - Freigeben

# Schreibe Bewegungsbefehl
d.SdoWr(0x3000, 0x10, 1000)                           # DEV_CmdData0
d.SdoWr(0x3000, 0x11, 120)                            # DEV_CmdData1
d.SdoWr(0x3000, 0x01, 0x00)                           # DEV_Cmd_ExecOnChange - Toggle
d.SdoWr(0x3000, 0x01, 0x34)                           # DEV_Cmd_ExecOnChange - MovR

# Gebe Ergebnisse aus
print "Hallposition vorher:", d.SdoRd(0x394A, 0x00)   # MOTOR_HALL_ActualPosition
while 1:

   status = d.SdoRd(0x3002, 0x00)                     # DEV_Status - Status abfragen
   if (status & 0x0110) == 0x0110:                    # Ziel erreicht? (Bit4 & Bit8 == 1)
      print "Ziel erreicht"
      d.SdoWr(0x3004, 0x00, 0)                        # DEV_Enable - Sperren
      break                                           # Schleife beenden

print "Diag Cnt 1: ", d.SdoRd(0x3944, 0x01)           # MOTOR_HALL_Diag_ErrCnt1
print "Diag Cnt 2: ", d.SdoRd(0x3944, 0x02)           # MOTOR_HALL_Diag_ErrCnt2

print "Hallposition danach:", d.SdoRd(0x394A, 0x00)   # MOTOR_HALL_ActualPosition


Inhalt - Parameter 3000h (DSA) - Halltuning

3946.00h | MOTOR_HALL_Tuning_Sector0 | Halltuning - Sektor 0
3946.01h | MOTOR_HALL_Tuning_Sector1 | Halltuning - Sektor 1
3946.02h | MOTOR_HALL_Tuning_Sector2 | Halltuning - Sektor 2
3946.03h | MOTOR_HALL_Tuning_Sector3 | Halltuning - Sektor 3
3946.04h | MOTOR_HALL_Tuning_Sector4 | Halltuning - Sektor 4
3946.05h | MOTOR_HALL_Tuning_Sector5 | Halltuning - Sektor 5
3946.08h | MOTOR_HALL_Tuning_WrEnable | Halltuning - Schreibfreigabe


3946.00h Halltuning - Sektor 0

Name | MOTOR_HALL_Tuning_Sector0
Bezeichnung | Halltuning - Sektor 0
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | {1, 2, 3, 4, 5, 6}
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_HALL_Tuning_Sector1, MOTOR_HALL_Tuning_Sector2, MOTOR_HALL_Tuning_Sector3, MOTOR_HALL_Tuning_Sector4, MOTOR_HALL_Tuning_Sector5, MOTOR_HALL_Tuning_WrEnable

Beschreibung

Mit diesem Parameter wird der Hallsektor für den entsprechenden Kommutierungspunkt festgelegt.
Der Parameter hat nur einen Effekt, wenn der Hallsensortyp auf "Benutzerspezifisch" gestellt wurde. (siehe MOTOR_HALL_Type)
Der Parameter kann nur beschrieben werden, wenn vorher eine Schreibfreigabe geben wurde(siehe MOTOR_HALL_Tuning_WrEnable).

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

d.SdoWr(0x3940,0, 2)          # HallType
d.SdoWr(0x3946,8, 0x55AA)     # Schreibfreigabe
d.SdoWr(0x3946,0, 1)          # Sektor 0 = 1
d.SdoWr(0x3946,1, 5)          # Sektor 1 = 5
d.SdoWr(0x3946,2, 4)          # Sektor 2 = 4
d.SdoWr(0x3946,3, 6)          # Sektor 3 = 6
d.SdoWr(0x3946,4, 2)          # Sektor 4 = 2
d.SdoWr(0x3946,5, 3)          # Sektor 5 = 3


3946.01h Halltuning - Sektor 1

Name | MOTOR_HALL_Tuning_Sector1
Bezeichnung | Halltuning - Sektor 1
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | {1, 2, 3, 4, 5, 6}
Defaultwert | 5
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_HALL_Tuning_Sector0, MOTOR_HALL_Tuning_Sector2, MOTOR_HALL_Tuning_Sector3, MOTOR_HALL_Tuning_Sector4, MOTOR_HALL_Tuning_Sector5, MOTOR_HALL_Tuning_WrEnable

Beschreibung

Mit diesem Parameter wird der Hallsektor für den entsprechenden Kommutierungspunkt festgelegt.
Der Parameter hat nur einen Effekt, wenn der Hallsensortyp auf "Benutzerspezifisch" gestellt wurde. (siehe MOTOR_HALL_Type)
Der Parameter kann nur beschrieben werden, wenn vorher eine Schreibfreigabe geben wurde(siehe MOTOR_HALL_Tuning_WrEnable).

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

d.SdoWr(0x3940,0, 2)          # HallType
d.SdoWr(0x3946,8, 0x55AA)     # Schreibfreigabe
d.SdoWr(0x3946,0, 1)          # Sektor 0 = 1
d.SdoWr(0x3946,1, 5)          # Sektor 1 = 5
d.SdoWr(0x3946,2, 4)          # Sektor 2 = 4
d.SdoWr(0x3946,3, 6)          # Sektor 3 = 6
d.SdoWr(0x3946,4, 2)          # Sektor 4 = 2
d.SdoWr(0x3946,5, 3)          # Sektor 5 = 3


3946.02h Halltuning - Sektor 2

Name | MOTOR_HALL_Tuning_Sector2
Bezeichnung | Halltuning - Sektor 2
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | {1, 2, 3, 4, 5, 6}
Defaultwert | 4
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_HALL_Tuning_Sector0, MOTOR_HALL_Tuning_Sector1, MOTOR_HALL_Tuning_Sector3, MOTOR_HALL_Tuning_Sector4, MOTOR_HALL_Tuning_Sector5, MOTOR_HALL_Tuning_WrEnable

Beschreibung

Mit diesem Parameter wird der Hallsektor für den entsprechenden Kommutierungspunkt festgelegt.
Der Parameter hat nur einen Effekt, wenn der Hallsensortyp auf "Benutzerspezifisch" gestellt wurde. (siehe MOTOR_HALL_Type)
Der Parameter kann nur beschrieben werden, wenn vorher eine Schreibfreigabe geben wurde(siehe MOTOR_HALL_Tuning_WrEnable).

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

d.SdoWr(0x3940,0, 2)          # HallType
d.SdoWr(0x3946,8, 0x55AA)     # Schreibfreigabe
d.SdoWr(0x3946,0, 1)          # Sektor 0 = 1
d.SdoWr(0x3946,1, 5)          # Sektor 1 = 5
d.SdoWr(0x3946,2, 4)          # Sektor 2 = 4
d.SdoWr(0x3946,3, 6)          # Sektor 3 = 6
d.SdoWr(0x3946,4, 2)          # Sektor 4 = 2
d.SdoWr(0x3946,5, 3)          # Sektor 5 = 3


3946.03h Halltuning - Sektor 3

Name | MOTOR_HALL_Tuning_Sector3
Bezeichnung | Halltuning - Sektor 3
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | {1, 2, 3, 4, 5, 6}
Defaultwert | 6
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_HALL_Tuning_Sector0, MOTOR_HALL_Tuning_Sector1, MOTOR_HALL_Tuning_Sector2, MOTOR_HALL_Tuning_Sector4, MOTOR_HALL_Tuning_Sector5, MOTOR_HALL_Tuning_WrEnable

Beschreibung

Mit diesem Parameter wird der Hallsektor für den entsprechenden Kommutierungspunkt festgelegt.
Der Parameter hat nur einen Effekt, wenn der Hallsensortyp auf "Benutzerspezifisch" gestellt wurde. (siehe MOTOR_HALL_Type)
Der Parameter kann nur beschrieben werden, wenn vorher eine Schreibfreigabe geben wurde(siehe MOTOR_HALL_Tuning_WrEnable).

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

d.SdoWr(0x3940,0, 2)          # HallType
d.SdoWr(0x3946,8, 0x55AA)     # Schreibfreigabe
d.SdoWr(0x3946,0, 1)          # Sektor 0 = 1
d.SdoWr(0x3946,1, 5)          # Sektor 1 = 5
d.SdoWr(0x3946,2, 4)          # Sektor 2 = 4
d.SdoWr(0x3946,3, 6)          # Sektor 3 = 6
d.SdoWr(0x3946,4, 2)          # Sektor 4 = 2
d.SdoWr(0x3946,5, 3)          # Sektor 5 = 3


3946.04h Halltuning - Sektor 4

Name | MOTOR_HALL_Tuning_Sector4
Bezeichnung | Halltuning - Sektor 4
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | {1, 2, 3, 4, 5, 6}
Defaultwert | 2
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_HALL_Tuning_Sector0, MOTOR_HALL_Tuning_Sector1, MOTOR_HALL_Tuning_Sector2, MOTOR_HALL_Tuning_Sector3, MOTOR_HALL_Tuning_Sector5, MOTOR_HALL_Tuning_WrEnable

Beschreibung

Mit diesem Parameter wird der Hallsektor für den entsprechenden Kommutierungspunkt festgelegt.
Der Parameter hat nur einen Effekt, wenn der Hallsensortyp auf "Benutzerspezifisch" gestellt wurde. (siehe MOTOR_HALL_Type)
Der Parameter kann nur beschrieben werden, wenn vorher eine Schreibfreigabe geben wurde(siehe MOTOR_HALL_Tuning_WrEnable).

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

d.SdoWr(0x3940,0, 2)          # HallType
d.SdoWr(0x3946,8, 0x55AA)     # Schreibfreigabe
d.SdoWr(0x3946,0, 1)          # Sektor 0 = 1
d.SdoWr(0x3946,1, 5)          # Sektor 1 = 5
d.SdoWr(0x3946,2, 4)          # Sektor 2 = 4
d.SdoWr(0x3946,3, 6)          # Sektor 3 = 6
d.SdoWr(0x3946,4, 2)          # Sektor 4 = 2
d.SdoWr(0x3946,5, 3)          # Sektor 5 = 3


3946.05h Halltuning - Sektor 5

Name | MOTOR_HALL_Tuning_Sector5
Bezeichnung | Halltuning - Sektor 5
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | {1, 2, 3, 4, 5, 6}
Defaultwert | 3
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_HALL_Tuning_Sector0, MOTOR_HALL_Tuning_Sector1, MOTOR_HALL_Tuning_Sector2, MOTOR_HALL_Tuning_Sector3, MOTOR_HALL_Tuning_Sector4, MOTOR_HALL_Tuning_WrEnable

Beschreibung

Mit diesem Parameter wird der Hallsektor für den entsprechenden Kommutierungspunkt festgelegt.
Der Parameter hat nur einen Effekt, wenn der Hallsensortyp auf "Benutzerspezifisch" gestellt wurde. (siehe MOTOR_HALL_Type)
Der Parameter kann nur beschrieben werden, wenn vorher eine Schreibfreigabe geben wurde(siehe MOTOR_HALL_Tuning_WrEnable).

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

d.SdoWr(0x3940,0, 2)          # HallType
d.SdoWr(0x3946,8, 0x55AA)     # Schreibfreigabe
d.SdoWr(0x3946,0, 1)          # Sektor 0 = 1
d.SdoWr(0x3946,1, 5)          # Sektor 1 = 5
d.SdoWr(0x3946,2, 4)          # Sektor 2 = 4
d.SdoWr(0x3946,3, 6)          # Sektor 3 = 6
d.SdoWr(0x3946,4, 2)          # Sektor 4 = 2
d.SdoWr(0x3946,5, 3)          # Sektor 5 = 3


3946.08h Halltuning - Schreibfreigabe

Name | MOTOR_HALL_Tuning_WrEnable
Bezeichnung | Halltuning - Schreibfreigabe
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {0, 21930}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_HALL_Tuning_Sector0, MOTOR_HALL_Tuning_Sector1, MOTOR_HALL_Tuning_Sector2, MOTOR_HALL_Tuning_Sector3, MOTOR_HALL_Tuning_Sector4, MOTOR_HALL_Tuning_Sector5

Beschreibung

Mit diesem Parameter kann die Schreibfreigabe für das manuelle Setzen der Hallsektoren erteilt werden.
Zur Vermeidung der unbeabsichtigten Änderung der Hallsektoren, wird ein spezielles Codewort benötigt. Um die Schreibfreigabe zu aktivieren, muss man den Parameter auf 0x55AA setzen. Alle anderen Werte deaktivieren die Schreibfreigabe.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

d.SdoWr(0x3940,0, 2)          # HallType
d.SdoWr(0x3946,8, 0x55AA)     # Schreibfreigabe
d.SdoWr(0x3946,0, 1)          # Sektor 0 = 1
d.SdoWr(0x3946,1, 5)          # Sektor 1 = 5
d.SdoWr(0x3946,2, 4)          # Sektor 2 = 4
d.SdoWr(0x3946,3, 6)          # Sektor 3 = 6
d.SdoWr(0x3946,4, 2)          # Sektor 4 = 2
d.SdoWr(0x3946,5, 3)          # Sektor 5 = 3


3961.22h mcSPI-IC2 Encoder Konfiguration - SPI Adresse

Name | MOTOR_ENC_INC2_Config_McSpiAddr
Bezeichnung | mcSPI-IC2 Encoder Konfiguration - SPI Adresse
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 255]
Defaultwert | 255
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.56
Geräte | ausgenommen: EDC-xx-EtherCat
PLC Funktion | -
Querverweis | MOTOR_ENC_INC2_ActualPosition, MOTOR_ENC_INC2_Resolution_Cnt

Beschreibung

Mit diesem Parameter kann die SPI-Adresse des mcSPI-IC2 Encoder eingestellt werden. Der Wert 255 schaltet den mcSPI-IC2 Encoder aus.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa

d = Dsa(1)

d.SdoWr(0x3961, 0x22, 0)                                       # MOTOR_ENC_INC2_Config_McSpiAddr - Addr 0
d.SdoWr(0x3962, 0x20, 500)                                     # MOTOR_ENC_INC2_Resolution_Cnt

print "Aktuelle SPI Encoder Position:", d.SdoRd(0x396A, 0x20)  # MOTOR_ENC_INC2_ActualPosition


3962.00h Encoderauflösung in Inkrementen

Name | MOTOR_ENC_Resolution
Bezeichnung | Encoderauflösung in Inkrementen
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [1 .. 60000]
Defaultwert | 2000
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | EncResolution(value), MotorEncResolution(value)
Querverweis | MOTOR_ENC_Resolution_lines

Beschreibung

Mit dem Parameter wird dem Antriebsregler die Auflösung des inkrementalen Encoders (Drehgebers) mitgeteilt. Die Angabe erfolgt in Pulsen pro Umdrehung.

Beispiel:
  • Beim Encoder mit einer Auflösung von 1024 „Strichen“ pro Umdrehung soll als MOTOR_ENC_Resolution ein Wert von 4*1024 = 4096 eingegeben werden.

Im Betriebsarten mit ENCODER-Rückführung (siehe: VEL_Feedback und SVEL_Feedback) wird dieser Parameter vom Drehzahl- bzw. Positionsregler verwendet, um eine Relation zwischen dem Drehzahlsollwert und der Drehzahl der Motorwelle zu bestimmen. In anderen Betriebsarten hat dieser Parameter keine Bedeutung.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

# Auflösung setzten
d.SdoWr(0x3962, 0x00, 2000)                           # MOTOR_ENC_Resolution
print "Encoder in Strichen : ", d.SdoRd(0x3963, 0x00) # MOTOR_ENC_Resolution_lines

# Überwachung aktivieren
d.SdoWr(0x3964, 0x00, 1)                              # MOTOR_ENC_Diag_Enable
status = d.SdoRd(0x3964, 0x01)                        # MOTOR_ENC_Diag_Status

if status == 0:
   print "inaktiv"
elif status == 1:
   print "aktiv, kein Error"
elif status == 3:
   print "aktiv, Error"
else:
   print "unbekannter Status"

# Ausgeben der Parameter
print "Encoderposition: ", d.SdoRd(0x396A, 0x00)      # MOTOR_ENC_ActualPosition
print "Indexposition: ", d.SdoRd(0x396B, 0x00)        # MOTOR_ENC_ActualIndexPosition
print "Indexpulse: ", d.SdoRd(0x396C, 0x00)           # MOTOR_ENC_ActualIndexCount


3962.20h mcSPI-IC2 Encoderauflösung in Inkrementen

Name | MOTOR_ENC_INC2_Resolution_Cnt
Bezeichnung | mcSPI-IC2 Encoderauflösung in Inkrementen
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [1 .. 60000]
Defaultwert | 2000
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.93.00.02
Geräte | ausgenommen: EDC-xx-EtherCat
PLC Funktion | -
Querverweis | MOTOR_ENC_INC2_ActualPosition, MOTOR_ENC_INC2_Config_McSpiAddr

Beschreibung

Mit dem Parameter wird dem Antriebsregler die Auflösung des inkrementalen mcSPI-IC2 Encoders (Drehgebers) mitgeteilt. Die Angabe erfolgt in Pulsen pro Umdrehung.

Beispiel:
  • Beim mcSPI-IC2 Encoder mit einer Auflösung von 1024 „Strichen“ pro Umdrehung soll als MOTOR_ENC_INC2_Resolution_Cnt ein Wert von 4*1024 = 4096 eingegeben werden.

Im Betriebsarten mit mcSPI-IC2 Encoder-Rückführung (siehe: VEL_Feedback und SVEL_Feedback) wird dieser Parameter vom Drehzahl- bzw. Positionsregler verwendet, um eine Relation zwischen dem Drehzahlsollwert und der Drehzahl der Motorwelle zu bestimmen. In anderen Betriebsarten hat dieser Parameter keine Bedeutung.


3963.00h Encoderauflösung in Encoderstrichen

Name | MOTOR_ENC_Resolution_lines
Bezeichnung | Encoderauflösung in Encoderstrichen
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [1 .. 60000]
Defaultwert | 500
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | EncResolution_lines(value)
Querverweis | MOTOR_ENC_Resolution

Beschreibung

Mit dem Parameter wird dem Antriebsregler die Auflösung des inkrementanalen Encoders (Drehgebers) mitgeteilt. Die Angabe erfolgt in Encoderstrichen pro eine Umdrehung.

Beispiel:
  • Beim Encoder mit einer Auflösung von 1024 „Strichen“ pro Umdrehung soll als MOTOR_ENC_Resolution_lines ein Wert von 1024 eingegeben werden.

Dieser Parameter ist als ein Alternativparameter zu MOTOR_ENC_Resolution zu sehen. Beide Parameter werden bei der Eingabe gegenseitig umgerechnet, und zwar nach folgender Formel:

MOTOR_ENC_Resolution = MOTOR_ENC_Resolution_lines * 4

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

# Auflösung setzten
d.SdoWr(0x3962, 0x00, 2000)                           # MOTOR_ENC_Resolution
print "Encoder in Strichen : ", d.SdoRd(0x3963, 0x00) # MOTOR_ENC_Resolution_lines

# Überwachung aktivieren
d.SdoWr(0x3964, 0x00, 1)                              # MOTOR_ENC_Diag_Enable
status = d.SdoRd(0x3964, 0x01)                        # MOTOR_ENC_Diag_Status

if status == 0:
   print "inaktiv"
elif status == 1:
   print "aktiv, kein Error"
elif status == 3:
   print "aktiv, Error"
else:
   print "unbekannter Status"

# Ausgeben der Parameter
print "Encoderposition: ", d.SdoRd(0x396A, 0x00)      # MOTOR_ENC_ActualPosition
print "Indexposition: ", d.SdoRd(0x396B, 0x00)        # MOTOR_ENC_ActualIndexPosition
print "Indexpulse: ", d.SdoRd(0x396C, 0x00)           # MOTOR_ENC_ActualIndexCount


3964.00h Encoderüberwachung - Aktivieren

Name | MOTOR_ENC_Diag_Enable
Bezeichnung | Encoderüberwachung - Aktivieren
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 1]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.50
Geräte | Alle
PLC Funktion | EncDiagEnable(value)
Querverweis | MOTOR_ENC_Diag_Status

Beschreibung

Mit Hilfe dieses Parameter kann die Encoderüberwachung aktiviert werden.

Es wird überprüft, ob bei jedem Puls eines Hallsensors auch die entsprechende Anzahl von Encoderpulsen gezählt wurde.
Fehlen mehr als 50% der erwarteten Encoderpulse wird ein Fehler (ERR_Enc_Failed = -1078) im Error Register (DEV_ErrorReg) ausgelöst.

Bitbelegung:
Bit | Name | Beschreibung
0 | MOTOR_ENC_Diag_Enable | 0 = deaktiviert, 1 = aktiviert

Hinweise
  • Diese Funktion gilt nur für bürstenlose Motoren und wenn
  • Drehzahl- (VEL_Feedback) und SVel-Rückführung (SVEL_Feedback) auf Encoder-Rückführung gesetzt wurden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

# Auflösung setzten
d.SdoWr(0x3962, 0x00, 2000)                           # MOTOR_ENC_Resolution
print "Encoder in Strichen : ", d.SdoRd(0x3963, 0x00) # MOTOR_ENC_Resolution_lines

# Überwachung aktivieren
d.SdoWr(0x3964, 0x00, 1)                              # MOTOR_ENC_Diag_Enable
status = d.SdoRd(0x3964, 0x01)                        # MOTOR_ENC_Diag_Status

if status == 0:
   print "inaktiv"
elif status == 1:
   print "aktiv, kein Error"
elif status == 3:
   print "aktiv, Error"
else:
   print "unbekannter Status"

# Ausgeben der Parameter
print "Encoderposition: ", d.SdoRd(0x396A, 0x00)      # MOTOR_ENC_ActualPosition
print "Indexposition: ", d.SdoRd(0x396B, 0x00)        # MOTOR_ENC_ActualIndexPosition
print "Indexpulse: ", d.SdoRd(0x396C, 0x00)           # MOTOR_ENC_ActualIndexCount


3964.01h Encoderüberwachung - Status

Name | MOTOR_ENC_Diag_Status
Bezeichnung | Encoderüberwachung - Status
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.50
Geräte | Alle
PLC Funktion | EncDiagStatus()
Querverweis | MOTOR_ENC_Diag_Enable

Beschreibung

Liefert den aktuellen Status der Encoderüberwachung zurück.

Für eine detailierte Funktionsbeschreibung siehe Parameter MOTOR_ENC_Diag_Enable.

Bitbelegung:
Bit | Name | Beschreibung
0 | MOTOR_ENC_Diag_Status_Enable | 0 = deaktiviert, 1 = aktiviert
1 | MOTOR_ENC_Diag_Status_Error | 0 = kein Fehler, 1 = Fehler

Hinweise
  • Diese Funktion gilt nur für bürstenlose Motoren und wenn
  • Drehzahl- (VEL_Feedback) und SVel-Rückführung (SVEL_Feedback) auf Encoder-Rückführung gesetzt wurden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

# Auflösung setzten
d.SdoWr(0x3962, 0x00, 2000)                           # MOTOR_ENC_Resolution
print "Encoder in Strichen : ", d.SdoRd(0x3963, 0x00) # MOTOR_ENC_Resolution_lines

# Überwachung aktivieren
d.SdoWr(0x3964, 0x00, 1)                              # MOTOR_ENC_Diag_Enable
status = d.SdoRd(0x3964, 0x01)                        # MOTOR_ENC_Diag_Status

if status == 0:
   print "inaktiv"
elif status == 1:
   print "aktiv, kein Error"
elif status == 3:
   print "aktiv, Error"
else:
   print "unbekannter Status"

# Ausgeben der Parameter
print "Encoderposition: ", d.SdoRd(0x396A, 0x00)      # MOTOR_ENC_ActualPosition
print "Indexposition: ", d.SdoRd(0x396B, 0x00)        # MOTOR_ENC_ActualIndexPosition
print "Indexpulse: ", d.SdoRd(0x396C, 0x00)           # MOTOR_ENC_ActualIndexCount


396A.00h Aktuelle Encoderposition

Name | MOTOR_ENC_ActualPosition
Bezeichnung | Aktuelle Encoderposition
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ActPosEnc(), EncActPos(value), ActEncPos(value)
Querverweis | -

Beschreibung

Über diesen Parameter kann die aktuelle Position, die über den Encoder gezählt wurde, abgefragt werden. Die Zahl der Pulse pro Umdrehung der Motorwelle hängt von der Auflösung des Encoders ab. Der Parameter MOTOR_ENC_Resolution hat keinen Einfluss auf die Zählung der Pulse. Die Encoderpulse werden intern vervierfacht. D.h. bei einem Encoder mit einer Strichzahl von Ne werden 4*Ne Pulse pro Umdrehung gezählt. Die Zählrichtung kann mit dem Parameter MOTOR_Polarity beeinflusst werden.

Npe = 4 * Ne

wobei: Npe - Anzahl der Pulse pro Umdrehung und Ne - Strichzahl des Encoders

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

# Auflösung setzten
d.SdoWr(0x3962, 0x00, 2000)                           # MOTOR_ENC_Resolution
print "Encoder in Strichen : ", d.SdoRd(0x3963, 0x00) # MOTOR_ENC_Resolution_lines

# Überwachung aktivieren
d.SdoWr(0x3964, 0x00, 1)                              # MOTOR_ENC_Diag_Enable
status = d.SdoRd(0x3964, 0x01)                        # MOTOR_ENC_Diag_Status

if status == 0:
   print "inaktiv"
elif status == 1:
   print "aktiv, kein Error"
elif status == 3:
   print "aktiv, Error"
else:
   print "unbekannter Status"

# Ausgeben der Parameter
print "Encoderposition: ", d.SdoRd(0x396A, 0x00)      # MOTOR_ENC_ActualPosition
print "Indexposition: ", d.SdoRd(0x396B, 0x00)        # MOTOR_ENC_ActualIndexPosition
print "Indexpulse: ", d.SdoRd(0x396C, 0x00)           # MOTOR_ENC_ActualIndexCount


396A.20h Aktuelle mcSPI-IC2 Encoderposition

Name | MOTOR_ENC_INC2_ActualPosition
Bezeichnung | Aktuelle mcSPI-IC2 Encoderposition
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.93.00.02
Geräte | ausgenommen: EDC-xx-EtherCat
PLC Funktion | -
Querverweis | MOTOR_ENC_INC2_Resolution_Cnt, MOTOR_ENC_INC2_Config_McSpiAddr

Beschreibung

Über diesen Parameter kann die aktuelle Position, die über den mcSPI-IC2 Encoder gezählt wurde, abgefragt werden. Die Zahl der Pulse pro Umdrehung der Motorwelle hängt von der Auflösung des mcSPI-IC2 Encoders ab. Der Parameter MOTOR_ENC_INC2_Resolution_Cnt hat keinen Einfluss auf die Zählung der Pulse. Die mcSPI-IC2 Encoderpulse werden intern vervierfacht. D.h. bei einem mcSPI-IC2 Encoder mit einer Strichzahl von Ne werden 4*Ne Pulse pro Umdrehung gezählt. Die Zählrichtung kann mit dem Parameter MOTOR_Polarity beeinflusst werden.

Npe = 4 * Ne

wobei: Npe - Anzahl der Pulse pro Umdrehung und Ne - Strichzahl des mcSPI-IC2 Encoders


396B.00h Aktuelle Encoder Indexposition

Name | MOTOR_ENC_ActualIndexPosition
Bezeichnung | Aktuelle Encoder Indexposition
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ActIndexPosEnc(), EncActIndexPos()
Querverweis | MOTOR_ENC_ActualIndexCount

Beschreibung

Dieser Parameter liefert eine aktuelle Position des Indexpulses vom Encoder zurück.
Bei einem Puls am Indexeingang des Antriebsreglers wird die aktuelle Encoderposition gespeichert. Dieser Wert kann dann mit diesem Parameter abgefragt werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

# Auflösung setzten
d.SdoWr(0x3962, 0x00, 2000)                           # MOTOR_ENC_Resolution
print "Encoder in Strichen : ", d.SdoRd(0x3963, 0x00) # MOTOR_ENC_Resolution_lines

# Überwachung aktivieren
d.SdoWr(0x3964, 0x00, 1)                              # MOTOR_ENC_Diag_Enable
status = d.SdoRd(0x3964, 0x01)                        # MOTOR_ENC_Diag_Status

if status == 0:
   print "inaktiv"
elif status == 1:
   print "aktiv, kein Error"
elif status == 3:
   print "aktiv, Error"
else:
   print "unbekannter Status"

# Ausgeben der Parameter
print "Encoderposition: ", d.SdoRd(0x396A, 0x00)      # MOTOR_ENC_ActualPosition
print "Indexposition: ", d.SdoRd(0x396B, 0x00)        # MOTOR_ENC_ActualIndexPosition
print "Indexpulse: ", d.SdoRd(0x396C, 0x00)           # MOTOR_ENC_ActualIndexCount


396C.00h Anzahl der Indexpulse vom Encoder

Name | MOTOR_ENC_ActualIndexCount
Bezeichnung | Anzahl der Indexpulse vom Encoder
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 65535]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | ActIndexCountEnc(value), EncActIndexCount(value)
Querverweis | MOTOR_ENC_ActualIndexPosition

Beschreibung

Mit dem Parameter kann die aktuelle Anzahl der Indexpulsen abgefragt werden. Dieser Wert kann durch Beschreiben dieses Parameters auf einen Anfangswert gesetzt werden.

Tipp:
  • Falls der Indexeingang des Antriebsreglers nicht für den Encoderindex verwendet wird, kann er als 5V Zählereingang verwendet werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                            # NodeId = 1

# Auflösung setzten
d.SdoWr(0x3962, 0x00, 2000)                           # MOTOR_ENC_Resolution
print "Encoder in Strichen : ", d.SdoRd(0x3963, 0x00) # MOTOR_ENC_Resolution_lines

# Überwachung aktivieren
d.SdoWr(0x3964, 0x00, 1)                              # MOTOR_ENC_Diag_Enable
status = d.SdoRd(0x3964, 0x01)                        # MOTOR_ENC_Diag_Status

if status == 0:
   print "inaktiv"
elif status == 1:
   print "aktiv, kein Error"
elif status == 3:
   print "aktiv, Error"
else:
   print "unbekannter Status"

# Ausgeben der Parameter
print "Encoderposition: ", d.SdoRd(0x396A, 0x00)      # MOTOR_ENC_ActualPosition
print "Indexposition: ", d.SdoRd(0x396B, 0x00)        # MOTOR_ENC_ActualIndexPosition
print "Indexpulse: ", d.SdoRd(0x396C, 0x00)           # MOTOR_ENC_ActualIndexCount


Inhalt - Parameter 3000h (DSA) - SSI Absolutencoder

3970.00h | MOTOR_ENC_SSI_Enable | SSI Absolutencoder - Freigabe
3970.01h | MOTOR_ENC_SSI_Status | SSI Absolutencoder - Status
3970.08h | MOTOR_ENC_SSI_Save | SSI Absolutencoder - Speichern
3971.00h | MOTOR_ENC_SSI_Code | SSI Absolutencoder - Code
3971.01h | MOTOR_ENC_SSI_SignificantBits | SSI Absolutencoder - Signifikante Bits
3971.02h | MOTOR_ENC_SSI_Bits | SSI Absolutencoder - Bits
3972.00h | MOTOR_ENC_SSI_Resolution | SSI Absolutencoder - Single Turn Auflösung in Inkrementen
397A.00h | MOTOR_ENC_SSI_ActualPosition | SSI Absolutencoder - Aktuelle Position (auf 32 Bit erweitert)
397A.02h | MOTOR_ENC_SSI_ActualSsiDirectPosition | SSI Absolutencoder - Direkte Position


3970.00h SSI Absolutencoder - Freigabe

Name | MOTOR_ENC_SSI_Enable
Bezeichnung | SSI Absolutencoder - Freigabe
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.01
Geräte | ausgenommen: EDC-xx-EtherCat
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter aktiviert den optionalen absoluten SSI-Encoder.

Parameterwerte:
Wert | Beschreibung
0 | SSI-Encoder deaktiviert
1 | SSI-Encoder aktiv

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

NodeId = 1

d = Dsa(NodeId)

d.SdoWr(0x3000, 0x00, 1)                            # DEV_Cmd - Fehler löschen
d.SdoWr(0x3004, 0x00, 0)                            # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 0x82)                         # DEV_Cmd - Default Parameter

# SSI Encoder: 25 Bit
d.SdoWr(0x3970, 0x00, 1)                            # MOTOR_ENC_SSI_Enable - SSI aktivieren
d.SdoWr(0x3971, 0x01, 25)                           # MOTOR_ENC_SSI_SignificantBits - SignificantBits
d.SdoWr(0x3971, 0x02, 25)                           # MOTOR_ENC_SSI_Bits - Bits
d.SdoWr(0x3972, 0x00, 4096)                         # MOTOR_ENC_SSI_Resolution - Resolution

d.SdoWr(0x3350, 0x00, 0x97A)                        # VEL_Feedback - Rückführung - SSI Encoder

if 1:
   d.SdoWr(0x3762, 0x00, 0)                         # POS_ActualPosition - Absolute Position setzen
   d.SdoWr(0x3970, 0x08, 0x65766173)                # MOTOR_ENC_SSI_Save - Absolute Position speichern (MSB..LSB == 'evas')

print "SsiDirectPos =", d.SdoRd(0x397A, 0x02)       # MOTOR_ENC_SSI_ActualSsiDirectPosition
print "ActPos       =", d.SdoRd(0x3762, 0x00)       # POS_ActualPosition
print "SsiActPos    =", d.SdoRd(0x397A, 0x00)       # MOTOR_ENC_SSI_ActualPosition
print "SsiStatus    =", hex(d.SdoRd(0x3970, 0x01))  # MOTOR_ENC_SSI_SignificantBits - Bit0=Active, Bit1=Error, Bit2=Reserviert, Bit3=PositionIsValid


3970.01h SSI Absolutencoder - Status

Name | MOTOR_ENC_SSI_Status
Bezeichnung | SSI Absolutencoder - Status
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.77.00.40
Geräte | ausgenommen: EDC-xx-EtherCat
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter liefert den Status des absoluten SSI-Encoders zurück.

Bedeutung der Bits:
Bit | Beschreibung
0 | SSI-Encoder ist aktiv
1 | Fehler (z.B. Kontrollsumme der gespeicherten Daten ist falsch)
2 | Reserviert (der Wert ist unbestimmt)
3 | Die Werte der Parameter MOTOR_ENC_SSI_ActualPosition und MOTOR_ENC_SSI_ActualSsiDirectPosition stimmen überein.
[4..7] | Reserviert (der Wert ist unbestimmt)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

NodeId = 1

d = Dsa(NodeId)

d.SdoWr(0x3000, 0x00, 1)                            # DEV_Cmd - Fehler löschen
d.SdoWr(0x3004, 0x00, 0)                            # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 0x82)                         # DEV_Cmd - Default Parameter

# SSI Encoder: 25 Bit
d.SdoWr(0x3970, 0x00, 1)                            # MOTOR_ENC_SSI_Enable - SSI aktivieren
d.SdoWr(0x3971, 0x01, 25)                           # MOTOR_ENC_SSI_SignificantBits - SignificantBits
d.SdoWr(0x3971, 0x02, 25)                           # MOTOR_ENC_SSI_Bits - Bits
d.SdoWr(0x3972, 0x00, 4096)                         # MOTOR_ENC_SSI_Resolution - Resolution

d.SdoWr(0x3350, 0x00, 0x97A)                        # VEL_Feedback - Rückführung - SSI Encoder

if 1:
   d.SdoWr(0x3762, 0x00, 0)                         # POS_ActualPosition - Absolute Position setzen
   d.SdoWr(0x3970, 0x08, 0x65766173)                # MOTOR_ENC_SSI_Save - Absolute Position speichern (MSB..LSB == 'evas')

print "SsiDirectPos =", d.SdoRd(0x397A, 0x02)       # MOTOR_ENC_SSI_ActualSsiDirectPosition
print "ActPos       =", d.SdoRd(0x3762, 0x00)       # POS_ActualPosition
print "SsiActPos    =", d.SdoRd(0x397A, 0x00)       # MOTOR_ENC_SSI_ActualPosition
print "SsiStatus    =", hex(d.SdoRd(0x3970, 0x01))  # MOTOR_ENC_SSI_SignificantBits - Bit0=Active, Bit1=Error, Bit2=Reserviert, Bit3=PositionIsValid


3970.08h SSI Absolutencoder - Speichern

Name | MOTOR_ENC_SSI_Save
Bezeichnung | SSI Absolutencoder - Speichern
Datentyp | uint32
Zugriff | nur Schreiben
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.77.00.33
Geräte | ausgenommen: EDC-xx-EtherCat
PLC Funktion | -
Querverweis | -

Beschreibung

Über diesen Parameter kann die gesetzte absolute Position im Gerät gespeichert werden.

Parameterwerte:
Wert | Beschreibung
0x65766173 | Position speichern
restliche | keine Aktion

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

NodeId = 1

d = Dsa(NodeId)

d.SdoWr(0x3000, 0x00, 1)                            # DEV_Cmd - Fehler löschen
d.SdoWr(0x3004, 0x00, 0)                            # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 0x82)                         # DEV_Cmd - Default Parameter

# SSI Encoder: 25 Bit
d.SdoWr(0x3970, 0x00, 1)                            # MOTOR_ENC_SSI_Enable - SSI aktivieren
d.SdoWr(0x3971, 0x01, 25)                           # MOTOR_ENC_SSI_SignificantBits - SignificantBits
d.SdoWr(0x3971, 0x02, 25)                           # MOTOR_ENC_SSI_Bits - Bits
d.SdoWr(0x3972, 0x00, 4096)                         # MOTOR_ENC_SSI_Resolution - Resolution

d.SdoWr(0x3350, 0x00, 0x97A)                        # VEL_Feedback - Rückführung - SSI Encoder

if 1:
   d.SdoWr(0x3762, 0x00, 0)                         # POS_ActualPosition - Absolute Position setzen
   d.SdoWr(0x3970, 0x08, 0x65766173)                # MOTOR_ENC_SSI_Save - Absolute Position speichern (MSB..LSB == 'evas')

print "SsiDirectPos =", d.SdoRd(0x397A, 0x02)       # MOTOR_ENC_SSI_ActualSsiDirectPosition
print "ActPos       =", d.SdoRd(0x3762, 0x00)       # POS_ActualPosition
print "SsiActPos    =", d.SdoRd(0x397A, 0x00)       # MOTOR_ENC_SSI_ActualPosition
print "SsiStatus    =", hex(d.SdoRd(0x3970, 0x01))  # MOTOR_ENC_SSI_SignificantBits - Bit0=Active, Bit1=Error, Bit2=Reserviert, Bit3=PositionIsValid


3971.00h SSI Absolutencoder - Code

Name | MOTOR_ENC_SSI_Code
Bezeichnung | SSI Absolutencoder - Code
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | {0}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.01
Geräte | ausgenommen: EDC-xx-EtherCat
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter liefert das Format der Daten, die über die SSI-Schnittstelle übertragen werden.

Parameterwerte:
Wert | Beschreibung
0 | Gray-Code

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

NodeId = 1

d = Dsa(NodeId)

d.SdoWr(0x3000, 0x00, 1)                            # DEV_Cmd - Fehler löschen
d.SdoWr(0x3004, 0x00, 0)                            # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 0x82)                         # DEV_Cmd - Default Parameter

# SSI Encoder: 25 Bit
d.SdoWr(0x3970, 0x00, 1)                            # MOTOR_ENC_SSI_Enable - SSI aktivieren
d.SdoWr(0x3971, 0x01, 25)                           # MOTOR_ENC_SSI_SignificantBits - SignificantBits
d.SdoWr(0x3971, 0x02, 25)                           # MOTOR_ENC_SSI_Bits - Bits
d.SdoWr(0x3972, 0x00, 4096)                         # MOTOR_ENC_SSI_Resolution - Resolution

d.SdoWr(0x3350, 0x00, 0x97A)                        # VEL_Feedback - Rückführung - SSI Encoder

if 1:
   d.SdoWr(0x3762, 0x00, 0)                         # POS_ActualPosition - Absolute Position setzen
   d.SdoWr(0x3970, 0x08, 0x65766173)                # MOTOR_ENC_SSI_Save - Absolute Position speichern (MSB..LSB == 'evas')

print "SsiDirectPos =", d.SdoRd(0x397A, 0x02)       # MOTOR_ENC_SSI_ActualSsiDirectPosition
print "ActPos       =", d.SdoRd(0x3762, 0x00)       # POS_ActualPosition
print "SsiActPos    =", d.SdoRd(0x397A, 0x00)       # MOTOR_ENC_SSI_ActualPosition
print "SsiStatus    =", hex(d.SdoRd(0x3970, 0x01))  # MOTOR_ENC_SSI_SignificantBits - Bit0=Active, Bit1=Error, Bit2=Reserviert, Bit3=PositionIsValid


3971.01h SSI Absolutencoder - Signifikante Bits

Name | MOTOR_ENC_SSI_SignificantBits
Bezeichnung | SSI Absolutencoder - Signifikante Bits
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [8 .. 32]
Defaultwert | 25
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.01
Geräte | ausgenommen: EDC-xx-EtherCat
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter definiert die Anzahl der signifikanten Bits in der SSI-Nachricht.
Die gesamte Anzahl der Bits in der Nachricht definiert der Parameter MOTOR_ENC_SSI_Bits.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

NodeId = 1

d = Dsa(NodeId)

d.SdoWr(0x3000, 0x00, 1)                            # DEV_Cmd - Fehler löschen
d.SdoWr(0x3004, 0x00, 0)                            # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 0x82)                         # DEV_Cmd - Default Parameter

# SSI Encoder: 25 Bit
d.SdoWr(0x3970, 0x00, 1)                            # MOTOR_ENC_SSI_Enable - SSI aktivieren
d.SdoWr(0x3971, 0x01, 25)                           # MOTOR_ENC_SSI_SignificantBits - SignificantBits
d.SdoWr(0x3971, 0x02, 25)                           # MOTOR_ENC_SSI_Bits - Bits
d.SdoWr(0x3972, 0x00, 4096)                         # MOTOR_ENC_SSI_Resolution - Resolution

d.SdoWr(0x3350, 0x00, 0x97A)                        # VEL_Feedback - Rückführung - SSI Encoder

if 1:
   d.SdoWr(0x3762, 0x00, 0)                         # POS_ActualPosition - Absolute Position setzen
   d.SdoWr(0x3970, 0x08, 0x65766173)                # MOTOR_ENC_SSI_Save - Absolute Position speichern (MSB..LSB == 'evas')

print "SsiDirectPos =", d.SdoRd(0x397A, 0x02)       # MOTOR_ENC_SSI_ActualSsiDirectPosition
print "ActPos       =", d.SdoRd(0x3762, 0x00)       # POS_ActualPosition
print "SsiActPos    =", d.SdoRd(0x397A, 0x00)       # MOTOR_ENC_SSI_ActualPosition
print "SsiStatus    =", hex(d.SdoRd(0x3970, 0x01))  # MOTOR_ENC_SSI_SignificantBits - Bit0=Active, Bit1=Error, Bit2=Reserviert, Bit3=PositionIsValid


3971.02h SSI Absolutencoder - Bits

Name | MOTOR_ENC_SSI_Bits
Bezeichnung | SSI Absolutencoder - Bits
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [8 .. 32]
Defaultwert | 25
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.64.00.01
Geräte | ausgenommen: EDC-xx-EtherCat
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter definiert die gesamte Anzahl der Bits in der SSI-Nachricht.
Die Anzahl der signifikanten Bits definiert der Parameter MOTOR_ENC_SSI_SignificantBits.

Notiz
Dieser Parameter hatte bis Firmwareversion 1.85.03.46 den Zugriff "nur Lesen".

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

NodeId = 1

d = Dsa(NodeId)

d.SdoWr(0x3000, 0x00, 1)                            # DEV_Cmd - Fehler löschen
d.SdoWr(0x3004, 0x00, 0)                            # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 0x82)                         # DEV_Cmd - Default Parameter

# SSI Encoder: 25 Bit
d.SdoWr(0x3970, 0x00, 1)                            # MOTOR_ENC_SSI_Enable - SSI aktivieren
d.SdoWr(0x3971, 0x01, 25)                           # MOTOR_ENC_SSI_SignificantBits - SignificantBits
d.SdoWr(0x3971, 0x02, 25)                           # MOTOR_ENC_SSI_Bits - Bits
d.SdoWr(0x3972, 0x00, 4096)                         # MOTOR_ENC_SSI_Resolution - Resolution

d.SdoWr(0x3350, 0x00, 0x97A)                        # VEL_Feedback - Rückführung - SSI Encoder

if 1:
   d.SdoWr(0x3762, 0x00, 0)                         # POS_ActualPosition - Absolute Position setzen
   d.SdoWr(0x3970, 0x08, 0x65766173)                # MOTOR_ENC_SSI_Save - Absolute Position speichern (MSB..LSB == 'evas')

print "SsiDirectPos =", d.SdoRd(0x397A, 0x02)       # MOTOR_ENC_SSI_ActualSsiDirectPosition
print "ActPos       =", d.SdoRd(0x3762, 0x00)       # POS_ActualPosition
print "SsiActPos    =", d.SdoRd(0x397A, 0x00)       # MOTOR_ENC_SSI_ActualPosition
print "SsiStatus    =", hex(d.SdoRd(0x3970, 0x01))  # MOTOR_ENC_SSI_SignificantBits - Bit0=Active, Bit1=Error, Bit2=Reserviert, Bit3=PositionIsValid


3972.00h SSI Absolutencoder - Single Turn Auflösung in Inkrementen

Name | MOTOR_ENC_SSI_Resolution
Bezeichnung | SSI Absolutencoder - Single Turn Auflösung in Inkrementen
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [1 .. 60000]
Defaultwert | 8192
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.85.00.35
Geräte | ausgenommen: EDC-xx-EtherCat
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter definiert die Auflösung (in Pulsen pro eine Umdrehung) des Absolutencoders.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

NodeId = 1

d = Dsa(NodeId)

d.SdoWr(0x3000, 0x00, 1)                            # DEV_Cmd - Fehler löschen
d.SdoWr(0x3004, 0x00, 0)                            # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 0x82)                         # DEV_Cmd - Default Parameter

# SSI Encoder: 25 Bit
d.SdoWr(0x3970, 0x00, 1)                            # MOTOR_ENC_SSI_Enable - SSI aktivieren
d.SdoWr(0x3971, 0x01, 25)                           # MOTOR_ENC_SSI_SignificantBits - SignificantBits
d.SdoWr(0x3971, 0x02, 25)                           # MOTOR_ENC_SSI_Bits - Bits
d.SdoWr(0x3972, 0x00, 4096)                         # MOTOR_ENC_SSI_Resolution - Resolution

d.SdoWr(0x3350, 0x00, 0x97A)                        # VEL_Feedback - Rückführung - SSI Encoder

if 1:
   d.SdoWr(0x3762, 0x00, 0)                         # POS_ActualPosition - Absolute Position setzen
   d.SdoWr(0x3970, 0x08, 0x65766173)                # MOTOR_ENC_SSI_Save - Absolute Position speichern (MSB..LSB == 'evas')

print "SsiDirectPos =", d.SdoRd(0x397A, 0x02)       # MOTOR_ENC_SSI_ActualSsiDirectPosition
print "ActPos       =", d.SdoRd(0x3762, 0x00)       # POS_ActualPosition
print "SsiActPos    =", d.SdoRd(0x397A, 0x00)       # MOTOR_ENC_SSI_ActualPosition
print "SsiStatus    =", hex(d.SdoRd(0x3970, 0x01))  # MOTOR_ENC_SSI_SignificantBits - Bit0=Active, Bit1=Error, Bit2=Reserviert, Bit3=PositionIsValid


397A.00h SSI Absolutencoder - Aktuelle Position (auf 32 Bit erweitert)

Name | MOTOR_ENC_SSI_ActualPosition
Bezeichnung | SSI Absolutencoder - Aktuelle Position (auf 32 Bit erweitert)
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.64.00.01
Geräte | ausgenommen: EDC-xx-EtherCat
PLC Funktion | -
Querverweis | MOTOR_ENC_SSI_ActualSsiDirectPosition

Beschreibung

Über diesen Parameter kann die aktuelle absolute Position, die vom SSI-Encoder gezählt wurde, abgefragt werden.
Die Anzahl der Pulse pro Umdrehung der Motorwelle hängt von der Auflösung des Encoders ab.
Dieser Parameter liefert eine auf 32 Bit erweiterte Position.
Hat der SSi-Encoder einen kleineren Positionsbereich als 32 Bit, so wird hier die Position ohne Unter- bzw. Überlauf weiter gezählt. Im Fall eines Unter- bzw. Überlaufs des SSI-Encoders stimmt die Position vom Encoder (MOTOR_ENC_SSI_ActualSsiDirectPosition) mit dem Wert dieses Parameters nicht überein. Der Unter- bzw. Überlauf wird also erkannt und im StatusRegister (MOTOR_ENC_SSI_Status) durch Setzen des Bits 3 auf Null angezeigt.

ACHTUNG

Im Fall des Unter- bzw. Überlaufs der Position des SSI-Encoders geht die absolute Position nach dem Ausschalten des Gerätes verloren. Dieser Fall muss durch die übergeordnete Applikation erkannt und gesondert behandelt werden.

Vorgehensweise beim Setzen der absoluten Position

  1. Parameter MOTOR_ENC_SSI_ActualPosition auf gewünschten Wert setzen.
  2. Gesetzte Position, durch Beschreiben des Parameters MOTOR_ENC_SSI_Save mit dem Wert 0x65766173, im Gerät speichern.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

NodeId = 1

d = Dsa(NodeId)

d.SdoWr(0x3000, 0x00, 1)                            # DEV_Cmd - Fehler löschen
d.SdoWr(0x3004, 0x00, 0)                            # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 0x82)                         # DEV_Cmd - Default Parameter

# SSI Encoder: 25 Bit
d.SdoWr(0x3970, 0x00, 1)                            # MOTOR_ENC_SSI_Enable - SSI aktivieren
d.SdoWr(0x3971, 0x01, 25)                           # MOTOR_ENC_SSI_SignificantBits - SignificantBits
d.SdoWr(0x3971, 0x02, 25)                           # MOTOR_ENC_SSI_Bits - Bits
d.SdoWr(0x3972, 0x00, 4096)                         # MOTOR_ENC_SSI_Resolution - Resolution

d.SdoWr(0x3350, 0x00, 0x97A)                        # VEL_Feedback - Rückführung - SSI Encoder

if 1:
   d.SdoWr(0x3762, 0x00, 0)                         # POS_ActualPosition - Absolute Position setzen
   d.SdoWr(0x3970, 0x08, 0x65766173)                # MOTOR_ENC_SSI_Save - Absolute Position speichern (MSB..LSB == 'evas')

print "SsiDirectPos =", d.SdoRd(0x397A, 0x02)       # MOTOR_ENC_SSI_ActualSsiDirectPosition
print "ActPos       =", d.SdoRd(0x3762, 0x00)       # POS_ActualPosition
print "SsiActPos    =", d.SdoRd(0x397A, 0x00)       # MOTOR_ENC_SSI_ActualPosition
print "SsiStatus    =", hex(d.SdoRd(0x3970, 0x01))  # MOTOR_ENC_SSI_SignificantBits - Bit0=Active, Bit1=Error, Bit2=Reserviert, Bit3=PositionIsValid


397A.02h SSI Absolutencoder - Direkte Position

Name | MOTOR_ENC_SSI_ActualSsiDirectPosition
Bezeichnung | SSI Absolutencoder - Direkte Position
Datentyp | int32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.85.00.17
Geräte | ausgenommen: EDC-xx-EtherCat
PLC Funktion | -
Querverweis | MOTOR_ENC_SSI_ActualPosition

Beschreibung

Dieser Parameter liefert die aktuelle absolute Position direkt vom SSI-Encoder zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

NodeId = 1

d = Dsa(NodeId)

d.SdoWr(0x3000, 0x00, 1)                            # DEV_Cmd - Fehler löschen
d.SdoWr(0x3004, 0x00, 0)                            # DEV_Enable - Endstufe sperren
d.SdoWr(0x3000, 0x00, 0x82)                         # DEV_Cmd - Default Parameter

# SSI Encoder: 25 Bit
d.SdoWr(0x3970, 0x00, 1)                            # MOTOR_ENC_SSI_Enable - SSI aktivieren
d.SdoWr(0x3971, 0x01, 25)                           # MOTOR_ENC_SSI_SignificantBits - SignificantBits
d.SdoWr(0x3971, 0x02, 25)                           # MOTOR_ENC_SSI_Bits - Bits
d.SdoWr(0x3972, 0x00, 4096)                         # MOTOR_ENC_SSI_Resolution - Resolution

d.SdoWr(0x3350, 0x00, 0x97A)                        # VEL_Feedback - Rückführung - SSI Encoder

if 1:
   d.SdoWr(0x3762, 0x00, 0)                         # POS_ActualPosition - Absolute Position setzen
   d.SdoWr(0x3970, 0x08, 0x65766173)                # MOTOR_ENC_SSI_Save - Absolute Position speichern (MSB..LSB == 'evas')

print "SsiDirectPos =", d.SdoRd(0x397A, 0x02)       # MOTOR_ENC_SSI_ActualSsiDirectPosition
print "ActPos       =", d.SdoRd(0x3762, 0x00)       # POS_ActualPosition
print "SsiActPos    =", d.SdoRd(0x397A, 0x00)       # MOTOR_ENC_SSI_ActualPosition
print "SsiStatus    =", hex(d.SdoRd(0x3970, 0x01))  # MOTOR_ENC_SSI_SignificantBits - Bit0=Active, Bit1=Error, Bit2=Reserviert, Bit3=PositionIsValid


Inhalt - Parameter 3000h (DSA) - HALL Encoder

398F.00h | HENC_Cmd | HALL Encoder - Kommando
398F.08h | HENC_ReferencePos | HALL Encoder - Referenz Position
398F.0Ah | HENC_Hysteresis | HALL Encoder - Hysterese


398F.00h HALL Encoder - Kommando

Name | HENC_Cmd
Bezeichnung | HALL Encoder - Kommando
Datentyp | uint32
Zugriff | nur Schreiben
Attribute | Veränderbar nur im gesperrten Zustand
Wertbereich | {0x0, 0x1, 0x2, 0x80, 0x6E657277}
Defaultwert | 0x0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.56
Geräte | ausschließlich: EDC-xx-SinCos, EDC-xx-Henc
PLC Funktion | -
Querverweis | HENC_ReferencePos, HENC_Hysteresis

Beschreibung

Mit diesem Parameter können Kommandos an den Hall Encoder Chip des Reglers gesendet werden.

Mögliche Kommandos:
Kommando | Verhalten
1 | Löscht alle Fehler im Hall Encoder Chip
2 | Aktiviert den Hall Encoder Chip.
3 | Deaktiviert den Hall Encoder Chip.
0x80 | Speichert die gesetzen Parameter im Hall Encoder Chip
0x6E652777 | Schreibfreigabe

* Dieser Parameter ist nur für Sin/Cos oder Magnet Encoder-Chip Geräte notwendig.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

d.SdoWr(0x398F, 0x00, 0x6E657277)                           # Schreibfreigabe
d.SdoWr(0x398F, 0x00, 1)                                    # Fehler löschen (even fatal)
d.SdoWr(0x398F, 0x00, 2)                                    # EncoderChip Aktivieren

d.SdoWr(0x398F, 0x08, 661)                                  # Kommutierungs-Referenz Position
d.SdoWr(0x398F, 0x0A, 5)                                    # Kommutierungs-Hysterese

d.SdoWr(0x398F, 0x00, 0x80)                                 # Speichern

d.SdoWr(0x398F, 0x00, 3)                                    # EncoderChip Deaktivieren
d.SdoWr(0x398F, 0x00, 2)                                    # EncoderChip Aktivieren


398F.08h HALL Encoder - Referenz Position

Name | HENC_ReferencePos
Bezeichnung | HALL Encoder - Referenz Position
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | -
Defaultwert | 0
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.89.00.56
Geräte | ausschließlich: EDC-xx-SinCos, EDC-xx-Henc
PLC Funktion | -
Querverweis | HENC_Cmd, HENC_Hysteresis

Beschreibung

Mit diesem Parameter kann die Referenzposition des Hall Encoders festgelegt werden. Die Referenzposition gibt an, an welcher Stelle der Regler die Kommutierung durchführen muss.
Der Parameter kann nur beschrieben werden, wenn vorher eine Schreibfreigabe geben wurde(siehe HENC_Cmd).

Die Eingabe eines ungeeigneten Wertes kann zu ungeregeltem Verhalten führen.

Ungeregeltes Verhalten kann zu Gefahr für Mensch und Maschine führen.

* Dieser Parameter ist nur für Sin/Cos oder Magnet Encoder-Chip Geräte notwendig.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

d.SdoWr(0x398F, 0x00, 0x6E657277)                           # Schreibfreigabe
d.SdoWr(0x398F, 0x00, 1)                                    # Fehler löschen (even fatal)
d.SdoWr(0x398F, 0x00, 2)                                    # EncoderChip Aktivieren

d.SdoWr(0x398F, 0x08, 661)                                  # Kommutierungs-Referenz Position
d.SdoWr(0x398F, 0x0A, 5)                                    # Kommutierungs-Hysterese

d.SdoWr(0x398F, 0x00, 0x80)                                 # Speichern

d.SdoWr(0x398F, 0x00, 3)                                    # EncoderChip Deaktivieren
d.SdoWr(0x398F, 0x00, 2)                                    # EncoderChip Aktivieren


398F.0Ah HALL Encoder - Hysterese

Name | HENC_Hysteresis
Bezeichnung | HALL Encoder - Hysterese
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Passwortgeschützt
Wertbereich | -
Defaultwert | 0
Einheit | [%]
Betriebsart | Alle
Verfügbar ab | 1.89.00.56
Geräte | ausschließlich: EDC-xx-SinCos, EDC-xx-Henc
PLC Funktion | -
Querverweis | HENC_Cmd, HENC_ReferencePos

Beschreibung

Mit diesem Parameter kann die Kommutierungshysterese des Hall Encoders festgelegt werden. Die Hysterese vermeidet ein ständiges kommutieren, wenn der Antrieb genau auf dem Kommutierungspunkt steht.
Der Parameter kann nur beschrieben werden, wenn vorher eine Schreibfreigabe geben wurde(siehe HENC_Cmd).

* Dieser Parameter ist nur für Sin/Cos oder Magnet Encoder-Chip Geräte notwendig.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

d.SdoWr(0x398F, 0x00, 0x6E657277)                           # Schreibfreigabe
d.SdoWr(0x398F, 0x00, 1)                                    # Fehler löschen (even fatal)
d.SdoWr(0x398F, 0x00, 2)                                    # EncoderChip Aktivieren

d.SdoWr(0x398F, 0x08, 661)                                  # Kommutierungs-Referenz Position
d.SdoWr(0x398F, 0x0A, 5)                                    # Kommutierungs-Hysterese

d.SdoWr(0x398F, 0x00, 0x80)                                 # Speichern

d.SdoWr(0x398F, 0x00, 3)                                    # EncoderChip Deaktivieren
d.SdoWr(0x398F, 0x00, 2)                                    # EncoderChip Aktivieren


Inhalt - Parameter 3000h (DSA) - Virtueller Encoder

3990.08h | MOTOR_ENC_VIRT0_RawPosBits | Virtueller Encoder 0 - Bits
3990.10h | MOTOR_ENC_VIRT0_RawPos | Virtueller Encoder 0 - Raw Position
3990.11h | MOTOR_ENC_VIRT0_RawIndexPos | Virtueller Encoder 0 - Raw Index Position
3990.20h | MOTOR_ENC_VIRT0_Resolution_Cnt | Virtueller Encoder 0 - Auflösung in Inkrementen
3990.A0h | MOTOR_ENC_VIRT0_ActualPosition | Virtueller Encoder 0 - Aktuelle Position
3990.B0h | MOTOR_ENC_VIRT0_ActualIndexPosition | Virtueller Encoder 0 - Aktuelle Index Position
3990.C0h | MOTOR_ENC_VIRT0_ActualIndexCount | Virtueller Encoder 0 - Index Zähler
3991.08h | MOTOR_ENC_VIRT1_RawPosBits | Virtueller Encoder 1 - Bits
3991.10h | MOTOR_ENC_VIRT1_RawPos | Virtueller Encoder 1 - Raw Position
3991.11h | MOTOR_ENC_VIRT1_RawIndexPos | Virtueller Encoder 1 - Raw Index Position
3991.20h | MOTOR_ENC_VIRT1_Resolution_Cnt | Virtueller Encoder 1 - Auflösung in Inkrementen
3991.A0h | MOTOR_ENC_VIRT1_ActualPosition | Virtueller Encoder 1 - Aktuelle Position
3991.B0h | MOTOR_ENC_VIRT1_ActualIndexPosition | Virtueller Encoder 1 - Aktuelle Index Position
3991.C0h | MOTOR_ENC_VIRT1_ActualIndexCount | Virtueller Encoder 1 - Index Zähler


3990.08h Virtueller Encoder 0 - Bits

Name | MOTOR_ENC_VIRT0_RawPosBits
Bezeichnung | Virtueller Encoder 0 - Bits
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 32]
Defaultwert | 32
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.47
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_ENC_VIRT0_Resolution_Cnt

Beschreibung

Dieser Parameter definiert die gesamte Anzahl der Bits der virtuellen Encoderposition.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa
import time

d_master = Dsa(2)
d_slave  = Dsa(1)

def InitPars (d):
   d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Sperren
   d.SdoWr(0x3000, 0x00, 1)           # DEV_Cmd - Fehler löschen
   d.SdoWr(0x3000, 0x00, 0x82)        # DEV_Cmd - Defaultparameter

   d.SdoWr(0x3900, 0x00, 1)           # MOTOR_Type
   d.SdoWr(0x3911, 0x00, 0)           # MOTOR_Polarity

   d.SdoWr(0x3910, 0x00, 10)          # MOTOR_PolN
   d.SdoWr(0x3962, 0x00, 2000)        # MOTOR_ENC_Resolution

   d.SdoWr(0x3901, 0x00, 3000)        # MOTOR_Nn
   d.SdoWr(0x3902, 0x00, 24000)       # MOTOR_Un

   d.SdoWr(0x3350, 0x00, 2410)        # VEL_Feedback
   d.SdoWr(0x3550, 0x00, 2410)        # SVEL_Feedback

   d.SdoWr(0x3221, 0x00, 2000)        # CURR_LimitMaxPos
   d.SdoWr(0x3223, 0x00, 2000)        # CURR_LimitMaxNeg

   d.SdoWr(0x3210, 0x00, 51)          # CURR_Kp
   d.SdoWr(0x3211, 0x00, 54)          # CURR_Ki

   d.SdoWr(0x3310, 0x00, 200)         # VEL_Kp
   d.SdoWr(0x3311, 0x00, 10)          # VEL_Ki
   d.SdoWr(0x3314, 0x00, 1000)        # VEL_Kvff

   d.SdoWr(0x3341, 0x00, 500)         # VEL_Acc_dT
   d.SdoWr(0x3343, 0x00, 500)         # VEL_Dec_dT

   d.SdoWr(0x3510, 0x00, 205)         # SVEL_Kp
   d.SdoWr(0x3511, 0x00, 108)         # SVEL_Ki

InitPars(d_master)
InitPars(d_slave)

# Virtueller Encoder Init
d_slave.SdoWr(0x3350, 0x00, 0x990)                                       # VEL_FeedbackEncoderfeedback Positionierregler auf virtuellen Encoder einstellen (Wert kommt über PDO)
d_slave.SdoWr(0x3990, 0x08, 25)                                      # MOTOR_ENC_VIRT0_RawPosBits Externer Encoder Auflösung 25bit
d_slave.SdoWr(0x3990, 0x20, 2000)                                    # MOTOR_ENC_VIRT0_Resolution_Cnt Externer Encoder Auflösung pro Umdrehung

# Rx-Pdo Mapping
d_slave.SdoWr(0x1600, 0, 0)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1600, 1, 0x39901020)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 1: Virtuell-Encoder Raw position MOTOR_ENC_VIRT0_RawPos
d_slave.SdoWr(0x1600, 2, 0x39901120)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 2: Virtuell-Encoder Raw Index position MOTOR_ENC_VIRT0_RawIndexPos
d_slave.SdoWr(0x1600, 0, 2)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1400, 1, 0x182)                                      # COP_RxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Tx-Pdo Mapping
d_master.SdoWr(0x1A00, 0, 0)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1A00, 1, 0x396A0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 1: Aktuelle Encoderposition MOTOR_ENC_ActualPosition
d_master.SdoWr(0x1A00, 1, 0x396B0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 2: Aktuelle Indexposition MOTOR_ENC_ActualIndexPosition
d_master.SdoWr(0x1A00, 0, 2)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1800, 0x03, 100)                                    # COP_TxPDO1_CommunicationParameter_InhibitTime Inhibt-Time 10 ms
d_master.SdoWr(0x1800, 1, 0x182)                                     # COP_TxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Init Betriebsart
d_master.SdoWr(0x3004, 0x00, 0)                                      # DEV_Enable
d_master.SdoWr(0x3003, 0x00, 7)                                      # DEV_Mode
d_master.SdoWr(0x3004, 0x00, 1)                                      # DEV_Enable

mc.Can.PdoWr(0, [1, 0])                                              # NMT Protocol - Alle Geräte in Operational schalten

d_master.SdoWr(0x3000, 0x11, 300000)                                 # DEV_CmdData1
d_master.SdoWr(0x3000, 0x10, 2500)                                   # DEV_CmdData0
d_master.SdoWr(0x3000, 0x01, 0)                                      # DEV_Cmd
d_master.SdoWr(0x3000, 0x01, 0x34)                                   # DEV_Cmd

while 1:
   stat = d_master.SdoRd(0x3002, 0x00)                               # DEV_Status
   if (stat & 0x10) == 0x10:                                         # Wenn Position Reached
      print "Encoder-Master    :%d" % d_master.SdoRd(0x396A, 0x00)   # MOTOR_ENC_ActualPosition
      print "Index-Master      :%d" % d_master.SdoRd(0x396B, 0x00)   # MOTOR_ENC_ActualIndexPosition
      print "Encoder-Slave     :%d"% d_slave.SdoRd(0x3990, 0xA0)     # MOTOR_ENC_VIRT0_ActualPosition
      print "Index-Slave       :%d"% d_slave.SdoRd(0x3990, 0xB0)     # MOTOR_ENC_VIRT0_ActualIndexPosition
      print "Index-Cnt-Slave   :%d"% d_slave.SdoRd(0x3990, 0xC0)     # MOTOR_ENC_VIRT0_ActualIndexCount
      print "Encoder-Slave-Raw :%d"% d_slave.SdoRd(0x3990, 0x10)     # MOTOR_ENC_VIRT0_RawPos
      print "Index-Slave-Raw   :%d"% d_slave.SdoRd(0x3990, 0x11)     # MOTOR_ENC_VIRT0_RawIndexPos
      break


3990.10h Virtueller Encoder 0 - Raw Position

Name | MOTOR_ENC_VIRT0_RawPos
Bezeichnung | Virtueller Encoder 0 - Raw Position
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.93.00.20
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter dient dazu, die Raw-Position des virtuellen Encoders zu lesen. D.h. wird ein virtueller Encoder über beispielsweise CAN-Bus an den Regler angeschlossen, so sollte dieser seine Position in diesen Parameter schreiben. Der Parameter erkennt keinen Überlauf.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa
import time

d_master = Dsa(2)
d_slave  = Dsa(1)

def InitPars (d):
   d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Sperren
   d.SdoWr(0x3000, 0x00, 1)           # DEV_Cmd - Fehler löschen
   d.SdoWr(0x3000, 0x00, 0x82)        # DEV_Cmd - Defaultparameter

   d.SdoWr(0x3900, 0x00, 1)           # MOTOR_Type
   d.SdoWr(0x3911, 0x00, 0)           # MOTOR_Polarity

   d.SdoWr(0x3910, 0x00, 10)          # MOTOR_PolN
   d.SdoWr(0x3962, 0x00, 2000)        # MOTOR_ENC_Resolution

   d.SdoWr(0x3901, 0x00, 3000)        # MOTOR_Nn
   d.SdoWr(0x3902, 0x00, 24000)       # MOTOR_Un

   d.SdoWr(0x3350, 0x00, 2410)        # VEL_Feedback
   d.SdoWr(0x3550, 0x00, 2410)        # SVEL_Feedback

   d.SdoWr(0x3221, 0x00, 2000)        # CURR_LimitMaxPos
   d.SdoWr(0x3223, 0x00, 2000)        # CURR_LimitMaxNeg

   d.SdoWr(0x3210, 0x00, 51)          # CURR_Kp
   d.SdoWr(0x3211, 0x00, 54)          # CURR_Ki

   d.SdoWr(0x3310, 0x00, 200)         # VEL_Kp
   d.SdoWr(0x3311, 0x00, 10)          # VEL_Ki
   d.SdoWr(0x3314, 0x00, 1000)        # VEL_Kvff

   d.SdoWr(0x3341, 0x00, 500)         # VEL_Acc_dT
   d.SdoWr(0x3343, 0x00, 500)         # VEL_Dec_dT

   d.SdoWr(0x3510, 0x00, 205)         # SVEL_Kp
   d.SdoWr(0x3511, 0x00, 108)         # SVEL_Ki

InitPars(d_master)
InitPars(d_slave)

# Virtueller Encoder Init
d_slave.SdoWr(0x3350, 0x00, 0x990)                                       # VEL_FeedbackEncoderfeedback Positionierregler auf virtuellen Encoder einstellen (Wert kommt über PDO)
d_slave.SdoWr(0x3990, 0x08, 25)                                      # MOTOR_ENC_VIRT0_RawPosBits Externer Encoder Auflösung 25bit
d_slave.SdoWr(0x3990, 0x20, 2000)                                    # MOTOR_ENC_VIRT0_Resolution_Cnt Externer Encoder Auflösung pro Umdrehung

# Rx-Pdo Mapping
d_slave.SdoWr(0x1600, 0, 0)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1600, 1, 0x39901020)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 1: Virtuell-Encoder Raw position MOTOR_ENC_VIRT0_RawPos
d_slave.SdoWr(0x1600, 2, 0x39901120)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 2: Virtuell-Encoder Raw Index position MOTOR_ENC_VIRT0_RawIndexPos
d_slave.SdoWr(0x1600, 0, 2)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1400, 1, 0x182)                                      # COP_RxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Tx-Pdo Mapping
d_master.SdoWr(0x1A00, 0, 0)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1A00, 1, 0x396A0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 1: Aktuelle Encoderposition MOTOR_ENC_ActualPosition
d_master.SdoWr(0x1A00, 1, 0x396B0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 2: Aktuelle Indexposition MOTOR_ENC_ActualIndexPosition
d_master.SdoWr(0x1A00, 0, 2)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1800, 0x03, 100)                                    # COP_TxPDO1_CommunicationParameter_InhibitTime Inhibt-Time 10 ms
d_master.SdoWr(0x1800, 1, 0x182)                                     # COP_TxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Init Betriebsart
d_master.SdoWr(0x3004, 0x00, 0)                                      # DEV_Enable
d_master.SdoWr(0x3003, 0x00, 7)                                      # DEV_Mode
d_master.SdoWr(0x3004, 0x00, 1)                                      # DEV_Enable

mc.Can.PdoWr(0, [1, 0])                                              # NMT Protocol - Alle Geräte in Operational schalten

d_master.SdoWr(0x3000, 0x11, 300000)                                 # DEV_CmdData1
d_master.SdoWr(0x3000, 0x10, 2500)                                   # DEV_CmdData0
d_master.SdoWr(0x3000, 0x01, 0)                                      # DEV_Cmd
d_master.SdoWr(0x3000, 0x01, 0x34)                                   # DEV_Cmd

while 1:
   stat = d_master.SdoRd(0x3002, 0x00)                               # DEV_Status
   if (stat & 0x10) == 0x10:                                         # Wenn Position Reached
      print "Encoder-Master    :%d" % d_master.SdoRd(0x396A, 0x00)   # MOTOR_ENC_ActualPosition
      print "Index-Master      :%d" % d_master.SdoRd(0x396B, 0x00)   # MOTOR_ENC_ActualIndexPosition
      print "Encoder-Slave     :%d"% d_slave.SdoRd(0x3990, 0xA0)     # MOTOR_ENC_VIRT0_ActualPosition
      print "Index-Slave       :%d"% d_slave.SdoRd(0x3990, 0xB0)     # MOTOR_ENC_VIRT0_ActualIndexPosition
      print "Index-Cnt-Slave   :%d"% d_slave.SdoRd(0x3990, 0xC0)     # MOTOR_ENC_VIRT0_ActualIndexCount
      print "Encoder-Slave-Raw :%d"% d_slave.SdoRd(0x3990, 0x10)     # MOTOR_ENC_VIRT0_RawPos
      print "Index-Slave-Raw   :%d"% d_slave.SdoRd(0x3990, 0x11)     # MOTOR_ENC_VIRT0_RawIndexPos
      break


3990.11h Virtueller Encoder 0 - Raw Index Position

Name | MOTOR_ENC_VIRT0_RawIndexPos
Bezeichnung | Virtueller Encoder 0 - Raw Index Position
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.93.00.20
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter dient dazu, die Raw-Position des Index Pulses des virtuellen Encoders zu lesen. D.h. wird ein virtueller Encoder über beispielsweise CAN-Bus an den Regler angeschlossen, so sollte dieser seine Index Position in diesen Parameter schreiben. Der Parameter erkennt keinen Überlauf.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa
import time

d_master = Dsa(2)
d_slave  = Dsa(1)

def InitPars (d):
   d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Sperren
   d.SdoWr(0x3000, 0x00, 1)           # DEV_Cmd - Fehler löschen
   d.SdoWr(0x3000, 0x00, 0x82)        # DEV_Cmd - Defaultparameter

   d.SdoWr(0x3900, 0x00, 1)           # MOTOR_Type
   d.SdoWr(0x3911, 0x00, 0)           # MOTOR_Polarity

   d.SdoWr(0x3910, 0x00, 10)          # MOTOR_PolN
   d.SdoWr(0x3962, 0x00, 2000)        # MOTOR_ENC_Resolution

   d.SdoWr(0x3901, 0x00, 3000)        # MOTOR_Nn
   d.SdoWr(0x3902, 0x00, 24000)       # MOTOR_Un

   d.SdoWr(0x3350, 0x00, 2410)        # VEL_Feedback
   d.SdoWr(0x3550, 0x00, 2410)        # SVEL_Feedback

   d.SdoWr(0x3221, 0x00, 2000)        # CURR_LimitMaxPos
   d.SdoWr(0x3223, 0x00, 2000)        # CURR_LimitMaxNeg

   d.SdoWr(0x3210, 0x00, 51)          # CURR_Kp
   d.SdoWr(0x3211, 0x00, 54)          # CURR_Ki

   d.SdoWr(0x3310, 0x00, 200)         # VEL_Kp
   d.SdoWr(0x3311, 0x00, 10)          # VEL_Ki
   d.SdoWr(0x3314, 0x00, 1000)        # VEL_Kvff

   d.SdoWr(0x3341, 0x00, 500)         # VEL_Acc_dT
   d.SdoWr(0x3343, 0x00, 500)         # VEL_Dec_dT

   d.SdoWr(0x3510, 0x00, 205)         # SVEL_Kp
   d.SdoWr(0x3511, 0x00, 108)         # SVEL_Ki

InitPars(d_master)
InitPars(d_slave)

# Virtueller Encoder Init
d_slave.SdoWr(0x3350, 0x00, 0x990)                                       # VEL_FeedbackEncoderfeedback Positionierregler auf virtuellen Encoder einstellen (Wert kommt über PDO)
d_slave.SdoWr(0x3990, 0x08, 25)                                      # MOTOR_ENC_VIRT0_RawPosBits Externer Encoder Auflösung 25bit
d_slave.SdoWr(0x3990, 0x20, 2000)                                    # MOTOR_ENC_VIRT0_Resolution_Cnt Externer Encoder Auflösung pro Umdrehung

# Rx-Pdo Mapping
d_slave.SdoWr(0x1600, 0, 0)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1600, 1, 0x39901020)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 1: Virtuell-Encoder Raw position MOTOR_ENC_VIRT0_RawPos
d_slave.SdoWr(0x1600, 2, 0x39901120)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 2: Virtuell-Encoder Raw Index position MOTOR_ENC_VIRT0_RawIndexPos
d_slave.SdoWr(0x1600, 0, 2)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1400, 1, 0x182)                                      # COP_RxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Tx-Pdo Mapping
d_master.SdoWr(0x1A00, 0, 0)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1A00, 1, 0x396A0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 1: Aktuelle Encoderposition MOTOR_ENC_ActualPosition
d_master.SdoWr(0x1A00, 1, 0x396B0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 2: Aktuelle Indexposition MOTOR_ENC_ActualIndexPosition
d_master.SdoWr(0x1A00, 0, 2)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1800, 0x03, 100)                                    # COP_TxPDO1_CommunicationParameter_InhibitTime Inhibt-Time 10 ms
d_master.SdoWr(0x1800, 1, 0x182)                                     # COP_TxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Init Betriebsart
d_master.SdoWr(0x3004, 0x00, 0)                                      # DEV_Enable
d_master.SdoWr(0x3003, 0x00, 7)                                      # DEV_Mode
d_master.SdoWr(0x3004, 0x00, 1)                                      # DEV_Enable

mc.Can.PdoWr(0, [1, 0])                                              # NMT Protocol - Alle Geräte in Operational schalten

d_master.SdoWr(0x3000, 0x11, 300000)                                 # DEV_CmdData1
d_master.SdoWr(0x3000, 0x10, 2500)                                   # DEV_CmdData0
d_master.SdoWr(0x3000, 0x01, 0)                                      # DEV_Cmd
d_master.SdoWr(0x3000, 0x01, 0x34)                                   # DEV_Cmd

while 1:
   stat = d_master.SdoRd(0x3002, 0x00)                               # DEV_Status
   if (stat & 0x10) == 0x10:                                         # Wenn Position Reached
      print "Encoder-Master    :%d" % d_master.SdoRd(0x396A, 0x00)   # MOTOR_ENC_ActualPosition
      print "Index-Master      :%d" % d_master.SdoRd(0x396B, 0x00)   # MOTOR_ENC_ActualIndexPosition
      print "Encoder-Slave     :%d"% d_slave.SdoRd(0x3990, 0xA0)     # MOTOR_ENC_VIRT0_ActualPosition
      print "Index-Slave       :%d"% d_slave.SdoRd(0x3990, 0xB0)     # MOTOR_ENC_VIRT0_ActualIndexPosition
      print "Index-Cnt-Slave   :%d"% d_slave.SdoRd(0x3990, 0xC0)     # MOTOR_ENC_VIRT0_ActualIndexCount
      print "Encoder-Slave-Raw :%d"% d_slave.SdoRd(0x3990, 0x10)     # MOTOR_ENC_VIRT0_RawPos
      print "Index-Slave-Raw   :%d"% d_slave.SdoRd(0x3990, 0x11)     # MOTOR_ENC_VIRT0_RawIndexPos
      break


3990.20h Virtueller Encoder 0 - Auflösung in Inkrementen

Name | MOTOR_ENC_VIRT0_Resolution_Cnt
Bezeichnung | Virtueller Encoder 0 - Auflösung in Inkrementen
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 2000
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.93.00.20
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_ENC_VIRT0_RawPosBits

Beschreibung

Mit diesem Parameter wird die Auflösung des virtuellen Encoders in Pulsen pro Umdrehung angegeben.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa
import time

d_master = Dsa(2)
d_slave  = Dsa(1)

def InitPars (d):
   d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Sperren
   d.SdoWr(0x3000, 0x00, 1)           # DEV_Cmd - Fehler löschen
   d.SdoWr(0x3000, 0x00, 0x82)        # DEV_Cmd - Defaultparameter

   d.SdoWr(0x3900, 0x00, 1)           # MOTOR_Type
   d.SdoWr(0x3911, 0x00, 0)           # MOTOR_Polarity

   d.SdoWr(0x3910, 0x00, 10)          # MOTOR_PolN
   d.SdoWr(0x3962, 0x00, 2000)        # MOTOR_ENC_Resolution

   d.SdoWr(0x3901, 0x00, 3000)        # MOTOR_Nn
   d.SdoWr(0x3902, 0x00, 24000)       # MOTOR_Un

   d.SdoWr(0x3350, 0x00, 2410)        # VEL_Feedback
   d.SdoWr(0x3550, 0x00, 2410)        # SVEL_Feedback

   d.SdoWr(0x3221, 0x00, 2000)        # CURR_LimitMaxPos
   d.SdoWr(0x3223, 0x00, 2000)        # CURR_LimitMaxNeg

   d.SdoWr(0x3210, 0x00, 51)          # CURR_Kp
   d.SdoWr(0x3211, 0x00, 54)          # CURR_Ki

   d.SdoWr(0x3310, 0x00, 200)         # VEL_Kp
   d.SdoWr(0x3311, 0x00, 10)          # VEL_Ki
   d.SdoWr(0x3314, 0x00, 1000)        # VEL_Kvff

   d.SdoWr(0x3341, 0x00, 500)         # VEL_Acc_dT
   d.SdoWr(0x3343, 0x00, 500)         # VEL_Dec_dT

   d.SdoWr(0x3510, 0x00, 205)         # SVEL_Kp
   d.SdoWr(0x3511, 0x00, 108)         # SVEL_Ki

InitPars(d_master)
InitPars(d_slave)

# Virtueller Encoder Init
d_slave.SdoWr(0x3350, 0x00, 0x990)                                       # VEL_FeedbackEncoderfeedback Positionierregler auf virtuellen Encoder einstellen (Wert kommt über PDO)
d_slave.SdoWr(0x3990, 0x08, 25)                                      # MOTOR_ENC_VIRT0_RawPosBits Externer Encoder Auflösung 25bit
d_slave.SdoWr(0x3990, 0x20, 2000)                                    # MOTOR_ENC_VIRT0_Resolution_Cnt Externer Encoder Auflösung pro Umdrehung

# Rx-Pdo Mapping
d_slave.SdoWr(0x1600, 0, 0)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1600, 1, 0x39901020)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 1: Virtuell-Encoder Raw position MOTOR_ENC_VIRT0_RawPos
d_slave.SdoWr(0x1600, 2, 0x39901120)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 2: Virtuell-Encoder Raw Index position MOTOR_ENC_VIRT0_RawIndexPos
d_slave.SdoWr(0x1600, 0, 2)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1400, 1, 0x182)                                      # COP_RxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Tx-Pdo Mapping
d_master.SdoWr(0x1A00, 0, 0)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1A00, 1, 0x396A0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 1: Aktuelle Encoderposition MOTOR_ENC_ActualPosition
d_master.SdoWr(0x1A00, 1, 0x396B0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 2: Aktuelle Indexposition MOTOR_ENC_ActualIndexPosition
d_master.SdoWr(0x1A00, 0, 2)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1800, 0x03, 100)                                    # COP_TxPDO1_CommunicationParameter_InhibitTime Inhibt-Time 10 ms
d_master.SdoWr(0x1800, 1, 0x182)                                     # COP_TxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Init Betriebsart
d_master.SdoWr(0x3004, 0x00, 0)                                      # DEV_Enable
d_master.SdoWr(0x3003, 0x00, 7)                                      # DEV_Mode
d_master.SdoWr(0x3004, 0x00, 1)                                      # DEV_Enable

mc.Can.PdoWr(0, [1, 0])                                              # NMT Protocol - Alle Geräte in Operational schalten

d_master.SdoWr(0x3000, 0x11, 300000)                                 # DEV_CmdData1
d_master.SdoWr(0x3000, 0x10, 2500)                                   # DEV_CmdData0
d_master.SdoWr(0x3000, 0x01, 0)                                      # DEV_Cmd
d_master.SdoWr(0x3000, 0x01, 0x34)                                   # DEV_Cmd

while 1:
   stat = d_master.SdoRd(0x3002, 0x00)                               # DEV_Status
   if (stat & 0x10) == 0x10:                                         # Wenn Position Reached
      print "Encoder-Master    :%d" % d_master.SdoRd(0x396A, 0x00)   # MOTOR_ENC_ActualPosition
      print "Index-Master      :%d" % d_master.SdoRd(0x396B, 0x00)   # MOTOR_ENC_ActualIndexPosition
      print "Encoder-Slave     :%d"% d_slave.SdoRd(0x3990, 0xA0)     # MOTOR_ENC_VIRT0_ActualPosition
      print "Index-Slave       :%d"% d_slave.SdoRd(0x3990, 0xB0)     # MOTOR_ENC_VIRT0_ActualIndexPosition
      print "Index-Cnt-Slave   :%d"% d_slave.SdoRd(0x3990, 0xC0)     # MOTOR_ENC_VIRT0_ActualIndexCount
      print "Encoder-Slave-Raw :%d"% d_slave.SdoRd(0x3990, 0x10)     # MOTOR_ENC_VIRT0_RawPos
      print "Index-Slave-Raw   :%d"% d_slave.SdoRd(0x3990, 0x11)     # MOTOR_ENC_VIRT0_RawIndexPos
      break


3990.A0h Virtueller Encoder 0 - Aktuelle Position

Name | MOTOR_ENC_VIRT0_ActualPosition
Bezeichnung | Virtueller Encoder 0 - Aktuelle Position
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.93.00.20
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter liefert die aktuelle Position, die über den virtuellen Encoder gezählt wurde. Die Zahl der Pulse pro Umdrehung der Motorwelle hängt von der Auflösung des virtuellen Encoders ab.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa
import time

d_master = Dsa(2)
d_slave  = Dsa(1)

def InitPars (d):
   d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Sperren
   d.SdoWr(0x3000, 0x00, 1)           # DEV_Cmd - Fehler löschen
   d.SdoWr(0x3000, 0x00, 0x82)        # DEV_Cmd - Defaultparameter

   d.SdoWr(0x3900, 0x00, 1)           # MOTOR_Type
   d.SdoWr(0x3911, 0x00, 0)           # MOTOR_Polarity

   d.SdoWr(0x3910, 0x00, 10)          # MOTOR_PolN
   d.SdoWr(0x3962, 0x00, 2000)        # MOTOR_ENC_Resolution

   d.SdoWr(0x3901, 0x00, 3000)        # MOTOR_Nn
   d.SdoWr(0x3902, 0x00, 24000)       # MOTOR_Un

   d.SdoWr(0x3350, 0x00, 2410)        # VEL_Feedback
   d.SdoWr(0x3550, 0x00, 2410)        # SVEL_Feedback

   d.SdoWr(0x3221, 0x00, 2000)        # CURR_LimitMaxPos
   d.SdoWr(0x3223, 0x00, 2000)        # CURR_LimitMaxNeg

   d.SdoWr(0x3210, 0x00, 51)          # CURR_Kp
   d.SdoWr(0x3211, 0x00, 54)          # CURR_Ki

   d.SdoWr(0x3310, 0x00, 200)         # VEL_Kp
   d.SdoWr(0x3311, 0x00, 10)          # VEL_Ki
   d.SdoWr(0x3314, 0x00, 1000)        # VEL_Kvff

   d.SdoWr(0x3341, 0x00, 500)         # VEL_Acc_dT
   d.SdoWr(0x3343, 0x00, 500)         # VEL_Dec_dT

   d.SdoWr(0x3510, 0x00, 205)         # SVEL_Kp
   d.SdoWr(0x3511, 0x00, 108)         # SVEL_Ki

InitPars(d_master)
InitPars(d_slave)

# Virtueller Encoder Init
d_slave.SdoWr(0x3350, 0x00, 0x990)                                       # VEL_FeedbackEncoderfeedback Positionierregler auf virtuellen Encoder einstellen (Wert kommt über PDO)
d_slave.SdoWr(0x3990, 0x08, 25)                                      # MOTOR_ENC_VIRT0_RawPosBits Externer Encoder Auflösung 25bit
d_slave.SdoWr(0x3990, 0x20, 2000)                                    # MOTOR_ENC_VIRT0_Resolution_Cnt Externer Encoder Auflösung pro Umdrehung

# Rx-Pdo Mapping
d_slave.SdoWr(0x1600, 0, 0)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1600, 1, 0x39901020)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 1: Virtuell-Encoder Raw position MOTOR_ENC_VIRT0_RawPos
d_slave.SdoWr(0x1600, 2, 0x39901120)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 2: Virtuell-Encoder Raw Index position MOTOR_ENC_VIRT0_RawIndexPos
d_slave.SdoWr(0x1600, 0, 2)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1400, 1, 0x182)                                      # COP_RxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Tx-Pdo Mapping
d_master.SdoWr(0x1A00, 0, 0)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1A00, 1, 0x396A0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 1: Aktuelle Encoderposition MOTOR_ENC_ActualPosition
d_master.SdoWr(0x1A00, 1, 0x396B0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 2: Aktuelle Indexposition MOTOR_ENC_ActualIndexPosition
d_master.SdoWr(0x1A00, 0, 2)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1800, 0x03, 100)                                    # COP_TxPDO1_CommunicationParameter_InhibitTime Inhibt-Time 10 ms
d_master.SdoWr(0x1800, 1, 0x182)                                     # COP_TxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Init Betriebsart
d_master.SdoWr(0x3004, 0x00, 0)                                      # DEV_Enable
d_master.SdoWr(0x3003, 0x00, 7)                                      # DEV_Mode
d_master.SdoWr(0x3004, 0x00, 1)                                      # DEV_Enable

mc.Can.PdoWr(0, [1, 0])                                              # NMT Protocol - Alle Geräte in Operational schalten

d_master.SdoWr(0x3000, 0x11, 300000)                                 # DEV_CmdData1
d_master.SdoWr(0x3000, 0x10, 2500)                                   # DEV_CmdData0
d_master.SdoWr(0x3000, 0x01, 0)                                      # DEV_Cmd
d_master.SdoWr(0x3000, 0x01, 0x34)                                   # DEV_Cmd

while 1:
   stat = d_master.SdoRd(0x3002, 0x00)                               # DEV_Status
   if (stat & 0x10) == 0x10:                                         # Wenn Position Reached
      print "Encoder-Master    :%d" % d_master.SdoRd(0x396A, 0x00)   # MOTOR_ENC_ActualPosition
      print "Index-Master      :%d" % d_master.SdoRd(0x396B, 0x00)   # MOTOR_ENC_ActualIndexPosition
      print "Encoder-Slave     :%d"% d_slave.SdoRd(0x3990, 0xA0)     # MOTOR_ENC_VIRT0_ActualPosition
      print "Index-Slave       :%d"% d_slave.SdoRd(0x3990, 0xB0)     # MOTOR_ENC_VIRT0_ActualIndexPosition
      print "Index-Cnt-Slave   :%d"% d_slave.SdoRd(0x3990, 0xC0)     # MOTOR_ENC_VIRT0_ActualIndexCount
      print "Encoder-Slave-Raw :%d"% d_slave.SdoRd(0x3990, 0x10)     # MOTOR_ENC_VIRT0_RawPos
      print "Index-Slave-Raw   :%d"% d_slave.SdoRd(0x3990, 0x11)     # MOTOR_ENC_VIRT0_RawIndexPos
      break


3990.B0h Virtueller Encoder 0 - Aktuelle Index Position

Name | MOTOR_ENC_VIRT0_ActualIndexPosition
Bezeichnung | Virtueller Encoder 0 - Aktuelle Index Position
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.93.00.20
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter liefert eine aktuelle Position des Indexpulses vom virtuellen Encoder zurück. Bei einem Puls des Indexsignals wird die aktuelle virtuelle Encoderposition gespeichert. Dieser Wert kann dann mit diesem Parameter abgefragt werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa
import time

d_master = Dsa(2)
d_slave  = Dsa(1)

def InitPars (d):
   d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Sperren
   d.SdoWr(0x3000, 0x00, 1)           # DEV_Cmd - Fehler löschen
   d.SdoWr(0x3000, 0x00, 0x82)        # DEV_Cmd - Defaultparameter

   d.SdoWr(0x3900, 0x00, 1)           # MOTOR_Type
   d.SdoWr(0x3911, 0x00, 0)           # MOTOR_Polarity

   d.SdoWr(0x3910, 0x00, 10)          # MOTOR_PolN
   d.SdoWr(0x3962, 0x00, 2000)        # MOTOR_ENC_Resolution

   d.SdoWr(0x3901, 0x00, 3000)        # MOTOR_Nn
   d.SdoWr(0x3902, 0x00, 24000)       # MOTOR_Un

   d.SdoWr(0x3350, 0x00, 2410)        # VEL_Feedback
   d.SdoWr(0x3550, 0x00, 2410)        # SVEL_Feedback

   d.SdoWr(0x3221, 0x00, 2000)        # CURR_LimitMaxPos
   d.SdoWr(0x3223, 0x00, 2000)        # CURR_LimitMaxNeg

   d.SdoWr(0x3210, 0x00, 51)          # CURR_Kp
   d.SdoWr(0x3211, 0x00, 54)          # CURR_Ki

   d.SdoWr(0x3310, 0x00, 200)         # VEL_Kp
   d.SdoWr(0x3311, 0x00, 10)          # VEL_Ki
   d.SdoWr(0x3314, 0x00, 1000)        # VEL_Kvff

   d.SdoWr(0x3341, 0x00, 500)         # VEL_Acc_dT
   d.SdoWr(0x3343, 0x00, 500)         # VEL_Dec_dT

   d.SdoWr(0x3510, 0x00, 205)         # SVEL_Kp
   d.SdoWr(0x3511, 0x00, 108)         # SVEL_Ki

InitPars(d_master)
InitPars(d_slave)

# Virtueller Encoder Init
d_slave.SdoWr(0x3350, 0x00, 0x990)                                       # VEL_FeedbackEncoderfeedback Positionierregler auf virtuellen Encoder einstellen (Wert kommt über PDO)
d_slave.SdoWr(0x3990, 0x08, 25)                                      # MOTOR_ENC_VIRT0_RawPosBits Externer Encoder Auflösung 25bit
d_slave.SdoWr(0x3990, 0x20, 2000)                                    # MOTOR_ENC_VIRT0_Resolution_Cnt Externer Encoder Auflösung pro Umdrehung

# Rx-Pdo Mapping
d_slave.SdoWr(0x1600, 0, 0)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1600, 1, 0x39901020)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 1: Virtuell-Encoder Raw position MOTOR_ENC_VIRT0_RawPos
d_slave.SdoWr(0x1600, 2, 0x39901120)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 2: Virtuell-Encoder Raw Index position MOTOR_ENC_VIRT0_RawIndexPos
d_slave.SdoWr(0x1600, 0, 2)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1400, 1, 0x182)                                      # COP_RxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Tx-Pdo Mapping
d_master.SdoWr(0x1A00, 0, 0)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1A00, 1, 0x396A0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 1: Aktuelle Encoderposition MOTOR_ENC_ActualPosition
d_master.SdoWr(0x1A00, 1, 0x396B0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 2: Aktuelle Indexposition MOTOR_ENC_ActualIndexPosition
d_master.SdoWr(0x1A00, 0, 2)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1800, 0x03, 100)                                    # COP_TxPDO1_CommunicationParameter_InhibitTime Inhibt-Time 10 ms
d_master.SdoWr(0x1800, 1, 0x182)                                     # COP_TxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Init Betriebsart
d_master.SdoWr(0x3004, 0x00, 0)                                      # DEV_Enable
d_master.SdoWr(0x3003, 0x00, 7)                                      # DEV_Mode
d_master.SdoWr(0x3004, 0x00, 1)                                      # DEV_Enable

mc.Can.PdoWr(0, [1, 0])                                              # NMT Protocol - Alle Geräte in Operational schalten

d_master.SdoWr(0x3000, 0x11, 300000)                                 # DEV_CmdData1
d_master.SdoWr(0x3000, 0x10, 2500)                                   # DEV_CmdData0
d_master.SdoWr(0x3000, 0x01, 0)                                      # DEV_Cmd
d_master.SdoWr(0x3000, 0x01, 0x34)                                   # DEV_Cmd

while 1:
   stat = d_master.SdoRd(0x3002, 0x00)                               # DEV_Status
   if (stat & 0x10) == 0x10:                                         # Wenn Position Reached
      print "Encoder-Master    :%d" % d_master.SdoRd(0x396A, 0x00)   # MOTOR_ENC_ActualPosition
      print "Index-Master      :%d" % d_master.SdoRd(0x396B, 0x00)   # MOTOR_ENC_ActualIndexPosition
      print "Encoder-Slave     :%d"% d_slave.SdoRd(0x3990, 0xA0)     # MOTOR_ENC_VIRT0_ActualPosition
      print "Index-Slave       :%d"% d_slave.SdoRd(0x3990, 0xB0)     # MOTOR_ENC_VIRT0_ActualIndexPosition
      print "Index-Cnt-Slave   :%d"% d_slave.SdoRd(0x3990, 0xC0)     # MOTOR_ENC_VIRT0_ActualIndexCount
      print "Encoder-Slave-Raw :%d"% d_slave.SdoRd(0x3990, 0x10)     # MOTOR_ENC_VIRT0_RawPos
      print "Index-Slave-Raw   :%d"% d_slave.SdoRd(0x3990, 0x11)     # MOTOR_ENC_VIRT0_RawIndexPos
      break


3990.C0h Virtueller Encoder 0 - Index Zähler

Name | MOTOR_ENC_VIRT0_ActualIndexCount
Bezeichnung | Virtueller Encoder 0 - Index Zähler
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 65535]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.93.00.20
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Mit dem Parameter kann die aktuelle Anzahl der Indexpulsen abgefragt werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa
import time

d_master = Dsa(2)
d_slave  = Dsa(1)

def InitPars (d):
   d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Sperren
   d.SdoWr(0x3000, 0x00, 1)           # DEV_Cmd - Fehler löschen
   d.SdoWr(0x3000, 0x00, 0x82)        # DEV_Cmd - Defaultparameter

   d.SdoWr(0x3900, 0x00, 1)           # MOTOR_Type
   d.SdoWr(0x3911, 0x00, 0)           # MOTOR_Polarity

   d.SdoWr(0x3910, 0x00, 10)          # MOTOR_PolN
   d.SdoWr(0x3962, 0x00, 2000)        # MOTOR_ENC_Resolution

   d.SdoWr(0x3901, 0x00, 3000)        # MOTOR_Nn
   d.SdoWr(0x3902, 0x00, 24000)       # MOTOR_Un

   d.SdoWr(0x3350, 0x00, 2410)        # VEL_Feedback
   d.SdoWr(0x3550, 0x00, 2410)        # SVEL_Feedback

   d.SdoWr(0x3221, 0x00, 2000)        # CURR_LimitMaxPos
   d.SdoWr(0x3223, 0x00, 2000)        # CURR_LimitMaxNeg

   d.SdoWr(0x3210, 0x00, 51)          # CURR_Kp
   d.SdoWr(0x3211, 0x00, 54)          # CURR_Ki

   d.SdoWr(0x3310, 0x00, 200)         # VEL_Kp
   d.SdoWr(0x3311, 0x00, 10)          # VEL_Ki
   d.SdoWr(0x3314, 0x00, 1000)        # VEL_Kvff

   d.SdoWr(0x3341, 0x00, 500)         # VEL_Acc_dT
   d.SdoWr(0x3343, 0x00, 500)         # VEL_Dec_dT

   d.SdoWr(0x3510, 0x00, 205)         # SVEL_Kp
   d.SdoWr(0x3511, 0x00, 108)         # SVEL_Ki

InitPars(d_master)
InitPars(d_slave)

# Virtueller Encoder Init
d_slave.SdoWr(0x3350, 0x00, 0x990)                                       # VEL_FeedbackEncoderfeedback Positionierregler auf virtuellen Encoder einstellen (Wert kommt über PDO)
d_slave.SdoWr(0x3990, 0x08, 25)                                      # MOTOR_ENC_VIRT0_RawPosBits Externer Encoder Auflösung 25bit
d_slave.SdoWr(0x3990, 0x20, 2000)                                    # MOTOR_ENC_VIRT0_Resolution_Cnt Externer Encoder Auflösung pro Umdrehung

# Rx-Pdo Mapping
d_slave.SdoWr(0x1600, 0, 0)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1600, 1, 0x39901020)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 1: Virtuell-Encoder Raw position MOTOR_ENC_VIRT0_RawPos
d_slave.SdoWr(0x1600, 2, 0x39901120)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 2: Virtuell-Encoder Raw Index position MOTOR_ENC_VIRT0_RawIndexPos
d_slave.SdoWr(0x1600, 0, 2)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1400, 1, 0x182)                                      # COP_RxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Tx-Pdo Mapping
d_master.SdoWr(0x1A00, 0, 0)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1A00, 1, 0x396A0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 1: Aktuelle Encoderposition MOTOR_ENC_ActualPosition
d_master.SdoWr(0x1A00, 1, 0x396B0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 2: Aktuelle Indexposition MOTOR_ENC_ActualIndexPosition
d_master.SdoWr(0x1A00, 0, 2)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1800, 0x03, 100)                                    # COP_TxPDO1_CommunicationParameter_InhibitTime Inhibt-Time 10 ms
d_master.SdoWr(0x1800, 1, 0x182)                                     # COP_TxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Init Betriebsart
d_master.SdoWr(0x3004, 0x00, 0)                                      # DEV_Enable
d_master.SdoWr(0x3003, 0x00, 7)                                      # DEV_Mode
d_master.SdoWr(0x3004, 0x00, 1)                                      # DEV_Enable

mc.Can.PdoWr(0, [1, 0])                                              # NMT Protocol - Alle Geräte in Operational schalten

d_master.SdoWr(0x3000, 0x11, 300000)                                 # DEV_CmdData1
d_master.SdoWr(0x3000, 0x10, 2500)                                   # DEV_CmdData0
d_master.SdoWr(0x3000, 0x01, 0)                                      # DEV_Cmd
d_master.SdoWr(0x3000, 0x01, 0x34)                                   # DEV_Cmd

while 1:
   stat = d_master.SdoRd(0x3002, 0x00)                               # DEV_Status
   if (stat & 0x10) == 0x10:                                         # Wenn Position Reached
      print "Encoder-Master    :%d" % d_master.SdoRd(0x396A, 0x00)   # MOTOR_ENC_ActualPosition
      print "Index-Master      :%d" % d_master.SdoRd(0x396B, 0x00)   # MOTOR_ENC_ActualIndexPosition
      print "Encoder-Slave     :%d"% d_slave.SdoRd(0x3990, 0xA0)     # MOTOR_ENC_VIRT0_ActualPosition
      print "Index-Slave       :%d"% d_slave.SdoRd(0x3990, 0xB0)     # MOTOR_ENC_VIRT0_ActualIndexPosition
      print "Index-Cnt-Slave   :%d"% d_slave.SdoRd(0x3990, 0xC0)     # MOTOR_ENC_VIRT0_ActualIndexCount
      print "Encoder-Slave-Raw :%d"% d_slave.SdoRd(0x3990, 0x10)     # MOTOR_ENC_VIRT0_RawPos
      print "Index-Slave-Raw   :%d"% d_slave.SdoRd(0x3990, 0x11)     # MOTOR_ENC_VIRT0_RawIndexPos
      break


3991.08h Virtueller Encoder 1 - Bits

Name | MOTOR_ENC_VIRT1_RawPosBits
Bezeichnung | Virtueller Encoder 1 - Bits
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 32]
Defaultwert | 32
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.93.00.47
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_ENC_VIRT1_Resolution_Cnt

Beschreibung

Dieser Parameter definiert die gesamte Anzahl der Bits der virtuellen Encoderposition.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa
import time

d_master = Dsa(2)
d_slave  = Dsa(1)

def InitPars (d):
   d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Sperren
   d.SdoWr(0x3000, 0x00, 1)           # DEV_Cmd - Fehler löschen
   d.SdoWr(0x3000, 0x00, 0x82)        # DEV_Cmd - Defaultparameter

   d.SdoWr(0x3900, 0x00, 1)           # MOTOR_Type
   d.SdoWr(0x3911, 0x00, 0)           # MOTOR_Polarity

   d.SdoWr(0x3910, 0x00, 10)          # MOTOR_PolN
   d.SdoWr(0x3962, 0x00, 2000)        # MOTOR_ENC_Resolution

   d.SdoWr(0x3901, 0x00, 3000)        # MOTOR_Nn
   d.SdoWr(0x3902, 0x00, 24000)       # MOTOR_Un

   d.SdoWr(0x3350, 0x00, 2410)        # VEL_Feedback
   d.SdoWr(0x3550, 0x00, 2410)        # SVEL_Feedback

   d.SdoWr(0x3221, 0x00, 2000)        # CURR_LimitMaxPos
   d.SdoWr(0x3223, 0x00, 2000)        # CURR_LimitMaxNeg

   d.SdoWr(0x3210, 0x00, 51)          # CURR_Kp
   d.SdoWr(0x3211, 0x00, 54)          # CURR_Ki

   d.SdoWr(0x3310, 0x00, 200)         # VEL_Kp
   d.SdoWr(0x3311, 0x00, 10)          # VEL_Ki
   d.SdoWr(0x3314, 0x00, 1000)        # VEL_Kvff

   d.SdoWr(0x3341, 0x00, 500)         # VEL_Acc_dT
   d.SdoWr(0x3343, 0x00, 500)         # VEL_Dec_dT

   d.SdoWr(0x3510, 0x00, 205)         # SVEL_Kp
   d.SdoWr(0x3511, 0x00, 108)         # SVEL_Ki

InitPars(d_master)
InitPars(d_slave)

# Virtueller Encoder Init
d_slave.SdoWr(0x3350, 0x00, 0x991)                                       # VEL_FeedbackEncoderfeedback Positionierregler auf virtuellen Encoder einstellen (Wert kommt über PDO)
d_slave.SdoWr(0x3991, 0x08, 25)                                      # MOTOR_ENC_VIRT1_RawPosBits Externer Encoder Auflösung 25bit
d_slave.SdoWr(0x3991, 0x20, 2000)                                    # MOTOR_ENC_VIRT1_Resolution_Cnt Externer Encoder Auflösung pro Umdrehung

# Rx-Pdo Mapping
d_slave.SdoWr(0x1600, 0, 0)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1600, 1, 0x39911020)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 1: Virtuell-Encoder Raw position MOTOR_ENC_VIRT1_RawPos
d_slave.SdoWr(0x1600, 2, 0x39911120)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 2: Virtuell-Encoder Raw Index position MOTOR_ENC_VIRT1_RawIndexPos
d_slave.SdoWr(0x1600, 0, 2)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1400, 1, 0x182)                                      # COP_RxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Tx-Pdo Mapping
d_master.SdoWr(0x1A00, 0, 0)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1A00, 1, 0x396A0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 1: Aktuelle Encoderposition MOTOR_ENC_ActualPosition
d_master.SdoWr(0x1A00, 1, 0x396B0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 2: Aktuelle Indexposition MOTOR_ENC_ActualIndexPosition
d_master.SdoWr(0x1A00, 0, 2)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1800, 0x03, 100)                                    # COP_TxPDO1_CommunicationParameter_InhibitTime Inhibt-Time 10 ms
d_master.SdoWr(0x1800, 1, 0x182)                                     # COP_TxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Init Betriebsart
d_master.SdoWr(0x3004, 0x00, 0)                                      # DEV_Enable
d_master.SdoWr(0x3003, 0x00, 7)                                      # DEV_Mode
d_master.SdoWr(0x3004, 0x00, 1)                                      # DEV_Enable

mc.Can.PdoWr(0, [1, 0])                                              # NMT Protocol - Alle Geräte in Operational schalten

d_master.SdoWr(0x3000, 0x11, 300000)                                 # DEV_CmdData1
d_master.SdoWr(0x3000, 0x10, 2500)                                   # DEV_CmdData0
d_master.SdoWr(0x3000, 0x01, 0)                                      # DEV_Cmd
d_master.SdoWr(0x3000, 0x01, 0x34)                                   # DEV_Cmd

while 1:
   stat = d_master.SdoRd(0x3002, 0x00)                               # DEV_Status
   if (stat & 0x10) == 0x10:                                         # Wenn Position Reached
      print "Encoder-Master    :%d" % d_master.SdoRd(0x396A, 0x00)   # MOTOR_ENC_ActualPosition
      print "Index-Master      :%d" % d_master.SdoRd(0x396B, 0x00)   # MOTOR_ENC_ActualIndexPosition
      print "Encoder-Slave     :%d"% d_slave.SdoRd(0x3991, 0xA0)     # MOTOR_ENC_VIRT1_ActualPosition
      print "Index-Slave       :%d"% d_slave.SdoRd(0x3991, 0xB0)     # MOTOR_ENC_VIRT1_ActualIndexPosition
      print "Index-Cnt-Slave   :%d"% d_slave.SdoRd(0x3991, 0xC0)     # MOTOR_ENC_VIRT1_ActualIndexCount
      print "Encoder-Slave-Raw :%d"% d_slave.SdoRd(0x3991, 0x10)     # MOTOR_ENC_VIRT1_RawPos
      print "Index-Slave-Raw   :%d"% d_slave.SdoRd(0x3991, 0x11)     # MOTOR_ENC_VIRT1_RawIndexPos
      break


3991.10h Virtueller Encoder 1 - Raw Position

Name | MOTOR_ENC_VIRT1_RawPos
Bezeichnung | Virtueller Encoder 1 - Raw Position
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.93.00.20
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter dient dazu, die Raw-Position des virtuellen Encoders zu lesen. D.h. wird ein virtueller Encoder über beispielsweise CAN-Bus an den Regler angeschlossen, so sollte dieser seine Position in diesen Parameter schreiben. Der Parameter erkennt keinen Überlauf.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa
import time

d_master = Dsa(2)
d_slave  = Dsa(1)

def InitPars (d):
   d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Sperren
   d.SdoWr(0x3000, 0x00, 1)           # DEV_Cmd - Fehler löschen
   d.SdoWr(0x3000, 0x00, 0x82)        # DEV_Cmd - Defaultparameter

   d.SdoWr(0x3900, 0x00, 1)           # MOTOR_Type
   d.SdoWr(0x3911, 0x00, 0)           # MOTOR_Polarity

   d.SdoWr(0x3910, 0x00, 10)          # MOTOR_PolN
   d.SdoWr(0x3962, 0x00, 2000)        # MOTOR_ENC_Resolution

   d.SdoWr(0x3901, 0x00, 3000)        # MOTOR_Nn
   d.SdoWr(0x3902, 0x00, 24000)       # MOTOR_Un

   d.SdoWr(0x3350, 0x00, 2410)        # VEL_Feedback
   d.SdoWr(0x3550, 0x00, 2410)        # SVEL_Feedback

   d.SdoWr(0x3221, 0x00, 2000)        # CURR_LimitMaxPos
   d.SdoWr(0x3223, 0x00, 2000)        # CURR_LimitMaxNeg

   d.SdoWr(0x3210, 0x00, 51)          # CURR_Kp
   d.SdoWr(0x3211, 0x00, 54)          # CURR_Ki

   d.SdoWr(0x3310, 0x00, 200)         # VEL_Kp
   d.SdoWr(0x3311, 0x00, 10)          # VEL_Ki
   d.SdoWr(0x3314, 0x00, 1000)        # VEL_Kvff

   d.SdoWr(0x3341, 0x00, 500)         # VEL_Acc_dT
   d.SdoWr(0x3343, 0x00, 500)         # VEL_Dec_dT

   d.SdoWr(0x3510, 0x00, 205)         # SVEL_Kp
   d.SdoWr(0x3511, 0x00, 108)         # SVEL_Ki

InitPars(d_master)
InitPars(d_slave)

# Virtueller Encoder Init
d_slave.SdoWr(0x3350, 0x00, 0x991)                                       # VEL_FeedbackEncoderfeedback Positionierregler auf virtuellen Encoder einstellen (Wert kommt über PDO)
d_slave.SdoWr(0x3991, 0x08, 25)                                      # MOTOR_ENC_VIRT1_RawPosBits Externer Encoder Auflösung 25bit
d_slave.SdoWr(0x3991, 0x20, 2000)                                    # MOTOR_ENC_VIRT1_Resolution_Cnt Externer Encoder Auflösung pro Umdrehung

# Rx-Pdo Mapping
d_slave.SdoWr(0x1600, 0, 0)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1600, 1, 0x39911020)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 1: Virtuell-Encoder Raw position MOTOR_ENC_VIRT1_RawPos
d_slave.SdoWr(0x1600, 2, 0x39911120)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 2: Virtuell-Encoder Raw Index position MOTOR_ENC_VIRT1_RawIndexPos
d_slave.SdoWr(0x1600, 0, 2)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1400, 1, 0x182)                                      # COP_RxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Tx-Pdo Mapping
d_master.SdoWr(0x1A00, 0, 0)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1A00, 1, 0x396A0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 1: Aktuelle Encoderposition MOTOR_ENC_ActualPosition
d_master.SdoWr(0x1A00, 1, 0x396B0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 2: Aktuelle Indexposition MOTOR_ENC_ActualIndexPosition
d_master.SdoWr(0x1A00, 0, 2)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1800, 0x03, 100)                                    # COP_TxPDO1_CommunicationParameter_InhibitTime Inhibt-Time 10 ms
d_master.SdoWr(0x1800, 1, 0x182)                                     # COP_TxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Init Betriebsart
d_master.SdoWr(0x3004, 0x00, 0)                                      # DEV_Enable
d_master.SdoWr(0x3003, 0x00, 7)                                      # DEV_Mode
d_master.SdoWr(0x3004, 0x00, 1)                                      # DEV_Enable

mc.Can.PdoWr(0, [1, 0])                                              # NMT Protocol - Alle Geräte in Operational schalten

d_master.SdoWr(0x3000, 0x11, 300000)                                 # DEV_CmdData1
d_master.SdoWr(0x3000, 0x10, 2500)                                   # DEV_CmdData0
d_master.SdoWr(0x3000, 0x01, 0)                                      # DEV_Cmd
d_master.SdoWr(0x3000, 0x01, 0x34)                                   # DEV_Cmd

while 1:
   stat = d_master.SdoRd(0x3002, 0x00)                               # DEV_Status
   if (stat & 0x10) == 0x10:                                         # Wenn Position Reached
      print "Encoder-Master    :%d" % d_master.SdoRd(0x396A, 0x00)   # MOTOR_ENC_ActualPosition
      print "Index-Master      :%d" % d_master.SdoRd(0x396B, 0x00)   # MOTOR_ENC_ActualIndexPosition
      print "Encoder-Slave     :%d"% d_slave.SdoRd(0x3991, 0xA0)     # MOTOR_ENC_VIRT1_ActualPosition
      print "Index-Slave       :%d"% d_slave.SdoRd(0x3991, 0xB0)     # MOTOR_ENC_VIRT1_ActualIndexPosition
      print "Index-Cnt-Slave   :%d"% d_slave.SdoRd(0x3991, 0xC0)     # MOTOR_ENC_VIRT1_ActualIndexCount
      print "Encoder-Slave-Raw :%d"% d_slave.SdoRd(0x3991, 0x10)     # MOTOR_ENC_VIRT1_RawPos
      print "Index-Slave-Raw   :%d"% d_slave.SdoRd(0x3991, 0x11)     # MOTOR_ENC_VIRT1_RawIndexPos
      break


3991.11h Virtueller Encoder 1 - Raw Index Position

Name | MOTOR_ENC_VIRT1_RawIndexPos
Bezeichnung | Virtueller Encoder 1 - Raw Index Position
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.93.00.20
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter dient dazu, die Raw-Position des Index Pulses des virtuellen Encoders zu lesen. D.h. wird ein virtueller Encoder über beispielsweise CAN-Bus an den Regler angeschlossen, so sollte dieser seine Index Position in diesen Parameter schreiben. Der Parameter erkennt keinen Überlauf.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa
import time

d_master = Dsa(2)
d_slave  = Dsa(1)

def InitPars (d):
   d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Sperren
   d.SdoWr(0x3000, 0x00, 1)           # DEV_Cmd - Fehler löschen
   d.SdoWr(0x3000, 0x00, 0x82)        # DEV_Cmd - Defaultparameter

   d.SdoWr(0x3900, 0x00, 1)           # MOTOR_Type
   d.SdoWr(0x3911, 0x00, 0)           # MOTOR_Polarity

   d.SdoWr(0x3910, 0x00, 10)          # MOTOR_PolN
   d.SdoWr(0x3962, 0x00, 2000)        # MOTOR_ENC_Resolution

   d.SdoWr(0x3901, 0x00, 3000)        # MOTOR_Nn
   d.SdoWr(0x3902, 0x00, 24000)       # MOTOR_Un

   d.SdoWr(0x3350, 0x00, 2410)        # VEL_Feedback
   d.SdoWr(0x3550, 0x00, 2410)        # SVEL_Feedback

   d.SdoWr(0x3221, 0x00, 2000)        # CURR_LimitMaxPos
   d.SdoWr(0x3223, 0x00, 2000)        # CURR_LimitMaxNeg

   d.SdoWr(0x3210, 0x00, 51)          # CURR_Kp
   d.SdoWr(0x3211, 0x00, 54)          # CURR_Ki

   d.SdoWr(0x3310, 0x00, 200)         # VEL_Kp
   d.SdoWr(0x3311, 0x00, 10)          # VEL_Ki
   d.SdoWr(0x3314, 0x00, 1000)        # VEL_Kvff

   d.SdoWr(0x3341, 0x00, 500)         # VEL_Acc_dT
   d.SdoWr(0x3343, 0x00, 500)         # VEL_Dec_dT

   d.SdoWr(0x3510, 0x00, 205)         # SVEL_Kp
   d.SdoWr(0x3511, 0x00, 108)         # SVEL_Ki

InitPars(d_master)
InitPars(d_slave)

# Virtueller Encoder Init
d_slave.SdoWr(0x3350, 0x00, 0x991)                                       # VEL_FeedbackEncoderfeedback Positionierregler auf virtuellen Encoder einstellen (Wert kommt über PDO)
d_slave.SdoWr(0x3991, 0x08, 25)                                      # MOTOR_ENC_VIRT1_RawPosBits Externer Encoder Auflösung 25bit
d_slave.SdoWr(0x3991, 0x20, 2000)                                    # MOTOR_ENC_VIRT1_Resolution_Cnt Externer Encoder Auflösung pro Umdrehung

# Rx-Pdo Mapping
d_slave.SdoWr(0x1600, 0, 0)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1600, 1, 0x39911020)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 1: Virtuell-Encoder Raw position MOTOR_ENC_VIRT1_RawPos
d_slave.SdoWr(0x1600, 2, 0x39911120)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 2: Virtuell-Encoder Raw Index position MOTOR_ENC_VIRT1_RawIndexPos
d_slave.SdoWr(0x1600, 0, 2)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1400, 1, 0x182)                                      # COP_RxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Tx-Pdo Mapping
d_master.SdoWr(0x1A00, 0, 0)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1A00, 1, 0x396A0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 1: Aktuelle Encoderposition MOTOR_ENC_ActualPosition
d_master.SdoWr(0x1A00, 1, 0x396B0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 2: Aktuelle Indexposition MOTOR_ENC_ActualIndexPosition
d_master.SdoWr(0x1A00, 0, 2)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1800, 0x03, 100)                                    # COP_TxPDO1_CommunicationParameter_InhibitTime Inhibt-Time 10 ms
d_master.SdoWr(0x1800, 1, 0x182)                                     # COP_TxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Init Betriebsart
d_master.SdoWr(0x3004, 0x00, 0)                                      # DEV_Enable
d_master.SdoWr(0x3003, 0x00, 7)                                      # DEV_Mode
d_master.SdoWr(0x3004, 0x00, 1)                                      # DEV_Enable

mc.Can.PdoWr(0, [1, 0])                                              # NMT Protocol - Alle Geräte in Operational schalten

d_master.SdoWr(0x3000, 0x11, 300000)                                 # DEV_CmdData1
d_master.SdoWr(0x3000, 0x10, 2500)                                   # DEV_CmdData0
d_master.SdoWr(0x3000, 0x01, 0)                                      # DEV_Cmd
d_master.SdoWr(0x3000, 0x01, 0x34)                                   # DEV_Cmd

while 1:
   stat = d_master.SdoRd(0x3002, 0x00)                               # DEV_Status
   if (stat & 0x10) == 0x10:                                         # Wenn Position Reached
      print "Encoder-Master    :%d" % d_master.SdoRd(0x396A, 0x00)   # MOTOR_ENC_ActualPosition
      print "Index-Master      :%d" % d_master.SdoRd(0x396B, 0x00)   # MOTOR_ENC_ActualIndexPosition
      print "Encoder-Slave     :%d"% d_slave.SdoRd(0x3991, 0xA0)     # MOTOR_ENC_VIRT1_ActualPosition
      print "Index-Slave       :%d"% d_slave.SdoRd(0x3991, 0xB0)     # MOTOR_ENC_VIRT1_ActualIndexPosition
      print "Index-Cnt-Slave   :%d"% d_slave.SdoRd(0x3991, 0xC0)     # MOTOR_ENC_VIRT1_ActualIndexCount
      print "Encoder-Slave-Raw :%d"% d_slave.SdoRd(0x3991, 0x10)     # MOTOR_ENC_VIRT1_RawPos
      print "Index-Slave-Raw   :%d"% d_slave.SdoRd(0x3991, 0x11)     # MOTOR_ENC_VIRT1_RawIndexPos
      break


3991.20h Virtueller Encoder 1 - Auflösung in Inkrementen

Name | MOTOR_ENC_VIRT1_Resolution_Cnt
Bezeichnung | Virtueller Encoder 1 - Auflösung in Inkrementen
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 2000
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.93.00.20
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_ENC_VIRT1_RawPosBits

Beschreibung

Mit diesem Parameter wird die Auflösung des virtuellen Encoders in Pulsen pro Umdrehung angegeben.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa
import time

d_master = Dsa(2)
d_slave  = Dsa(1)

def InitPars (d):
   d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Sperren
   d.SdoWr(0x3000, 0x00, 1)           # DEV_Cmd - Fehler löschen
   d.SdoWr(0x3000, 0x00, 0x82)        # DEV_Cmd - Defaultparameter

   d.SdoWr(0x3900, 0x00, 1)           # MOTOR_Type
   d.SdoWr(0x3911, 0x00, 0)           # MOTOR_Polarity

   d.SdoWr(0x3910, 0x00, 10)          # MOTOR_PolN
   d.SdoWr(0x3962, 0x00, 2000)        # MOTOR_ENC_Resolution

   d.SdoWr(0x3901, 0x00, 3000)        # MOTOR_Nn
   d.SdoWr(0x3902, 0x00, 24000)       # MOTOR_Un

   d.SdoWr(0x3350, 0x00, 2410)        # VEL_Feedback
   d.SdoWr(0x3550, 0x00, 2410)        # SVEL_Feedback

   d.SdoWr(0x3221, 0x00, 2000)        # CURR_LimitMaxPos
   d.SdoWr(0x3223, 0x00, 2000)        # CURR_LimitMaxNeg

   d.SdoWr(0x3210, 0x00, 51)          # CURR_Kp
   d.SdoWr(0x3211, 0x00, 54)          # CURR_Ki

   d.SdoWr(0x3310, 0x00, 200)         # VEL_Kp
   d.SdoWr(0x3311, 0x00, 10)          # VEL_Ki
   d.SdoWr(0x3314, 0x00, 1000)        # VEL_Kvff

   d.SdoWr(0x3341, 0x00, 500)         # VEL_Acc_dT
   d.SdoWr(0x3343, 0x00, 500)         # VEL_Dec_dT

   d.SdoWr(0x3510, 0x00, 205)         # SVEL_Kp
   d.SdoWr(0x3511, 0x00, 108)         # SVEL_Ki

InitPars(d_master)
InitPars(d_slave)

# Virtueller Encoder Init
d_slave.SdoWr(0x3350, 0x00, 0x991)                                       # VEL_FeedbackEncoderfeedback Positionierregler auf virtuellen Encoder einstellen (Wert kommt über PDO)
d_slave.SdoWr(0x3991, 0x08, 25)                                      # MOTOR_ENC_VIRT1_RawPosBits Externer Encoder Auflösung 25bit
d_slave.SdoWr(0x3991, 0x20, 2000)                                    # MOTOR_ENC_VIRT1_Resolution_Cnt Externer Encoder Auflösung pro Umdrehung

# Rx-Pdo Mapping
d_slave.SdoWr(0x1600, 0, 0)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1600, 1, 0x39911020)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 1: Virtuell-Encoder Raw position MOTOR_ENC_VIRT1_RawPos
d_slave.SdoWr(0x1600, 2, 0x39911120)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 2: Virtuell-Encoder Raw Index position MOTOR_ENC_VIRT1_RawIndexPos
d_slave.SdoWr(0x1600, 0, 2)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1400, 1, 0x182)                                      # COP_RxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Tx-Pdo Mapping
d_master.SdoWr(0x1A00, 0, 0)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1A00, 1, 0x396A0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 1: Aktuelle Encoderposition MOTOR_ENC_ActualPosition
d_master.SdoWr(0x1A00, 1, 0x396B0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 2: Aktuelle Indexposition MOTOR_ENC_ActualIndexPosition
d_master.SdoWr(0x1A00, 0, 2)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1800, 0x03, 100)                                    # COP_TxPDO1_CommunicationParameter_InhibitTime Inhibt-Time 10 ms
d_master.SdoWr(0x1800, 1, 0x182)                                     # COP_TxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Init Betriebsart
d_master.SdoWr(0x3004, 0x00, 0)                                      # DEV_Enable
d_master.SdoWr(0x3003, 0x00, 7)                                      # DEV_Mode
d_master.SdoWr(0x3004, 0x00, 1)                                      # DEV_Enable

mc.Can.PdoWr(0, [1, 0])                                              # NMT Protocol - Alle Geräte in Operational schalten

d_master.SdoWr(0x3000, 0x11, 300000)                                 # DEV_CmdData1
d_master.SdoWr(0x3000, 0x10, 2500)                                   # DEV_CmdData0
d_master.SdoWr(0x3000, 0x01, 0)                                      # DEV_Cmd
d_master.SdoWr(0x3000, 0x01, 0x34)                                   # DEV_Cmd

while 1:
   stat = d_master.SdoRd(0x3002, 0x00)                               # DEV_Status
   if (stat & 0x10) == 0x10:                                         # Wenn Position Reached
      print "Encoder-Master    :%d" % d_master.SdoRd(0x396A, 0x00)   # MOTOR_ENC_ActualPosition
      print "Index-Master      :%d" % d_master.SdoRd(0x396B, 0x00)   # MOTOR_ENC_ActualIndexPosition
      print "Encoder-Slave     :%d"% d_slave.SdoRd(0x3991, 0xA0)     # MOTOR_ENC_VIRT1_ActualPosition
      print "Index-Slave       :%d"% d_slave.SdoRd(0x3991, 0xB0)     # MOTOR_ENC_VIRT1_ActualIndexPosition
      print "Index-Cnt-Slave   :%d"% d_slave.SdoRd(0x3991, 0xC0)     # MOTOR_ENC_VIRT1_ActualIndexCount
      print "Encoder-Slave-Raw :%d"% d_slave.SdoRd(0x3991, 0x10)     # MOTOR_ENC_VIRT1_RawPos
      print "Index-Slave-Raw   :%d"% d_slave.SdoRd(0x3991, 0x11)     # MOTOR_ENC_VIRT1_RawIndexPos
      break


3991.A0h Virtueller Encoder 1 - Aktuelle Position

Name | MOTOR_ENC_VIRT1_ActualPosition
Bezeichnung | Virtueller Encoder 1 - Aktuelle Position
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.93.00.20
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter liefert die aktuelle Position, die über den virtuellen Encoder gezählt wurde. Die Zahl der Pulse pro Umdrehung der Motorwelle hängt von der Auflösung des virtuellen Encoders ab.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa
import time

d_master = Dsa(2)
d_slave  = Dsa(1)

def InitPars (d):
   d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Sperren
   d.SdoWr(0x3000, 0x00, 1)           # DEV_Cmd - Fehler löschen
   d.SdoWr(0x3000, 0x00, 0x82)        # DEV_Cmd - Defaultparameter

   d.SdoWr(0x3900, 0x00, 1)           # MOTOR_Type
   d.SdoWr(0x3911, 0x00, 0)           # MOTOR_Polarity

   d.SdoWr(0x3910, 0x00, 10)          # MOTOR_PolN
   d.SdoWr(0x3962, 0x00, 2000)        # MOTOR_ENC_Resolution

   d.SdoWr(0x3901, 0x00, 3000)        # MOTOR_Nn
   d.SdoWr(0x3902, 0x00, 24000)       # MOTOR_Un

   d.SdoWr(0x3350, 0x00, 2410)        # VEL_Feedback
   d.SdoWr(0x3550, 0x00, 2410)        # SVEL_Feedback

   d.SdoWr(0x3221, 0x00, 2000)        # CURR_LimitMaxPos
   d.SdoWr(0x3223, 0x00, 2000)        # CURR_LimitMaxNeg

   d.SdoWr(0x3210, 0x00, 51)          # CURR_Kp
   d.SdoWr(0x3211, 0x00, 54)          # CURR_Ki

   d.SdoWr(0x3310, 0x00, 200)         # VEL_Kp
   d.SdoWr(0x3311, 0x00, 10)          # VEL_Ki
   d.SdoWr(0x3314, 0x00, 1000)        # VEL_Kvff

   d.SdoWr(0x3341, 0x00, 500)         # VEL_Acc_dT
   d.SdoWr(0x3343, 0x00, 500)         # VEL_Dec_dT

   d.SdoWr(0x3510, 0x00, 205)         # SVEL_Kp
   d.SdoWr(0x3511, 0x00, 108)         # SVEL_Ki

InitPars(d_master)
InitPars(d_slave)

# Virtueller Encoder Init
d_slave.SdoWr(0x3350, 0x00, 0x991)                                       # VEL_FeedbackEncoderfeedback Positionierregler auf virtuellen Encoder einstellen (Wert kommt über PDO)
d_slave.SdoWr(0x3991, 0x08, 25)                                      # MOTOR_ENC_VIRT1_RawPosBits Externer Encoder Auflösung 25bit
d_slave.SdoWr(0x3991, 0x20, 2000)                                    # MOTOR_ENC_VIRT1_Resolution_Cnt Externer Encoder Auflösung pro Umdrehung

# Rx-Pdo Mapping
d_slave.SdoWr(0x1600, 0, 0)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1600, 1, 0x39911020)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 1: Virtuell-Encoder Raw position MOTOR_ENC_VIRT1_RawPos
d_slave.SdoWr(0x1600, 2, 0x39911120)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 2: Virtuell-Encoder Raw Index position MOTOR_ENC_VIRT1_RawIndexPos
d_slave.SdoWr(0x1600, 0, 2)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1400, 1, 0x182)                                      # COP_RxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Tx-Pdo Mapping
d_master.SdoWr(0x1A00, 0, 0)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1A00, 1, 0x396A0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 1: Aktuelle Encoderposition MOTOR_ENC_ActualPosition
d_master.SdoWr(0x1A00, 1, 0x396B0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 2: Aktuelle Indexposition MOTOR_ENC_ActualIndexPosition
d_master.SdoWr(0x1A00, 0, 2)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1800, 0x03, 100)                                    # COP_TxPDO1_CommunicationParameter_InhibitTime Inhibt-Time 10 ms
d_master.SdoWr(0x1800, 1, 0x182)                                     # COP_TxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Init Betriebsart
d_master.SdoWr(0x3004, 0x00, 0)                                      # DEV_Enable
d_master.SdoWr(0x3003, 0x00, 7)                                      # DEV_Mode
d_master.SdoWr(0x3004, 0x00, 1)                                      # DEV_Enable

mc.Can.PdoWr(0, [1, 0])                                              # NMT Protocol - Alle Geräte in Operational schalten

d_master.SdoWr(0x3000, 0x11, 300000)                                 # DEV_CmdData1
d_master.SdoWr(0x3000, 0x10, 2500)                                   # DEV_CmdData0
d_master.SdoWr(0x3000, 0x01, 0)                                      # DEV_Cmd
d_master.SdoWr(0x3000, 0x01, 0x34)                                   # DEV_Cmd

while 1:
   stat = d_master.SdoRd(0x3002, 0x00)                               # DEV_Status
   if (stat & 0x10) == 0x10:                                         # Wenn Position Reached
      print "Encoder-Master    :%d" % d_master.SdoRd(0x396A, 0x00)   # MOTOR_ENC_ActualPosition
      print "Index-Master      :%d" % d_master.SdoRd(0x396B, 0x00)   # MOTOR_ENC_ActualIndexPosition
      print "Encoder-Slave     :%d"% d_slave.SdoRd(0x3991, 0xA0)     # MOTOR_ENC_VIRT1_ActualPosition
      print "Index-Slave       :%d"% d_slave.SdoRd(0x3991, 0xB0)     # MOTOR_ENC_VIRT1_ActualIndexPosition
      print "Index-Cnt-Slave   :%d"% d_slave.SdoRd(0x3991, 0xC0)     # MOTOR_ENC_VIRT1_ActualIndexCount
      print "Encoder-Slave-Raw :%d"% d_slave.SdoRd(0x3991, 0x10)     # MOTOR_ENC_VIRT1_RawPos
      print "Index-Slave-Raw   :%d"% d_slave.SdoRd(0x3991, 0x11)     # MOTOR_ENC_VIRT1_RawIndexPos
      break


3991.B0h Virtueller Encoder 1 - Aktuelle Index Position

Name | MOTOR_ENC_VIRT1_ActualIndexPosition
Bezeichnung | Virtueller Encoder 1 - Aktuelle Index Position
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.93.00.20
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter liefert eine aktuelle Position des Indexpulses vom virtuellen Encoder zurück. Bei einem Puls des Indexsignals wird die aktuelle virtuelle Encoderposition gespeichert. Dieser Wert kann dann mit diesem Parameter abgefragt werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa
import time

d_master = Dsa(2)
d_slave  = Dsa(1)

def InitPars (d):
   d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Sperren
   d.SdoWr(0x3000, 0x00, 1)           # DEV_Cmd - Fehler löschen
   d.SdoWr(0x3000, 0x00, 0x82)        # DEV_Cmd - Defaultparameter

   d.SdoWr(0x3900, 0x00, 1)           # MOTOR_Type
   d.SdoWr(0x3911, 0x00, 0)           # MOTOR_Polarity

   d.SdoWr(0x3910, 0x00, 10)          # MOTOR_PolN
   d.SdoWr(0x3962, 0x00, 2000)        # MOTOR_ENC_Resolution

   d.SdoWr(0x3901, 0x00, 3000)        # MOTOR_Nn
   d.SdoWr(0x3902, 0x00, 24000)       # MOTOR_Un

   d.SdoWr(0x3350, 0x00, 2410)        # VEL_Feedback
   d.SdoWr(0x3550, 0x00, 2410)        # SVEL_Feedback

   d.SdoWr(0x3221, 0x00, 2000)        # CURR_LimitMaxPos
   d.SdoWr(0x3223, 0x00, 2000)        # CURR_LimitMaxNeg

   d.SdoWr(0x3210, 0x00, 51)          # CURR_Kp
   d.SdoWr(0x3211, 0x00, 54)          # CURR_Ki

   d.SdoWr(0x3310, 0x00, 200)         # VEL_Kp
   d.SdoWr(0x3311, 0x00, 10)          # VEL_Ki
   d.SdoWr(0x3314, 0x00, 1000)        # VEL_Kvff

   d.SdoWr(0x3341, 0x00, 500)         # VEL_Acc_dT
   d.SdoWr(0x3343, 0x00, 500)         # VEL_Dec_dT

   d.SdoWr(0x3510, 0x00, 205)         # SVEL_Kp
   d.SdoWr(0x3511, 0x00, 108)         # SVEL_Ki

InitPars(d_master)
InitPars(d_slave)

# Virtueller Encoder Init
d_slave.SdoWr(0x3350, 0x00, 0x991)                                       # VEL_FeedbackEncoderfeedback Positionierregler auf virtuellen Encoder einstellen (Wert kommt über PDO)
d_slave.SdoWr(0x3991, 0x08, 25)                                      # MOTOR_ENC_VIRT1_RawPosBits Externer Encoder Auflösung 25bit
d_slave.SdoWr(0x3991, 0x20, 2000)                                    # MOTOR_ENC_VIRT1_Resolution_Cnt Externer Encoder Auflösung pro Umdrehung

# Rx-Pdo Mapping
d_slave.SdoWr(0x1600, 0, 0)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1600, 1, 0x39911020)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 1: Virtuell-Encoder Raw position MOTOR_ENC_VIRT1_RawPos
d_slave.SdoWr(0x1600, 2, 0x39911120)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 2: Virtuell-Encoder Raw Index position MOTOR_ENC_VIRT1_RawIndexPos
d_slave.SdoWr(0x1600, 0, 2)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1400, 1, 0x182)                                      # COP_RxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Tx-Pdo Mapping
d_master.SdoWr(0x1A00, 0, 0)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1A00, 1, 0x396A0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 1: Aktuelle Encoderposition MOTOR_ENC_ActualPosition
d_master.SdoWr(0x1A00, 1, 0x396B0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 2: Aktuelle Indexposition MOTOR_ENC_ActualIndexPosition
d_master.SdoWr(0x1A00, 0, 2)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1800, 0x03, 100)                                    # COP_TxPDO1_CommunicationParameter_InhibitTime Inhibt-Time 10 ms
d_master.SdoWr(0x1800, 1, 0x182)                                     # COP_TxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Init Betriebsart
d_master.SdoWr(0x3004, 0x00, 0)                                      # DEV_Enable
d_master.SdoWr(0x3003, 0x00, 7)                                      # DEV_Mode
d_master.SdoWr(0x3004, 0x00, 1)                                      # DEV_Enable

mc.Can.PdoWr(0, [1, 0])                                              # NMT Protocol - Alle Geräte in Operational schalten

d_master.SdoWr(0x3000, 0x11, 300000)                                 # DEV_CmdData1
d_master.SdoWr(0x3000, 0x10, 2500)                                   # DEV_CmdData0
d_master.SdoWr(0x3000, 0x01, 0)                                      # DEV_Cmd
d_master.SdoWr(0x3000, 0x01, 0x34)                                   # DEV_Cmd

while 1:
   stat = d_master.SdoRd(0x3002, 0x00)                               # DEV_Status
   if (stat & 0x10) == 0x10:                                         # Wenn Position Reached
      print "Encoder-Master    :%d" % d_master.SdoRd(0x396A, 0x00)   # MOTOR_ENC_ActualPosition
      print "Index-Master      :%d" % d_master.SdoRd(0x396B, 0x00)   # MOTOR_ENC_ActualIndexPosition
      print "Encoder-Slave     :%d"% d_slave.SdoRd(0x3991, 0xA0)     # MOTOR_ENC_VIRT1_ActualPosition
      print "Index-Slave       :%d"% d_slave.SdoRd(0x3991, 0xB0)     # MOTOR_ENC_VIRT1_ActualIndexPosition
      print "Index-Cnt-Slave   :%d"% d_slave.SdoRd(0x3991, 0xC0)     # MOTOR_ENC_VIRT1_ActualIndexCount
      print "Encoder-Slave-Raw :%d"% d_slave.SdoRd(0x3991, 0x10)     # MOTOR_ENC_VIRT1_RawPos
      print "Index-Slave-Raw   :%d"% d_slave.SdoRd(0x3991, 0x11)     # MOTOR_ENC_VIRT1_RawIndexPos
      break


3991.C0h Virtueller Encoder 1 - Index Zähler

Name | MOTOR_ENC_VIRT1_ActualIndexCount
Bezeichnung | Virtueller Encoder 1 - Index Zähler
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 65535]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Alle
Verfügbar ab | 1.93.00.20
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Mit dem Parameter kann die aktuelle Anzahl der Indexpulsen abgefragt werden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import Dsa
import time

d_master = Dsa(2)
d_slave  = Dsa(1)

def InitPars (d):
   d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Sperren
   d.SdoWr(0x3000, 0x00, 1)           # DEV_Cmd - Fehler löschen
   d.SdoWr(0x3000, 0x00, 0x82)        # DEV_Cmd - Defaultparameter

   d.SdoWr(0x3900, 0x00, 1)           # MOTOR_Type
   d.SdoWr(0x3911, 0x00, 0)           # MOTOR_Polarity

   d.SdoWr(0x3910, 0x00, 10)          # MOTOR_PolN
   d.SdoWr(0x3962, 0x00, 2000)        # MOTOR_ENC_Resolution

   d.SdoWr(0x3901, 0x00, 3000)        # MOTOR_Nn
   d.SdoWr(0x3902, 0x00, 24000)       # MOTOR_Un

   d.SdoWr(0x3350, 0x00, 2410)        # VEL_Feedback
   d.SdoWr(0x3550, 0x00, 2410)        # SVEL_Feedback

   d.SdoWr(0x3221, 0x00, 2000)        # CURR_LimitMaxPos
   d.SdoWr(0x3223, 0x00, 2000)        # CURR_LimitMaxNeg

   d.SdoWr(0x3210, 0x00, 51)          # CURR_Kp
   d.SdoWr(0x3211, 0x00, 54)          # CURR_Ki

   d.SdoWr(0x3310, 0x00, 200)         # VEL_Kp
   d.SdoWr(0x3311, 0x00, 10)          # VEL_Ki
   d.SdoWr(0x3314, 0x00, 1000)        # VEL_Kvff

   d.SdoWr(0x3341, 0x00, 500)         # VEL_Acc_dT
   d.SdoWr(0x3343, 0x00, 500)         # VEL_Dec_dT

   d.SdoWr(0x3510, 0x00, 205)         # SVEL_Kp
   d.SdoWr(0x3511, 0x00, 108)         # SVEL_Ki

InitPars(d_master)
InitPars(d_slave)

# Virtueller Encoder Init
d_slave.SdoWr(0x3350, 0x00, 0x991)                                       # VEL_FeedbackEncoderfeedback Positionierregler auf virtuellen Encoder einstellen (Wert kommt über PDO)
d_slave.SdoWr(0x3991, 0x08, 25)                                      # MOTOR_ENC_VIRT1_RawPosBits Externer Encoder Auflösung 25bit
d_slave.SdoWr(0x3991, 0x20, 2000)                                    # MOTOR_ENC_VIRT1_Resolution_Cnt Externer Encoder Auflösung pro Umdrehung

# Rx-Pdo Mapping
d_slave.SdoWr(0x1600, 0, 0)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1600, 1, 0x39911020)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 1: Virtuell-Encoder Raw position MOTOR_ENC_VIRT1_RawPos
d_slave.SdoWr(0x1600, 2, 0x39911120)                                 # COP_RxPDO1_Mapping_1stApplicationObject Objekt 2: Virtuell-Encoder Raw Index position MOTOR_ENC_VIRT1_RawIndexPos
d_slave.SdoWr(0x1600, 0, 2)                                          # COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects
d_slave.SdoWr(0x1400, 1, 0x182)                                      # COP_RxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Tx-Pdo Mapping
d_master.SdoWr(0x1A00, 0, 0)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1A00, 1, 0x396A0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 1: Aktuelle Encoderposition MOTOR_ENC_ActualPosition
d_master.SdoWr(0x1A00, 1, 0x396B0020)                                # COP_TxPDO1_Mapping_1stApplicationObject Objetk 2: Aktuelle Indexposition MOTOR_ENC_ActualIndexPosition
d_master.SdoWr(0x1A00, 0, 2)                                         # COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects
d_master.SdoWr(0x1800, 0x03, 100)                                    # COP_TxPDO1_CommunicationParameter_InhibitTime Inhibt-Time 10 ms
d_master.SdoWr(0x1800, 1, 0x182)                                     # COP_TxPDO1_CommunicationParameter_CobId Cob-ID : 0x182

# Init Betriebsart
d_master.SdoWr(0x3004, 0x00, 0)                                      # DEV_Enable
d_master.SdoWr(0x3003, 0x00, 7)                                      # DEV_Mode
d_master.SdoWr(0x3004, 0x00, 1)                                      # DEV_Enable

mc.Can.PdoWr(0, [1, 0])                                              # NMT Protocol - Alle Geräte in Operational schalten

d_master.SdoWr(0x3000, 0x11, 300000)                                 # DEV_CmdData1
d_master.SdoWr(0x3000, 0x10, 2500)                                   # DEV_CmdData0
d_master.SdoWr(0x3000, 0x01, 0)                                      # DEV_Cmd
d_master.SdoWr(0x3000, 0x01, 0x34)                                   # DEV_Cmd

while 1:
   stat = d_master.SdoRd(0x3002, 0x00)                               # DEV_Status
   if (stat & 0x10) == 0x10:                                         # Wenn Position Reached
      print "Encoder-Master    :%d" % d_master.SdoRd(0x396A, 0x00)   # MOTOR_ENC_ActualPosition
      print "Index-Master      :%d" % d_master.SdoRd(0x396B, 0x00)   # MOTOR_ENC_ActualIndexPosition
      print "Encoder-Slave     :%d"% d_slave.SdoRd(0x3991, 0xA0)     # MOTOR_ENC_VIRT1_ActualPosition
      print "Index-Slave       :%d"% d_slave.SdoRd(0x3991, 0xB0)     # MOTOR_ENC_VIRT1_ActualIndexPosition
      print "Index-Cnt-Slave   :%d"% d_slave.SdoRd(0x3991, 0xC0)     # MOTOR_ENC_VIRT1_ActualIndexCount
      print "Encoder-Slave-Raw :%d"% d_slave.SdoRd(0x3991, 0x10)     # MOTOR_ENC_VIRT1_RawPos
      print "Index-Slave-Raw   :%d"% d_slave.SdoRd(0x3991, 0x11)     # MOTOR_ENC_VIRT1_RawIndexPos
      break


Inhalt - Parameter 3000h (DSA) - Bremsenmanagement

39A0.00h | MOTOR_BrakeManagement_Config | Bremsenmanagement - Konfiguration
39A0.01h | MOTOR_BrakeManagement_Status | Bremsenmanagement - Status
39A0.06h | MOTOR_BrakeManagement_VelMin | Bremsenmanagement - Drehzahlschwelle
39A0.07h | MOTOR_BrakeManagement_Din | Bremsenmanagement - Bremseingang
39A0.08h | MOTOR_BrakeManagement_Dout | Bremsenmanagement - Bremsausgang
39A0.09h | MOTOR_BrakeManagement_UpBrakeOff | Bremsenmanagement - Spannungsschwelle OFF
39A0.0Ah | MOTOR_BrakeManagement_UpBrakeOn | Bremsenmanagement - Spannungsschwelle ON
39A0.10h | MOTOR_BrakeManagement_OffDelay1 | Bremsenmanagement - AUS-Zeitverzögerung1
39A0.11h | MOTOR_BrakeManagement_OffDelay2 | Bremsenmanagement - AUS-Zeitverzögerung2
39A0.12h | MOTOR_BrakeManagement_OnDelay1 | Bremsenmanagement - EIN-Zeitverzögerung1
39A0.13h | MOTOR_BrakeManagement_OnDelay2 | Bremsenmanagement - EIN-Zeitverzögerung2
39A0.18h | MOTOR_BrakeManagement_OffOrConditionFlags | Bremsenmanagement - AUS-ODER-Bedingung
39A0.19h | MOTOR_BrakeManagement_OffAndConditionFlags | Bremsenmanagement - AUS-UND-Bedingung
39A0.1Ah | MOTOR_BrakeManagement_OnOrConditionFlags | Bremsenmanagement - EIN-ODER-Bedingung
39A0.1Bh | MOTOR_BrakeManagement_OnAndConditionFlags | Bremsenmanagement - EIN-UND-Bedingung


39A0.00h Bremsenmanagement - Konfiguration

Name | MOTOR_BrakeManagement_Config
Bezeichnung | Bremsenmanagement - Konfiguration
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.50
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_BrakeManagement_Status, MOTOR_BrakeManagement_VelMin, MOTOR_BrakeManagement_Din, MOTOR_BrakeManagement_Dout, MOTOR_BrakeManagement_UpBrakeOff, MOTOR_BrakeManagement_UpBrakeOn, MOTOR_BrakeManagement_OffDelay1, MOTOR_BrakeManagement_OffDelay2, MOTOR_BrakeManagement_OnDelay1, MOTOR_BrakeManagement_OnDelay2, MOTOR_BrakeManagement_OffOrConditionFlags, MOTOR_BrakeManagement_OffAndConditionFlags, MOTOR_BrakeManagement_OnOrConditionFlags, MOTOR_BrakeManagement_OnAndConditionFlags

Beschreibung

Dieser Parameter konfiguriert das Bremsenmanagement.

Parameterwerte:
Bit | Funktion | Beschreibung
0 | Brake_Management_Enable | Aktivierung des Bremsenmanagements
1 | Brake_Management_AutoDisable | Automatisches Sperren der Betriebsfreigabe am Ende einer Bewegung
Es stehen zwei Möglichkeiten der Bremssteuerung zur Verfügung:
  • Steuerung über die Betriebsfreigabe
  • Steuerung über das Starten einer Bewegung
Weiterhin kann der digitale Ausgang für die Bremse (Brake_Management_Dout) definiert werden . Die vier verschiedene Verzögerungszeit (t1 ... t4) sind unten im Detail beschrieben.

Im Fehlerfall (Error Register DEV_ErrorReg <0) wird die Bremse automatisch aktiviert.

Die Funktionen im Detail:

1. Bremsenmanagement über Betriebsfreigabe
  • Funktion
    • Kommando Betriebsfreigabe wird sofort ausgeführt
    • Nach Verzögerungszeit t1 (MOTOR_BrakeManagement_OffDelay1) Bremse deaktivieren
    • Warten bis Bremse deaktiviert ist: t2 (MOTOR_BrakeManagement_OffDelay2)
    • Jetzt kann eine Bewegung gestartet werden.
    • Kommando Betriebsfreigabe sperren
    • Nach t3 (MOTOR_BrakeManagement_OnDelay1) Bremse aktivieren
    • Warten bis Bremse aktiviert ist: t4 (MOTOR_BrakeManagement_OffDelay2)
    • Sperren der Betriebsfreigabe

  • Parameter
    • MOTOR_BrakeManagement_Config =1
    • MOTOR_BrakeManagement_OffOrConditionFlags = 4
    • MOTOR_BrakeManagement_OnOrConditionFlags = 4
    • Digitaler Ausgang s. MOTOR_BrakeManagement_Dout
    • Zeiten t1 ... t4 s. MOTOR_BrakeManagement_OffDelay1, MOTOR_BrakeManagement_OffDelay2, MOTOR_BrakeManagement_OnDelay1, MOTOR_BrakeManagement_OnDelay2

2. Bremsenmanagement über eine Bewegung

Hier gibt es die Möglichkeit am Ende der Bewegung die Betriebsfreigabe zu sperren oder nicht:

2.1 Bremsenmanagement über eine Bewegung (ohne Sperren der Betriebsfreigabe am Ende)
  • Funktion
    • Kommando für eine Bewegung
    • Die Betriebsfreigabe und das Deaktivieren der Bremse erfolgen sofort
    • Warten bis Bremse deaktiviert ist: t2 (MOTOR_BrakeManagement_OffDelay2)
    • Starten der Bewegung
    • Ende der Bewegung
    • Nach t3 (MOTOR_BrakeManagement_OnDelay1) wird die Bremse aktiviert.
    • Betriebsfreigabe bleibt bestehen

  • Parameter
    • MOTOR_BrakeManagement_Config =1
    • MOTOR_BrakeManagement_OffOrConditionFlags = 1
    • MOTOR_BrakeManagement_OnOrConditionFlags = 1
    • Digitaler Ausgang s. MOTOR_BrakeManagement_Dout
    • Zeiten t2 ... t3 s. MOTOR_BrakeManagement_OffDelay2, MOTOR_BrakeManagement_OnDelay1

2.2 Bremsenmanagement über eine Bewegung (mit Sperren der Betriebsfreigabe am Ende)
  • Funktion
    • Kommando für eine Bewegung
    • Die Betriebsfreigabe erfolgt sofort
    • Nach der Verzögerungszeit t1 (MOTOR_BrakeManagement_OffDelay1) Bremse deaktivieren
    • Warten bis Bremse deaktiviert ist: t2 (MOTOR_BrakeManagement_OffDelay2)
    • Starten der Bewegung
    • Ende der Bewegung
    • Nach t3 (MOTOR_BrakeManagement_OnDelay1) Bremse aktivieren
    • Warten bis Bremse aktiviert ist: t4 (MOTOR_BrakeManagement_OffDelay2)
    • Sperren der Betriebsfreigabe

  • Parameter
    • MOTOR_BrakeManagement_Config =3
    • MOTOR_BrakeManagement_OffOrConditionFlags = 1
    • MOTOR_BrakeManagement_OnOrConditionFlags = 1
    • Digitaler Ausgang s. MOTOR_BrakeManagement_Dout
    • Zeiten t1 ... t4 s. MOTOR_BrakeManagement_OffDelay1, MOTOR_BrakeManagement_OffDelay2, MOTOR_BrakeManagement_OnDelay1, MOTOR_BrakeManagement_OnDelay2

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                                  # NodeId = 1

d.SdoWr(0x39A0, 0x00, 1)                                    # MOTOR_BrakeManagement_Config - Enable

print "Bremsmanagement Konfig=",  d.SdoRd(0x39A0, 0x00)     # MOTOR_BrakeManagement_Config
print "Bremsmanagement Status=", hex(d.SdoRd(0x39A0, 0x01)) # MOTOR_BrakeManagement_Status

print "Drehzahlschwelle=", d.SdoRd(0x39A0, 0x06)             # MOTOR_BrakeManagement_VelMin

print "Digital Input Bremse=", d.SdoRd(0x39A0, 0x07)        # MOTOR_BrakeManagement_Din
print "Digital Output Bremse=", hex(d.SdoRd(0x39A0, 0x08))  # MOTOR_BrakeManagement_Dout

print "Über Up:", d.SdoRd(0x39A0, 0x09),"mV löse Bremse"    # MOTOR_BrakeManagement_UpBrakeOff
print "Unter Up:", d.SdoRd(0x39A0, 0x0A),"mV bremse"        # MOTOR_BrakeManagement_UpBrakeOn

#init Bremsmanagement
d.SdoWr(0x39A0, 0x10, 25)                                   # MOTOR_BrakeManagement_OffDelay1 - t1 = 25 ms
d.SdoWr(0x39A0, 0x11, 75)                                   # MOTOR_BrakeManagement_OffDelay2 - t2 = 75 ms

d.SdoWr(0x39A0, 0x12, 15)                                   # MOTOR_BrakeManagement_OnDelay1 - t3 = 15 ms
d.SdoWr(0x39A0, 0x13, 35)                                   # MOTOR_BrakeManagement_OnDelay2 - t4 = 35 ms

d.SdoWr(0x39A0, 0x18, 0x01)                                 # MOTOR_BrakeManagement_OffOrConditionFlags - lösen bei MoveCmd
d.SdoWr(0x39A0, 0x19, 0x00)                                 # MOTOR_BrakeManagement_OffAndConditionFlags

d.SdoWr(0x39A0, 0x1A, 0x21)                                 # MOTOR_BrakeManagement_OnOrConditionFlags - bremsen bei Rampe stoppt oder Ziel erreicht
d.SdoWr(0x39A0, 0x1B, 0x00)                                 # MOTOR_BrakeManagement_OnAndConditionFlags

#init
d.SdoWr(0x3004, 0x00, 0)                                    # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)                                    # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                                    # VEL_DesiredValue - Solldrehzahl = 500 [U/min]
d.SdoWr(0x3004, 0x00, 1)                                    # DEV_Enable - Endstufe freigeben

# Schreibe Parameter für Bewegung
d.SdoWr(0x3000, 0x10, 600)                                  # DEV_CmdData0 - 600 U/min
d.SdoWr(0x3000, 0x11, 6000)                                 # DEV_CmdData1 - 6000 ink

# Führe Bewegung 10 mal aus
for i in xrange(10):
   d.SdoWr(0x3000, 0x01, 0)                                 # DEV_Cmd_ExecOnChange - Toggle
   d.SdoWr(0x3000, 0x01, 0x34)                              # DEV_Cmd_ExecOnChange - MovR
   reached = (d.SdoRd(0x3002, 0x00) & 0x10)                 # DEV_Status
   while not(reached):                                      # Ziel noch nicht erreicht ?
      reached = (d.SdoRd(0x3002, 0x00) & 0x10)              # DEV_Status
   if reached:                                              # Ziel erreicht?
      time.sleep(0.5)                                       # Warte 500 ms


39A0.01h Bremsenmanagement - Status

Name | MOTOR_BrakeManagement_Status
Bezeichnung | Bremsenmanagement - Status
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.50
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_BrakeManagement_Config, MOTOR_BrakeManagement_VelMin, MOTOR_BrakeManagement_Din, MOTOR_BrakeManagement_Dout, MOTOR_BrakeManagement_UpBrakeOff, MOTOR_BrakeManagement_UpBrakeOn, MOTOR_BrakeManagement_OffDelay1, MOTOR_BrakeManagement_OffDelay2, MOTOR_BrakeManagement_OnDelay1, MOTOR_BrakeManagement_OnDelay2, MOTOR_BrakeManagement_OffOrConditionFlags, MOTOR_BrakeManagement_OffAndConditionFlags, MOTOR_BrakeManagement_OnOrConditionFlags, MOTOR_BrakeManagement_OnAndConditionFlags

Beschreibung

Dieser Parameter liefert den aktuellen Status des Bremsenmanagements zurück.

Bitbelegung:
Bit | Name | Beschreibung
0 | MOTOR_BrakeManagement_Status_Enable | Bremsenmanagement aktiviert
3 | MOTOR_BrakeManagement_Status_Brake | 0 = Bremse deaktiviert, 1 = Bremse aktiviert
Allgemeine Beschreibung siehe unter MOTOR_BrakeManagement_Config.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                                  # NodeId = 1

d.SdoWr(0x39A0, 0x00, 1)                                    # MOTOR_BrakeManagement_Config - Enable

print "Bremsmanagement Konfig=",  d.SdoRd(0x39A0, 0x00)     # MOTOR_BrakeManagement_Config
print "Bremsmanagement Status=", hex(d.SdoRd(0x39A0, 0x01)) # MOTOR_BrakeManagement_Status

print "Drehzahlschwelle=", d.SdoRd(0x39A0, 0x06)             # MOTOR_BrakeManagement_VelMin

print "Digital Input Bremse=", d.SdoRd(0x39A0, 0x07)        # MOTOR_BrakeManagement_Din
print "Digital Output Bremse=", hex(d.SdoRd(0x39A0, 0x08))  # MOTOR_BrakeManagement_Dout

print "Über Up:", d.SdoRd(0x39A0, 0x09),"mV löse Bremse"    # MOTOR_BrakeManagement_UpBrakeOff
print "Unter Up:", d.SdoRd(0x39A0, 0x0A),"mV bremse"        # MOTOR_BrakeManagement_UpBrakeOn

#init Bremsmanagement
d.SdoWr(0x39A0, 0x10, 25)                                   # MOTOR_BrakeManagement_OffDelay1 - t1 = 25 ms
d.SdoWr(0x39A0, 0x11, 75)                                   # MOTOR_BrakeManagement_OffDelay2 - t2 = 75 ms

d.SdoWr(0x39A0, 0x12, 15)                                   # MOTOR_BrakeManagement_OnDelay1 - t3 = 15 ms
d.SdoWr(0x39A0, 0x13, 35)                                   # MOTOR_BrakeManagement_OnDelay2 - t4 = 35 ms

d.SdoWr(0x39A0, 0x18, 0x01)                                 # MOTOR_BrakeManagement_OffOrConditionFlags - lösen bei MoveCmd
d.SdoWr(0x39A0, 0x19, 0x00)                                 # MOTOR_BrakeManagement_OffAndConditionFlags

d.SdoWr(0x39A0, 0x1A, 0x21)                                 # MOTOR_BrakeManagement_OnOrConditionFlags - bremsen bei Rampe stoppt oder Ziel erreicht
d.SdoWr(0x39A0, 0x1B, 0x00)                                 # MOTOR_BrakeManagement_OnAndConditionFlags

#init
d.SdoWr(0x3004, 0x00, 0)                                    # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)                                    # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                                    # VEL_DesiredValue - Solldrehzahl = 500 [U/min]
d.SdoWr(0x3004, 0x00, 1)                                    # DEV_Enable - Endstufe freigeben

# Schreibe Parameter für Bewegung
d.SdoWr(0x3000, 0x10, 600)                                  # DEV_CmdData0 - 600 U/min
d.SdoWr(0x3000, 0x11, 6000)                                 # DEV_CmdData1 - 6000 ink

# Führe Bewegung 10 mal aus
for i in xrange(10):
   d.SdoWr(0x3000, 0x01, 0)                                 # DEV_Cmd_ExecOnChange - Toggle
   d.SdoWr(0x3000, 0x01, 0x34)                              # DEV_Cmd_ExecOnChange - MovR
   reached = (d.SdoRd(0x3002, 0x00) & 0x10)                 # DEV_Status
   while not(reached):                                      # Ziel noch nicht erreicht ?
      reached = (d.SdoRd(0x3002, 0x00) & 0x10)              # DEV_Status
   if reached:                                              # Ziel erreicht?
      time.sleep(0.5)                                       # Warte 500 ms


39A0.06h Bremsenmanagement - Drehzahlschwelle

Name | MOTOR_BrakeManagement_VelMin
Bezeichnung | Bremsenmanagement - Drehzahlschwelle
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [-1 .. 2147483647]
Defaultwert | -1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.50
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_BrakeManagement_Config, MOTOR_BrakeManagement_Status, MOTOR_BrakeManagement_Din, MOTOR_BrakeManagement_Dout, MOTOR_BrakeManagement_UpBrakeOff, MOTOR_BrakeManagement_UpBrakeOn, MOTOR_BrakeManagement_OffDelay1, MOTOR_BrakeManagement_OffDelay2, MOTOR_BrakeManagement_OnDelay1, MOTOR_BrakeManagement_OnDelay2, MOTOR_BrakeManagement_OffOrConditionFlags, MOTOR_BrakeManagement_OffAndConditionFlags, MOTOR_BrakeManagement_OnOrConditionFlags, MOTOR_BrakeManagement_OnAndConditionFlags

Beschreibung

Dieser Parameter definiert die minimale Drehzahl der Motorwelle, bevor die Bremse aktiviert wird.
Der Wert 0xFFFFFFFF deaktiviert die Prüfung der Drehzahl (die Funktion ist ausgeschaltet).

Die Drehzahl wird nur geprüft, wenn mindestens ein von den folgenden Bits der Ein-Bedingungen (MOTOR_BrakeManagement_OnOrConditionFlags und MOTOR_BrakeManagement_OnAndConditionFlags) gesetzt wird:
- bit 0 - Rampgenerator stop
- bit 5 - TargetReachedBit
- bit 6 - After QuickStop
- bit 7 - After Halt

Allgemeine Beschreibung siehe unter MOTOR_BrakeManagement_Config.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                                  # NodeId = 1

d.SdoWr(0x39A0, 0x00, 1)                                    # MOTOR_BrakeManagement_Config - Enable

print "Bremsmanagement Konfig=",  d.SdoRd(0x39A0, 0x00)     # MOTOR_BrakeManagement_Config
print "Bremsmanagement Status=", hex(d.SdoRd(0x39A0, 0x01)) # MOTOR_BrakeManagement_Status

print "Drehzahlschwelle=", d.SdoRd(0x39A0, 0x06)             # MOTOR_BrakeManagement_VelMin

print "Digital Input Bremse=", d.SdoRd(0x39A0, 0x07)        # MOTOR_BrakeManagement_Din
print "Digital Output Bremse=", hex(d.SdoRd(0x39A0, 0x08))  # MOTOR_BrakeManagement_Dout

print "Über Up:", d.SdoRd(0x39A0, 0x09),"mV löse Bremse"    # MOTOR_BrakeManagement_UpBrakeOff
print "Unter Up:", d.SdoRd(0x39A0, 0x0A),"mV bremse"        # MOTOR_BrakeManagement_UpBrakeOn

#init Bremsmanagement
d.SdoWr(0x39A0, 0x10, 25)                                   # MOTOR_BrakeManagement_OffDelay1 - t1 = 25 ms
d.SdoWr(0x39A0, 0x11, 75)                                   # MOTOR_BrakeManagement_OffDelay2 - t2 = 75 ms

d.SdoWr(0x39A0, 0x12, 15)                                   # MOTOR_BrakeManagement_OnDelay1 - t3 = 15 ms
d.SdoWr(0x39A0, 0x13, 35)                                   # MOTOR_BrakeManagement_OnDelay2 - t4 = 35 ms

d.SdoWr(0x39A0, 0x18, 0x01)                                 # MOTOR_BrakeManagement_OffOrConditionFlags - lösen bei MoveCmd
d.SdoWr(0x39A0, 0x19, 0x00)                                 # MOTOR_BrakeManagement_OffAndConditionFlags

d.SdoWr(0x39A0, 0x1A, 0x21)                                 # MOTOR_BrakeManagement_OnOrConditionFlags - bremsen bei Rampe stoppt oder Ziel erreicht
d.SdoWr(0x39A0, 0x1B, 0x00)                                 # MOTOR_BrakeManagement_OnAndConditionFlags

#init
d.SdoWr(0x3004, 0x00, 0)                                    # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)                                    # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                                    # VEL_DesiredValue - Solldrehzahl = 500 [U/min]
d.SdoWr(0x3004, 0x00, 1)                                    # DEV_Enable - Endstufe freigeben

# Schreibe Parameter für Bewegung
d.SdoWr(0x3000, 0x10, 600)                                  # DEV_CmdData0 - 600 U/min
d.SdoWr(0x3000, 0x11, 6000)                                 # DEV_CmdData1 - 6000 ink

# Führe Bewegung 10 mal aus
for i in xrange(10):
   d.SdoWr(0x3000, 0x01, 0)                                 # DEV_Cmd_ExecOnChange - Toggle
   d.SdoWr(0x3000, 0x01, 0x34)                              # DEV_Cmd_ExecOnChange - MovR
   reached = (d.SdoRd(0x3002, 0x00) & 0x10)                 # DEV_Status
   while not(reached):                                      # Ziel noch nicht erreicht ?
      reached = (d.SdoRd(0x3002, 0x00) & 0x10)              # DEV_Status
   if reached:                                              # Ziel erreicht?
      time.sleep(0.5)                                       # Warte 500 ms


39A0.07h Bremsenmanagement - Bremseingang

Name | MOTOR_BrakeManagement_Din
Bezeichnung | Bremsenmanagement - Bremseingang
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {-137h, -136h, -135h, -134h, -133h, -132h, -131h, -130h, 0h, 130h, 131h, 132h, 133h, 134h, 135h, 136h, 137h}
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.50
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_BrakeManagement_Config, MOTOR_BrakeManagement_Status, MOTOR_BrakeManagement_VelMin, MOTOR_BrakeManagement_Dout, MOTOR_BrakeManagement_UpBrakeOff, MOTOR_BrakeManagement_UpBrakeOn, MOTOR_BrakeManagement_OffDelay1, MOTOR_BrakeManagement_OffDelay2, MOTOR_BrakeManagement_OnDelay1, MOTOR_BrakeManagement_OnDelay2, MOTOR_BrakeManagement_OffOrConditionFlags, MOTOR_BrakeManagement_OffAndConditionFlags, MOTOR_BrakeManagement_OnOrConditionFlags, MOTOR_BrakeManagement_OnAndConditionFlags

Beschreibung

Dieser Parameter bestimmt, welcher digitale Eingang als Bremseingang verwendet wird.
Positive Werte bedeuten, dass der jeweilige digitale Eingang High-Aktiv ist (negative bedeuten Low-Aktiv).

Die Anzahl der digitalen Eingänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Parameterwerte:
Wert (Hex) | Beschreibung
-0137h | digitaler Eingang 7 als Bremseingang, Low-Aktiv
-0136h | digitaler Eingang 6 als Bremseingang, Low-Aktiv
-0135h | digitaler Eingang 5 als Bremseingang, Low-Aktiv
-0134h | digitaler Eingang 4 als Bremseingang, Low-Aktiv
-0133h | digitaler Eingang 3 als Bremseingang, Low-Aktiv
-0132h | digitaler Eingang 2 als Bremseingang, Low-Aktiv
-0131h | digitaler Eingang 1 als Bremseingang, Low-Aktiv
-0130h | digitaler Eingang 0 als Bremseingang, Low-Aktiv
0 | kein hardwaremäßiger Bremseingang
0130h | digitaler Eingang 0 als Bremseingang, High-Aktiv
0131h | digitaler Eingang 1 als Bremseingang, High-Aktiv
0132h | digitaler Eingang 2 als Bremseingang, High-Aktiv
0133h | digitaler Eingang 3 als Bremseingang, High-Aktiv
0134h | digitaler Eingang 4 als Bremseingang, High-Aktiv
0135h | digitaler Eingang 5 als Bremseingang, High-Aktiv
0136h | digitaler Eingang 6 als Bremseingang, High-Aktiv
0137h | digitaler Eingang 7 als Bremseingang, High-Aktiv
Allgemeine Beschreibung siehe unter MOTOR_BrakeManagement_Config.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                                  # NodeId = 1

d.SdoWr(0x39A0, 0x00, 1)                                    # MOTOR_BrakeManagement_Config - Enable

print "Bremsmanagement Konfig=",  d.SdoRd(0x39A0, 0x00)     # MOTOR_BrakeManagement_Config
print "Bremsmanagement Status=", hex(d.SdoRd(0x39A0, 0x01)) # MOTOR_BrakeManagement_Status

print "Drehzahlschwelle=", d.SdoRd(0x39A0, 0x06)             # MOTOR_BrakeManagement_VelMin

print "Digital Input Bremse=", d.SdoRd(0x39A0, 0x07)        # MOTOR_BrakeManagement_Din
print "Digital Output Bremse=", hex(d.SdoRd(0x39A0, 0x08))  # MOTOR_BrakeManagement_Dout

print "Über Up:", d.SdoRd(0x39A0, 0x09),"mV löse Bremse"    # MOTOR_BrakeManagement_UpBrakeOff
print "Unter Up:", d.SdoRd(0x39A0, 0x0A),"mV bremse"        # MOTOR_BrakeManagement_UpBrakeOn

#init Bremsmanagement
d.SdoWr(0x39A0, 0x10, 25)                                   # MOTOR_BrakeManagement_OffDelay1 - t1 = 25 ms
d.SdoWr(0x39A0, 0x11, 75)                                   # MOTOR_BrakeManagement_OffDelay2 - t2 = 75 ms

d.SdoWr(0x39A0, 0x12, 15)                                   # MOTOR_BrakeManagement_OnDelay1 - t3 = 15 ms
d.SdoWr(0x39A0, 0x13, 35)                                   # MOTOR_BrakeManagement_OnDelay2 - t4 = 35 ms

d.SdoWr(0x39A0, 0x18, 0x01)                                 # MOTOR_BrakeManagement_OffOrConditionFlags - lösen bei MoveCmd
d.SdoWr(0x39A0, 0x19, 0x00)                                 # MOTOR_BrakeManagement_OffAndConditionFlags

d.SdoWr(0x39A0, 0x1A, 0x21)                                 # MOTOR_BrakeManagement_OnOrConditionFlags - bremsen bei Rampe stoppt oder Ziel erreicht
d.SdoWr(0x39A0, 0x1B, 0x00)                                 # MOTOR_BrakeManagement_OnAndConditionFlags

#init
d.SdoWr(0x3004, 0x00, 0)                                    # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)                                    # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                                    # VEL_DesiredValue - Solldrehzahl = 500 [U/min]
d.SdoWr(0x3004, 0x00, 1)                                    # DEV_Enable - Endstufe freigeben

# Schreibe Parameter für Bewegung
d.SdoWr(0x3000, 0x10, 600)                                  # DEV_CmdData0 - 600 U/min
d.SdoWr(0x3000, 0x11, 6000)                                 # DEV_CmdData1 - 6000 ink

# Führe Bewegung 10 mal aus
for i in xrange(10):
   d.SdoWr(0x3000, 0x01, 0)                                 # DEV_Cmd_ExecOnChange - Toggle
   d.SdoWr(0x3000, 0x01, 0x34)                              # DEV_Cmd_ExecOnChange - MovR
   reached = (d.SdoRd(0x3002, 0x00) & 0x10)                 # DEV_Status
   while not(reached):                                      # Ziel noch nicht erreicht ?
      reached = (d.SdoRd(0x3002, 0x00) & 0x10)              # DEV_Status
   if reached:                                              # Ziel erreicht?
      time.sleep(0.5)                                       # Warte 500 ms


39A0.08h Bremsenmanagement - Bremsausgang

Name | MOTOR_BrakeManagement_Dout
Bezeichnung | Bremsenmanagement - Bremsausgang
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {-163h, -162h, -161h, -160h, 0h, 160h, 161h, 162h, 163h}
Defaultwert | -160h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.50
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_BrakeManagement_Config, MOTOR_BrakeManagement_Status, MOTOR_BrakeManagement_VelMin, MOTOR_BrakeManagement_Din, MOTOR_BrakeManagement_UpBrakeOff, MOTOR_BrakeManagement_UpBrakeOn, MOTOR_BrakeManagement_OffDelay1, MOTOR_BrakeManagement_OffDelay2, MOTOR_BrakeManagement_OnDelay1, MOTOR_BrakeManagement_OnDelay2, MOTOR_BrakeManagement_OffOrConditionFlags, MOTOR_BrakeManagement_OffAndConditionFlags, MOTOR_BrakeManagement_OnOrConditionFlags, MOTOR_BrakeManagement_OnAndConditionFlags

Beschreibung

Dieser Parameter bestimmt, welcher digitale Ausgang als Bremsausgang verwendet wird.
Positive Werte bedeuten, dass der jeweilige digitale Ausgang High-Aktiv ist (negative bedeuten Low-Aktiv).

Wenn die Bremse bei anglegter Spannung lüftet und die Bremse vom dig. Ausgang direkt versorgt wird,
dann soll der dig. Ausgang als Low-Aktiv eingestellt sein. D.h. wenn der dig. Ausgang Low ist dann hält die Bremse die Motorwelle fest.

Die Anzahl der digitalen Ausgänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Parameterwerte:
Wert (Hex) | Beschreibung
-0163h | digitaler Ausgang 3 als Bremsausgang, Low-Aktiv
-0162h | digitaler Ausgang 2 als Bremsausgang, Low-Aktiv
-0161h | digitaler Ausgang 1 als Bremsausgang, Low-Aktiv
-0160h | digitaler Ausgang 0 als Bremsausgang, Low-Aktiv
0160h | digitaler Ausgang 0 als Bremsausgang, High-Aktiv
0161h | digitaler Ausgang 1 als Bremsausgang, High-Aktiv
0162h | digitaler Ausgang 2 als Bremsausgang, High-Aktiv
0163h | digitaler Ausgang 3 als Bremsausgang, High-Aktiv
Allgemeine Beschreibung siehe unter MOTOR_BrakeManagement_Config.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                                  # NodeId = 1

d.SdoWr(0x39A0, 0x00, 1)                                    # MOTOR_BrakeManagement_Config - Enable

print "Bremsmanagement Konfig=",  d.SdoRd(0x39A0, 0x00)     # MOTOR_BrakeManagement_Config
print "Bremsmanagement Status=", hex(d.SdoRd(0x39A0, 0x01)) # MOTOR_BrakeManagement_Status

print "Drehzahlschwelle=", d.SdoRd(0x39A0, 0x06)             # MOTOR_BrakeManagement_VelMin

print "Digital Input Bremse=", d.SdoRd(0x39A0, 0x07)        # MOTOR_BrakeManagement_Din
print "Digital Output Bremse=", hex(d.SdoRd(0x39A0, 0x08))  # MOTOR_BrakeManagement_Dout

print "Über Up:", d.SdoRd(0x39A0, 0x09),"mV löse Bremse"    # MOTOR_BrakeManagement_UpBrakeOff
print "Unter Up:", d.SdoRd(0x39A0, 0x0A),"mV bremse"        # MOTOR_BrakeManagement_UpBrakeOn

#init Bremsmanagement
d.SdoWr(0x39A0, 0x10, 25)                                   # MOTOR_BrakeManagement_OffDelay1 - t1 = 25 ms
d.SdoWr(0x39A0, 0x11, 75)                                   # MOTOR_BrakeManagement_OffDelay2 - t2 = 75 ms

d.SdoWr(0x39A0, 0x12, 15)                                   # MOTOR_BrakeManagement_OnDelay1 - t3 = 15 ms
d.SdoWr(0x39A0, 0x13, 35)                                   # MOTOR_BrakeManagement_OnDelay2 - t4 = 35 ms

d.SdoWr(0x39A0, 0x18, 0x01)                                 # MOTOR_BrakeManagement_OffOrConditionFlags - lösen bei MoveCmd
d.SdoWr(0x39A0, 0x19, 0x00)                                 # MOTOR_BrakeManagement_OffAndConditionFlags

d.SdoWr(0x39A0, 0x1A, 0x21)                                 # MOTOR_BrakeManagement_OnOrConditionFlags - bremsen bei Rampe stoppt oder Ziel erreicht
d.SdoWr(0x39A0, 0x1B, 0x00)                                 # MOTOR_BrakeManagement_OnAndConditionFlags

#init
d.SdoWr(0x3004, 0x00, 0)                                    # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)                                    # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                                    # VEL_DesiredValue - Solldrehzahl = 500 [U/min]
d.SdoWr(0x3004, 0x00, 1)                                    # DEV_Enable - Endstufe freigeben

# Schreibe Parameter für Bewegung
d.SdoWr(0x3000, 0x10, 600)                                  # DEV_CmdData0 - 600 U/min
d.SdoWr(0x3000, 0x11, 6000)                                 # DEV_CmdData1 - 6000 ink

# Führe Bewegung 10 mal aus
for i in xrange(10):
   d.SdoWr(0x3000, 0x01, 0)                                 # DEV_Cmd_ExecOnChange - Toggle
   d.SdoWr(0x3000, 0x01, 0x34)                              # DEV_Cmd_ExecOnChange - MovR
   reached = (d.SdoRd(0x3002, 0x00) & 0x10)                 # DEV_Status
   while not(reached):                                      # Ziel noch nicht erreicht ?
      reached = (d.SdoRd(0x3002, 0x00) & 0x10)              # DEV_Status
   if reached:                                              # Ziel erreicht?
      time.sleep(0.5)                                       # Warte 500 ms


39A0.09h Bremsenmanagement - Spannungsschwelle OFF

Name | MOTOR_BrakeManagement_UpBrakeOff
Bezeichnung | Bremsenmanagement - Spannungsschwelle OFF
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 65530]
Defaultwert | 10000
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.50
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_BrakeManagement_Config, MOTOR_BrakeManagement_Status, MOTOR_BrakeManagement_VelMin, MOTOR_BrakeManagement_Din, MOTOR_BrakeManagement_Dout, MOTOR_BrakeManagement_UpBrakeOn, MOTOR_BrakeManagement_OffDelay1, MOTOR_BrakeManagement_OffDelay2, MOTOR_BrakeManagement_OnDelay1, MOTOR_BrakeManagement_OnDelay2, MOTOR_BrakeManagement_OffOrConditionFlags, MOTOR_BrakeManagement_OffAndConditionFlags, MOTOR_BrakeManagement_OnOrConditionFlags, MOTOR_BrakeManagement_OnAndConditionFlags

Beschreibung

Dieser Parameter definiert die Spannungsschwelle (Up_br_off) der Leistungsspannung Up , die überschritten werden muss, bevor die Bremse deaktiviert wird.

Dieser Parameter hat nur die Wirkung, wenn das Bit 5 "Up > Up_br_off" der Parameter MOTOR_BrakeManagement_OffOrConditionFlags oder MOTOR_BrakeManagement_OffAndConditionFlags gesetzt worden ist.

Allgemeine Beschreibung siehe unter MOTOR_BrakeManagement_Config.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                                  # NodeId = 1

d.SdoWr(0x39A0, 0x00, 1)                                    # MOTOR_BrakeManagement_Config - Enable

print "Bremsmanagement Konfig=",  d.SdoRd(0x39A0, 0x00)     # MOTOR_BrakeManagement_Config
print "Bremsmanagement Status=", hex(d.SdoRd(0x39A0, 0x01)) # MOTOR_BrakeManagement_Status

print "Drehzahlschwelle=", d.SdoRd(0x39A0, 0x06)             # MOTOR_BrakeManagement_VelMin

print "Digital Input Bremse=", d.SdoRd(0x39A0, 0x07)        # MOTOR_BrakeManagement_Din
print "Digital Output Bremse=", hex(d.SdoRd(0x39A0, 0x08))  # MOTOR_BrakeManagement_Dout

print "Über Up:", d.SdoRd(0x39A0, 0x09),"mV löse Bremse"    # MOTOR_BrakeManagement_UpBrakeOff
print "Unter Up:", d.SdoRd(0x39A0, 0x0A),"mV bremse"        # MOTOR_BrakeManagement_UpBrakeOn

#init Bremsmanagement
d.SdoWr(0x39A0, 0x10, 25)                                   # MOTOR_BrakeManagement_OffDelay1 - t1 = 25 ms
d.SdoWr(0x39A0, 0x11, 75)                                   # MOTOR_BrakeManagement_OffDelay2 - t2 = 75 ms

d.SdoWr(0x39A0, 0x12, 15)                                   # MOTOR_BrakeManagement_OnDelay1 - t3 = 15 ms
d.SdoWr(0x39A0, 0x13, 35)                                   # MOTOR_BrakeManagement_OnDelay2 - t4 = 35 ms

d.SdoWr(0x39A0, 0x18, 0x01)                                 # MOTOR_BrakeManagement_OffOrConditionFlags - lösen bei MoveCmd
d.SdoWr(0x39A0, 0x19, 0x00)                                 # MOTOR_BrakeManagement_OffAndConditionFlags

d.SdoWr(0x39A0, 0x1A, 0x21)                                 # MOTOR_BrakeManagement_OnOrConditionFlags - bremsen bei Rampe stoppt oder Ziel erreicht
d.SdoWr(0x39A0, 0x1B, 0x00)                                 # MOTOR_BrakeManagement_OnAndConditionFlags

#init
d.SdoWr(0x3004, 0x00, 0)                                    # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)                                    # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                                    # VEL_DesiredValue - Solldrehzahl = 500 [U/min]
d.SdoWr(0x3004, 0x00, 1)                                    # DEV_Enable - Endstufe freigeben

# Schreibe Parameter für Bewegung
d.SdoWr(0x3000, 0x10, 600)                                  # DEV_CmdData0 - 600 U/min
d.SdoWr(0x3000, 0x11, 6000)                                 # DEV_CmdData1 - 6000 ink

# Führe Bewegung 10 mal aus
for i in xrange(10):
   d.SdoWr(0x3000, 0x01, 0)                                 # DEV_Cmd_ExecOnChange - Toggle
   d.SdoWr(0x3000, 0x01, 0x34)                              # DEV_Cmd_ExecOnChange - MovR
   reached = (d.SdoRd(0x3002, 0x00) & 0x10)                 # DEV_Status
   while not(reached):                                      # Ziel noch nicht erreicht ?
      reached = (d.SdoRd(0x3002, 0x00) & 0x10)              # DEV_Status
   if reached:                                              # Ziel erreicht?
      time.sleep(0.5)                                       # Warte 500 ms


39A0.0Ah Bremsenmanagement - Spannungsschwelle ON

Name | MOTOR_BrakeManagement_UpBrakeOn
Bezeichnung | Bremsenmanagement - Spannungsschwelle ON
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 65530]
Defaultwert | 8000
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.50
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_BrakeManagement_Config, MOTOR_BrakeManagement_Status, MOTOR_BrakeManagement_VelMin, MOTOR_BrakeManagement_Din, MOTOR_BrakeManagement_Dout, MOTOR_BrakeManagement_UpBrakeOff, MOTOR_BrakeManagement_OffDelay1, MOTOR_BrakeManagement_OffDelay2, MOTOR_BrakeManagement_OnDelay1, MOTOR_BrakeManagement_OnDelay2, MOTOR_BrakeManagement_OffOrConditionFlags, MOTOR_BrakeManagement_OffAndConditionFlags, MOTOR_BrakeManagement_OnOrConditionFlags, MOTOR_BrakeManagement_OnAndConditionFlags

Beschreibung

Dieser Parameter definiert die Spannungsschwelle (Up_br_on) der Leistungsspannung Up , die unterschritten werden muss, bevor die Bremse aktiviert wird.

Dieser Parameter hat nur die Wirkung, wenn das Bit 5 "Up > Up_br_off" der Parameter MOTOR_BrakeManagement_OffOrConditionFlags oder MOTOR_BrakeManagement_OffAndConditionFlags gesetzt worden ist.

Allgemeine Beschreibung siehe unter MOTOR_BrakeManagement_Config.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                                  # NodeId = 1

d.SdoWr(0x39A0, 0x00, 1)                                    # MOTOR_BrakeManagement_Config - Enable

print "Bremsmanagement Konfig=",  d.SdoRd(0x39A0, 0x00)     # MOTOR_BrakeManagement_Config
print "Bremsmanagement Status=", hex(d.SdoRd(0x39A0, 0x01)) # MOTOR_BrakeManagement_Status

print "Drehzahlschwelle=", d.SdoRd(0x39A0, 0x06)             # MOTOR_BrakeManagement_VelMin

print "Digital Input Bremse=", d.SdoRd(0x39A0, 0x07)        # MOTOR_BrakeManagement_Din
print "Digital Output Bremse=", hex(d.SdoRd(0x39A0, 0x08))  # MOTOR_BrakeManagement_Dout

print "Über Up:", d.SdoRd(0x39A0, 0x09),"mV löse Bremse"    # MOTOR_BrakeManagement_UpBrakeOff
print "Unter Up:", d.SdoRd(0x39A0, 0x0A),"mV bremse"        # MOTOR_BrakeManagement_UpBrakeOn

#init Bremsmanagement
d.SdoWr(0x39A0, 0x10, 25)                                   # MOTOR_BrakeManagement_OffDelay1 - t1 = 25 ms
d.SdoWr(0x39A0, 0x11, 75)                                   # MOTOR_BrakeManagement_OffDelay2 - t2 = 75 ms

d.SdoWr(0x39A0, 0x12, 15)                                   # MOTOR_BrakeManagement_OnDelay1 - t3 = 15 ms
d.SdoWr(0x39A0, 0x13, 35)                                   # MOTOR_BrakeManagement_OnDelay2 - t4 = 35 ms

d.SdoWr(0x39A0, 0x18, 0x01)                                 # MOTOR_BrakeManagement_OffOrConditionFlags - lösen bei MoveCmd
d.SdoWr(0x39A0, 0x19, 0x00)                                 # MOTOR_BrakeManagement_OffAndConditionFlags

d.SdoWr(0x39A0, 0x1A, 0x21)                                 # MOTOR_BrakeManagement_OnOrConditionFlags - bremsen bei Rampe stoppt oder Ziel erreicht
d.SdoWr(0x39A0, 0x1B, 0x00)                                 # MOTOR_BrakeManagement_OnAndConditionFlags

#init
d.SdoWr(0x3004, 0x00, 0)                                    # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)                                    # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                                    # VEL_DesiredValue - Solldrehzahl = 500 [U/min]
d.SdoWr(0x3004, 0x00, 1)                                    # DEV_Enable - Endstufe freigeben

# Schreibe Parameter für Bewegung
d.SdoWr(0x3000, 0x10, 600)                                  # DEV_CmdData0 - 600 U/min
d.SdoWr(0x3000, 0x11, 6000)                                 # DEV_CmdData1 - 6000 ink

# Führe Bewegung 10 mal aus
for i in xrange(10):
   d.SdoWr(0x3000, 0x01, 0)                                 # DEV_Cmd_ExecOnChange - Toggle
   d.SdoWr(0x3000, 0x01, 0x34)                              # DEV_Cmd_ExecOnChange - MovR
   reached = (d.SdoRd(0x3002, 0x00) & 0x10)                 # DEV_Status
   while not(reached):                                      # Ziel noch nicht erreicht ?
      reached = (d.SdoRd(0x3002, 0x00) & 0x10)              # DEV_Status
   if reached:                                              # Ziel erreicht?
      time.sleep(0.5)                                       # Warte 500 ms


39A0.10h Bremsenmanagement - AUS-Zeitverzögerung1

Name | MOTOR_BrakeManagement_OffDelay1
Bezeichnung | Bremsenmanagement - AUS-Zeitverzögerung1
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.50
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_BrakeManagement_Config, MOTOR_BrakeManagement_Status, MOTOR_BrakeManagement_VelMin, MOTOR_BrakeManagement_Din, MOTOR_BrakeManagement_Dout, MOTOR_BrakeManagement_UpBrakeOff, MOTOR_BrakeManagement_UpBrakeOn, MOTOR_BrakeManagement_OffDelay2, MOTOR_BrakeManagement_OnDelay1, MOTOR_BrakeManagement_OnDelay2, MOTOR_BrakeManagement_OffOrConditionFlags, MOTOR_BrakeManagement_OffAndConditionFlags, MOTOR_BrakeManagement_OnOrConditionFlags, MOTOR_BrakeManagement_OnAndConditionFlags

Beschreibung

Dieser Parameter definiert die Zeitverzögerung (t1) in ms, bevor die Bremse deaktiviert wird.

Es handelst sich um die Zeit zwischen Setzen der Reglerfreigabe und Deaktivieren der Bremse.
Damit kann z.B. die Zeit eingestellt werden, die benötigt wird, bis die Reglerfreigabe wirkt.

Das folgende Beispiel zeigt das Bremsenmanagement über Betriebsfreigabe:

Allgemeine Beschreibung siehe unter MOTOR_BrakeManagement_Config.

Hinweis
  • Diese Verzögerungszeit ist nicht aktiv bei der Funktion "Bremsenmanagement über eine Bewegung (ohne Sperren der Betriebsfreigabe am Ende)" s. MOTOR_BrakeManagement_Config unter 2.1

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                                  # NodeId = 1

d.SdoWr(0x39A0, 0x00, 1)                                    # MOTOR_BrakeManagement_Config - Enable

print "Bremsmanagement Konfig=",  d.SdoRd(0x39A0, 0x00)     # MOTOR_BrakeManagement_Config
print "Bremsmanagement Status=", hex(d.SdoRd(0x39A0, 0x01)) # MOTOR_BrakeManagement_Status

print "Drehzahlschwelle=", d.SdoRd(0x39A0, 0x06)             # MOTOR_BrakeManagement_VelMin

print "Digital Input Bremse=", d.SdoRd(0x39A0, 0x07)        # MOTOR_BrakeManagement_Din
print "Digital Output Bremse=", hex(d.SdoRd(0x39A0, 0x08))  # MOTOR_BrakeManagement_Dout

print "Über Up:", d.SdoRd(0x39A0, 0x09),"mV löse Bremse"    # MOTOR_BrakeManagement_UpBrakeOff
print "Unter Up:", d.SdoRd(0x39A0, 0x0A),"mV bremse"        # MOTOR_BrakeManagement_UpBrakeOn

#init Bremsmanagement
d.SdoWr(0x39A0, 0x10, 25)                                   # MOTOR_BrakeManagement_OffDelay1 - t1 = 25 ms
d.SdoWr(0x39A0, 0x11, 75)                                   # MOTOR_BrakeManagement_OffDelay2 - t2 = 75 ms

d.SdoWr(0x39A0, 0x12, 15)                                   # MOTOR_BrakeManagement_OnDelay1 - t3 = 15 ms
d.SdoWr(0x39A0, 0x13, 35)                                   # MOTOR_BrakeManagement_OnDelay2 - t4 = 35 ms

d.SdoWr(0x39A0, 0x18, 0x01)                                 # MOTOR_BrakeManagement_OffOrConditionFlags - lösen bei MoveCmd
d.SdoWr(0x39A0, 0x19, 0x00)                                 # MOTOR_BrakeManagement_OffAndConditionFlags

d.SdoWr(0x39A0, 0x1A, 0x21)                                 # MOTOR_BrakeManagement_OnOrConditionFlags - bremsen bei Rampe stoppt oder Ziel erreicht
d.SdoWr(0x39A0, 0x1B, 0x00)                                 # MOTOR_BrakeManagement_OnAndConditionFlags

#init
d.SdoWr(0x3004, 0x00, 0)                                    # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)                                    # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                                    # VEL_DesiredValue - Solldrehzahl = 500 [U/min]
d.SdoWr(0x3004, 0x00, 1)                                    # DEV_Enable - Endstufe freigeben

# Schreibe Parameter für Bewegung
d.SdoWr(0x3000, 0x10, 600)                                  # DEV_CmdData0 - 600 U/min
d.SdoWr(0x3000, 0x11, 6000)                                 # DEV_CmdData1 - 6000 ink

# Führe Bewegung 10 mal aus
for i in xrange(10):
   d.SdoWr(0x3000, 0x01, 0)                                 # DEV_Cmd_ExecOnChange - Toggle
   d.SdoWr(0x3000, 0x01, 0x34)                              # DEV_Cmd_ExecOnChange - MovR
   reached = (d.SdoRd(0x3002, 0x00) & 0x10)                 # DEV_Status
   while not(reached):                                      # Ziel noch nicht erreicht ?
      reached = (d.SdoRd(0x3002, 0x00) & 0x10)              # DEV_Status
   if reached:                                              # Ziel erreicht?
      time.sleep(0.5)                                       # Warte 500 ms


39A0.11h Bremsenmanagement - AUS-Zeitverzögerung2

Name | MOTOR_BrakeManagement_OffDelay2
Bezeichnung | Bremsenmanagement - AUS-Zeitverzögerung2
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.50
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_BrakeManagement_Config, MOTOR_BrakeManagement_Status, MOTOR_BrakeManagement_VelMin, MOTOR_BrakeManagement_Din, MOTOR_BrakeManagement_Dout, MOTOR_BrakeManagement_UpBrakeOff, MOTOR_BrakeManagement_UpBrakeOn, MOTOR_BrakeManagement_OffDelay1, MOTOR_BrakeManagement_OnDelay1, MOTOR_BrakeManagement_OnDelay2, MOTOR_BrakeManagement_OffOrConditionFlags, MOTOR_BrakeManagement_OffAndConditionFlags, MOTOR_BrakeManagement_OnOrConditionFlags, MOTOR_BrakeManagement_OnAndConditionFlags

Beschreibung

Dieser Parameter definiert die Zeitverzögerung (t2) in ms, nachdem die Bremse deaktiviert wurde.

Es handelt sich um die Zeit zwischen Ansteuern der Bremse und Starten einer Bewegung.
Damit kann z.B. die Zeit eingestellt werden, die benötigt wird, um die Bremse zu deaktivieren.

Das folgende Beispiel zeigt das Bremsenmanagement über Betriebsfreigabe:

Allgemeine Beschreibung siehe unter MOTOR_BrakeManagement_Config.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                                  # NodeId = 1

d.SdoWr(0x39A0, 0x00, 1)                                    # MOTOR_BrakeManagement_Config - Enable

print "Bremsmanagement Konfig=",  d.SdoRd(0x39A0, 0x00)     # MOTOR_BrakeManagement_Config
print "Bremsmanagement Status=", hex(d.SdoRd(0x39A0, 0x01)) # MOTOR_BrakeManagement_Status

print "Drehzahlschwelle=", d.SdoRd(0x39A0, 0x06)             # MOTOR_BrakeManagement_VelMin

print "Digital Input Bremse=", d.SdoRd(0x39A0, 0x07)        # MOTOR_BrakeManagement_Din
print "Digital Output Bremse=", hex(d.SdoRd(0x39A0, 0x08))  # MOTOR_BrakeManagement_Dout

print "Über Up:", d.SdoRd(0x39A0, 0x09),"mV löse Bremse"    # MOTOR_BrakeManagement_UpBrakeOff
print "Unter Up:", d.SdoRd(0x39A0, 0x0A),"mV bremse"        # MOTOR_BrakeManagement_UpBrakeOn

#init Bremsmanagement
d.SdoWr(0x39A0, 0x10, 25)                                   # MOTOR_BrakeManagement_OffDelay1 - t1 = 25 ms
d.SdoWr(0x39A0, 0x11, 75)                                   # MOTOR_BrakeManagement_OffDelay2 - t2 = 75 ms

d.SdoWr(0x39A0, 0x12, 15)                                   # MOTOR_BrakeManagement_OnDelay1 - t3 = 15 ms
d.SdoWr(0x39A0, 0x13, 35)                                   # MOTOR_BrakeManagement_OnDelay2 - t4 = 35 ms

d.SdoWr(0x39A0, 0x18, 0x01)                                 # MOTOR_BrakeManagement_OffOrConditionFlags - lösen bei MoveCmd
d.SdoWr(0x39A0, 0x19, 0x00)                                 # MOTOR_BrakeManagement_OffAndConditionFlags

d.SdoWr(0x39A0, 0x1A, 0x21)                                 # MOTOR_BrakeManagement_OnOrConditionFlags - bremsen bei Rampe stoppt oder Ziel erreicht
d.SdoWr(0x39A0, 0x1B, 0x00)                                 # MOTOR_BrakeManagement_OnAndConditionFlags

#init
d.SdoWr(0x3004, 0x00, 0)                                    # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)                                    # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                                    # VEL_DesiredValue - Solldrehzahl = 500 [U/min]
d.SdoWr(0x3004, 0x00, 1)                                    # DEV_Enable - Endstufe freigeben

# Schreibe Parameter für Bewegung
d.SdoWr(0x3000, 0x10, 600)                                  # DEV_CmdData0 - 600 U/min
d.SdoWr(0x3000, 0x11, 6000)                                 # DEV_CmdData1 - 6000 ink

# Führe Bewegung 10 mal aus
for i in xrange(10):
   d.SdoWr(0x3000, 0x01, 0)                                 # DEV_Cmd_ExecOnChange - Toggle
   d.SdoWr(0x3000, 0x01, 0x34)                              # DEV_Cmd_ExecOnChange - MovR
   reached = (d.SdoRd(0x3002, 0x00) & 0x10)                 # DEV_Status
   while not(reached):                                      # Ziel noch nicht erreicht ?
      reached = (d.SdoRd(0x3002, 0x00) & 0x10)              # DEV_Status
   if reached:                                              # Ziel erreicht?
      time.sleep(0.5)                                       # Warte 500 ms


39A0.12h Bremsenmanagement - EIN-Zeitverzögerung1

Name | MOTOR_BrakeManagement_OnDelay1
Bezeichnung | Bremsenmanagement - EIN-Zeitverzögerung1
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.50
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_BrakeManagement_Config, MOTOR_BrakeManagement_Status, MOTOR_BrakeManagement_VelMin, MOTOR_BrakeManagement_Din, MOTOR_BrakeManagement_Dout, MOTOR_BrakeManagement_UpBrakeOff, MOTOR_BrakeManagement_UpBrakeOn, MOTOR_BrakeManagement_OffDelay1, MOTOR_BrakeManagement_OffDelay2, MOTOR_BrakeManagement_OnDelay2, MOTOR_BrakeManagement_OffOrConditionFlags, MOTOR_BrakeManagement_OffAndConditionFlags, MOTOR_BrakeManagement_OnOrConditionFlags, MOTOR_BrakeManagement_OnAndConditionFlags

Beschreibung

Dieser Parameter definiert die Zeitverzögerung (t3) in ms, bevor die Bremse aktiviert wird.

In Abhängigkeit von MOTOR_BrakeManagement_OnOrConditionFlags handelt es sich um folgende Zeiten:

Parameterwerte vom MOTOR_BrakeManagement_OnOrConditionFlags:
Wert | Funktion | Zeit
1 | Bremsensteuerung anhand der Betriebsfreigabe | Zeit zwischen Sperren der Betriebsfreigabe und Deaktivieren der Bremse
4 | Bremsensteuerung anhand einer Bewegung | Zeit zwischen Ende der Bewegung und Deaktivieren der Bremse

Allgemeine Beschreibung siehe unter MOTOR_BrakeManagement_Config.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                                  # NodeId = 1

d.SdoWr(0x39A0, 0x00, 1)                                    # MOTOR_BrakeManagement_Config - Enable

print "Bremsmanagement Konfig=",  d.SdoRd(0x39A0, 0x00)     # MOTOR_BrakeManagement_Config
print "Bremsmanagement Status=", hex(d.SdoRd(0x39A0, 0x01)) # MOTOR_BrakeManagement_Status

print "Drehzahlschwelle=", d.SdoRd(0x39A0, 0x06)             # MOTOR_BrakeManagement_VelMin

print "Digital Input Bremse=", d.SdoRd(0x39A0, 0x07)        # MOTOR_BrakeManagement_Din
print "Digital Output Bremse=", hex(d.SdoRd(0x39A0, 0x08))  # MOTOR_BrakeManagement_Dout

print "Über Up:", d.SdoRd(0x39A0, 0x09),"mV löse Bremse"    # MOTOR_BrakeManagement_UpBrakeOff
print "Unter Up:", d.SdoRd(0x39A0, 0x0A),"mV bremse"        # MOTOR_BrakeManagement_UpBrakeOn

#init Bremsmanagement
d.SdoWr(0x39A0, 0x10, 25)                                   # MOTOR_BrakeManagement_OffDelay1 - t1 = 25 ms
d.SdoWr(0x39A0, 0x11, 75)                                   # MOTOR_BrakeManagement_OffDelay2 - t2 = 75 ms

d.SdoWr(0x39A0, 0x12, 15)                                   # MOTOR_BrakeManagement_OnDelay1 - t3 = 15 ms
d.SdoWr(0x39A0, 0x13, 35)                                   # MOTOR_BrakeManagement_OnDelay2 - t4 = 35 ms

d.SdoWr(0x39A0, 0x18, 0x01)                                 # MOTOR_BrakeManagement_OffOrConditionFlags - lösen bei MoveCmd
d.SdoWr(0x39A0, 0x19, 0x00)                                 # MOTOR_BrakeManagement_OffAndConditionFlags

d.SdoWr(0x39A0, 0x1A, 0x21)                                 # MOTOR_BrakeManagement_OnOrConditionFlags - bremsen bei Rampe stoppt oder Ziel erreicht
d.SdoWr(0x39A0, 0x1B, 0x00)                                 # MOTOR_BrakeManagement_OnAndConditionFlags

#init
d.SdoWr(0x3004, 0x00, 0)                                    # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)                                    # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                                    # VEL_DesiredValue - Solldrehzahl = 500 [U/min]
d.SdoWr(0x3004, 0x00, 1)                                    # DEV_Enable - Endstufe freigeben

# Schreibe Parameter für Bewegung
d.SdoWr(0x3000, 0x10, 600)                                  # DEV_CmdData0 - 600 U/min
d.SdoWr(0x3000, 0x11, 6000)                                 # DEV_CmdData1 - 6000 ink

# Führe Bewegung 10 mal aus
for i in xrange(10):
   d.SdoWr(0x3000, 0x01, 0)                                 # DEV_Cmd_ExecOnChange - Toggle
   d.SdoWr(0x3000, 0x01, 0x34)                              # DEV_Cmd_ExecOnChange - MovR
   reached = (d.SdoRd(0x3002, 0x00) & 0x10)                 # DEV_Status
   while not(reached):                                      # Ziel noch nicht erreicht ?
      reached = (d.SdoRd(0x3002, 0x00) & 0x10)              # DEV_Status
   if reached:                                              # Ziel erreicht?
      time.sleep(0.5)                                       # Warte 500 ms


39A0.13h Bremsenmanagement - EIN-Zeitverzögerung2

Name | MOTOR_BrakeManagement_OnDelay2
Bezeichnung | Bremsenmanagement - EIN-Zeitverzögerung2
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.50
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_BrakeManagement_Config, MOTOR_BrakeManagement_Status, MOTOR_BrakeManagement_VelMin, MOTOR_BrakeManagement_Din, MOTOR_BrakeManagement_Dout, MOTOR_BrakeManagement_UpBrakeOff, MOTOR_BrakeManagement_UpBrakeOn, MOTOR_BrakeManagement_OffDelay1, MOTOR_BrakeManagement_OffDelay2, MOTOR_BrakeManagement_OnDelay1, MOTOR_BrakeManagement_OffOrConditionFlags, MOTOR_BrakeManagement_OffAndConditionFlags, MOTOR_BrakeManagement_OnOrConditionFlags, MOTOR_BrakeManagement_OnAndConditionFlags

Beschreibung

Dieser Parameter definiert die Zeitverzögerung (t4) in ms, nachdem die Bremse aktiviert wurde.

Es handelst sich um die Zeit zwischen Aktivierung der Bremse und Sperren der Betriebsfreigabe.
Damit kann z.B. die Zeit eingestellt werden, die benötigt wird, bis die Bremse aktiviert ist.

Das folgende Beispiel zeigt das Bremsenmanagement über Betriebsfreigabe:

Allgemeine Beschreibung siehe unter MOTOR_BrakeManagement_Config.

Hinweis
  • Diese Verzögerungszeit ist nicht aktiv bei der Funktion "Bremsenmanagement über eine Bewegung (ohne Sperren der Betriebsfreigabe am Ende)" s. MOTOR_BrakeManagement_Config unter 2.1

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                                  # NodeId = 1

d.SdoWr(0x39A0, 0x00, 1)                                    # MOTOR_BrakeManagement_Config - Enable

print "Bremsmanagement Konfig=",  d.SdoRd(0x39A0, 0x00)     # MOTOR_BrakeManagement_Config
print "Bremsmanagement Status=", hex(d.SdoRd(0x39A0, 0x01)) # MOTOR_BrakeManagement_Status

print "Drehzahlschwelle=", d.SdoRd(0x39A0, 0x06)             # MOTOR_BrakeManagement_VelMin

print "Digital Input Bremse=", d.SdoRd(0x39A0, 0x07)        # MOTOR_BrakeManagement_Din
print "Digital Output Bremse=", hex(d.SdoRd(0x39A0, 0x08))  # MOTOR_BrakeManagement_Dout

print "Über Up:", d.SdoRd(0x39A0, 0x09),"mV löse Bremse"    # MOTOR_BrakeManagement_UpBrakeOff
print "Unter Up:", d.SdoRd(0x39A0, 0x0A),"mV bremse"        # MOTOR_BrakeManagement_UpBrakeOn

#init Bremsmanagement
d.SdoWr(0x39A0, 0x10, 25)                                   # MOTOR_BrakeManagement_OffDelay1 - t1 = 25 ms
d.SdoWr(0x39A0, 0x11, 75)                                   # MOTOR_BrakeManagement_OffDelay2 - t2 = 75 ms

d.SdoWr(0x39A0, 0x12, 15)                                   # MOTOR_BrakeManagement_OnDelay1 - t3 = 15 ms
d.SdoWr(0x39A0, 0x13, 35)                                   # MOTOR_BrakeManagement_OnDelay2 - t4 = 35 ms

d.SdoWr(0x39A0, 0x18, 0x01)                                 # MOTOR_BrakeManagement_OffOrConditionFlags - lösen bei MoveCmd
d.SdoWr(0x39A0, 0x19, 0x00)                                 # MOTOR_BrakeManagement_OffAndConditionFlags

d.SdoWr(0x39A0, 0x1A, 0x21)                                 # MOTOR_BrakeManagement_OnOrConditionFlags - bremsen bei Rampe stoppt oder Ziel erreicht
d.SdoWr(0x39A0, 0x1B, 0x00)                                 # MOTOR_BrakeManagement_OnAndConditionFlags

#init
d.SdoWr(0x3004, 0x00, 0)                                    # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)                                    # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                                    # VEL_DesiredValue - Solldrehzahl = 500 [U/min]
d.SdoWr(0x3004, 0x00, 1)                                    # DEV_Enable - Endstufe freigeben

# Schreibe Parameter für Bewegung
d.SdoWr(0x3000, 0x10, 600)                                  # DEV_CmdData0 - 600 U/min
d.SdoWr(0x3000, 0x11, 6000)                                 # DEV_CmdData1 - 6000 ink

# Führe Bewegung 10 mal aus
for i in xrange(10):
   d.SdoWr(0x3000, 0x01, 0)                                 # DEV_Cmd_ExecOnChange - Toggle
   d.SdoWr(0x3000, 0x01, 0x34)                              # DEV_Cmd_ExecOnChange - MovR
   reached = (d.SdoRd(0x3002, 0x00) & 0x10)                 # DEV_Status
   while not(reached):                                      # Ziel noch nicht erreicht ?
      reached = (d.SdoRd(0x3002, 0x00) & 0x10)              # DEV_Status
   if reached:                                              # Ziel erreicht?
      time.sleep(0.5)                                       # Warte 500 ms


39A0.18h Bremsenmanagement - AUS-ODER-Bedingung

Name | MOTOR_BrakeManagement_OffOrConditionFlags
Bezeichnung | Bremsenmanagement - AUS-ODER-Bedingung
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.50
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_BrakeManagement_Config, MOTOR_BrakeManagement_Status, MOTOR_BrakeManagement_VelMin, MOTOR_BrakeManagement_Din, MOTOR_BrakeManagement_Dout, MOTOR_BrakeManagement_UpBrakeOff, MOTOR_BrakeManagement_UpBrakeOn, MOTOR_BrakeManagement_OffDelay1, MOTOR_BrakeManagement_OffDelay2, MOTOR_BrakeManagement_OnDelay1, MOTOR_BrakeManagement_OnDelay2, MOTOR_BrakeManagement_OffAndConditionFlags, MOTOR_BrakeManagement_OnOrConditionFlags, MOTOR_BrakeManagement_OnAndConditionFlags

Beschreibung

Dieser Parameter definiert unter welcher Bedingung die Bremse deaktiviert wird.
Nach der Erfüllung mindestens einer von den gesetzten Bedingungen wird die Bremse deaktiviert.

Die Parameter MOTOR_BrakeManagement_OffOrConditionFlags und MOTOR_BrakeManagement_OffAndConditionFlags sind durch ein OR-Glied miteinander verknüpft.
Das heißt die Bremse wird deaktiviert wenn mindestens eine Bedingung von MOTOR_BrakeManagement_OffOrConditionFlags zutrifft oder alle Bedingungen von MOTOR_BrakeManagement_OffAndConditionFlags zutreffen.

Parameterwerte:
Bit | Funktion | Beschreibung
0 | MoveCmd | Deaktivierung der Bremse nach dem Starten einer Bewegung
1 | BrakeDin | Deaktivierung der Bremse bei der Änderung des Signals BrakeDin (Low-Aktiv oder High-Aktiv)
2 | Enable | Deaktivierung der Bremse nach Betriebsfreigabe
3 | ErrorClear | Deaktivierung der Bremse nach dem Kommando "Fehler löschen"
4 | Up > Up_br_off | Deaktivierung der Bremse wenn die Leistungsspannung Up größer ist als die Spannung Up_br_off
5 | Reserved | Reserviert
6 | OnContinue after QuickStop | Deaktivierung der Bremse nach dem Kommando "Continue" nach dem QuickStop
7 | OnContinue after Halt | Deaktivierung der Bremse nach dem Kommando "Continue" nach dem Halt
Allgemeine Beschreibung siehe unter MOTOR_BrakeManagement_Config.


39A0.19h Bremsenmanagement - AUS-UND-Bedingung

Name | MOTOR_BrakeManagement_OffAndConditionFlags
Bezeichnung | Bremsenmanagement - AUS-UND-Bedingung
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.50
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_BrakeManagement_Config, MOTOR_BrakeManagement_Status, MOTOR_BrakeManagement_VelMin, MOTOR_BrakeManagement_Din, MOTOR_BrakeManagement_Dout, MOTOR_BrakeManagement_UpBrakeOff, MOTOR_BrakeManagement_UpBrakeOn, MOTOR_BrakeManagement_OffDelay1, MOTOR_BrakeManagement_OffDelay2, MOTOR_BrakeManagement_OnDelay1, MOTOR_BrakeManagement_OnDelay2, MOTOR_BrakeManagement_OffOrConditionFlags, MOTOR_BrakeManagement_OnOrConditionFlags, MOTOR_BrakeManagement_OnAndConditionFlags

Beschreibung

Dieser Parameter definiert unter welcher Bedingung die Bremse deaktiviert wird.
Nach der Erfüllung aller gesetzten Bedingungen wird die Bremse deaktiviert.

Die Parameter MOTOR_BrakeManagement_OffOrConditionFlags und MOTOR_BrakeManagement_OffAndConditionFlags sind durch ein OR-Glied miteinander verknüpft.
Das heißt die Bremse wird deaktiviert wenn mindestens eine Bedingung von MOTOR_BrakeManagement_OffOrConditionFlags zutrifft oder alle Bedingungen von MOTOR_BrakeManagement_OffAndConditionFlags zutreffen.

Parameterwerte:
Bit | Funktion | Beschreibung
0 | MoveCmd | Deaktivierung der Bremse nach dem Starten einer Bewegung
1 | BrakeDin | Deaktivierung der Bremse bei der Änderung des Signals BrakeDin (Low-Aktiv oder High-Aktiv)
2 | Enable | Deaktivierung der Bremse nach Betriebsfreigabe
3 | ErrorClear | Deaktivierung der Bremse nach dem Kommando "Fehler löschen"
4 | Up > Up_br_off | Deaktivierung der Bremse wenn die Leistungsspannung Up größer ist als die Spannung Up_br_off
5 | Reserved | Reserviert
6 | OnContinue after QuickStop | Deaktivierung der Bremse nach dem Kommando "Continue" nach dem QuickStop
7 | OnContinue after Halt | Deaktivierung der Bremse nach dem Kommando "Continue" nach dem Halt
Allgemeine Beschreibung siehe unter MOTOR_BrakeManagement_Config.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                                  # NodeId = 1

d.SdoWr(0x39A0, 0x00, 1)                                    # MOTOR_BrakeManagement_Config - Enable

print "Bremsmanagement Konfig=",  d.SdoRd(0x39A0, 0x00)     # MOTOR_BrakeManagement_Config
print "Bremsmanagement Status=", hex(d.SdoRd(0x39A0, 0x01)) # MOTOR_BrakeManagement_Status

print "Drehzahlschwelle=", d.SdoRd(0x39A0, 0x06)             # MOTOR_BrakeManagement_VelMin

print "Digital Input Bremse=", d.SdoRd(0x39A0, 0x07)        # MOTOR_BrakeManagement_Din
print "Digital Output Bremse=", hex(d.SdoRd(0x39A0, 0x08))  # MOTOR_BrakeManagement_Dout

print "Über Up:", d.SdoRd(0x39A0, 0x09),"mV löse Bremse"    # MOTOR_BrakeManagement_UpBrakeOff
print "Unter Up:", d.SdoRd(0x39A0, 0x0A),"mV bremse"        # MOTOR_BrakeManagement_UpBrakeOn

#init Bremsmanagement
d.SdoWr(0x39A0, 0x10, 25)                                   # MOTOR_BrakeManagement_OffDelay1 - t1 = 25 ms
d.SdoWr(0x39A0, 0x11, 75)                                   # MOTOR_BrakeManagement_OffDelay2 - t2 = 75 ms

d.SdoWr(0x39A0, 0x12, 15)                                   # MOTOR_BrakeManagement_OnDelay1 - t3 = 15 ms
d.SdoWr(0x39A0, 0x13, 35)                                   # MOTOR_BrakeManagement_OnDelay2 - t4 = 35 ms

d.SdoWr(0x39A0, 0x18, 0x01)                                 # MOTOR_BrakeManagement_OffOrConditionFlags - lösen bei MoveCmd
d.SdoWr(0x39A0, 0x19, 0x00)                                 # MOTOR_BrakeManagement_OffAndConditionFlags

d.SdoWr(0x39A0, 0x1A, 0x21)                                 # MOTOR_BrakeManagement_OnOrConditionFlags - bremsen bei Rampe stoppt oder Ziel erreicht
d.SdoWr(0x39A0, 0x1B, 0x00)                                 # MOTOR_BrakeManagement_OnAndConditionFlags

#init
d.SdoWr(0x3004, 0x00, 0)                                    # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)                                    # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                                    # VEL_DesiredValue - Solldrehzahl = 500 [U/min]
d.SdoWr(0x3004, 0x00, 1)                                    # DEV_Enable - Endstufe freigeben

# Schreibe Parameter für Bewegung
d.SdoWr(0x3000, 0x10, 600)                                  # DEV_CmdData0 - 600 U/min
d.SdoWr(0x3000, 0x11, 6000)                                 # DEV_CmdData1 - 6000 ink

# Führe Bewegung 10 mal aus
for i in xrange(10):
   d.SdoWr(0x3000, 0x01, 0)                                 # DEV_Cmd_ExecOnChange - Toggle
   d.SdoWr(0x3000, 0x01, 0x34)                              # DEV_Cmd_ExecOnChange - MovR
   reached = (d.SdoRd(0x3002, 0x00) & 0x10)                 # DEV_Status
   while not(reached):                                      # Ziel noch nicht erreicht ?
      reached = (d.SdoRd(0x3002, 0x00) & 0x10)              # DEV_Status
   if reached:                                              # Ziel erreicht?
      time.sleep(0.5)                                       # Warte 500 ms


39A0.1Ah Bremsenmanagement - EIN-ODER-Bedingung

Name | MOTOR_BrakeManagement_OnOrConditionFlags
Bezeichnung | Bremsenmanagement - EIN-ODER-Bedingung
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | 1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.50
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_BrakeManagement_Config, MOTOR_BrakeManagement_Status, MOTOR_BrakeManagement_VelMin, MOTOR_BrakeManagement_Din, MOTOR_BrakeManagement_Dout, MOTOR_BrakeManagement_UpBrakeOff, MOTOR_BrakeManagement_UpBrakeOn, MOTOR_BrakeManagement_OffDelay1, MOTOR_BrakeManagement_OffDelay2, MOTOR_BrakeManagement_OnDelay1, MOTOR_BrakeManagement_OnDelay2, MOTOR_BrakeManagement_OffOrConditionFlags, MOTOR_BrakeManagement_OffAndConditionFlags, MOTOR_BrakeManagement_OnAndConditionFlags

Beschreibung

Dieser Parameter definiert unter welcher Bedingung die Bremse aktiviert wird.
Nach der Erfüllung mindestens einer von der gesetzten Bedingung wird die Bremse aktiviert.

Die Parameter MOTOR_BrakeManagement_OnOrConditionFlags und MOTOR_BrakeManagement_OnAndConditionFlags sind durch ein OR-Glied miteinander verknüpft.
Das heißt die Bremse wird aktiviert wenn mindestens eine Bedingung von MOTOR_BrakeManagement_OnOrConditionFlags zutrifft oder alle Bedingungen von MOTOR_BrakeManagement_OnAndConditionFlags zutreffen.

Parameterwerte:
Bit | Funktion | Beschreibung
0 | Rampgenerator stop | Aktivierung der Bremse nach dem Ende einer Bewegung
1 | BrakeDin | Aktivierung der Bremse bei der Änderung des Signals BrakeDin (Low-Aktiv oder High-Aktiv)
2 | Disable | Aktivierung der Bremse nach gesperrter Betriebsfreigabe
3 | Error | Aktivierung der Bremse nach dem Auftreten des Fehlers
4 | Up < Up_br_on | Aktivierung der Bremse wenn die Leistungsspannung Up kleiner ist als die Spannung Up_br_on
5 | TargetReachedBit | Aktivierung der Bremse nach dem Setzen des Bits STAT_Reached (Bit 4 in DEV_Status)
6 | After QuickStop | Aktivierung der Bremse nach dem QuickStop
7 | After Halt | Aktivierung der Bremse nach dem Halt
Allgemeine Beschreibung siehe unter MOTOR_BrakeManagement_Config.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                                  # NodeId = 1

d.SdoWr(0x39A0, 0x00, 1)                                    # MOTOR_BrakeManagement_Config - Enable

print "Bremsmanagement Konfig=",  d.SdoRd(0x39A0, 0x00)     # MOTOR_BrakeManagement_Config
print "Bremsmanagement Status=", hex(d.SdoRd(0x39A0, 0x01)) # MOTOR_BrakeManagement_Status

print "Drehzahlschwelle=", d.SdoRd(0x39A0, 0x06)             # MOTOR_BrakeManagement_VelMin

print "Digital Input Bremse=", d.SdoRd(0x39A0, 0x07)        # MOTOR_BrakeManagement_Din
print "Digital Output Bremse=", hex(d.SdoRd(0x39A0, 0x08))  # MOTOR_BrakeManagement_Dout

print "Über Up:", d.SdoRd(0x39A0, 0x09),"mV löse Bremse"    # MOTOR_BrakeManagement_UpBrakeOff
print "Unter Up:", d.SdoRd(0x39A0, 0x0A),"mV bremse"        # MOTOR_BrakeManagement_UpBrakeOn

#init Bremsmanagement
d.SdoWr(0x39A0, 0x10, 25)                                   # MOTOR_BrakeManagement_OffDelay1 - t1 = 25 ms
d.SdoWr(0x39A0, 0x11, 75)                                   # MOTOR_BrakeManagement_OffDelay2 - t2 = 75 ms

d.SdoWr(0x39A0, 0x12, 15)                                   # MOTOR_BrakeManagement_OnDelay1 - t3 = 15 ms
d.SdoWr(0x39A0, 0x13, 35)                                   # MOTOR_BrakeManagement_OnDelay2 - t4 = 35 ms

d.SdoWr(0x39A0, 0x18, 0x01)                                 # MOTOR_BrakeManagement_OffOrConditionFlags - lösen bei MoveCmd
d.SdoWr(0x39A0, 0x19, 0x00)                                 # MOTOR_BrakeManagement_OffAndConditionFlags

d.SdoWr(0x39A0, 0x1A, 0x21)                                 # MOTOR_BrakeManagement_OnOrConditionFlags - bremsen bei Rampe stoppt oder Ziel erreicht
d.SdoWr(0x39A0, 0x1B, 0x00)                                 # MOTOR_BrakeManagement_OnAndConditionFlags

#init
d.SdoWr(0x3004, 0x00, 0)                                    # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)                                    # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                                    # VEL_DesiredValue - Solldrehzahl = 500 [U/min]
d.SdoWr(0x3004, 0x00, 1)                                    # DEV_Enable - Endstufe freigeben

# Schreibe Parameter für Bewegung
d.SdoWr(0x3000, 0x10, 600)                                  # DEV_CmdData0 - 600 U/min
d.SdoWr(0x3000, 0x11, 6000)                                 # DEV_CmdData1 - 6000 ink

# Führe Bewegung 10 mal aus
for i in xrange(10):
   d.SdoWr(0x3000, 0x01, 0)                                 # DEV_Cmd_ExecOnChange - Toggle
   d.SdoWr(0x3000, 0x01, 0x34)                              # DEV_Cmd_ExecOnChange - MovR
   reached = (d.SdoRd(0x3002, 0x00) & 0x10)                 # DEV_Status
   while not(reached):                                      # Ziel noch nicht erreicht ?
      reached = (d.SdoRd(0x3002, 0x00) & 0x10)              # DEV_Status
   if reached:                                              # Ziel erreicht?
      time.sleep(0.5)                                       # Warte 500 ms


39A0.1Bh Bremsenmanagement - EIN-UND-Bedingung

Name | MOTOR_BrakeManagement_OnAndConditionFlags
Bezeichnung | Bremsenmanagement - EIN-UND-Bedingung
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.82.02.50
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_BrakeManagement_Config, MOTOR_BrakeManagement_Status, MOTOR_BrakeManagement_VelMin, MOTOR_BrakeManagement_Din, MOTOR_BrakeManagement_Dout, MOTOR_BrakeManagement_UpBrakeOff, MOTOR_BrakeManagement_UpBrakeOn, MOTOR_BrakeManagement_OffDelay1, MOTOR_BrakeManagement_OffDelay2, MOTOR_BrakeManagement_OnDelay1, MOTOR_BrakeManagement_OnDelay2, MOTOR_BrakeManagement_OffOrConditionFlags, MOTOR_BrakeManagement_OffAndConditionFlags, MOTOR_BrakeManagement_OnOrConditionFlags

Beschreibung

Dieser Parameter definiert unter welcher Bedingung die Bremse aktiviert wird.
Nach der Erfüllung aller gesetzten Bedingungen wird die Bremse aktiviert.

Die Parameter MOTOR_BrakeManagement_OnOrConditionFlags und MOTOR_BrakeManagement_OnAndConditionFlags sind durch ein OR-Glied miteinander verknüpft.
Das heißt die Bremse wird aktiviert wenn mindestens eine Bedingung von MOTOR_BrakeManagement_OnOrConditionFlags zutrifft oder alle Bedingungen von MOTOR_BrakeManagement_OnAndConditionFlags zutreffen.

Parameterwerte:
Bit | Funktion | Beschreibung
0 | Rampgenerator stop | Aktivierung der Bremse nach dem Ende einer Bewegung
1 | BrakeDin | Aktivierung der Bremse bei der Änderung des Signals BrakeDin (Low-Aktiv oder High-Aktiv)
2 | Disable | Aktivierung der Bremse nach gesperrter Betriebsfreigabe
3 | Error | Aktivierung der Bremse nach dem Auftreten des Fehlers
4 | Up < Up_br_on | Aktivierung der Bremse wenn die Leistungsspannung Up kleiner ist als die Spannung Up_br_on
5 | TargetReachedBit | Aktivierung der Bremse nach dem Setzen des Bits STAT_Reached (Bit 4 in DEV_Status)
6 | After QuickStop | Aktivierung der Bremse nach dem QuickStop
7 | After Halt | Aktivierung der Bremse nach dem Halt
Allgemeine Beschreibung siehe unter MOTOR_BrakeManagement_Config.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                                  # NodeId = 1

d.SdoWr(0x39A0, 0x00, 1)                                    # MOTOR_BrakeManagement_Config - Enable

print "Bremsmanagement Konfig=",  d.SdoRd(0x39A0, 0x00)     # MOTOR_BrakeManagement_Config
print "Bremsmanagement Status=", hex(d.SdoRd(0x39A0, 0x01)) # MOTOR_BrakeManagement_Status

print "Drehzahlschwelle=", d.SdoRd(0x39A0, 0x06)             # MOTOR_BrakeManagement_VelMin

print "Digital Input Bremse=", d.SdoRd(0x39A0, 0x07)        # MOTOR_BrakeManagement_Din
print "Digital Output Bremse=", hex(d.SdoRd(0x39A0, 0x08))  # MOTOR_BrakeManagement_Dout

print "Über Up:", d.SdoRd(0x39A0, 0x09),"mV löse Bremse"    # MOTOR_BrakeManagement_UpBrakeOff
print "Unter Up:", d.SdoRd(0x39A0, 0x0A),"mV bremse"        # MOTOR_BrakeManagement_UpBrakeOn

#init Bremsmanagement
d.SdoWr(0x39A0, 0x10, 25)                                   # MOTOR_BrakeManagement_OffDelay1 - t1 = 25 ms
d.SdoWr(0x39A0, 0x11, 75)                                   # MOTOR_BrakeManagement_OffDelay2 - t2 = 75 ms

d.SdoWr(0x39A0, 0x12, 15)                                   # MOTOR_BrakeManagement_OnDelay1 - t3 = 15 ms
d.SdoWr(0x39A0, 0x13, 35)                                   # MOTOR_BrakeManagement_OnDelay2 - t4 = 35 ms

d.SdoWr(0x39A0, 0x18, 0x01)                                 # MOTOR_BrakeManagement_OffOrConditionFlags - lösen bei MoveCmd
d.SdoWr(0x39A0, 0x19, 0x00)                                 # MOTOR_BrakeManagement_OffAndConditionFlags

d.SdoWr(0x39A0, 0x1A, 0x21)                                 # MOTOR_BrakeManagement_OnOrConditionFlags - bremsen bei Rampe stoppt oder Ziel erreicht
d.SdoWr(0x39A0, 0x1B, 0x00)                                 # MOTOR_BrakeManagement_OnAndConditionFlags

#init
d.SdoWr(0x3004, 0x00, 0)                                    # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)                                    # DEV_Mode - Positioniermodus
d.SdoWr(0x3300, 0x00, 0)                                    # VEL_DesiredValue - Solldrehzahl = 500 [U/min]
d.SdoWr(0x3004, 0x00, 1)                                    # DEV_Enable - Endstufe freigeben

# Schreibe Parameter für Bewegung
d.SdoWr(0x3000, 0x10, 600)                                  # DEV_CmdData0 - 600 U/min
d.SdoWr(0x3000, 0x11, 6000)                                 # DEV_CmdData1 - 6000 ink

# Führe Bewegung 10 mal aus
for i in xrange(10):
   d.SdoWr(0x3000, 0x01, 0)                                 # DEV_Cmd_ExecOnChange - Toggle
   d.SdoWr(0x3000, 0x01, 0x34)                              # DEV_Cmd_ExecOnChange - MovR
   reached = (d.SdoRd(0x3002, 0x00) & 0x10)                 # DEV_Status
   while not(reached):                                      # Ziel noch nicht erreicht ?
      reached = (d.SdoRd(0x3002, 0x00) & 0x10)              # DEV_Status
   if reached:                                              # Ziel erreicht?
      time.sleep(0.5)                                       # Warte 500 ms


3CE0.00h ASI-Kommando

Name | COM_ASI_Cmd
Bezeichnung | ASI-Kommando
Datentyp | uint32
Zugriff | nur Schreiben
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.03.AA
Geräte | ausgenommen: EDC-xx-EtherCat
PLC Funktion | -
Querverweis | COM_ASI_Baudrate

Beschreibung

Beim Beschreiben dieses Parameters wird ein ASI-Kommando ausgeführt.

Wert | Beschreibung
0 | Keine Wirkung
1 | Gesetzte Baudrate aktivieren
Achtung
Der Parameter is nur bei den Geräten mit RS232- oder RS485-Schnittstelle verfügbar.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId

d.SdoWr(0x3CE0, 0x06, 57600)     # COM_ASI_Baudrate - neue Baudrate setzen
d.SdoWr(0x3CE0, 0x00, 1)         # COM_ASI_Cmd - neue Baudrate aktivieren


3CE0.06h ASI-Baudrate

Name | COM_ASI_Baudrate
Bezeichnung | ASI-Baudrate
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-1 .. 115200]
Defaultwert | -1
Einheit | [Baud]
Betriebsart | Alle
Verfügbar ab | 1.85.03.AA
Geräte | ausgenommen: EDC-xx-EtherCat
PLC Funktion | -
Querverweis | COM_ASI_Cmd

Beschreibung

Der Parameter bestimmt die ASI Baudrate des Gerätes. Die Baudrate wird erst nach der Ausführung des Parameters COM_ASI_Cmd übernommen. Der Wert -1 bedeutet 9600 Bit/s.
Achtung
Der Parameter is nur bei den Geräten mit RS232- oder RS485-Schnittstelle verfügbar.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId

d.SdoWr(0x3CE0, 0x06, 57600)     # COM_ASI_Baudrate - neue Baudrate setzen
d.SdoWr(0x3CE0, 0x00, 1)         # COM_ASI_Cmd - neue Baudrate aktivieren


Inhalt - Parameter 3000h (DSA) - Master-Tool

3D14.00h | TOOL_Master_Control | Master-Tool - Konfiguration
3D14.10h | TOOL_Master_ParSource | Master-Tool - Rückführungs-Parameter
3D14.12h | TOOL_Master_ScaleNum | Master-Tool - Skalierung Zähler
3D14.13h | TOOL_Master_ScaleDen | Master-Tool - Skalierung Nenner
3D14.14h | TOOL_Master_MaxVel | Master-Tool - Maximale Geschwindigkeit
3D14.31h | TOOL_Master_FilterKp | Master-Tool - Filter Proportionalfaktor


3D14.00h Master-Tool - Konfiguration

Name | TOOL_Master_Control
Bezeichnung | Master-Tool - Konfiguration
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1}
Defaultwert | 0
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.93.00.EF
Geräte | Alle
PLC Funktion | -
Querverweis | TOOL_Master_ParSource, TOOL_Master_ScaleNum, TOOL_Master_ScaleDen, TOOL_Master_MaxVel, TOOL_Master_FilterKp

Beschreibung

Mit diesem Parameter kann das Master-Tool aktiviert oder deaktiviert werden.

Parameterwerte:
Wert | Bedeutung
0 | Das Master-Tool ist nicht aktiv
1 | Das Master-Tool ist aktiviert

Mit Hilfe des Master-Tools ist es möglich die Lageregelung mit einer weiteren Rückführung, der Master-Tool Rückführung, zu synchronisieren. Driften die Kommando-Position und die Position der Master-Tool Rückführung auseinander, obwohl die Position der internen Rückführung nicht von der Kommando-Position abweicht, wird der Regler trotzdem versuchen, diese Differenz automatisch auszuregeln. Dazu wird, je nach Richtung des Schlupfes, die Soll-Geschwindigkeit des Reglers angepasst.

Die Auswahl der Master-Tool Rückführung erfolgt über das Objekt TOOL_Master_ParSource. Dabei wird die Bezugsquelle der Master-Tool Rückführung als Parameter im folgenden Format angegeben:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des Parameters für die Master-Tool Rückführung angibt.

Da die interne Rückführung und die Master-Tool Rückführung nicht zwingend über die selbe Auflösung verfügen, muss die Auflösung der Master-Tool Rückführung angepasst werden. Die Skalierung erfolgt über die Objekte TOOL_Master_ScaleNum und TOOL_Master_ScaleDen. Diese Skalierung der Master-Tool Rückführung muss dabei so gewählt werden, dass sich eine reale Positionsdifferenz in der internen Rückführung und der Master-Tool Rückführung als gleich große Differenz äußern. Andernfalls wird ständig eine steigende Abweichung zwischen Kommando-Position und Ist-Position entstehen, welche nie ausgeglichen werden kann.

Eine falsche Skalierung kann zu einem Fehlverhalten des Systems führen. Bei der Einstellung des Master-Tools ist besondere Vorsicht geboten.

Das Master-Tool arbeitet dabei wie ein P-Regler. Das bedeutet, dass die Abweichung der Kommando-Position und der Master-Tool Position über den Verstärkungsfaktor TOOL_Master_FilterKp verstärkt und auf die aktuelle Kommando-Position addiert wird. Daraus ergibt sich eine Abweichung zwischen Ist-Position und Kommando-Position, welche ausgeglichen werden muss. Damit diese Differenz ausgeglichen werden kann, muss der Regler seine Kommando-Geschwindigkeit anpassen. Um ein zu starkes Ausregeln zu vermeiden, kann diese Ausgleichsgeschwindigkeit begrenzt werden. Die maximale Ausgleichsgeschwindigkeit wird in dem Objekt TOOL_Master_MaxVel festgelegt.

Ein zu hoher Wert für den Verstärkungsfaktor (TOOL_Master_FilterKp) und/oder die maximale Ausgleichsgeschwindigkeit (TOOL_Master_MaxVel) kann zu Schwingungen und einem instabilen System führen.
Die Abweichung zwischen der Master-Tool Position Rückführung und der Kommando-Position wird in dem Objekt POS_ActualFollowingError angegeben. Da auch eine Abweichung zwischen der internen Rückführung und der Kommando-Position auftreten kann, ohne dass eine Abweichung der Master-Tool Position und der Kommando-Position auftreten muss, oder umgekehrt, wird der größere Schleppabstand als Kriterium für die Generierung des Schleppfehlers (POS_FollowingErrorWindow) herangezogen.

Da die Abweichung (Schlupf) der Master-Tool Rückführung zur Kommando-Position durch physikalische Eingenschaften bedingt ist, kann diese Abweichung nicht zwingend als Kriterium der Regelgüte angesehen werden. Um weiterhin die Regelgüte anhand des Schleppfehlers beurteilen zu können, sollte das Objekt POS_ActualFollowingErrorReg herangezogen werden. Dieses zeigt nur die Differenz der internen Rückführung zur Kommando-Position an.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                          # NodeId = 1

d.SdoWr(0x3D14,0x10, 0x396A20)      # TOOL_Master_ParSource - Quelle für die externe Position
d.SdoWr(0x3D14,0x12, 1)             # TOOL_Master_ScaleNum  - Zähler für die Skalierung
d.SdoWr(0x3D14,0x13, 1)             # TOOL_Master_ScaleDen  - Nenner für die Skalierung
d.SdoWr(0x3D14,0x14, 150)           # TOOL_Master_MaxVel    - Maximale Geschwindigkeit
d.SdoWr(0x3D14,0x31, 100)           # TOOL_Master_FilterKp  - Regelparameter Kp
d.SdoWr(0x3D14,0x00, 1)             # TOOL_Master_Control   - Freigabe des Master Tools


3D14.10h Master-Tool - Rückführungs-Parameter

Name | TOOL_Master_ParSource
Bezeichnung | Master-Tool - Rückführungs-Parameter
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 3754496, 3762688, 3762720, 3766784, 3772576, 3772832}
Defaultwert | 0
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.93.00.EF
Geräte | Alle
PLC Funktion | -
Querverweis | TOOL_Master_Control, TOOL_Master_ScaleNum, TOOL_Master_ScaleDen, TOOL_Master_MaxVel, TOOL_Master_FilterKp

Beschreibung

In diesem Parameter wird festgelegt, aus welcher Bezugsquelle das Master-Tool den Positionswert beziehen soll.

Die Bezugsquelle wird als Parameter dabei folgendermaßen angegeben:

0xIIIISS

Wobei IIII den Index des Parameters und SS den Subindex des Parameters für die Master-Tool Rückführung angibt.

Mögliche Bezugsquellen :
Wert | Name des Parameters
394A00h | MOT_HALL_ActualPosition
396A00h | MOT_ENC_INC_ActualPositon
396A20h | MOT_ENC_INC2_ActualPosition
397A00h | MOT_ENC_SSI_ActualPosition
3990A0h | MOT_ENC_VIRT0_ActualPosition
3991A0h | MOT_ENC_VIRT1_ActualPosition

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                          # NodeId = 1

d.SdoWr(0x3D14,0x10, 0x396A20)      # TOOL_Master_ParSource - Quelle für die externe Position
d.SdoWr(0x3D14,0x12, 1)             # TOOL_Master_ScaleNum  - Zähler für die Skalierung
d.SdoWr(0x3D14,0x13, 1)             # TOOL_Master_ScaleDen  - Nenner für die Skalierung
d.SdoWr(0x3D14,0x14, 150)           # TOOL_Master_MaxVel    - Maximale Geschwindigkeit
d.SdoWr(0x3D14,0x31, 100)           # TOOL_Master_FilterKp  - Regelparameter Kp
d.SdoWr(0x3D14,0x00, 1)             # TOOL_Master_Control   - Freigabe des Master Tools


3D14.12h Master-Tool - Skalierung Zähler

Name | TOOL_Master_ScaleNum
Bezeichnung | Master-Tool - Skalierung Zähler
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-8388608 .. 8388607]
Defaultwert | 1
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.93.00.EF
Geräte | Alle
PLC Funktion | -
Querverweis | TOOL_Master_Control, TOOL_Master_ParSource, TOOL_Master_ScaleDen, TOOL_Master_MaxVel, TOOL_Master_FilterKp

Beschreibung

Mit diesem Parameter wird der Zähler für die Skalierung des Master-Tools angegeben.

Die Funktionsweise des Master-Tools und Abhängigkeit zu anderen Parametern wird in TOOL_Master_Control erläutert.

Eine falsche Skalierung kann zu einem Fehlverhalten des Systems führen. Bei der Einstellung des Master-Tools ist besondere Vorsicht geboten.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                          # NodeId = 1

d.SdoWr(0x3D14,0x10, 0x396A20)      # TOOL_Master_ParSource - Quelle für die externe Position
d.SdoWr(0x3D14,0x12, 1)             # TOOL_Master_ScaleNum  - Zähler für die Skalierung
d.SdoWr(0x3D14,0x13, 1)             # TOOL_Master_ScaleDen  - Nenner für die Skalierung
d.SdoWr(0x3D14,0x14, 150)           # TOOL_Master_MaxVel    - Maximale Geschwindigkeit
d.SdoWr(0x3D14,0x31, 100)           # TOOL_Master_FilterKp  - Regelparameter Kp
d.SdoWr(0x3D14,0x00, 1)             # TOOL_Master_Control   - Freigabe des Master Tools


3D14.13h Master-Tool - Skalierung Nenner

Name | TOOL_Master_ScaleDen
Bezeichnung | Master-Tool - Skalierung Nenner
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-8388608 .. 8388607]
Defaultwert | 1
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.93.00.EF
Geräte | Alle
PLC Funktion | -
Querverweis | TOOL_Master_Control, TOOL_Master_ParSource, TOOL_Master_ScaleNum, TOOL_Master_MaxVel, TOOL_Master_FilterKp

Beschreibung

Mit diesem Parameter wird der Nenner für die Skalierung des Master-Tools angegeben.

Die Funktionsweise des Master-Tools und Abhängigkeit zu anderen Parametern wird in TOOL_Master_Control erläutert.

Eine falsche Skalierung kann zu einem Fehlverhalten des Systems führen. Bei der Einstellung des Master-Tools ist besondere Vorsicht geboten.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                          # NodeId = 1

d.SdoWr(0x3D14,0x10, 0x396A20)      # TOOL_Master_ParSource - Quelle für die externe Position
d.SdoWr(0x3D14,0x12, 1)             # TOOL_Master_ScaleNum  - Zähler für die Skalierung
d.SdoWr(0x3D14,0x13, 1)             # TOOL_Master_ScaleDen  - Nenner für die Skalierung
d.SdoWr(0x3D14,0x14, 150)           # TOOL_Master_MaxVel    - Maximale Geschwindigkeit
d.SdoWr(0x3D14,0x31, 100)           # TOOL_Master_FilterKp  - Regelparameter Kp
d.SdoWr(0x3D14,0x00, 1)             # TOOL_Master_Control   - Freigabe des Master Tools


3D14.14h Master-Tool - Maximale Geschwindigkeit

Name | TOOL_Master_MaxVel
Bezeichnung | Master-Tool - Maximale Geschwindigkeit
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 100
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Position
Verfügbar ab | 1.93.00.EF
Geräte | Alle
PLC Funktion | -
Querverweis | TOOL_Master_Control, TOOL_Master_ParSource, TOOL_Master_ScaleNum, TOOL_Master_ScaleDen, TOOL_Master_FilterKp

Beschreibung

Anhand dieses Parameters wird festgelegt, wie viel die Geschwindigkeit im Falle einer Abweichung (Schlupf) zwischen der Master-Tool Rückführung und der Kommando-Position maximal erhöht bzw. verringert werden darf, um den Schlupf wieder auszugleichen. Wird z.B. in diesem Parameter der Wert 100 [U/min] hinterlegt, so wird die Kommandogeschwindigkeit um maximal 100 [U/min] erhöht bzw. verringert um die Differenz zwischen der Master-Tool Rückführung und der Kommando-Position auszugleichen.

Eine Ausgleich des Schleppabstands des Master-Tools kann dazu führen, dass die Geschwindigkeitsgrenzen VEL_LimitMaxPos und VEL_LimitMaxNeg über- bzw. unterschritten werden.

ACHTUNG

 Bei Einstellungen dieses Parameters ist besondere Vorsicht geboten. Bei einem instabilen Regler (in der Regel bei zu großen P-Parameterwerten und/oder zu großen MaxVel) kann die Drehzahl unkontrolliert und ruckartig ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen !

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                          # NodeId = 1

d.SdoWr(0x3D14,0x10, 0x396A20)      # TOOL_Master_ParSource - Quelle für die externe Position
d.SdoWr(0x3D14,0x12, 1)             # TOOL_Master_ScaleNum  - Zähler für die Skalierung
d.SdoWr(0x3D14,0x13, 1)             # TOOL_Master_ScaleDen  - Nenner für die Skalierung
d.SdoWr(0x3D14,0x14, 150)           # TOOL_Master_MaxVel    - Maximale Geschwindigkeit
d.SdoWr(0x3D14,0x31, 100)           # TOOL_Master_FilterKp  - Regelparameter Kp
d.SdoWr(0x3D14,0x00, 1)             # TOOL_Master_Control   - Freigabe des Master Tools


3D14.31h Master-Tool - Filter Proportionalfaktor

Name | TOOL_Master_FilterKp
Bezeichnung | Master-Tool - Filter Proportionalfaktor
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 100
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.93.00.EF
Geräte | Alle
PLC Funktion | -
Querverweis | TOOL_Master_Control, TOOL_Master_ParSource, TOOL_Master_ScaleNum, TOOL_Master_ScaleDen, TOOL_Master_MaxVel

Beschreibung

Dieser Parameter gibt den Verstärkungsfaktor des P-Reglers vom Master-Tool an. Der Verstärkungsfaktor bestimmt, wie groß die Ausgleichsgeschwindigkeit bei einer konstanten Abweichung zwischen Kommando-Position und Position der Master-Tool Rückführung ist.

ACHTUNG

 Bei Einstellungen dieses Parameters ist besondere Vorsicht geboten. Bei einem instabilen Regler (in der Regel bei zu großen P-Parameterwerten und/oder zu großen MaxVel) kann die Drehzahl unkontrolliert und ruckartig ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen !


Inhalt - Parameter 6000h (DS402)

6007.00h | DS402_AbortConnectionOptionCode | Optionscode bei Abbruch der Kommunikation
6040.00h | DS402_ControlWord | Steuerwort
6041.00h | DS402_StatusWord | Statuswort
6042.00h | DS402_VL_TargetVelocity | Drehzahlsollwert
6046.00h | DS402_VL_VelocityMinMaxAmount_HighestSubindexSupported | Min/Max Drehzahl - Max Subindex des Objektes
6046.01h | DS402_VL_VelocityMinMaxAmount_MinVelocity | Minimale Drehzahl
6046.02h | DS402_VL_VelocityMinMaxAmount_MaxVelocity | Maximale Drehzahl
6048.00h | DS402_VL_VelocityAcceleration_HighestSubindexSupported | Drehzahlbeschleunigung - Max Subindex des Objektes
6048.01h | DS402_VL_VelocityAcceleration_DeltaSpeed | Drehzahlbeschleunigung - Delta Drehzahl
6048.02h | DS402_VL_VelocityAcceleration_DeltaTime | Drehzahlbeschleunigung - Delta Zeit
6049.00h | DS402_VL_VelocityDeceleration_HighestSubindexSupported | Drehzahlverzögerung - Max Subindex des Objektes
6049.01h | DS402_VL_VelocityDeceleration_DeltaSpeed | Drehzahlverzögerung - Delta Drehzahl
6049.02h | DS402_VL_VelocityDeceleration_DeltaTime | Drehzahlverzögerung - Delta Zeit
604A.00h | DS402_VL_VelocityQuickstop_HighestSubindexSupported | Drehzahl-Schnellhalt - Max Subindex des Objektes
604A.01h | DS402_VL_VelocityQuickstop_DeltaSpeed | Drehzahl-Schnellhalt - Delta Drehzahl
604A.02h | DS402_VL_VelocityQuickstop_DeltaTime | Drehzahl-Schnellhalt - Delta Zeit
604C.00h | DS402_VL_VelocityDimensionFactor_HighestSubindexSupported | Drehzahl-Dimensionfaktor - Max Subindex des Objektes
604C.01h | DS402_VL_VelocityDimensionFactor_Numerator | Drehzahl-Dimensionfaktor - Zähler
604C.02h | DS402_VL_VelocityDimensionFactor_Denominator | Drehzahl-Dimensionfaktor - Nenner
6060.00h | DS402_ModesOfOperation | Betriebsart
6061.00h | DS402_ModesOfOperationDisplay | Betriebsart-Anzeige
6062.00h | DS402_PP_PositionDemandValue | Positionssollwert
6063.00h | DS402_PP_PositionActualValueInCounts | Aktuelle Position in Inkrementen
6064.00h | DS402_PP_PositionActualValue | Aktuelle Position
6065.00h | DS402_PP_FollowingErrorWindow | Positionsschleppfehler - Fenster
6067.00h | DS402_PP_PositionWindow | Positionierfenster
6068.00h | DS402_PP_PositionWindowTime | Positionierfenster - Zeit
6071.00h | DS402_TQ_TargetTorque | Zieldrehmoment
6072.00h | DS402_TQ_MaxTorque | Maximales Drehmoment
6075.00h | DS402_TQ_MotorRatedCurrent | Motornennstrom
6077.00h | DS402_TQ_TorqueActualValue | Aktuelles Drehmoment
6078.00h | DS402_TQ_CurrentActualValue | Aktueller Motorstrom
6079.00h | DS402_TQ_DCLinkCircuitVoltage | Leistungsspannung
607A.00h | DS402_PP_TargetPosition | Zielposition
607C.00h | DS402_HM_HomeOffset | Referenzoffset
607D.00h | DS402_PP_SoftwareLimitPosition_HighestSubindexSupported | Software-Positionsbegrenzung - Max Subindex des Objektes
607D.01h | DS402_PP_SoftwareLimitPosition_MinPositionLimit | Software-Positionsbegrenzung - minimum
607D.02h | DS402_PP_SoftwareLimitPosition_MaxPositionLimit | Software-Positionsbegrenzung - maximum
607E.00h | DS402_FG_Polarity | Polarität
607F.00h | DS402_PP_MaxProfileVelocity | Drehzahlbegrenzung
6081.00h | DS402_PP_ProfileVelocity | Drehzahlsollwert
6083.00h | DS402_PP_ProfileAcceleration | Drehzahlbeschleunigung
6084.00h | DS402_PP_ProfileDeceleration | Drehzahlverzögerung
6085.00h | DS402_PP_QuickstopDeceleration | Drehzahl-Quickstop-Verzögerung
6086.00h | DS402_PP_MotionProfileType | Drehzahl - Rampentyp
6087.00h | DS402_TQ_TorqueSlope | Beschleunigung-Moment
6088.00h | DS402_TQ_TorqueProfileType | Strom - Rampentyp
6089.00h | DS402_PP_PositionNotationIndex | Position - Einheitenindex
608A.00h | DS402_PP_PositionDimensionIndex | Positions-Größenindex
608B.00h | DS402_PP_VelocityNotationIndex | Geschwindigkeit - Einheitenindex
608C.00h | DS402_PP_VelocityDimensionIndex | Geschwindigkeits-Größenindex
608D.00h | DS402_PP_AccelerationNotationIndex | Beschleinigung-Einheitenindex
608E.00h | DS402_PP_AccelerationDimensionIndex | Beschleunigungs-Größenindex
608F.00h | DS402_FG_PositionEncoderResolution_HighestSubindexSupported | Positionsgeber-Auflösung - Max Subindex des Objektes
608F.01h | DS402_FG_PositionEncoderResolution_EncoderIncrements | Positionsgeber-Auflösung - Encoderauflösung
608F.02h | DS402_FG_PositionEncoderResolution_MotorShaftRevolutions | Positionsgeber-Auflösung - Motorwelleumdrehungen
6090.00h | DS402_FG_VelocityEncoderResolution_HighestSubindexSupported | Drehzahlgeber-Auflösung - Max Subindex des Objektes
6090.01h | DS402_FG_VelocityEncoderResolution_EncoderIncrements | Drehzahlgeber-Auflösung - Encoderauflösung
6090.02h | DS402_FG_VelocityEncoderResolution_MotorShaftRevolutions | Drehzahlgeber-Auflösung - Motorwelleumdrehungen
6091.00h | DS402_FG_GearRatio_HighestSubindexSupported | Getriebeübersetzung - Max Subindex des Objektes
6091.01h | DS402_FG_GearRatio_MotorShaftRevolutions | Getriebeübersetzung - Motorwelleumdrehungen
6091.02h | DS402_FG_GearRatio_DrivingShaftRevolutions | Getriebeübersetzung - Wellenumdrehungen
6092.00h | DS402_FG_FeedConstant_HighestSubindexSupported | Vorschubkonstante - Max Subindex des Objektes
6092.01h | DS402_FG_FeedConstant_Feed | Vorschubkonstante - Vorschub
6092.02h | DS402_FG_FeedConstant_DrivingShaftRevolutions | Vorschubkonstante - Wellenumdrehungen
6098.00h | DS402_HM_HomingMethod | Referenzfahrt - Methode
6099.00h | DS402_HM_HomingSpeeds_HighestSubindexSupported | Referenzfahrt - Drehzahl - Max Subindex des Objektes
6099.01h | DS402_HM_HomingSpeeds_SpeedSwitch | Referenzfahrt - Drehzahl für Schaltersuche
6099.02h | DS402_HM_HomingSpeeds_SpeedZero | Referenzfahrt - Drehzahl für Nullpunktanfahrt
609A.00h | DS402_HM_HomingAcceleration | Referenzfahrt - Beschleunigung
60C0.00h | DS402_IP_InterpolationSubModeSelect | Interpolation - Methode
60C1.00h | DS402_IP_InterpolationDataRecord_HighestSubindexSupported | Interpolationsdatensatz - Max Subindex des Objektes
60C1.01h | DS402_IP_InterpolationDataRecord_1stSetPoint | Interpolationsdatensatz - 1.Sollwert
60C2.00h | DS402_IP_InterpolationTimePeriod_HighestSubindexSupported | Interpolationszeit - Max Subindex des Objektes
60C2.01h | DS402_IP_InterpolationTimePeriod_Value | Interpolationszeit - Wert
60C2.02h | DS402_IP_InterpolationTimePeriod_Index | Interpolationszeit - Index
60C4.00h | DS402_IP_InterpolationDataConfiguration_HighestSubindexSupported | Interpolationskonfigurationsdaten - Max Subindex des Objektes
60C4.01h | DS402_IP_InterpolationDataConfiguration_MaximumBufferSize | Interpolationskonfigurationsdaten - Maximanle Puffergröße
60C4.02h | DS402_IP_InterpolationDataConfiguration_ActualBufferSize | Interpolationskonfigurationsdaten - Aktuelle Puffergröße
60C4.03h | DS402_IP_InterpolationDataConfiguration_BufferOrganisation | Interpolationskonfigurationsdaten - Pufferorganization
60C4.04h | DS402_IP_InterpolationDataConfiguration_BufferPosition | Interpolationskonfigurationsdaten - Pufferposition
60C4.05h | DS402_IP_InterpolationDataConfiguration_SizeOfDataRecord | Interpolationskonfigurationsdaten - Datensatzgröße
60C4.06h | DS402_IP_InterpolationDataConfiguration_BufferClear | Interpolationskonfigurationsdaten - Puffer löschen
60F4.00h | DS402_PP_FollowingErrorActualValue | Aktueller Schleppabstandsfehler
60FC.00h | DS402_PP_PositionDemandValueInCounts | Positionssollwert in Inkrementen
60FD.00h | DS402_DigitalInputs | Digitale Eingänge
60FE.00h | DS402_DigitalOutputs_HighestSubindexSupported | Digitale Ausgänge - Max Subindex des Objektes
60FE.01h | DS402_DigitalOutputs_PhysicalOutput | Digitale Ausgänge - Physische Ausgänge
60FE.02h | DS402_DigitalOutputs_BitMask | Digitale Ausgänge - Bit Maske
6402.00h | DS402_MotorType | Motortyp
6502.00h | DS402_SupportedDriveModes | Unterstützte Betriebsarten


6007.00h Optionscode bei Abbruch der Kommunikation

Name | DS402_AbortConnectionOptionCode
Bezeichnung | Optionscode bei Abbruch der Kommunikation
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1, 2, 3}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieses Objekt bestimmt das Betriebsverhalten des Reglers bei einer fehlerhaften Busverbindung aufgrund von BusOff, Heartbeat or Guarding.

Parameter werte:
Wert | Beschreibung
0 | Keine Aktion
1 | Fehlermeldung
2 | Gerätekommando "Betrieb-sperren" ("Disable")
3 | Gerätekommando "Schnellhalt"
4 .. 32767 | Reserviert


6040.00h Steuerwort

Name | DS402_ControlWord
Bezeichnung | Steuerwort
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Beim Beschreiben dieses Parameters wird ein Gerätekommando ausgeführt.

Bitbelegung:
Bit | Beschreibung wenn Bit = 1
0 | Einschalten (Switch on)
1 | Spannung freigeben (Enable voltage)
2 | Schnellhalt (Quickstop)
3 | Betrieb freigeben (Enable operation)
4 | Im Positioniermodus (profile position mode): - Neuer Sollwert (steigende Flanke) Im Referenzfahrtmodus (homing mode): - Referenzfahrt starten Im Interpolationsmodus (interpolated position mode): - ip Modus aktivieren In anderen Modi: - Reserviert
5 | Im Positioniermodus (profile position mode): - Änderung sofort übernehmen 0 - Aktuelle Positionierung muss zuerst abgeschlossen sein, bevor die nächste gestartet wird 1 - Nächste Positionierung wird sofort gestartet In anderen Modi: - Reserviert
6 | Im Positioniermodus (profile position mode): - Art der Bewegung: 0 - Zielposition ist ein absoluter Wert 1 - Zielposition ist ein relativer Wert In anderen Modi: - Reserviert
7 | Fehler löschen(Fault reset)
8 | Halt
9 .. 15 | Reserviert, always 0

Befehlscodierung:
Befehl | Bits des Steuerwortes
 | Bit 7 | Bit 3 | Bit 2 | Bit 1 | Bit 0
Stillsetzen | 0 | x | 1 | 1 | 0
Einschalten | 0 | 0 | 1 | 1 | 1
Einschalten + Betrieb-freigeben | 0 | 1 | 1 | 1 | 1
Spannung sperren | 0 | x | x | 0 | x
Schnellhalt | 0 | x | 0 | 1 | x
Betrieb-sperren | 0 | 0 | 1 | 1 | 1
Betrieb-freigeben | 0 | 1 | 1 | 1 | 1
Fehler löschen | ↑ | x | x | x | x


6041.00h Statuswort

Name | DS402_StatusWord
Bezeichnung | Statuswort
Datentyp | uint16
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Das Statuswort liefert den aktuellen Zustand des Gerätes.

Bitbelegung:
Bit | Beschreibung wenn Bit = 1
0 | Einschaltbereit (Ready to switch on)
1 | Eingeschaltet (Switched on)
2 | Betrieb freigegeben (Operation enabled)
3 | Fehler (Fault)
4 | Spannung freigegeben (Voltage enabled)
5 | Schnellhalt (Quickstop)
6 | Einschalten gesperrt (Switch on disabled)
7 | Warnung (Warning)
8 | Reserviert
9 | Remote - immer 1
10 | Sollwert erreicht (Target reached)
11 | Interner Grenzwert aktiv (Internal limit active) z.B. Positionsbegrenzung
12 | Im Positioniermodus (profile position mode): - Bestätigung des Sollwertes: - 0 - vorheriger Sollwert wurde erreicht, das Gerät wartet auf einen neuen Sollwert - 1 - vorheriger Sollwert wurde noch nicht erreicht, ein neuer Sollwert überschreibt den aktuellen Im Referenzfahrtmodus (homing mode): - Referenzierung durchgeführt Im Interpolationsmodus (interpolated position mode): - ip Modus aktiv In anderen Modi: - Reserviert
13 | Im Positioniermodus (profile position mode): - Schleppfehler Im Referenzfahrtmodus (homing mode): - Fehler bei der Referenzfahrt In anderen Modi: - Reserviert
14 | Reserviert
15 | Reserviert

Zustandscodierung:
Statuswort (binär) | Zustand
xxxx xxxx x0xx 0000 | Nicht Einschaltbereit
xxxx xxxx x1xx 0000 | Einschaltsperre
xxxx xxxx x01x 0001 | Einschaltbereit
xxxx xxxx x01x 0011 | Eingeschaltet
xxxx xxxx x01x 0111 | Betrieb-freigegeben
xxxx xxxx x00x 0111 | Schnellhalt aktiv
xxxx xxxx x0xx 1111 | Störungsreaktion aktiv
xxxx xxxx x0xx 1000 | Störung


6042.00h Drehzahlsollwert

Name | DS402_VL_TargetVelocity
Bezeichnung | Drehzahlsollwert
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-32768 .. 32767]
Defaultwert | 0
Einheit | -
Betriebsart | Velocity mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter setzt den Drehzahlsollwert in dem Drehzahlmodus.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


6046.00h Min/Max Drehzahl - Max Subindex des Objektes

Name | DS402_VL_VelocityMinMaxAmount_HighestSubindexSupported
Bezeichnung | Min/Max Drehzahl - Max Subindex des Objektes
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | {2}
Defaultwert | 2
Einheit | -
Betriebsart | Velocity mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_VL_VelocityMinMaxAmount_MinVelocity, DS402_VL_VelocityMinMaxAmount_MaxVelocity

Beschreibung

Der Parameter begrenzt den Drehzahlsollwert des Drehzahlreglers. Der Parameter besteht aus zwei Parametern: minimale und maximale Drehzahl.

Der Wert der minimalen Drehzahl wird intern zu den Werten positve und negative minimale Drehzahl zugeordnet.
Der Wert der maximalen Drehzahl wird intern zu den Werten positve und negative maximale Drehzahl zugeordnet.

Beim Ablesen des Parameters werden nur die positiven Werte zurückgeliefert.

  • Subindex 01h enthält den Wert der minimalen Drehzahl
  • Subindex 02h enthält den Wert der maximalen Drehzahl

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


6046.01h Minimale Drehzahl

Name | DS402_VL_VelocityMinMaxAmount_MinVelocity
Bezeichnung | Minimale Drehzahl
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 32767]
Defaultwert | 0
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_VL_VelocityMinMaxAmount_HighestSubindexSupported, DS402_VL_VelocityMinMaxAmount_MaxVelocity

Beschreibung

Der Parameter definiert die minimale Drehzahl des Drehzahlreglers. Der Wert der minimalen Drehzahl wird intern zu den Werten positve und negative minimale Drehzahl zugeordnet. Beim Ablesen des Parameters wird nur der positive Wert zurückgeliefert.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


6046.02h Maximale Drehzahl

Name | DS402_VL_VelocityMinMaxAmount_MaxVelocity
Bezeichnung | Maximale Drehzahl
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 32767]
Defaultwert | 32767
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_VL_VelocityMinMaxAmount_HighestSubindexSupported, DS402_VL_VelocityMinMaxAmount_MinVelocity

Beschreibung

Der Parameter definiert die maximale Drehzahl des Drehzahlreglers. Der Wert der maximalen Drehzahl wird intern zu den Werten positve und negative maximale Drehzahl zugeordnet. Beim Ablesen des Parameters wird nur der positive Wert zurückgeliefert.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


6048.00h Drehzahlbeschleunigung - Max Subindex des Objektes

Name | DS402_VL_VelocityAcceleration_HighestSubindexSupported
Bezeichnung | Drehzahlbeschleunigung - Max Subindex des Objektes
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | {2}
Defaultwert | 2
Einheit | -
Betriebsart | Velocity mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_VL_VelocityAcceleration_DeltaSpeed, DS402_VL_VelocityAcceleration_DeltaTime

Beschreibung

Der Parameter gibt die Steigung der Beschleunigungsrampe an. Sie wird als Quotinet aus den Parametern DS402_VL_VelocityAcceleration_DeltaSpeed und DS402_VL_VelocityAcceleration_DeltaTime gebildet.

Durch Parametrierung des Wertes DS402_VL_VelocityAcceleration_DeltaTime auf den Wert 0 folgt diese Funktion direkt dem Sollwert.

Drehzahlbeschleunigung = DS402_VL_VelocityAcceleration_DeltaSpeed / DS402_VL_VelocityAcceleration_DeltaTime [rpm/s]

  • Subindex 01h enthält den Wert der Delta Drehzahl der Drehzahlbeschleunigung
  • Subindex 02h enthält den Wert der Delta Zeit der Drehzahlbeschleunigung

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


6048.01h Drehzahlbeschleunigung - Delta Drehzahl

Name | DS402_VL_VelocityAcceleration_DeltaSpeed
Bezeichnung | Drehzahlbeschleunigung - Delta Drehzahl
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 1000
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_VL_VelocityAcceleration_HighestSubindexSupported, DS402_VL_VelocityAcceleration_DeltaTime

Beschreibung

Der Parameter gibt die Steigung der Beschleunigungsrampe an. Sie wird als Quotinet aus den Parametern DS402_VL_VelocityAcceleration_DeltaSpeed und DS402_VL_VelocityAcceleration_DeltaTime gebildet.

Durch Parametrierung des Wertes DS402_VL_VelocityAcceleration_DeltaTime auf den Wert 0 folgt diese Funktion direkt dem Sollwert.

Drehzahlbeschleunigung = DS402_VL_VelocityAcceleration_DeltaSpeed / DS402_VL_VelocityAcceleration_DeltaTime [rpm/s]

Dieser Parameter ist der Zähler des Quotienten.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


6048.02h Drehzahlbeschleunigung - Delta Zeit

Name | DS402_VL_VelocityAcceleration_DeltaTime
Bezeichnung | Drehzahlbeschleunigung - Delta Zeit
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 1
Einheit | [s]
Betriebsart | Velocity mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_VL_VelocityAcceleration_HighestSubindexSupported, DS402_VL_VelocityAcceleration_DeltaSpeed

Beschreibung

Der Parameter gibt die Steigung der Beschleunigungsrampe an. Sie wird als Quotinet aus den Parametern DS402_VL_VelocityAcceleration_DeltaSpeed und DS402_VL_VelocityAcceleration_DeltaTime gebildet.

Durch Parametrierung des Wertes DS402_VL_VelocityAcceleration_DeltaTime auf den Wert 0 folgt diese Funktion direkt dem Sollwert.

Drehzahlbeschleunigung = DS402_VL_VelocityAcceleration_DeltaSpeed / DS402_VL_VelocityAcceleration_DeltaTime [rpm/s]

Dieser Parameter ist der Nenner des Quotienten.

vl velocity acceleration transfer characteristic

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


6049.00h Drehzahlverzögerung - Max Subindex des Objektes

Name | DS402_VL_VelocityDeceleration_HighestSubindexSupported
Bezeichnung | Drehzahlverzögerung - Max Subindex des Objektes
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | {2}
Defaultwert | 2
Einheit | -
Betriebsart | Velocity mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_VL_VelocityDeceleration_DeltaSpeed, DS402_VL_VelocityDeceleration_DeltaTime

Beschreibung

Der Parameter gibt die Steigung der Verzögerungsrampe an. Sie wird als Quotinet aus den Parametern DS402_VL_VelocityDeceleration_DeltaSpeed und DS402_VL_VelocityDeceleration_DeltaTime gebildet.

Durch Parametrierung des Wertes DS402_VL_VelocityDeceleration_DeltaTime auf den Wert 0 folgt diese Funktion direkt dem Sollwert.

Drehzahlverzögerung = DS402_VL_VelocityDeceleration_DeltaSpeed / DS402_VL_VelocityDeceleration_DeltaTime [rpm/s]

  • Subindex 01h enthält den Wert der Delta Drehzahl der Drehzahlverzögerung
  • Subindex 02h enthält den Wert der Delta Zeit der Drehzahlverzögerung

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


6049.01h Drehzahlverzögerung - Delta Drehzahl

Name | DS402_VL_VelocityDeceleration_DeltaSpeed
Bezeichnung | Drehzahlverzögerung - Delta Drehzahl
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 1000
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_VL_VelocityDeceleration_HighestSubindexSupported, DS402_VL_VelocityDeceleration_DeltaTime

Beschreibung

Der Parameter gibt die Steigung der Verzögerungsrampe an. Sie wird als Quotinet aus den Parametern DS402_VL_VelocityDeceleration_DeltaSpeed und DS402_VL_VelocityDeceleration_DeltaTime gebildet.

Durch Parametrierung des Wertes DS402_VL_VelocityDeceleration_DeltaTime auf den Wert 0 folgt diese Funktion direkt dem Sollwert.

Drehzahlverzögerung = DS402_VL_VelocityDeceleration_DeltaSpeed / DS402_VL_VelocityDeceleration_DeltaTime [rpm/s]

Dieser Parameter ist der Zähler des Quotienten.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


6049.02h Drehzahlverzögerung - Delta Zeit

Name | DS402_VL_VelocityDeceleration_DeltaTime
Bezeichnung | Drehzahlverzögerung - Delta Zeit
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 1
Einheit | [s]
Betriebsart | Velocity mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_VL_VelocityDeceleration_HighestSubindexSupported, DS402_VL_VelocityDeceleration_DeltaSpeed

Beschreibung

Der Parameter gibt die Steigung der Verzögerungsrampe an. Sie wird als Quotinet aus den Parametern DS402_VL_VelocityDeceleration_DeltaSpeed und DS402_VL_VelocityDeceleration_DeltaTime gebildet.

Durch Parametrierung des Wertes DS402_VL_VelocityDeceleration_DeltaTime auf den Wert 0 folgt diese Funktion direkt dem Sollwert.

Drehzahlverzögerung = DS402_VL_VelocityDeceleration_DeltaSpeed / DS402_VL_VelocityDeceleration_DeltaTime [rpm/s]

Dieser Parameter ist der Nenner des Quotienten.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


604A.00h Drehzahl-Schnellhalt - Max Subindex des Objektes

Name | DS402_VL_VelocityQuickstop_HighestSubindexSupported
Bezeichnung | Drehzahl-Schnellhalt - Max Subindex des Objektes
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | {2}
Defaultwert | 2
Einheit | -
Betriebsart | Velocity mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_VL_VelocityQuickstop_DeltaSpeed, DS402_VL_VelocityQuickstop_DeltaTime

Beschreibung

Der Parameter gibt die Steigung der Schnellhalt-Verzögerungsrampe an. Sie wird als Quotinet aus den Parametern DS402_VL_VelocityQuickstop_DeltaSpeed und DS402_VL_VelocityQuickstop_DeltaTime gebildet.

Durch Parametrierung des Wertes DS402_VL_VelocityQuickstop_DeltaTime auf den Wert 0 folgt diese Funktion direkt dem Sollwert.

Drehzahl-Schnellhalt = DS402_VL_VelocityQuickstop_DeltaSpeed / DS402_VL_VelocityQuickstop_DeltaTime [rpm/s]

Folgende Ereignisse führen zu einem Stopp mit Schnellhaltrampe:
  • Der Befehl Schnellhalt vom Parameter DS402_ControlWord
  • Endschalter (falls definiert) wurde aktiviert (siehe DEV_DinLimitPos, DEV_DinLimitNeg).
Falls die normale Verzögerung (DS402_VL_VelocityDeceleration_DeltaSpeed / DS402_VL_VelocityDeceleration_DeltaTime) "schneller" als Schnellhalt-Verzögerung ist, wird die normale Verzögerung (DS402_VL_VelocityDeceleration_DeltaSpeed / DS402_VL_VelocityDeceleration_DeltaTime ) für den Bremsvorgang genommen.

  • Subindex 01h enthält den Wert der Delta Drehzahl des Drehzahl-Schnellhaltes
  • Subindex 02h enthält den Wert der Delta Zeit des Drehzahl-Schnellhaltes

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


604A.01h Drehzahl-Schnellhalt - Delta Drehzahl

Name | DS402_VL_VelocityQuickstop_DeltaSpeed
Bezeichnung | Drehzahl-Schnellhalt - Delta Drehzahl
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 10000
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Velocity mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_VL_VelocityQuickstop_HighestSubindexSupported, DS402_VL_VelocityQuickstop_DeltaTime

Beschreibung

Der Parameter gibt die Steigung der Schnellhalt-Verzögerungsrampe an. Sie wird als Quotinet aus den Parametern DS402_VL_VelocityQuickstop_DeltaSpeed und DS402_VL_VelocityQuickstop_DeltaTime gebildet.

Durch Parametrierung des Wertes DS402_VL_VelocityQuickstop_DeltaTime auf den Wert 0 folgt diese Funktion direkt dem Sollwert.

Drehzahl-Schnellhalt = DS402_VL_VelocityQuickstop_DeltaSpeed / DS402_VL_VelocityQuickstop_DeltaTime [rpm/s]

Dieser Parameter ist der Zähler des Quotienten.

Folgende Ereignisse führen zu einem Stopp mit Schnellhaltrampe:
  • Der Befehl Schnellhalt vom Parameter DS402_ControlWord
  • Endschalter (falls definiert) wurde aktiviert (siehe DEV_DinLimitPos, DEV_DinLimitNeg).
Falls die normale Verzögerung (DS402_VL_VelocityDeceleration_DeltaSpeed / DS402_VL_VelocityDeceleration_DeltaTime) "schneller" als Schnellhalt-Verzögerung ist, wird die normale Verzögerung (DS402_VL_VelocityDeceleration_DeltaSpeed / DS402_VL_VelocityDeceleration_DeltaTime ) für den Bremsvorgang genommen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


604A.02h Drehzahl-Schnellhalt - Delta Zeit

Name | DS402_VL_VelocityQuickstop_DeltaTime
Bezeichnung | Drehzahl-Schnellhalt - Delta Zeit
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 1
Einheit | [s]
Betriebsart | Velocity mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_VL_VelocityQuickstop_HighestSubindexSupported, DS402_VL_VelocityQuickstop_DeltaSpeed

Beschreibung

Der Parameter gibt die Steigung der Schnellhalt-Verzögerungsrampe an. Sie wird als Quotinet aus den Parametern DS402_VL_VelocityQuickstop_DeltaSpeed und DS402_VL_VelocityQuickstop_DeltaTime gebildet.

Durch Parametrierung des Wertes DS402_VL_VelocityQuickstop_DeltaTime auf den Wert 0 folgt diese Funktion direkt dem Sollwert.

Drehzahl-Schnellhalt = DS402_VL_VelocityQuickstop_DeltaSpeed / DS402_VL_VelocityQuickstop_DeltaTime [rpm/s]

Dieser Parameter ist der Nenner des Quotienten.

Folgende Ereignisse führen zu einem Stopp mit Schnellhaltrampe:
  • Der Befehl Schnellhalt vom Parameter DS402_ControlWord
  • Endschalter (falls definiert) wurde aktiviert (siehe DEV_DinLimitPos, DEV_DinLimitNeg).
Falls die normale Verzögerung (DS402_VL_VelocityDeceleration_DeltaSpeed / DS402_VL_VelocityDeceleration_DeltaTime) "schneller" als Schnellhalt-Verzögerung ist, wird die normale Verzögerung (DS402_VL_VelocityDeceleration_DeltaSpeed / DS402_VL_VelocityDeceleration_DeltaTime ) für den Bremsvorgang genommen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


604C.00h Drehzahl-Dimensionfaktor - Max Subindex des Objektes

Name | DS402_VL_VelocityDimensionFactor_HighestSubindexSupported
Bezeichnung | Drehzahl-Dimensionfaktor - Max Subindex des Objektes
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | {2}
Defaultwert | 2
Einheit | -
Betriebsart | Velocity mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_VL_VelocityDimensionFactor_Numerator, DS402_VL_VelocityDimensionFactor_Denominator

Beschreibung

Dieser Parameter legt den Zähler des Dimensionsfaktors (Fvdim) der Drehzahl fest.

Der Dimensionsfaktor wird aus einem Zähler-Parameter (DS402_VL_VelocityDimensionFactor_Numerator) und einem Nenner-Parameter (DS402_VL_VelocityDimensionFactor_Denominator) durch Division gebildet, und dient zur Berechnung anwenderspezifischen Einheiten. Er wirkt auf die Sollwertvorgabe, Drehzahlbegrenzung und Rampenfunktion sowie auf die Drehzahlausgangsgrößen der Geschwindigkeitsfunktion.

Fvdim = DS402_VL_VelocityDimensionFactor_Numerator / DS402_VL_VelocityDimensionFactor_Denominator

  • Subindex 01h enthält den Wert des Zählers des Dimensionsfaktors
  • Subindex 02h enthält den Wert des Nenners des Dimensionsfaktors

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


604C.01h Drehzahl-Dimensionfaktor - Zähler

Name | DS402_VL_VelocityDimensionFactor_Numerator
Bezeichnung | Drehzahl-Dimensionfaktor - Zähler
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 1
Einheit | -
Betriebsart | Velocity mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_VL_VelocityDimensionFactor_HighestSubindexSupported, DS402_VL_VelocityDimensionFactor_Denominator

Beschreibung

Dieser Parameter legt den Zähler des Dimensionsfaktors (Fvdim) der Drehzahl fest.

Der Dimensionsfaktor wird aus einem Zähler-Parameter (DS402_VL_VelocityDimensionFactor_Numerator) und einem Nenner-Parameter (DS402_VL_VelocityDimensionFactor_Denominator) durch Division gebildet, und dient zur Berechnung anwenderspezifischen Einheiten. Er wirkt auf die Sollwertvorgabe, Drehzahlbegrenzung und Rampenfunktion sowie auf die Drehzahlausgangsgrößen der Geschwindigkeitsfunktion.

Fvdim = DS402_VL_VelocityDimensionFactor_Numerator / DS402_VL_VelocityDimensionFactor_Denominator

Dieser Parameter ist der Zähler des Quotienten.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


604C.02h Drehzahl-Dimensionfaktor - Nenner

Name | DS402_VL_VelocityDimensionFactor_Denominator
Bezeichnung | Drehzahl-Dimensionfaktor - Nenner
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647] ausgenommen {0}
Defaultwert | 1
Einheit | -
Betriebsart | Velocity mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_VL_VelocityDimensionFactor_HighestSubindexSupported, DS402_VL_VelocityDimensionFactor_Numerator

Beschreibung

Dieser Parameter legt den Zähler des Dimensionsfaktors (Fvdim) der Drehzahl fest.

Der Dimensionsfaktor wird aus einem Zähler-Parameter (DS402_VL_VelocityDimensionFactor_Numerator) und einem Nenner-Parameter (DS402_VL_VelocityDimensionFactor_Denominator) durch Division gebildet, und dient zur Berechnung anwenderspezifischen Einheiten. Er wirkt auf die Sollwertvorgabe, Drehzahlbegrenzung und Rampenfunktion sowie auf die Drehzahlausgangsgrößen der Geschwindigkeitsfunktion.

Fvdim = DS402_VL_VelocityDimensionFactor_Numerator / DS402_VL_VelocityDimensionFactor_Denominator

Dieser Parameter ist der Nenner des Quotienten.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 2)                  # Betriebsart - Drehzahlmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x6046, 0x01, 0)                  # Min. Drehzahl [Upm]
d.SdoWr(0x6046, 0x02, 32767)              # Max. Drehzahl [Upm]

d.SdoWr(0x6048, 0x01, 1000)               # Drehzahlbeschleunigung - Delta Drehzahl [Upm]
d.SdoWr(0x6048, 0x02, 1)                  # Drehzahlbeschleunigung - Delta Zeit [s]

d.SdoWr(0x6049, 0x01, 1000)               # Drehzahlverzögerung - Delta Drehzahl [Upm]
d.SdoWr(0x6049, 0x02, 1)                  # Drehzahlverzögerung - Delta Zeit [s]

d.SdoWr(0x604A, 0x01, 10000)              # Drehzahl-Schnellhalt - Delta Drehzahl [Upm]
d.SdoWr(0x604A, 0x02, 1)                  # Drehzahl-Schnellhalt - Delta Zeit [s]

d.SdoWr(0x604C, 0x01, 1)                  # Drehzahl-Dimensionfaktor - Zähler
d.SdoWr(0x604C, 0x02, 1)                  # Drehzahl-Dimensionfaktor - Nenner

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6042, 0x00, 500)                # Drehzahlsollwert [Upm]


6060.00h Betriebsart

Name | DS402_ModesOfOperation
Bezeichnung | Betriebsart
Datentyp | int8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {-1, 1, 2, 4, 6, 7, 8} Mode 8 (CSPM) ist erst ab Firmware Version 1.93.00.F0
Defaultwert | -1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_ModesOfOperationDisplay, DS402_SupportedDriveModes

Beschreibung

Dieser Parameter bestimmt die Betriebsart des Antriebsreglers.

Parameter werte:
Wert | Beschreibung
-1 | Off-Modus - Leistung und Regelung ausgeschaltet
1 | Positioniermodus (profile position mode) (pp)
2 | Drehzahlmodus (velocity mode) (vl)
4 | Drehmomentmodus (torque profile mode) (tq)
6 | Referenzfahrtmodus (homing mode) (hm)
7 | Interpolationsmodus (interpolated position mode) (ip) Dieser Modus ist ab Firmwareversion 1.89.00.03 verfügbar.

Notiz
Die aktuelle Betriebsart des Reglers liefert der Parameter DS402_ModesOfOperationDisplay zurück.


6061.00h Betriebsart-Anzeige

Name | DS402_ModesOfOperationDisplay
Bezeichnung | Betriebsart-Anzeige
Datentyp | int8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | {-127, -3, 1, 2, 4, 6, 7}
Defaultwert | -1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_ModesOfOperation, DS402_SupportedDriveModes

Beschreibung

Dieser Parameter liefert die aktuelle Betriebsart des Reglers zurück. Die Bedeutung des zurückgelieferten Wertes entspricht dem Wert des Parameters DS402_ModesOfOperation.

Parameterwerte:
Wert | Beschreibung
-127 | Inkonsistent - der Modus gesetzt im Parameter DEV_Mode is inkonstintent mit dem Parameter DS402_ModesOfOperation.
-2 | SVEL-Modus (Drehzahlmodus ohne Rampen)
-1 | Off-Modus - Leistung und Regelung ausgeschaltet
1 | Positioniermodus (profile position mode) (pp)
2 | Drehzahlmodus (velocity mode) (vl)
4 | Drehmomentmodus (torque profile mode) (tq)
6 | Referenzfahrtmodus (homing mode) (hm)
7 | Interpolationsmodus (interpolated position mode) (ip) Dieser Modus ist ab Firmwareversion 1.89.00.03 verfügbar.


6062.00h Positionssollwert

Name | DS402_PP_PositionDemandValue
Bezeichnung | Positionssollwert
Datentyp | int32
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Mit dem Parameter kann die aktuelle Kommandoposition abgefragt werden.
Eine Kommandoposition ist ein Positionswert am Ausgang des Profilsgenerators bzw. am Eingang des Positionsreglers.

TIPP

Die Standard-Einheit der Position in allen Modi ist die Umdrehung der Motorwelle. Die Auflösung des Encoders wird im Parameter 3962.00h (MOTOR_ENC_Resolution) eingestellt. Es ist möglich die Standard-Einheit anzupassen, durch die Änderung des Parameters DS402_PP_PositionDimensionIndex.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 1)                  # Betriebsart - Positioniermodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6081, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x607A, 0x00, 2000)               # Zielposition [Ink]

d.SdoWr(0x6040, 0x00, 0x5F)               # Steuerwort - relative Positionierung starten


6063.00h Aktuelle Position in Inkrementen

Name | DS402_PP_PositionActualValueInCounts
Bezeichnung | Aktuelle Position in Inkrementen
Datentyp | int32
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_PP_PositionActualValue

Beschreibung

Mit dem Parameter kann die aktuelle Position in Inkrementen abgefragt werden.
Je nach Positionsrückführung ist das entweder Hallposition (MOTOR_HALL_ActualPosition) oder Encoderposition (MOTOR_ENC_ActualPosition).

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 1)                  # Betriebsart - Positioniermodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6081, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x607A, 0x00, 2000)               # Zielposition [Ink]

d.SdoWr(0x6040, 0x00, 0x5F)               # Steuerwort - relative Positionierung starten


6064.00h Aktuelle Position

Name | DS402_PP_PositionActualValue
Bezeichnung | Aktuelle Position
Datentyp | int32
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Umdrehung]
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_PP_PositionActualValueInCounts

Beschreibung

Mit dem Parameter kann die aktuelle Position abgefragt werden.
Je nach Positionsrückführung ist das entweder Hallposition (MOTOR_HALL_ActualPosition) oder Encoderposition (MOTOR_ENC_ActualPosition).

TIPP

Die Standard-Einheit der Position in allen Modi ist die Umdrehung der Motorwelle. Die Auflösung des Encoders wird im Parameter 3962.00h (MOTOR_ENC_Resolution) eingestellt. Es ist möglich die Standard-Einheit anzupassen, durch die Änderung des Parameters DS402_PP_PositionDimensionIndex.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 1)                  # Betriebsart - Positioniermodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6081, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x607A, 0x00, 2000)               # Zielposition [Ink]

d.SdoWr(0x6040, 0x00, 0x5F)               # Steuerwort - relative Positionierung starten


6065.00h Positionsschleppfehler - Fenster

Name | DS402_PP_FollowingErrorWindow
Bezeichnung | Positionsschleppfehler - Fenster
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 1
Einheit | [Umdrehung]
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Das Positionsschleppfehler-Fenster liegt symmetrisch um den aktuell vorgegebenen Position-Sollwert. Liegt die aktuelle Position außerhalb dieses Fensters, tritt ein Schleppfehler auf. Dieser Schleppfehler kann u.a. auftreten bei blockiertem Motor, nicht erreichbarer Sollgeschwindigkeit oder falsch eingestellten Reglerkoeffizienten.
Bei Positionsschleppfehler-Fenster = FFFFFFFFh (4294967295) ist die Funktion Schleppfehler-Überwachung ausgeschaltet.

Parameterwerte:
Wert | Beschreibung
= FFFFFFFFh | Komplette Schleppabsdandsüberwachung ist abgeschaltet
< FFFFFFFFh | Schleppabsdandsüberwachung ist aktiv

TIPP

Die Standard-Einheit der Position in allen Modi ist die Umdrehung der Motorwelle. Die Auflösung des Encoders wird im Parameter 3962.00h (MOTOR_ENC_Resolution) eingestellt. Es ist möglich die Standard-Einheit anzupassen, durch die Änderung des Parameters DS402_PP_PositionDimensionIndex.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 1)                  # Betriebsart - Positioniermodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6081, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x607A, 0x00, 2000)               # Zielposition [Ink]

d.SdoWr(0x6040, 0x00, 0x5F)               # Steuerwort - relative Positionierung starten


6067.00h Positionierfenster

Name | DS402_PP_PositionWindow
Bezeichnung | Positionierfenster
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 4294967295
Einheit | [Umdrehung]
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_PP_PositionWindowTime

Beschreibung

Das Positionierfenster liegt symmetrisch um das Position-Ziel. Sobald die Istposition innerhalb dieses Fensters liegt, wird im Status (DS402_StatusWord) das Bit 10 (Sollwert erreicht ) gesetzt. Die Istposition des Antriebs muss sich erst eine gewisse Zeit innerhalb des Fenster befinden, bevor das Statusbit gesetzt wird. Diese Zeit wird mit dem Parameter DS402_PP_PositionWindowTime festgelegt. Bei Positionierfenster = FFFFFFFFh (4294967295) ist die Funktion ausgeschaltet.

Parameter werte:
Wert | Beschreibung
<FFFFFFFFh | Positionierfenster
=FFFFFFFh | Positionierfenster ausgeschaltet

TIPP

Die Standard-Einheit der Position in allen Modi ist die Umdrehung der Motorwelle. Die Auflösung des Encoders wird im Parameter 3962.00h (MOTOR_ENC_Resolution) eingestellt. Es ist möglich die Standard-Einheit anzupassen, durch die Änderung des Parameters DS402_PP_PositionDimensionIndex.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 1)                  # Betriebsart - Positioniermodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6081, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x607A, 0x00, 2000)               # Zielposition [Ink]

d.SdoWr(0x6040, 0x00, 0x5F)               # Steuerwort - relative Positionierung starten


6068.00h Positionierfenster - Zeit

Name | DS402_PP_PositionWindowTime
Bezeichnung | Positionierfenster - Zeit
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | [ms]
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_PP_PositionWindow

Beschreibung

Mit dem Parameter Positionierfenster-Zeit wird vermieden, dass bei einem kurzen Überstreichen des Positionierfensters das Statusbit 10 Sollwert erreicht (vom DS402_StatusWord) gesetzt wird. Die Istposition des Antriebs muss sich erst eine gewisse Zeit innerhalb des Fenster befinden, bevor das Statusbit gesetzt wird.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 1)                  # Betriebsart - Positioniermodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6081, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x607A, 0x00, 2000)               # Zielposition [Ink]

d.SdoWr(0x6040, 0x00, 0x5F)               # Steuerwort - relative Positionierung starten


6071.00h Zieldrehmoment

Name | DS402_TQ_TargetTorque
Bezeichnung | Zieldrehmoment
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-32768 .. 32767]
Defaultwert | 0
Einheit | [o/oo]
Betriebsart | Torque profile mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_TQ_MaxTorque, DS402_TQ_MotorRatedCurrent

Beschreibung

Dieser Parameter ist die Eingangsgröße des Drehmomentreglers im Drehmomentmodus.

Motordrehmoment = DS402_TQ_MotorRatedCurrent [mA] * DS402_TQ_TargetTorque [o/oo]

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)

d.SdoWr(0x6060, 0x00, 4)                  # Betriebsart - Drehmomentmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6075, 0x00, 800)                # Motornennstrom [mA]
d.SdoWr(0x6072, 0x00, 1000)               # Maximales Drehmoment[o/oo]

d.SdoWr(0x6071, 0x00, 500)                # Zieldrehmoment [o/oo]


6072.00h Maximales Drehmoment

Name | DS402_TQ_MaxTorque
Bezeichnung | Maximales Drehmoment
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | [o/oo]
Betriebsart | Torque profile mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_TQ_TargetTorque, DS402_TQ_MotorRatedCurrent

Beschreibung

Dieser Wert steht für das maximal im Motor zulässige Moment.

maximales Motordrehmoment = DS402_TQ_MotorRatedCurrent [mA] * DS402_TQ_MaxTorque [o/oo]

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)

d.SdoWr(0x6060, 0x00, 4)                  # Betriebsart - Drehmomentmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6075, 0x00, 800)                # Motornennstrom [mA]
d.SdoWr(0x6072, 0x00, 1000)               # Maximales Drehmoment[o/oo]

d.SdoWr(0x6071, 0x00, 500)                # Zieldrehmoment [o/oo]


6075.00h Motornennstrom

Name | DS402_TQ_MotorRatedCurrent
Bezeichnung | Motornennstrom
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [mA]
Betriebsart | Torque profile mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_TQ_TargetTorque, DS402_TQ_MaxTorque

Beschreibung

Dieser Wert wird vom Typenschild des Motors abgelesen und in mA vorgegeben. Die relativen Stromangaben beziehen sich auf diesen Wert.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)

d.SdoWr(0x6060, 0x00, 4)                  # Betriebsart - Drehmomentmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6075, 0x00, 800)                # Motornennstrom [mA]
d.SdoWr(0x6072, 0x00, 1000)               # Maximales Drehmoment[o/oo]

d.SdoWr(0x6071, 0x00, 500)                # Zieldrehmoment [o/oo]


6077.00h Aktuelles Drehmoment

Name | DS402_TQ_TorqueActualValue
Bezeichnung | Aktuelles Drehmoment
Datentyp | int16
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | [-32768 .. 32767]
Defaultwert | 0
Einheit | [o/oo]
Betriebsart | Torque profile mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_TQ_MotorRatedCurrent

Beschreibung

Der Parameter entspricht dem aktuellen Strom im Antriebsmotor. Der Wert wird in Promille des Nennstromes (DS402_TQ_MotorRatedCurrent) zurückgegeben.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)

d.SdoWr(0x6060, 0x00, 4)                  # Betriebsart - Drehmomentmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6075, 0x00, 800)                # Motornennstrom [mA]
d.SdoWr(0x6072, 0x00, 1000)               # Maximales Drehmoment[o/oo]

d.SdoWr(0x6071, 0x00, 500)                # Zieldrehmoment [o/oo]


6078.00h Aktueller Motorstrom

Name | DS402_TQ_CurrentActualValue
Bezeichnung | Aktueller Motorstrom
Datentyp | int16
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | [-32768 .. 32767]
Defaultwert | 0
Einheit | [o/oo]
Betriebsart | Torque profile mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_TQ_MotorRatedCurrent

Beschreibung

Der Parameter entspricht dem aktuellen Strom im Antriebsmotor. Der Wert wird im Promille des Nennstromes (DS402_TQ_MotorRatedCurrent) zurückgegeben.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)

d.SdoWr(0x6060, 0x00, 4)                  # Betriebsart - Drehmomentmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6075, 0x00, 800)                # Motornennstrom [mA]
d.SdoWr(0x6072, 0x00, 1000)               # Maximales Drehmoment[o/oo]

d.SdoWr(0x6071, 0x00, 500)                # Zieldrehmoment [o/oo]


6079.00h Leistungsspannung

Name | DS402_TQ_DCLinkCircuitVoltage
Bezeichnung | Leistungsspannung
Datentyp | uint32
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Liefert den aktuellen Wert der Leistungsversorgungsspannung in [mV] des Antriebsreglers zurück.
Der genaue Wertbereich des Parameters kann aus dem Datenblatt des jeweiligen Antriebsreglers genommen werden.


607A.00h Zielposition

Name | DS402_PP_TargetPosition
Bezeichnung | Zielposition
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Umdrehung]
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Der Parameter gibt die Position an, die der Antrieb unter Berücksichtigung der eingestellten Parameter zur Bewegungssteuerung, wie z.B. Drehzahl, Beschleunigung und Verzögerung, im Positioniermidus anfahren soll. Abhängig vom Bit 6 im DS402_ControlWord wird der Wert des Parameters als absolute oder relative Position interpretiert.

TIPP

Die Standard-Einheit der Position in allen Modi ist die Umdrehung der Motorwelle. Die Auflösung des Encoders wird im Parameter 3962.00h (MOTOR_ENC_Resolution) eingestellt. Es ist möglich die Standard-Einheit anzupassen, durch die Änderung des Parameters DS402_PP_PositionDimensionIndex.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 1)                  # Betriebsart - Positioniermodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6081, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x607A, 0x00, 2000)               # Zielposition [Ink]

d.SdoWr(0x6040, 0x00, 0x5F)               # Steuerwort - relative Positionierung starten


607C.00h Referenzoffset

Name | DS402_HM_HomeOffset
Bezeichnung | Referenzoffset
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | [Umdrehung]
Betriebsart | Homing mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Der Referenzoffset ist die Differenz zwischen Realnullpunkt (für die Applikation) und Maschinennullpunkt (gefunden bei der Referenzierung). Am Ende der Referenzfahrt wird der Referenzoffset auf Kommandoposition und Istposition mit negativen Vorzeichen "umkopiert". Bei einer anschließenden Positionierung auf 0 fährt die Achse um diesen Offset auf den Realnullpunkt. Alle weiteren Positionierungen beziehen sich dann auf diesen Realnullpunkt.

TIPP

Die Standard-Einheit der Position in allen Modi ist die Umdrehung der Motorwelle. Die Auflösung des Encoders wird im Parameter 3962.00h (MOTOR_ENC_Resolution) eingestellt. Es ist möglich die Standard-Einheit anzupassen, durch die Änderung des Parameters DS402_PP_PositionDimensionIndex.


607D.00h Software-Positionsbegrenzung - Max Subindex des Objektes

Name | DS402_PP_SoftwareLimitPosition_HighestSubindexSupported
Bezeichnung | Software-Positionsbegrenzung - Max Subindex des Objektes
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | {2}
Defaultwert | 2
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_PP_SoftwareLimitPosition_MinPositionLimit, DS402_PP_SoftwareLimitPosition_MaxPositionLimit

Beschreibung

Der Parameter legt die minimum und maximum Positionsbegrenzung fest. Diese Parameter sind Software-Endgrenzen und entsprechen den absoluten Positionsgrenzen, innerhalb derer sich die Sollwerte und Istwerte (in absoluter Form) bewegen müssen, Jedes neue Positionsziel wird auf diese Grenzen überprüft. Sie beziehen sich immer auf den Maschinennullpunkt und werden intern wie folgt korriegiert, bevor sie mit der Zielposition verglichen werden.

korrigierte Positionsbegrenzung - minimum = DS402_PP_SoftwareLimitPosition_MinPositionLimit - DS402_HM_HomeOffset
korrigierte Positionsbegrenzung - maximum = DS402_PP_SoftwareLimitPosition_MaxPositionLimit - DS402_HM_HomeOffset

Diese Berechnung muss nur einmalig bei Änderung der Grenzen durchgeführt werden.

  • Subindex 01h enthält den Wert der Positionsbegrenzung - minimum
  • Subindex 02h enthält den Wert der Positionsbegrenzung - maximum


607D.01h Software-Positionsbegrenzung - minimum

Name | DS402_PP_SoftwareLimitPosition_MinPositionLimit
Bezeichnung | Software-Positionsbegrenzung - minimum
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -2147483648
Einheit | [Umdrehung]
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_PP_SoftwareLimitPosition_HighestSubindexSupported, DS402_PP_SoftwareLimitPosition_MaxPositionLimit

Beschreibung

Der Parameter legt die minimum Positionsbegrenzung fest. Der Parameter ist eine Software-Endgrenze und definiert die minimale Position für Sollwerte und Istwerte (in absoluter Form). Jedes neue Positionsziel wird auf diese Grenze überprüft. Sie bezieht sich immer auf den Maschinennullpunkt und wird intern wie folgt korriegiert, bevor sie mit der Zielposition verglichen wird.

korrigierte Positionsbegrenzung - minimum = DS402_PP_SoftwareLimitPosition_MinPositionLimit - DS402_HM_HomeOffset

Diese Berechnung muss nur einmalig bei Änderung der Grenzen durchgeführt werden.

TIPP

Die Standard-Einheit der Position in allen Modi ist die Umdrehung der Motorwelle. Die Auflösung des Encoders wird im Parameter 3962.00h (MOTOR_ENC_Resolution) eingestellt. Es ist möglich die Standard-Einheit anzupassen, durch die Änderung des Parameters DS402_PP_PositionDimensionIndex.


607D.02h Software-Positionsbegrenzung - maximum

Name | DS402_PP_SoftwareLimitPosition_MaxPositionLimit
Bezeichnung | Software-Positionsbegrenzung - maximum
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 2147483647
Einheit | [Umdrehung]
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_PP_SoftwareLimitPosition_HighestSubindexSupported, DS402_PP_SoftwareLimitPosition_MinPositionLimit

Beschreibung

Der Parameter legt die maximum Positionsbegrenzung fest. Der Parameter ist eine Software-Endgrenze und definiert die maximale Position für Sollwerte und Istwerte (in absoluter Form). Jedes neue Positionsziel wird auf diese Grenze überprüft. Sie bezieht sich immer auf den Maschinennullpunkt und wird intern wie folgt korriegiert, bevor sie mit der Zielposition verglichen wird.

korrigierte Positionsbegrenzung - maximum = DS402_PP_SoftwareLimitPosition_MaxPositionLimit - DS402_HM_HomeOffset

Diese Berechnung muss nur einmalig bei Änderung der Grenzen durchgeführt werden.

TIPP

Die Standard-Einheit der Position in allen Modi ist die Umdrehung der Motorwelle. Die Auflösung des Encoders wird im Parameter 3962.00h (MOTOR_ENC_Resolution) eingestellt. Es ist möglich die Standard-Einheit anzupassen, durch die Änderung des Parameters DS402_PP_PositionDimensionIndex.


607E.00h Polarität

Name | DS402_FG_Polarity
Bezeichnung | Polarität
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 255]
Defaultwert | 0
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Die Positionssollwert wird je nach Polarität mit 1 oder -1 multipliziert. Die Polarität hat keinen Einfluss auf Referenzfahrtmodus.

Die Polarität-Bits werden wie folgt kodiert:
0 = multipliziert mit 1
1 = multipliziert mit -1

Parameter werte:
Bit | Beschreibung
0 .. 6 | Reserviert
7 | Positionspolarität

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 1)                  # Betriebsart - Positioniermodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6081, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x607A, 0x00, 2000)               # Zielposition [Ink]

d.SdoWr(0x6040, 0x00, 0x5F)               # Steuerwort - relative Positionierung starten


607F.00h Drehzahlbegrenzung

Name | DS402_PP_MaxProfileVelocity
Bezeichnung | Drehzahlbegrenzung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 4294967295
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Der Parameter definiert die maximale zulässige Drehzahl in beiden Richtungen während der Bewegung.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 1)                  # Betriebsart - Positioniermodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6081, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x607A, 0x00, 2000)               # Zielposition [Ink]

d.SdoWr(0x6040, 0x00, 0x5F)               # Steuerwort - relative Positionierung starten


6081.00h Drehzahlsollwert

Name | DS402_PP_ProfileVelocity
Bezeichnung | Drehzahlsollwert
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Der Parameter definiert die Drehzahl am Ende der Bescheunigungsrampe während der Bewegung und gilt für beiden Drehrichtungen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 1)                  # Betriebsart - Positioniermodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6081, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x607A, 0x00, 2000)               # Zielposition [Ink]

d.SdoWr(0x6040, 0x00, 0x5F)               # Steuerwort - relative Positionierung starten


6083.00h Drehzahlbeschleunigung

Name | DS402_PP_ProfileAcceleration
Bezeichnung | Drehzahlbeschleunigung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 60000
Einheit | [U/min²] - Umdrehungen pro Minute in Quadrat
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Der Parameter definiert die Steigung der positiven Rampe in U/min².

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 1)                  # Betriebsart - Positioniermodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6081, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x607A, 0x00, 2000)               # Zielposition [Ink]

d.SdoWr(0x6040, 0x00, 0x5F)               # Steuerwort - relative Positionierung starten


6084.00h Drehzahlverzögerung

Name | DS402_PP_ProfileDeceleration
Bezeichnung | Drehzahlverzögerung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 60000
Einheit | [U/min²] - Umdrehungen pro Minute in Quadrat
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Der Parameter definiert die Steigung der negativen Rampe in U/min².

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 1)                  # Betriebsart - Positioniermodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6081, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x607A, 0x00, 2000)               # Zielposition [Ink]

d.SdoWr(0x6040, 0x00, 0x5F)               # Steuerwort - relative Positionierung starten


6085.00h Drehzahl-Quickstop-Verzögerung

Name | DS402_PP_QuickstopDeceleration
Bezeichnung | Drehzahl-Quickstop-Verzögerung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 600000
Einheit | [U/min²] - Umdrehungen pro Minute in Quadrat
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Der Parameter definiert die Steigung der Schnellhalt-Rampe in U/min².

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 1)                  # Betriebsart - Positioniermodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6081, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x607A, 0x00, 2000)               # Zielposition [Ink]

d.SdoWr(0x6040, 0x00, 0x5F)               # Steuerwort - relative Positionierung starten


6086.00h Drehzahl - Rampentyp

Name | DS402_PP_MotionProfileType
Bezeichnung | Drehzahl - Rampentyp
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1}
Defaultwert | 0
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter legt den Rampentyp des Positionermodus fest.

Parameter werte:
Wert | Beschreibung
0 | Trapez (lineare Rampe)
1 | S² Rampe

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 1)                  # Betriebsart - Positioniermodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6081, 0x00, 1000)               # Drehzahl [Upm]
d.SdoWr(0x607A, 0x00, 2000)               # Zielposition [Ink]

d.SdoWr(0x6040, 0x00, 0x5F)               # Steuerwort - relative Positionierung starten


6087.00h Beschleunigung-Moment

Name | DS402_TQ_TorqueSlope
Bezeichnung | Beschleunigung-Moment
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [o/oo]
Betriebsart | Torque profile mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Durch den Parameter wird die Änderung des Momentes in Promille vom Nennmoment pro Sekunde verstanden.


6088.00h Strom - Rampentyp

Name | DS402_TQ_TorqueProfileType
Bezeichnung | Strom - Rampentyp
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {-1}
Defaultwert | -1
Einheit | -
Betriebsart | Torque profile mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Über den Parameter wird festgelegt, nach welcher Funktion ein neuer Momentensollwert eingestellt wird.

Parameter werte:
Wert | Beschreibung
-1 | keine Rampe - schnellstmögliche Hochlauf- bzw. Bremsrampe


6089.00h Position - Einheitenindex

Name | DS402_PP_PositionNotationIndex
Bezeichnung | Position - Einheitenindex
Datentyp | int8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-18 .. 18]
Defaultwert | 0
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_PP_PositionDimensionIndex

Beschreibung

Dieser Parameter legt die Einheit der Positionsparameter (Zielposition und aktuelle Positionen) fest.

Position_Unit = 10DS402_PP_PositionNotationIndex * PhyUnit(DS402_PP_PositionDimensionIndex)


608A.00h Positions-Größenindex

Name | DS402_PP_PositionDimensionIndex
Bezeichnung | Positions-Größenindex
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {B4h, ACh}
Defaultwert | B4h
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_PP_PositionNotationIndex

Beschreibung

Dieser Parameter legt die physikalische Größe der Positionsparameter (Zielposition und aktuelle Positionen) fest.

Position_Unit = 10DS402_PP_PositionNotationIndex * PhyUnit(DS402_PP_PositionDimensionIndex)

Parameterwerte:
Wert | Beschreibung
B4h | Umdrehungen (vorausgesetzt die Parameter MOTOR_ENC_Resolution und MOTOR_PolN wurden korrekt gesetzt)
ACh | Inkremente


608B.00h Geschwindigkeit - Einheitenindex

Name | DS402_PP_VelocityNotationIndex
Bezeichnung | Geschwindigkeit - Einheitenindex
Datentyp | int8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-18 .. 18]
Defaultwert | 0
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_PP_VelocityDimensionIndex

Beschreibung

Dieser Parameter legt die Einheit der Drehzahlsparameter fest.

Velocity_Unit = 10DS402_PP_VelocityNotationIndex * PhyUnit(DS402_PP_VelocityDimensionIndex)


608C.00h Geschwindigkeits-Größenindex

Name | DS402_PP_VelocityDimensionIndex
Bezeichnung | Geschwindigkeits-Größenindex
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {A3h, A4h}
Defaultwert | A4h
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_PP_VelocityNotationIndex

Beschreibung

Dieser Parameter legt die physikalische Größe der Drehzahlsparameter fest.

Velocity_Unit = 10DS402_PP_VelocityNotationIndex * PhyUnit(DS402_PP_VelocityDimensionIndex)

Parameterwerte:
Wert | Beschreibung
A3h | [U/s] - Umdrehungen pro Sekunde (vorausgesetzt die Parameter MOTOR_ENC_Resolution und MOTOR_PolN wurden korrekt gesetzt)
A4h | [U/min] - Umdrehungen pro Minute (vorausgesetzt die Parameter MOTOR_ENC_Resolution und MOTOR_PolN wurden korrekt gesetzt)


608D.00h Beschleinigung-Einheitenindex

Name | DS402_PP_AccelerationNotationIndex
Bezeichnung | Beschleinigung-Einheitenindex
Datentyp | int8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-18 .. 18]
Defaultwert | 0
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_PP_AccelerationDimensionIndex

Beschreibung

Dieser Parameter legt die Einheiten von Beschleunigung und Verzögerung fest.

Acceleration_Unit = 10DS402_PP_AccelerationNotationIndex * PhyUnit(DS402_PP_AccelerationDimensionIndex)


608E.00h Beschleunigungs-Größenindex

Name | DS402_PP_AccelerationDimensionIndex
Bezeichnung | Beschleunigungs-Größenindex
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {AFh, B0h}
Defaultwert | B0h
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_PP_AccelerationNotationIndex

Beschreibung

Dieser Parameter legt die physikalische Größe der Beschleunigung und Verzögerung fest.

Acceleration_Unit = 10DS402_PP_AccelerationNotationIndex * PhyUnit(DS402_PP_AccelerationDimensionIndex)

Parameterwerte:
Wert | Beschreibung
AFh | [U/s²] - Umdrehungen pro Sekunde in quadrat
B0h | [U/min²] - Umdrehungen pro Minute in quadrat


608F.00h Positionsgeber-Auflösung - Max Subindex des Objektes

Name | DS402_FG_PositionEncoderResolution_HighestSubindexSupported
Bezeichnung | Positionsgeber-Auflösung - Max Subindex des Objektes
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | {2}
Defaultwert | 2
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_FG_PositionEncoderResolution_EncoderIncrements, DS402_FG_PositionEncoderResolution_MotorShaftRevolutions

Beschreibung

Der Parameter definiert die Anzahl der Inkremente pro Motorumdrehung an. Diese bezieht sich auf den Geber, der zur Positionierung eingesetzt wird. Die Position-Geberauflösung wird nach folgender Formel berechnet:
der Motor mit Encoder-Rückführung
Position-Geberauflösung = MOTOR_ENC_Resolution * DS402_FG_PositionEncoderResolution_EncoderIncrements / DS402_FG_PositionEncoderResolution_MotorShaftRevolutions

der Motor mit Hall-Rückführung
Position-Geberauflösung = MOTOR_PolN * 3 * DS402_FG_PositionEncoderResolution_EncoderIncrements / DS402_FG_PositionEncoderResolution_MotorShaftRevolutions

  • Subindex 01h enthält die Anzahl der Inkremente
  • Subindex 02h enthält die Motorumdrehungen


608F.01h Positionsgeber-Auflösung - Encoderauflösung

Name | DS402_FG_PositionEncoderResolution_EncoderIncrements
Bezeichnung | Positionsgeber-Auflösung - Encoderauflösung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 1
Einheit | [Inkremente]
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_FG_PositionEncoderResolution_HighestSubindexSupported, DS402_FG_PositionEncoderResolution_MotorShaftRevolutions

Beschreibung

Der Parameter definiert den Zähler der Position-Geberauflösung. Die Position-Geberauflösung wird nach folgender Formel berechnet:
der Motor mit Encoder-Rückführung
Position-Geberauflösung = MOTOR_ENC_Resolution * DS402_FG_PositionEncoderResolution_EncoderIncrements / DS402_FG_PositionEncoderResolution_MotorShaftRevolutions

der Motor mit Hall-Rückführung
Position-Geberauflösung = MOTOR_PolN * 3 * DS402_FG_PositionEncoderResolution_EncoderIncrements / DS402_FG_PositionEncoderResolution_MotorShaftRevolutions


608F.02h Positionsgeber-Auflösung - Motorwelleumdrehungen

Name | DS402_FG_PositionEncoderResolution_MotorShaftRevolutions
Bezeichnung | Positionsgeber-Auflösung - Motorwelleumdrehungen
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 1
Einheit | [Umdrehung]
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_FG_PositionEncoderResolution_HighestSubindexSupported, DS402_FG_PositionEncoderResolution_EncoderIncrements

Beschreibung

Der Parameter definiert den Nenner der Position-Geberauflösung. Die Position-Geberauflösung wird nach folgender Formel berechnet:
der Motor mit Encoder-Rückführung
Position-Geberauflösung = MOTOR_ENC_Resolution * DS402_FG_PositionEncoderResolution_EncoderIncrements / DS402_FG_PositionEncoderResolution_MotorShaftRevolutions

der Motor mit Hall-Rückführung
Position-Geberauflösung = MOTOR_PolN * 3 * DS402_FG_PositionEncoderResolution_EncoderIncrements / DS402_FG_PositionEncoderResolution_MotorShaftRevolutions


6090.00h Drehzahlgeber-Auflösung - Max Subindex des Objektes

Name | DS402_FG_VelocityEncoderResolution_HighestSubindexSupported
Bezeichnung | Drehzahlgeber-Auflösung - Max Subindex des Objektes
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | {2}
Defaultwert | 2
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_FG_VelocityEncoderResolution_EncoderIncrements, DS402_FG_VelocityEncoderResolution_MotorShaftRevolutions

Beschreibung

Der Parameter definiert die Anzahl der Inkremente pro Sekunde bei einer Motorundrehung/sec an. Diese bezieht sich auf den Geber, der zur Drehzahlregelung eingesetzt wird. Die Drehzahl-Geberauflösung wird nach folgender Formel berechnet:
der Motor mit Encoder-Rückführung
Drehzahl-Geberauflösung = MOTOR_ENC_Resolution * DS402_FG_VelocityEncoderResolution_EncoderIncrements / DS402_FG_VelocityEncoderResolution_MotorShaftRevolutions
der Motor mit Hall-Rückführung
Drehzahl-Geberauflösung = MOTOR_PolN * 3 * DS402_FG_VelocityEncoderResolution_EncoderIncrements / DS402_FG_VelocityEncoderResolution_MotorShaftRevolutions

  • Subindex 01h enthält die Anzahl der Inkremente pro Sekunde
  • Subindex 02h enthält die Motorumdrehungen pro Sekunde


6090.01h Drehzahlgeber-Auflösung - Encoderauflösung

Name | DS402_FG_VelocityEncoderResolution_EncoderIncrements
Bezeichnung | Drehzahlgeber-Auflösung - Encoderauflösung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 1
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_FG_VelocityEncoderResolution_HighestSubindexSupported, DS402_FG_VelocityEncoderResolution_MotorShaftRevolutions

Beschreibung

Der Parameter definiert den Zähler der Drehzahl-Geberauflösung. Die Drehzahl-Geberauflösung wird nach folgender Formel berechnet:
der Motor mit Encoder-Rückführung
Drehzahl-Geberauflösung = MOTOR_ENC_Resolution * DS402_FG_VelocityEncoderResolution_EncoderIncrements / DS402_FG_VelocityEncoderResolution_MotorShaftRevolutions
der Motor mit Hall-Rückführung
Drehzahl-Geberauflösung = MOTOR_PolN * 3 * DS402_FG_VelocityEncoderResolution_EncoderIncrements / DS402_FG_VelocityEncoderResolution_MotorShaftRevolutions


6090.02h Drehzahlgeber-Auflösung - Motorwelleumdrehungen

Name | DS402_FG_VelocityEncoderResolution_MotorShaftRevolutions
Bezeichnung | Drehzahlgeber-Auflösung - Motorwelleumdrehungen
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 1
Einheit | [U/s] - Umdrehungen pro Sekunde
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_FG_VelocityEncoderResolution_HighestSubindexSupported, DS402_FG_VelocityEncoderResolution_EncoderIncrements

Beschreibung

Der Parameter definiert den Nenner der Drehzahl-Geberauflösung. Die Drehzahl-Geberauflösung wird nach folgender Formel berechnet:
der Motor mit Encoder-Rückführung
Drehzahl-Geberauflösung = MOTOR_ENC_Resolution * DS402_FG_VelocityEncoderResolution_EncoderIncrements / DS402_FG_VelocityEncoderResolution_MotorShaftRevolutions
der Motor mit Hall-Rückführung
Drehzahl-Geberauflösung = MOTOR_PolN * 3 * DS402_FG_VelocityEncoderResolution_EncoderIncrements / DS402_FG_VelocityEncoderResolution_MotorShaftRevolutions


6091.00h Getriebeübersetzung - Max Subindex des Objektes

Name | DS402_FG_GearRatio_HighestSubindexSupported
Bezeichnung | Getriebeübersetzung - Max Subindex des Objektes
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | {2}
Defaultwert | 2
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_FG_GearRatio_MotorShaftRevolutions, DS402_FG_GearRatio_DrivingShaftRevolutions

Beschreibung

Die Getriebeübersetzung definiert ein Verhältnis der Umdrehungen der Motorwelle (DS402_FG_GearRatio_MotorShaftRevolutions) zur Umdrehungen der Antriebswelle des Getriebes (DS402_FG_GearRatio_DrivingShaftRevolutions). Die Getriebeübersetzung wird nach folgender Formel berechnet:

Getriebeübersetzung = DS402_FG_GearRatio_MotorShaftRevolutions / DS402_FG_GearRatio_DrivingShaftRevolutions

  • Subindex 01h enthält die Umdrehungen der Motorwelle
  • Subindex 02h enthält die Umdrehungen der Abtriebswelle des Getriebes


6091.01h Getriebeübersetzung - Motorwelleumdrehungen

Name | DS402_FG_GearRatio_MotorShaftRevolutions
Bezeichnung | Getriebeübersetzung - Motorwelleumdrehungen
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295] ausgenommen {0}
Defaultwert | 1
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_FG_GearRatio_HighestSubindexSupported, DS402_FG_GearRatio_DrivingShaftRevolutions

Beschreibung

Dieser Parameter bestimmt den Zähler von der Getriebeübersetzung.

Die Getriebeübersetzung definiert ein Verhältnis der Umdrehungen der Motorwelle (DS402_FG_GearRatio_MotorShaftRevolutions) zur Umdrehungen der Antriebswelle des Getriebes (DS402_FG_GearRatio_DrivingShaftRevolutions).

Getriebeübersetzung = DS402_FG_GearRatio_MotorShaftRevolutions / DS402_FG_GearRatio_DrivingShaftRevolutions


6091.02h Getriebeübersetzung - Wellenumdrehungen

Name | DS402_FG_GearRatio_DrivingShaftRevolutions
Bezeichnung | Getriebeübersetzung - Wellenumdrehungen
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295] ausgenommen {0}
Defaultwert | 1
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_FG_GearRatio_HighestSubindexSupported, DS402_FG_GearRatio_MotorShaftRevolutions

Beschreibung

Dieser Parameter bestimmt den Nenner von der Getriebeübersetzung.

Die Getriebeübersetzung definiert ein Verhältnis der Umdrehungen der Motorwelle (DS402_FG_GearRatio_MotorShaftRevolutions) zur Umdrehungen der Antriebswelle des Getriebes (DS402_FG_GearRatio_DrivingShaftRevolutions).

Getriebeübersetzung = DS402_FG_GearRatio_MotorShaftRevolutions / DS402_FG_GearRatio_DrivingShaftRevolutions


6092.00h Vorschubkonstante - Max Subindex des Objektes

Name | DS402_FG_FeedConstant_HighestSubindexSupported
Bezeichnung | Vorschubkonstante - Max Subindex des Objektes
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | {2}
Defaultwert | 2
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_FG_FeedConstant_Feed, DS402_FG_FeedConstant_DrivingShaftRevolutions

Beschreibung

Die Vorschubkonstante gibt den Weg pro Umdrehung der Abtriebswelle des Motors oder falls vorhanden, des Getriebes an. Die Vorschubkonstante wird nach folgender Formel berechnet:

Vorschubkonstante = DS402_FG_FeedConstant_Feed / DS402_FG_FeedConstant_DrivingShaftRevolutions

  • Subindex 01h enthält die Vorschub der Linearachse
  • Subindex 02h enthält die Umdrehungen der Abtriebswelle des Getriebes/Motors


6092.01h Vorschubkonstante - Vorschub

Name | DS402_FG_FeedConstant_Feed
Bezeichnung | Vorschubkonstante - Vorschub
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295] ausgenommen {0}
Defaultwert | 1
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_FG_FeedConstant_HighestSubindexSupported, DS402_FG_FeedConstant_DrivingShaftRevolutions

Beschreibung

Dieser Parameter bestimmt den Zähler von der Vorschubkonstante.

Die Vorschubkonstante gibt den Weg pro Umdrehung der Abtriebswelle des Motors oder falls vorhanden, des Getriebes an.

Vorschubkonstante = DS402_FG_FeedConstant_Feed / DS402_FG_FeedConstant_DrivingShaftRevolutions


6092.02h Vorschubkonstante - Wellenumdrehungen

Name | DS402_FG_FeedConstant_DrivingShaftRevolutions
Bezeichnung | Vorschubkonstante - Wellenumdrehungen
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295] ausgenommen {0}
Defaultwert | 1
Einheit | -
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_FG_FeedConstant_HighestSubindexSupported, DS402_FG_FeedConstant_Feed

Beschreibung

Dieser Parameter bestimmt den Nenner von der Vorschubkonstante.

Die Vorschubkonstante gibt den Weg pro Umdrehung der Abtriebswelle des Motors oder falls vorhanden, des Getriebes an.

Vorschubkonstante = DS402_FG_FeedConstant_Feed / DS402_FG_FeedConstant_DrivingShaftRevolutions


6098.00h Referenzfahrt - Methode

Name | DS402_HM_HomingMethod
Bezeichnung | Referenzfahrt - Methode
Datentyp | int8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-128 .. 127]
Defaultwert | 0
Einheit | -
Betriebsart | Homing mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_HM_HomingSpeeds_SpeedSwitch, DS402_HM_HomingSpeeds_SpeedZero, DS402_HM_HomingAcceleration

Beschreibung

Dieser Parameter legt die Referenzierungsmethode fest.

ACHTUNG: Je nach Referenzierungsmethode müssen u.a. folgende Parameter eingestellt werden:

- DEV_DinLimitPos     für Methoden, die positiven Limitschalter verwenden
- DEV_DinLimitNeg     für Methoden, die negativen Limitschalter verwenden
- DEV_DinReference    für Methoden, die Referenzschalter verwenden

Methode 0: Keine Referenzierung notwendig.

Methode 1: Homing mittels des negativen Limitschalters und dem Indexpuls

Bei dieser Methode ist die Ausgangsbewegungsrichtung linksherum, wenn der negative Limitschalter (DEV_DinLimitNeg) nicht aktiv ist (hier dargestellt als "low").
Beim erreichend des Limitschalter ändert sich die Bewegungsrichtung zu rechtsherum.
Die Nullposition ist am ersten Indeximpuls nachdem der Limitschalter wieder nach rechts verlassen wurde.

Methode 2: Homing mittels des positiven Limitschalters und dem Indexpuls

Bei dieser Methode ist die Ausgangsbewegungsrichtung, rechtsherum, wenn der positive Limitschalter (DEV_DinLimitPos) nicht aktiv ist (hier dargestellt als "low").
Beim erreichend des Limitschalter ändert sich die Bewegungsrichtung zu linksherum.
Die Nullposition ist am ersten Indeximpuls nachdem der Limitschalter wieder nach links verlassen wurde.

Methode 3 und 4: Homing mittels des positiven Referenzschalters und dem Indexpuls

Bei Methode 3 oder 4 ist die Ausgangsbewegungsrichtung vom Zustand des Referenzschalters (DEV_DinReference) abhängig.
Die Nullposition ist am Indeximpuls, entweder zur rechten oder zur linken Seite des Punktes, in dem der Referenzschalter seinen Zustand ändert.
Wenn die Ausgangsposition so gesetzt ist, dass sich die Bewegungsrichtung umkehren muss, findet die Umlenkung immer erst dann statt, wenn sich der Zustand des Referenzschalters ändert.

Methode 5 und 6: Homing mittels des negativen Referenzschalters und dem Indexpuls

Bei Methode 5 oder 6 ist die Ausgangsbewegungsrichtung vom Zustand des Referenzschalters (DEV_DinReference) abhängig.
Die Nullposition ist am Indeximpuls, entweder zur rechten oder zur linken Seite des Punktes, in dem der Referenzschalter seinen Zustand ändert.
Wenn die Ausgangsposition so gesetzt ist, dass sich die Bewegungsrichtung umkehren muss, findet die Umlenkung immer erst dann statt, wenn sich der Zustand des Referenzschalters ändert.

Methode 7 bis 14: Homing mittels des Referenzschalters und dem Indexpuls

Diese Methoden benutzen einen Referenzschalter (DEV_DinReference), der nur über eine bestimme Länge der Strecke aktiv ist.
Bei den Methoden 7 bis 10 ist die Ausgangsbewegungsrichtung rechts, und bei den Methoden 11 bis 14 ist die Ausgangsbewegungsrichtung links, es sei denn beim Anfang der Bewegung ist der Referenzschalter aktiv.
In diesem Fall ist die Ausgangsrichtung der Bewegung von der Flanke abhängig, die gesucht wird.
Die Nullposition ist am Indeximpuls auf beiden Seiten der steigenden oder fallenden Flanke des Referenzschalters, wie in den folgenden zwei Diagrammen gezeigt.
Wenn die Ausgangsbewegungsrichtung vom Referenzschalter wegführt, muss sich die Bewegung beim Antreffen des relevanten Limitschalters umkehren.

Methode 15 und 16: Reserviert

Diese Methoden sind für zukünftige Erweiterungen des Homing Mods reserviert.

Methode 17 bis 30: Homing ohne Indeximpuls

Diese Methoden sind ähnlich zu den Methoden 1 bis 14, außer, dass die Nullposition nicht vom Indeximpuls abhängig ist, sondern lediglich vom Übergang der relevanten Referenz- bzw. Limitschalter.
Z.B. sind Methode 19 und 20 zu Methode 3 und 4 ähnlich, wie im folgenden Diagramm gezeigt wird.

Methode 31 und 32: Reserviert

Diese Methoden sind für zukünftige Erweiterungen des Homing Mods reserviert.

Methode 33 und 34: Homing mittels den Indeximpuls

Bei den Methoden 33 und 34 ist die Richtung der Referenzfahrt positiv beziehungsweise negativ. Die Nullposition ist am ersten Indeximpuls, der in der vorgewählten Richtung gefunden wird.

Methode 35: Homing mittels der aktuellen Position

In Methode 35 wird die gegenwärtige Position als Nullposition genommen.


6099.00h Referenzfahrt - Drehzahl - Max Subindex des Objektes

Name | DS402_HM_HomingSpeeds_HighestSubindexSupported
Bezeichnung | Referenzfahrt - Drehzahl - Max Subindex des Objektes
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | {2}
Defaultwert | 2
Einheit | -
Betriebsart | Homing mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_HM_HomingSpeeds_SpeedSwitch, DS402_HM_HomingSpeeds_SpeedZero, DS402_HM_HomingAcceleration

Beschreibung

Der Parameter legt den Drehzahlsollwert während der Referenzfahrt fest.
  • Subindex 01h enthält die Drehzahl für Schaltersuche
  • Subindex 02h enthält die Drehzahl für Nullpunktanfahrt


6099.01h Referenzfahrt - Drehzahl für Schaltersuche

Name | DS402_HM_HomingSpeeds_SpeedSwitch
Bezeichnung | Referenzfahrt - Drehzahl für Schaltersuche
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Homing mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_HM_HomingSpeeds_HighestSubindexSupported, DS402_HM_HomingSpeeds_SpeedZero

Beschreibung

Dieser Parameter definiert die Drehzahl bei der Referenzierung für die Suche des Referenzschalters. Diese Drehzahl wird auch schnelle Referenzierungsgeschwindigkeit genannt. Für welche Referenzierungsphase diese Drehzahl genommen wird, kann den Bildern der Referenzierungsmethoden entnommen werden (siehe Parameter DS402_HM_HomingMethod).


6099.02h Referenzfahrt - Drehzahl für Nullpunktanfahrt

Name | DS402_HM_HomingSpeeds_SpeedZero
Bezeichnung | Referenzfahrt - Drehzahl für Nullpunktanfahrt
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [U/min] - Umdrehungen pro Minute
Betriebsart | Homing mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_HM_HomingSpeeds_HighestSubindexSupported, DS402_HM_HomingSpeeds_SpeedSwitch

Beschreibung

Dieser Parameter definiert die Drehzahl bei der Referenzierung für die Suche des Nullpunktes. Da diese Drehzahl in der Praxis kleiner als DS402_HM_HomingSpeeds_SpeedSwitch ist, wird sie auch als langsame Referenzierungsgeschwindigkeit bezeichnet. Für welche Referenzierungsphase diese Drehzahl genommen wird, kann den Bildern der Referenzierungsmethoden entnommen werden (siehe Parameter DS402_HM_HomingMethod).


609A.00h Referenzfahrt - Beschleunigung

Name | DS402_HM_HomingAcceleration
Bezeichnung | Referenzfahrt - Beschleunigung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | -
Betriebsart | Homing mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_HM_HomingMethod, DS402_HM_HomingSpeeds_SpeedSwitch, DS402_HM_HomingSpeeds_SpeedZero

Beschreibung

Dieser Parameter legt die Beschleunigung und die Verzögerung bei einer Referenzfahrt fest.


60C0.00h Interpolation - Methode

Name | DS402_IP_InterpolationSubModeSelect
Bezeichnung | Interpolation - Methode
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0}
Defaultwert | 0
Einheit | -
Betriebsart | Interpolated position mode
Verfügbar ab | 1.89.00.03
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_IP_InterpolationDataRecord_HighestSubindexSupported, DS402_IP_InterpolationDataRecord_1stSetPoint, DS402_IP_InterpolationTimePeriod_HighestSubindexSupported, DS402_IP_InterpolationTimePeriod_Value, DS402_IP_InterpolationTimePeriod_Index

Beschreibung

Dieser Parameter liefert die Information über eingesetzte Interpolationsmethode.

Parameterwerte:
Wert | Beschreibung
0 | Lineareinterpolation

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 7)                  # Betriebsart - Interpolationsmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

d.SdoWr(0x60C2, 0x01, 100)                # Interpolationszeit - Wert
d.SdoWr(0x60C2, 0x02, -3)                 # Interpolationszeit - Index

d.SdoWr(0x60C4, 0x06, 1)                  # Interpolationskonfigurationsdaten - Puffer löschen
                                          #  0 = Löscht den Puffer und deaktiviert den Zugriff
                                          #  1 = Aktiviert den Zugriff
                                          # WICHTIG - sonst kein Zugriff zum ip Puffer

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
d.SdoWr(0x6040, 0x00, 0x1F)               # Steuerwort - ip Modus aktivieren
#------------------------------------------------------------------------------------------

StartPos  = d.SdoRd(0x6064, 0x00)         # aktuelle Position
TargetPos = StartPos

d.SdoWr(0x60C1, 0x01, TargetPos)          # Interpolationsdatensatz - 1.Sollwert

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x60C1, 0x01, TargetPos)       # Interpolationsdatensatz - 1.Sollwert


60C1.00h Interpolationsdatensatz - Max Subindex des Objektes

Name | DS402_IP_InterpolationDataRecord_HighestSubindexSupported
Bezeichnung | Interpolationsdatensatz - Max Subindex des Objektes
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | {1}
Defaultwert | 1
Einheit | -
Betriebsart | Interpolated position mode
Verfügbar ab | 1.89.00.03
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_IP_InterpolationSubModeSelect, DS402_IP_InterpolationDataRecord_1stSetPoint, DS402_IP_InterpolationTimePeriod_HighestSubindexSupported, DS402_IP_InterpolationTimePeriod_Value, DS402_IP_InterpolationTimePeriod_Index

Beschreibung

Der Parameter liefert die Anzahl der Daten, die notwendig für Interpolationsalgorithmus sind, zurück. Die Auswertung der Daten in Interpolation ist von der Interpolationsmethode abhängig. Für lineare Interpolation alle ankommenden Daten werden als neue Sollwertpositionen betrachtet.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 7)                  # Betriebsart - Interpolationsmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

d.SdoWr(0x60C2, 0x01, 100)                # Interpolationszeit - Wert
d.SdoWr(0x60C2, 0x02, -3)                 # Interpolationszeit - Index

d.SdoWr(0x60C4, 0x06, 1)                  # Interpolationskonfigurationsdaten - Puffer löschen
                                          #  0 = Löscht den Puffer und deaktiviert den Zugriff
                                          #  1 = Aktiviert den Zugriff
                                          # WICHTIG - sonst kein Zugriff zum ip Puffer

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
d.SdoWr(0x6040, 0x00, 0x1F)               # Steuerwort - ip Modus aktivieren
#------------------------------------------------------------------------------------------

StartPos  = d.SdoRd(0x6064, 0x00)         # aktuelle Position
TargetPos = StartPos

d.SdoWr(0x60C1, 0x01, TargetPos)          # Interpolationsdatensatz - 1.Sollwert

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x60C1, 0x01, TargetPos)       # Interpolationsdatensatz - 1.Sollwert


60C1.01h Interpolationsdatensatz - 1.Sollwert

Name | DS402_IP_InterpolationDataRecord_1stSetPoint
Bezeichnung | Interpolationsdatensatz - 1.Sollwert
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | 0
Einheit | -
Betriebsart | Interpolated position mode
Verfügbar ab | 1.89.00.03
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_IP_InterpolationSubModeSelect, DS402_IP_InterpolationDataRecord_HighestSubindexSupported, DS402_IP_InterpolationTimePeriod_HighestSubindexSupported, DS402_IP_InterpolationTimePeriod_Value, DS402_IP_InterpolationTimePeriod_Index

Beschreibung

Der Parameter ist die Zielposition, die in dem Interpolationsalgorithmus angewendet wird.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 7)                  # Betriebsart - Interpolationsmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

d.SdoWr(0x60C2, 0x01, 100)                # Interpolationszeit - Wert
d.SdoWr(0x60C2, 0x02, -3)                 # Interpolationszeit - Index

d.SdoWr(0x60C4, 0x06, 1)                  # Interpolationskonfigurationsdaten - Puffer löschen
                                          #  0 = Löscht den Puffer und deaktiviert den Zugriff
                                          #  1 = Aktiviert den Zugriff
                                          # WICHTIG - sonst kein Zugriff zum ip Puffer

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
d.SdoWr(0x6040, 0x00, 0x1F)               # Steuerwort - ip Modus aktivieren
#------------------------------------------------------------------------------------------

StartPos  = d.SdoRd(0x6064, 0x00)         # aktuelle Position
TargetPos = StartPos

d.SdoWr(0x60C1, 0x01, TargetPos)          # Interpolationsdatensatz - 1.Sollwert

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x60C1, 0x01, TargetPos)       # Interpolationsdatensatz - 1.Sollwert


60C2.00h Interpolationszeit - Max Subindex des Objektes

Name | DS402_IP_InterpolationTimePeriod_HighestSubindexSupported
Bezeichnung | Interpolationszeit - Max Subindex des Objektes
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | -
Defaultwert | 2
Einheit | -
Betriebsart | Interpolated position mode
Verfügbar ab | 1.89.00.03
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_IP_InterpolationSubModeSelect, DS402_IP_InterpolationDataRecord_HighestSubindexSupported, DS402_IP_InterpolationDataRecord_1stSetPoint, DS402_IP_InterpolationTimePeriod_Value, DS402_IP_InterpolationTimePeriod_Index

Beschreibung

Der Parameter definiert die Interpolationszykluszeit.

Interpolationszeit = 10DS402_IP_InterpolationTimePeriod_Index * DS402_IP_InterpolationTimePeriod_Value [s]

  • Subindex 01h enthält die Interpolationszykluszeit
  • Subindex 02h enthält die Einheit der Interpolationszykluszeit

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 7)                  # Betriebsart - Interpolationsmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

d.SdoWr(0x60C2, 0x01, 100)                # Interpolationszeit - Wert
d.SdoWr(0x60C2, 0x02, -3)                 # Interpolationszeit - Index

d.SdoWr(0x60C4, 0x06, 1)                  # Interpolationskonfigurationsdaten - Puffer löschen
                                          #  0 = Löscht den Puffer und deaktiviert den Zugriff
                                          #  1 = Aktiviert den Zugriff
                                          # WICHTIG - sonst kein Zugriff zum ip Puffer

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
d.SdoWr(0x6040, 0x00, 0x1F)               # Steuerwort - ip Modus aktivieren
#------------------------------------------------------------------------------------------

StartPos  = d.SdoRd(0x6064, 0x00)         # aktuelle Position
TargetPos = StartPos

d.SdoWr(0x60C1, 0x01, TargetPos)          # Interpolationsdatensatz - 1.Sollwert

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x60C1, 0x01, TargetPos)       # Interpolationsdatensatz - 1.Sollwert


60C2.01h Interpolationszeit - Wert

Name | DS402_IP_InterpolationTimePeriod_Value
Bezeichnung | Interpolationszeit - Wert
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 100]
Defaultwert | 1
Einheit | [s]
Betriebsart | Interpolated position mode
Verfügbar ab | 1.89.00.03
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_IP_InterpolationSubModeSelect, DS402_IP_InterpolationDataRecord_HighestSubindexSupported, DS402_IP_InterpolationDataRecord_1stSetPoint, DS402_IP_InterpolationTimePeriod_HighestSubindexSupported, DS402_IP_InterpolationTimePeriod_Index

Beschreibung

Der Parameter definiert die Interpolationszykluszeit. Die Einheit des Wertes ist 10DS402_IP_InterpolationTimePeriod_Index Sekunden.

Interpolationszeit = 10DS402_IP_InterpolationTimePeriod_Index * DS402_IP_InterpolationTimePeriod_Value [s]

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 7)                  # Betriebsart - Interpolationsmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

d.SdoWr(0x60C2, 0x01, 100)                # Interpolationszeit - Wert
d.SdoWr(0x60C2, 0x02, -3)                 # Interpolationszeit - Index

d.SdoWr(0x60C4, 0x06, 1)                  # Interpolationskonfigurationsdaten - Puffer löschen
                                          #  0 = Löscht den Puffer und deaktiviert den Zugriff
                                          #  1 = Aktiviert den Zugriff
                                          # WICHTIG - sonst kein Zugriff zum ip Puffer

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
d.SdoWr(0x6040, 0x00, 0x1F)               # Steuerwort - ip Modus aktivieren
#------------------------------------------------------------------------------------------

StartPos  = d.SdoRd(0x6064, 0x00)         # aktuelle Position
TargetPos = StartPos

d.SdoWr(0x60C1, 0x01, TargetPos)          # Interpolationsdatensatz - 1.Sollwert

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x60C1, 0x01, TargetPos)       # Interpolationsdatensatz - 1.Sollwert


60C2.02h Interpolationszeit - Index

Name | DS402_IP_InterpolationTimePeriod_Index
Bezeichnung | Interpolationszeit - Index
Datentyp | int8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {-2, -3}
Defaultwert | -3
Einheit | -
Betriebsart | Interpolated position mode
Verfügbar ab | 1.89.00.03
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_IP_InterpolationSubModeSelect, DS402_IP_InterpolationDataRecord_HighestSubindexSupported, DS402_IP_InterpolationDataRecord_1stSetPoint, DS402_IP_InterpolationTimePeriod_HighestSubindexSupported, DS402_IP_InterpolationTimePeriod_Value

Beschreibung

Der Parameter definiert die Einheit der Interpolationszykluszeit. Der Wert ist dimensionslos.

Interpolationszeit = 10DS402_IP_InterpolationTimePeriod_Index * DS402_IP_InterpolationTimePeriod_Value [s]

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 7)                  # Betriebsart - Interpolationsmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

d.SdoWr(0x60C2, 0x01, 100)                # Interpolationszeit - Wert
d.SdoWr(0x60C2, 0x02, -3)                 # Interpolationszeit - Index

d.SdoWr(0x60C4, 0x06, 1)                  # Interpolationskonfigurationsdaten - Puffer löschen
                                          #  0 = Löscht den Puffer und deaktiviert den Zugriff
                                          #  1 = Aktiviert den Zugriff
                                          # WICHTIG - sonst kein Zugriff zum ip Puffer

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
d.SdoWr(0x6040, 0x00, 0x1F)               # Steuerwort - ip Modus aktivieren
#------------------------------------------------------------------------------------------

StartPos  = d.SdoRd(0x6064, 0x00)         # aktuelle Position
TargetPos = StartPos

d.SdoWr(0x60C1, 0x01, TargetPos)          # Interpolationsdatensatz - 1.Sollwert

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x60C1, 0x01, TargetPos)       # Interpolationsdatensatz - 1.Sollwert


60C4.00h Interpolationskonfigurationsdaten - Max Subindex des Objektes

Name | DS402_IP_InterpolationDataConfiguration_HighestSubindexSupported
Bezeichnung | Interpolationskonfigurationsdaten - Max Subindex des Objektes
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | {6}
Defaultwert | 6
Einheit | -
Betriebsart | Interpolated position mode
Verfügbar ab | 1.89.00.03
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_IP_InterpolationDataConfiguration_MaximumBufferSize, DS402_IP_InterpolationDataConfiguration_ActualBufferSize, DS402_IP_InterpolationDataConfiguration_BufferOrganisation, DS402_IP_InterpolationDataConfiguration_BufferPosition, DS402_IP_InterpolationDataConfiguration_SizeOfDataRecord, DS402_IP_InterpolationDataConfiguration_BufferClear

Beschreibung

Der Parameter liefert die Konfigurationsdaten im Interpolationsmodus zurück.
  • Subindex 01h enthält die maximale Puffergröße
  • Subindex 02h enthält die aktuelle Puffergröße
  • Subindex 03h enthält die Pufferorganisation
  • Subindex 04h enthält die Position im Puffer
  • Subindex 05h enthält die Größe des Datensatzes
  • Subindex 06h enthält den Zugriff zum Eingangspuffer und löscht die Interpolationsdatensätze.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 7)                  # Betriebsart - Interpolationsmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

d.SdoWr(0x60C2, 0x01, 100)                # Interpolationszeit - Wert
d.SdoWr(0x60C2, 0x02, -3)                 # Interpolationszeit - Index

d.SdoWr(0x60C4, 0x06, 1)                  # Interpolationskonfigurationsdaten - Puffer löschen
                                          #  0 = Löscht den Puffer und deaktiviert den Zugriff
                                          #  1 = Aktiviert den Zugriff
                                          # WICHTIG - sonst kein Zugriff zum ip Puffer

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
d.SdoWr(0x6040, 0x00, 0x1F)               # Steuerwort - ip Modus aktivieren
#------------------------------------------------------------------------------------------

StartPos  = d.SdoRd(0x6064, 0x00)         # aktuelle Position
TargetPos = StartPos

d.SdoWr(0x60C1, 0x01, TargetPos)          # Interpolationsdatensatz - 1.Sollwert

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x60C1, 0x01, TargetPos)       # Interpolationsdatensatz - 1.Sollwert


60C4.01h Interpolationskonfigurationsdaten - Maximanle Puffergröße

Name | DS402_IP_InterpolationDataConfiguration_MaximumBufferSize
Bezeichnung | Interpolationskonfigurationsdaten - Maximanle Puffergröße
Datentyp | uint32
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 1
Einheit | -
Betriebsart | Interpolated position mode
Verfügbar ab | 1.89.00.03
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_IP_InterpolationDataConfiguration_HighestSubindexSupported, DS402_IP_InterpolationDataConfiguration_ActualBufferSize, DS402_IP_InterpolationDataConfiguration_BufferOrganisation, DS402_IP_InterpolationDataConfiguration_BufferPosition, DS402_IP_InterpolationDataConfiguration_SizeOfDataRecord, DS402_IP_InterpolationDataConfiguration_BufferClear

Beschreibung

Der Parameter liefert die maximale Puffergröße zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 7)                  # Betriebsart - Interpolationsmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

d.SdoWr(0x60C2, 0x01, 100)                # Interpolationszeit - Wert
d.SdoWr(0x60C2, 0x02, -3)                 # Interpolationszeit - Index

d.SdoWr(0x60C4, 0x06, 1)                  # Interpolationskonfigurationsdaten - Puffer löschen
                                          #  0 = Löscht den Puffer und deaktiviert den Zugriff
                                          #  1 = Aktiviert den Zugriff
                                          # WICHTIG - sonst kein Zugriff zum ip Puffer

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
d.SdoWr(0x6040, 0x00, 0x1F)               # Steuerwort - ip Modus aktivieren
#------------------------------------------------------------------------------------------

StartPos  = d.SdoRd(0x6064, 0x00)         # aktuelle Position
TargetPos = StartPos

d.SdoWr(0x60C1, 0x01, TargetPos)          # Interpolationsdatensatz - 1.Sollwert

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x60C1, 0x01, TargetPos)       # Interpolationsdatensatz - 1.Sollwert


60C4.02h Interpolationskonfigurationsdaten - Aktuelle Puffergröße

Name | DS402_IP_InterpolationDataConfiguration_ActualBufferSize
Bezeichnung | Interpolationskonfigurationsdaten - Aktuelle Puffergröße
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1}
Defaultwert | 0
Einheit | -
Betriebsart | Interpolated position mode
Verfügbar ab | 1.89.00.03
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_IP_InterpolationDataConfiguration_HighestSubindexSupported, DS402_IP_InterpolationDataConfiguration_MaximumBufferSize, DS402_IP_InterpolationDataConfiguration_BufferOrganisation, DS402_IP_InterpolationDataConfiguration_BufferPosition, DS402_IP_InterpolationDataConfiguration_SizeOfDataRecord, DS402_IP_InterpolationDataConfiguration_BufferClear

Beschreibung

Der Parameter ist nicht verwendet.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 7)                  # Betriebsart - Interpolationsmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

d.SdoWr(0x60C2, 0x01, 100)                # Interpolationszeit - Wert
d.SdoWr(0x60C2, 0x02, -3)                 # Interpolationszeit - Index

d.SdoWr(0x60C4, 0x06, 1)                  # Interpolationskonfigurationsdaten - Puffer löschen
                                          #  0 = Löscht den Puffer und deaktiviert den Zugriff
                                          #  1 = Aktiviert den Zugriff
                                          # WICHTIG - sonst kein Zugriff zum ip Puffer

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
d.SdoWr(0x6040, 0x00, 0x1F)               # Steuerwort - ip Modus aktivieren
#------------------------------------------------------------------------------------------

StartPos  = d.SdoRd(0x6064, 0x00)         # aktuelle Position
TargetPos = StartPos

d.SdoWr(0x60C1, 0x01, TargetPos)          # Interpolationsdatensatz - 1.Sollwert

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x60C1, 0x01, TargetPos)       # Interpolationsdatensatz - 1.Sollwert


60C4.03h Interpolationskonfigurationsdaten - Pufferorganization

Name | DS402_IP_InterpolationDataConfiguration_BufferOrganisation
Bezeichnung | Interpolationskonfigurationsdaten - Pufferorganization
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0}
Defaultwert | 0
Einheit | -
Betriebsart | Interpolated position mode
Verfügbar ab | 1.89.00.03
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_IP_InterpolationDataConfiguration_HighestSubindexSupported, DS402_IP_InterpolationDataConfiguration_MaximumBufferSize, DS402_IP_InterpolationDataConfiguration_ActualBufferSize, DS402_IP_InterpolationDataConfiguration_BufferPosition, DS402_IP_InterpolationDataConfiguration_SizeOfDataRecord, DS402_IP_InterpolationDataConfiguration_BufferClear

Beschreibung

Der Parameter definiert die Pufferorganisation.

Parameter werte:
Wert | Beschreibung
0 | FIFO Pufferorganisation

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 7)                  # Betriebsart - Interpolationsmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

d.SdoWr(0x60C2, 0x01, 100)                # Interpolationszeit - Wert
d.SdoWr(0x60C2, 0x02, -3)                 # Interpolationszeit - Index

d.SdoWr(0x60C4, 0x06, 1)                  # Interpolationskonfigurationsdaten - Puffer löschen
                                          #  0 = Löscht den Puffer und deaktiviert den Zugriff
                                          #  1 = Aktiviert den Zugriff
                                          # WICHTIG - sonst kein Zugriff zum ip Puffer

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
d.SdoWr(0x6040, 0x00, 0x1F)               # Steuerwort - ip Modus aktivieren
#------------------------------------------------------------------------------------------

StartPos  = d.SdoRd(0x6064, 0x00)         # aktuelle Position
TargetPos = StartPos

d.SdoWr(0x60C1, 0x01, TargetPos)          # Interpolationsdatensatz - 1.Sollwert

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x60C1, 0x01, TargetPos)       # Interpolationsdatensatz - 1.Sollwert


60C4.04h Interpolationskonfigurationsdaten - Pufferposition

Name | DS402_IP_InterpolationDataConfiguration_BufferPosition
Bezeichnung | Interpolationskonfigurationsdaten - Pufferposition
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0}
Defaultwert | 0
Einheit | -
Betriebsart | Interpolated position mode
Verfügbar ab | 1.89.00.03
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_IP_InterpolationDataConfiguration_HighestSubindexSupported, DS402_IP_InterpolationDataConfiguration_MaximumBufferSize, DS402_IP_InterpolationDataConfiguration_ActualBufferSize, DS402_IP_InterpolationDataConfiguration_BufferOrganisation, DS402_IP_InterpolationDataConfiguration_SizeOfDataRecord, DS402_IP_InterpolationDataConfiguration_BufferClear

Beschreibung

Der Parameter ist nicht verwendet und liefert 0 zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 7)                  # Betriebsart - Interpolationsmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

d.SdoWr(0x60C2, 0x01, 100)                # Interpolationszeit - Wert
d.SdoWr(0x60C2, 0x02, -3)                 # Interpolationszeit - Index

d.SdoWr(0x60C4, 0x06, 1)                  # Interpolationskonfigurationsdaten - Puffer löschen
                                          #  0 = Löscht den Puffer und deaktiviert den Zugriff
                                          #  1 = Aktiviert den Zugriff
                                          # WICHTIG - sonst kein Zugriff zum ip Puffer

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
d.SdoWr(0x6040, 0x00, 0x1F)               # Steuerwort - ip Modus aktivieren
#------------------------------------------------------------------------------------------

StartPos  = d.SdoRd(0x6064, 0x00)         # aktuelle Position
TargetPos = StartPos

d.SdoWr(0x60C1, 0x01, TargetPos)          # Interpolationsdatensatz - 1.Sollwert

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x60C1, 0x01, TargetPos)       # Interpolationsdatensatz - 1.Sollwert


60C4.05h Interpolationskonfigurationsdaten - Datensatzgröße

Name | DS402_IP_InterpolationDataConfiguration_SizeOfDataRecord
Bezeichnung | Interpolationskonfigurationsdaten - Datensatzgröße
Datentyp | uint8
Zugriff | nur Schreiben
Attribute | Speicherbar
Wertbereich | [1 .. 254]
Defaultwert | 4
Einheit | -
Betriebsart | Interpolated position mode
Verfügbar ab | 1.89.00.03
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_IP_InterpolationDataConfiguration_HighestSubindexSupported, DS402_IP_InterpolationDataConfiguration_MaximumBufferSize, DS402_IP_InterpolationDataConfiguration_ActualBufferSize, DS402_IP_InterpolationDataConfiguration_BufferOrganisation, DS402_IP_InterpolationDataConfiguration_BufferPosition, DS402_IP_InterpolationDataConfiguration_BufferClear

Beschreibung

Der Parameter ist nicht verwendet.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 7)                  # Betriebsart - Interpolationsmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

d.SdoWr(0x60C2, 0x01, 100)                # Interpolationszeit - Wert
d.SdoWr(0x60C2, 0x02, -3)                 # Interpolationszeit - Index

d.SdoWr(0x60C4, 0x06, 1)                  # Interpolationskonfigurationsdaten - Puffer löschen
                                          #  0 = Löscht den Puffer und deaktiviert den Zugriff
                                          #  1 = Aktiviert den Zugriff
                                          # WICHTIG - sonst kein Zugriff zum ip Puffer

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
d.SdoWr(0x6040, 0x00, 0x1F)               # Steuerwort - ip Modus aktivieren
#------------------------------------------------------------------------------------------

StartPos  = d.SdoRd(0x6064, 0x00)         # aktuelle Position
TargetPos = StartPos

d.SdoWr(0x60C1, 0x01, TargetPos)          # Interpolationsdatensatz - 1.Sollwert

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x60C1, 0x01, TargetPos)       # Interpolationsdatensatz - 1.Sollwert


60C4.06h Interpolationskonfigurationsdaten - Puffer löschen

Name | DS402_IP_InterpolationDataConfiguration_BufferClear
Bezeichnung | Interpolationskonfigurationsdaten - Puffer löschen
Datentyp | uint8
Zugriff | nur Schreiben
Attribute | Speicherbar
Wertbereich | {0, 1}
Defaultwert | -
Einheit | -
Betriebsart | Interpolated position mode
Verfügbar ab | 1.89.00.03
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_IP_InterpolationDataConfiguration_HighestSubindexSupported, DS402_IP_InterpolationDataConfiguration_MaximumBufferSize, DS402_IP_InterpolationDataConfiguration_ActualBufferSize, DS402_IP_InterpolationDataConfiguration_BufferOrganisation, DS402_IP_InterpolationDataConfiguration_BufferPosition, DS402_IP_InterpolationDataConfiguration_SizeOfDataRecord

Beschreibung

Der Parameter definiert den Zugriff zum Eingangspuffer und löscht die Interpolationsdatensätze.

Parameter werte:
Wert | Beschreibung
0 | Löscht den Eingangspuffer und die Interpolationsdatensätze und deaktiviert den Zugriff zum Eingangspuffer
1 | Aktiviert den Zugriff zum Eingangspuffer

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
from math import *

d = Dsa(1)                                # NodeId

INTERPOLATION_TIME_MS = 100               # Interpolationszeit in ms

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)
d.SdoWr(0x3911, 0x00, 0)                  # Motorpolarität

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL Feedback - Encoder
d.SdoWr(0x3962, 0x00, 2000)               # Encoderauflösung in Ink.

d.SdoWr(0x6060, 0x00, 7)                  # Betriebsart - Interpolationsmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

d.SdoWr(0x608A, 0x00, 0xAC)               # Positions-Größenindex (Inkrementen)
d.SdoWr(0x6065, 0x00, 1000)               # Positionsschleppfehler - Fenster [Ink]

d.SdoWr(0x60C2, 0x01, 100)                # Interpolationszeit - Wert
d.SdoWr(0x60C2, 0x02, -3)                 # Interpolationszeit - Index

d.SdoWr(0x60C4, 0x06, 1)                  # Interpolationskonfigurationsdaten - Puffer löschen
                                          #  0 = Löscht den Puffer und deaktiviert den Zugriff
                                          #  1 = Aktiviert den Zugriff
                                          # WICHTIG - sonst kein Zugriff zum ip Puffer

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
d.SdoWr(0x6040, 0x00, 0x1F)               # Steuerwort - ip Modus aktivieren
#------------------------------------------------------------------------------------------

StartPos  = d.SdoRd(0x6064, 0x00)         # aktuelle Position
TargetPos = StartPos

d.SdoWr(0x60C1, 0x01, TargetPos)          # Interpolationsdatensatz - 1.Sollwert

ts  = d.SdoRd(0x3850, 0x00)               # System clock
ts += INTERPOLATION_TIME_MS/2             # 180° Phaseverschiebung

angle = 0.0

while 1:
   angle += 0.4
   TargetPos = StartPos + int(sin(angle) * 2000 + 0.5)

   while (d.SdoRd(0x3850,0) < ts):        # System clock
      pass

   ts += INTERPOLATION_TIME_MS

   d.SdoWr(0x60C1, 0x01, TargetPos)       # Interpolationsdatensatz - 1.Sollwert


60F4.00h Aktueller Schleppabstandsfehler

Name | DS402_PP_FollowingErrorActualValue
Bezeichnung | Aktueller Schleppabstandsfehler
Datentyp | int32
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Umdrehung]
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Mit dem Parameter kann der aktuelle Schleppabstand (Differenz zwischen Kommandoposition und Istposition) abgefragt werden.
Im Schleppabstandsfehlerfall (siehe Parameter DS402_PP_FollowingErrorWindow), beinhaltet dieser Parameter einen Schleppabstandswert, bei welchem ein Schleppabstandfehler ausgelöst wurde.

TIPP

Die Standard-Einheit der Position in allen Modi ist die Umdrehung der Motorwelle. Die Auflösung des Encoders wird im Parameter 3962.00h (MOTOR_ENC_Resolution) eingestellt. Es ist möglich die Standard-Einheit anzupassen, durch die Änderung des Parameters DS402_PP_PositionDimensionIndex.


60FC.00h Positionssollwert in Inkrementen

Name | DS402_PP_PositionDemandValueInCounts
Bezeichnung | Positionssollwert in Inkrementen
Datentyp | int32
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647]
Defaultwert | -
Einheit | [Inkremente]
Betriebsart | Profile position mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Mit dem Parameter kann die aktuelle Kommandoposition in Inkrementen abgefragt werden.
Eine Kommandoposition ist ein Positionswert am Ausgang des Profilsgenerators bzw. am Eingang des Positionsreglers.


60FD.00h Digitale Eingänge

Name | DS402_DigitalInputs
Bezeichnung | Digitale Eingänge
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | 8
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Liefert den aktuellen Zustand der digitalen Eingänge des Gerätes zurück.

Der Wert 0 des Bits bedeutet nicht aktiv, 1 aktiv.

Bitbelegung:
Bit | Beschreibung
0 | Logischer Zustand des negativen Endschalters. Ist der Eingang nicht definiert, hat dieses Bit den Wert 0.
1 | Logischer Zustand des positiven Endschalters. Ist der Eingang nicht definiert, hat dieses Bit den Wert 0.
2 | Logischer Zustand des Referenzschalters. Ist der Eingang nicht definiert, hat dieses Bit den Wert 0.
3 | Logischer Zustand des Freigabe-Eingangs. Ist der Eingang nicht definiert, hat dieses Bit den Wert 0.
4 .. 15 | Reserviert
16 | digitale Eingang 0
17 | digitale Eingang 1
18 | digitale Eingang 2
19 | digitale Eingang 3
20 | digitale Eingang 4
21 | digitale Eingang 5
22 | digitale Eingang 6
23 | digitale Eingang 7
24 .. 31 | Reserviert


60FE.00h Digitale Ausgänge - Max Subindex des Objektes

Name | DS402_DigitalOutputs_HighestSubindexSupported
Bezeichnung | Digitale Ausgänge - Max Subindex des Objektes
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar
Wertbereich | {2}
Defaultwert | 2
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_DigitalOutputs_PhysicalOutput, DS402_DigitalOutputs_BitMask

Beschreibung

Der Parameter steuert die digitalen Ausgänge
  • Subindex 01h enthält die physikalischen Ausgänge
  • Subindex 02h enthält die Bitmaske


60FE.01h Digitale Ausgänge - Physische Ausgänge

Name | DS402_DigitalOutputs_PhysicalOutput
Bezeichnung | Digitale Ausgänge - Physische Ausgänge
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0h .. FFFFFFFFh]
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_DigitalOutputs_HighestSubindexSupported, DS402_DigitalOutputs_BitMask

Beschreibung

Mit dem Parameter können die digitalen Ausgänge des Antriebsreglers gesetzt bzw. zurückgesetzt werden.

Die Anzahl der digitalen Ausgänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Bitbelegung:
Bit | Beschreibung
0 .. 15 | Reserviert
16 | digitaler Ausgang 0
17 | digitaler Ausgang 1
18 | digitaler Ausgang 2
19 | digitaler Ausgang 3
20 | digitaler Ausgang 4
21 | digitaler Ausgang 5
22 | digitaler Ausgang 6
23 | digitaler Ausgang 7
24 .. 31 | Reserviert


60FE.02h Digitale Ausgänge - Bit Maske

Name | DS402_DigitalOutputs_BitMask
Bezeichnung | Digitale Ausgänge - Bit Maske
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0h .. FFFFFFFFh]
Defaultwert | 0h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_DigitalOutputs_HighestSubindexSupported, DS402_DigitalOutputs_PhysicalOutput

Beschreibung

Mit dem Parameter können die digitalen Ausgänge freigegeben werden. Jedes Bit dieses Parameters entspricht dem Bit im Objekt DS402_DigitalOutputs_PhysicalOutput.

Bitbelegung:
Bit | Beschreibung
0 .. 15 | Reserviert
16 | digitaler Ausgang 0 (=1 freigegeben, =0 gesperrt)
17 | digitaler Ausgang 1 (=1 freigegeben, =0 gesperrt)
18 | digitaler Ausgang 2 (=1 freigegeben, =0 gesperrt)
19 | digitaler Ausgang 3 (=1 freigegeben, =0 gesperrt)
20 | digitaler Ausgang 4 (=1 freigegeben, =0 gesperrt)
21 | digitaler Ausgang 5 (=1 freigegeben, =0 gesperrt)
22 | digitaler Ausgang 6 (=1 freigegeben, =0 gesperrt)
23 | digitaler Ausgang 7 (=1 freigegeben, =0 gesperrt)
24 .. 31 | Reserviert


6402.00h Motortyp

Name | DS402_MotorType
Bezeichnung | Motortyp
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {8000h, 8001h}
Defaultwert | 8000h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Der Parameter definiert den Motortyp.

Parameter werte:
Wert [hex] | Beschreibung
8000h | bürstenbehafteter Motor (DC) (Der Motor wird an Ma und Mb Signale angeschlossen)
8001h | bürstenloser Motor (BLDC)


6502.00h Unterstützte Betriebsarten

Name | DS402_SupportedDriveModes
Bezeichnung | Unterstützte Betriebsarten
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0h .. FFFFFFFFh]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_ModesOfOperation, DS402_ModesOfOperationDisplay

Beschreibung

Der Parameter liefert die Information über die unterstützten Betriebsarten.
Der Wert "1" des Bits bedeutet, dass die Betriebsart unterstützt wird, "0" nicht unterstützt.

Parameter werte:
Bit | Beschreibung
0 | Positioniermodus (profile position mode) (pp)
1 | Drehzahlmodus (velocity mode) (vl)
2 | Drehzahlmodus (profile velocity mode) (pv)
3 | Drehmomentmodus (torque profile mode) (tq)
4 | Reserviert
5 | Referenzfahrtmodus (homing mode) (hm)
6 | Interpolationsmodus (interpolated position mode) (ip)
7 | Positioniermodus (cyclic sync position mode) (csp)
8 | Drehzahlmodus (cyclic sync velocity mode) (csv)
9 | Drehmomentmodus (cyclic sync torque mode) (cst)
10 .. 15 | Reserviert
16 .. 31 | Herstellerspezifisch


Inhalt - Parameter 3000h (DSA)

3000.00h | DEV_Cmd | Gerätekommando
3000.01h | DEV_Cmd_ExecOnChange | Gerätekommando - Ausführbar bei Änderung
3000.02h | DEV_Cmd2 | Gerätekommando 2
3000.08h | DEV_Cmd_SetError | Gerätekommando - Fehlersetzen
3000.10h | DEV_CmdData0 | Gerätekommando - Daten 0
3000.11h | DEV_CmdData1 | Gerätekommando - Daten 1
3000.12h | DEV_CmdData2 | Gerätekommando - Daten 2
3000.20h | DEV_CmdData0_i16 | Gerätekommando - Daten 0 (int16)
3000.21h | DEV_CmdData1_i16 | Gerätekommando - Daten 1 (int16)
3000.22h | DEV_CmdData2_i16 | Gerätekommando - Daten 2 (int16)
3000.70h | DEV_CmdResult | Gerätekommando - Ergebnis
3000.81h | DEV_CmdError | Gerätekommando - Fehler
3000.83h | DEV_CmdCounter | Gerätekommando - Zähler
3001.00h | DEV_ErrorReg | Error Register
3002.00h | DEV_Status | Statusregister
3003.00h | DEV_Mode | Betriebsart
3004.00h | DEV_Enable | Betriebsfreigabe
3008.00h | DEV_ConfigErrors | Fehler Konfiguration
3010.11h | DEV_Event_Cmd1OnError | Erreigniskommando 1 - bei Fehlern
3010.12h | DEV_Event_Cmd2OnError | Erreigniskommando 2 - bei Fehlern
3010.13h | DEV_Event_Cmd3OnError | Erreigniskommando 3 - bei Fehlern
3010.14h | DEV_Event_Cmd4OnError | Erreigniskommando 4 - bei Fehlern
3010.31h | DEV_Event_Cmd1OnCommError | Erreigniskommando 1 - bei Kommunikationsfehlern
3010.32h | DEV_Event_Cmd2OnCommError | Erreigniskommando 2 - bei Kommunikationsfehlern
3010.33h | DEV_Event_Cmd3OnCommError | Erreigniskommando 3 - bei Kommunikationsfehlern
3010.34h | DEV_Event_Cmd4OnCommError | Erreigniskommando 4 - bei Kommunikationsfehlern
3012.10h | DEV_Event_CmdOnSpecificError1 | Erreigniskommandos - bei spezifischem Fehler 1
3012.11h | DEV_Event_Cmd1OnSpecificError1 | Erreigniskommando 1 - bei spezifischem Fehler 1
3012.12h | DEV_Event_Cmd2OnSpecificError1 | Erreigniskommando 2 - bei spezifischem Fehler 1
3012.13h | DEV_Event_Cmd3OnSpecificError1 | Erreigniskommando 3 - bei spezifischem Fehler 1
3012.14h | DEV_Event_Cmd4OnSpecificError1 | Erreigniskommando 4 - bei spezifischem Fehler 1
3012.20h | DEV_Event_CmdOnSpecificError2 | Erreigniskommandos - bei spezifischem Fehler 2
3012.21h | DEV_Event_Cmd1OnSpecificError2 | Erreigniskommando 1 - bei spezifischem Fehler 2
3012.22h | DEV_Event_Cmd2OnSpecificError2 | Erreigniskommando 2 - bei spezifischem Fehler 2
3012.23h | DEV_Event_Cmd3OnSpecificError2 | Erreigniskommando 3 - bei spezifischem Fehler 2
3012.24h | DEV_Event_Cmd4OnSpecificError2 | Erreigniskommando 4 - bei spezifischem Fehler 2
3012.30h | DEV_Event_CmdOnSpecificError3 | Erreigniskommandos - bei spezifischem Fehler 3
3012.31h | DEV_Event_Cmd1OnSpecificError3 | Erreigniskommando 1 - bei spezifischem Fehler 3
3012.32h | DEV_Event_Cmd2OnSpecificError3 | Erreigniskommando 2 - bei spezifischem Fehler 3
3012.33h | DEV_Event_Cmd3OnSpecificError3 | Erreigniskommando 3 - bei spezifischem Fehler 3
3012.34h | DEV_Event_Cmd4OnSpecificError3 | Erreigniskommando 4 - bei spezifischem Fehler 3
3012.40h | DEV_Event_CmdOnSpecificError4 | Erreigniskommandos - bei spezifischen Fehler 4
3012.41h | DEV_Event_Cmd1OnSpecificError4 | Erreigniskommando 1 - bei spezifischem Fehler 4
3012.42h | DEV_Event_Cmd2OnSpecificError4 | Erreigniskommando 2 - bei spezifischem Fehler 4
3012.43h | DEV_Event_Cmd3OnSpecificError4 | Erreigniskommando 3 - bei spezifischem Fehler 4
3012.44h | DEV_Event_Cmd4OnSpecificError4 | Erreigniskommando 4 - bei spezifischem Fehler 4
3014.11h | DEV_Event1_OnUserCmd1 | Kommando 1 bei Benutzerkommando 1
3014.12h | DEV_Event2_OnUserCmd1 | Kommando 2 bei Benutzerkommando 1
3014.13h | DEV_Event3_OnUserCmd1 | Kommando 3 bei Benutzerkommando 1
3014.14h | DEV_Event4_OnUserCmd1 | Kommando 4 bei Benutzerkommando 1
3014.21h | DEV_Event1_OnUserCmd2 | Kommando 1 bei Benutzerkommando 2
3014.22h | DEV_Event2_OnUserCmd2 | Kommando 2 bei Benutzerkommando 2
3014.23h | DEV_Event3_OnUserCmd2 | Kommando 3 bei Benutzerkommando 2
3014.24h | DEV_Event4_OnUserCmd2 | Kommando 4 bei Benutzerkommando 2
3014.31h | DEV_Event1_OnUserCmd3 | Kommando 1 bei Benutzerkommando 3
3014.32h | DEV_Event2_OnUserCmd3 | Kommando 2 bei Benutzerkommando 3
3014.33h | DEV_Event3_OnUserCmd3 | Kommando 3 bei Benutzerkommando 3
3014.34h | DEV_Event4_OnUserCmd3 | Kommando 4 bei Benutzerkommando 3
3014.41h | DEV_Event1_OnUserCmd4 | Kommando 1 bei Benutzerkommando 4
3014.42h | DEV_Event2_OnUserCmd4 | Kommando 2 bei Benutzerkommando 4
3014.43h | DEV_Event3_OnUserCmd4 | Kommando 3 bei Benutzerkommando 4
3014.44h | DEV_Event4_OnUserCmd4 | Kommando 4 bei Benutzerkommando 4
3014.51h | DEV_Event1_OnUserCmd5 | Kommando 1 bei Benutzerkommando 5
3014.52h | DEV_Event2_OnUserCmd5 | Kommando 2 bei Benutzerkommando 5
3014.53h | DEV_Event3_OnUserCmd5 | Kommando 3 bei Benutzerkommando 5
3014.54h | DEV_Event4_OnUserCmd5 | Kommando 4 bei Benutzerkommando 5
3014.61h | DEV_Event1_OnUserCmd6 | Kommando 1 bei Benutzerkommando 6
3014.62h | DEV_Event2_OnUserCmd6 | Kommando 2 bei Benutzerkommando 6
3014.63h | DEV_Event3_OnUserCmd6 | Kommando 3 bei Benutzerkommando 6
3014.64h | DEV_Event4_OnUserCmd6 | Kommando 4 bei Benutzerkommando 6
3014.71h | DEV_Event1_OnUserCmd7 | Kommando 1 bei Benutzerkommando 7
3014.72h | DEV_Event2_OnUserCmd7 | Kommando 2 bei Benutzerkommando 7
3014.73h | DEV_Event3_OnUserCmd7 | Kommando 3 bei Benutzerkommando 7
3014.74h | DEV_Event4_OnUserCmd7 | Kommando 4 bei Benutzerkommando 7
3014.81h | DEV_Event1_OnUserCmd8 | Kommando 1 bei Benutzerkommando 8
3014.82h | DEV_Event2_OnUserCmd8 | Kommando 2 bei Benutzerkommando 8
3014.83h | DEV_Event3_OnUserCmd8 | Kommando 3 bei Benutzerkommando 8
3014.84h | DEV_Event4_OnUserCmd8 | Kommando 4 bei Benutzerkommando 8
301A.00h | DEV_ValueEvent1_Config | Ereignis bei Wert 1 - Konfiguration
301A.01h | DEV_ValueEvent1_Status | Ereignis bei Wert 1 - Status
301A.02h | DEV_ValueEvent1_ParNr | Ereignis bei Wert 1 - Parameter
301A.03h | DEV_ValueEvent1_PollingTime | Ereignis bei Wert 1 - Polling Zeit
301A.04h | DEV_ValueEvent1_ScaleNum | Ereignis bei Wert 1 - Skalierung Nenner
301A.05h | DEV_ValueEvent1_ScaleDen | Ereignis bei Wert 1 - Skalierung Zähler
301A.06h | DEV_ValueEvent1_ScaledValue | Ereignis bei Wert 1 - Skalierter Wert
301A.08h | DEV_ValueEvent1_Treshold1 | Ereignis bei Wert 1 - Schwellwert 1
301A.09h | DEV_ValueEvent1_Hysteresis1 | Ereignis bei Wert 1 - Hysterese 1
301A.0Ah | DEV_ValueEvent1_Mask1 | Ereignis bei Wert 1 - Maske 1
301A.0Bh | DEV_ValueEvent1_Cmd1 | Ereignis bei Wert 1 - Kommando 1
301A.0Ch | DEV_ValueEvent1_Cmd1_Data0 | Ereignis bei Wert 1 - Kommando 1 Daten 0
301A.0Dh | DEV_ValueEvent1_Cmd1_Data1 | Ereignis bei Wert 1 - Kommando 1 Daten 1
301A.0Eh | DEV_ValueEvent1_Treshold2 | Ereignis bei Wert 1 - Schwellwert 2
301A.0Fh | DEV_ValueEvent1_Hysteresis2 | Ereignis bei Wert 1 - Hysterese 2
301A.10h | DEV_ValueEvent1_Mask2 | Ereignis bei Wert 1 - Maske 2
301A.11h | DEV_ValueEvent1_Cmd2 | Ereignis bei Wert 1 - Kommando 2
301A.12h | DEV_ValueEvent1_Cmd2_Data0 | Ereignis bei Wert 1 - Kommando 2 Daten 0
301A.13h | DEV_ValueEvent1_Cmd2_Data1 | Ereignis bei Wert 1 - Kommando 2 Daten 1
301D.00h | DEV_LatchEvent0_Control | Latch Event 1 - Control
301D.01h | DEV_LatchEvent0_Status | Latch Event 1 - Status
301D.03h | DEV_LatchEvent0_Mode | Latch Event 1 - Modus
301D.08h | DEV_LatchEvent0_ParTrigger | Latch Event 1 - Trigger Parameter
301D.09h | DEV_LatchEvent0_ParToLatch | Latch Event 1 - Gelatchter Parameter
301D.10h | DEV_LatchEvent0_LhCount | Latch Event 1 - Low-High Flankenzähler
301D.11h | DEV_LatchEvent0_LhVal | Latch Event 1 - Low-High Flanke gelatchter Wert
301D.12h | DEV_LatchEvent0_LhDiff | Latch Event 1 - Differenz Low-High - High-Low
301D.13h | DEV_LatchEvent0_HlCount | Latch Event 1 - High-Low Flankenzähler
301D.14h | DEV_LatchEvent0_HlVal | Latch Event 1 - High-Low Flanke gelatchter Wert
301D.15h | DEV_LatchEvent0_HlDiff | Latch Event 1 - Differenz High-Low - Low-High
301D.20h | DEV_LatchEvent1_Control | Latch Event 2 - Control
301D.21h | DEV_LatchEvent1_Status | Latch Event 2 - Status
301D.23h | DEV_LatchEvent1_Mode | Latch Event 2 - Modus
301D.28h | DEV_LatchEvent1_ParTrigger | Latch Event 2 - Trigger Parameter
301D.29h | DEV_LatchEvent1_ParToLatch | Latch Event 2 - Gelatchter Parameter
301D.30h | DEV_LatchEvent1_LhCount | Latch Event 2 - Low-High Flankenzähler
301D.31h | DEV_LatchEvent1_LhVal | Latch Event 2 - Low-High Flanke gelatchter Wert
301D.32h | DEV_LatchEvent1_LhDiff | Latch Event 2 - Differenz Low-High - High-Low
301D.33h | DEV_LatchEvent1_HlCount | Latch Event 2 - High-Low Flankenzähler
301D.34h | DEV_LatchEvent1_HlVal | Latch Event 2 - High-Low Flanke gelatchter Wert
301D.35h | DEV_LatchEvent1_HlDiff | Latch Event 2 - Differenz High-Low - Low-High
3020.00h | DEV_Code | Gerätecode
3020.01h | DEV_SubCode | Gerätesubcode
3020.02h | DEV_Revision | Revisionscode
3020.06h | DEV_McCpuId | CPU Kennungscode
3023.00h | DEV_VersionSw | Softwareversion
3023.01h | DEV_SubVersionSw | Softwaresubversion
3023.02h | DEV_RelVersionSw | Software release
3024.00h | DEV_VersionHw | Hardwareversion
3025.00h | DEV_CustomerCode | Kundencode
3025.01h | DEV_CustomerSwOption | Kundencode der Software
3025.02h | DEV_CustomerHwOption | Kundencode der Hardware
302C.00h | DEV_FreeData | Freie Daten
302D.01h | DEV_Article_Nr | Artikelnummer des Gerätes
302D.02h | DEV_Serial_Nr | Seriennummer des Gerätes
302E.00h | DEV_OemData_Cmd | OEM Daten - Kommando
302E.01h | DEV_OemData_D0 | OEM Daten - D0
302E.02h | DEV_OemData_D1 | OEM Daten - D1
302E.03h | DEV_OemData_D2 | OEM Daten - D2
302E.04h | DEV_OemData_D3 | OEM Daten - D3
302E.05h | DEV_OemData_D4 | OEM Daten - D4
302E.06h | DEV_OemData_D5 | OEM Daten - D5
302E.07h | DEV_OemData_D6 | OEM Daten - D6
302E.08h | DEV_OemData_D7 | OEM Daten - D7
302E.09h | DEV_OemData_D8 | OEM Daten - D8
302E.0Ah | DEV_OemData_D9 | OEM Daten - D9
302F.00h | DEV_UserData_Cmd | Benutzer Daten - Kommando
302F.01h | DEV_UserData_D0 | Benutzer Daten - D0
302F.02h | DEV_UserData_D1 | Benutzer Daten - D1
302F.03h | DEV_UserData_D2 | Benutzer Daten - D2
302F.04h | DEV_UserData_D3 | Benutzer Daten - D3
3031.00h | DEV_MaxUp | Max. Leistungsspannung
3032.00h | DEV_MaxIm | Max. Motorstrom
3050.00h | DEV_DinEnable | Eingangszuordnung - Betriebsfreigabe
3051.00h | DEV_DinClearError | Eingangszuordnung - Fehlerquittierung
3052.00h | DEV_DinStartStop | Eingangszuordnung - Start/Stop
3053.00h | DEV_DinDir | Eingangszuordnung - Drehrichtungsumkehr
3055.00h | DEV_DinLimitPos | Eingangszuordnung - positive Endschalter
3056.00h | DEV_DinLimitNeg | Eingangszuordnung - negative Endschalter
3057.00h | DEV_DinReference | Eingangszuordnung - Referenzschalter
3060.00h | DEV_DoutError | Ausgangszuordnung - Fehler
3080.00h | DEV_ContinueMode | Continue - Modus
3090.00h | DEV_MinUp_Error | Minimum Up - Error
3090.04h | DEV_UpOff_Stotterbremse | Up - Ausschalten Stotterbremse
3090.05h | DEV_UpOn_Stotterbremse | Up - Einschalten Stotterbremse
3090.07h | DEV_Chopper_UpOn | Einschaltschwelle für Ballastwiderstand
3091.01h | DEV_HeatSink_Temp_Warning | Temperatur - Schwelle für Warnung Endstufe
3100.00h | IO_AIN0 | Analoger Eingang 0
3101.00h | IO_AIN1 | Analoger Eingang 1
3108.00h | IO_AIN0_Offset | Analoger Eingang 0 - Offset
3108.01h | IO_AIN1_Offset | Analoger Eingang 1 - Offset
310A.00h | IO_AIN0_DeadBand | Analoger Eingang 0 - Totbereich
310A.01h | IO_AIN1_DeadBand | Analoger Eingang 1 - Totbereich
3110.00h | IO_AIN_Voltage_Ue | Elektronikspannung - Ue
3111.00h | IO_AIN_Voltage_Up | Leistungsspannung - Up
3112.00h | IO_AIN_Voltage_Um | Motorspannung - Um
3113.00h | IO_AIN_Current_Im | Motorstrom - Im
3114.00h | IO_AIN_Temperature_Power | Temperatur - Leistungsstufe
3120.00h | IO_DIN_P0 | Digitale Eingänge - Port0
3120.01h | IO_DIN_P1 | Digitale Eingänge - Port1
3128.00h | IO_DIN_Hall | Digitale Eingänge - Hallsensoren
3128.01h | IO_DIN_Enc | Digitale Eingänge - Encoder
3129.01h | IO_DIN_NodeIdSwitch | NodeId-Schalter - Zustand
3150.00h | IO_DOUT_P0 | Digitale Ausgänge - Port0
3154.00h | IO_DOUT_Enable | Freigabe der digitalen Ausgänge
3158.00h | IO_DOUT_LedsEnable | LED - Benutzersteuerung aktivieren
3158.01h | IO_DOUT_LedsState | LED - Zustand
3200.00h | CURR_DesiredValue | Stromsollwert
3204.00h | CURR_DesiredValue_Source | Stromsollwertquelle
3205.00h | CURR_DesiredValue_Reference | Strombezugswert für analogen Eingang
3210.00h | CURR_Kp | PI-Stromregler - Proportionalfaktor
3211.00h | CURR_Ki | PI-Stromregler - Integralfaktor
3219.00h | CURR_Pid_FactorNum | PI-Stromregler - Faktor Zähler
3219.01h | CURR_Pid_FactorDen | PI-Stromregler - Faktor Nenner
3221.00h | CURR_LimitMaxPos | Strombegrenzung - max. positiv
3223.00h | CURR_LimitMaxNeg | Strombegrenzung - max. negativ
3224.00h | CURR_DynLimitMode | Dynamische Strombegrenzung - Mode
3224.01h | CURR_DynLimitPeak | Dynamische Strombegrenzung - Spitzenstrom
3224.02h | CURR_DynLimitCont | Dynamische Strombegrenzung - Dauerstrom
3224.03h | CURR_DynLimitTime | Dynamische Strombegrenzung - Zeit
3224.12h | CURR_ActDynLimitCurrent | Dynamische Strombegrenzung I*t - aktuelle Strombegrenzung
3240.00h | CURR_Acc_dI | Strombeschleunigung - delta I
3241.00h | CURR_Acc_dT | Strombeschleunigung - delta T
3242.00h | CURR_Dec_dI | Stromverzögerung - delta I
3243.00h | CURR_Dec_dT | Stromverzögerung - delta T
3244.00h | CURR_Dec_QuickStop_dI | Stromschnellhaltverzögerung - delta I
3245.00h | CURR_Dec_QuickStop_dT | Stromschnellhaltverzögerung - delta T
324C.00h | CURR_RampType | Stromrampengenerator - Rampentyp
324D.00h | CURR_RampState | Stromrampengenerator - Zustand
3250.00h | CURR_Feedback | Stromregler - Rückführung
3250.03h | CURR_Feedback_Reference | Stromregler - Rückführungsbezugswert
3260.00h | CURR_ActualTargetCurrent | Aktueller Stromsollwert
3261.00h | CURR_ActualCommandCurrent | Aktueller Kommandostrom
3262.00h | CURR_ActualCurrent | Aktueller Motorstrom
3262.01h | CURR_ActualAvgCurrent | Aktueller gefilterter Motorstrom
3262.04h | CURR_ActualPosMaxCurr | Maximaler positiver Motorstrom
3262.05h | CURR_ActualNegMaxCurr | Maximaler negativer Motorstrom
3263.00h | CURR_ActualFollowingError | Aktueller Stromfehler
32A0.00h | CURR_SampleTime | Stromregler - Abtastrate
32A0.08h | CURR_SamplePoint | Stromregler - Abtastzeitpunkt Korrektur
32A0.09h | CURR_SampleRlCorr | Stromregler - R/L Korrektur
32A0.10h | CURR_ActAvgCurrFilterLevel | Filterstufe für Aktueller gefilterter Motorstrom
3300.00h | VEL_DesiredValue | Drehzahlsollwert
3302.00h | VEL_ScaleNum | Drehzahlskalierungsfaktor - Zähler
3303.00h | VEL_ScaleDen | Drehzahlskalierungsfaktor - Nenner
3304.00h | VEL_DesiredValue_Source | Drehzahlsollwertquelle
3305.00h | VEL_DesiredValue_Reference | Drehzahlbezugswert für analogen Eingang
330A.00h | VEL_DimensionNum | Drehzahldimensionsfaktor - Zähler
330B.00h | VEL_DimensionDen | Drehzahldimensionsfaktor - Nenner
3310.00h | VEL_Kp | PID-Regler - Proportionalfaktor
3311.00h | VEL_Ki | PID-Regler - Integralfaktor
3312.00h | VEL_Kd | PID-Regler - Differential faktor
3313.00h | VEL_ILimit | PID-Regler - Integrationslimit
3314.00h | VEL_Kvff | PID-Regler - Geschwindigkeitsvorsteuerung
3315.00h | VEL_Kaff | PID-Regler - Beschleunigungsvorsteuerung
3317.00h | VEL_KIxR | IxR Faktor
3318.00h | VEL_KdSampleTime | PID-Regler - Aktualisierungszeit für Differentialfaktor
3321.00h | VEL_LimitMaxPos | Drehzahlbegrenzung - max. positiv
3323.00h | VEL_LimitMaxNeg | Drehzahlbegrenzung - max. negativ
3340.00h | VEL_Acc_dV | Drehzahlbeschleunigung - delta V
3341.00h | VEL_Acc_dT | Drehzahlbeschleunigung - delta T
3342.00h | VEL_Dec_dV | Drehzahlverzögerung - delta V
3343.00h | VEL_Dec_dT | Drehzahlverzögerung - delta T
3344.00h | VEL_Dec_QuickStop_dV | QuickStop-Drehzahlverzögerung - delta V
3345.00h | VEL_Dec_QuickStop_dT | QuickStop-Drehzahlverzögerung - delta T
334C.00h | VEL_RampType | Rampengenerator - Rampentyp
334D.00h | VEL_RampState | Rampengenerator - Zustand
3350.00h | VEL_Feedback | Drehzahlrückführung
3350.03h | VEL_Feedback_Reference | Drehzahlrückführung - Bezugswert
3360.00h | VEL_ActualTargetVel | Aktuelle Sollgeschwindigkeit
3361.00h | VEL_ActualCommandVel | Aktuelle Kommandogeschwindigkeit
3362.00h | VEL_ActualVel | Aktuelle ungefilterte Geschwindigkeit
3380.00h | VEL_Acc | Drehzahlbeschleunigung in [U/min²]
3381.00h | VEL_Dec | Drehzahlverzögerung in [U/min²]
3382.00h | VEL_Dec_QuickStop | Drehzahl-QuickStop-Verzögerung in [U/min²]
33A0.00h | VEL_SampleTime | Drehzahl-/Positionerregler - Abtastrate
33C0.00h | VEL_BlockageGuarding_ConfigFlags | Blockierungsüberwachung - Konfigurationsflags
33C0.01h | VEL_BlockageGuarding_VelLow | Blockierungsüberwachung - untere Drehzahl
33C0.02h | VEL_BlockageGuarding_VelHigh | Blockierungsüberwachung - obere Drehzahl
33C0.03h | VEL_BlockageGuarding_Time | Blockierungsüberwachung - Zeit
33C0.04h | VEL_BlockageGuarding_Status | Blockierungsüberwachung - Status
3500.00h | SVEL_DesiredValue | SVel Sollwert
3502.00h | SVEL_ScaleNum | SVel Skalierungsfaktor - Zähler
3503.00h | SVEL_ScaleDen | SVel Skalierungsfaktor - Nenner
3504.00h | SVEL_DesiredValue_Source | SVel Sollwertquelle
3505.00h | SVEL_DesiredValue_Reference | SVel Bezugswert für analogen Eingang
3510.00h | SVEL_Kp | SVel PI-Regler - Proportionalfaktor
3511.00h | SVEL_Ki | SVel PI-Regler - Integralfaktor
3517.00h | SVEL_KIxR | SVel IxR Faktor
3521.00h | SVEL_LimitMaxPos | SDrehzahlbegrenzung - max. positiv
3523.00h | SVEL_LimitMaxNeg | SDrehzahlbegrenzung - max. negativ
3550.00h | SVEL_Feedback | SVel Rückführung
3560.00h | SVEL_ActualTargetVel | SVel - Aktuelle Sollgeschwindigkeit
3561.00h | SVEL_ActualCommandVel | SVel - Aktuelle Kommandogeschwindigkeit
35A1.00h | SVEL_MaxVelRange | SVel max. Drehzahlbereich
3708.00h | POS_Mode | Pos Betriebsart
3709.00h | POS_ConfigFlags | Pos Konfiguration
3720.00h | POS_PositionLimitMin | Positionsbegrenzung - minimum
3720.01h | POS_PositionLimitMax | Positionsbegrenzung - maximum
3732.00h | POS_FollowingErrorWindow | Positionsschleppfehler - Fenster
3732.01h | POS_FollowingErrorWindowDyn | Positionsschleppfehler - Fenster, Dynamisch
3733.00h | POS_FollowingErrorTime | Positionsschleppfehler - Zeit
3733.01h | POS_FollowingErrorTimeDyn | Positionsschleppfehler - Zeit, Dynamisch
3734.00h | POS_FollowingErrorLimit | Positionsschleppfehler - Begrenzung
373A.00h | POS_PositionWindow | Positionierfenster
373B.00h | POS_PositionWindowTime | Positionierfenster - Zeit
373B.01h | POS_PositionWindowTimeout | Positionierfenster - Timeout
373C.00h | POS_ReachedConfigFlags | Position erreicht - Konfigurationsbits
373D.00h | POS_DeadWindowOff | Positionierfenster - Endstufe sperren
373D.01h | POS_DeadWindowOn | Positionierfenster - Endstufe aktivieren
373E.00h | POS_DeadTimeOff | Positionierfenster Zeit - Endstufe sperren
373E.01h | POS_DeadTimeOn | Positionierfenster Zeit - Endstufe aktivieren
373F.00h | POS_DeadVel | Positionierfenster - Geschwindigkeit
374C.00h | POS_RampType | Pos. Rampengenerator - Rampentyp
374C.11h | POS_Ramp_JerkFactorAcc | Verschliff Beschleunigung
374C.12h | POS_Ramp_JerkFactorDec | Verschliff Bremsrampe
374D.00h | POS_RampState | Pos. Rampengenerator - Zustand
3760.00h | POS_ActualTargetPosition | Aktuelle Zielposition
3761.00h | POS_ActualCommandPosition | Aktuelle Kommandoposition
3761.01h | POS_ActualCommandPositionReg | Aktuelle interne Kommandoposition
3762.00h | POS_ActualPosition | Aktuelle Position (Istposition)
3762.01h | POS_ActualPositionReg | Aktuelle interne Position (Istposition)
3763.00h | POS_ActualFollowingError | Aktueller Positionsschleppabstand
3763.01h | POS_ActualFollowingErrorReg | Aktueller interner Positionsschleppabstand
3764.00h | POS_ActualIndexPosition | Aktuelle Indexposition
3765.00h | POS_ActualOrigin | Position Ursprung
3770.00h | POS_ActualTargetPosition_cnt | Aktuelle Zielposition in Inkrementen
3771.00h | POS_ActualCommandPosition_cnt | Aktuelle Kommandoposition in Inkrementen
3772.00h | POS_ActualPosition_cnt | Aktuelle Position in Inkrementen
3773.00h | POS_ActualFollowingError_cnt | Aktueller Positionsschleppabstand in Inkrementen
3774.00h | POS_ActualIndexPosition_cnt | Aktuelle Indexposition in Inkrementen
3775.00h | POS_ActualOrigin_cnt | Position Ursprung in Inkrementen
3790.00h | POS_Mova | Absolute Positionierung
3791.00h | POS_Movr | Relative Positionierung
37A4.01h | POS_GearBacklashComp_Path | Getriebespielausgleich - Strecke
37A4.02h | POS_GearBacklashComp_Vel | Getriebespielausgleich - Drehzahl
37B0.00h | POS_HomingCmd | Referenzfahrt - Kommando
37B1.00h | POS_HomingStatus | Referenzfahrt - Status
37B1.01h | POS_HomingError | Referenzfahrt - Error
37B1.02h | POS_HomingState | Referenzfahrt - Zustand
37B1.03h | POS_HomingRefToIndex | Referenzfahrt - Strecke Referenzschalter zu Index
37B1.04h | POS_HomingRefToIndex_cnt | Referenzfahrt - Strecke Referenzschalter zu Index in Ink.
37B2.00h | POS_HomingMethod | Referenzfahrt - Methode
37B3.00h | POS_HomingOffset | Referenzfahrt - Referenzoffset
37B4.00h | POS_HomingVelSwitch | Referenzfahrt - Geschwindigkeit für Schaltersuche
37B4.01h | POS_HomingVelZero | Referenzfahrt - Geschwindigkeit für Nullpunktanfahrt
37B5.00h | POS_HomingAcc | Referenzfahrt - Beschleunigung
37B5.01h | POS_HomingDec | Referenzfahrt - Verzögerung
37B6.00h | POS_HomingMaxIndexPath | Referenzfahrt - max. Strecke für Indexsuche
37B6.01h | POS_HomingIndexOffset | Referenzfahrt - Indexoffset
37B7.00h | POS_HomingBlock_ConfigFlags | Referenzfahrt auf Block - Konfiguration
37B7.01h | POS_HomingBlock_VelLow | Referenzfahrt auf Block - untere Drehzahl
37B7.02h | POS_HomingBlock_VelHigh | Referenzfahrt auf Block - obere Drehzahl
37B7.03h | POS_HomingBlock_Time | Referenzfahrt auf Block - Zeit
37B7.04h | POS_HomingBlock_FollowingErrorWindow | Referenzfahrt auf Block - Positionsschleppfehlerfenster
37C1.00h | POS_InterpStatus | Interpolation - Status
37C2.00h | POS_InterpMethod | Interpolation - Methode
37C2.01h | POS_InterpTime | Interpolation - Zeit
37C2.02h | POS_InterpReference | Interpolation - Referenz
37C5.00h | POS_InterpBufConfig | Interpolation - Bufferkonfiguration
37C6.00h | POS_InterpData | Interpolation - Daten
37C7.00h | POS_InterpActualTargetPosition | Interpolation - Aktuelle Zielposition
37C7.01h | POS_InterpActualCommandPosition | Interpolation - Aktuelle Kommandoposition
37C7.02h | POS_InterpActualPosition | Interpolation - Aktuelle Position
37C8.00h | POS_ModuloMethod | Modulomethode
37C9.00h | POS_ModuloValue | Modulowert
3830.00h | PWM_Frequency | PWM Frequenz
3830.01h | PWM_Mode | PWM Modus
3830.62h | PWM_ActualPwm_oo | Aktuelle PWM des Geräts
3850.00h | SYS_Clock | System Clock
3850.02h | SYS_Timer_2ms | System Timer 2ms
3900.00h | MOTOR_Type | Motortyp
3901.00h | MOTOR_Nn | Motornenndrehzahl
3902.00h | MOTOR_Un | Motornennspannung
3910.00h | MOTOR_PolN | Motorpolanzahl
3911.00h | MOTOR_Polarity | Motorpolarität
3913.00h | MOTOR_CommutationType | Kommutierungsart des Motors
3913.07h | MOTOR_Commutation_Polarity | Kommutierungspolarität des Motors
3913.10h | MOTOR_Commutation_Referencing | Encoderkommutierungsabgleich
3913.11h | MOTOR_Commutation_ReferencingMode | Encoderkommutierungsabgleichs Methode
3913.20h | PreCommutationConfig | Vorkommutierung
3913.21h | PreCommutationVel | Vorkommutierung Bezugsdrehzahl
3913.23h | PreCommutationAngle | Vorkommutierungswinkel
3940.00h | MOTOR_HALL_Type | Hallsensortyp
3944.01h | MOTOR_HALL_Diag_ErrCnt1 | Halldiagnostik - falsche Pulse
3944.02h | MOTOR_HALL_Diag_ErrCnt2 | Halldiagnostik - falsche Reihenfolge
3946.00h | MOTOR_HALL_Tuning_Sector0 | Halltuning - Sektor 0
3946.01h | MOTOR_HALL_Tuning_Sector1 | Halltuning - Sektor 1
3946.02h | MOTOR_HALL_Tuning_Sector2 | Halltuning - Sektor 2
3946.03h | MOTOR_HALL_Tuning_Sector3 | Halltuning - Sektor 3
3946.04h | MOTOR_HALL_Tuning_Sector4 | Halltuning - Sektor 4
3946.05h | MOTOR_HALL_Tuning_Sector5 | Halltuning - Sektor 5
3946.08h | MOTOR_HALL_Tuning_WrEnable | Halltuning - Schreibfreigabe
3949.00h | MOTOR_HALL_DoutPulses_Mode | Hallpulse - Konfigurationsflags
3949.01h | MOTOR_HALL_DoutPulses_PosDirMask | Hallpulse - Bitmaske für positive Richtung
3949.02h | MOTOR_HALL_DoutPulses_NegDirMask | Hallpulse - Bitmaske für negative Richtung
3949.03h | MOTOR_HALL_DoutPulses_ModuloValue | Hallpulse - Modulowert
394A.00h | MOTOR_HALL_ActualPosition | Aktuelle Hallposition
3961.22h | MOTOR_ENC_INC2_Config_McSpiAddr | mcSPI-IC2 Encoder Konfiguration - SPI Adresse
3962.00h | MOTOR_ENC_Resolution | Encoderauflösung in Inkrementen
3962.20h | MOTOR_ENC_INC2_Resolution_Cnt | mcSPI-IC2 Encoderauflösung in Inkrementen
3963.00h | MOTOR_ENC_Resolution_lines | Encoderauflösung in Encoderstrichen
3964.00h | MOTOR_ENC_Diag_Enable | Encoderüberwachung - Aktivieren
3964.01h | MOTOR_ENC_Diag_Status | Encoderüberwachung - Status
396A.00h | MOTOR_ENC_ActualPosition | Aktuelle Encoderposition
396A.20h | MOTOR_ENC_INC2_ActualPosition | Aktuelle mcSPI-IC2 Encoderposition
396B.00h | MOTOR_ENC_ActualIndexPosition | Aktuelle Encoder Indexposition
396C.00h | MOTOR_ENC_ActualIndexCount | Anzahl der Indexpulse vom Encoder
3970.00h | MOTOR_ENC_SSI_Enable | SSI Absolutencoder - Freigabe
3970.01h | MOTOR_ENC_SSI_Status | SSI Absolutencoder - Status
3970.08h | MOTOR_ENC_SSI_Save | SSI Absolutencoder - Speichern
3971.00h | MOTOR_ENC_SSI_Code | SSI Absolutencoder - Code
3971.01h | MOTOR_ENC_SSI_SignificantBits | SSI Absolutencoder - Signifikante Bits
3971.02h | MOTOR_ENC_SSI_Bits | SSI Absolutencoder - Bits
3972.00h | MOTOR_ENC_SSI_Resolution | SSI Absolutencoder - Single Turn Auflösung in Inkrementen
397A.00h | MOTOR_ENC_SSI_ActualPosition | SSI Absolutencoder - Aktuelle Position (auf 32 Bit erweitert)
397A.02h | MOTOR_ENC_SSI_ActualSsiDirectPosition | SSI Absolutencoder - Direkte Position
398F.00h | HENC_Cmd | HALL Encoder - Kommando
398F.08h | HENC_ReferencePos | HALL Encoder - Referenz Position
398F.0Ah | HENC_Hysteresis | HALL Encoder - Hysterese
3990.08h | MOTOR_ENC_VIRT0_RawPosBits | Virtueller Encoder 0 - Bits
3990.10h | MOTOR_ENC_VIRT0_RawPos | Virtueller Encoder 0 - Raw Position
3990.11h | MOTOR_ENC_VIRT0_RawIndexPos | Virtueller Encoder 0 - Raw Index Position
3990.20h | MOTOR_ENC_VIRT0_Resolution_Cnt | Virtueller Encoder 0 - Auflösung in Inkrementen
3990.A0h | MOTOR_ENC_VIRT0_ActualPosition | Virtueller Encoder 0 - Aktuelle Position
3990.B0h | MOTOR_ENC_VIRT0_ActualIndexPosition | Virtueller Encoder 0 - Aktuelle Index Position
3990.C0h | MOTOR_ENC_VIRT0_ActualIndexCount | Virtueller Encoder 0 - Index Zähler
3991.08h | MOTOR_ENC_VIRT1_RawPosBits | Virtueller Encoder 1 - Bits
3991.10h | MOTOR_ENC_VIRT1_RawPos | Virtueller Encoder 1 - Raw Position
3991.11h | MOTOR_ENC_VIRT1_RawIndexPos | Virtueller Encoder 1 - Raw Index Position
3991.20h | MOTOR_ENC_VIRT1_Resolution_Cnt | Virtueller Encoder 1 - Auflösung in Inkrementen
3991.A0h | MOTOR_ENC_VIRT1_ActualPosition | Virtueller Encoder 1 - Aktuelle Position
3991.B0h | MOTOR_ENC_VIRT1_ActualIndexPosition | Virtueller Encoder 1 - Aktuelle Index Position
3991.C0h | MOTOR_ENC_VIRT1_ActualIndexCount | Virtueller Encoder 1 - Index Zähler
39A0.00h | MOTOR_BrakeManagement_Config | Bremsenmanagement - Konfiguration
39A0.01h | MOTOR_BrakeManagement_Status | Bremsenmanagement - Status
39A0.06h | MOTOR_BrakeManagement_VelMin | Bremsenmanagement - Drehzahlschwelle
39A0.07h | MOTOR_BrakeManagement_Din | Bremsenmanagement - Bremseingang
39A0.08h | MOTOR_BrakeManagement_Dout | Bremsenmanagement - Bremsausgang
39A0.09h | MOTOR_BrakeManagement_UpBrakeOff | Bremsenmanagement - Spannungsschwelle OFF
39A0.0Ah | MOTOR_BrakeManagement_UpBrakeOn | Bremsenmanagement - Spannungsschwelle ON
39A0.10h | MOTOR_BrakeManagement_OffDelay1 | Bremsenmanagement - AUS-Zeitverzögerung1
39A0.11h | MOTOR_BrakeManagement_OffDelay2 | Bremsenmanagement - AUS-Zeitverzögerung2
39A0.12h | MOTOR_BrakeManagement_OnDelay1 | Bremsenmanagement - EIN-Zeitverzögerung1
39A0.13h | MOTOR_BrakeManagement_OnDelay2 | Bremsenmanagement - EIN-Zeitverzögerung2
39A0.18h | MOTOR_BrakeManagement_OffOrConditionFlags | Bremsenmanagement - AUS-ODER-Bedingung
39A0.19h | MOTOR_BrakeManagement_OffAndConditionFlags | Bremsenmanagement - AUS-UND-Bedingung
39A0.1Ah | MOTOR_BrakeManagement_OnOrConditionFlags | Bremsenmanagement - EIN-ODER-Bedingung
39A0.1Bh | MOTOR_BrakeManagement_OnAndConditionFlags | Bremsenmanagement - EIN-UND-Bedingung
39A0.40h | MOTOR_BrakeManagement_CurrentControl_PWM | Bremsmanagement - PWM-Bremse Stromabsenkung
39A0.42h | MOTOR_BrakeManagement_CurrentControl_Time_ms | Bremsmanagement - PWM-Bremse Zeit
39A2.00h | MOTOR_QuasiAbsEncoder_ConfigFlags | Quasi-Absolutencoder - Konfigurationsflag
39A2.01h | MOTOR_QuasiAbsEncoder_Status | Quasi-Absolutencoder - Status
39A2.02h | MOTOR_QuasiAbsEncoder_Error | Quasi-Absolutencoder - Fehler
39A2.07h | MOTOR_QuasiAbsEncoder_Tolerance_cnt | Quasi-Absolutencoder - Toleranz
39A2.08h | MOTOR_QuasiAbsEncoder_Action | Quasi-Absolutencoder - Kommando
39A2.10h | MOTOR_QuasiAbsEncoder_DeltaPos | Quasi-Absolutencoder - Korrekturabstand
39A2.20h | MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe | Quasi-Absolutencoder - minimale Spannung zum Positionspeichern
39A2.21h | MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe | Quasi-Absolutencoder - maximale Spannung zum Positionspeichern
39A2.31h | MOTOR_QuasiAbsEncoder_SavedPosition | Quasi-Absolutencoder - Gespeicherte Position
39A2.32h | MOTOR_QuasiAbsEncoder_SavedIndexPosition | Quasi-Absolutencoder - Gespeicherte Indexposition
39A2.33h | MOTOR_QuasiAbsEncoder_SavesCounter | Quasi-Absolutencoder - Speicherzähler
3A02.00h | MEASUREMENT_VelTime_ms | Zeitspanne für Geschwindigkeitsmessung
3A04.00h | MEASUREMENT_Vel_cnt | Gemessene Geschwindigkeit in Inkrementen
3A04.01h | MEASUREMENT_Vel_rpm | Gemessene Geschwindigkeit in [U/min]
3B00.00h | FCT_Control | Faktorgruppe - Control
3B00.01h | FCT_Precision | Faktorgruppe - Precision
3B10.00h | FCT_Polarity | Faktorgruppe - Polarität
3B11.00h | FCT_PosNotationIndex | Faktorgruppe - Position-Einheitenindex
3B12.00h | FCT_PosDimIndex | Faktorgruppe - Positions-Größenindex
3B13.00h | FCT_VelNotationIndex | Faktorgruppe - Geschwindigkeit-Einheitenindex
3B14.00h | FCT_VelDimIndex | Faktorgruppe - Geschwindigkeits-Größenindex
3B15.00h | FCT_AccNotationIndex | Faktorgruppe - Beschleinigung-Einheitenindex
3B16.00h | FCT_AccDimIndex | Faktorgruppe - Beschleunigungs-Größenindex
3B16.01h | FCT_AccFactorNum | Faktorgruppe - Beschleunigungsskalierung-Zähler
3B16.02h | FCT_AccFactorDen | Faktorgruppe - Beschleunigungsskalierung-Nenner
3B17.00h | FCT_PosScaleNum | Faktorgruppe - Positionsskalierung-Zähler
3B17.01h | FCT_PosScaleDen | Faktorgruppe - Positionsskalierung-Nenner
3B18.00h | FCT_VelScaleNum | Faktorgruppe - Geschwindigkeitsskalierung-Zähler
3B18.01h | FCT_VelScaleDen | Faktorgruppe - Geschwindigkeitsskalierung-Nenner
3B19.00h | FCT_GearRatio_MotorRev | Faktorgruppe - Getriebeübersetzung-Motorwelleumdrehungen
3B19.01h | FCT_GearRatio_ShaftRev | Faktorgruppe - Getriebeübersetzung-Wellenumdrehungen
3B1A.00h | FCT_FeedConstant_Feed | Faktorgruppe - Vorschubkonstante-Vorschub
3B1A.01h | FCT_FeedConstant_ShaftRev | Faktorgruppe - Vorschubkonstante-Wellenumdrehung
3CE0.00h | COM_ASI_Cmd | ASI-Kommando
3CE0.06h | COM_ASI_Baudrate | ASI-Baudrate
3D14.00h | TOOL_Master_Control | Master-Tool - Konfiguration
3D14.10h | TOOL_Master_ParSource | Master-Tool - Rückführungs-Parameter
3D14.12h | TOOL_Master_ScaleNum | Master-Tool - Skalierung Zähler
3D14.13h | TOOL_Master_ScaleDen | Master-Tool - Skalierung Nenner
3D14.14h | TOOL_Master_MaxVel | Master-Tool - Maximale Geschwindigkeit
3D14.31h | TOOL_Master_FilterKp | Master-Tool - Filter Proportionalfaktor
3F00.00h | DIAG_Enable | Diagnostik - Schreibfreigabe
3FA0.00h | DIAG_SIM_Control | Diagnostik - Aktivierung der Simulation der E/A's
3FA1.00h | DIAG_SIM_AIN_Mask | Diagnostik - Ain-Simulation - Maske
3FA2.00h | DIAG_SIM_AIN_ValueAin0 | Diagnostik - Ain-Simulation - Wert von Ain0
3FA2.01h | DIAG_SIM_AIN_ValueAin1 | Diagnostik - Ain-Simulation - Wert von Ain1
3FA3.00h | DIAG_SIM_DIN_Mask | Diagnostik - Din-Simulation - Maske
3FA4.00h | DIAG_SIM_DIN_Value | Diagnostik - Din-Simulation - Wert der digitalen Eingänge


3090.07h Einschaltschwelle für Ballastwiderstand

Name | DEV_Chopper_UpOn
Bezeichnung | Einschaltschwelle für Ballastwiderstand
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 655350]
Defaultwert | 52000
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.93.00.D3
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter legt die Einschaltschwelle für den Ballastwiderstand in [mV] fest. Die Hysterese beträgt ca. 1V.
Der Wert 0 deaktiviert den Bremschopper.
Weitere wählbare Schwellen sind im Wertebereich angegeben. Wird ein davon abweichender Wert angegeben, so wird der nächst kleinere wählbare Wert als Schwelle gesetzt.
Bei einem Wert > 60000mV wird die Einschaltschwelle auf 60000mV gesetzt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                     # NodeId = 1

d.SdoWr(0x3090, 0x07, 31200)                   # Einschaltschwelle des Ballastwiderstandes = 31,2 V


3091.01h Temperatur - Schwelle für Warnung Endstufe

Name | DEV_HeatSink_Temp_Warning
Bezeichnung | Temperatur - Schwelle für Warnung Endstufe
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | [0.1°C]
Betriebsart | Alle
Verfügbar ab | 1.93.00.D3
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter legt den Grenzwert der Temperatur fest, ab welchem eine Warnung generiert wird. Wenn die Temperatur diesen Wert überschreitet, generiert der Antriebsregler in eine Warnung und setzt das Bit STAT_Warning im Statusregister DEV_Status.
Der Wert dieses Parameters kann nur in 0,1 [C] Schritten angegeben werden.


3830.00h PWM Frequenz

Name | PWM_Frequency
Bezeichnung | PWM Frequenz
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {32000}
Defaultwert | 32000
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.07
Geräte | Alle
PLC Funktion | PwmFreq(value)
Querverweis | -

Beschreibung

Mit diesem Parameter kann die PWM-Frequenz verstellt werden.

Eine PWM-Frequenz 200 kHz ist nur bei Geräten der Serie EDC-E6x möglich.

Achtung
Je kleiner die PWM-Frequenz und die Anschlußinduktivität des Motors, desto wärmer (größere Verluste) wird der Motor im Stillstand.

Beispiel

# -*- coding: iso-8859-1 -*-
   from mc.dsa import *

   d = Dsa(1)

   # Ablesen der aktuellen Parameter
   print "PWM Frequenz: ", d.SdoRd(0x3830, 0x00)   # PWM_Frequency
   print "PWM Modus: ", d.SdoRd(0x3830, 0x01)      # PWM_Mode

   # Schreiben der neuen Parameter
   d.SdoWr(0x3830, 0x00, 25000)                    # PWM_Frequency
   d.SdoWr(0x3830, 0x01, 1)                        # PWM_Mode


3830.01h PWM Modus

Name | PWM_Mode
Bezeichnung | PWM Modus
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {0}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.07
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Mit dem Parameter kann der Modus vom PWM-Signal festgelegt werden.

Parameterwerte:
Wert | Name | Beschreibung
0 | PWM_Symetric | Im Stillstand ohne Belastung beträgt das PWM-Signal 50%. Das entspricht einer mittleren Spannung von 0 Volt.
1 | PWM_Asymetric | Im Stillstand ohne Belastung beträgt das PWM-Signal 0%. Je nach Drehrichtung wird das relative PWM-Signal "positiv" oder "negativ". Dieser Modus ist, wegen kleineren Verlusten im Stillstand, besonders für Motoren mit kleiner Anschlußinduktivität geeignet.

Beispiel

# -*- coding: iso-8859-1 -*-
   from mc.dsa import *

   d = Dsa(1)

   # Ablesen der aktuellen Parameter
   print "PWM Frequenz: ", d.SdoRd(0x3830, 0x00)   # PWM_Frequency
   print "PWM Modus: ", d.SdoRd(0x3830, 0x01)      # PWM_Mode

   # Schreiben der neuen Parameter
   d.SdoWr(0x3830, 0x00, 25000)                    # PWM_Frequency
   d.SdoWr(0x3830, 0x01, 1)                        # PWM_Mode


3913.00h Kommutierungsart des Motors

Name | MOTOR_CommutationType
Bezeichnung | Kommutierungsart des Motors
Datentyp | uint8
Zugriff | nur Lesen
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {00h, 10h}
Defaultwert | 00h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.91.00.27
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_Commutation_Referencing, MOTOR_Commutation_Polarity

Beschreibung

Mit diesem Parameter kann die Kommutierungsart des Motors geändert werden.

Bemerkung:
  • Dieser Parameter kann nur im gesperrten Betriebszustand (DEV_Enable = 0) geändert werden. Sonst werden die Änderungen des Parameters nicht angenommen, bzw. haben keine Wirkung.

Informationen zum Kommutierungsschema sind in der Applikation Note AN_CommutationScheme.
Parameterwerte:
Wert | Beschreibung
0 | Blockkommutierung
0x10 | Encoder Blockkommutierung

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3911, 0x00, 1<<3)               # MOTOR_Polarity

d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN
d.SdoWr(0x3962, 0x00, 2000)               # MOTOR_ENC_Resolution [inc]

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback - Ink. Drehgeber
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - Ink. Drehgeber

d.SdoWr(0x3221, 0x00, 3000)               # CURR_LimitMaxPos [mA]
d.SdoWr(0x3223, 0x00, 3000)               # CURR_LimitMaxNeg [mA]

if d.VersionSw() >= 0x1910027:
   d.SdoWr(0x3913, 0x00, 0x10)            # MOTOR_CommutationType - BlockEnc

if d.VersionSw() >= 0x1910034:            # ab V1.91.00.34 ist MOTOR_Commutation_Polarity vorhanden.
   d.SdoWr(0x3913, 0x07, 1)               # MOTOR_Commutation_Polarity => auf 1 setzen falls Motor auf der Stelle steht und brummt

d.SdoWr(0x3913, 0x10, 1000, timeout=3500) # MOTOR_Commutation_Referencing
                                          # Der Encoderabgleich mit dem Strom 4000mA

d.SdoWr(0x3350, 0x00, 0x96A)              # VEL_Feedback - Ink. Drehgeber
d.SdoWr(0x3550, 0x00, 0x96A)              # SVEL_Feedback - Ink. Drehgeber

d.SdoWr(0x3003, 0x00, 3)                  # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3004, 0x00, 1)                  # DEV_Enable - Freigeben
d.SdoWr(0x3300, 0x00, 1000)               # VEL_DesiredValue [rpm]


Inhalt - Parameter 3000h (DSA) - Bremsenmanagement

39A0.00h | MOTOR_BrakeManagement_Config | Bremsenmanagement - Konfiguration
39A0.01h | MOTOR_BrakeManagement_Status | Bremsenmanagement - Status
39A0.06h | MOTOR_BrakeManagement_VelMin | Bremsenmanagement - Drehzahlschwelle
39A0.07h | MOTOR_BrakeManagement_Din | Bremsenmanagement - Bremseingang
39A0.08h | MOTOR_BrakeManagement_Dout | Bremsenmanagement - Bremsausgang
39A0.09h | MOTOR_BrakeManagement_UpBrakeOff | Bremsenmanagement - Spannungsschwelle OFF
39A0.0Ah | MOTOR_BrakeManagement_UpBrakeOn | Bremsenmanagement - Spannungsschwelle ON
39A0.10h | MOTOR_BrakeManagement_OffDelay1 | Bremsenmanagement - AUS-Zeitverzögerung1
39A0.11h | MOTOR_BrakeManagement_OffDelay2 | Bremsenmanagement - AUS-Zeitverzögerung2
39A0.12h | MOTOR_BrakeManagement_OnDelay1 | Bremsenmanagement - EIN-Zeitverzögerung1
39A0.13h | MOTOR_BrakeManagement_OnDelay2 | Bremsenmanagement - EIN-Zeitverzögerung2
39A0.18h | MOTOR_BrakeManagement_OffOrConditionFlags | Bremsenmanagement - AUS-ODER-Bedingung
39A0.19h | MOTOR_BrakeManagement_OffAndConditionFlags | Bremsenmanagement - AUS-UND-Bedingung
39A0.1Ah | MOTOR_BrakeManagement_OnOrConditionFlags | Bremsenmanagement - EIN-ODER-Bedingung
39A0.1Bh | MOTOR_BrakeManagement_OnAndConditionFlags | Bremsenmanagement - EIN-UND-Bedingung
39A0.40h | MOTOR_BrakeManagement_CurrentControl_PWM | Bremsmanagement - PWM-Bremse Stromabsenkung
39A0.42h | MOTOR_BrakeManagement_CurrentControl_Time_ms | Bremsmanagement - PWM-Bremse Zeit


39A0.40h Bremsmanagement - PWM-Bremse Stromabsenkung

Name | MOTOR_BrakeManagement_CurrentControl_PWM
Bezeichnung | Bremsmanagement - PWM-Bremse Stromabsenkung
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 100]
Defaultwert | 100
Einheit | [%]
Betriebsart | Alle
Verfügbar ab | 1.93.00.EE
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_BrakeManagement_CurrentControl_Time_ms

Beschreibung

Mit diesem Parameter kann die Ansteuerung der Bremse auf ein getaktetes Signal geändert werden. Damit können der fließende Strom und somit die Verluste in der Bremse minimiert werden.
Der Wert in diesem Parameter gibt den Strom in % an, auf welchen abgesenkt werden soll. Für die korrekte Funktion muss eine Freilaufdiode am Bremsenausgang vorhanden sein. Falls die Freilaufdiode nicht im Gerät integriert ist, muss Sie extern angeschlossen werden.

Bevor die Stromabsenkung des Bremsenausgangs aktiviert wird, wird der Ausgang für eine festgelegte Zeit (MOTOR_BrakeManagement_CurrentControl_Time_ms) dauerhaft geschaltet, damit die Bremse genug Kraft aufbauen kann um sich zu lösen.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

d.SdoWr(0x39A0,0x40, 60)            # MOTOR_BrakeManagement_CurrentControl_PWM
d.SdoWr(0x39A0,0x42, 150)           # MOTOR_BrakeManagement_CurrentControl_Time_ms


39A0.42h Bremsmanagement - PWM-Bremse Zeit

Name | MOTOR_BrakeManagement_CurrentControl_Time_ms
Bezeichnung | Bremsmanagement - PWM-Bremse Zeit
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0 .. 65535]
Defaultwert | 200
Einheit | [ms]
Betriebsart | Alle
Verfügbar ab | 1.93.00.EE
Geräte | Alle
PLC Funktion | -
Querverweis | MOTOR_BrakeManagement_CurrentControl_PWM

Beschreibung

Dieser Parameter legt die Zeit in Millisekunden fest, die der Bremsenausgang geschaltet wird, bevor die Strombegrenzung aktiviert wird. Damit kann sichergestellt werden, dass die Bremse genug Kraft aufbauen kann, um sich zu lösen.
Ist der Strom, auf den abgesenkt werden soll (MOTOR_BrakeManagement_CurrentControl_PWM) auf 100% gestellt, hat dieser Parameter keine Wirkung.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                 # NodeId = 1

d.SdoWr(0x39A0,0x40, 60)            # MOTOR_BrakeManagement_CurrentControl_PWM
d.SdoWr(0x39A0,0x42, 150)           # MOTOR_BrakeManagement_CurrentControl_Time_ms


Inhalt - Parameter 6000h (DS402)

6007.00h | DS402_AbortConnectionOptionCode | Optionscode bei Abbruch der Kommunikation
6040.00h | DS402_ControlWord | Steuerwort
6041.00h | DS402_StatusWord | Statuswort
6042.00h | DS402_VL_TargetVelocity | Drehzahlsollwert
6046.00h | DS402_VL_VelocityMinMaxAmount_HighestSubindexSupported | Min/Max Drehzahl - Max Subindex des Objektes
6046.01h | DS402_VL_VelocityMinMaxAmount_MinVelocity | Minimale Drehzahl
6046.02h | DS402_VL_VelocityMinMaxAmount_MaxVelocity | Maximale Drehzahl
6048.00h | DS402_VL_VelocityAcceleration_HighestSubindexSupported | Drehzahlbeschleunigung - Max Subindex des Objektes
6048.01h | DS402_VL_VelocityAcceleration_DeltaSpeed | Drehzahlbeschleunigung - Delta Drehzahl
6048.02h | DS402_VL_VelocityAcceleration_DeltaTime | Drehzahlbeschleunigung - Delta Zeit
6049.00h | DS402_VL_VelocityDeceleration_HighestSubindexSupported | Drehzahlverzögerung - Max Subindex des Objektes
6049.01h | DS402_VL_VelocityDeceleration_DeltaSpeed | Drehzahlverzögerung - Delta Drehzahl
6049.02h | DS402_VL_VelocityDeceleration_DeltaTime | Drehzahlverzögerung - Delta Zeit
604A.00h | DS402_VL_VelocityQuickstop_HighestSubindexSupported | Drehzahl-Schnellhalt - Max Subindex des Objektes
604A.01h | DS402_VL_VelocityQuickstop_DeltaSpeed | Drehzahl-Schnellhalt - Delta Drehzahl
604A.02h | DS402_VL_VelocityQuickstop_DeltaTime | Drehzahl-Schnellhalt - Delta Zeit
604C.00h | DS402_VL_VelocityDimensionFactor_HighestSubindexSupported | Drehzahl-Dimensionfaktor - Max Subindex des Objektes
604C.01h | DS402_VL_VelocityDimensionFactor_Numerator | Drehzahl-Dimensionfaktor - Zähler
604C.02h | DS402_VL_VelocityDimensionFactor_Denominator | Drehzahl-Dimensionfaktor - Nenner
6060.00h | DS402_ModesOfOperation | Betriebsart
6061.00h | DS402_ModesOfOperationDisplay | Betriebsart-Anzeige
6062.00h | DS402_PP_PositionDemandValue | Positionssollwert
6063.00h | DS402_PP_PositionActualValueInCounts | Aktuelle Position in Inkrementen
6064.00h | DS402_PP_PositionActualValue | Aktuelle Position
6065.00h | DS402_PP_FollowingErrorWindow | Positionsschleppfehler - Fenster
6067.00h | DS402_PP_PositionWindow | Positionierfenster
6068.00h | DS402_PP_PositionWindowTime | Positionierfenster - Zeit
6071.00h | DS402_TQ_TargetTorque | Zieldrehmoment
6072.00h | DS402_TQ_MaxTorque | Maximales Drehmoment
6075.00h | DS402_TQ_MotorRatedCurrent | Motornennstrom
6077.00h | DS402_TQ_TorqueActualValue | Aktuelles Drehmoment
6078.00h | DS402_TQ_CurrentActualValue | Aktueller Motorstrom
6079.00h | DS402_TQ_DCLinkCircuitVoltage | Leistungsspannung
607A.00h | DS402_PP_TargetPosition | Zielposition
607C.00h | DS402_HM_HomeOffset | Referenzoffset
607D.00h | DS402_PP_SoftwareLimitPosition_HighestSubindexSupported | Software-Positionsbegrenzung - Max Subindex des Objektes
607D.01h | DS402_PP_SoftwareLimitPosition_MinPositionLimit | Software-Positionsbegrenzung - minimum
607D.02h | DS402_PP_SoftwareLimitPosition_MaxPositionLimit | Software-Positionsbegrenzung - maximum
607E.00h | DS402_FG_Polarity | Polarität
607F.00h | DS402_PP_MaxProfileVelocity | Drehzahlbegrenzung
6081.00h | DS402_PP_ProfileVelocity | Drehzahlsollwert
6083.00h | DS402_PP_ProfileAcceleration | Drehzahlbeschleunigung
6084.00h | DS402_PP_ProfileDeceleration | Drehzahlverzögerung
6085.00h | DS402_PP_QuickstopDeceleration | Drehzahl-Quickstop-Verzögerung
6086.00h | DS402_PP_MotionProfileType | Drehzahl - Rampentyp
6087.00h | DS402_TQ_TorqueSlope | Beschleunigung-Moment
6088.00h | DS402_TQ_TorqueProfileType | Strom - Rampentyp
6089.00h | DS402_PP_PositionNotationIndex | Position - Einheitenindex
608A.00h | DS402_PP_PositionDimensionIndex | Positions-Größenindex
608B.00h | DS402_PP_VelocityNotationIndex | Geschwindigkeit - Einheitenindex
608C.00h | DS402_PP_VelocityDimensionIndex | Geschwindigkeits-Größenindex
608D.00h | DS402_PP_AccelerationNotationIndex | Beschleinigung-Einheitenindex
608E.00h | DS402_PP_AccelerationDimensionIndex | Beschleunigungs-Größenindex
608F.00h | DS402_FG_PositionEncoderResolution_HighestSubindexSupported | Positionsgeber-Auflösung - Max Subindex des Objektes
608F.01h | DS402_FG_PositionEncoderResolution_EncoderIncrements | Positionsgeber-Auflösung - Encoderauflösung
608F.02h | DS402_FG_PositionEncoderResolution_MotorShaftRevolutions | Positionsgeber-Auflösung - Motorwelleumdrehungen
6090.00h | DS402_FG_VelocityEncoderResolution_HighestSubindexSupported | Drehzahlgeber-Auflösung - Max Subindex des Objektes
6090.01h | DS402_FG_VelocityEncoderResolution_EncoderIncrements | Drehzahlgeber-Auflösung - Encoderauflösung
6090.02h | DS402_FG_VelocityEncoderResolution_MotorShaftRevolutions | Drehzahlgeber-Auflösung - Motorwelleumdrehungen
6091.00h | DS402_FG_GearRatio_HighestSubindexSupported | Getriebeübersetzung - Max Subindex des Objektes
6091.01h | DS402_FG_GearRatio_MotorShaftRevolutions | Getriebeübersetzung - Motorwelleumdrehungen
6091.02h | DS402_FG_GearRatio_DrivingShaftRevolutions | Getriebeübersetzung - Wellenumdrehungen
6092.00h | DS402_FG_FeedConstant_HighestSubindexSupported | Vorschubkonstante - Max Subindex des Objektes
6092.01h | DS402_FG_FeedConstant_Feed | Vorschubkonstante - Vorschub
6092.02h | DS402_FG_FeedConstant_DrivingShaftRevolutions | Vorschubkonstante - Wellenumdrehungen
6098.00h | DS402_HM_HomingMethod | Referenzfahrt - Methode
6099.00h | DS402_HM_HomingSpeeds_HighestSubindexSupported | Referenzfahrt - Drehzahl - Max Subindex des Objektes
6099.01h | DS402_HM_HomingSpeeds_SpeedSwitch | Referenzfahrt - Drehzahl für Schaltersuche
6099.02h | DS402_HM_HomingSpeeds_SpeedZero | Referenzfahrt - Drehzahl für Nullpunktanfahrt
609A.00h | DS402_HM_HomingAcceleration | Referenzfahrt - Beschleunigung
60C0.00h | DS402_IP_InterpolationSubModeSelect | Interpolation - Methode
60C1.00h | DS402_IP_InterpolationDataRecord_HighestSubindexSupported | Interpolationsdatensatz - Max Subindex des Objektes
60C1.01h | DS402_IP_InterpolationDataRecord_1stSetPoint | Interpolationsdatensatz - 1.Sollwert
60C2.00h | DS402_IP_InterpolationTimePeriod_HighestSubindexSupported | Interpolationszeit - Max Subindex des Objektes
60C2.01h | DS402_IP_InterpolationTimePeriod_Value | Interpolationszeit - Wert
60C2.02h | DS402_IP_InterpolationTimePeriod_Index | Interpolationszeit - Index
60C4.00h | DS402_IP_InterpolationDataConfiguration_HighestSubindexSupported | Interpolationskonfigurationsdaten - Max Subindex des Objektes
60C4.01h | DS402_IP_InterpolationDataConfiguration_MaximumBufferSize | Interpolationskonfigurationsdaten - Maximanle Puffergröße
60C4.02h | DS402_IP_InterpolationDataConfiguration_ActualBufferSize | Interpolationskonfigurationsdaten - Aktuelle Puffergröße
60C4.03h | DS402_IP_InterpolationDataConfiguration_BufferOrganisation | Interpolationskonfigurationsdaten - Pufferorganization
60C4.04h | DS402_IP_InterpolationDataConfiguration_BufferPosition | Interpolationskonfigurationsdaten - Pufferposition
60C4.05h | DS402_IP_InterpolationDataConfiguration_SizeOfDataRecord | Interpolationskonfigurationsdaten - Datensatzgröße
60C4.06h | DS402_IP_InterpolationDataConfiguration_BufferClear | Interpolationskonfigurationsdaten - Puffer löschen
60F4.00h | DS402_PP_FollowingErrorActualValue | Aktueller Schleppabstandsfehler
60FC.00h | DS402_PP_PositionDemandValueInCounts | Positionssollwert in Inkrementen
60FD.00h | DS402_DigitalInputs | Digitale Eingänge
60FE.00h | DS402_DigitalOutputs_HighestSubindexSupported | Digitale Ausgänge - Max Subindex des Objektes
60FE.01h | DS402_DigitalOutputs_PhysicalOutput | Digitale Ausgänge - Physische Ausgänge
60FE.02h | DS402_DigitalOutputs_BitMask | Digitale Ausgänge - Bit Maske
6402.00h | DS402_MotorType | Motortyp
6404.00h | DS402_MotorManufacturer | Motorhersteller
6405.00h | DS402_HttpMotorCatalogueAddress | Http Motorkatalogadresse
6502.00h | DS402_SupportedDriveModes | Unterstützte Betriebsarten
6503.00h | DS402_DriveCatalogueNumber | Katalognummer Antrieb


6404.00h Motorhersteller

Name | DS402_MotorManufacturer
Bezeichnung | Motorhersteller
Datentyp | visible string
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | FF.FF.FF.FF
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter enthällt den Namen des Motorherstellers. Falls noch keine Name zugewiesen wurde enthält der Parameter einen leeren String.


6405.00h Http Motorkatalogadresse

Name | DS402_HttpMotorCatalogueAddress
Bezeichnung | Http Motorkatalogadresse
Datentyp | visible string
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | FF.FF.FF.FF
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter enthält die Web-Adresse des Motor Katalogs. Falls noch keine Adresse zugewiesen wurde enthält der Parameter einen leeren String.


6503.00h Katalognummer Antrieb

Name | DS402_DriveCatalogueNumber
Bezeichnung | Katalognummer Antrieb
Datentyp | visible string
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | FF.FF.FF.FF
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter enthält die zugewiesene Kataloge Nummer des Antriebsherstellers (Typenschild Nummer).


Inhalt - Parameter 3000h (DSA)

3000.00h | DEV_Cmd | Gerätekommando
3000.01h | DEV_Cmd_ExecOnChange | Gerätekommando - Ausführbar bei Änderung
3000.02h | DEV_Cmd2 | Gerätekommando 2
3000.08h | DEV_Cmd_SetError | Gerätekommando - Fehlersetzen
3000.10h | DEV_CmdData0 | Gerätekommando - Daten 0
3000.11h | DEV_CmdData1 | Gerätekommando - Daten 1
3000.12h | DEV_CmdData2 | Gerätekommando - Daten 2
3000.20h | DEV_CmdData0_i16 | Gerätekommando - Daten 0 (int16)
3000.21h | DEV_CmdData1_i16 | Gerätekommando - Daten 1 (int16)
3000.22h | DEV_CmdData2_i16 | Gerätekommando - Daten 2 (int16)
3000.70h | DEV_CmdResult | Gerätekommando - Ergebnis
3000.81h | DEV_CmdError | Gerätekommando - Fehler
3000.83h | DEV_CmdCounter | Gerätekommando - Zähler
3001.00h | DEV_ErrorReg | Error Register
3002.00h | DEV_Status | Statusregister
3003.00h | DEV_Mode | Betriebsart
3004.00h | DEV_Enable | Betriebsfreigabe
3008.00h | DEV_ConfigErrors | Fehler Konfiguration
3010.11h | DEV_Event_Cmd1OnError | Erreigniskommando 1 - bei Fehlern
3010.12h | DEV_Event_Cmd2OnError | Erreigniskommando 2 - bei Fehlern
3010.13h | DEV_Event_Cmd3OnError | Erreigniskommando 3 - bei Fehlern
3010.14h | DEV_Event_Cmd4OnError | Erreigniskommando 4 - bei Fehlern
3010.31h | DEV_Event_Cmd1OnCommError | Erreigniskommando 1 - bei Kommunikationsfehlern
3010.32h | DEV_Event_Cmd2OnCommError | Erreigniskommando 2 - bei Kommunikationsfehlern
3010.33h | DEV_Event_Cmd3OnCommError | Erreigniskommando 3 - bei Kommunikationsfehlern
3010.34h | DEV_Event_Cmd4OnCommError | Erreigniskommando 4 - bei Kommunikationsfehlern
3012.10h | DEV_Event_CmdOnSpecificError1 | Erreigniskommandos - bei spezifischem Fehler 1
3012.11h | DEV_Event_Cmd1OnSpecificError1 | Erreigniskommando 1 - bei spezifischem Fehler 1
3012.12h | DEV_Event_Cmd2OnSpecificError1 | Erreigniskommando 2 - bei spezifischem Fehler 1
3012.13h | DEV_Event_Cmd3OnSpecificError1 | Erreigniskommando 3 - bei spezifischem Fehler 1
3012.14h | DEV_Event_Cmd4OnSpecificError1 | Erreigniskommando 4 - bei spezifischem Fehler 1
3012.20h | DEV_Event_CmdOnSpecificError2 | Erreigniskommandos - bei spezifischem Fehler 2
3012.21h | DEV_Event_Cmd1OnSpecificError2 | Erreigniskommando 1 - bei spezifischem Fehler 2
3012.22h | DEV_Event_Cmd2OnSpecificError2 | Erreigniskommando 2 - bei spezifischem Fehler 2
3012.23h | DEV_Event_Cmd3OnSpecificError2 | Erreigniskommando 3 - bei spezifischem Fehler 2
3012.24h | DEV_Event_Cmd4OnSpecificError2 | Erreigniskommando 4 - bei spezifischem Fehler 2
3012.30h | DEV_Event_CmdOnSpecificError3 | Erreigniskommandos - bei spezifischem Fehler 3
3012.31h | DEV_Event_Cmd1OnSpecificError3 | Erreigniskommando 1 - bei spezifischem Fehler 3
3012.32h | DEV_Event_Cmd2OnSpecificError3 | Erreigniskommando 2 - bei spezifischem Fehler 3
3012.33h | DEV_Event_Cmd3OnSpecificError3 | Erreigniskommando 3 - bei spezifischem Fehler 3
3012.34h | DEV_Event_Cmd4OnSpecificError3 | Erreigniskommando 4 - bei spezifischem Fehler 3
3012.40h | DEV_Event_CmdOnSpecificError4 | Erreigniskommandos - bei spezifischen Fehler 4
3012.41h | DEV_Event_Cmd1OnSpecificError4 | Erreigniskommando 1 - bei spezifischem Fehler 4
3012.42h | DEV_Event_Cmd2OnSpecificError4 | Erreigniskommando 2 - bei spezifischem Fehler 4
3012.43h | DEV_Event_Cmd3OnSpecificError4 | Erreigniskommando 3 - bei spezifischem Fehler 4
3012.44h | DEV_Event_Cmd4OnSpecificError4 | Erreigniskommando 4 - bei spezifischem Fehler 4
3014.11h | DEV_Event1_OnUserCmd1 | Kommando 1 bei Benutzerkommando 1
3014.12h | DEV_Event2_OnUserCmd1 | Kommando 2 bei Benutzerkommando 1
3014.13h | DEV_Event3_OnUserCmd1 | Kommando 3 bei Benutzerkommando 1
3014.14h | DEV_Event4_OnUserCmd1 | Kommando 4 bei Benutzerkommando 1
3014.21h | DEV_Event1_OnUserCmd2 | Kommando 1 bei Benutzerkommando 2
3014.22h | DEV_Event2_OnUserCmd2 | Kommando 2 bei Benutzerkommando 2
3014.23h | DEV_Event3_OnUserCmd2 | Kommando 3 bei Benutzerkommando 2
3014.24h | DEV_Event4_OnUserCmd2 | Kommando 4 bei Benutzerkommando 2
3014.31h | DEV_Event1_OnUserCmd3 | Kommando 1 bei Benutzerkommando 3
3014.32h | DEV_Event2_OnUserCmd3 | Kommando 2 bei Benutzerkommando 3
3014.33h | DEV_Event3_OnUserCmd3 | Kommando 3 bei Benutzerkommando 3
3014.34h | DEV_Event4_OnUserCmd3 | Kommando 4 bei Benutzerkommando 3
3014.41h | DEV_Event1_OnUserCmd4 | Kommando 1 bei Benutzerkommando 4
3014.42h | DEV_Event2_OnUserCmd4 | Kommando 2 bei Benutzerkommando 4
3014.43h | DEV_Event3_OnUserCmd4 | Kommando 3 bei Benutzerkommando 4
3014.44h | DEV_Event4_OnUserCmd4 | Kommando 4 bei Benutzerkommando 4
3014.51h | DEV_Event1_OnUserCmd5 | Kommando 1 bei Benutzerkommando 5
3014.52h | DEV_Event2_OnUserCmd5 | Kommando 2 bei Benutzerkommando 5
3014.53h | DEV_Event3_OnUserCmd5 | Kommando 3 bei Benutzerkommando 5
3014.54h | DEV_Event4_OnUserCmd5 | Kommando 4 bei Benutzerkommando 5
3014.61h | DEV_Event1_OnUserCmd6 | Kommando 1 bei Benutzerkommando 6
3014.62h | DEV_Event2_OnUserCmd6 | Kommando 2 bei Benutzerkommando 6
3014.63h | DEV_Event3_OnUserCmd6 | Kommando 3 bei Benutzerkommando 6
3014.64h | DEV_Event4_OnUserCmd6 | Kommando 4 bei Benutzerkommando 6
3014.71h | DEV_Event1_OnUserCmd7 | Kommando 1 bei Benutzerkommando 7
3014.72h | DEV_Event2_OnUserCmd7 | Kommando 2 bei Benutzerkommando 7
3014.73h | DEV_Event3_OnUserCmd7 | Kommando 3 bei Benutzerkommando 7
3014.74h | DEV_Event4_OnUserCmd7 | Kommando 4 bei Benutzerkommando 7
3014.81h | DEV_Event1_OnUserCmd8 | Kommando 1 bei Benutzerkommando 8
3014.82h | DEV_Event2_OnUserCmd8 | Kommando 2 bei Benutzerkommando 8
3014.83h | DEV_Event3_OnUserCmd8 | Kommando 3 bei Benutzerkommando 8
3014.84h | DEV_Event4_OnUserCmd8 | Kommando 4 bei Benutzerkommando 8
301A.00h | DEV_ValueEvent1_Config | Ereignis bei Wert 1 - Konfiguration
301A.01h | DEV_ValueEvent1_Status | Ereignis bei Wert 1 - Status
301A.02h | DEV_ValueEvent1_ParNr | Ereignis bei Wert 1 - Parameter
301A.03h | DEV_ValueEvent1_PollingTime | Ereignis bei Wert 1 - Polling Zeit
301A.04h | DEV_ValueEvent1_ScaleNum | Ereignis bei Wert 1 - Skalierung Nenner
301A.05h | DEV_ValueEvent1_ScaleDen | Ereignis bei Wert 1 - Skalierung Zähler
301A.06h | DEV_ValueEvent1_ScaledValue | Ereignis bei Wert 1 - Skalierter Wert
301A.08h | DEV_ValueEvent1_Treshold1 | Ereignis bei Wert 1 - Schwellwert 1
301A.09h | DEV_ValueEvent1_Hysteresis1 | Ereignis bei Wert 1 - Hysterese 1
301A.0Ah | DEV_ValueEvent1_Mask1 | Ereignis bei Wert 1 - Maske 1
301A.0Bh | DEV_ValueEvent1_Cmd1 | Ereignis bei Wert 1 - Kommando 1
301A.0Ch | DEV_ValueEvent1_Cmd1_Data0 | Ereignis bei Wert 1 - Kommando 1 Daten 0
301A.0Dh | DEV_ValueEvent1_Cmd1_Data1 | Ereignis bei Wert 1 - Kommando 1 Daten 1
301A.0Eh | DEV_ValueEvent1_Treshold2 | Ereignis bei Wert 1 - Schwellwert 2
301A.0Fh | DEV_ValueEvent1_Hysteresis2 | Ereignis bei Wert 1 - Hysterese 2
301A.10h | DEV_ValueEvent1_Mask2 | Ereignis bei Wert 1 - Maske 2
301A.11h | DEV_ValueEvent1_Cmd2 | Ereignis bei Wert 1 - Kommando 2
301A.12h | DEV_ValueEvent1_Cmd2_Data0 | Ereignis bei Wert 1 - Kommando 2 Daten 0
301A.13h | DEV_ValueEvent1_Cmd2_Data1 | Ereignis bei Wert 1 - Kommando 2 Daten 1
301D.00h | DEV_LatchEvent0_Control | Latch Event 1 - Control
301D.01h | DEV_LatchEvent0_Status | Latch Event 1 - Status
301D.03h | DEV_LatchEvent0_Mode | Latch Event 1 - Modus
301D.08h | DEV_LatchEvent0_ParTrigger | Latch Event 1 - Trigger Parameter
301D.09h | DEV_LatchEvent0_ParToLatch | Latch Event 1 - Gelatchter Parameter
301D.10h | DEV_LatchEvent0_LhCount | Latch Event 1 - Low-High Flankenzähler
301D.11h | DEV_LatchEvent0_LhVal | Latch Event 1 - Low-High Flanke gelatchter Wert
301D.12h | DEV_LatchEvent0_LhDiff | Latch Event 1 - Differenz Low-High - High-Low
301D.13h | DEV_LatchEvent0_HlCount | Latch Event 1 - High-Low Flankenzähler
301D.14h | DEV_LatchEvent0_HlVal | Latch Event 1 - High-Low Flanke gelatchter Wert
301D.15h | DEV_LatchEvent0_HlDiff | Latch Event 1 - Differenz High-Low - Low-High
301D.20h | DEV_LatchEvent1_Control | Latch Event 2 - Control
301D.21h | DEV_LatchEvent1_Status | Latch Event 2 - Status
301D.23h | DEV_LatchEvent1_Mode | Latch Event 2 - Modus
301D.28h | DEV_LatchEvent1_ParTrigger | Latch Event 2 - Trigger Parameter
301D.29h | DEV_LatchEvent1_ParToLatch | Latch Event 2 - Gelatchter Parameter
301D.30h | DEV_LatchEvent1_LhCount | Latch Event 2 - Low-High Flankenzähler
301D.31h | DEV_LatchEvent1_LhVal | Latch Event 2 - Low-High Flanke gelatchter Wert
301D.32h | DEV_LatchEvent1_LhDiff | Latch Event 2 - Differenz Low-High - High-Low
301D.33h | DEV_LatchEvent1_HlCount | Latch Event 2 - High-Low Flankenzähler
301D.34h | DEV_LatchEvent1_HlVal | Latch Event 2 - High-Low Flanke gelatchter Wert
301D.35h | DEV_LatchEvent1_HlDiff | Latch Event 2 - Differenz High-Low - Low-High
3020.00h | DEV_Code | Gerätecode
3020.01h | DEV_SubCode | Gerätesubcode
3020.02h | DEV_Revision | Revisionscode
3020.06h | DEV_McCpuId | CPU Kennungscode
3023.00h | DEV_VersionSw | Softwareversion
3023.01h | DEV_SubVersionSw | Softwaresubversion
3023.02h | DEV_RelVersionSw | Software release
3024.00h | DEV_VersionHw | Hardwareversion
3025.00h | DEV_CustomerCode | Kundencode
3025.01h | DEV_CustomerSwOption | Kundencode der Software
3025.02h | DEV_CustomerHwOption | Kundencode der Hardware
302C.00h | DEV_FreeData | Freie Daten
302D.01h | DEV_Article_Nr | Artikelnummer des Gerätes
302D.02h | DEV_Serial_Nr | Seriennummer des Gerätes
302E.00h | DEV_OemData_Cmd | OEM Daten - Kommando
302E.01h | DEV_OemData_D0 | OEM Daten - D0
302E.02h | DEV_OemData_D1 | OEM Daten - D1
302E.03h | DEV_OemData_D2 | OEM Daten - D2
302E.04h | DEV_OemData_D3 | OEM Daten - D3
302E.05h | DEV_OemData_D4 | OEM Daten - D4
302E.06h | DEV_OemData_D5 | OEM Daten - D5
302E.07h | DEV_OemData_D6 | OEM Daten - D6
302E.08h | DEV_OemData_D7 | OEM Daten - D7
302E.09h | DEV_OemData_D8 | OEM Daten - D8
302E.0Ah | DEV_OemData_D9 | OEM Daten - D9
302F.00h | DEV_UserData_Cmd | Benutzer Daten - Kommando
302F.01h | DEV_UserData_D0 | Benutzer Daten - D0
302F.02h | DEV_UserData_D1 | Benutzer Daten - D1
302F.03h | DEV_UserData_D2 | Benutzer Daten - D2
302F.04h | DEV_UserData_D3 | Benutzer Daten - D3
3031.00h | DEV_MaxUp | Max. Leistungsspannung
3032.00h | DEV_MaxIm | Max. Motorstrom
3050.00h | DEV_DinEnable | Eingangszuordnung - Betriebsfreigabe
3051.00h | DEV_DinClearError | Eingangszuordnung - Fehlerquittierung
3052.00h | DEV_DinStartStop | Eingangszuordnung - Start/Stop
3053.00h | DEV_DinDir | Eingangszuordnung - Drehrichtungsumkehr
3055.00h | DEV_DinLimitPos | Eingangszuordnung - positive Endschalter
3056.00h | DEV_DinLimitNeg | Eingangszuordnung - negative Endschalter
3057.00h | DEV_DinReference | Eingangszuordnung - Referenzschalter
3060.00h | DEV_DoutError | Ausgangszuordnung - Fehler
3080.00h | DEV_ContinueMode | Continue - Modus
3090.00h | DEV_MinUp_Error | Minimum Up - Error
3090.04h | DEV_UpOff_Stotterbremse | Up - Ausschalten Stotterbremse
3090.05h | DEV_UpOn_Stotterbremse | Up - Einschalten Stotterbremse
3100.00h | IO_AIN0 | Analoger Eingang 0
3101.00h | IO_AIN1 | Analoger Eingang 1
3108.00h | IO_AIN0_Offset | Analoger Eingang 0 - Offset
3108.01h | IO_AIN1_Offset | Analoger Eingang 1 - Offset
310A.00h | IO_AIN0_DeadBand | Analoger Eingang 0 - Totbereich
310A.01h | IO_AIN1_DeadBand | Analoger Eingang 1 - Totbereich
3110.00h | IO_AIN_Voltage_Ue | Elektronikspannung - Ue
3111.00h | IO_AIN_Voltage_Up | Leistungsspannung - Up
3112.00h | IO_AIN_Voltage_Um | Motorspannung - Um
3113.00h | IO_AIN_Current_Im | Motorstrom - Im
3114.00h | IO_AIN_Temperature_Power | Temperatur - Leistungsstufe
3120.00h | IO_DIN_P0 | Digitale Eingänge - Port0
3120.01h | IO_DIN_P1 | Digitale Eingänge - Port1
3129.01h | IO_DIN_NodeIdSwitch | NodeId-Schalter - Zustand
3150.00h | IO_DOUT_P0 | Digitale Ausgänge - Port0
3154.00h | IO_DOUT_Enable | Freigabe der digitalen Ausgänge
3158.00h | IO_DOUT_LedsEnable | LED - Benutzersteuerung aktivieren
3158.01h | IO_DOUT_LedsState | LED - Zustand
3200.00h | CURR_DesiredValue | Stromsollwert
3200.01h | CURR_DesiredValue_Stop | Stromsollwert - Stillstand
3200.02h | CURR_DesiredValue_AccPos | Stromsollwert - Beschleunigung in positiver Richtung
3200.03h | CURR_DesiredValue_ConstPos | Stromsollwert - konstante Geschwindigkeit in positiver Richtung
3200.04h | CURR_DesiredValue_DecPos | Stromsollwert - Verzögerung in positive Richtung
3200.05h | CURR_DesiredValue_AccNeg | Stromsollwert - Beschleunigung in negativer Richtung
3200.06h | CURR_DesiredValue_ConstNeg | Stromsollwert - konstante Geschwindigkeit in negativer Richtung
3200.07h | CURR_DesiredValue_DecNeg | Stromsollwert - Verzögerung in negativer Richtung
3210.00h | CURR_Kp | PI-Stromregler - Proportionalfaktor
3211.00h | CURR_Ki | PI-Stromregler - Integralfaktor
3214.00h | CURR_Kvff | PI-Stromregler - Geschwindigkeitsvorsteuerung
3215.00h | CURR_Kaff | PI-Stromregler - Beschleunigungsvorsteuerung
3219.00h | CURR_Pid_FactorNum | PI-Stromregler - Faktor Zähler
3219.01h | CURR_Pid_FactorDen | PI-Stromregler - Faktor Nenner
3221.00h | CURR_LimitMaxPos | Strombegrenzung - max. positiv
3223.00h | CURR_LimitMaxNeg | Strombegrenzung - max. negativ
3224.00h | CURR_DynLimitMode | Dynamische Strombegrenzung - Mode
3224.01h | CURR_DynLimitPeak | Dynamische Strombegrenzung - Spitzenstrom
3224.02h | CURR_DynLimitCont | Dynamische Strombegrenzung - Dauerstrom
3224.03h | CURR_DynLimitTime | Dynamische Strombegrenzung - Zeit
3224.12h | CURR_ActDynLimitCurrent | Dynamische Strombegrenzung I*t - aktuelle Strombegrenzung
3260.00h | CURR_ActualTargetCurrent | Aktueller Stromsollwert
3261.00h | CURR_ActualCommandCurrent | Aktueller Kommandostrom
3262.00h | CURR_ActualCurrent | Aktueller Motorstrom
3262.01h | CURR_ActualAvgCurrent | Aktueller gefilterter Motorstrom
3262.04h | CURR_ActualPosMaxCurr | Maximaler positiver Motorstrom
3262.05h | CURR_ActualNegMaxCurr | Maximaler negativer Motorstrom
3263.00h | CURR_ActualFollowingError | Aktueller Stromfehler
32A0.00h | CURR_SampleTime | Stromregler - Abtastrate
32A0.08h | CURR_SamplePoint | Stromregler - Abtastzeitpunkt Korrektur
32A0.09h | CURR_SampleRlCorr | Stromregler - R/L Korrektur
32A0.10h | CURR_ActAvgCurrFilterLevel | Filterstufe für Aktueller gefilterter Motorstrom
3300.00h | VEL_DesiredValue | Drehzahlsollwert
3302.00h | VEL_ScaleNum | Drehzahlskalierungsfaktor - Zähler
3303.00h | VEL_ScaleDen | Drehzahlskalierungsfaktor - Nenner
3304.00h | VEL_DesiredValue_Source | Drehzahlsollwertquelle
3305.00h | VEL_DesiredValue_Reference | Drehzahlbezugswert für analogen Eingang
330A.00h | VEL_DimensionNum | Drehzahldimensionsfaktor - Zähler
330B.00h | VEL_DimensionDen | Drehzahldimensionsfaktor - Nenner
3310.00h | VEL_Kp | PID-Regler - Proportionalfaktor
3311.00h | VEL_Ki | PID-Regler - Integralfaktor
3312.00h | VEL_Kd | PID-Regler - Differential faktor
3313.00h | VEL_ILimit | PID-Regler - Integrationslimit
3314.00h | VEL_Kvff | PID-Regler - Geschwindigkeitsvorsteuerung
3315.00h | VEL_Kaff | PID-Regler - Beschleunigungsvorsteuerung
3317.00h | VEL_KIxR | IxR Faktor
3318.00h | VEL_KdSampleTime | PID-Regler - Aktualisierungszeit für Differentialfaktor
3321.00h | VEL_LimitMaxPos | Drehzahlbegrenzung - max. positiv
3323.00h | VEL_LimitMaxNeg | Drehzahlbegrenzung - max. negativ
3340.00h | VEL_Acc_dV | Drehzahlbeschleunigung - delta V
3341.00h | VEL_Acc_dT | Drehzahlbeschleunigung - delta T
3342.00h | VEL_Dec_dV | Drehzahlverzögerung - delta V
3343.00h | VEL_Dec_dT | Drehzahlverzögerung - delta T
3344.00h | VEL_Dec_QuickStop_dV | QuickStop-Drehzahlverzögerung - delta V
3345.00h | VEL_Dec_QuickStop_dT | QuickStop-Drehzahlverzögerung - delta T
334C.00h | VEL_RampType | Rampengenerator - Rampentyp
334D.00h | VEL_RampState | Rampengenerator - Zustand
3350.00h | VEL_Feedback | Drehzahlrückführung
3350.03h | VEL_Feedback_Reference | Drehzahlrückführung - Bezugswert
3360.00h | VEL_ActualTargetVel | Aktuelle Sollgeschwindigkeit
3361.00h | VEL_ActualCommandVel | Aktuelle Kommandogeschwindigkeit
3362.00h | VEL_ActualVel | Aktuelle ungefilterte Geschwindigkeit
3380.00h | VEL_Acc | Drehzahlbeschleunigung in [U/min²]
3381.00h | VEL_Dec | Drehzahlverzögerung in [U/min²]
3382.00h | VEL_Dec_QuickStop | Drehzahl-QuickStop-Verzögerung in [U/min²]
33A0.00h | VEL_SampleTime | Drehzahl-/Positionerregler - Abtastrate
3708.00h | POS_Mode | Pos Betriebsart
3709.00h | POS_ConfigFlags | Pos Konfiguration
3720.00h | POS_PositionLimitMin | Positionsbegrenzung - minimum
3720.01h | POS_PositionLimitMax | Positionsbegrenzung - maximum
3732.00h | POS_FollowingErrorWindow | Positionsschleppfehler - Fenster
3732.01h | POS_FollowingErrorWindowDyn | Positionsschleppfehler - Fenster, Dynamisch
3733.00h | POS_FollowingErrorTime | Positionsschleppfehler - Zeit
3733.01h | POS_FollowingErrorTimeDyn | Positionsschleppfehler - Zeit, Dynamisch
3734.00h | POS_FollowingErrorLimit | Positionsschleppfehler - Begrenzung
373A.00h | POS_PositionWindow | Positionierfenster
373B.00h | POS_PositionWindowTime | Positionierfenster - Zeit
373B.01h | POS_PositionWindowTimeout | Positionierfenster - Timeout
373C.00h | POS_ReachedConfigFlags | Position erreicht - Konfigurationsbits
373D.00h | POS_DeadWindowOff | Positionierfenster - Endstufe sperren
373D.01h | POS_DeadWindowOn | Positionierfenster - Endstufe aktivieren
373E.00h | POS_DeadTimeOff | Positionierfenster Zeit - Endstufe sperren
373E.01h | POS_DeadTimeOn | Positionierfenster Zeit - Endstufe aktivieren
373F.00h | POS_DeadVel | Positionierfenster - Geschwindigkeit
374C.00h | POS_RampType | Pos. Rampengenerator - Rampentyp
374C.11h | POS_Ramp_JerkFactorAcc | Verschliff Beschleunigung
374C.12h | POS_Ramp_JerkFactorDec | Verschliff Bremsrampe
374D.00h | POS_RampState | Pos. Rampengenerator - Zustand
3760.00h | POS_ActualTargetPosition | Aktuelle Zielposition
3761.00h | POS_ActualCommandPosition | Aktuelle Kommandoposition
3761.01h | POS_ActualCommandPositionReg | Aktuelle interne Kommandoposition
3762.00h | POS_ActualPosition | Aktuelle Position (Istposition)
3762.01h | POS_ActualPositionReg | Aktuelle interne Position (Istposition)
3763.00h | POS_ActualFollowingError | Aktueller Positionsschleppabstand
3763.01h | POS_ActualFollowingErrorReg | Aktueller interner Positionsschleppabstand
3764.00h | POS_ActualIndexPosition | Aktuelle Indexposition
3765.00h | POS_ActualOrigin | Position Ursprung
3770.00h | POS_ActualTargetPosition_cnt | Aktuelle Zielposition in Inkrementen
3771.00h | POS_ActualCommandPosition_cnt | Aktuelle Kommandoposition in Inkrementen
3772.00h | POS_ActualPosition_cnt | Aktuelle Position in Inkrementen
3773.00h | POS_ActualFollowingError_cnt | Aktueller Positionsschleppabstand in Inkrementen
3774.00h | POS_ActualIndexPosition_cnt | Aktuelle Indexposition in Inkrementen
3775.00h | POS_ActualOrigin_cnt | Position Ursprung in Inkrementen
3790.00h | POS_Mova | Absolute Positionierung
3791.00h | POS_Movr | Relative Positionierung
37A4.01h | POS_GearBacklashComp_Path | Getriebespielausgleich - Strecke
37A4.02h | POS_GearBacklashComp_Vel | Getriebespielausgleich - Drehzahl
37B0.00h | POS_HomingCmd | Referenzfahrt - Kommando
37B1.00h | POS_HomingStatus | Referenzfahrt - Status
37B1.01h | POS_HomingError | Referenzfahrt - Error
37B1.02h | POS_HomingState | Referenzfahrt - Zustand
37B1.03h | POS_HomingRefToIndex | Referenzfahrt - Strecke Referenzschalter zu Index
37B1.04h | POS_HomingRefToIndex_cnt | Referenzfahrt - Strecke Referenzschalter zu Index in Ink.
37B2.00h | POS_HomingMethod | Referenzfahrt - Methode
37B3.00h | POS_HomingOffset | Referenzfahrt - Referenzoffset
37B4.00h | POS_HomingVelSwitch | Referenzfahrt - Geschwindigkeit für Schaltersuche
37B4.01h | POS_HomingVelZero | Referenzfahrt - Geschwindigkeit für Nullpunktanfahrt
37B5.00h | POS_HomingAcc | Referenzfahrt - Beschleunigung
37B5.01h | POS_HomingDec | Referenzfahrt - Verzögerung
37B6.00h | POS_HomingMaxIndexPath | Referenzfahrt - max. Strecke für Indexsuche
37B6.01h | POS_HomingIndexOffset | Referenzfahrt - Indexoffset
37B7.00h | POS_HomingBlock_ConfigFlags | Referenzfahrt auf Block - Konfiguration
37B7.01h | POS_HomingBlock_VelLow | Referenzfahrt auf Block - untere Drehzahl
37B7.02h | POS_HomingBlock_VelHigh | Referenzfahrt auf Block - obere Drehzahl
37B7.03h | POS_HomingBlock_Time | Referenzfahrt auf Block - Zeit
37B7.04h | POS_HomingBlock_FollowingErrorWindow | Referenzfahrt auf Block - Positionsschleppfehlerfenster
37C1.00h | POS_InterpStatus | Interpolation - Status
37C2.00h | POS_InterpMethod | Interpolation - Methode
37C2.01h | POS_InterpTime | Interpolation - Zeit
37C2.02h | POS_InterpReference | Interpolation - Referenz
37C5.00h | POS_InterpBufConfig | Interpolation - Bufferkonfiguration
37C6.00h | POS_InterpData | Interpolation - Daten
37C7.00h | POS_InterpActualTargetPosition | Interpolation - Aktuelle Zielposition
37C7.01h | POS_InterpActualCommandPosition | Interpolation - Aktuelle Kommandoposition
37C7.02h | POS_InterpActualPosition | Interpolation - Aktuelle Position
37C8.00h | POS_ModuloMethod | Modulomethode
37C9.00h | POS_ModuloValue | Modulowert
3830.00h | PWM_Frequency | PWM Frequenz
3830.62h | PWM_ActualPwm_oo | Aktuelle PWM des Geräts
3850.00h | SYS_Clock | System Clock
3850.02h | SYS_Timer_2ms | System Timer 2ms
3900.00h | MOTOR_Type | Motortyp
3910.00h | MOTOR_PolN | Motorpolanzahl
3910.01h | MOTOR_Microsteps | Mikroschritte
3911.00h | MOTOR_Polarity | Motorpolarität
3913.00h | MOTOR_CommutationType | Kommutierungsart des Motors
3913.07h | MOTOR_Commutation_Polarity | Kommutierungspolarität des Motors
3913.20h | PreCommutationConfig | Vorkommutierung
3913.21h | PreCommutationVel | Vorkommutierung Bezugsdrehzahl
3913.23h | PreCommutationAngle | Vorkommutierungswinkel
3961.22h | MOTOR_ENC_INC2_Config_McSpiAddr | mcSPI-IC2 Encoder Konfiguration - SPI Adresse
3962.00h | MOTOR_ENC_Resolution | Encoderauflösung in Inkrementen
3962.20h | MOTOR_ENC_INC2_Resolution_Cnt | mcSPI-IC2 Encoderauflösung in Inkrementen
3963.00h | MOTOR_ENC_Resolution_lines | Encoderauflösung in Encoderstrichen
396A.00h | MOTOR_ENC_ActualPosition | Aktuelle Encoderposition
396A.20h | MOTOR_ENC_INC2_ActualPosition | Aktuelle mcSPI-IC2 Encoderposition
396B.00h | MOTOR_ENC_ActualIndexPosition | Aktuelle Encoder Indexposition
396C.00h | MOTOR_ENC_ActualIndexCount | Anzahl der Indexpulse vom Encoder
3970.00h | MOTOR_ENC_SSI_Enable | SSI Absolutencoder - Freigabe
3970.01h | MOTOR_ENC_SSI_Status | SSI Absolutencoder - Status
3970.08h | MOTOR_ENC_SSI_Save | SSI Absolutencoder - Speichern
3971.00h | MOTOR_ENC_SSI_Code | SSI Absolutencoder - Code
3971.01h | MOTOR_ENC_SSI_SignificantBits | SSI Absolutencoder - Signifikante Bits
3971.02h | MOTOR_ENC_SSI_Bits | SSI Absolutencoder - Bits
3972.00h | MOTOR_ENC_SSI_Resolution | SSI Absolutencoder - Single Turn Auflösung in Inkrementen
397A.00h | MOTOR_ENC_SSI_ActualPosition | SSI Absolutencoder - Aktuelle Position (auf 32 Bit erweitert)
397A.02h | MOTOR_ENC_SSI_ActualSsiDirectPosition | SSI Absolutencoder - Direkte Position
3990.08h | MOTOR_ENC_VIRT0_RawPosBits | Virtueller Encoder 0 - Bits
3990.10h | MOTOR_ENC_VIRT0_RawPos | Virtueller Encoder 0 - Raw Position
3990.11h | MOTOR_ENC_VIRT0_RawIndexPos | Virtueller Encoder 0 - Raw Index Position
3990.20h | MOTOR_ENC_VIRT0_Resolution_Cnt | Virtueller Encoder 0 - Auflösung in Inkrementen
3990.A0h | MOTOR_ENC_VIRT0_ActualPosition | Virtueller Encoder 0 - Aktuelle Position
3990.B0h | MOTOR_ENC_VIRT0_ActualIndexPosition | Virtueller Encoder 0 - Aktuelle Index Position
3990.C0h | MOTOR_ENC_VIRT0_ActualIndexCount | Virtueller Encoder 0 - Index Zähler
3991.08h | MOTOR_ENC_VIRT1_RawPosBits | Virtueller Encoder 1 - Bits
3991.10h | MOTOR_ENC_VIRT1_RawPos | Virtueller Encoder 1 - Raw Position
3991.11h | MOTOR_ENC_VIRT1_RawIndexPos | Virtueller Encoder 1 - Raw Index Position
3991.20h | MOTOR_ENC_VIRT1_Resolution_Cnt | Virtueller Encoder 1 - Auflösung in Inkrementen
3991.A0h | MOTOR_ENC_VIRT1_ActualPosition | Virtueller Encoder 1 - Aktuelle Position
3991.B0h | MOTOR_ENC_VIRT1_ActualIndexPosition | Virtueller Encoder 1 - Aktuelle Index Position
3991.C0h | MOTOR_ENC_VIRT1_ActualIndexCount | Virtueller Encoder 1 - Index Zähler
39A0.00h | MOTOR_BrakeManagement_Config | Bremsenmanagement - Konfiguration
39A0.01h | MOTOR_BrakeManagement_Status | Bremsenmanagement - Status
39A0.06h | MOTOR_BrakeManagement_VelMin | Bremsenmanagement - Drehzahlschwelle
39A0.07h | MOTOR_BrakeManagement_Din | Bremsenmanagement - Bremseingang
39A0.08h | MOTOR_BrakeManagement_Dout | Bremsenmanagement - Bremsausgang
39A0.09h | MOTOR_BrakeManagement_UpBrakeOff | Bremsenmanagement - Spannungsschwelle OFF
39A0.0Ah | MOTOR_BrakeManagement_UpBrakeOn | Bremsenmanagement - Spannungsschwelle ON
39A0.10h | MOTOR_BrakeManagement_OffDelay1 | Bremsenmanagement - AUS-Zeitverzögerung1
39A0.11h | MOTOR_BrakeManagement_OffDelay2 | Bremsenmanagement - AUS-Zeitverzögerung2
39A0.12h | MOTOR_BrakeManagement_OnDelay1 | Bremsenmanagement - EIN-Zeitverzögerung1
39A0.13h | MOTOR_BrakeManagement_OnDelay2 | Bremsenmanagement - EIN-Zeitverzögerung2
39A0.18h | MOTOR_BrakeManagement_OffOrConditionFlags | Bremsenmanagement - AUS-ODER-Bedingung
39A0.19h | MOTOR_BrakeManagement_OffAndConditionFlags | Bremsenmanagement - AUS-UND-Bedingung
39A0.1Ah | MOTOR_BrakeManagement_OnOrConditionFlags | Bremsenmanagement - EIN-ODER-Bedingung
39A0.1Bh | MOTOR_BrakeManagement_OnAndConditionFlags | Bremsenmanagement - EIN-UND-Bedingung
39A2.00h | MOTOR_QuasiAbsEncoder_ConfigFlags | Quasi-Absolutencoder - Konfigurationsflag
39A2.01h | MOTOR_QuasiAbsEncoder_Status | Quasi-Absolutencoder - Status
39A2.02h | MOTOR_QuasiAbsEncoder_Error | Quasi-Absolutencoder - Fehler
39A2.07h | MOTOR_QuasiAbsEncoder_Tolerance_cnt | Quasi-Absolutencoder - Toleranz
39A2.08h | MOTOR_QuasiAbsEncoder_Action | Quasi-Absolutencoder - Kommando
39A2.10h | MOTOR_QuasiAbsEncoder_DeltaPos | Quasi-Absolutencoder - Korrekturabstand
39A2.20h | MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MinUe | Quasi-Absolutencoder - minimale Spannung zum Positionspeichern
39A2.21h | MOTOR_QuasiAbsEncoder_SaveOnPowerOff_MaxUe | Quasi-Absolutencoder - maximale Spannung zum Positionspeichern
39A2.31h | MOTOR_QuasiAbsEncoder_SavedPosition | Quasi-Absolutencoder - Gespeicherte Position
39A2.32h | MOTOR_QuasiAbsEncoder_SavedIndexPosition | Quasi-Absolutencoder - Gespeicherte Indexposition
39A2.33h | MOTOR_QuasiAbsEncoder_SavesCounter | Quasi-Absolutencoder - Speicherzähler
3A02.00h | MEASUREMENT_VelTime_ms | Zeitspanne für Geschwindigkeitsmessung
3A04.00h | MEASUREMENT_Vel_cnt | Gemessene Geschwindigkeit in Inkrementen
3A04.01h | MEASUREMENT_Vel_rpm | Gemessene Geschwindigkeit in [U/min]
3B00.00h | FCT_Control | Faktorgruppe - Control
3B00.01h | FCT_Precision | Faktorgruppe - Precision
3B10.00h | FCT_Polarity | Faktorgruppe - Polarität
3B11.00h | FCT_PosNotationIndex | Faktorgruppe - Position-Einheitenindex
3B12.00h | FCT_PosDimIndex | Faktorgruppe - Positions-Größenindex
3B13.00h | FCT_VelNotationIndex | Faktorgruppe - Geschwindigkeit-Einheitenindex
3B14.00h | FCT_VelDimIndex | Faktorgruppe - Geschwindigkeits-Größenindex
3B15.00h | FCT_AccNotationIndex | Faktorgruppe - Beschleinigung-Einheitenindex
3B16.00h | FCT_AccDimIndex | Faktorgruppe - Beschleunigungs-Größenindex
3B16.01h | FCT_AccFactorNum | Faktorgruppe - Beschleunigungsskalierung-Zähler
3B16.02h | FCT_AccFactorDen | Faktorgruppe - Beschleunigungsskalierung-Nenner
3B17.00h | FCT_PosScaleNum | Faktorgruppe - Positionsskalierung-Zähler
3B17.01h | FCT_PosScaleDen | Faktorgruppe - Positionsskalierung-Nenner
3B18.00h | FCT_VelScaleNum | Faktorgruppe - Geschwindigkeitsskalierung-Zähler
3B18.01h | FCT_VelScaleDen | Faktorgruppe - Geschwindigkeitsskalierung-Nenner
3B19.00h | FCT_GearRatio_MotorRev | Faktorgruppe - Getriebeübersetzung-Motorwelleumdrehungen
3B19.01h | FCT_GearRatio_ShaftRev | Faktorgruppe - Getriebeübersetzung-Wellenumdrehungen
3B1A.00h | FCT_FeedConstant_Feed | Faktorgruppe - Vorschubkonstante-Vorschub
3B1A.01h | FCT_FeedConstant_ShaftRev | Faktorgruppe - Vorschubkonstante-Wellenumdrehung
3CE0.00h | COM_ASI_Cmd | ASI-Kommando
3CE0.06h | COM_ASI_Baudrate | ASI-Baudrate
3F00.00h | DIAG_Enable | Diagnostik - Schreibfreigabe
3FA0.00h | DIAG_SIM_Control | Diagnostik - Aktivierung der Simulation der E/A's
3FA1.00h | DIAG_SIM_AIN_Mask | Diagnostik - Ain-Simulation - Maske
3FA2.00h | DIAG_SIM_AIN_ValueAin0 | Diagnostik - Ain-Simulation - Wert von Ain0
3FA2.01h | DIAG_SIM_AIN_ValueAin1 | Diagnostik - Ain-Simulation - Wert von Ain1
3FA3.00h | DIAG_SIM_DIN_Mask | Diagnostik - Din-Simulation - Maske
3FA4.00h | DIAG_SIM_DIN_Value | Diagnostik - Din-Simulation - Wert der digitalen Eingänge


3000.01h Gerätekommando - Ausführbar bei Änderung

Name | DEV_Cmd_ExecOnChange
Bezeichnung | Gerätekommando - Ausführbar bei Änderung
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {0h, 1h, 2h, 3h, 4h, 5h, 8h, 10h, 13h, 17h, 1Ah, 20h, 21h, 28h, 29h, 2Ah, 2Eh, 2Fh, 30h, 31h, 33h, 34h, 36h, 2Ah, 3Bh, 40h, 41h, 42h, 48h, 50h, 51h, 52h, 53h, 54h, 58h, 71h, 72h, 74h, 76h, 77h, 78h}
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.95
Geräte | Alle
PLC Funktion | CmdExecOnChange(cmd)
Querverweis | DEV_CmdResult, DEV_CmdData0, DEV_CmdData1, DEV_CmdData2, DEV_Status, DEV_CmdCounter, DEV_Event1_OnUserCmd1

Beschreibung

Bei Änderungen dieses Parameters wird ein Gerätekommando ausgeführt.

Ein Kommando wird nur erkannt, wenn sich dieses ändert. Soll z.B. zweimal nacheinander relativ positioniert werden, ist dies nur durch ein erneutes Schicken eines neuen Kommandos möglich. Soll der Antriebsregler auf das gleiche Kommando reagieren, muss das höchstwertige Bit des Kommandos (Bit 7) getoggelt werden. So wird z.B. aus dem Kommando 34h (relative Positionierung) bei anschließender Verwendung B4h und dann wieder 34h.

Bei Änderung des Kommandowerts 0 (DEV_CmdData0) und/oder des Kommandowerts 1 (DEV_CmdData1) wird das aktuelle Gerätekommando als geändert markiert. D.h. wenn ein neues Gerätekommando geschrieben wird, wird dieses unabhängig vom alten und neuen Wert ausgeführt. Dieses Verhalten kann im Parameter DEV_CmdConfig beeinflusst werden.

Mit Hilfe des Statusregisters (DEV_Status, 3002.00h) kann kontrolliert werden, ob das Kommando erkannt wurde (DEV_Status, Bit 9 - STAT_CmdToggle) und ob es akzeptiert wurde (DEV_Status, Bit 10 - STAT_CmdError).

Gerätekommando:
Hex | Dec | Name | Beschreibung
00h | 0 | CMD_Nop | Keine Wirkung; auch als Toggelkommando nutzbar
01h | 1 | CMD_ClearError | Ein eventueller Fehler im Fehlerregister (DEV_ErrorReg) wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
04h | 4 | CMD_Continue | Fortsetzen der Bewegung nach QuickStop oder Halt. Achtung: Um die Bewegung fortzusetzen, muss dieses Kommando nach QuickStop oder Halt ausgeführt werden, sonst nimmt der Controller neue Sollwerte nicht an -> der Motor bleibt in Stop-Zustand (Ausnahme: Mit dem Parameter Continue - Modus (DEV_ContinueMode, 3080.00h) kann ein automatisches Continue parametriert werden.)
05h | 5 | CMD_Update | Sollwerte im Positioniermodus aktualisieren. Dieses Kommando wird z.B. in folgendem Fall benötigt: Es wurde im Positioniermodus eine Reletivbewegung ausgelöst. Bevor die Zielposition erreicht wird, soll der Antrieb mit einer neuen Geschwindigkeit die Fahrt weiterführen. Mit folgender Befehlssequenz wird dies erreicht: - Bewegungsparameter (Vel, Acc, Dec) über Kommandos (31h, 40h, 41h usw.) bzw Parameter (VEL_DesiredValue, VEL_Dec_dV, VEL_Dec_dT usw.) ändern - Bewegungsparameter (Vel, Acc, Dec) mit Kommando CMD_Update (05h) übernehmen

Betriebsart (Mode) des Antriebsreglers:
Hex | Dec | Name | Beschreibung
10h | 16 | CMD_ModeOff | Leistung und Regelung ausgeschaltet
13h | 19 | CMD_ModeVel | Drehzahlmodus
17h | 23 | CMD_ModePos | Positioniermodus Dieser Betriebsart benutzt teilweise die Parameter vom Drehzahlmodus (Parameterbereich 3300h-33FFh)

Betriebsfreigabe:
Hex | Dec | Name | Beschreibung
20h | 32 | CMD_Disable | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Betrieb der Leistungsstufe des Antriebsreglers freigeben

SDO-Kommunikation und QuickCommand-Mapping:
Hex Dec Name Beschreibung
28h 40 CMD_Sp Setzt den Wert eines beliebigen Parameters im Gerät. Bei einem Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode.

Kommandowerte:
- Kommandowert 0 (DEV_CmdData0) - Index des zu setzenden Parameters
- Kommandowert 1 (DEV_CmdData1) - Wert des zu setzenden Parameters
- Kommandowert 2 (DEV_CmdData2) - Subindex des zu setzenden Parameters
- Kommandoergebnis (DEV_CmdResult) - Liefert eventuellen Fehlercode

Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
29h 41 CMD_Gp Liest den aktuellen Wert des beliebigen Parameters vom Gerät ab. Der Wert wird im Parameter DEV_CmdResult zurückgeliefert. Bei einem Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode.

Kommandowerte:
- Kommandowert 0 (DEV_CmdData0) - Index des zu lesenden Parameters
- Kommandowert 2 (DEV_CmdData2) - Subindex des zu lesenden Parameters
- Kommandoergebnis (DEV_CmdResult) - Liefert den Wert des zu lesenden Parameters oder den Fehlercode

Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
2Ah 42 CMD_SetQcMapping Setzt das "QuickCommand"-Mapping. Dabei werden die RxPDO1 und die TxPDO1 umkonfiguriert.

Mapping für QuickCommand:
RxPDO1 (8 Byte):
- 1600.1h = 30002010h -> Objekt: 3000.20h (DEV_CmdData0_i16) 16 Bits
- 1600.2h = 30001208h -> Objekt: 3000.12h (DEV_CmdData2) 8 Bits
- 1600.3h = 30001120h -> Objekt: 3000.11h (DEV_CmdData1) 32 Bits
- 1600.4h = 30000108h -> Objekt: 3000.01h (DEV_Cmd_ExecOnChange) 8 Bits

  +--------+--------+--------+--------+--------+--------+--------+--------+
  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
  +--------+--------+--------+--------+--------+--------+--------+--------+
  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
  +--------+--------+--------+--------+--------+--------+--------+--------+
 LSB    16Bits        8Bits                 32Bits                 8Bits MSB

TxPDO1 (8 Byte):
- 1A00.1h = 30020010h -> Objekt: 3002.00h (DEV_Status) 16 Bits
- 1A00.2h = 30010010h -> Objekt: 3001.00h (DEV_ErrorReg) 16 Bits
- 1A00.3h = 30007020h -> Objekt: 3000.70h (DEV_CmdResult) 32 Bits

  +--------+--------+--------+--------+--------+--------+--------+--------+
  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
  +--------+--------+--------+--------+--------+--------+--------+--------+
  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
  +--------+--------+--------+--------+--------+--------+--------+--------+
 LSB    16Bits            16Bits                     32Bits              MSB

Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.

Sollwert (aus Kommandowert 0 und 1):
Zunächst müssen in den Kommandowerte 0 und 1 (DEV_CmdData0, 3000.10h/ DEV_CmdData1, 3000.11h) die Sollwerte geschrieben werden. Anschließend wird mit den folgenden Kommandos bestimmt, was für ein Sollwert mit dem Kommandowert beschrieben werden soll.
Hex | Dec | Name | Beschreibung
30h | 48 | CMD_Curr | Setzt den Stromsollwert (CURR_DesiredValue) für den Stromregler. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Stromsollwert (CURR_DesiredValue)
31h | 49 | CMD_Vel | Setzt den Drehzahlsollwert (VEL_DesiredValue) für den Drehzahlmodus und den Positioniermodus. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Drehzahlsollwert (VEL_DesiredValue)
33h | 51 | CMD_Mova | Es wird eine Bewegung auf eine absolute Position (POS_Mova) gestartet. Durch ein erneutes Ausführen dieses Kommandos (Bit 7 toggeln - siehe oben) wird die aktuelle Bewegung überschrieben. Man spricht in dem Fall über eine sog. "on-the-fly" Änderung der Bewegung. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Solldrehzahl - Kommandowert 1 (DEV_CmdData1) - absolute Zielposition Achtung: Vorgabe der Solldrehzahl über Kommandowert 0 nötig. Ist eine Referenzierungsmethode parametriert, bleibt dieses Kommando gesperrt, bis die Referenzierung durchgeführt wurde. (Kommando 51h CMD_Homing_Start); Kontrolle Statusbit 7 STAT_HomingDone (DEV_Status, 3002.00h)
34h | 52 | CMD_Movr | Es wird eine Bewegung auf eine relative Position (POS_Movr, relativ zur aktuellen Kommandoposition) gestartet. Durch ein erneutes Ausführen dieses Kommandos (Bit 7 toggeln - siehe oben) wird die aktuelle Bewegung überschrieben. Man spricht in dem Fall über eine sog. "on-the-fly" Änderung der Bewegung. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Solldrehzahl - Kommandowert 1 (DEV_CmdData1) - relative Zielposition (relativ zur aktuellen Kommandoposition) Achtung: Vorgabe der Solldrehzahl über Kommandowert 0 nötig. Wird während einer laufenden Bewegung eine neue Solldrehzahl über Kommandowert 0 vorgegeben, wird eine neue relative Positionierung ausgelöst! Für das Aktualisieren der Drehzahl einer aktiven relativen Positionierung Kommando 36h verwenden.
36h | 54 | CMD_MovUpdate | Sollwerte im Positioniermodus aktualisieren. Dieses Kommando wird z.B. in folgendem Fall benötigt: Es wurde im Positioniermodus eine Reletivbewegung ausgelöst. Bevor die Zielposition erreicht wird, soll der Antrieb mit einer neuen Geschwindigkeit die Fahrt weiterführen. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Solldrehzahl Achtung: Der Unterschied zu Kommando 05h (CMD_Update) ist, dass die Solldrehzahl aus Kommandowert 0 übernommen wird.

Rampenkommandos:
Hex | Dec | Name | Beschreibung
40h | 64 | CMD_Acc | Im Drehzahl- und Positioniermodus: - Kommandowert 0 (DEV_CmdData0) wird als Drehzahlbeschleunigung - delta V (VEL_Acc_dV) übernommen - Kommandowert 1 (DEV_CmdData1) wird als Drehzahlbeschleunigung - delta T VEL_Acc_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.
41h | 65 | CMD_Dec | Im Drehzahl- und Positioniermodus: - Kommandowert 0 (DEV_CmdData0) wird als Drehzahlverzögerung - delta V (VEL_Dec_dV) übernommen - Kommandowert 1 (DEV_CmdData1) wird als Drehzahlverzögerung - delta T (VEL_Dec_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.
42h | 66 | CMD_Dec_QuickStop | Im Drehzahl- und Positioniermodus: - Kommandowert 0 (DEV_CmdData0) wird als QuickStop-Drehzahlverzögerung - delta V (VEL_Dec_QuickStop_dV) übernommen - Kommandowert 1 (DEV_CmdData1) wird als QuickStop-Drehzahlverzögerung - delta T (VEL_Dec_QuickStop_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.

Referenzfahrtkommandos:
Um eine Referenzfahrt durchzuführen, muss sich der Antriebsregler im Positioniermodus befinden.
Hex | Dec | Name | Beschreibung
50h | 80 | CMD_HOME_None | Keine Wirkung
51h | 81 | CMD_HOME_Start | Referenzfahrt wird gestartet. Dabei wird das Bit-STAT_HomingDone vom DEV_Status zurückgesetzt. Die Methode der Referenzfahrt wird mit dem Parameter POS_HomingMethod festgelegt.
52h | 82 | CMD_HOME_Break | Aktive Referenzfahrt wird abgebrochen.
53h | 83 | CMD_HOME_Halt | Aktive Referenzfahrt wird unterbrochen.
54h | 84 | CMD_HOME_Restart | Aktive Referenzfahrt wird fortgesetzt.
58h | 88 | CMD_HOME_SetPos | Setzt die aktuelle Position auf den Kommandowert 1 (DEV_CmdData1, 3000.11h). Dabei wird das Statusbit 7/ STAT_HomingDone (DEV_Status, 3002.00h) gesetzt.

Zusammengesetzte Kommandos:
Mit diesen Kommandos ist es möglich, eine ganze Sequenz von Kommandos mit einem Kommando auszulösen.
Die Kommandosequenz ist mit den Parametern 3014.xxh (EventOnUserCmd) parametrierbar.
Hex | Dec | Name | Beschreibung
71h | 113 | CMD_UserCmd1 | Parameter 3014.11h - 3014.14h; Vorbelegt mit CMD_Quickstop, CMD_Disable, 0, 0
72h | 114 | CMD_UserCmd2 | Parameter 3014.21h - 3014.24h; Vorbelegt mit CMD_Halt, CMD_Disable, 0, 0
73h | 115 | CMD_UserCmd3 | Parameter 3014.31h - 3014.34h
74h | 116 | CMD_UserCmd4 | Parameter 3014.41h - 3014.44h; Vorbelegt mit CMD_ModeVel, CMD_Enable, CMD_Vel, 0
75h | 117 | CMD_UserCmd5 | Parameter 3014.51h - 3014.54h
76h | 118 | CMD_UserCmd6 | Parameter 3014.61h - 3014.64h; Vorbelegt mit CMD_ModePos, CMD_Enable, CMD_Mova, 0
77h | 119 | CMD_UserCmd7 | Parameter 3014.71h - 3014.74h; Vorbelegt mit CMD_ModePos, CMD_Enable, CMD_Movr, 0
78h | 120 | CMD_UserCmd8 | Parameter 3014.81h - 3014.84h; Vorbelegt mit CMD_ModePos, CMD_Enable, CMD_HOME_Start, 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                               # NodeId = 1

#----------------------------------------------------------------------------------------------------
# Initialisierung
d.SdoWr(0x3000, 0x01, 0)                                 # DEV_Cmd_ExecOnChange - keine Wirkung (Toggelkommando)
d.SdoWr(0x3000, 0x01, 1)                                 # DEV_Cmd_ExecOnChange - eventuellen Fehler löschen

#----------------------------------------------------------------------------------------------------
# Start des Testprogramms

d.SdoWr(0x3150, 0x00, 1)                                 # IO_DOUT_P0 - Zur Sicherheit Bremse öffnen
d.SdoWr(0x3000, 0x11, 0)                                 # DEV_CmdData1 - Kommandowert 1 = 0
d.SdoWr(0x3000, 0x01, 0x58)                              # DEV_Cmd_ExecOnChange - Position setzen

for i in range(5):                                       # 5 mal positionieren
   d.SdoWr(0x3000, 0x10, 1000)                           # DEV_CmdData0 - Kommandowert 0 = 1000 U/min
   d.SdoWr(0x3000, 0x11, 1000)                           # DEV_CmdData1 - Kommandowert 1 = 1000 counts
   d.SdoWr(0x3000, 0x01, 0x77)                           # DEV_Cmd_ExecOnChange - relative Positionierung

   while (d.SdoRd(0x3002, 0x00) & 0x10==0):              # DEV_Status - warte auf STAT_Reached
      time.sleep(0.1)                                    # alle 100 ms Bit abfragen

   print i, "aktuelle Position =", d.SdoRd(0x3762, 0x00) # POS_ActualPosition - Auslesen der aktuellen Position

   #d.SdoWr(0x3000, 0x10, 1000)                          # DEV_CmdData0 - Kommandowert 0 = 1000 U/min
   #d.SdoWr(0x3000, 0x11, 1000)                          # DEV_CmdData1 - Kommandowert 1 = 1000 counts
   d.SdoWr(0x3000,  0x01, 0xF7)                          # DEV_Cmd_ExecOnChange - erneute relative Positionierung

   while (d.SdoRd(0x3002, 0x00) & 0x10==0):              # DEV_Status - warte auf STAT_Reached
      time.sleep(0.1)                                    # alle 100 ms Bit abfragen

   print i,"aktuelle Position =", d.SdoRd(0x3762, 0x00)  # POS_ActualPosition - Auslesen der aktuellen Position

d.SdoWr(0x3150, 0x00, 0)                                 # IO_DOUT_P0 - Zur Sicherheit Bremse schließen

d.SdoWr(0x3000, 0x01, 0x20)                              # DEV_Cmd_ExecOnChange - Antriebsregler sperren


3000.02h Gerätekommando 2

Name | DEV_Cmd2
Bezeichnung | Gerätekommando 2
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {0h, 1h, 2h, 3h, 4h, 5h, 10h, 13h, 17h, 20h, 21h, 28h, 29h, 2Ah, 30h, 31h, 33h, 34h, 36h, 40h, 41h, 42h, 50h, 51h, 52h, 53h, 54h, 58h, 71h, 72h, 74h, 76h, 77h, 78h}
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.89.00.BD
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_CmdResult, DEV_CmdData0, DEV_CmdData1, DEV_CmdData2, DEV_Status, DEV_CmdCounter, DEV_Event1_OnUserCmd1

Beschreibung

Es wird immer das Gerätekommando ausgeführt wenn dieser Parameter beschrieben wird.

Dieser Parameter verhält sich wie DEV_Cmd_ExecOnChange, mit dem Unterschied, dass keine Änderung notwendig ist um das Gerätekommando auszuführen. Es ist daher vorsicht geboten da z.B. über PDOs ein nicht gewünschtes Verhalten erzeugt werden kann, wenn immer bzw. sehr oft ein neues Kommando geschickt wird.

Gerätekommando:
Hex | Dec | Name | Beschreibung
00h | 0 | CMD_Nop | Keine Wirkung; auch als Toggelkommando nutzbar
01h | 1 | CMD_ClearError | Ein eventueller Fehler im Fehlerregister (DEV_ErrorReg) wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
02h | 2 | CMD_QuickStop | Es wird ein Schnellstop des Motors durchgeführt. Der Motor bremst mit der QuickStop-Rampe (VEL_Dec_QuickStop_dV / VEL_Dec_QuickStop_dT) auf die Drehzahl 0 ab.
03h | 3 | CMD_Halt | Es wird ein Halt des Motors durchgeführt. Der Motor bremst mit der normalen Rampe (VEL_Dec_dV / VEL_Dec_dT) auf die Drehzahl 0 ab.
04h | 4 | CMD_Continue | Fortsetzen der Bewegung nach QuickStop oder Halt. Achtung: Um die Bewegung fortzusetzen, muss dieses Kommando nach QuickStop oder Halt ausgeführt werden, sonst nimmt der Controller neue Sollwerte nicht an -> der Motor bleibt in Stop-Zustand (Ausnahme: Mit dem Parameter Continue - Modus (DEV_ContinueMode, 3080.00h) kann ein automatisches Continue parametriert werden.)
05h | 5 | CMD_Update | Sollwerte im Positioniermodus aktualisieren. Dieses Kommando wird z.B. in folgendem Fall benötigt: Es wurde im Positioniermodus eine Reletivbewegung ausgelöst. Bevor die Zielposition erreicht wird, soll der Antrieb mit einer neuen Geschwindigkeit die Fahrt weiterführen. Mit folgender Befehlssequenz wird dies erreicht: - Bewegungsparameter (Vel, Acc, Dec) über Kommandos (31h, 40h, 41h usw.) bzw Parameter (VEL_DesiredValue, VEL_Dec_dV, VEL_Dec_dT usw.) ändern - Bewegungsparameter (Vel, Acc, Dec) mit Kommando CMD_Update (05h) übernehmen

Betriebsart (Mode) des Antriebsreglers:
Hex | Dec | Name | Beschreibung
10h | 16 | CMD_ModeOff | Leistung und Regelung ausgeschaltet
13h | 19 | CMD_ModeVel | Drehzahlmodus
17h | 23 | CMD_ModePos | Positioniermodus Dieser Betriebsart benutzt teilweise die Parameter vom Drehzahlmodus (Parameterbereich 3300h-33FFh)

Betriebsfreigabe:
Hex | Dec | Name | Beschreibung
20h | 32 | CMD_Disable | Betrieb der Leistungsstufe des Antriebsreglers sperren
21h | 33 | CMD_Enable | Betrieb der Leistungsstufe des Antriebsreglers freigeben

SDO-Kommunikation und QuickCommand-Mapping:
Hex Dec Name Beschreibung
28h 40 CMD_Sp Setzt den Wert eines beliebigen Parameters im Gerät. Bei einem Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode.

Kommandowerte:
- Kommandowert 0 (DEV_CmdData0) - Index des zu setzenden Parameters
- Kommandowert 1 (DEV_CmdData1) - Wert des zu setzenden Parameters
- Kommandowert 2 (DEV_CmdData2) - Subindex des zu setzenden Parameters
- Kommandoergebnis (DEV_CmdResult) - Liefert eventuellen Fehlercode

Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
29h 41 CMD_Gp Liest den aktuellen Wert des beliebigen Parameters vom Gerät ab. Der Wert wird im Parameter DEV_CmdResult zurückgeliefert. Bei einem Fehler beinhaltet der Parameter DEV_CmdResult den Fehlercode.

Kommandowerte:
- Kommandowert 0 (DEV_CmdData0) - Index des zu lesenden Parameters
- Kommandowert 2 (DEV_CmdData2) - Subindex des zu lesenden Parameters
- Kommandoergebnis (DEV_CmdResult) - Liefert den Wert des zu lesenden Parameters oder den Fehlercode

Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.
2Ah 42 CMD_SetQcMapping Setzt das "QuickCommand"-Mapping. Dabei werden die RxPDO1 und die TxPDO1 umkonfiguriert.

Mapping für QuickCommand:
RxPDO1 (8 Byte):
- 1600.1h = 30002010h -> Objekt: 3000.20h (DEV_CmdData0_i16) 16 Bits
- 1600.2h = 30001208h -> Objekt: 3000.12h (DEV_CmdData2) 8 Bits
- 1600.3h = 30001120h -> Objekt: 3000.11h (DEV_CmdData1) 32 Bits
- 1600.4h = 30000108h -> Objekt: 3000.01h (DEV_Cmd_ExecOnChange) 8 Bits

  +--------+--------+--------+--------+--------+--------+--------+--------+
  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
  +--------+--------+--------+--------+--------+--------+--------+--------+
  |    CmdData0     |CmdData2|             CmdData1              | Dev.Cmd|  <- Inhalt
  +--------+--------+--------+--------+--------+--------+--------+--------+
 LSB    16Bits        8Bits                 32Bits                 8Bits MSB

TxPDO1 (8 Byte):
- 1A00.1h = 30020010h -> Objekt: 3002.00h (DEV_Status) 16 Bits
- 1A00.2h = 30010010h -> Objekt: 3001.00h (DEV_ErrorReg) 16 Bits
- 1A00.3h = 30007020h -> Objekt: 3000.70h (DEV_CmdResult) 32 Bits

  +--------+--------+--------+--------+--------+--------+--------+--------+
  |   B0   |   B1   |   B2   |   B3   |   B4   |   B5   |   B6   |   B7   |  <- Bytenummer des PDO's
  +--------+--------+--------+--------+--------+--------+--------+--------+
  |   Status reg.   |    Error reg.   |            CmdResult0             |  <- Inhalt
  +--------+--------+--------+--------+--------+--------+--------+--------+
 LSB    16Bits            16Bits                     32Bits              MSB

Dieses Kommando ist ab Firmwareversion 1.89.00.44 verfügbar.

Sollwert (aus Kommandowert 0 und 1):
Zunächst müssen in den Kommandowerte 0 und 1 (DEV_CmdData0, 3000.10h/ DEV_CmdData1, 3000.11h) die Sollwerte geschrieben werden. Anschließend wird mit den folgenden Kommandos bestimmt, was für ein Sollwert mit dem Kommandowert beschrieben werden soll.
Hex | Dec | Name | Beschreibung
30h | 48 | CMD_Curr | Setzt den Stromsollwert (CURR_DesiredValue) für den Stromreglermodus. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Stromsollwert (CURR_DesiredValue)
31h | 49 | CMD_Vel | Setzt den Drehzahlsollwert (VEL_DesiredValue) für den Drehzahlmodus und den Positioniermodus. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Drehzahlsollwert (VEL_DesiredValue)
33h | 51 | CMD_Mova | Es wird eine Bewegung auf eine absolute Position (POS_Mova) gestartet. Durch ein erneutes Ausführen dieses Kommandos (Bit 7 toggeln - siehe oben) wird die aktuelle Bewegung überschrieben. Man spricht in dem Fall über eine sog. "on-the-fly" Änderung der Bewegung. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Solldrehzahl - Kommandowert 1 (DEV_CmdData1) - absolute Zielposition Achtung: Vorgabe der Solldrehzahl über Kommandowert 0 nötig. Ist eine Referenzierungsmethode parametriert, bleibt dieses Kommando gesperrt, bis die Referenzierung durchgeführt wurde. (Kommando 51h CMD_Homing_Start); Kontrolle Statusbit 7 STAT_HomingDone (DEV_Status, 3002.00h)
34h | 52 | CMD_Movr | Es wird eine Bewegung auf eine relative Position (POS_Movr, relativ zur aktuellen Kommandoposition) gestartet. Durch ein erneutes Ausführen dieses Kommandos (Bit 7 toggeln - siehe oben) wird die aktuelle Bewegung überschrieben. Man spricht in dem Fall über eine sog. "on-the-fly" Änderung der Bewegung. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Solldrehzahl - Kommandowert 1 (DEV_CmdData1) - relative Zielposition (relativ zur aktuellen Kommandoposition) Achtung: Vorgabe der Solldrehzahl über Kommandowert 0 nötig. Wird während einer laufenden Bewegung eine neue Solldrehzahl über Kommandowert 0 vorgegeben, wird eine neue relative Positionierung ausgelöst! Für das Aktualisieren der Drehzahl einer aktiven relativen Positionierung Kommando 36h verwenden.
36h | 54 | CMD_MovUpdate | Sollwerte im Positioniermodus aktualisieren. Dieses Kommando wird z.B. in folgendem Fall benötigt: Es wurde im Positioniermodus eine Reletivbewegung ausgelöst. Bevor die Zielposition erreicht wird, soll der Antrieb mit einer neuen Geschwindigkeit die Fahrt weiterführen. Kommandowerte: - Kommandowert 0 (DEV_CmdData0) - Solldrehzahl Achtung: Der Unterschied zu Kommando 05h (CMD_Update) ist, dass die Solldrehzahl aus Kommandowert 0 übernommen wird.

Rampenkommandos:
Hex | Dec | Name | Beschreibung
40h | 64 | CMD_Acc | Im Stromreglermodus: - Kommandowert 0 (DEV_CmdData0) wird als Strombeschleunigung - delta I (CURR_Acc_dI) übernommen - Kommandowert 1 (DEV_CmdData1) wird als Strombeschleunigung - delta T (CURR_Acc_dT) übernommen Im Drehzahl- und Positioniermodus: - Kommandowert 0 (DEV_CmdData0) wird als Drehzahlbeschleunigung - delta V (VEL_Acc_dV) übernommen - Kommandowert 1 (DEV_CmdData1) wird als Drehzahlbeschleunigung - delta T VEL_Acc_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.
41h | 65 | CMD_Dec | Im Stromreglermodus: - Kommandowert 0 (DEV_CmdData0) wird als Stromverzögerung - delta I (CURR_Dec_dI) übernommen - Kommandowert 1 (DEV_CmdData1) wird als Stromverzögerung - delta T (CURR_Dec_dT) übernommen Im Drehzahl- und Positioniermodus: - Kommandowert 0 (DEV_CmdData0) wird als Drehzahlverzögerung - delta V (VEL_Dec_dV) übernommen - Kommandowert 1 (DEV_CmdData1) wird als Drehzahlverzögerung - delta T (VEL_Dec_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.
42h | 66 | CMD_Dec_QuickStop | Im Stromreglermodus: - Kommandowert 0 (DEV_CmdData0) wird als Stromschnellhaltverzögerung - delta I (CURR_Dec_QuickStop_dI) übernommen - Kommandowert 1 (DEV_CmdData1) wird als Stromschnellhaltverzögerung - delta T (CURR_Dec_QuickStop_dT) übernommen Im Drehzahl- und Positioniermodus: - Kommandowert 0 (DEV_CmdData0) wird als QuickStop-Drehzahlverzögerung - delta V (VEL_Dec_QuickStop_dV) übernommen - Kommandowert 1 (DEV_CmdData1) wird als QuickStop-Drehzahlverzögerung - delta T (VEL_Dec_QuickStop_dT) übernommen Dieses Kommando ist ab Firmwareversion 1.85.03.32 verfügbar.

Referenzfahrtkommandos:
Um eine Referenzfahrt durchzuführen, muss sich der Antriebsregler im Positioniermodus befinden.
Hex | Dec | Name | Beschreibung
50h | 80 | CMD_HOME_None | Keine Wirkung
51h | 81 | CMD_HOME_Start | Referenzfahrt wird gestartet. Dabei wird das Bit-STAT_HomingDone vom DEV_Status zurückgesetzt. Die Methode der Referenzfahrt wird mit dem Parameter POS_HomingMethod festgelegt.
52h | 82 | CMD_HOME_Break | Aktive Referenzfahrt wird abgebrochen.
53h | 83 | CMD_HOME_Halt | Aktive Referenzfahrt wird unterbrochen.
54h | 84 | CMD_HOME_Restart | Aktive Referenzfahrt wird fortgesetzt.
58h | 88 | CMD_HOME_SetPos | Setzt die aktuelle Position auf den Kommandowert 1 (DEV_CmdData1, 3000.11h). Dabei wird das Statusbit 7/ STAT_HomingDone (DEV_Status, 3002.00h) gesetzt.

Zusammengesetzte Kommandos:
Mit diesen Kommandos ist es möglich, eine ganze Sequenz von Kommandos mit einem Kommando auszulösen.
Die Kommandosequenz ist mit den Parametern 3014.xxh (EventOnUserCmd) parametrierbar.
Hex | Dec | Name | Beschreibung
71h | 113 | CMD_UserCmd1 | Parameter 3014.11h - 3014.14h; Vorbelegt mit CMD_Quickstop, CMD_Disable, 0, 0
72h | 114 | CMD_UserCmd2 | Parameter 3014.21h - 3014.24h; Vorbelegt mit CMD_Halt, CMD_Disable, 0, 0
73h | 115 | CMD_UserCmd3 | Parameter 3014.31h - 3014.34h; Vorbelegt mit CMD_ModeCurr, CMD_Enable, CMD_Curr, 0
74h | 116 | CMD_UserCmd4 | Parameter 3014.41h - 3014.44h; Vorbelegt mit CMD_ModeVel, CMD_Enable, CMD_Vel, 0
75h | 117 | CMD_UserCmd5 | Parameter 3014.51h - 3014.54h; Vorbelegt mit CMD_ModeSVel, CMD_Enable, CMD_SVel, 0
76h | 118 | CMD_UserCmd6 | Parameter 3014.61h - 3014.64h; Vorbelegt mit CMD_ModePos, CMD_Enable, CMD_Mova, 0
77h | 119 | CMD_UserCmd7 | Parameter 3014.71h - 3014.74h; Vorbelegt mit CMD_ModePos, CMD_Enable, CMD_Movr, 0
78h | 120 | CMD_UserCmd8 | Parameter 3014.81h - 3014.84h; Vorbelegt mit CMD_ModePos, CMD_Enable, CMD_HOME_Start, 0

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                                               # NodeId = 1

#----------------------------------------------------------------------------------------------------
# Initialisierung
d.SdoWr(0x3000, 0x02, 1)                                 # DEV_Cmd2 - eventuellen Fehler löschen

#----------------------------------------------------------------------------------------------------
# Start des Testprogramms

d.SdoWr(0x3150, 0x00, 1)                                 # IO_DOUT_P0 - Zur Sicherheit Bremse öffnen
d.SdoWr(0x3000, 0x11, 0)                                 # DEV_CmdData1 - Kommandowert 1 = 0
d.SdoWr(0x3000, 0x02, 0x58)                              # DEV_Cmd2 - Position setzen

for i in range(5):                                       # 5 mal positionieren
   d.SdoWr(0x3000, 0x10, 1000)                           # DEV_CmdData0 - Kommandowert 0 = 1000 U/min
   d.SdoWr(0x3000, 0x11, 1000)                           # DEV_CmdData1 - Kommandowert 1 = 1000 counts
   d.SdoWr(0x3000, 0x02, 0x77)                           # DEV_Cmd2 - relative Positionierung

   while (d.SdoRd(0x3002, 0x00) & 0x10==0):              # DEV_Status - warte auf STAT_Reached
      time.sleep(0.1)                                    # alle 100 ms Bit abfragen

   print i+1, "aktuelle Position =", d.SdoRd(0x3762, 0x00) # POS_ActualPosition - Auslesen der aktuellen Position

d.SdoWr(0x3150, 0x00, 0)                                 # IO_DOUT_P0 - Zur Sicherheit Bremse schließen
d.SdoWr(0x3000, 0x01, 0x20)                              # DEV_Cmd2 - Antriebsregler sperren


3003.00h Betriebsart

Name | DEV_Mode
Bezeichnung | Betriebsart
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {0, 3, 7}
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | Mode(value)
Querverweis | -

Beschreibung

Dieser Parameter bestimmt die Betriebsart des Antriebsreglers.

Parameterwerte:
Wert | Name | PLC Funktion | Beschreibung
0 | MODE_OFF | ModeOff() | Leistung und Regelung ausgeschaltet
3 | MODE_Vel | ModeVel() | Drehzahlmodus mit Rampen
7 | MODE_Pos | ModePos() | Positioniermodus Dieser Betriebsart benutzt teilweise die Parameter vom Drehzahlregler (Parameterbereich 3300h-33FFh)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

d.SdoWr(0x3003, 0x00, 7)      # Betriebsart = Positionierregler
print d.SdoRd(0x3003, 0x00)   # aktuelle Betriebsart anzeigen


Inhalt - Parameter 3000h (DSA) - Digitale Eingänge

3120.00h | IO_DIN_P0 | Digitale Eingänge - Port0
3120.01h | IO_DIN_P1 | Digitale Eingänge - Port1


3154.00h Freigabe der digitalen Ausgänge

Name | IO_DOUT_Enable
Bezeichnung | Freigabe der digitalen Ausgänge
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.08
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_DoutError, IO_DOUT_P0, MOTOR_BrakeManagement_Config

Beschreibung

Mit dem Parameter können die digitalen Ausgänge freigegeben oder gesperrt werden.

Die Freigabe gilt nur für den Parameter 3150.00h (IO_DOUT_P0), die Firmware selbst kann die Ausgänge jedoch weiterhin setzen.
Die Sperre verhindert, dass der Zustand des digitalen Ausgangs unbeabsichtigt bzw. unberechtigt geändert wird, wenn der Ausgang bereits durch interne Funktionen der Firmware genutzt wird (z.B. durch Bremsmanagement, Fehlerausgang usw.).

Die Anzahl der digitalen Ausgänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten des Gerätes).

Bitbelegung:
Bit-Nr. | Bedeutung
0 | digitaler Ausgang 0 (=1 freigegeben, =0 gesperrt)
1 | digitaler Ausgang 1 (=1 freigegeben, =0 gesperrt)
2 | digitaler Ausgang 2 (=1 freigegeben, =0 gesperrt)
3 | digitaler Ausgang 3 (=1 freigegeben, =0 gesperrt)
4 | digitaler Ausgang 4 (=1 freigegeben, =0 gesperrt)
5 | digitaler Ausgang 5 (=1 freigegeben, =0 gesperrt)
6 | digitaler Ausgang 6 (=1 freigegeben, =0 gesperrt)
7 | digitaler Ausgang 7 (=1 freigegeben, =0 gesperrt)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                  # NodeId = 1

# Freigeben der digitalen Ausgänge von Port0 mit Bitmaske
set_dout = 0x02             # Nur Bit 1 freigeben (dout1)
d_out = (d.SdoRd(0x3154, 0x00) | set_dout)
d.SdoWr(0x3154, 0x00, d_out)

# Sperren der digitalen Ausgänge von Port0 mit Bitmaske
reset_dout = 0x01          # Nur Bit 0 sperren (dout0)
d_out = (d.SdoRd(0x3154, 0x00) & ~reset_dout)
d.SdoWr(0x3154, 0x00, d_out)

# Ausgeben des Freigabezustandes von Port0
print "enable_Dout =", hex(d.SdoRd(0x3154, 0x00))


Inhalt - Parameter 3000h (DSA) - Stromsollwert

3200.00h | CURR_DesiredValue | Stromsollwert
3200.01h | CURR_DesiredValue_Stop | Stromsollwert - Stillstand
3200.02h | CURR_DesiredValue_AccPos | Stromsollwert - Beschleunigung in positiver Richtung
3200.03h | CURR_DesiredValue_ConstPos | Stromsollwert - konstante Geschwindigkeit in positiver Richtung
3200.04h | CURR_DesiredValue_DecPos | Stromsollwert - Verzögerung in positive Richtung
3200.05h | CURR_DesiredValue_AccNeg | Stromsollwert - Beschleunigung in negativer Richtung
3200.06h | CURR_DesiredValue_ConstNeg | Stromsollwert - konstante Geschwindigkeit in negativer Richtung
3200.07h | CURR_DesiredValue_DecNeg | Stromsollwert - Verzögerung in negativer Richtung


3200.00h Stromsollwert

Name | CURR_DesiredValue
Bezeichnung | Stromsollwert
Datentyp | int32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-2147483648 .. 2147483647] Der max. Wert ist vom Gerät abhängig (siehe technische Daten)
Defaultwert | 0
Einheit | [mA]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | Curr(value)
Querverweis | CURR_DesiredValue_Stop, CURR_DesiredValue_AccPos, CURR_DesiredValue_ConstPos, CURR_DesiredValue_DecPos, CURR_DesiredValue_AccNeg, CURR_DesiredValue_ConstNeg, CURR_DesiredValue_DecNeg

Beschreibung

Mit dem Parameter wird der digitale Stromsollwert gesetzt.

Der Wert dieses Parameters wird nur dann als Stromsollwert übernommen, wenn der Parameter CURR_DesiredValue_Source auf den Wert 3200h (CURR_DesiredValue) gesetzt wurde. Sonst hat dieser Parameter keine Wirkung.

Über die Subindices 1..7 kann der Stromsollwert für Bewegungsphasen (Stillstand, Beschleunigung, konstante Geschwindigkeit, Verzögerung) unterschiedlich eingestellt werden.
Die Werte CURR_DesiredValue_Xxxx (Subindex 1..7) werden in [%] (Prozent) angegeben und setzen den Wert von CURR_DesiredValue (Subindex 0) auf den gewünschten anteiligen Wert.

Diese Funktionalität kann z.B. bei folgenden Antriebsanwendungen für Bewegungsoptimierung verwendet werden:
  • vertikale Achsen
  • Palettierung (unterschiedliche Belastungen je Transportrichtung)
  • ....
Für folgende Bewegungsphasen kann der Stromsollwert beeinflusst werden:

Subindex | Name | Einheit | Beschreibung
0 | CURR_DesiredValue | [A] | Stromsollwert
1 | CURR_DesiredValue_Stop | [%] | Stromsollwert - Stillstand
2 | CURR_DesiredValue_AccPos | [%] | Stromsollwert - Beschleunigung in positiver Richtung
3 | CURR_DesiredValue_ConstPos | [%] | Stromsollwert - konstante Geschwindigkeit in positiver Richtung
4 | CURR_DesiredValue_DecPos | [%] | Stromsollwert - Verzögerung in positiver Richtung
5 | CURR_DesiredValue_AccNeg | [%] | Stromsollwert - Beschleunigung in negativer Richtung
6 | CURR_DesiredValue_ConstNeg | [%] | Stromsollwert - konstante Geschwindigkeit in negativer Richtung
7 | CURR_DesiredValue_DecNeg | [%] | Stromsollwert - Verzögerung in negativer Richtung
Geschwindigkeitsprofil - Bewegungsphasen

Es gelten folgende Regel für die Werte der Parameter:

Für CURR_DesiredValue_Stop, CURR_DesiredValue_AccPos,CURR_DesiredValue_ConstPos, CURR_DesiredValue_DecPos:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue
Für CURR_DesiredValue_AccNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_AccPos
Für CURR_DesiredValue_ConstNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_ConstPos
Für CURR_DesiredValue_DecNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_DecPos

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

print "Curr =", d.SdoRd(0x3200, 0x00), "[mA]"   # Aktuelle Stromsollwert ausgeben
d.SdoWr(0x3200, 0x00, 100)                      # Stromsollwert = 100 [mA]


3200.01h Stromsollwert - Stillstand

Name | CURR_DesiredValue_Stop
Bezeichnung | Stromsollwert - Stillstand
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 65535
Einheit | [%]
Betriebsart | Alle
Verfügbar ab | 1.89.00.D6
Geräte | Alle
PLC Funktion | -
Querverweis | CURR_DesiredValue, CURR_DesiredValue_AccPos, CURR_DesiredValue_ConstPos, CURR_DesiredValue_DecPos, CURR_DesiredValue_AccNeg, CURR_DesiredValue_ConstNeg, CURR_DesiredValue_DecNeg

Beschreibung

Über die Subindices 1..7 kann der Stromsollwert für Bewegungsphasen (Stillstand, Beschleunigung, konstante Geschwindigkeit, Verzögerung) unterschiedlich eingestellt werden.
Die Werte CURR_DesiredValue_Xxxx (Subindex 1..7) werden in [%] (Prozent) angegeben und setzen den Wert von CURR_DesiredValue (Subindex 0) auf den gewünschten anteiligen Wert.

Der Wert dieses Parameters wird nur dann übernommen, wenn der Parameter CURR_DesiredValue_Source auf den Wert 3200h (CURR_DesiredValue) gesetzt wurde. Sonst haben diese Parameter keine Wirkung.

Für folgende Bewegungsphasen kann der Stromsollwert beeinflusst werden:

Subindex | Name | Einheit | Beschreibung
0 | CURR_DesiredValue | [A] | Stromsollwert
1 | CURR_DesiredValue_Stop | [%] | Stromsollwert - Stillstand
2 | CURR_DesiredValue_AccPos | [%] | Stromsollwert - Beschleunigung in positiver Richtung
3 | CURR_DesiredValue_ConstPos | [%] | Stromsollwert - konstante Geschwindigkeit in positiver Richtung
4 | CURR_DesiredValue_DecPos | [%] | Stromsollwert - Verzögerung in positiver Richtung
5 | CURR_DesiredValue_AccNeg | [%] | Stromsollwert - Beschleunigung in negativer Richtung
6 | CURR_DesiredValue_ConstNeg | [%] | Stromsollwert - konstante Geschwindigkeit in negativer Richtung
7 | CURR_DesiredValue_DecNeg | [%] | Stromsollwert - Verzögerung in negativer Richtung
Geschwindigkeitsprofil - Bewegungsphasen

Es gelten folgende Regel für die Werte der Parameter:

Für CURR_DesiredValue_Stop, CURR_DesiredValue_AccPos,CURR_DesiredValue_ConstPos, CURR_DesiredValue_DecPos:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue
Für CURR_DesiredValue_AccNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_AccPos
Für CURR_DesiredValue_ConstNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_ConstPos
Für CURR_DesiredValue_DecNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_DecPos

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

print "Curr =", d.SdoRd(0x3200, 0x00), "[mA]"   # Aktuelle Stromsollwert ausgeben
d.SdoWr(0x3200, 0x00, 100)                      # Stromsollwert = 100 [mA]

d.SdoWr(0x3200, 0x01, 50)                       # Stromsollwert im Stillstand auf 50% herabsenken


3200.02h Stromsollwert - Beschleunigung in positiver Richtung

Name | CURR_DesiredValue_AccPos
Bezeichnung | Stromsollwert - Beschleunigung in positiver Richtung
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 65535
Einheit | [%]
Betriebsart | Alle
Verfügbar ab | 1.89.00.D6
Geräte | Alle
PLC Funktion | -
Querverweis | CURR_DesiredValue, CURR_DesiredValue_Stop, CURR_DesiredValue_ConstPos, CURR_DesiredValue_DecPos, CURR_DesiredValue_AccNeg, CURR_DesiredValue_ConstNeg, CURR_DesiredValue_DecNeg

Beschreibung

Über die Subindices 1..7 kann der Stromsollwert für Bewegungsphasen (Stillstand, Beschleunigung, konstante Geschwindigkeit, Verzögerung) unterschiedlich eingestellt werden.
Die Werte CURR_DesiredValue_Xxxx (Subindex 1..7) werden in [%] (Prozent) angegeben und setzen den Wert von CURR_DesiredValue (Subindex 0) auf den gewünschten anteiligen Wert.

Der Wert dieses Parameters wird nur dann übernommen, wenn der Parameter CURR_DesiredValue_Source auf den Wert 3200h (CURR_DesiredValue) gesetzt wurde. Sonst haben diese Parameter keine Wirkung.

Für folgende Bewegungsphasen kann der Stromsollwert beeinflusst werden:

Subindex | Name | Einheit | Beschreibung
0 | CURR_DesiredValue | [A] | Stromsollwert
1 | CURR_DesiredValue_Stop | [%] | Stromsollwert - Stillstand
2 | CURR_DesiredValue_AccPos | [%] | Stromsollwert - Beschleunigung in positiver Richtung
3 | CURR_DesiredValue_ConstPos | [%] | Stromsollwert - konstante Geschwindigkeit in positiver Richtung
4 | CURR_DesiredValue_DecPos | [%] | Stromsollwert - Verzögerung in positiver Richtung
5 | CURR_DesiredValue_AccNeg | [%] | Stromsollwert - Beschleunigung in negativer Richtung
6 | CURR_DesiredValue_ConstNeg | [%] | Stromsollwert - konstante Geschwindigkeit in negativer Richtung
7 | CURR_DesiredValue_DecNeg | [%] | Stromsollwert - Verzögerung in negativer Richtung
Geschwindigkeitsprofil - Bewegungsphasen

Es gelten folgende Regel für die Werte der Parameter:

Für CURR_DesiredValue_Stop, CURR_DesiredValue_AccPos,CURR_DesiredValue_ConstPos, CURR_DesiredValue_DecPos:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue
Für CURR_DesiredValue_AccNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_AccPos
Für CURR_DesiredValue_ConstNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_ConstPos
Für CURR_DesiredValue_DecNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_DecPos

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

print "Curr =", d.SdoRd(0x3200, 0x00), "[mA]"   # Aktuelle Stromsollwert ausgeben
d.SdoWr(0x3200, 0x00, 100)                      # Stromsollwert = 100 [mA]

d.SdoWr(0x3200, 0x01, 50)                       # Stromsollwert im Stillstand auf 50% herabsenken


3200.03h Stromsollwert - konstante Geschwindigkeit in positiver Richtung

Name | CURR_DesiredValue_ConstPos
Bezeichnung | Stromsollwert - konstante Geschwindigkeit in positiver Richtung
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 65535
Einheit | [%]
Betriebsart | Alle
Verfügbar ab | 1.89.00.D6
Geräte | Alle
PLC Funktion | -
Querverweis | CURR_DesiredValue, CURR_DesiredValue_Stop, CURR_DesiredValue_AccPos, CURR_DesiredValue_DecPos, CURR_DesiredValue_AccNeg, CURR_DesiredValue_ConstNeg, CURR_DesiredValue_DecNeg

Beschreibung

Über die Subindices 1..7 kann der Stromsollwert für Bewegungsphasen (Stillstand, Beschleunigung, konstante Geschwindigkeit, Verzögerung) unterschiedlich eingestellt werden.
Die Werte CURR_DesiredValue_Xxxx (Subindex 1..7) werden in [%] (Prozent) angegeben und setzen den Wert von CURR_DesiredValue (Subindex 0) auf den gewünschten anteiligen Wert.

Der Wert dieses Parameters wird nur dann übernommen, wenn der Parameter CURR_DesiredValue_Source auf den Wert 3200h (CURR_DesiredValue) gesetzt wurde. Sonst haben diese Parameter keine Wirkung.

Für folgende Bewegungsphasen kann der Stromsollwert beeinflusst werden:

Subindex | Name | Einheit | Beschreibung
0 | CURR_DesiredValue | [A] | Stromsollwert
1 | CURR_DesiredValue_Stop | [%] | Stromsollwert - Stillstand
2 | CURR_DesiredValue_AccPos | [%] | Stromsollwert - Beschleunigung in positiver Richtung
3 | CURR_DesiredValue_ConstPos | [%] | Stromsollwert - konstante Geschwindigkeit in positiver Richtung
4 | CURR_DesiredValue_DecPos | [%] | Stromsollwert - Verzögerung in positiver Richtung
5 | CURR_DesiredValue_AccNeg | [%] | Stromsollwert - Beschleunigung in negativer Richtung
6 | CURR_DesiredValue_ConstNeg | [%] | Stromsollwert - konstante Geschwindigkeit in negativer Richtung
7 | CURR_DesiredValue_DecNeg | [%] | Stromsollwert - Verzögerung in negativer Richtung
Geschwindigkeitsprofil - Bewegungsphasen

Es gelten folgende Regel für die Werte der Parameter:

Für CURR_DesiredValue_Stop, CURR_DesiredValue_AccPos,CURR_DesiredValue_ConstPos, CURR_DesiredValue_DecPos:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue
Für CURR_DesiredValue_AccNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_AccPos
Für CURR_DesiredValue_ConstNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_ConstPos
Für CURR_DesiredValue_DecNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_DecPos

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

print "Curr =", d.SdoRd(0x3200, 0x00), "[mA]"   # Aktuelle Stromsollwert ausgeben
d.SdoWr(0x3200, 0x00, 100)                      # Stromsollwert = 100 [mA]

d.SdoWr(0x3200, 0x01, 50)                       # Stromsollwert im Stillstand auf 50% herabsenken


3200.04h Stromsollwert - Verzögerung in positive Richtung

Name | CURR_DesiredValue_DecPos
Bezeichnung | Stromsollwert - Verzögerung in positive Richtung
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 65535
Einheit | [%]
Betriebsart | Alle
Verfügbar ab | 1.89.00.D6
Geräte | Alle
PLC Funktion | -
Querverweis | CURR_DesiredValue, CURR_DesiredValue_Stop, CURR_DesiredValue_AccPos, CURR_DesiredValue_ConstPos, CURR_DesiredValue_AccNeg, CURR_DesiredValue_ConstNeg, CURR_DesiredValue_DecNeg

Beschreibung

Über die Subindices 1..7 kann der Stromsollwert für Bewegungsphasen (Stillstand, Beschleunigung, konstante Geschwindigkeit, Verzögerung) unterschiedlich eingestellt werden.
Die Werte CURR_DesiredValue_Xxxx (Subindex 1..7) werden in [%] (Prozent) angegeben und setzen den Wert von CURR_DesiredValue (Subindex 0) auf den gewünschten anteiligen Wert.

Der Wert dieses Parameters wird nur dann übernommen, wenn der Parameter CURR_DesiredValue_Source auf den Wert 3200h (CURR_DesiredValue) gesetzt wurde. Sonst haben diese Parameter keine Wirkung.

Für folgende Bewegungsphasen kann der Stromsollwert beeinflusst werden:

Subindex | Name | Einheit | Beschreibung
0 | CURR_DesiredValue | [A] | Stromsollwert
1 | CURR_DesiredValue_Stop | [%] | Stromsollwert - Stillstand
2 | CURR_DesiredValue_AccPos | [%] | Stromsollwert - Beschleunigung in positiver Richtung
3 | CURR_DesiredValue_ConstPos | [%] | Stromsollwert - konstante Geschwindigkeit in positiver Richtung
4 | CURR_DesiredValue_DecPos | [%] | Stromsollwert - Verzögerung in positiver Richtung
5 | CURR_DesiredValue_AccNeg | [%] | Stromsollwert - Beschleunigung in negativer Richtung
6 | CURR_DesiredValue_ConstNeg | [%] | Stromsollwert - konstante Geschwindigkeit in negativer Richtung
7 | CURR_DesiredValue_DecNeg | [%] | Stromsollwert - Verzögerung in negativer Richtung
Geschwindigkeitsprofil - Bewegungsphasen

Es gelten folgende Regel für die Werte der Parameter:

Für CURR_DesiredValue_Stop, CURR_DesiredValue_AccPos,CURR_DesiredValue_ConstPos, CURR_DesiredValue_DecPos:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue
Für CURR_DesiredValue_AccNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_AccPos
Für CURR_DesiredValue_ConstNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_ConstPos
Für CURR_DesiredValue_DecNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_DecPos

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

print "Curr =", d.SdoRd(0x3200, 0x00), "[mA]"   # Aktuelle Stromsollwert ausgeben
d.SdoWr(0x3200, 0x00, 100)                      # Stromsollwert = 100 [mA]

d.SdoWr(0x3200, 0x01, 50)                       # Stromsollwert im Stillstand auf 50% herabsenken


3200.05h Stromsollwert - Beschleunigung in negativer Richtung

Name | CURR_DesiredValue_AccNeg
Bezeichnung | Stromsollwert - Beschleunigung in negativer Richtung
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 65535
Einheit | [%]
Betriebsart | Alle
Verfügbar ab | 1.89.00.D6
Geräte | Alle
PLC Funktion | -
Querverweis | CURR_DesiredValue, CURR_DesiredValue_Stop, CURR_DesiredValue_AccPos, CURR_DesiredValue_DecPos, CURR_DesiredValue_ConstPos, CURR_DesiredValue_ConstNeg, CURR_DesiredValue_DecNeg

Beschreibung

Über die Subindices 1..7 kann der Stromsollwert für Bewegungsphasen (Stillstand, Beschleunigung, konstante Geschwindigkeit, Verzögerung) unterschiedlich eingestellt werden.
Die Werte CURR_DesiredValue_Xxxx (Subindex 1..7) werden in [%] (Prozent) angegeben und setzen den Wert von CURR_DesiredValue (Subindex 0) auf den gewünschten anteiligen Wert.

Der Wert dieses Parameters wird nur dann übernommen, wenn der Parameter CURR_DesiredValue_Source auf den Wert 3200h (CURR_DesiredValue) gesetzt wurde. Sonst haben diese Parameter keine Wirkung.

Für folgende Bewegungsphasen kann der Stromsollwert beeinflusst werden:

Subindex | Name | Einheit | Beschreibung
0 | CURR_DesiredValue | [A] | Stromsollwert
1 | CURR_DesiredValue_Stop | [%] | Stromsollwert - Stillstand
2 | CURR_DesiredValue_AccPos | [%] | Stromsollwert - Beschleunigung in positiver Richtung
3 | CURR_DesiredValue_ConstPos | [%] | Stromsollwert - konstante Geschwindigkeit in positiver Richtung
4 | CURR_DesiredValue_DecPos | [%] | Stromsollwert - Verzögerung in positiver Richtung
5 | CURR_DesiredValue_AccNeg | [%] | Stromsollwert - Beschleunigung in negativer Richtung
6 | CURR_DesiredValue_ConstNeg | [%] | Stromsollwert - konstante Geschwindigkeit in negativer Richtung
7 | CURR_DesiredValue_DecNeg | [%] | Stromsollwert - Verzögerung in negativer Richtung
Geschwindigkeitsprofil - Bewegungsphasen

Es gelten folgende Regel für die Werte der Parameter:

Für CURR_DesiredValue_Stop, CURR_DesiredValue_AccPos,CURR_DesiredValue_ConstPos, CURR_DesiredValue_DecPos:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue
Für CURR_DesiredValue_AccNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_AccPos
Für CURR_DesiredValue_ConstNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_ConstPos
Für CURR_DesiredValue_DecNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_DecPos

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

print "Curr =", d.SdoRd(0x3200, 0x00), "[mA]"   # Aktuelle Stromsollwert ausgeben
d.SdoWr(0x3200, 0x00, 100)                      # Stromsollwert = 100 [mA]

d.SdoWr(0x3200, 0x01, 50)                       # Stromsollwert im Stillstand auf 50% herabsenken


3200.06h Stromsollwert - konstante Geschwindigkeit in negativer Richtung

Name | CURR_DesiredValue_ConstNeg
Bezeichnung | Stromsollwert - konstante Geschwindigkeit in negativer Richtung
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 65535
Einheit | [%]
Betriebsart | Alle
Verfügbar ab | 1.89.00.D6
Geräte | Alle
PLC Funktion | -
Querverweis | CURR_DesiredValue, CURR_DesiredValue_Stop, CURR_DesiredValue_AccPos, CURR_DesiredValue_DecPos, CURR_DesiredValue_AccNeg, CURR_DesiredValue_ConstPos, CURR_DesiredValue_DecNeg

Beschreibung

Über die Subindices 1..7 kann der Stromsollwert für Bewegungsphasen (Stillstand, Beschleunigung, konstante Geschwindigkeit, Verzögerung) unterschiedlich eingestellt werden.
Die Werte CURR_DesiredValue_Xxxx (Subindex 1..7) werden in [%] (Prozent) angegeben und setzen den Wert von CURR_DesiredValue (Subindex 0) auf den gewünschten anteiligen Wert.

Der Wert dieses Parameters wird nur dann übernommen, wenn der Parameter CURR_DesiredValue_Source auf den Wert 3200h (CURR_DesiredValue) gesetzt wurde. Sonst haben diese Parameter keine Wirkung.

Für folgende Bewegungsphasen kann der Stromsollwert beeinflusst werden:

Subindex | Name | Einheit | Beschreibung
0 | CURR_DesiredValue | [A] | Stromsollwert
1 | CURR_DesiredValue_Stop | [%] | Stromsollwert - Stillstand
2 | CURR_DesiredValue_AccPos | [%] | Stromsollwert - Beschleunigung in positiver Richtung
3 | CURR_DesiredValue_ConstPos | [%] | Stromsollwert - konstante Geschwindigkeit in positiver Richtung
4 | CURR_DesiredValue_DecPos | [%] | Stromsollwert - Verzögerung in positiver Richtung
5 | CURR_DesiredValue_AccNeg | [%] | Stromsollwert - Beschleunigung in negativer Richtung
6 | CURR_DesiredValue_ConstNeg | [%] | Stromsollwert - konstante Geschwindigkeit in negativer Richtung
7 | CURR_DesiredValue_DecNeg | [%] | Stromsollwert - Verzögerung in negativer Richtung
Geschwindigkeitsprofil - Bewegungsphasen

Es gelten folgende Regel für die Werte der Parameter:

Für CURR_DesiredValue_Stop, CURR_DesiredValue_AccPos,CURR_DesiredValue_ConstPos, CURR_DesiredValue_DecPos:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue
Für CURR_DesiredValue_AccNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_AccPos
Für CURR_DesiredValue_ConstNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_ConstPos
Für CURR_DesiredValue_DecNeg:
Parameterwert | Ergebnis
x = 0..1000 | CURR_DesiredValue * x / 100
0xFFFF | CURR_DesiredValue_DecPos

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

print "Curr =", d.SdoRd(0x3200, 0x00), "[mA]"   # Aktuelle Stromsollwert ausgeben
d.SdoWr(0x3200, 0x00, 100)                      # Stromsollwert = 100 [mA]

d.SdoWr(0x3200, 0x01, 50)                       # Stromsollwert im Stillstand auf 50% herabsenken


3200.07h Stromsollwert - Verzögerung in negativer Richtung

Name | CURR_DesiredValue_DecNeg
Bezeichnung | Stromsollwert - Verzögerung in negativer Richtung
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 65535
Einheit | [%]
Betriebsart | Alle
Verfügbar ab | 1.89.00.D6
Geräte | Alle
PLC Funktion | -
Querverweis | CURR_DesiredValue, CURR_DesiredValue_Stop, CURR_DesiredValue_AccPos, CURR_DesiredValue_DecPos, CURR_DesiredValue_AccNeg, CURR_DesiredValue_ConstNeg, CURR_DesiredValue_ConstPos

Beschreibung

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

print "Curr =", d.SdoRd(0x3200, 0x00), "[mA]"   # Aktuelle Stromsollwert ausgeben
d.SdoWr(0x3200, 0x00, 100)                      # Stromsollwert = 100 [mA]

d.SdoWr(0x3200, 0x01, 50)                       # Stromsollwert im Stillstand auf 50% herabsenken


Inhalt - Parameter 3000h (DSA) - PI CURR Regler

3210.00h | CURR_Kp | PI-Stromregler - Proportionalfaktor
3211.00h | CURR_Ki | PI-Stromregler - Integralfaktor
3214.00h | CURR_Kvff | PI-Stromregler - Geschwindigkeitsvorsteuerung
3215.00h | CURR_Kaff | PI-Stromregler - Beschleunigungsvorsteuerung
3219.00h | CURR_Pid_FactorNum | PI-Stromregler - Faktor Zähler
3219.01h | CURR_Pid_FactorDen | PI-Stromregler - Faktor Nenner


3214.00h PI-Stromregler - Geschwindigkeitsvorsteuerung

Name | CURR_Kvff
Bezeichnung | PI-Stromregler - Geschwindigkeitsvorsteuerung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 2000]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.87.00.15
Geräte | Alle
PLC Funktion | -
Querverweis | CURR_Kp, CURR_Ki, CURR_Kaff

Beschreibung

Der Parameter CURR_Kvff bestimmt die Geschwindigkeitsvorsteuerung (Velocity Feed-Forward) des Stromregelkreises.
Er gleicht sozusagen die EMK des Motors aus.

Ein Regelkreis alleine gibt erst eine Ausgangsgröße aus, wenn ein Fehler ( = Sollwert - Istwert) ungleich Null vorliegt.
Wenn keine Vorsteuerung eingestellt wurde, kann der Fehler in allen Bewegungsphasen fast nie Null betragen.
Man kann zwar über Integralfaktor des PI-Reglers die dynamische Eigenschaften der Regelung verbessern, aber:
  • Integralfaktor führt zum Überschwingen bzw. Instabilität des Systems
  • da der Fehler notwendig ist, reagiert das System mit einer Verzögerung.
Erst wenn die Vorsteuerung korrekt eingestellt wurde, kann der Fehler in allen Bewegungsphasen minimiert werden.
Mit einer Vorsteuerung ist kein Fehler mehr notwendig, um eine Bewegung aufrecht zu erhalten.
In dem Fall, korrigiert der Stromregler nur Abweichungen, die auf Grund eines nicht idealen Verhaltens des Systems entstehen.

Dieser Parameter ist ab Firmware 1.87.00.15 verfügbar.
ACHTUNG

 Bei Einstellungen dieses Parameters ist besondere Vorsicht geboten. Bei einem instabilen Stromregler (in der Regel bei zu großen PI-Parameterwerten) kann der Strom unkontrolliert ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen !

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                              # NodeId = 1

print "CurrKvff =", d.SdoRd(0x3214, 0x00) # CURR_Kvff - Stromregler-Kvff ausgeben
print "CurrKaff =", d.SdoRd(0x3215, 0x00) # CURR_Kaff - Stromregler-Kaff ausgeben

d.SdoWr(0x3214, 0x00, 100)                # CURR_Kvff - Stromregler-Kvff setzen
d.SdoWr(0x3215, 0x00, 10)                 # CURR_Kaff - Stromregler-Kaff setzen


3215.00h PI-Stromregler - Beschleunigungsvorsteuerung

Name | CURR_Kaff
Bezeichnung | PI-Stromregler - Beschleunigungsvorsteuerung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 100000]
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.87.00.15
Geräte | Alle
PLC Funktion | -
Querverweis | CURR_Kp, CURR_Ki, CURR_Kvff

Beschreibung

Der Parameter CURR_Kaff bestimmt die Beschleunigungsvorsteuerung (Acceleration Feed-Forward) des Stromregelkreises.
Er gleicht sozusagen den Widerstand der Motorwicklung aus.

Ein Regelkreis alleine gibt erst eine Ausgangsgröße aus, wenn ein Fehler ( = Sollwert - Istwert) ungleich Null vorliegt.
Wenn keine Vorsteuerung eingestellt wurde, kann der Fehler in allen Bewegungsphasen fast nie Null betragen.
Man kann zwar über Integralfaktor des PI-Reglers die dynamische Eigenschaften der Regelung verbessern, aber:
  • Integralfaktor führt zum Überschwingen bzw. Instabilität des Systems
  • da der Fehler notwendig ist, reagiert das System mit einer Verzögerung.
Erst wenn die Vorsteuerung korrekt eingestellt wurde, kann der Fehler in allen Bewegungsphasen minimiert werden.
Mit einer Vorsteuerung ist kein Fehler mehr notwendig, um eine Bewegung aufrecht zu erhalten.
In dem Fall, korrigiert der Stromregler nur Abweichungen, die auf Grund eines nicht idealen Verhaltens des Systems entstehen.

Dieser Parameter ist ab Firmware 1.87.00.15 verfügbar.
ACHTUNG

 Bei Einstellungen dieses Parameters ist besondere Vorsicht geboten. Bei einem instabilen Stromregler (in der Regel bei zu großen PI-Parameterwerten) kann der Strom unkontrolliert ansteigen. Dies kann zu einer Gefahrensituation für den Menschen, Zerstörung des Motors und/oder der Mechanik führen !

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                              # NodeId = 1

print "CurrKvff =", d.SdoRd(0x3214, 0x00) # CURR_Kvff - Stromregler-Kvff ausgeben
print "CurrKaff =", d.SdoRd(0x3215, 0x00) # CURR_Kaff - Stromregler-Kaff ausgeben

d.SdoWr(0x3214, 0x00, 100)                # CURR_Kvff - Stromregler-Kvff setzen
d.SdoWr(0x3215, 0x00, 10)                 # CURR_Kaff - Stromregler-Kaff setzen


3350.00h Drehzahlrückführung

Name | VEL_Feedback
Bezeichnung | Drehzahlrückführung
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {0h, 100h, 112h, 94Ah, 96Ah, 97Ah, 990h, 991h, 96A20h}
Defaultwert | 0h
Einheit | -
Betriebsart | Velocity
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | VelFeedback(value), VelFeedbackAuto(), VelFeedbackEnc()
Querverweis | MOTOR_ENC_Resolution

Beschreibung

Mit dem Parameter wird die Quelle für die Rückführung des Drehzahlreglers und des Positionierreglers bestimmt.
Nicht jede Rückführung ist für jeden Motortyp einsetzbar. Die HALL-Rückführung kann nur bei bürstenlosen Motoren eingesetzt werden. Bei Antriebsreglern mit einem Encodereingang kann die Encoder-Rückführung für beide Motortypen benutzt werden.

Bemerkungen:
  • Dieser Parameter kann nur im gesperrten Betriebszustand (DEV_Enable = 0) geändert werden. Sonst werden die Änderungen des Parameters nicht angenommen, bzw. haben keine Wirkung.
  • Da dieser Parameter auch die Rückführung für den Positionierregler bestimmt, muss dieser Parameter für Pos-Betriebsart mit bürstenbehafteten Motoren mit Encoder auf den Wert 0x96A (MOTOR_ENC_ActualPosition) gesetzt werden.

Parameterwerte:
Wert (Hex) | Name | Beschreibung
0 | Default | bei bürstenbehafteten Motoren – EMK-Rückführung bei bürstenlosen Motoren – HALL- Rückführung
0100h | IO_AIN0 | Geschwindigkeitsrückführung über analog Eingang0 (nur für DC-Motoren)
0112h | IO_AIN_VOLTAGE_Um | EMK-Rückführung
094Ah | MOTOR_HALL_ActualPosition | HALL-Rückführung (nur bürstenlose Motoren)
096Ah | MOTOR_ENC_ActualPosition | Encoder-Rückführung
096A20h | MOTOR_ENC_INC2_ActualPosition | SPI Encoder-Rückführung Achtung: Nur bei Antriebsreglern mit SPI-Schnittstelle verfügbar.
097Ah | MOTOR_ENC_SSI_ActualPosition | Absolut-Encoder-Rückführung Achtung: Nur bei Antriebsreglern mit SSI-Schnittstelle verfügbar.
0990h | MOTOR_ENC_VIRT_ActualPosition | Virtueller Encoder 0 Rückführung
0991h | MOTOR_ENC_VIRT_ActualPosition | Virtueller Encoder 1 Rückführung
Dieser Parameter kann nur im gesperrten Betriebszustand(DEV_Enable = 0) geändert werden

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                       # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)         # DEV_Enable - Endstufe sperren

print "VelFeedback =", hex(d.SdoRd(0x3350, 0x00)) # VEL_Feedback

d.SdoWr(0x3350, 0x00, 0x096A)    # VEL_Feedback - Rückführung über Encoder
d.SdoWr(0x3003, 0x00, 3)         # DEV_Mode - Drehzahlmodus
d.SdoWr(0x3300, 0x00, 0)         # VEL_DesiredValue - Drehzahl = 0


373C.00h Position erreicht - Konfigurationsbits

Name | POS_ReachedConfigFlags
Bezeichnung | Position erreicht - Konfigurationsbits
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0h .. FFFFh]
Defaultwert | 0h
Einheit | -
Betriebsart | Position
Verfügbar ab | 1.71.01.11
Geräte | Alle
PLC Funktion | PosReachedConfigFlags(value)
Querverweis | DEV_Status

Beschreibung

Mit diesen Bits kann das Verhalten vom Bit "STAT_Reached" (Ein Bit vom DEV_Status) im Positioniermodus beeinflusst werden.

Begriffe:
    TrgPos - Zielposition
    CmdPos - Kommandoposition (Position nach dem Rampengenerator)

Funktionsweise des Bit "STAT_Reached":

Wenn alle Bits in diesem Parameter auf 0 gesetzt sind, und POS_PositionWindow und POS_PositionWindowTime nicht aktiviert wurden, dann wird das Bit "STAT_Reached" gesetzt, sobald sich der Rampengenerator (VEL_RampState) im IDLE-Zustand befindet (Stillstand).
Ein abweichendes Verhalten kann mit den folgenden Parameterwerten erreicht werden:

Parameterwerte:
Bit | Name | Beschreibung
0 | FLAG_SetOnlyIfTargetPosValid | Wenn dieses Bit == 1 ist, dann wird das Bit "STAT_Reached" nach einem Freigabe-Kommando erst dann gesetzt, wenn ein gültiges Positionierkommando ausgeführt wurde.
1 | FLAG_SetOnlyIfTargetPosReached | Wenn dieses Bit == 1 ist, dann wird das Bit "STAT_Reached" nur dann gesetzt, wenn die Kommandoposition gleich der Zielposition ist. Dieses Bit hat nur dann eine Bedeutung, wenn das Bit "STAT_Reached" nur vom Rampengenerator gesetzt wird. D.h. wenn POS_PositionWindow und POS_PositionWindowTime nicht aktiviert wurden.
2 | FLAG_NotSetTrgPosAfterHalt | Wenn dieses Bit == 1 ist, dann wird nach einem Halt-Kommando die Zielposition nicht auf die Kommandoposition gesetzt. Hinweis: Wenn nach einem Halt-Kommando das Bit "STAT_Reached" nicht gesetzt werden soll, dann muss das Bit "FLAG_SetOnlyIfTargetPosReached" und "FLAG_NotSetTrgPosAfterHalt" gesetzt werden.
3 | FLAG_NotSetTrgPosAfterQuickStop | Wenn dieses Bit == 1 ist, dann wird nach einem QuickStop-Kommando die Zielposition nicht auf die Kommandoposition gesetzt. Hinweis: Wenn nach einem QuickStop-Kommando das Bit "STAT_Reached" nicht gesetzt werden soll, dann muss das Bit "FLAG_SetOnlyIfTargetPosReached" und "FLAG_NotSetTrgPosAfterQuickStop" gesetzt werden.
4 | FLAG_SetTrgPosOnEnable | Wenn dieses Bit == 1 ist, dann wird bei einem Freigabe-Kommando die Zielposition auf die Kommandoposition gesetzt.
5 | FLAG_CheckTargetPosReachedTimeoutAfterEnable | Wenn dieses Bit == 1 ist, dann wird die Zeitüberwachung (POS_PositionWindowTimeout), ob die Zielposition erreicht wurde, gleich nach dem Freigabe-Kommando gestartet. Ansonsten erst nach dem erstem Positionierbefehl.
6-15 | Reserviert | Reservierte Bits für zukünftige Funktionen. Diese Bits müssen alle 0 sein.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                         # NodeId = 1

# Abfrage des aktuellen Werts
print "POS_ReachedConfigFlag =", hex(d.SdoRd(0x373C, 0x00))  # POS_ReachedConfigFlags

# Setzen des neuen Werts
d.SdoWr(0x373C, 0x00, 0x0)                                   # POS_ReachedConfigFlags


373D.00h Positionierfenster - Endstufe sperren

Name | POS_DeadWindowOff
Bezeichnung | Positionierfenster - Endstufe sperren
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 4294967295
Einheit | [Inkremente]
Betriebsart | Position
Verfügbar ab | 1.87.00.18
Geräte | Alle
PLC Funktion | -
Querverweis | POS_DeadWindowOn

Beschreibung

Dieser Parameter kann die Endstufe beim Erreichen der Zielposition abschalten und die Position in einem bestimmten Bereich für eine definierte Zeit halten. Damit kann Energie gespart und die thermische Belastung reduziert werden.

Das Positionierfenster liegt symmetrisch um das Lage-Ziel. Sobald das Bit STAT_Reached (Sollwert erreicht) im Status (DEV_Status) gesetzt wurde und die Istposition innerhalb dieses Fensters (POS_DeadWindowOff) liegt, beginnt die Totzeit (POS_DeadTimeOff) abzulaufen. Nach Ablauf der Totzeit wird die Endstufe automatisch gesperrt.

Parameterwerte:
Wert | Beschreibung
<FFFFFFFFh | Positionierfenster
=FFFFFFFh | Ausgeschaltet. Die automatische Sperrung der Endstude ist deaktiviert

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                         # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)           # Betriebsart = Positionierregler

d.SdoWr(0x373A, 0x00, 200)         # POS_PositionWindow - 200 ink
d.SdoWr(0x373B, 0x00, 150)         # POS_PositionWindowTime - 150 ms
# --> nach 150 ms im Zielbereich(+- 200 ink) -> STAT_Reached = 1

d.SdoWr(0x373D, 0x00, 1000)        # POS_DeadWindowOff - 1000 ink
d.SdoWr(0x373E, 0x00, 100)         # POS_DeadTimeOff - 100 ms
# --> nach 100 ms nachdem STAT_Reached = 1
#     und im DeadWindowOff Fenster -> Disable

d.SdoWr(0x373D, 0x01, 2000)        # POS_DeadWindowOn  - 2000 ink
d.SdoWr(0x373E, 0x01, 200)         # POS_DeadTimeOn - 200 ms
# --> nach 200 ms aussserhalb des
#     DeadWindowOff Fensters -> Enable

d.SdoWr(0x373F, 0x00, 10)          # POS_DeadVel - 10 U/min
# --> Bewegt sich mit 10 U/min auf Zielposition wenn DeadWindowOn aktiviert wird

d.SdoWr(0x3762, 0x00, 0)           # POS_ActualPosition - 0
d.SdoWr(0x3004, 0x00, 1)           # DEV_Enable - Endstufe Freigeben

d.SdoWr(0x3000, 0x10, 100)         # DEV_CmdData0 - 100 rpm
d.SdoWr(0x3000, 0x11, 6000)        # DEV_CmdData1 - 6000 ink
d.SdoWr(0x3000, 0x01, 0)           # DEV_Cmd_ExecOnChange - Toggle command
d.SdoWr(0x3000, 0x01, 0x33)        # DEV_Cmd_ExecOnChange - MovA

while 1:
   Status = d.SdoRd(0x3002, 0x00)  # DEV_Status
   if (Status & 0x10) == 0x10:     # STAT_Reached == 1
      print "Ziel erreicht"        # Ziel erreicht
      break                        # Schleife beenden


373D.01h Positionierfenster - Endstufe aktivieren

Name | POS_DeadWindowOn
Bezeichnung | Positionierfenster - Endstufe aktivieren
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 4294967295
Einheit | [Inkremente]
Betriebsart | Position
Verfügbar ab | 1.87.00.18
Geräte | Alle
PLC Funktion | -
Querverweis | POS_DeadWindowOff

Beschreibung

Dieser Paramter kann die Endstufe bei ungewolltem Verlassen eines bestimmten Bereichs um eine Zielposition für eine definierte Zeit, automatisch einschalten und zurück auf die Zielposition fahren.

Das Positionierfenster liegt symmetrisch um das Lage-Ziel. Befindet sich die Ist-Position außerhalb dieses Fensters (POS_DeadWindowOn) beginnt die Totzeit (POS_DeadTimeOn) abzulaufen. Nach Ablauf der Totzeit wird die Endstufe freigegeben und fährt automatisch auf die letzte Sollposition.

Parameterwerte:
Wert | Beschreibung
<FFFFFFFFh | Positionierfenster
=FFFFFFFh | Ausgeschaltet. Das automatische Freigeben der Endstude ist deaktiviert

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                         # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)           # Betriebsart = Positionierregler

d.SdoWr(0x373A, 0x00, 200)         # POS_PositionWindow - 200 ink
d.SdoWr(0x373B, 0x00, 150)         # POS_PositionWindowTime - 150 ms
# --> nach 150 ms im Zielbereich(+- 200 ink) -> STAT_Reached = 1

d.SdoWr(0x373D, 0x00, 1000)        # POS_DeadWindowOff - 1000 ink
d.SdoWr(0x373E, 0x00, 100)         # POS_DeadTimeOff - 100 ms
# --> nach 100 ms nachdem STAT_Reached = 1
#     und im DeadWindowOff Fenster -> Disable

d.SdoWr(0x373D, 0x01, 2000)        # POS_DeadWindowOn  - 2000 ink
d.SdoWr(0x373E, 0x01, 200)         # POS_DeadTimeOn - 200 ms
# --> nach 200 ms aussserhalb des
#     DeadWindowOff Fensters -> Enable

d.SdoWr(0x373F, 0x00, 10)          # POS_DeadVel - 10 U/min
# --> Bewegt sich mit 10 U/min auf Zielposition wenn DeadWindowOn aktiviert wird

d.SdoWr(0x3762, 0x00, 0)           # POS_ActualPosition - 0
d.SdoWr(0x3004, 0x00, 1)           # DEV_Enable - Endstufe Freigeben

d.SdoWr(0x3000, 0x10, 100)         # DEV_CmdData0 - 100 rpm
d.SdoWr(0x3000, 0x11, 6000)        # DEV_CmdData1 - 6000 ink
d.SdoWr(0x3000, 0x01, 0)           # DEV_Cmd_ExecOnChange - Toggle command
d.SdoWr(0x3000, 0x01, 0x33)        # DEV_Cmd_ExecOnChange - MovA

while 1:
   Status = d.SdoRd(0x3002, 0x00)  # DEV_Status
   if (Status & 0x10) == 0x10:     # STAT_Reached == 1
      print "Ziel erreicht"        # Ziel erreicht
      break                        # Schleife beenden


373E.00h Positionierfenster Zeit - Endstufe sperren

Name | POS_DeadTimeOff
Bezeichnung | Positionierfenster Zeit - Endstufe sperren
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | [ms]
Betriebsart | Position
Verfügbar ab | 1.87.00.18
Geräte | Alle
PLC Funktion | -
Querverweis | POS_DeadTimeOn

Beschreibung

Nach Ablauf der Totzeit (POS_DeadTimeOff) wird die Endstufe automatisch gesperrt.
Die Totzeit beginnt abzulaufen, wenn das Status Bit STAT_Reached (Sollwert erreicht) im Status(DEV_Status) gesetzt wurde und sich der Antrieb im Zielfenster (POS_DeadWindowOff) befindet.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                         # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)           # Betriebsart = Positionierregler

d.SdoWr(0x373A, 0x00, 200)         # POS_PositionWindow - 200 ink
d.SdoWr(0x373B, 0x00, 150)         # POS_PositionWindowTime - 150 ms
# --> nach 150 ms im Zielbereich(+- 200 ink) -> STAT_Reached = 1

d.SdoWr(0x373D, 0x00, 1000)        # POS_DeadWindowOff - 1000 ink
d.SdoWr(0x373E, 0x00, 100)         # POS_DeadTimeOff - 100 ms
# --> nach 100 ms nachdem STAT_Reached = 1
#     und im DeadWindowOff Fenster -> Disable

d.SdoWr(0x373D, 0x01, 2000)        # POS_DeadWindowOn  - 2000 ink
d.SdoWr(0x373E, 0x01, 200)         # POS_DeadTimeOn - 200 ms
# --> nach 200 ms aussserhalb des
#     DeadWindowOff Fensters -> Enable

d.SdoWr(0x373F, 0x00, 10)          # POS_DeadVel - 10 U/min
# --> Bewegt sich mit 10 U/min auf Zielposition wenn DeadWindowOn aktiviert wird

d.SdoWr(0x3762, 0x00, 0)           # POS_ActualPosition - 0
d.SdoWr(0x3004, 0x00, 1)           # DEV_Enable - Endstufe Freigeben

d.SdoWr(0x3000, 0x10, 100)         # DEV_CmdData0 - 100 rpm
d.SdoWr(0x3000, 0x11, 6000)        # DEV_CmdData1 - 6000 ink
d.SdoWr(0x3000, 0x01, 0)           # DEV_Cmd_ExecOnChange - Toggle command
d.SdoWr(0x3000, 0x01, 0x33)        # DEV_Cmd_ExecOnChange - MovA

while 1:
   Status = d.SdoRd(0x3002, 0x00)  # DEV_Status
   if (Status & 0x10) == 0x10:     # STAT_Reached == 1
      print "Ziel erreicht"        # Ziel erreicht
      break                        # Schleife beenden


373E.01h Positionierfenster Zeit - Endstufe aktivieren

Name | POS_DeadTimeOn
Bezeichnung | Positionierfenster Zeit - Endstufe aktivieren
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 65535]
Defaultwert | 0
Einheit | [ms]
Betriebsart | Position
Verfügbar ab | 1.87.00.18
Geräte | Alle
PLC Funktion | -
Querverweis | POS_DeadTimeOff

Beschreibung

Nach Ablauf der Totzeit (POS_DeadTimeOn) wird die Endstufe automatisch freigegeben und fährt auf die letzte Sollposition.
Die Totzeit beginnt abzulaufen, wenn die Ist-Position außerhalb des Fensters POS_DeadWindowOn liegt.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                         # NodeId = 1

d.SdoWr(0x3004, 0x00, 0)           # DEV_Enable - Endstufe sperren
d.SdoWr(0x3003, 0x00, 7)           # Betriebsart = Positionierregler

d.SdoWr(0x373A, 0x00, 200)         # POS_PositionWindow - 200 ink
d.SdoWr(0x373B, 0x00, 150)         # POS_PositionWindowTime - 150 ms
# --> nach 150 ms im Zielbereich(+- 200 ink) -> STAT_Reached = 1

d.SdoWr(0x373D, 0x00, 1000)        # POS_DeadWindowOff - 1000 ink
d.SdoWr(0x373E, 0x00, 100)         # POS_DeadTimeOff - 100 ms
# --> nach 100 ms nachdem STAT_Reached = 1
#     und im DeadWindowOff Fenster -> Disable

d.SdoWr(0x373D, 0x01, 2000)        # POS_DeadWindowOn  - 2000 ink
d.SdoWr(0x373E, 0x01, 200)         # POS_DeadTimeOn - 200 ms
# --> nach 200 ms aussserhalb des
#     DeadWindowOff Fensters -> Enable

d.SdoWr(0x373F, 0x00, 10)          # POS_DeadVel - 10 U/min
# --> Bewegt sich mit 10 U/min auf Zielposition wenn DeadWindowOn aktiviert wird

d.SdoWr(0x3762, 0x00, 0)           # POS_ActualPosition - 0
d.SdoWr(0x3004, 0x00, 1)           # DEV_Enable - Endstufe Freigeben

d.SdoWr(0x3000, 0x10, 100)         # DEV_CmdData0 - 100 rpm
d.SdoWr(0x3000, 0x11, 6000)        # DEV_CmdData1 - 6000 ink
d.SdoWr(0x3000, 0x01, 0)           # DEV_Cmd_ExecOnChange - Toggle command
d.SdoWr(0x3000, 0x01, 0x33)        # DEV_Cmd_ExecOnChange - MovA

while 1:
   Status = d.SdoRd(0x3002, 0x00)  # DEV_Status
   if (Status & 0x10) == 0x10:     # STAT_Reached == 1
      print "Ziel erreicht"        # Ziel erreicht
      break                        # Schleife beenden


3830.00h PWM Frequenz

Name | PWM_Frequency
Bezeichnung | PWM Frequenz
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {12500, 25000, 32000, 50000}
Defaultwert | 25000
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.07
Geräte | Alle
PLC Funktion | PwmFreq(value)
Querverweis | -

Beschreibung

Mit diesem Parameter kann die PWM-Frequenz verstellt werden.

Eine PWM-Frequenz 200 kHz ist nur bei Geräten der Serie EDC-E6x möglich.

Achtung
Je kleiner die PWM-Frequenz und die Anschlußinduktivität des Motors, desto wärmer (größere Verluste) wird der Motor im Stillstand.

Beispiel

# -*- coding: iso-8859-1 -*-
   from mc.dsa import *

   d = Dsa(1)

   # Ablesen der aktuellen Parameter
   print "PWM Frequenz: ", d.SdoRd(0x3830, 0x00)   # PWM_Frequency
   print "PWM Modus: ", d.SdoRd(0x3830, 0x01)      # PWM_Mode

   # Schreiben der neuen Parameter
   d.SdoWr(0x3830, 0x00, 25000)                    # PWM_Frequency
   d.SdoWr(0x3830, 0x01, 1)                        # PWM_Mode


3900.00h Motortyp

Name | MOTOR_Type
Bezeichnung | Motortyp
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {2}
Defaultwert | 2
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MotorType(value)
Querverweis | DEV_Enable

Beschreibung

Mit dem Parameter kann der Motortyp abgefragt bzw. festgelegt werden.

Bemerkungen:
  • Dieser Parameter kann nur im gesperrten Betriebszustand (DEV_Enable = 0) geändert werden. Sonst werden die Änderungen des Parameters nicht angenommen, bzw. haben keine Wirkung.
  • Bei integrierten Varianten der Antriebsregler (im Motor) kann dieser Parameter nicht verändert werden.

Wert (Hex) | Beschreibung
2 | Schrittmotor

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

# Schreibe neue Parameter
d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3901, 0x00, 3000)               # MOTOR_Nn
d.SdoWr(0x3902, 0x00, 24000)              # MOTOR_Un

d.SdoWr(0x3911, 0x00, 0)                  # MOTOR_Polarity
d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN


3910.00h Motorpolanzahl

Name | MOTOR_PolN
Bezeichnung | Motorpolanzahl
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [1 .. 1000]
Defaultwert | 200
Einheit | -
Betriebsart | Velocity,Position
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | MotorPolN(value)
Querverweis | MOTOR_Type

Beschreibung

Über diesen Parameter wird dem Antriebsregler die effektive Polanzahl des Motors mitgeteilt. Mit diesem Wert wird die Anzahl der Pulse pro eine Umdrehung der Motorwelle ermittelt.

Dieser Parameter entspricht der Anzahl der Vollschritte pro eine Motorwellenumdrehung.

Bemerkung:
  • Dieser Parameter kann nur in gesperrten Betriebszustand (DEV_Enable = 0) geändert werden. Sonst werden die Änderungen des Parameters nicht angenommen, bzw. haben keine Wirkung.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

# Schreibe neue Parameter
d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3901, 0x00, 3000)               # MOTOR_Nn
d.SdoWr(0x3902, 0x00, 24000)              # MOTOR_Un

d.SdoWr(0x3911, 0x00, 0)                  # MOTOR_Polarity
d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN


3910.01h Mikroschritte

Name | MOTOR_Microsteps
Bezeichnung | Mikroschritte
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar; Veränderbar nur im gesperrten Zustand
Wertbereich | {1, 2, 4, 8, 16, 32, 64, 128, 256}
Defaultwert | 256
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.03.48
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Dieser Parameter bestimmt die Zahl der Mikroschritte für den Betrieb des Schrittmotors.

Die Einheit der Position (Sollwerte, Istwerte) ist [Mikroschritt].
D.h. bei MOTOR_Microsteps=256 und MOTOR_PolN=200 ergeben sich 51200 Mikroschritte (Inkremente) pro eine Umdrehung der Motorwelle.

Bemerkung:
  • Dieser Parameter kann nur in gesperrten Betriebszustand (DEV_Enable = 0) geändert werden. Sonst werden die Änderungen des Parameters nicht angenommen, bzw. haben keine Wirkung.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId = 1

# init
d.SdoWr(0x3004, 0x00, 0)                  # DEV_Enable - Sperren
d.SdoWr(0x3000, 0x00, 1)                  # DEV_Cmd - Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)               # DEV_Cmd - Defaultparameter

# Schreibe neue Parameter
d.SdoWr(0x3900, 0x00, 1)                  # MOTOR_Type - BLDC
d.SdoWr(0x3901, 0x00, 3000)               # MOTOR_Nn
d.SdoWr(0x3902, 0x00, 24000)              # MOTOR_Un

d.SdoWr(0x3911, 0x00, 0)                  # MOTOR_Polarity
d.SdoWr(0x3910, 0x00, 10)                 # MOTOR_PolN


Inhalt - Parameter 6000h (DS402)

6007.00h | DS402_AbortConnectionOptionCode | Optionscode bei Abbruch der Kommunikation
6040.00h | DS402_ControlWord | Steuerwort
6041.00h | DS402_StatusWord | Statuswort
6042.00h | DS402_VL_TargetVelocity | Drehzahlsollwert
6046.00h | DS402_VL_VelocityMinMaxAmount_HighestSubindexSupported | Min/Max Drehzahl - Max Subindex des Objektes
6046.01h | DS402_VL_VelocityMinMaxAmount_MinVelocity | Minimale Drehzahl
6046.02h | DS402_VL_VelocityMinMaxAmount_MaxVelocity | Maximale Drehzahl
6048.00h | DS402_VL_VelocityAcceleration_HighestSubindexSupported | Drehzahlbeschleunigung - Max Subindex des Objektes
6048.01h | DS402_VL_VelocityAcceleration_DeltaSpeed | Drehzahlbeschleunigung - Delta Drehzahl
6048.02h | DS402_VL_VelocityAcceleration_DeltaTime | Drehzahlbeschleunigung - Delta Zeit
6049.00h | DS402_VL_VelocityDeceleration_HighestSubindexSupported | Drehzahlverzögerung - Max Subindex des Objektes
6049.01h | DS402_VL_VelocityDeceleration_DeltaSpeed | Drehzahlverzögerung - Delta Drehzahl
6049.02h | DS402_VL_VelocityDeceleration_DeltaTime | Drehzahlverzögerung - Delta Zeit
604A.00h | DS402_VL_VelocityQuickstop_HighestSubindexSupported | Drehzahl-Schnellhalt - Max Subindex des Objektes
604A.01h | DS402_VL_VelocityQuickstop_DeltaSpeed | Drehzahl-Schnellhalt - Delta Drehzahl
604A.02h | DS402_VL_VelocityQuickstop_DeltaTime | Drehzahl-Schnellhalt - Delta Zeit
604C.00h | DS402_VL_VelocityDimensionFactor_HighestSubindexSupported | Drehzahl-Dimensionfaktor - Max Subindex des Objektes
604C.01h | DS402_VL_VelocityDimensionFactor_Numerator | Drehzahl-Dimensionfaktor - Zähler
604C.02h | DS402_VL_VelocityDimensionFactor_Denominator | Drehzahl-Dimensionfaktor - Nenner
6060.00h | DS402_ModesOfOperation | Betriebsart
6061.00h | DS402_ModesOfOperationDisplay | Betriebsart-Anzeige
6062.00h | DS402_PP_PositionDemandValue | Positionssollwert
6063.00h | DS402_PP_PositionActualValueInCounts | Aktuelle Position in Inkrementen
6064.00h | DS402_PP_PositionActualValue | Aktuelle Position
6065.00h | DS402_PP_FollowingErrorWindow | Positionsschleppfehler - Fenster
6067.00h | DS402_PP_PositionWindow | Positionierfenster
6068.00h | DS402_PP_PositionWindowTime | Positionierfenster - Zeit
6075.00h | DS402_TQ_MotorRatedCurrent | Motornennstrom
6077.00h | DS402_TQ_TorqueActualValue | Aktuelles Drehmoment
6078.00h | DS402_TQ_CurrentActualValue | Aktueller Motorstrom
6079.00h | DS402_TQ_DCLinkCircuitVoltage | Leistungsspannung
607A.00h | DS402_PP_TargetPosition | Zielposition
607C.00h | DS402_HM_HomeOffset | Referenzoffset
607D.00h | DS402_PP_SoftwareLimitPosition_HighestSubindexSupported | Software-Positionsbegrenzung - Max Subindex des Objektes
607D.01h | DS402_PP_SoftwareLimitPosition_MinPositionLimit | Software-Positionsbegrenzung - minimum
607D.02h | DS402_PP_SoftwareLimitPosition_MaxPositionLimit | Software-Positionsbegrenzung - maximum
607E.00h | DS402_FG_Polarity | Polarität
607F.00h | DS402_PP_MaxProfileVelocity | Drehzahlbegrenzung
6081.00h | DS402_PP_ProfileVelocity | Drehzahlsollwert
6083.00h | DS402_PP_ProfileAcceleration | Drehzahlbeschleunigung
6084.00h | DS402_PP_ProfileDeceleration | Drehzahlverzögerung
6085.00h | DS402_PP_QuickstopDeceleration | Drehzahl-Quickstop-Verzögerung
6086.00h | DS402_PP_MotionProfileType | Drehzahl - Rampentyp
6089.00h | DS402_PP_PositionNotationIndex | Position - Einheitenindex
608A.00h | DS402_PP_PositionDimensionIndex | Positions-Größenindex
608B.00h | DS402_PP_VelocityNotationIndex | Geschwindigkeit - Einheitenindex
608C.00h | DS402_PP_VelocityDimensionIndex | Geschwindigkeits-Größenindex
608D.00h | DS402_PP_AccelerationNotationIndex | Beschleinigung-Einheitenindex
608E.00h | DS402_PP_AccelerationDimensionIndex | Beschleunigungs-Größenindex
608F.00h | DS402_FG_PositionEncoderResolution_HighestSubindexSupported | Positionsgeber-Auflösung - Max Subindex des Objektes
608F.01h | DS402_FG_PositionEncoderResolution_EncoderIncrements | Positionsgeber-Auflösung - Encoderauflösung
608F.02h | DS402_FG_PositionEncoderResolution_MotorShaftRevolutions | Positionsgeber-Auflösung - Motorwelleumdrehungen
6090.00h | DS402_FG_VelocityEncoderResolution_HighestSubindexSupported | Drehzahlgeber-Auflösung - Max Subindex des Objektes
6090.01h | DS402_FG_VelocityEncoderResolution_EncoderIncrements | Drehzahlgeber-Auflösung - Encoderauflösung
6090.02h | DS402_FG_VelocityEncoderResolution_MotorShaftRevolutions | Drehzahlgeber-Auflösung - Motorwelleumdrehungen
6091.00h | DS402_FG_GearRatio_HighestSubindexSupported | Getriebeübersetzung - Max Subindex des Objektes
6091.01h | DS402_FG_GearRatio_MotorShaftRevolutions | Getriebeübersetzung - Motorwelleumdrehungen
6091.02h | DS402_FG_GearRatio_DrivingShaftRevolutions | Getriebeübersetzung - Wellenumdrehungen
6092.00h | DS402_FG_FeedConstant_HighestSubindexSupported | Vorschubkonstante - Max Subindex des Objektes
6092.01h | DS402_FG_FeedConstant_Feed | Vorschubkonstante - Vorschub
6092.02h | DS402_FG_FeedConstant_DrivingShaftRevolutions | Vorschubkonstante - Wellenumdrehungen
6098.00h | DS402_HM_HomingMethod | Referenzfahrt - Methode
6099.00h | DS402_HM_HomingSpeeds_HighestSubindexSupported | Referenzfahrt - Drehzahl - Max Subindex des Objektes
6099.01h | DS402_HM_HomingSpeeds_SpeedSwitch | Referenzfahrt - Drehzahl für Schaltersuche
6099.02h | DS402_HM_HomingSpeeds_SpeedZero | Referenzfahrt - Drehzahl für Nullpunktanfahrt
609A.00h | DS402_HM_HomingAcceleration | Referenzfahrt - Beschleunigung
60C0.00h | DS402_IP_InterpolationSubModeSelect | Interpolation - Methode
60C1.00h | DS402_IP_InterpolationDataRecord_HighestSubindexSupported | Interpolationsdatensatz - Max Subindex des Objektes
60C1.01h | DS402_IP_InterpolationDataRecord_1stSetPoint | Interpolationsdatensatz - 1.Sollwert
60C2.00h | DS402_IP_InterpolationTimePeriod_HighestSubindexSupported | Interpolationszeit - Max Subindex des Objektes
60C2.01h | DS402_IP_InterpolationTimePeriod_Value | Interpolationszeit - Wert
60C2.02h | DS402_IP_InterpolationTimePeriod_Index | Interpolationszeit - Index
60C4.00h | DS402_IP_InterpolationDataConfiguration_HighestSubindexSupported | Interpolationskonfigurationsdaten - Max Subindex des Objektes
60C4.01h | DS402_IP_InterpolationDataConfiguration_MaximumBufferSize | Interpolationskonfigurationsdaten - Maximanle Puffergröße
60C4.02h | DS402_IP_InterpolationDataConfiguration_ActualBufferSize | Interpolationskonfigurationsdaten - Aktuelle Puffergröße
60C4.03h | DS402_IP_InterpolationDataConfiguration_BufferOrganisation | Interpolationskonfigurationsdaten - Pufferorganization
60C4.04h | DS402_IP_InterpolationDataConfiguration_BufferPosition | Interpolationskonfigurationsdaten - Pufferposition
60C4.05h | DS402_IP_InterpolationDataConfiguration_SizeOfDataRecord | Interpolationskonfigurationsdaten - Datensatzgröße
60C4.06h | DS402_IP_InterpolationDataConfiguration_BufferClear | Interpolationskonfigurationsdaten - Puffer löschen
60F4.00h | DS402_PP_FollowingErrorActualValue | Aktueller Schleppabstandsfehler
60FC.00h | DS402_PP_PositionDemandValueInCounts | Positionssollwert in Inkrementen
60FD.00h | DS402_DigitalInputs | Digitale Eingänge
60FE.00h | DS402_DigitalOutputs_HighestSubindexSupported | Digitale Ausgänge - Max Subindex des Objektes
60FE.01h | DS402_DigitalOutputs_PhysicalOutput | Digitale Ausgänge - Physische Ausgänge
60FE.02h | DS402_DigitalOutputs_BitMask | Digitale Ausgänge - Bit Maske
6402.00h | DS402_MotorType | Motortyp
6502.00h | DS402_SupportedDriveModes | Unterstützte Betriebsarten


6060.00h Betriebsart

Name | DS402_ModesOfOperation
Bezeichnung | Betriebsart
Datentyp | int8
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | {-1, 1, 2, 6, 7}
Defaultwert | -1
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS402_ModesOfOperationDisplay, DS402_SupportedDriveModes

Beschreibung

Dieser Parameter bestimmt die Betriebsart des Antriebsreglers.

Parameter werte:
Wert | Beschreibung
-1 | Off-Modus - Leistung und Regelung ausgeschaltet
1 | Positioniermodus (profile position mode) (pp)
2 | Drehzahlmodus (velocity mode) (vl)
6 | Referenzfahrtmodus (homing mode) (hm)
7 | Interpolationsmodus (interpolated position mode) (ip) Dieser Modus ist ab Firmwareversion 1.89.00.03 verfügbar.

Notiz
Die aktuelle Betriebsart des Reglers liefert der Parameter DS402_ModesOfOperationDisplay zurück.


6075.00h Motornennstrom

Name | DS402_TQ_MotorRatedCurrent
Bezeichnung | Motornennstrom
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [0 .. 4294967295]
Defaultwert | 0
Einheit | [mA]
Betriebsart | Torque profile mode
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | ,

Beschreibung

Dieser Wert wird vom Typenschild des Motors abgelesen und in mA vorgegeben. Die relativen Stromangaben beziehen sich auf diesen Wert.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                # NodeId

d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x8F)               # Fehler löschen

d.SdoWr(0x2011, 0x03, 0x64616F6C)         # Parameter 0x6000 zurücksetzen
d.SdoWr(0x2011, 0x06, 0x64616F6C)         # Parameter 0x3000 zurücksetzen

d.SdoWr(0x6402, 0x00, 0x8000)             # Motortyp = bürstenbehafteter Motor (DC)

d.SdoWr(0x6060, 0x00, 4)                  # Betriebsart - Drehmomentmodus

#------------------------------------------------------------------------------------------
# WICHTIG - um die Kompatibilität der zukünftigen Firmware zu gewährleisten, empfehlen wir
#           den Parameter immer zu setzen, denn es gibt die Unterschiede in der Spezifikation
#           von CiA DS402 V2.0 (Defaultwert "0") und DS402 V2.1 (Defaultwert "1")
#------------------------------------------------------------------------------------------
d.SdoWr(0x6007, 0x00, 1)                  # Fehlermeldung bei Abbruch der Kommunikation
#------------------------------------------------------------------------------------------

#------------------------------------------------------------------------------------------
# WICHTIG - nur für die Simulation, normallerweise sollte StatusWord überprüft werden
#------------------------------------------------------------------------------------------
d.SdoWr(0x6040, 0x00, 0x07)               # Steuerwort - Betrieb sperren
d.SdoWr(0x6040, 0x00, 0x06)               # Steuerwort - Stillsetzen
d.SdoWr(0x6040, 0x00, 0x0F)               # Steuerwort - Betrieb freigeben
#------------------------------------------------------------------------------------------

d.SdoWr(0x6075, 0x00, 800)                # Motornennstrom [mA]
d.SdoWr(0x6072, 0x00, 1000)               # Maximales Drehmoment[o/oo]

d.SdoWr(0x6071, 0x00, 500)                # Zieldrehmoment [o/oo]


6402.00h Motortyp

Name | DS402_MotorType
Bezeichnung | Motortyp
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {8002h}
Defaultwert | 8002h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | -

Beschreibung

Der Parameter definiert den Motortyp.

Parameter werte:
Wert [hex] | Beschreibung
8002h | Schrittmotor


Inhalt - IO

Parameter 1000h (DS301)

Parameter 2000h

Parameter 3000h (DSA)

Parameter 5000h (MPU)


Inhalt - Parameter 1000h (DS301)

1000.00h | COP_DeviceType | Gerätetyp
1001.00h | COP_ErrorRegister | Fehlerregister
1002.00h | COP_ManufacturerStatusRegister | Statusregister des Herstellers
1003.00h | COP_PredefinedErrorField_NumberOfErrors | Vordefinierte Fehlerfeld - Anzahl der Fehler
1003.01h | COP_PredefinedErrorField_StandardErrorField1 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 1
1003.02h | COP_PredefinedErrorField_StandardErrorField2 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 2
1003.03h | COP_PredefinedErrorField_StandardErrorField3 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 3
1003.04h | COP_PredefinedErrorField_StandardErrorField4 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 4
1003.05h | COP_PredefinedErrorField_StandardErrorField5 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 5
1003.06h | COP_PredefinedErrorField_StandardErrorField6 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 6
1003.07h | COP_PredefinedErrorField_StandardErrorField7 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 7
1003.08h | COP_PredefinedErrorField_StandardErrorField8 | Vordefinierte Fehlerfeld - Normal Fehlerfeld 8
1005.00h | COP_CobId_Sync | COB-ID SYNC
1006.00h | COP_CommunicationCyclePeriod | Zykluszeit der Kommunikation
1008.00h | COP_ManufacturerDeviceName | Gerätename des Herstellers
1009.00h | COP_ManufacturerHardwareVersion | Hardwareversion des Herstellers
100A.00h | COP_ManufacturerSoftwareVersion | Softwareversion des Herstellers
100C.00h | COP_GuardTime | Überwachungszeit
100D.00h | COP_LifeTimeFactor | Überwachungszeitfaktor
100E.00h | COP_CobId_Guarding | COB-ID Node und Life Guarding
1010.00h | COP_StoreParameters_HighestSubindexSupported | Parameterspeicher - Höchster unterstützter Subindex
1010.01h | COP_StoreParameters_All | Parameterspeicher - Alle Parameter speichern
1010.02h | COP_StoreParameters_Communication | Parameterspeicher - Kommunikationsparameter speichern
1010.03h | COP_StoreParameters_Application | Parameterspeicher - Applikationsparameter speichern
1011.00h | COP_RestoreDefaultParameters_HighestSubindexSupported | Defaultparameter wiederherstellen - Höchster unterstützter Subindex
1011.01h | COP_RestoreDefaultParameters_All | Defaultparameter wiederherstellen - Alle Defaultparameter wiederherstellen
1011.02h | COP_RestoreDefaultParameters_Communication | Defaultparameter wiederherstellen - Kommunikationsdefaultparameter wiederherstellen
1011.03h | COP_RestoreDefaultParameters_Application | Defaultparameter wiederherstellen - Applikationsdefaultparameter wiederherstellen
1012.00h | COP_CobId_TimeStampMessage | COB-ID Zeitstempel der Meldung
1014.00h | COP_CobId_EmergencyMessage | COB-ID Emergency-Meldung
1016.00h | COP_ConsumerHeartbeatTime_HighestSubindexSupported | Heartbeat-Zeit des Konsumenten - Höchster unterstützter Subindex
1016.01h | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime1 | Heartbeat-Zeit des Konsumenten 1 - Heartbeat-Zeit des Konsumenten
1016.02h | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime2 | Heartbeat-Zeit des Konsumenten 2 - Heartbeat-Zeit des Konsumenten
1016.03h | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime3 | Heartbeat-Zeit des Konsumenten 3 - Heartbeat-Zeit des Konsumenten
1016.04h | COP_ConsumerHeartbeatTime_ConsumerHeartbeatTime4 | Heartbeat-Zeit des Konsumenten 4 - Heartbeat-Zeit des Konsumenten
1017.00h | COP_ProducerHeartbeatTime | Heartbeat-Zeit des Produzent
1018.00h | COP_IdentityObject_HighestSubindexSupported | Identitätsobjekt - Höchster unterstützter Subindex
1018.01h | COP_IdentityObject_VendorID | Identitätsobjekt - Vendor-ID
1018.02h | COP_IdentityObject_ProductCode | Identitätsobjekt - Produktcode
1018.03h | COP_IdentityObject_RevisionNumber | Identitätsobjekt - Revisionsnummer
1029.00h | COP_ErrorBehavior_HighestSubindexSupported | Fehlersverhalten - Höchster unterstützter Subindex
1029.01h | COP_ErrorBehavior_CommunicationError | Fehlersverhalten - Kommunkationsfehler
1200.00h | COP_SDO_ServerParameter_HighestSubindexSupported | SDO Server-Parameter - Höchster unterstützter Subindex
1200.01h | COP_SDO_ServerParameter_CobIdClientServer_Rx | SDO Server-Parameter - COB-ID Client -> Server (rx)
1200.02h | COP_SDO_ServerParameter_CobIdServerClient_Tx | SDO Server-Parameter - COB-ID Server -> Client (tx)
1400.00h | COP_RxPDO1_CommunicationParameter_HighestSubindexSupported | RxPDO1 Kommunikationsparameter - Höchster unterstützter Subindex
1400.01h | COP_RxPDO1_CommunicationParameter_CobId | RxPDO1 Kommunikationsparameter - COB-ID benutzt durch RxPDO 1
1400.02h | COP_RxPDO1_CommunicationParameter_TransmissionType | RxPDO1 Kommunikationsparameter - Typ der Transmission
1400.03h | COP_RxPDO1_CommunicationParameter_InhibitTime | RxPDO1 Kommunikationsparameter - Inhibit-time
1401.00h | COP_RxPDO2_CommunicationParameter_HighestSubindexSupported | RxPDO2 Kommunikationsparameter - Höchster unterstützter Subindex
1401.01h | COP_RxPDO2_CommunicationParameter_CobId | RxPDO2 Kommunikationsparameter - COB-ID benutzt durch RxPDO 2
1401.02h | COP_RxPDO2_CommunicationParameter_TransmissionType | RxPDO2 Kommunikationsparameter - Typ der Transmission
1401.03h | COP_RxPDO2_CommunicationParameter_InhibitTime | RxPDO2 Kommunikationsparameter - Inhibit-time
1402.00h | COP_RxPDO3_CommunicationParameter_HighestSubindexSupported | RxPDO3 Kommunikationsparameter - Höchster unterstützter Subindex
1402.01h | COP_RxPDO3_CommunicationParameter_CobId | RxPDO3 Kommunikationsparameter - COB-ID benutzt durch RxPDO 3
1402.02h | COP_RxPDO3_CommunicationParameter_TransmissionType | RxPDO3 Kommunikationsparameter - Typ der Transmission
1402.03h | COP_RxPDO3_CommunicationParameter_InhibitTime | RxPDO3 Kommunikationsparameter - Inhibit-time
1403.00h | COP_RxPDO4_CommunicationParameter_HighestSubindexSupported | RxPDO4 Kommunikationsparameter - Höchster unterstützter Subindex
1403.01h | COP_RxPDO4_CommunicationParameter_CobId | RxPDO4 Kommunikationsparameter - COB-ID benutzt durch RxPDO 4
1403.02h | COP_RxPDO4_CommunicationParameter_TransmissionType | RxPDO4 Kommunikationsparameter - Typ der Transmission
1403.03h | COP_RxPDO4_CommunicationParameter_InhibitTime | RxPDO4 Kommunikationsparameter - Inhibit-time
1404.00h | COP_RxPDO5_CommunicationParameter_HighestSubindexSupported | RxPDO5 Kommunikationsparameter - Höchster unterstützter Subindex
1404.01h | COP_RxPDO5_CommunicationParameter_CobId | RxPDO5 Kommunikationsparameter - COB-ID benutzt durch RxPDO 5
1404.02h | COP_RxPDO5_CommunicationParameter_TransmissionType | RxPDO5 Kommunikationsparameter - Typ der Transmission
1404.03h | COP_RxPDO5_CommunicationParameter_InhibitTime | RxPDO5 Kommunikationsparameter - Inhibit-time
1405.00h | COP_RxPDO6_CommunicationParameter_HighestSubindexSupported | RxPDO6 Kommunikationsparameter - Höchster unterstützter Subindex
1405.01h | COP_RxPDO6_CommunicationParameter_CobId | RxPDO6 Kommunikationsparameter - COB-ID benutzt durch RxPDO 6
1405.02h | COP_RxPDO6_CommunicationParameter_TransmissionType | RxPDO6 Kommunikationsparameter - Typ der Transmission
1405.03h | COP_RxPDO6_CommunicationParameter_InhibitTime | RxPDO6 Kommunikationsparameter - Inhibit-time
1406.00h | COP_RxPDO7_CommunicationParameter_HighestSubindexSupported | RxPDO7 Kommunikationsparameter - Höchster unterstützter Subindex
1406.01h | COP_RxPDO7_CommunicationParameter_CobId | RxPDO7 Kommunikationsparameter - COB-ID benutzt durch RxPDO 7
1406.02h | COP_RxPDO7_CommunicationParameter_TransmissionType | RxPDO7 Kommunikationsparameter - Typ der Transmission
1406.03h | COP_RxPDO7_CommunicationParameter_InhibitTime | RxPDO7 Kommunikationsparameter - Inhibit-time
1414.00h | COP_RxPDO21_CommunicationParameter_HighestSubindexSupported | RxPDO21 Kommunikationsparameter - Höchster unterstützter Subindex
1414.01h | COP_RxPDO21_CommunicationParameter_CobId | RxPDO21 Kommunikationsparameter - COB-ID benutzt durch RxPDO 21
1414.02h | COP_RxPDO21_CommunicationParameter_TransmissionType | RxPDO21 Kommunikationsparameter - Typ der Transmission
1414.03h | COP_RxPDO21_CommunicationParameter_InhibitTime | RxPDO21 Kommunikationsparameter - Inhibit-time
1600.00h | COP_RxPDO1_Mapping_NumberOfMappedApplicationObjects | RxPDO1 Mapping - Anzahl der gemappten Obiekte in RxPDO 1
1600.01h | COP_RxPDO1_Mapping_1ApplicationObject | RxPDO1 Mapping - Erstes gemapptes Objekt
1600.02h | COP_RxPDO1_Mapping_2ApplicationObject | RxPDO1 Mapping - Zweites gemapptes Objekt
1600.03h | COP_RxPDO1_Mapping_3ApplicationObject | RxPDO1 Mapping - Drittes gemapptes Objekt
1600.04h | COP_RxPDO1_Mapping_4ApplicationObject | RxPDO1 Mapping - Viertes gemapptes Objekt
1600.05h | COP_RxPDO1_Mapping_5ApplicationObject | RxPDO1 Mapping - Fünftes gemapptes Objekt
1600.06h | COP_RxPDO1_Mapping_6ApplicationObject | RxPDO1 Mapping - Sechstes gemapptes Objekt
1600.07h | COP_RxPDO1_Mapping_7ApplicationObject | RxPDO1 Mapping - Siebtes gemapptes Objekt
1600.08h | COP_RxPDO1_Mapping_8ApplicationObject | RxPDO1 Mapping - Achtes gemapptes Objekt
1601.00h | COP_RxPDO2_Mapping_NumberOfMappedApplicationObjects | RxPDO2 Mapping - Anzahl der gemappten Obiekte in RxPDO 2
1601.01h | COP_RxPDO2_Mapping_1ApplicationObject | RxPDO2 Mapping - Erstes gemapptes Objekt
1601.02h | COP_RxPDO2_Mapping_2ApplicationObject | RxPDO2 Mapping - Zweites gemapptes Objekt
1601.03h | COP_RxPDO2_Mapping_3ApplicationObject | RxPDO2 Mapping - Drittes gemapptes Objekt
1601.04h | COP_RxPDO2_Mapping_4ApplicationObject | RxPDO2 Mapping - Viertes gemapptes Objekt
1601.05h | COP_RxPDO2_Mapping_5ApplicationObject | RxPDO2 Mapping - Fünftes gemapptes Objekt
1601.06h | COP_RxPDO2_Mapping_6ApplicationObject | RxPDO2 Mapping - Sechstes gemapptes Objekt
1601.07h | COP_RxPDO2_Mapping_7ApplicationObject | RxPDO2 Mapping - Siebtes gemapptes Objekt
1601.08h | COP_RxPDO2_Mapping_8ApplicationObject | RxPDO2 Mapping - Achtes gemapptes Objekt
1602.00h | COP_RxPDO3_Mapping_NumberOfMappedApplicationObjects | RxPDO3 Mapping - Anzahl der gemappten Obiekte in RxPDO 3
1602.01h | COP_RxPDO3_Mapping_1ApplicationObject | RxPDO3 Mapping - Erstes gemapptes Objekt
1602.02h | COP_RxPDO3_Mapping_2ApplicationObject | RxPDO3 Mapping - Zweites gemapptes Objekt
1602.03h | COP_RxPDO3_Mapping_3ApplicationObject | RxPDO3 Mapping - Drittes gemapptes Objekt
1602.04h | COP_RxPDO3_Mapping_4ApplicationObject | RxPDO3 Mapping - Viertes gemapptes Objekt
1602.05h | COP_RxPDO3_Mapping_5ApplicationObject | RxPDO3 Mapping - Fünftes gemapptes Objekt
1602.06h | COP_RxPDO3_Mapping_6ApplicationObject | RxPDO3 Mapping - Sechstes gemapptes Objekt
1602.07h | COP_RxPDO3_Mapping_7ApplicationObject | RxPDO3 Mapping - Siebtes gemapptes Objekt
1602.08h | COP_RxPDO3_Mapping_8ApplicationObject | RxPDO3 Mapping - Achtes gemapptes Objekt
1603.00h | COP_RxPDO4_Mapping_NumberOfMappedApplicationObjects | RxPDO4 Mapping - Anzahl der gemappten Obiekte in RxPDO 4
1603.01h | COP_RxPDO4_Mapping_1ApplicationObject | RxPDO4 Mapping - Erstes gemapptes Objekt
1603.02h | COP_RxPDO4_Mapping_2ApplicationObject | RxPDO4 Mapping - Zweites gemapptes Objekt
1603.03h | COP_RxPDO4_Mapping_3ApplicationObject | RxPDO4 Mapping - Drittes gemapptes Objekt
1603.04h | COP_RxPDO4_Mapping_4ApplicationObject | RxPDO4 Mapping - Viertes gemapptes Objekt
1603.05h | COP_RxPDO4_Mapping_5ApplicationObject | RxPDO4 Mapping - Fünftes gemapptes Objekt
1603.06h | COP_RxPDO4_Mapping_6ApplicationObject | RxPDO4 Mapping - Sechstes gemapptes Objekt
1603.07h | COP_RxPDO4_Mapping_7ApplicationObject | RxPDO4 Mapping - Siebtes gemapptes Objekt
1603.08h | COP_RxPDO4_Mapping_8ApplicationObject | RxPDO4 Mapping - Achtes gemapptes Objekt
1604.00h | COP_RxPDO5_Mapping_NumberOfMappedApplicationObjects | RxPDO5 Mapping - Anzahl der gemappten Obiekte in RxPDO 5
1604.01h | COP_RxPDO5_Mapping_1ApplicationObject | RxPDO5 Mapping - Erstes gemapptes Objekt
1604.02h | COP_RxPDO5_Mapping_2ApplicationObject | RxPDO5 Mapping - Zweites gemapptes Objekt
1604.03h | COP_RxPDO5_Mapping_3ApplicationObject | RxPDO5 Mapping - Drittes gemapptes Objekt
1604.04h | COP_RxPDO5_Mapping_4ApplicationObject | RxPDO5 Mapping - Viertes gemapptes Objekt
1604.05h | COP_RxPDO5_Mapping_5ApplicationObject | RxPDO5 Mapping - Fünftes gemapptes Objekt
1604.06h | COP_RxPDO5_Mapping_6ApplicationObject | RxPDO5 Mapping - Sechstes gemapptes Objekt
1604.07h | COP_RxPDO5_Mapping_7ApplicationObject | RxPDO5 Mapping - Siebtes gemapptes Objekt
1604.08h | COP_RxPDO5_Mapping_8ApplicationObject | RxPDO5 Mapping - Achtes gemapptes Objekt
1605.00h | COP_RxPDO6_Mapping_NumberOfMappedApplicationObjects | RxPDO6 Mapping - Anzahl der gemappten Obiekte in RxPDO 6
1605.01h | COP_RxPDO6_Mapping_1ApplicationObject | RxPDO6 Mapping - Erstes gemapptes Objekt
1605.02h | COP_RxPDO6_Mapping_2ApplicationObject | RxPDO6 Mapping - Zweites gemapptes Objekt
1605.03h | COP_RxPDO6_Mapping_3ApplicationObject | RxPDO6 Mapping - Drittes gemapptes Objekt
1605.04h | COP_RxPDO6_Mapping_4ApplicationObject | RxPDO6 Mapping - Viertes gemapptes Objekt
1605.05h | COP_RxPDO6_Mapping_5ApplicationObject | RxPDO6 Mapping - Fünftes gemapptes Objekt
1605.06h | COP_RxPDO6_Mapping_6ApplicationObject | RxPDO6 Mapping - Sechstes gemapptes Objekt
1605.07h | COP_RxPDO6_Mapping_7ApplicationObject | RxPDO6 Mapping - Siebtes gemapptes Objekt
1605.08h | COP_RxPDO6_Mapping_8ApplicationObject | RxPDO6 Mapping - Achtes gemapptes Objekt
1606.00h | COP_RxPDO7_Mapping_NumberOfMappedApplicationObjects | RxPDO7 Mapping - Anzahl der gemappten Obiekte in RxPDO 7
1606.01h | COP_RxPDO7_Mapping_1ApplicationObject | RxPDO7 Mapping - Erstes gemapptes Objekt
1606.02h | COP_RxPDO7_Mapping_2ApplicationObject | RxPDO7 Mapping - Zweites gemapptes Objekt
1606.03h | COP_RxPDO7_Mapping_3ApplicationObject | RxPDO7 Mapping - Drittes gemapptes Objekt
1606.04h | COP_RxPDO7_Mapping_4ApplicationObject | RxPDO7 Mapping - Viertes gemapptes Objekt
1606.05h | COP_RxPDO7_Mapping_5ApplicationObject | RxPDO7 Mapping - Fünftes gemapptes Objekt
1606.06h | COP_RxPDO7_Mapping_6ApplicationObject | RxPDO7 Mapping - Sechstes gemapptes Objekt
1606.07h | COP_RxPDO7_Mapping_7ApplicationObject | RxPDO7 Mapping - Siebtes gemapptes Objekt
1606.08h | COP_RxPDO7_Mapping_8ApplicationObject | RxPDO7 Mapping - Achtes gemapptes Objekt
1614.00h | COP_RxPDO21_Mapping_NumberOfMappedApplicationObjects | RxPDO21 Mapping - Anzahl der gemappten Obiekte in RxPDO 21
1614.01h | COP_RxPDO21_Mapping_1ApplicationObject | RxPDO21 Mapping - Erstes gemapptes Objekt
1614.02h | COP_RxPDO21_Mapping_2ApplicationObject | RxPDO21 Mapping - Zweites gemapptes Objekt
1614.03h | COP_RxPDO21_Mapping_3ApplicationObject | RxPDO21 Mapping - Drittes gemapptes Objekt
1614.04h | COP_RxPDO21_Mapping_4ApplicationObject | RxPDO21 Mapping - Viertes gemapptes Objekt
1614.05h | COP_RxPDO21_Mapping_5ApplicationObject | RxPDO21 Mapping - Fünftes gemapptes Objekt
1614.06h | COP_RxPDO21_Mapping_6ApplicationObject | RxPDO21 Mapping - Sechstes gemapptes Objekt
1614.07h | COP_RxPDO21_Mapping_7ApplicationObject | RxPDO21 Mapping - Siebtes gemapptes Objekt
1614.08h | COP_RxPDO21_Mapping_8ApplicationObject | RxPDO21 Mapping - Achtes gemapptes Objekt
1800.00h | COP_TxPDO1_CommunicationParameter_HighestSubindexSupported | TxPDO1 Kommunikationsparameter - Höchster unterstützter Subindex
1800.01h | COP_TxPDO1_CommunicationParameter_CobId | TxPDO1 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1800.02h | COP_TxPDO1_CommunicationParameter_TransmissionType | TxPDO1 Kommunikationsparameter - Typ der Transmission
1800.03h | COP_TxPDO1_CommunicationParameter_InhibitTime | TxPDO1 Kommunikationsparameter - Inhibit-time
1801.00h | COP_TxPDO2_CommunicationParameter_HighestSubindexSupported | TxPDO2 Kommunikationsparameter - Höchster unterstützter Subindex
1801.01h | COP_TxPDO2_CommunicationParameter_CobId | TxPDO2 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1801.02h | COP_TxPDO2_CommunicationParameter_TransmissionType | TxPDO2 Kommunikationsparameter - Typ der Transmission
1801.03h | COP_TxPDO2_CommunicationParameter_InhibitTime | TxPDO2 Kommunikationsparameter - Inhibit-time
1802.00h | COP_TxPDO3_CommunicationParameter_HighestSubindexSupported | TxPDO3 Kommunikationsparameter - Höchster unterstützter Subindex
1802.01h | COP_TxPDO3_CommunicationParameter_CobId | TxPDO3 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1802.02h | COP_TxPDO3_CommunicationParameter_TransmissionType | TxPDO3 Kommunikationsparameter - Typ der Transmission
1802.03h | COP_TxPDO3_CommunicationParameter_InhibitTime | TxPDO3 Kommunikationsparameter - Inhibit-time
1803.00h | COP_TxPDO4_CommunicationParameter_HighestSubindexSupported | TxPDO4 Kommunikationsparameter - Höchster unterstützter Subindex
1803.01h | COP_TxPDO4_CommunicationParameter_CobId | TxPDO4 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1803.02h | COP_TxPDO4_CommunicationParameter_TransmissionType | TxPDO4 Kommunikationsparameter - Typ der Transmission
1803.03h | COP_TxPDO4_CommunicationParameter_InhibitTime | TxPDO4 Kommunikationsparameter - Inhibit-time
1804.00h | COP_TxPDO5_CommunicationParameter_HighestSubindexSupported | TxPDO5 Kommunikationsparameter - Höchster unterstützter Subindex
1804.01h | COP_TxPDO5_CommunicationParameter_CobId | TxPDO5 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1804.02h | COP_TxPDO5_CommunicationParameter_TransmissionType | TxPDO5 Kommunikationsparameter - Typ der Transmission
1804.03h | COP_TxPDO5_CommunicationParameter_InhibitTime | TxPDO5 Kommunikationsparameter - Inhibit-time
1805.00h | COP_TxPDO6_CommunicationParameter_HighestSubindexSupported | TxPDO6 Kommunikationsparameter - Höchster unterstützter Subindex
1805.01h | COP_TxPDO6_CommunicationParameter_CobId | TxPDO6 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1805.02h | COP_TxPDO6_CommunicationParameter_TransmissionType | TxPDO6 Kommunikationsparameter - Typ der Transmission
1805.03h | COP_TxPDO6_CommunicationParameter_InhibitTime | TxPDO6 Kommunikationsparameter - Inhibit-time
1806.00h | COP_TxPDO7_CommunicationParameter_HighestSubindexSupported | TxPDO7 Kommunikationsparameter - Höchster unterstützter Subindex
1806.01h | COP_TxPDO7_CommunicationParameter_CobId | TxPDO7 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1806.02h | COP_TxPDO7_CommunicationParameter_TransmissionType | TxPDO7 Kommunikationsparameter - Typ der Transmission
1806.03h | COP_TxPDO7_CommunicationParameter_InhibitTime | TxPDO7 Kommunikationsparameter - Inhibit-time
1814.00h | COP_TxPDO21_CommunicationParameter_HighestSubindexSupported | TxPDO21 Kommunikationsparameter - Höchster unterstützter Subindex
1814.01h | COP_TxPDO21_CommunicationParameter_CobId | TxPDO21 Kommunikationsparameter - COB-ID benutzt durch TxPDO
1814.02h | COP_TxPDO21_CommunicationParameter_TransmissionType | TxPDO21 Kommunikationsparameter - Typ der Transmission
1814.03h | COP_TxPDO21_CommunicationParameter_InhibitTime | TxPDO21 Kommunikationsparameter - Inhibit-time
1A00.00h | COP_TxPDO1_Mapping_NumberOfMappedApplicationObjects | TxPDO1 Mapping - Anzahl der gemappten Obiekte in TxPDO 1
1A00.01h | COP_TxPDO1_Mapping_1ApplicationObject | TxPDO1 Mapping - Erstes gemapptes Objekt
1A00.02h | COP_TxPDO1_Mapping_2ApplicationObject | TxPDO1 Mapping - Zweites gemapptes Objekt
1A00.03h | COP_TxPDO1_Mapping_3ApplicationObject | TxPDO1 Mapping - Drittes gemapptes Objekt
1A00.04h | COP_TxPDO1_Mapping_4ApplicationObject | TxPDO1 Mapping - Viertes gemapptes Objekt
1A00.05h | COP_TxPDO1_Mapping_5ApplicationObject | TxPDO1 Mapping - Fünftes gemapptes Objekt
1A00.06h | COP_TxPDO1_Mapping_6ApplicationObject | TxPDO1 Mapping - Sechstes gemapptes Objekt
1A00.07h | COP_TxPDO1_Mapping_7ApplicationObject | TxPDO1 Mapping - Siebtes gemapptes Objekt
1A00.08h | COP_TxPDO1_Mapping_8ApplicationObject | TxPDO1 Mapping - Achtes gemapptes Objekt
1A01.00h | COP_TxPDO2_Mapping_NumberOfMappedApplicationObjects | TxPDO2 Mapping - Anzahl der gemappten Obiekte in TxPDO 2
1A01.01h | COP_TxPDO2_Mapping_1ApplicationObject | TxPDO2 Mapping - Erstes gemapptes Objekt
1A01.02h | COP_TxPDO2_Mapping_2ApplicationObject | TxPDO2 Mapping - Zweites gemapptes Objekt
1A01.03h | COP_TxPDO2_Mapping_3ApplicationObject | TxPDO2 Mapping - Drittes gemapptes Objekt
1A01.04h | COP_TxPDO2_Mapping_4ApplicationObject | TxPDO2 Mapping - Viertes gemapptes Objekt
1A01.05h | COP_TxPDO2_Mapping_5ApplicationObject | TxPDO2 Mapping - Fünftes gemapptes Objekt
1A01.06h | COP_TxPDO2_Mapping_6ApplicationObject | TxPDO2 Mapping - Sechstes gemapptes Objekt
1A01.07h | COP_TxPDO2_Mapping_7ApplicationObject | TxPDO2 Mapping - Siebtes gemapptes Objekt
1A01.08h | COP_TxPDO2_Mapping_8ApplicationObject | TxPDO2 Mapping - Achtes gemapptes Objekt
1A02.00h | COP_TxPDO3_Mapping_NumberOfMappedApplicationObjects | TxPDO3 Mapping - Anzahl der gemappten Obiekte in TxPDO 3
1A02.01h | COP_TxPDO3_Mapping_1ApplicationObject | TxPDO3 Mapping - Erstes gemapptes Objekt
1A02.02h | COP_TxPDO3_Mapping_2ApplicationObject | TxPDO3 Mapping - Zweites gemapptes Objekt
1A02.03h | COP_TxPDO3_Mapping_3ApplicationObject | TxPDO3 Mapping - Drittes gemapptes Objekt
1A02.04h | COP_TxPDO3_Mapping_4ApplicationObject | TxPDO3 Mapping - Viertes gemapptes Objekt
1A02.05h | COP_TxPDO3_Mapping_5ApplicationObject | TxPDO3 Mapping - Fünftes gemapptes Objekt
1A02.06h | COP_TxPDO3_Mapping_6ApplicationObject | TxPDO3 Mapping - Sechstes gemapptes Objekt
1A02.07h | COP_TxPDO3_Mapping_7ApplicationObject | TxPDO3 Mapping - Siebtes gemapptes Objekt
1A02.08h | COP_TxPDO3_Mapping_8ApplicationObject | TxPDO3 Mapping - Achtes gemapptes Objekt
1A03.00h | COP_TxPDO4_Mapping_NumberOfMappedApplicationObjects | TxPDO4 Mapping - Anzahl der gemappten Obiekte in TxPDO 4
1A03.01h | COP_TxPDO4_Mapping_1ApplicationObject | TxPDO4 Mapping - Erstes gemapptes Objekt
1A03.02h | COP_TxPDO4_Mapping_2ApplicationObject | TxPDO4 Mapping - Zweites gemapptes Objekt
1A03.03h | COP_TxPDO4_Mapping_3ApplicationObject | TxPDO4 Mapping - Drittes gemapptes Objekt
1A03.04h | COP_TxPDO4_Mapping_4ApplicationObject | TxPDO4 Mapping - Viertes gemapptes Objekt
1A03.05h | COP_TxPDO4_Mapping_5ApplicationObject | TxPDO4 Mapping - Fünftes gemapptes Objekt
1A03.06h | COP_TxPDO4_Mapping_6ApplicationObject | TxPDO4 Mapping - Sechstes gemapptes Objekt
1A03.07h | COP_TxPDO4_Mapping_7ApplicationObject | TxPDO4 Mapping - Siebtes gemapptes Objekt
1A03.08h | COP_TxPDO4_Mapping_8ApplicationObject | TxPDO4 Mapping - Achtes gemapptes Objekt
1A04.00h | COP_TxPDO5_Mapping_NumberOfMappedApplicationObjects | TxPDO5 Mapping - Anzahl der gemappten Obiekte in TxPDO 5
1A04.01h | COP_TxPDO5_Mapping_1ApplicationObject | TxPDO5 Mapping - Erstes gemapptes Objekt
1A04.02h | COP_TxPDO5_Mapping_2ApplicationObject | TxPDO5 Mapping - Zweites gemapptes Objekt
1A04.03h | COP_TxPDO5_Mapping_3ApplicationObject | TxPDO5 Mapping - Drittes gemapptes Objekt
1A04.04h | COP_TxPDO5_Mapping_4ApplicationObject | TxPDO5 Mapping - Viertes gemapptes Objekt
1A04.05h | COP_TxPDO5_Mapping_5ApplicationObject | TxPDO5 Mapping - Fünftes gemapptes Objekt
1A04.06h | COP_TxPDO5_Mapping_6ApplicationObject | TxPDO5 Mapping - Sechstes gemapptes Objekt
1A04.07h | COP_TxPDO5_Mapping_7ApplicationObject | TxPDO5 Mapping - Siebtes gemapptes Objekt
1A04.08h | COP_TxPDO5_Mapping_8ApplicationObject | TxPDO5 Mapping - Achtes gemapptes Objekt
1A05.00h | COP_TxPDO6_Mapping_NumberOfMappedApplicationObjects | TxPDO6 Mapping - Anzahl der gemappten Obiekte in TxPDO 6
1A05.01h | COP_TxPDO6_Mapping_1ApplicationObject | TxPDO6 Mapping - Erstes gemapptes Objekt
1A05.02h | COP_TxPDO6_Mapping_2ApplicationObject | TxPDO6 Mapping - Zweites gemapptes Objekt
1A05.03h | COP_TxPDO6_Mapping_3ApplicationObject | TxPDO6 Mapping - Drittes gemapptes Objekt
1A05.04h | COP_TxPDO6_Mapping_4ApplicationObject | TxPDO6 Mapping - Viertes gemapptes Objekt
1A05.05h | COP_TxPDO6_Mapping_5ApplicationObject | TxPDO6 Mapping - Fünftes gemapptes Objekt
1A05.06h | COP_TxPDO6_Mapping_6ApplicationObject | TxPDO6 Mapping - Sechstes gemapptes Objekt
1A05.07h | COP_TxPDO6_Mapping_7ApplicationObject | TxPDO6 Mapping - Siebtes gemapptes Objekt
1A05.08h | COP_TxPDO6_Mapping_8ApplicationObject | TxPDO6 Mapping - Achtes gemapptes Objekt
1A06.00h | COP_TxPDO7_Mapping_NumberOfMappedApplicationObjects | TxPDO7 Mapping - Anzahl der gemappten Obiekte in TxPDO 7
1A06.01h | COP_TxPDO7_Mapping_1ApplicationObject | TxPDO7 Mapping - Erstes gemapptes Objekt
1A06.02h | COP_TxPDO7_Mapping_2ApplicationObject | TxPDO7 Mapping - Zweites gemapptes Objekt
1A06.03h | COP_TxPDO7_Mapping_3ApplicationObject | TxPDO7 Mapping - Drittes gemapptes Objekt
1A06.04h | COP_TxPDO7_Mapping_4ApplicationObject | TxPDO7 Mapping - Viertes gemapptes Objekt
1A06.05h | COP_TxPDO7_Mapping_5ApplicationObject | TxPDO7 Mapping - Fünftes gemapptes Objekt
1A06.06h | COP_TxPDO7_Mapping_6ApplicationObject | TxPDO7 Mapping - Sechstes gemapptes Objekt
1A06.07h | COP_TxPDO7_Mapping_7ApplicationObject | TxPDO7 Mapping - Siebtes gemapptes Objekt
1A06.08h | COP_TxPDO7_Mapping_8ApplicationObject | TxPDO7 Mapping - Achtes gemapptes Objekt
1A14.00h | COP_TxPDO21_Mapping_NumberOfMappedApplicationObjects | TxPDO21 Mapping - Anzahl der gemappten Obiekte in TxPDO 21
1A14.01h | COP_TxPDO21_Mapping_1ApplicationObject | TxPDO21 Mapping - Erstes gemapptes Objekt
1A14.02h | COP_TxPDO21_Mapping_2ApplicationObject | TxPDO21 Mapping - Zweites gemapptes Objekt
1A14.03h | COP_TxPDO21_Mapping_3ApplicationObject | TxPDO21 Mapping - Drittes gemapptes Objekt
1A14.04h | COP_TxPDO21_Mapping_4ApplicationObject | TxPDO21 Mapping - Viertes gemapptes Objekt
1A14.05h | COP_TxPDO21_Mapping_5ApplicationObject | TxPDO21 Mapping - Fünftes gemapptes Objekt
1A14.06h | COP_TxPDO21_Mapping_6ApplicationObject | TxPDO21 Mapping - Sechstes gemapptes Objekt
1A14.07h | COP_TxPDO21_Mapping_7ApplicationObject | TxPDO21 Mapping - Siebtes gemapptes Objekt
1A14.08h | COP_TxPDO21_Mapping_8ApplicationObject | TxPDO21 Mapping - Achtes gemapptes Objekt


Inhalt - Parameter 1000h (DS301) - Parameterspeicher

1010.00h | COP_StoreParameters_HighestSubindexSupported | Parameterspeicher - Höchster unterstützter Subindex
1010.01h | COP_StoreParameters_All | Parameterspeicher - Alle Parameter speichern
1010.02h | COP_StoreParameters_Communication | Parameterspeicher - Kommunikationsparameter speichern
1010.03h | COP_StoreParameters_Application | Parameterspeicher - Applikationsparameter speichern


1010.00h Parameterspeicher - Höchster unterstützter Subindex

Name | COP_StoreParameters_HighestSubindexSupported
Bezeichnung | Parameterspeicher - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 06h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_StoreParameters_All, COP_StoreParameters_Communication, COP_StoreParameters_Application, ,

Beschreibung

Mit diesem Objekt werden Parameterbereiche remanent im Gerät gespeichert.

Folgende Parametergruppen werden unterstützt:
  • Sub-index 00h enthält die Anzahl der unterstützen Subindizes.
  • Sub-index 01h - Speichert alle Parameter des Gerätes.
  • Sub-index 02h - Speichert die Kommunikationsparameter (Index von 1000h bis 1FFFh).
  • Sub-index 03h - Speichert die Applikationsparameter (Index von 6000h bis 9FFFh).
  • Sub-index 05h - Speichert Herstellerspezifische Parameter Bereich 1 (Index von 2000h bis 2FFFh)
  • Sub-index 06h - Speichert Herstellerspezifische Parameter Bereich 2 (Index von 3000h bis 3FFFh)
Zur Vermeidung des unbeabsichtigten Speicherns, wird ein spezielles Codewort benötigt, welches auf den entsprechenden Subindex geschrieben wird. Es werden die ASCII-Zeichen für "save" geschrieben:

Storage write access signature

Nach Schreiben des korrekten Codes auf den entsprechenden Subindexes, werden die Parameter gespeichert. Nach erfolgtem Speichern erfolgt die Rückbestätigung des Schreibbefehls (SDO download initiate response). Wenn das Speichern fehlschlägt, antwortet das Gerät mit einer SDO Abbruch Messages (abort code: 0606 0000h).
Wird ein falscher Code geschrieben, wird das Speichern abgelehnt und das Gerät antwortet mit einer Abbruch Message
(abort code: 0800 002xh).
Beim Lesen des entsprechenden Subindexes liefert das Gerät Informationen über die Speicherfunktionalität nach folgendem Format:

Storage read access structure

Struktur des gelesenen Wertes:

Bit | Wert | Beschreibung
auto | 0b 1b | Das CANopen- Gerät speichert keine Parameter selbständig Das CANopen- Gerät speichert Parameter selbständig
cmd | 0b 1b | Das CANopen- Gerät speichert keine Parameter per Kommando Das CANopen- Gerät speichert Parameter per Kommando
Selbständiges Speichern bedeutet, das dass CANopen-Gerät die Parameter selbstätig im remanenten Speicher ablegt ohne speziellen Speicherbefehl .


1010.01h Parameterspeicher - Alle Parameter speichern

Name | COP_StoreParameters_All
Bezeichnung | Parameterspeicher - Alle Parameter speichern
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SaveParam_All()
Querverweis | COP_StoreParameters_HighestSubindexSupported, COP_StoreParameters_Communication, COP_StoreParameters_Application, ,

Beschreibung

Das Objekt steuert das Speichern aller Parameter im nichtflüchtigen Speicher.

Siehe auch COP_StoreParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x1010,0x01,0x65766173,timeout=21000)   # alle Parameter speichern


1010.02h Parameterspeicher - Kommunikationsparameter speichern

Name | COP_StoreParameters_Communication
Bezeichnung | Parameterspeicher - Kommunikationsparameter speichern
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SaveParam_Comm()
Querverweis | COP_StoreParameters_HighestSubindexSupported, COP_StoreParameters_All, COP_StoreParameters_Application, ,

Beschreibung

Das Objekt speichert die Kommunikationsparameter im nichflüchtigen Speicher. (Index 1000h - 1FFFh) .

Siehe auch COP_StoreParameters_HighestSubindexSupported.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x1010,0x02,0x65766173,timeout=21000)   # Parameter speichern


1010.03h Parameterspeicher - Applikationsparameter speichern

Name | COP_StoreParameters_Application
Bezeichnung | Parameterspeicher - Applikationsparameter speichern
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | SaveParam_App()
Querverweis | COP_StoreParameters_HighestSubindexSupported, COP_StoreParameters_All, COP_StoreParameters_Communication, ,

Beschreibung

Das Objekt speichert die Applikationsparameter im nichflüchtigen Speicher. (index from 6000h to 9FFFh) .

Siehe auch COP_StoreParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x1010,0x03,0x65766173,timeout=21000)   # Parameter speichern


Inhalt - Parameter 1000h (DS301) - Defaultparameter wiederherstellen

1011.00h | COP_RestoreDefaultParameters_HighestSubindexSupported | Defaultparameter wiederherstellen - Höchster unterstützter Subindex
1011.01h | COP_RestoreDefaultParameters_All | Defaultparameter wiederherstellen - Alle Defaultparameter wiederherstellen
1011.02h | COP_RestoreDefaultParameters_Communication | Defaultparameter wiederherstellen - Kommunikationsdefaultparameter wiederherstellen
1011.03h | COP_RestoreDefaultParameters_Application | Defaultparameter wiederherstellen - Applikationsdefaultparameter wiederherstellen


1011.00h Defaultparameter wiederherstellen - Höchster unterstützter Subindex

Name | COP_RestoreDefaultParameters_HighestSubindexSupported
Bezeichnung | Defaultparameter wiederherstellen - Höchster unterstützter Subindex
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [01h .. 7Fh]
Defaultwert | 06h
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | COP_RestoreDefaultParameters_All, COP_RestoreDefaultParameters_Communication, COP_RestoreDefaultParameters_Application, ,

Beschreibung

Mit diesem Objekt werden Parameterbereiche entsprechend Kommunikationsprofil des Gerätes auf Werkseinstellungen zurückgesetzt.

Folgende Parametergruppen werden unterstützt:
  • Sub-index 00h enthält die Anzahl der unterstützen Subindizes.
  • Sub-index 01h - Rücksetzen aller Parameter des Gerätes.
  • Sub-index 02h - Rücksetzen der Kommunikationsparameter (Index von 1000h bis 1FFFh).
  • Sub-index 03h - Rücksetzen der Applikationsparameter (Index von 6000h bis 9FFFh).
  • Sub-index 05h - Rücksetzen der Herstellerspezifischen Parameter Bereich 1 (Index von 2000h bis 2FFFh)
  • Sub-index 06h - Rücksetzen der Herstellerspezifischen Parameter Bereich 2 (Index von 3000h bis 3FFFh)
Zur Vermeidung des unbeabsichtigten Rücksetzens, wird ein spezielles Codewort benötigt, welches auf den entsprechenden Subindex geschrieben wird. Es werden die ASCII-Zeichen für "load" geschrieben:

Restore default write access signature

Nach Schreiben des korrekten Codes auf den entsprechenden Subindexes, werden die Parameter auf Default zurückgesetzt. Nach erfolgtem Rücksetzen erfolgt die Rückbestätigung des SDO-Schreibbefehls (SDO download initiate response). Wenn das Rücksetzen fehlschlägt, antwortet das Gerät mit einer SDO Abbruch Messages (abort code: 0606 0000h).
Wird ein falsche Code geschrieben, wird das Rücksetzen abgeleht und das Gerät antwortet mit einer Abbruch Message
(abort code: 0800 002xh).

Die Defaultwerte werden nach Reset des Gerätes übernommen (NMT Service Reset Node für Subindex von 01h, 03h, 05h, 06h, NMT Service Reset Kommunikations für Subindex (02h) oder Spannungsreset.

Beim Lesen des entsprechenden Subindexes liefert das Gerät Informationen über die Restore-Funktionalität nach folgendem Format:

Restore default read access structure

Struktur des gelesenen Wertes:

Bit | Wert | Beschreibung
cmd | 0b 1b | CANopen - Gerät unterstützt kein Rücksetzen der Parameter CANopen - Gerät unterstützt Rücksetzen der Parameter


1011.01h Defaultparameter wiederherstellen - Alle Defaultparameter wiederherstellen

Name | COP_RestoreDefaultParameters_All
Bezeichnung | Defaultparameter wiederherstellen - Alle Defaultparameter wiederherstellen
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | LoadParam_All()
Querverweis | COP_RestoreDefaultParameters_HighestSubindexSupported, COP_RestoreDefaultParameters_Communication, COP_RestoreDefaultParameters_Application, ,

Beschreibung

Mit diesem Objekt werden alle Parameter im Gerät zurückgesetzt.

Siehe auch COP_RestoreDefaultParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x1011,0x01,0x64616F6C)                 # Alle Defaultparameter wiederherstellen


1011.02h Defaultparameter wiederherstellen - Kommunikationsdefaultparameter wiederherstellen

Name | COP_RestoreDefaultParameters_Communication
Bezeichnung | Defaultparameter wiederherstellen - Kommunikationsdefaultparameter wiederherstellen
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | LoadParam_Comm()
Querverweis | COP_RestoreDefaultParameters_HighestSubindexSupported, COP_RestoreDefaultParameters_All, COP_RestoreDefaultParameters_Application, ,

Beschreibung

Mit diesem Objekt werden die Kommunikationsparameter auf Default rückgesetzt (Index 1000h - 1FFFh) .

Siehe auch COP_RestoreDefaultParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x1011,0x02,0x64616F6C)                 # Defaultparameter wiederherstellen


1011.03h Defaultparameter wiederherstellen - Applikationsdefaultparameter wiederherstellen

Name | COP_RestoreDefaultParameters_Application
Bezeichnung | Defaultparameter wiederherstellen - Applikationsdefaultparameter wiederherstellen
Datentyp | uint32
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | -
Defaultwert | 0
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | LoadParam_App()
Querverweis | COP_RestoreDefaultParameters_HighestSubindexSupported, COP_RestoreDefaultParameters_All, COP_RestoreDefaultParameters_Communication, ,

Beschreibung

Mit diesem Objekt werden die Applikationsparameter rückgesetzt (Index 6000h - 9FFFh).

Siehe auch COP_RestoreDefaultParameters_HighestSubindexSupported

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

d.SdoWr(0x1011,0x03,0x64616F6C)                 # Defaultparameter wiederherstellen


Inhalt - Parameter 2000h

2000.00h | DS2000_CopConfigParam_HighestSubindexSupported | CANopen Konfiguration - Höchster unterstützter Subindex
2000.01h | DS2000_CopConfigParam_WriteEnable | CANopen Konfiguration - Schreibfreigabe
2000.02h | DS2000_CopConfigParam_UserNodeId | CANopen Konfiguration - Benutzer Node-ID
2000.03h | DS2000_CopConfigParam_UserBaudrate | CANopen Konfiguration - Benutzer Baudrate
2000.04h | DS2000_CopConfigParam_AutoOperational | CANopen Konfiguration - Auto Operational
2000.05h | DS2000_CopConfigParam_MessageOnBootup | CANopen Konfiguration - Nachricht beim Bootup
2009.00h | DS2000_CpuCommand_HighestSubindexSupported | CPU Kommando - Höchster unterstützter Subindex
2009.01h | DS2000_CpuCommand_WriteEnable | CPU Kommando - Schreibfreigabe
2009.03h | DS2000_CpuCommand_DelayTime | CPU Kommando - Verzögerungszeit
2011.00h | DS2000_RestoreDefaultParameters_HighestSubindexSupported | Defaultparameter wiederherstellen - Höchster unterstützter Subindex
2011.01h | DS2000_RestoreDefaultParameters_All | Defaultparameter wiederherstellen - Alle Defaultparameter wiederherstellen
2011.02h | DS2000_RestoreDefaultParameters_Communication | Defaultparameter wiederherstellen - Kommunikationsdefaultparameter wiederherstellen
2011.03h | DS2000_RestoreDefaultParameters_Application | Defaultparameter wiederherstellen - Applikationsdefaultparameter wiederherstellen
2011.05h | DS2000_RestoreDefaultParameters_Manufacturer_0x2000 | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x2000-0x2FFF)
2011.06h | DS2000_RestoreDefaultParameters_Manufacturer_0x3000 | Defaultparameter wiederherstellen - Herstellersdefaultparameter wiederherstellen (Bereich 0x3000-0x3FFF)
2021.00h | DS2000_SyncProducer_HighestSubindexSupported | Sync Producer - Höchster unterstützter Subindex
2021.01h | DS2000_SyncProducer_Enable | Sync Producer - Aktivierung


Inhalt - Parameter 2000h - CPU Kommando

2009.00h | DS2000_CpuCommand_HighestSubindexSupported | CPU Kommando - Höchster unterstützter Subindex
2009.01h | DS2000_CpuCommand_WriteEnable | CPU Kommando - Schreibfreigabe
2009.03h | DS2000_CpuCommand_DelayTime | CPU Kommando - Verzögerungszeit


2009.03h CPU Kommando - Verzögerungszeit

Name | DS2000_CpuCommand_DelayTime
Bezeichnung | CPU Kommando - Verzögerungszeit
Datentyp | uint16
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | {0, 65535}
Defaultwert | 100
Einheit | [ms]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | -
Querverweis | DS2000_CpuCommand_WriteEnable,

Beschreibung

Der Parameter definiert die Verzögerungszeit des CPU-Kommandos.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId

d.SdoWr(0x2009, 0x03, 100)                      # Verzögerungszeit des Kommandos in ms
d.SdoWr(0x2009, 0x01, 0x6E657277)               # Schreiben aktivieren
try:
   d.SdoWr(0x2009, 0x02, 0x9999, timeout=50)    # CPU-Reset
except:
   pass


Inhalt - Parameter 3000h (DSA)

3000.00h | DEV_Cmd | Gerätekommando
3000.08h | DEV_Cmd_SetError | Gerätekommando - Fehlersetzen
3001.00h | DEV_ErrorReg | Error Register
3002.00h | DEV_Status | Statusregister
3020.00h | DEV_Code | Gerätecode
3020.01h | DEV_SubCode | Gerätesubcode
3020.02h | DEV_Revision | Revisionscode
3020.06h | DEV_McCpuId | CPU Kennungscode
3023.00h | DEV_VersionSw | Softwareversion
3023.01h | DEV_SubVersionSw | Softwaresubversion
3023.02h | DEV_RelVersionSw | Software release
3024.00h | DEV_VersionHw | Hardwareversion
3025.00h | DEV_CustomerCode | Kundencode
3025.01h | DEV_CustomerSwOption | Kundencode der Software
3025.02h | DEV_CustomerHwOption | Kundencode der Hardware
302C.00h | DEV_FreeData | Freie Daten
302D.01h | DEV_Article_Nr | Artikelnummer des Gerätes
302D.02h | DEV_Serial_Nr | Seriennummer des Gerätes
302E.00h | DEV_OemData_Cmd | OEM Daten - Kommando
302E.01h | DEV_OemData_D0 | OEM Daten - D0
302E.02h | DEV_OemData_D1 | OEM Daten - D1
302E.03h | DEV_OemData_D2 | OEM Daten - D2
302E.04h | DEV_OemData_D3 | OEM Daten - D3
302E.05h | DEV_OemData_D4 | OEM Daten - D4
302E.06h | DEV_OemData_D5 | OEM Daten - D5
302E.07h | DEV_OemData_D6 | OEM Daten - D6
302E.08h | DEV_OemData_D7 | OEM Daten - D7
302E.09h | DEV_OemData_D8 | OEM Daten - D8
302E.0Ah | DEV_OemData_D9 | OEM Daten - D9
302F.00h | DEV_UserData_Cmd | Benutzer Daten - Kommando
302F.01h | DEV_UserData_D0 | Benutzer Daten - D0
302F.02h | DEV_UserData_D1 | Benutzer Daten - D1
302F.03h | DEV_UserData_D2 | Benutzer Daten - D2
302F.04h | DEV_UserData_D3 | Benutzer Daten - D3
3031.00h | DEV_MaxUp | Max. I/O Versorgungsspannung
3060.00h | DEV_DoutError | Ausgangszuordnung - Fehler
3100.00h | IO_AIN0 | Analoger Eingang 0
3101.00h | IO_AIN1 | Analoger Eingang 1
3108.00h | IO_AIN0_Offset | Analoger Eingang 0 - Offset
3108.01h | IO_AIN1_Offset | Analoger Eingang 1 - Offset
3110.00h | IO_AIN_Voltage_Ue | Elektronikspannung - Ue
3114.00h | IO_AIN_Temperature_Power | Temperatur - Elektronik
3120.00h | IO_DIN_P0 | Digitale Eingänge - Port0
3120.01h | IO_DIN_P1 | Digitale Eingänge - Port1
3150.00h | IO_DOUT_P0 | Digitale Ausgänge - Port0
3154.00h | IO_DOUT_Enable | Freigabe der digitalen Ausgänge
3158.00h | IO_DOUT_LedsEnable | LED - Benutzersteuerung aktivieren
3158.01h | IO_DOUT_LedsState | LED - Zustand
3850.00h | SYS_Clock | System Clock
3850.02h | SYS_Timer_2ms | System Timer 2ms
3CE0.00h | COM_ASI_Cmd | ASI-Kommando
3CE0.06h | COM_ASI_Baudrate | ASI-Baudrate
3F00.00h | DIAG_Enable | Diagnostik - Schreibfreigabe
3FA0.00h | DIAG_SIM_Control | Diagnostik - Aktivierung der Simulation der E/A's
3FA1.00h | DIAG_SIM_AIN_Mask | Diagnostik - Ain-Simulation - Maske
3FA2.00h | DIAG_SIM_AIN_ValueAin0 | Diagnostik - Ain-Simulation - Wert von Ain0
3FA2.01h | DIAG_SIM_AIN_ValueAin1 | Diagnostik - Ain-Simulation - Wert von Ain1
3FA3.00h | DIAG_SIM_DIN_Mask | Diagnostik - Din-Simulation - Maske
3FA4.00h | DIAG_SIM_DIN_Value | Diagnostik - Din-Simulation - Wert der digitalen Eingänge


Inhalt - Parameter 3000h (DSA) - Gerätekommandos

3000.00h | DEV_Cmd | Gerätekommando
3000.08h | DEV_Cmd_SetError | Gerätekommando - Fehlersetzen


3000.00h Gerätekommando

Name | DEV_Cmd
Bezeichnung | Gerätekommando
Datentyp | uint8
Zugriff | nur Schreiben
Attribute | -
Wertbereich | {0h, 1h, 80h, 81h, 82h, 83h}
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.20
Geräte | Alle
PLC Funktion | Cmd(value)
Querverweis | -

Beschreibung

Beim Beschreiben dieses Parameters wird ein Gerätekommando ausgeführt.

Parameterwerte:
Hex | Dec | Name | PLC Funktion | Beschreibung
00h | 0 | CMD_Nop | - | Keine Wirkung
01h | 1 | CMD_ClearError | ClearError() | Eventueller Fehler wird gelöscht. Falls der Antriebsregler vor dem Auftreten des Fehlers freigegeben war, wird der Betrieb wieder freigegeben (vorausgesetzt, die Fehlerursache wurde behoben bzw. kein weiterer Fehler liegt vor).
80h | 128 | CMD_StoreParam | StoreParam() | Alle aktuellen Parameterwerte aus dem 3000er Bereich werden in einem internen EEPROM (nichtflüchtiger Speicher) gespeichert.
81h | 129 | CMD_RestoreParam | RestoreParam() | Die im EEPROM gespeicherten Parameter werden geladen und aktiviert. Dies passiert auch automatisch in der Initialisierungsphase des Gerätes. Bei dem Vorgang wird eine Kontrollsumme (CRC32) der Parameter überprüft. Falls sie nicht korrekt ist, werden alle Parameter auf Defaultwert gesetzt, und das Gerät geht in einen Fehlerzustand über.
82h | 130 | CMD_DefaultParam | DefaultParam() | Alle Parameter werden auf Defaultwert gesetzt (Dabei werden die Werte nicht im EEPROM gespeichert).
83h | 131 | CMD_ClearParam | ClearParam() | Es werden die CMD_DefaultParam und CMD_StoreParam - Kommandos hintereinander ausgeführt.
Achtung
Ausführungszeit von CMD_StoreParam, CMD_RestoreParam, CMD_DefaultParam, CMD_ClearParam beträgt einige Sekunden.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                    # NodeId = 1

d.SdoWr(0x3000, 0x00, 0x01)   # Fehler löschen
d.SdoWr(0x3000, 0x00, 0x82)   # Parameter zurücksetzen


3000.08h Gerätekommando - Fehlersetzen

Name | DEV_Cmd_SetError
Bezeichnung | Gerätekommando - Fehlersetzen
Datentyp | int16
Zugriff | nur Schreiben
Attribute | -
Wertbereich | [-32768 .. 32767]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.71.01.11
Geräte | Alle
PLC Funktion | SetError(value)
Querverweis | DEV_Cmd

Beschreibung

Mit Hilfe von diesem Parameter kann der Benutzer eigene Fehler setzen bzw. einen Fehler simulieren.
Beim Setzen des Parameters wird eine allgemeine interne Fehlerprozedur mit dem übergebenen Wert aufgerufen. Dabei wird der Parameter DEV_ErrorReg auf diesen Wert gesetzt.

Achtung !
Wenn dieser Parameter mit einem Wert kleiner 0 beschrieben wird, geht das Gerät in ein Fehlerzustand über.

Fehlercodes <= -30000 können nicht durch ein "ClearError" Kommando zurückgesetzt werden, da Sie schwerwiegende Fehler darstellen. Um diese Fehler zu löschen, starten Sie das Gerät neu.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                            # NodeId = 1

d.SdoWr(0x3000, 0x08, -20001)         # eigene Fehler setzen


3002.00h Statusregister

Name | DEV_Status
Bezeichnung | Statusregister
Datentyp | uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | GetStatus()
Querverweis | DEV_Cmd

Beschreibung

Liefert den Wert vom Statusregister zurück. Jedes Bit des Statusregisters hat eine eigene Bedeutung (siehe Tabelle).

Bitbelegung:
Bit | Name | Beschreibung für Bitwert = 1
1 | STAT_Error | Fehler ist aufgetreten. Fehlercode ist in DEV_ErrorReg.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                             # NodeId = 1

status = d.SdoRd(0x3002, 0x00)         # Status lesen

if status & 0x0002:                    # Bit 1 vom status auswerten
   print "Ein Fehler ist aufgetreten"
else:
   print "Kein Fehler"


3031.00h Max. I/O Versorgungsspannung

Name | DEV_MaxUp
Bezeichnung | Max. I/O Versorgungsspannung
Datentyp | const uint32
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 4294967295]
Defaultwert | -
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | DevMaxUp()
Querverweis | -

Beschreibung

Liefert den maximal zulässigen Wert der I/O Versorgungsspannung des Gerätes zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                                      # NodeId = 1

# DEV_MaxUp - ausgeben der max. Leistungsspannung
print "Up_max =", d.SdoRd(0x3031, 0x00), "[mV]"


Inhalt - Parameter 3000h (DSA) - Ein- Ausgangszuordnung

3060.00h

DEV_DoutError

 Ausgangszuordnung - Fehler


Inhalt - Parameter 3000h (DSA) - Analoge Eingänge

3100.00h | IO_AIN0 | Analoger Eingang 0
3101.00h | IO_AIN1 | Analoger Eingang 1
3108.00h | IO_AIN0_Offset | Analoger Eingang 0 - Offset
3108.01h | IO_AIN1_Offset | Analoger Eingang 1 - Offset


3100.00h Analoger Eingang 0

Name | IO_AIN0
Bezeichnung | Analoger Eingang 0
Datentyp | int16
Zugriff | nur Lesen
Attribute | -
Wertbereich | [-10000 .. 10000]
Defaultwert | -
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | Ain(nr)
Querverweis | IO_AIN0_Offset,

Beschreibung

Liefert den Wert der Spannung in [mV] am analogen Eingang 0 zurück.

Der Wert des Parameters wird nach folgender Formel berechnet:

Uain = Uad - Uoffset

wobei:
    Uain     - Wert des Parameters IO_AIN0
    Uad      - Wert vom A/D Wandler (A/D = Analog/Digital)
    Uoffset  - Wert des Parameters IO_AIN0_Offset

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                           # NodeId = 1

for i in range(0,10):
   print d.SdoRd(0x3100, 0x00), "mV" # Spannung am analogen Eingang 0 abfragen
   time.sleep(1)                     # 1 Sekunde warten


3108.00h Analoger Eingang 0 - Offset

Name | IO_AIN0_Offset
Bezeichnung | Analoger Eingang 0 - Offset
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-10000 .. 10000]
Defaultwert | 0
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.85.00.76
Geräte | Alle
PLC Funktion | AinOffset(nr, value)
Querverweis | IO_AIN0,

Beschreibung

Mit dem Parameter kann ein Offset des analogen Eingangs 0 gesetzt werden.

Der Wert des Parameters IO_AIN0 wird nach folgender Formel berechnet:

Uain = Uad - Uoffset

wobei:
    Uain     - Wert des Parameters IO_AIN0
    Uad      - Wert vom A/D Wandler (A/D = Analog/Digital)
    Uoffset  - Wert des Parameters IO_AIN0_Offset

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                           # NodeId = 1

d.SdoWr(0x310A, 0x00, -3000)         # IO_AIN0_DeadBand - 3000 mV

for i in range(0,10):
   d.SdoWr(0x3108, 0x00, i*1000)     # IO_AIN0_Offset - 1000 mV, 2000 mV, 3000 mV ... 9000 mV
   print d.SdoRd(0x3100, 0x00), "mV" # IO_AIN0 - Spannung am analogen Eingang 0 abfragen
   time.sleep(1)                     # 1 Sekunde warten


3108.01h Analoger Eingang 1 - Offset

Name | IO_AIN1_Offset
Bezeichnung | Analoger Eingang 1 - Offset
Datentyp | int16
Zugriff | Lesen / Schreiben
Attribute | Speicherbar
Wertbereich | [-10000 .. 10000]
Defaultwert | 0
Einheit | [mV]
Betriebsart | Alle
Verfügbar ab | 1.85.00.76
Geräte | Alle
PLC Funktion | AinOffset(nr, value)
Querverweis | IO_AIN1,

Beschreibung

Mit dem Parameter kann ein Offset des analogen Eingangs 1 gesetzt werden.

Der Wert des Parameters IO_AIN1 wird nach folgender Formel berechnet:

Uain = Uad - Uoffset

wobei:
    Uain     - Wert des Parameters IO_AIN1
    Uad      - Wert vom A/D Wandler (A/D = Analog/Digital)
    Uoffset  - Wert des Parameters IO_AIN1_Offset

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                           # NodeId = 1

d.SdoWr(0x310A, 0x01, 3000)          # IO_AIN1_DeadBand - 3000 mV

for i in range(0,10):
   d.SdoWr(0x3108, 0x01, i*1000)     # IO_AIN1_Offset - 1000 mV, 2000 mV, 3000 mV ... 9000 mV
   print d.SdoRd(0x3101, 0x00), "mV" # IO_AIN1 - Spannung am analogen Eingang 0 abfragen
   time.sleep(1)                     # 1 Sekunde warten


3114.00h Temperatur - Elektronik

Name | IO_AIN_Temperature_Power
Bezeichnung | Temperatur - Elektronik
Datentyp | int16
Zugriff | nur Lesen
Attribute | -
Wertbereich | -
Defaultwert | -
Einheit | [0.1°C]
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | AinTemp()
Querverweis | -

Beschreibung

Liefert die aktuelle Temperatur der Elektronik des Gerätes zurück.

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                 # NodeId = 1

# Aktuelle Temperatur abfragen
for i in range(0,10):
   print "T =", d.SdoRd(0x3114, 0x00)/10.0, "°C"
   time.sleep(1)           # 1 Sekunde warten


3120.00h Digitale Eingänge - Port0

Name | IO_DIN_P0
Bezeichnung | Digitale Eingänge - Port0
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | DinP0(), Din(nr)
Querverweis | -

Beschreibung

Liefert den aktuellen Zustand der digitalen Eingänge des Gerätes zurück.

Die Anzahl der digitalen Eingänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Bitbelegung:
Bit-Nr. | Bedeutung
0 | digitaler Eingang 0
1 | digitaler Eingang 1
2 | digitaler Eingang 2
3 | digitaler Eingang 3
4 | digitaler Eingang 4
5 | digitaler Eingang 5
6 | digitaler Eingang 6
7 | digitaler Eingang 7

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                             # NodeId = 1

for i in range(0,10):
   print hex(d.SdoRd(0x3120, 0x00))    # Zustand der Eingänge in HEX ausgeben
   time.sleep(1)                       # 1 Sekunde warten


3120.01h Digitale Eingänge - Port1

Name | IO_DIN_P1
Bezeichnung | Digitale Eingänge - Port1
Datentyp | uint8
Zugriff | nur Lesen
Attribute | -
Wertbereich | [0 .. 255]
Defaultwert | -
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.00.00.00
Geräte | Alle
PLC Funktion | Din(nr)
Querverweis | -

Beschreibung

Liefert den aktuellen Zustand der digitalen Eingänge des Gerätes zurück.

Die Anzahl der digitalen Eingänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten).

Bitbelegung:
Bit-Nr. | Bedeutung
0 | digitaler Eingang 8
1 | digitaler Eingang 9
2 | digitaler Eingang 10
3 | digitaler Eingang 11
4 | digitaler Eingang 12
5 | digitaler Eingang 13
6 | digitaler Eingang 14
7 | digitaler Eingang 15

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *
import time

d = Dsa(1)                             # NodeId = 1

for i in range(0,10):
   print hex(d.SdoRd(0x3120, 0x01))    # Zustand der Eingänge in HEX ausgeben
   time.sleep(1)                       # 1 Sekunde warten


3154.00h Freigabe der digitalen Ausgänge

Name | IO_DOUT_Enable
Bezeichnung | Freigabe der digitalen Ausgänge
Datentyp | uint8
Zugriff | Lesen / Schreiben
Attribute | -
Wertbereich | [0h .. FFh]
Defaultwert | FFh
Einheit | -
Betriebsart | Alle
Verfügbar ab | 1.85.00.08
Geräte | Alle
PLC Funktion | -
Querverweis | DEV_DoutError, IO_DOUT_P0, ,

Beschreibung

Mit dem Parameter können die digitalen Ausgänge freigegeben oder gesperrt werden.

Die Freigabe gilt nur für den Parameter 3150.00h (IO_DOUT_P0), die Firmware selbst kann die Ausgänge jedoch weiterhin setzen.
Die Sperre verhindert, dass der Zustand des digitalen Ausgangs unbeabsichtigt bzw. unberechtigt geändert wird, wenn der Ausgang bereits durch interne Funktionen der Firmware genutzt wird (z.B. durch Bremsmanagement, Fehlerausgang usw.).

Die Anzahl der digitalen Ausgänge, die zur Verfügung stehen, ist vom Gerät abhängig (siehe technische Daten des Gerätes).

Bitbelegung:
Bit-Nr. | Bedeutung
0 | digitaler Ausgang 0 (=1 freigegeben, =0 gesperrt)
1 | digitaler Ausgang 1 (=1 freigegeben, =0 gesperrt)
2 | digitaler Ausgang 2 (=1 freigegeben, =0 gesperrt)
3 | digitaler Ausgang 3 (=1 freigegeben, =0 gesperrt)
4 | digitaler Ausgang 4 (=1 freigegeben, =0 gesperrt)
5 | digitaler Ausgang 5 (=1 freigegeben, =0 gesperrt)
6 | digitaler Ausgang 6 (=1 freigegeben, =0 gesperrt)
7 | digitaler Ausgang 7 (=1 freigegeben, =0 gesperrt)

Beispiel

# -*- coding: iso-8859-1 -*-
from mc.dsa import *

d = Dsa(1)                  # NodeId = 1

# Freigeben der digitalen Ausgänge von Port0 mit Bitmaske
set_dout = 0x02             # Nur Bit 1 freigeben (dout1)
d_out = (d.SdoRd(0x3154, 0x00) | set_dout)
d.SdoWr(0x3154, 0x00, d_out)

# Sperren der digitalen Ausgänge von Port0 mit Bitmaske
reset_dout = 0x01          # Nur Bit 0 sperren (dout0)
d_out = (d.SdoRd(0x3154, 0x00) & ~reset_dout)
d.SdoWr(0x3154, 0x00, d_out)

# Ausgeben des Freigabezustandes von Port0
print "enable_Dout =", hex(d.SdoRd(0x3154, 0x00))


Inhalt - MPU2

Einleitung

Sprachelemente

Eingebaute Funktionen

Wie erstelle ich ein neues MPU2 Programm?

Wie führe ich das MPU2 Programm auf dem Gerät aus?

Fernsteuerung eines MPU Programms

Compiler

Ausführungszeit

Diagnose/Simulationsmodus

Beispiele


Einleitung

Was ist "MPU2"?

Die Geräte der Firma ENGEL sind vielseitig einsetzbar. Um die vorhandene Funktionalität optimal an die Gegebenheiten in der Anwendung anzupassen, hat der Nutzer die Möglichkeit, kleine anwendungsspezifische Programme zu schreiben. MPU ist die Abkürzung für "Motion Process Unit". Dies ist eine von ENGEL entwickelte Einheit zur Programmierung von logischen Verknüpfungen und Abläufen (SPS-Funktionalität). Die erste Version der MPU basierte auf einer assemblerähnlichen Syntax. Um schnellere Entwicklung zu ermöglichen, wurde MPU2 entwickelt. Die zweite Version der MPU ist angelehnt an die Programmiersprache "Python".

Was ist "Python"?

Auszug aus Wikipedia:

"Python ist eine universelle, üblicherweise interpretierte höhere Programmiersprache. Ihre Entwurfsphilosophie betont Programmlesbarkeit. Von den meisten verbreiteten Programmiersprachen unterscheidet sie sich dadurch, dass Blöcke durch gleiche Einrückung begrenzt werden, und nicht durch Klammern (C, C++) oder Schlüsselwörter (Pascal). Python unterstützt mehrere Programmierparadigmen. So werden objektorientierte, aspektorientierte und funktionale Programmierung unterstützt. Wie andere dynamische Sprachen wird Python oft als Skriptsprache genutzt. Die Sprache hat ein offenes, gemeinschaftsbasiertes Entwicklungsmodell, gestützt durch die gemeinnützige Python Software Foundation, die de facto die Definition der Sprache in der Referenzumsetzung CPython pflegt. Python gilt als einfach zu erlernende Sprache (Lernkurve), da sie über eine klare und übersichtliche Syntax verfügt."

Warum ist "MPU2" an "Python" angelehnt?

Die Programmiersprache Python besitzt entscheidende Vorteile, von denen MPU2 profitieren kann:
  • einfache Syntax
  • leicht zu erlernen
  • gut lesbar
  • weit verbreitet

Unterschiede von "MPU2" zu "Python"

MPU2 verfügt nur über eine Untermenge der Python Funktionalität.

Es existieren folgende Beschränkungen:
  • Keine Klassen
  • Keine Real-Zahlen (Real-Konstanten werden mathematisch in Integer32 umgewandelt)
  • Keine Listen
  • Keine Tuples
  • Keine Strings
  • Nur maximal ein Rückgabewert bei Funktionen
  • "import" nur in folgender Form: from my_modul import *
Weitere Unterschiede:
  • Der Quellcode wird kompiliert statt interpretiert

Unterschiede von "MPU2" zu "MPU"

Die wichtigsten Unterschiede zwischen den beiden MPU Generationen:
  • MPU basierte auf einer assemblerähnlichen Syntax. MPU2 wiederum ist an die Pythonsyntax angelehnt.
  • Der Programmierer muss nicht mehr mit dem "Akku" oder den Registern "0x5050 1...7" arbeiten. Der Compiler erledigt dies automatisch.


Sprachelemente

Zeileneinrückung

Anweisungszeilen, welche hintereinander die gleiche Einrückung haben, bilden einen Anweisungsblock. Es entspricht der Klammer { /*Anweisungen*/ } aus der C-Sprache.

# Python / MPU2:
if a == 100:
   b = 1
   c = 2
   d = 3

# Basic:
if a=100 then
   b = 1
   c = 2
   d = 3
endif

# 'C':
if (a==100)
{
   b = 1;
   c = 2;
   d = 3;
}

Kommentare

Kommentare im Quellcode sind sinnvoll um Hinweise über komplexere Anweisungen im Programm zu geben. Dies erleichtert die Wartung des Quellcodes.

#              <---- Mit einem Rautenzeichen fängt eine Kommentarzeile an.

'''            <---- Zeichen (3 x ') für Anfang und Ende eines Blockkommentars.
Kommentar
'''

Variablen

Es ist möglich, einer Zahl einen Namen zuzuweisen. Schreiben Sie dazu den Namen der Variable auf der linken Seite und das entsprechende Literal auf der rechten Seite des Gleichheitszeichens.

my_var = 12                         # Zuweisung einer Variable

my_var1 = my_var2 = my_var3 = 222   # Zuweisung mehrerer Variablen mit dem selben Wert
Diese Variablen können nach der Zuweisung innerhalb des Programs verwendet werden, indem anstelle des gewünschten Wertes der Name der Variable angegeben wird.

my_result = my_var + 20             # Zuweisung einer Variable
Das Ergebnis dieser Operation wurde direkt einem anderen Variablennamen ("my_result") zugewiesen. "my_result" hat nun den Wert 32.

Der Name einer Variable, auch als Bezeichner bekannt, kann aus allen Buchstaben des englischen Alphabets, einem Unterstrich "_" und allen Ziffern bestehen. Dabei muss mindestens ein führender Buchstabe oder Unterstrich verwendet werden. Ziffern sind als führendes Zeichen nicht zulässig. Die Variablennamen werden "case sensitive" behandelt. Das bedeutet, dass zwischen Groß- und Kleinschreibung unterschieden wird. "my_result" entspricht nicht "my_Result".

Folgende Bezeichner sind sogenannte Schlüsselwörter und dürfen nicht als Variablennamen genutzt werden:

and
assert
break
class
continue
def
del
elif
else
except
exec
finally
for
from
global
if
import
in
is
lambda
not
or
pass
print
raise
return
try
while
yield
Alle Variablen und Konstanten in MPU2 sind vom Datentyp Int32!

Konstanten

Konstanten sind Binärzahlen, welche sich während der Laufzeit des Programms nicht ändern. Diese werden beim Kompilieren des MPU2 Programms von dem Compiler optimiert und an allen Stellen des Programmes wieder durch die entsprechenden Zahlen ersetzt. Im kompilierten Programm tauchen die Konstanten somit nicht mehr auf.

Folgende Bezeichner werden als Konstanten interpretiert:

FACTOR = 123               # Alles groß geschrieben
ERR_DrehzahlZuKlein = -50  # Alles vor erstem "_" groß geschrieben
Während der Kompilierung werden die Konstanten optimiert. Dabei rechnet der Compiler Ausdrücke mit Konstanten aus und ersetzt diese durch die Ergebnisse der Berechnung.

a = FACTOR + 5*6           # Der Compiler rechnet den Ausdruck "FACTOR + 5*6" aus und ersetzt ihn durch 153.

Alle Variablen und Konstanten in MPU2 sind vom Datentyp Int32!

Achtung: Konstanten werden zum Schluss der Berechnung gerundet!

Operationen

Arithmetische Operationen

Ein arithmetischer Operator wird auf zwei Binärzahlen angewendet.

x = 11 ** 2    # x = 121     Potenz (linke Seite hoch rechte Seite)

x = 11 * 2     # x = 22      Multiplikation zweier Werte
x = 11 / 2     # x = 5       Ganzzahlige Division zweier Werte
x = 11 % 2     # x = 1       Modulo (Rest einer Division)

x = 11 + 1     # x = 12      Addition zweier Werte
x = 11 - 1     # x = 10      Subtraktion zweier Werte

# Verkürzte Schreibweisen
x *= 2         # entspricht: x = x * 2
x /= 2         # entspricht: x = x / 2
x %= 2         # entspricht: x = x % 2

x += 1         # entspricht: x = x + 1
x -= 1         # entspricht: x = x - 1

Logische Operationen

Ein logischer Operator ist eine Funktion, die einen Wahrheitswert liefert. FALSCH entspricht dem Wert 0. Alle Werte ungleich 0 entsprechen WAHR.

a = b < c      # a ist WAHR wenn b kleiner c ist
a = b <= c     # a ist WAHR wenn b kleiner oder gleich c ist
a = b > c      # a ist WAHR wenn b größer c ist
a = b >= c     # a ist WAHR wenn b größer oder gleich c ist
a = b <> c     # a ist WAHR wenn b ungleich c ist
a = b != c     # a ist WAHR wenn b ungleich c ist
a = b == c     # a ist WAHR wenn b gleich c ist

a = b is c     # a ist WAHR wenn b gleich c ist
a = b is not c # a ist WAHR wenn b ungleich c ist

a = not b      # a ist WAHR wenn b gleich 0 ist

a = b and c    # a ist WAHR wenn b und c ungleich 0 sind

a = b or c     # a ist WAHR wenn mindestens ein Wert der Variablen b oder c ungleich 0 ist

Bitweise Operationen

Ein bitweiser Operator wird auf Bitfolgen oder Binärzahlen auf der Ebene einzelner Bits angewendet.

# NICHT / NOT
~x             # Einerkomplement => Logische Negation jedes einzelnen Bits (jede 1 wird zu 0 und umgekehrt)
               # ~ 0111
               # = 1000

# VERSCHIEBUNG LINKS / LEFT SHIFT
x << y         # Die Bits werden um y-Stellen nach Links hinausgeschoben. Dabei wird von Rechts mit Nullen aufgefüllt.
               #    00111100
               # <<        2
               # =  11110000
# VERSCHIEBUNG RECHTS / RIGHT SHIFT
x >> y         # Die Bits werden um y-Stellen nach Rechts hinausgeschoben. Dabei wird von Links mit dem Vorzeichenbit aufgefüllt.
               #    11110000           01110000
               # >>        2        >>        2
               # =  11111100        =  00011100

# UND / AND
x & y          # Zwei Bitfolgen gleicher Länge werden durch ein UND verknüpft, indem jeweils die Bits gleicher Stelle durch eine logische Konjunktion verknüpft werden.
               # Bei jedem Paar ist das Ergebnisbit 1, falls beide Bits 1 sind, ansonsten ist das Ergebnisbit 0.
               #   0101
               # & 0011
               # = 0001

# EXKLUSIV ODER / XOR
x ^ y          # Zwei Bitfolgen gleicher Länge werden durch ein EXKLUSIV ODER verknüpft, indem jeweils die Bits gleicher Stelle durch eine logische XOR-Operation verknüpft werden.
               # Bei jedem Paar ist das Ergebnisbit 1, falls beide Bits unterschiedlich sind, ansonsten ist das Ergebnisbit 0.
               #   0010
               # ^ 1010
               # = 1000

# ODER / OR
x | y          # Zwei Bitfolgen gleicher Länge werden durch ein ODER verknüpft, indem jeweils die Bits gleicher Stelle durch eine logische Disjunktion verknüpft werden.
               # Bei jedem Paar ist das Ergebnisbit 1, falls mindestens eines der Bits 1 ist, ansonsten ist das Ergebnisbit 0.
               #   0101
               # | 0011
               # = 0111

# Verkürzte Schreibweisen
x <<= y        # entspricht: x = x << y
x >>= y        # entspricht: x = x >> y

x  &= y        # entspricht: x = x  & y

x  ^= y        # entspricht: x = x  ^ y

x  |= y        # entspricht: x = x  | y

Operatorrangfolge

Kommen mehrere Operatoren innerhalb eines Ausdrucks vor, werden diese nach einer festgelegten Reihenfolge abgearbeitet. Der erste Operator in der Tabelle bindet im Vergleich zu den anderen am stärksten.

x ** y | y-te Potenz von x
~x | Bitweises Komplement von x
+x, -x | Positives oder negatives Vorzeichen
x * y x / y x % y x // y | Produkt von x und y Quotient von x und y (Zurzeit ganzzahlige Division da MPU2 nur in Int32 rechnet) Rest bei ganzzahliger Division von x durch y Ganzzahlige Division von x durch y
x + y x – y | Summe von x und y Differenz von x und y
x << n x >> n | Bitweise Verschiebung um n Stellen nach links Bitweise Verschiebung um n Stellen nach rechts
x & y | Bitweises UND zwischen x und y
x ^ y | Bitweises exklusives ODER zwischen x und y
x | y | Bitweises ODER zwischen x und y
x < y x <= y x > y x >= y x <> y x != y x == y | Ist x kleiner als y? Ist x kleiner oder gleich y? Ist x größer als y? Ist x größer oder gleich y? Ist x ungleich y? Ist x ungleich y? Ist x gleich y?
x is y x is not y | Sind x und y identisch? Sind x und y nicht identisch?
not x | Logische Negierung
x and y | Logisches UND
x or y | Logisches ODER

Funktionen

In MPU2 können eigene Funktionen definiert werden. Die Funktionen können ohne Rückgabewert oder mit maximal einem Rückgabewert implementiert werden.

#=================================================================
# Eigene Funktion ohne Rückgabewert
def SetError(error_code):
   Sp(0x3000, 0x08, error_code)           # Gerätekommando - Fehlersetzen

# Aufruf der Funktion
SetError(-1000)

#=================================================================
# Eigene Funktion mit Rückgabewert
def GetPosition():
   position = Gp(0x3762, 0x00)            # Aktuelle Position (Istposition)
   return position

# Aufruf der Funktion
my_position = GetPosition()

#=================================================================
# Eigene Funktion mit Rückgabewert und mehreren Übergabeparametern
def GetScaledPosition(scaling_numerator, scaling_denominator):
   position = Gp(0x3762, 0x00)            # Aktuelle Position (Istposition)
   return ScaleDbl(position, scaling_numerator, scaling_denominator) # position * (scaling_numerator/scaling_denominator)

# Aufruf der Funktion
my_position = GetScaledPosition(2, 3)     # Skaliert die aktuelle Position um den Faktor 2/3

Fallunterscheidungen

Fallunterscheidungen knüpfen einen Codeblock an eine Bedingung, sodass er nur ausgeführt wird, wenn die Bedingung erfüllt ist.

if, elif, else

Eine if-Anweisung besteht aus einem Anweisungskopf, der eine Bedingung enthält, und aus einem Codeblock als Anweisungskörper.

Wenn die logische Bedingung WAHR ist, wird der Codeblock ausgeführt. (siehe Logische Operatoren)

# Einfache 'if'-Anweisung
condition = 1
if condition:
   DoSomething()                                # Codeblock wird abgearbeitet wenn die Bedingung WAHR ist
else:
   DoSomethingDifferent()                       # Codeblock wird abgearbeitet wenn die Bedingung FALSCH ist

# 'if'-Anweisung mit mehreren Abfragen
var = 3
if var == 1:
   DoSomething()                                # Codeblock wird abgearbeitet wenn die Bedingung 'var == 1' WAHR ist
elif var == 2:
   DoSomethingTest()                            # Codeblock wird abgearbeitet wenn alle früheren Bedingungen FALSCH sind und die Bedingung 'var == 2' WAHR ist
else:
   DoSomethingDifferent()                       # Codeblock wird abgearbeitet wenn alle früheren Bedingungen FALSCH sind

Schleifen

while

Eine while-Schleife dient dazu, einen Codeblock fortlaufend auszuführen, so lange eine bestimmte Bedingung erfüllt ist.
Grundsätzlich besteht eine while-Schleife aus einem Schleifenkopf, in dem die Bedingung steht, sowie einem Schleifenkörper, der dem auszuführenden Codeblock entspricht.

# Einfache 'while'-Schleife
condition = 1
while condition:
   condition = DoSomething(i)                   # Prüft die Bedingung der 'while'-Schleife
   DoSomethingDifferent()

# Unendliche 'while'-Schleife
while 1:
   pass                                         # Leere Anweisung

Ähnlich wie eine if-Anweisung kann eine while-Schleife um einen else-Zweig erweitert werden.

# 'while'-Schleife mit 'else'-Zweig
condition = 1
while condition:
   condition = DoSomething(i)                   # Prüft die Bedingung der 'while'-Schleife
   another_condition = DoSomethingDifferent(i)  # Prüft eine weitere Bedingung
   if another_condition:                        # Ist die zweite Bedingung erfüllt, wird die 'while'-Schleife durch das 'break' abgebrochen
      break
else:
   DoSomethingDifferent()                       # Der 'else'-Zweig wird angesprungen, wenn die 'while'-Schleife nicht durch ein 'break' abgebrochen wurde

for

Eine for-Schleife dient dazu, einen Codeblock mit einer bestimmten Anzahl von Durchläufen erneut auszuführen.
Grundsätzlich besteht eine for-Schleife aus einem Schleifenkopf, in dem die Bedingung steht, sowie einem Schleifenkörper, der dem auszuführenden Codeblock entspricht.

# Einfache 'for'-Schleife mit Endwert
for i in xrange(10):       # entspricht: for i in xrange(0, 10):
   DoSomething(i)          # Durchläuft die Schleife und inkrementiert i jedes mal um 1
                           # Hierbei nimmt i die Werte 0, 1, 2, 3, 4, 5, 6, 7, 8 und 9 an.

# 'for'-Schleife mit angegebenen Startwert, Endwert und Schrittweite
for i in xrange(2, 20, 5):
   DoSomething(i)          # Durchläuft die Schleife und inkrementiert i jedes mal um 5
                           # Hierbei nimmt i die Werte 2, 7, 12, und 17 an.

# Rückwärts laufende 'for'-Schleife mit angegebenen Startwert, Endwert und Schrittweite
for i in xrange(10, 0, -1):
   DoSomething(i)          # Durchläuft die Schleife und dekrementiert i jedes mal um 1
                           # Hierbei nimmt i die Werte 10, 9, 8, 7, 6, 5, 4, 3, 2 und 1 an.

# Einfache 'for'-Schleife mit 'continue'
for i in xrange(10):
   condition = DoSomething(i)    # Prüft eine Bedingung
   if condition:                 # Ist die Bedingung erfüllt, wird die 'for'-Schleife durch das 'continue' mit dem nächsten
      continue                   # Durchlauf fortgesetzt, ohne dass 'DoSomethingDifferent()' abgearbeitet wurde
   DoSomethingDifferent()
Ähnlich wie eine if-Anweisung kann eine for-Schleife um einen else-Zweig erweitert werden.

# Einfache 'for'-Schleife mit 'else'-Zweig
for i in xrange(10):
   condition = DoSomething(i)    # Prüft eine Bedingung
   if condition:                 # Ist die Bedingung erfüllt, wird die 'for'-Schleife durch das 'break' abgebrochen
      break
else:
   DoSomethingDifferent()        # Der 'else'-Zweig wird angesprungen, wenn die 'for'-Schleife nicht durch ein 'break' abgebrochen wurde


Eingebaute Funktionen

Folgende Funktionen stehen in MPU2 zur Verfügung:

Funkionsaufruf
 Beschreibung
 Beispiel

Sp(index, subindex, value)

Lokalen Parameter setzen

index = Index des Parameters
subindex = Subindex des Parameters
value = zu setzender Wert

Sp(0x3000, 0x10, 1500)

Gp(index, subindex)

Lokalen Parameter lesen

index = Index des Parameters
subindex = Subindex des Parameters

Result = Gp(0x3002, 0x00)

Spx(index, subindex, value)

Parameter eines externen Geräts setzen

index = Index des Parameters
subindex = Subindex des Parameters
value = zu setzender Wert

Spx(0x3000, 0x10, 1500)

Spx(node_id, index, subindex, value)

Parameter eines externen Geräts setzen

node_id = Node ID des externen Geräts
index = Index des Parameters
subindex = Subindex des Parameters
value = zu setzender Wert

Spx(15, 0x3000, 0x10, 1500)

Gpx(index, subindex)

Parameter eines externen Geräts lesen

index = Index des Parameters
subindex = Subindex des Parameters

Result = Gpx(0x3002, 0x00)

Gpx(node_id, index, subindex)

Parameter eines externen Geräts lesen

node_id = Node ID des externen Geräts
index = Index des Parameters
subindex = Subindex des Parameters

Result = Gpx(7, 0x3002, 0x00)

SpxGpx_NodeId(node_id)

CANopen Knotenadresse für Spx und Gpx setzen

node_id = Node ID des externen Geräts

SpxGpx_NodeId(7)

SpxGpx_Timeout(time_ms)

Timeout in [ms] für Spx und Gpx setzen

time_ms = Timeout-Zeit in Millisekunden

SpxGpx_Timeout(500)

SpxGpx_TxCobId(tx_cob_id)

TxCobId für Spx und Gpx setzen

tx_cob_id = COB-ID für SDO

SpxGpx_TxCobId(0x600)

SpxGpx_RxCobId(rx_cob_id)

RxCobId für Spx und Gpx setzen

rx_cob_id = COB-ID für SDO

SpxGpx_RxCobId(0x580)

abs(value)

Bildet den Absolutwert einer Zahl

value = Wert aus dem der Absolutwert gebildet wird

Result = abs(-34599)

Delay(time_ms)

MPU Programm wartet aktiv für die angegebene Zeit in [ms] => vorsichtig einsetzen!

time_ms = Wartezeit in Millisekunden

Delay(1000)

Clock()

Liefert die aktuelle Systemzeit in [ms] zurück

timestamp = Clock()

DiffClock(timestamp)

Liefert die Differenz der aktuellen Systemzeit zu dem übergebenen Zeitstempel in [ms] zurück. Überlaufgeschützt.

timestamp = Zeitstempel, zwischen dem die Differenz der aktuellen Zeit gebildet wird

Result = DiffClock(timestamp)

Scale(value, nominator, denominator)

Liefert skalierten Wert zurück. Berechnung erfolgt in float, danach gerundet und als Int32 gecastet. value * (nominator/denominator)

value = Zu skalierender Grundwert
nominator = Zähler des Skalierungsfaktors
denominator = Nenner des Skalierungsfaktors

Result = Scale(1900, 17, 32)

ScaleDbl(value, nominator, denominator)

Liefert skalierten Wert zurück. Berechnung erfolgt in double, danach gerundet und als Int32 gecastet. value * (nominator/denominator)

value = Zu skalierender Grundwert
nominator = Zähler des Skalierungsfaktors
denominator = Nenner des Skalierungsfaktors

Result = ScaleDbl(2000, 5, 7)

Boost(value)

Gewichtung der zugeteilten Rechenzeit für die MPU wird verändert (auf Kosten der Kommunikation)

value = Größe der Gewichtung der Rechenzeit

Boost(10)

Boostshot(steps)

Einmalige Erhöhung der zugeteilten Rechenzeit für die nächsten Schritte(steps) in der MPU und beginnt die nachfolgenden Schritt in einem neuen Rechenzyklus. Nach Ablauf der Schritte wird wieder auf die zuvor eingestellte Rechenzeit umgeschaltet.

steps = Anzahl der Schritt die in einem Zyklus mit Erhöhter Rechenzeit abgearbeitet werden

Boostshot(4)

MpuSet(nr, value)

Internen MPU Parameter setzen

nr = Nummer des internen MPU Parameters
value = Zu setzender Wert

MpuSet(0x100, 0x0101 )

MpuGet(nr)

Internen MPU Parameter lesen

nr = Nummer des internen MPU Parameters

Result = MpuGet(0x100)

Addr(variable)

Liefert die Adresse der übergebenen Variable als 4Byte Wert (0x00IIIISS) zurück, wo IIII=Index, SS=Subindex.

variable = Name der Variablen, dessen Adresse geliefert werden soll

Adresse = Addr(meine_variable)

DefUserVar(name, value, descr, min_value, max_value)

Definiert eine globale Benutzer Variable, welche eine unveränderliche Adresse zugewiesen bekommt. DefUserVar Variablen werden immer die ersten Adressen zugewiesen bekommen. Diese Variablen können durch den Befehlt "Store" ( MPU_Cmd - MPU_CMD_Store) auch im EEPROM gespeichert werden, und werden somit beim Neustart des Reglers nicht neu initialisiert.

name = Name der Variable
value = Wert,mit welcher die Variable initialisiert wird
descr = Beschreibung der Variable (Information für die externen Applikationen, wird nicht im Programm ausgewertet)
min_value = kleinster zulässiger Wert, den die Variable annehmen darf (Information für die externen Applikationen, wird nicht im Programm ausgewertet)
max_value = größter zulässiger Wert, den die Variable annehmen darf (Information für die externen Applikationen, wird nicht im Programm ausgewertet)

DefUserVar(name = "meine_variable", value = 10, descr = "Beispiel Variable", min_value = 0x0, max_value = 0xFFFF)


Wie erstelle ich ein neues MPU2 Programm?

Es gibt verschiedene Möglichkeiten um ein neues MPU2 Programm zu erstellen. Entscheiden Sie selbst, welche Möglichkeit besser zu Ihren Anforderungen passt.

1. Neues Programm erstellen mit edcTools

Wenn Sie das Gerät über edcTools konfigurieren möchten, können Sie die fertige Konfiguration als MPU2 Programm exportieren.
Dies erstellt ein Template mit einer Initialisierungsroutine, um ihre Konfiguration beim Start des MPU2 Programms zu laden.

Vorgehensweise

  1. Öffnen Sie edcTools und verbinden Sie Ihr Gerät mit dem PC, oder klicken Sie auf "Virtuelles Gerät hinzufügen (offline)".

  2. Klicken Sie nun auf DC Konfiguration.

  3. Führen Sie die Parametrierung des Gerätes durch.
  4. Nachdem Sie alle Parameter nach Ihren Anforderungen konfiguriert haben, klicken Sie auf den Reiter "Export".
  5. Wählen Sie auf der rechten Seite das Exportformat "MPU2 Programm" aus.
  6. Wählen Sie direkt darunter den gewünschten Exportfilter aus.
    "Nur geänderte Parameter" wird empfohlen um die Übersichtlichkeit Ihres Programms zu wahren.
  7. Klicken Sie auf "Speichern als" und wählen Sie einen passenden Dateinamen für Ihr MPU2 Programm aus.
  8. Schließen Sie nun edcTools und Öffnen Sie die erstellte Datei im "PLC - Python Script".
  9. Fügen Sie Ihre gewünschte Logik in die MainLoop des Programms ein (unterhalb "while 1:").

2. Neues Programm erstellen mit dem MPU-Template

Wenn Sie keine Initialisierung des Geräts benötigen oder Sie bereits wissen, welche Parameter geändert werden müssen, können Sie folgendes Template einfach an Ihre Bedürfnisse anpassen.

# -*- coding: iso-8859-1 -*-
#*===========================================================================*#
#*        Copyright (c) 1997-2013 by ENGEL. All rights reserved.         *#
#*                                                                           *#
#* File     : mpu2_template.py                                               *#
#*                                                                           *#
#* Project  : PLC                                                           *#
#* System   : MPU2                                                           *#
#* Version  : 1.00                                                           *#
#* Company  : ENGEL                                                      *#
#*                                                                           *#
#* Author   : ENGEL             mailto:                                  *#
#* Date     : 25.01.2013                                                     *#
#*---------------------------------------------------------------------------*#
#* Customer : ENGEL                                                      *#
#* Name     : Support                                                        *#
#* OrderNr. :                                                                *#
#* Descr.   : MPU-Programmvorlage                                            *#
#* History  :                                                                *#
#*===========================================================================*#
from mc._pymc_builtins_ import *          # Import für Simulation am PC

# Globale Variablen zur Programmidentifikation --------------------------------
DefUserVar(name="AppId",      value=0x00000001, descr="App Identifikations Nummer", min_value=0,   max_value=0xFFFFFFFF)   # eindeutige ID der Applikation
#AppId       = 0x00000001               # eindeutige ID der Applikation
DefUserVar(name="AppVersion", value=0x01000102, descr="App Versions Nummer",        min_value=0,   max_value=0xFFFFFFFF)   # Version der Applikation zB. 01.00.01.02
#AppVersion  = 0x01000102               # Version der Applikation zB. 01.00.01.02

# Globale Variablen für Benutzerinterface -------------------------------------
DefUserVar(name="Cmd",  value=0, descr="Kommando",    min_value=0,   max_value=0xFF)   # Kommando
DefUserVar(name="Mode", value=7, descr="Betriebsart", min_value=0,   max_value=0xFF)   # Betriebsart
#Cmd         = 0                        # Kommando
#Mode        = 7                        # Betriebsart

# Konstanten ------------------------------------------------------------------
# Compiler interpretiert folgende Symbole als Konstanten:
#     FACTOR = 123                     # Alles groß geschrieben
#     ERR_DrehzahlZuKlein = -50        # Alles vor erstem "_" groß geschrieben
BOOSTLEVEL  = 10                       # MPU Boost Level (zur Beschleunigung der Ausführung)
CONST_OTHER = 0x10

# Globale Hilfsvariablen ------------------------------------------------------
LoopCnt = 0
LastCmd = 0

# Initialisierung - Simulation-------------------------------------------------
if not PYMC:
   '''
   Dieser Abschnitt wird ausgeführt, wenn das Program direkt im PLC gestartet wird.
   Dadurch wird das MPU2 Programm am Rechner simuliert (in Verbindung mit dem Gerät).
   Dies ermöglich eine vereinfachte Diagnose, da "print" Befehle möglich werden.
   ACHTUNG: Das Zeitverhalten des Programms verändert sich, da die Ausführung der Sp()/Gp() Funktionen
   durch die Kommunikation zwischen PC und Gerät verzögert wird.

   Wenn Sie keine Simulation möchten, starten Sie das Programm über die Run() Funktion.
   '''
   SpGp_NodeId(1)                      # NodeId des Geräts für Sp()/Gp() Funktionen festlegen (für Simulation)
   Sp(0x5000,0, 3)                     # evtl. vorhandenes MPU2-Programm auf dem Gerät anhalten (stört sonst Simulation)

# Hilfsfunktion(en) -----------------------------------------------------------
def Func1 (par1):
   return par1

# Initialisierung - Steuerung -------------------------------------------------
def InitPars ():
   # Beispielparametrierung eines Reglers => Muss individuell an Ihre Anwendung angepasst werden

   Sp(0x3004,0, 0)                     # Endstufe deaktivieren

   Sp(0x3000,0, 0x01)                  # Fehler löschen
   Sp(0x3000,0, 0x82)                  # Standardeinstellungen laden

   Sp(0x3900,0, 1)                     # MotorTyp = bürstenlos

   Sp(0x3350,0, 0x096A)                # Vel/Pos-Rückführung von Inkrementalencoder
   Sp(0x3550,0, 0x096A)                # SVels-Rückführung von Inkrementalencoder

   Sp(0x3962,0, 2000)                  # Encoder Auflösung

   Sp(0x3732,0, 1000)                  # Positionsschleppfehler - Fenster

   Sp(0x3210,0, 100)                   # Stromregler Kp
   Sp(0x3211,0, 100)                   # Stromregler Ki

   Sp(0x3310,0, 100)                   # Vel/Pos-Regler Kp
   Sp(0x3311,0, 0)                     # Vel/Pos-Regler Ki
   Sp(0x3312,0, 0)                     # Vel/Pos-Regler Kd
   Sp(0x3314,0, 1000)                  # Vel/Pos-Regler Kvff

   Sp(0x3510,0, 100)                   # SVel-Regler Kp
   Sp(0x3511,0, 100)                   # SVel-Regler Ki

   Sp(0x3003,0, Mode)                  # Mode = Positioniermodus

# Hauptprogramm ===============================================================
Boost(BOOSTLEVEL)                      # MPU Boost Level setzen
InitPars()                             # Initialisierung durchführen

# Hauptschleife ---------------------------------------------------------------
while 1:
   LoopCnt += 1

   #- Kommandoauswertung ------------------------------------------------------
   # Code wird nur ausgeführt wenn neues Kommando geschickt wurde
   if Cmd != LastCmd:
      if Cmd == 0:
         pass     # Nichts tun => zB. zum Zurücksetzen des letzten Kommandos

      elif Cmd == 1:
         Func1(0)

      else:
         Sp(0x3000, 0x08, 0xFF06)      # Fehler setzen "unbekanntes Kommando"
      LastCmd = Cmd

Erläuterung des Templates

Das Template wurde entworfen um die Übersicht über ein MPU2 Programm zu vereinfachen. Wenn Sie sich an das Template halten, wird dies die spätere Wartung des Programms enorm vereinfachen.

Header

Beginnen Sie mit dem Header und tragen Sie alle vorhandenen Informationen über Ihr Programm hier ein.

Globale Variablen zur Programmidentifikation

Vergeben Sie einen Identifier für Ihr Programm und eine Versionsnummer. Dies erleichtert die Diagnose im Feldeinsatz, da Sie direkt auslesen können, welche Version Ihres Programms auf den Geräten eingesetzt wird.

Benutzen Sie die Funktion DefUserVar() um die Variablen mit einer festen, unveränderlichen Adresse zu versehen. Die erste Variable wird die Adresse 5101.01h, die zweite 5101.02h, die dritte 5102.01h, die vierte 5102.02h usw. bekommen.

Globale Variablen für Benutzerinterface

Legen Sie hier alle Variablen an, welche Sie von extern auslesen möchten.

Benutzen Sie die Funktion DefUserVar() um die Variablen mit einer festen, unveränderlichen Adresse zu versehen. Die erste Variable wird die Adresse 5101.01h, die zweite 5101.02h, die dritte 5102.01h, die vierte 5102.02h usw. bekommen.

Konstanten

Legen Sie hier alle Konstanten des Programms an. Der Compiler interpretiert Variablen als Konstanten, wenn sie vollständig großgeschrieben sind, oder alle Zeichen vor einem "_" groß geschrieben werden.

FACTOR = 123 # Alles groß geschrieben
ERR_DrehzahlZuKlein = -50 # Alles vor erstem "_" groß geschrieben
In den Konstanten können Sie die Ausführungszeit des Programms verändern. Ändern Sie dafür die Konstante "BOOSTLEVEL" auf einen entsprechenden Wert.

Initialisierung - Simulation

Wenn Sie das Programm am PC simulieren möchten, tragen Sie hier die korrekte CANopen Knotenadresse Ihres Geräts in SpGp_NodeId() ein.

Initialisierung - Steuerung

Tragen Sie hier Ihre gewünschte Parametrierung des Geräts ein. Diese Parametrierung wird bei jedem Start des MPU2 Programms geladen.

Hilfsfunktion(en)

In diesem Abschnitt können Sie alle benötigten Hilfsfunktionen unterbringen.

Globale Hilfsvariablen

In diesem Abschnitt können Sie globale Variablen definieren, welche für den Programmablauf wichtig sind, jedoch uninteressant für externe Anfragen von z.B. einer Benutzeroberfläche sind.

Hauptschleife

Programmieren Sie Ihre gewünschte Logik innerhalb der Hauptschleife. Das Template verfügt bereits über ein Bespiel, wie man am besten ein von außerhalb gesetztes Kommando auswertet.


Wie führe ich das MPU2 Programm auf dem Gerät aus?

Um ein MPU2 Programm direkt auf dem Gerät auszuführen, muss das Programm vorher kompiliert und dann auf das Gerät übertragen werden.
Es bestehen zwei Möglichkeiten das zu tun.

1. edcTools - MPU2 Tool

Mit dem Tool MPU2 können MPU Programme kompiliert, auf das Gerät übertragen und gesteuert werden. Auch Statusinformationen, wie z.B. die Größe des Programms oder MPU Fehlercodes werden angezeigt.

Wählen Sie die Programm Datei indem Sie auf den Button Öffnen klicken und die entsprechende Programmdatei auswählen. Danach können Sie in den Optionen wählen, ob Sie das Programm nur kompilieren möchten, das Programm direkt nach dem Download starten möchten und/oder ob Sie das Programm im EEPROM des Reglers speichern möchten. Wenn Sie die Optionen nach Ihren Wünschen angepasst haben klicken Sie auf den Button Kompilieren und Laden. um das Programm auf den Regler zu laden

Beschreibung der Tasten:
  • Fehler löschen - Löscht den MPU-Fehler.
  • Start - Startet das MPU-Programm wenn noch nicht gestartet oder unterbrochen wurde.
  • Abbruch - Unterbricht das laufende MPU-Programm.
  • Fortsetzen - Nimmt die Fortsetzung des MPU-Programms an der Stelle auf, wo es durch die Taste Abbruch unterbrochen wurde.
  • Löschen - Löscht das MPU-Programm aus dem Gerät.

2. Die Run() Funktion

Vorgehensweise

  1. Legen Sie zu jedem MPU2 Programm eine separate Datei an, die den gleichen Dateinamen wie Ihr MPU2 Programm plus dem Zusatz "_run" trägt.

    Beispiel:     Ihr MPU2 Programm hat den Dateinamen "mein_programm.py". Die dazugehörige Run-Datei sollte "mein_programm_run.py" heißen.

  2. Kopieren und modifizieren Sie folgenden Quellcode nach Ihren Anforderungen in die neu erstellte Datei.

    # -*- coding: iso-8859-1 -*-
from mc.pymc import Run

m = Run(node_id       = 1,                            # CANopen Knotenadresse des Gerätes
        prg_filename  = "mein_programm.py",           # Dateiname des MPU2 Programms
        mpu_filename  = None,                         # Optionaler Dateiname eines kompilierten MPU2-Programms
        store         = False,                        # True = MPU2-Programm wird nach Übertragung im Gerät gespeichert
        start         = True,                         # True = MPU2-Programm wird nach Übertragung im Gerät gestartet
        dump          = 2)                            # dump Bit 0 = Kompilierter Code des MPU2-Programms wird ausgegeben
                                                      #      Bit 1 = Globale Variablen werden ausgegeben
                                                      #      Bit 2 = Interne Programmlabels werden ausgegeben

  3. Führen Sie die Run-Datei im PLC aus.

Parametererläuterung

Durch folgende Übergabeparameter kann das Verhalten der Run() Funktion beeinflusst werden.

  • node_id:
    Hier muss die CANopen Knotenadresse des Gerätes eingetragen werden, auf welches das MPU2 Programm übertragen werden soll.

  • prg_filename:
    Hier wird der relative Pfad zur Ihrer MPU2 Source Datei angegeben, aus welcher das Programm geladen und kompiliert wird.

  • mpu_filename:
    Hier wird der relative Pfad zu einem bereits kompilierten MPU2 Programm angegeben (wenn prg_filename nicht angegeben).
    Dies ermöglicht es, fertig kompilierte Programme zu erstellen und auf das Gerät zu übertragen, ohne dass der Quellcode für Dritte einsehbar ist.

  • store:
    Das MPU2 Programm wird auf dem Gerät gespeichert und ist auch nach einem Spannungsreset vorhanden.

  • start:
    Das MPU2 Programm wird automatisch nach der Übertragung auf das Gerät gestartet.

  • dump:
    Dies beeinflusst die Ausgaben des Compilers.

    Bit 0 = Kompilierter Code des MPU2-Programms wird ausgegeben
    Bit 1 = Globale Variablen werden ausgegeben
    Bit 2 = Interne Programmlabels werden ausgegeben

    Beispiel: dump = 3 Code und globale Variablen werden angezeigt (Bit 1 und Bit 0 sind 1 => 3)


Fernsteuerung eines MPU Programms

Es bestehen grundsätzlich 2 Möglichkeiten um ein MPU Programm zu steuern.

1. edcTools - MPU2 Tool

Mit dem Tool MPU2 können MPU Programme gesteuert werden. In dem MPU Informationen und Status Fenster können grundlegende Informationen über das derzeit auf dem Regler geladene Programm in Erfahrung gebracht werden.

Benutzen Sie zum Steuern der MPU Progamms die folgenden Tasten:
  • Fehler löschen - Löscht den MPU-Fehler.
  • Start - Startet das MPU-Programm wenn noch nicht gestartet oder unterbrochen wurde.
  • Abbruch - Unterbricht das laufende MPU-Programm.
  • Fortsetzen - Nimmt die Fortsetzung des MPU-Programms an der Stelle auf, wo es durch die Taste Abbruch unterbrochen wurde.
  • Löschen - Löscht das MPU-Programm aus dem Gerät.

2. PLC Skripte

MPU starten

Das MPU Programm auf dem Gerät kann durch einen Befehl von einer externen Quelle gestartet werden.

# -*- coding: iso-8859-1 -*-
from mc.dsa  import *      # Importiert die notwendigen Bibliotheken
from mc.mpu2 import *

d = Dsa(1)                 # Erstellt eine Instanz der Klasse 'Dsa' mit CANopen Knotenadresse '1'
m = Mpu(d)                 # Erstellt eine Instanz der Klasse 'Mpu'

print "Starte MPU-Programm auf dem Gerät..."
m.Prg.Start()              # Startet das MPU Programm auf dem Gerät - enspricht 'd.Sp(0x5000, 0, 2)'
print "...erledigt."

MPU stoppen

Das MPU Programm auf dem Gerät kann durch einen Befehl von einer externen Quelle unterbrochen werden.

# -*- coding: iso-8859-1 -*-
from mc.dsa  import *      # Importiert die notwendigen Bibliotheken
from mc.mpu2 import *

d = Dsa(1)                 # Erstellt eine Instanz der Klasse 'Dsa' mit CANopen Knotenadresse '1'
m = Mpu(d)                 # Erstellt eine Instanz der Klasse 'Mpu'

print "Unterbreche MPU-Programm auf dem Gerät..."
m.Prg.Break()              # Unterbricht das MPU Programm auf dem Gerät - enspricht 'd.Sp(0x5000, 0, 3)'
print "...erledigt."

MPU fortsetzen

Das MPU Programm auf dem Gerät kann fortgesetzt werden, nachdem es durch einen Befehl von einer externen Quelle unterbrochen wurde.

# -*- coding: iso-8859-1 -*-
from mc.dsa  import *      # Importiert die notwendigen Bibliotheken
from mc.mpu2 import *

d = Dsa(1)                 # Erstellt eine Instanz der Klasse 'Dsa' mit CANopen Knotenadresse '1'
m = Mpu(d)                 # Erstellt eine Instanz der Klasse 'Mpu'

print "Setze MPU-Programm auf dem Gerät fort..."
m.Prg.Continue()           # Setzt das MPU Programm auf dem Gerät fort - enspricht 'd.Sp(0x5000, 0, 4)'
print "...erledigt."

MPU löschen

Das MPU Programm auf dem Gerät kann durch einen Befehl von einer externen Quelle gelöscht werden.

# -*- coding: iso-8859-1 -*-
from mc.dsa  import *      # Importiert die notwendigen Bibliotheken
from mc.mpu2 import *

d = Dsa(1)                 # Erstellt eine Instanz der Klasse 'Dsa' mit CANopen Knotenadresse '1'
m = Mpu(d)                 # Erstellt eine Instanz der Klasse 'Mpu'

print "Lösche MPU-Programm auf dem Gerät..."
m.Prg.Break()              # Unterbricht das MPU Programm auf dem Gerät - enspricht 'd.Sp(0x5000, 0, 3)'
d.Sp(0x3004, 0, 0)         # Deaktiviert die Endstufe des Reglers       - Kommando ausschließlich auf Reglern vorhanden => Bei anderen Geräten auskommentieren!
m.Prg.Clear()              # Löscht das MPU Programm auf dem Gerät      - enspricht 'd.Sp(0x5000, 0, 0x83, timeout=500)'
print "...erledigt."


Compiler

Damit die Geräte der Firma ENGEL ein MPU2 Programm ausführen können, muss der MPU2-Compiler dies zunächst in Maschinensprache übersetzen. Danach wird das Programm an das Gerät übertragen. All dies wird von der Run() Funktion ausgeführt.

Konstanten

Konstanten sind Binärzahlen, welche sich während der Laufzeit des Programms nicht ändern. Diese werden beim Kompilieren des MPU2 Programms von dem Compiler optimiert und an allen Stellen des Programmes wieder durch die entsprechenden Zahlen ersetzt. Im kompilierten Programm tauchen die Konstanten somit nicht mehr auf.

Folgende Bezeichner werden als Konstanten interpretiert:

FACTOR = 123               # Alles groß geschrieben
ERR_DrehzahlZuKlein = -50  # Alles vor erstem "_" groß geschrieben

Optimierungen durch den Compiler

Während der Kompilierung werden Optimierungen durchgeführt um Speicherplatz zu sparen und den Programmablauf zu beschleunigen.

Folgende Anweisungen werden im Quellcode optimiert:

# Folgende Zeile wird durch den Compiler ignoriert.
from mc._pymc_builtins_ import *    # wird ignoriert

# Ist die Bedingung einer 'if'-Anweisung eine Konstante und nicht WAHR, wird der Anweisungskörper ignoriert.
if 0:
   a = 100                       # wird ignoriert
   b = a + 1                     # wird ignoriert

# Ist die Bedingung einer 'while'-Schleife eine Konstante und nicht WAHR, wird der Schleifenkörper ignoriert.
while 0:
   a = 100                       # wird ignoriert
   b = a + 1                     # wird ignoriert

# Folgender Codeblock wird durch den Compiler ignoriert, da der Compiler die Konstante 'PYMC' auf WAHR setzt und somit die Bedingung nicht erfüllt ist.
if not PYMC:
   SpGp_NodeId(1)                # NodeId des Geräts für Sp()/Gp() Funktionen festlegen (für Simulation)
   Sp(0x5000,0, 3)               # evtl. vorhandenes MPU2-Programm auf dem Gerät anhalten (stört sonst Simulation)

# Ausdrücke mit Konstanten werden während der Kompilierzeit optimiert.
a = 1 + 5*6                      # Der Compiler rechnet den Ausdruck "1 + 5*6" beim Kompilieren aus, und ersetzt durch 31.

# Dabei ist zu beachten dass Konstanten zum Schluss der Berechnung (während der Kompilierzeit) gerundet werden.
a = (100 / 3) * 3                # a entspricht 99, da "100 / 3 = 33" (Integerdivision, da alle Konstanten Int32 sind) => "33 * 3 = 99"
# aber
a = (100.0 / 3) * 3              # a entspricht 100, "100.0 / 3 = 33.333333..." (Floatdivision) => "33.333333... * 3 = 100"

# Im Gegensatz dazu werden Variablen zur Laufzeit immer durch Integerdivision geteilt.
a = 100.0
b = 3
c = (a / b) * b                  # c entspricht 99, "100 / 3 = 33" (Integerdivision, da alle Variablen Int32 sind) => "33 * 3 = 99"

Eingebaute Compilerkonstanten

Die eingebauten Compilerkonstanten können innerhalb des MPU2 Programms während der Kompilierzeit ausgewertet werden.
Folgende Konstanten stehen zur Verfügung:

  • PYMC_VERSION
    Version des Compilers

  • PYMC
    Version des Compilers

  • MPU_VERSION
    minimal benötigte Version von MPU2 in der Gerätefirmware

  • MPU
    minimal benötigte Version von MPU2 in der Gerätefirmware


Ausführungszeit

Die Firmware der Geräte hat mehrere Aufgaben. Die MPU ist eine dieser Aufgaben. Sie wird zyklisch angesprungen und MPU Befehlszeilen werden abgearbeitet. Da andere Aufgaben wichtiger für die korrekte Funktion der Regler sind (Regelung, Kommunikation, usw.), hat die MPU eine untergeordnete Priorität. Die Rechenlast der wichtigeren Aufgaben hat Auswirkungen auf die Ausführungszeit der MPU. Wird zum Beispiel die Abtastrate des Positionierreglers kleiner eingestellt, bleibt weniger Rechenzeit für die MPU übrig. Durch den Befehl Boost kann die Gewichtung der Rechenzeit zu Gunsten des MPU Programms und auf Kosten der Kommunikation verändert werden.

Hinweis: Sehen Sie von der Verwendung von Delay() in Ihrem Programm ab, da die MPU aktiv an dieser Stelle wartet. Dies verlangsamt Ihr Programm erheblich. Nutzen Sie stattdessen DiffClock() und eine Zustandsmaschine wie im Beispiel "Auf ein Ereignis warten".

Messung der Ausführungszeit

Es gibt 2 verschiedene Möglichkeiten um die Ausführungszeit des MPU2 Programms zu messen. Der Unterschied zwischen den Varianten besteht in der Auflösung und Genauigkeit der gemessenen Werte, sowie dem Aufwand um die Messung durchzuführen.

1. DiffClock (Aufwand: gering, Auflösung: 1 ms)

Vor dem zu messenden Codeabschnitt fügen Sie die Zeile

TimeStampStart = Clock() # Messung der Startzeit

hinzu.

Nach dem zu messenden Codeabschnitt fügen Sie die Zeile

ElapsedTime = DiffClock(TimeStampStart) # Verstrichene Zeit in ms

hinzu.

Nun können Sie die Variable ElapsedTime auslesen.

MPU2-Quellcode

# -*- coding: iso-8859-1 -*-
#*===========================================================================*#
#*        Copyright (c) 1997-2013 by ENGEL. All rights reserved.         *#
#*                                                                           *#
#* File     : benchmark_diffclock.py                                         *#
#*                                                                           *#
#* Project  : PLC                                                           *#
#* System   : MPU2                                                           *#
#* Version  : 1.00                                                           *#
#* Company  : ENGEL                                                      *#
#*                                                                           *#
#* Author   : ENGEL             mailto:                                  *#
#* Date     : 28.01.2013                                                     *#
#*---------------------------------------------------------------------------*#
#* Customer : ENGEL                                                      *#
#* Name     : Support                                                        *#
#* OrderNr. :                                                                *#
#* Descr.   : Benchmark mit DiffClock - Beispiel                             *#
#* History  :                                                                *#
#*===========================================================================*#

# Globale Variablen für Benutzerinterface -------------------------------------
BoostLevel     = 0                              # MPU Boost Level (zur Beschleunigung der Ausführung)
Loops          = 1000                           # Anzahl der Schleifendurchgänge für den Benchmark
ElapsedTime    = 0                              # Verstrichene Zeit in ms

# Globale Hilfsvariablen ------------------------------------------------------
TimeStampStart = 0                              # Startzeit des Programs

# Initialisierung - Simulation-------------------------------------------------
if not PYMC:
   Sp(0x5000,0, 3)                              # Unterbreche MPU Programm
   raise Exception("Der Benchmark kann nicht im Simulationsmodus ausgeführt werden. Nur über die Run Datei starten!")

# Hauptprogramm ===============================================================
Boost(BoostLevel)                               # Setze BoostLevel

# Hauptschleife ---------------------------------------------------------------
while 1:
   TimeStampStart = Clock()                     # Messung der Startzeit

   # Fügen Sie hier Ihren zu messenden Sourcecode ein ( kann dem Inhalt der MainLoop entsprechen)
   a = 0                                        # Diese Zeile ist nur ein Beispiel
   for i in xrange(0, Loops):
      a += 1                                    # Diese Zeile ist nur ein Beispiel

   ElapsedTime = DiffClock(TimeStampStart)      # Verstrichene Zeit in ms

Run-Datei

# -*- coding: iso-8859-1 -*-
from mc.pymc import Run

m = Run(node_id       = 1,                            # CANopen Knotenadresse des Gerätes
        prg_filename  = "benchmark_diffclock.py",     # Dateiname des MPU2 Programms
        mpu_filename  = None,                         # Optionaler Dateiname eines kompilierten MPU2-Programms
        store         = False,                        # True = MPU2-Programm wird nach Übertragung im Gerät gespeichert
        start         = True,                         # True = MPU2-Programm wird nach Übertragung im Gerät gestartet
        dump          = 2)                            # dump Bit 0 = Kompilierter Code des MPU2-Programms wird ausgegeben
                                                      #      Bit 1 = Globale Variablen werden ausgegeben
                                                      #      Bit 2 = Interne Programmlabels werden ausgegeben

# Abfrage bzw. Setzen der Variablen des MPU2-Programms.
# m.GlobalVars beinhaltet alle Variablen des MPU2-Programms.
if m:
   import time

   d = m.Dev                                             # d = Dsa-Instanz

   print "Starte MPU2 Benchmark über Diffclock..."

   device_code = (d.SdoRd(0x3020,0)<<16) | d.SdoRd(0x3020,1)
   version     = (d.SdoRd(0x3023,0)<<16) | d.SdoRd(0x3023,1)

   print "DeviceCode                   = %04X.%04X" % (((device_code>>16) & 0xFFFF), (device_code & 0xFFFF))
   print "Firmware Version             = %X.%02X.%02X.%02X" % ((version>>24)&0xFF, (version>>16)&0xFF, (version>>8)&0xFF, (version>>0)&0xFF)
   print "BoostLevel                   = %d"          % d.SdoRd(m.GlobalVars.BoostLevel)
   print ''

   while 1:
      time.sleep(0.5)                                    # Warte 500ms bis zur nächsten Abfrage, um das Ergebnis nicht zu verfälschen.
      elapsed_time = d.SdoRd(m.GlobalVars.ElapsedTime)   # Auslesen der verstrichenen Zeit
      print "Zeit für Schleifendurchlauf: %s ms" % (elapsed_time)

2. Benchmark (Aufwand: höher, Auflösung: bis zu 1µs)

Wenn Sie eine genaue Messung des Zeitverhaltens benötigen, nutzen Sie den folgenden Beispielcode.
Ihr Programm wird dabei nur einmalig durchlaufen und die Ausführungszeit der entsprechenden Codeabschnitte wird gemessen.
Benötigen Sie mehrere Messpunkte, können Sie mehrere Variablen wie "Time01" aus dem Beispiel anlegen.
Beachten Sie, dass Ihr Programm für die Messung endlich sein muss, d.h. es sollte nicht in einer while-Schleife ausgeführt werden.
Kopieren Sie dazu den zu messenden Codeabschnitt an die entsprechende Stelle im Beispiel (ohne "while 1:").

MPU2-Quellcode

# -*- coding: iso-8859-1 -*-
#*===========================================================================*#
#*        Copyright (c) 1997-2013 by ENGEL. All rights reserved.         *#
#*                                                                           *#
#* File     : benchmark.py                                                   *#
#*                                                                           *#
#* Project  : PLC                                                           *#
#* System   : MPU2                                                           *#
#* Version  : 1.00                                                           *#
#* Company  : ENGEL                                                      *#
#*                                                                           *#
#* Author   : ENGEL             mailto:                                  *#
#* Date     : 28.01.2013                                                     *#
#*---------------------------------------------------------------------------*#
#* Customer : ENGEL                                                      *#
#* Name     : Support                                                        *#
#* OrderNr. :                                                                *#
#* Descr.   : Benchmark - Beispiel                                           *#
#* History  :                                                                *#
#*===========================================================================*#

# Globale Variablen für Benutzerinterface -------------------------------------
BoostLevel = 0                                  # MPU Boost Level (zur Beschleunigung der Ausführung)
Loops      = 1000                               # Anzahl der Schleifendurchgänge für den Benchmark
TimeLoop   = 0                                  # Zeit für kompletten Durchlauf der Schleife (leer)
Time01     = 0                                  # Zeit für ersten Codeabschnitt
TimeAll    = 0                                  # Zeit für kompletten Code
Done       = 1                                  # Initialisierung der Done Variable => nicht ändern!

# Initialisierung - Simulation-------------------------------------------------
if not PYMC:
   Sp(0x5000,0, 3)                              # Unterbreche MPU Programm
   raise Exception("Der Benchmark kann nicht im Simulationsmodus ausgeführt werden. Nur über die Run Datei starten!")

# Hauptprogramm ===============================================================
Boost(BoostLevel)                               # MPU Boost Level setzen

# Zeitmessung für kompletten Durchlauf der Schleife (leer) -------------------
time_loop_start = Clock()
for i in xrange(0, Loops):
   pass
TimeLoop = DiffClock(time_loop_start)

a = 0                                           # Diese Zeile ist nur ein Beispiel
time_start = Clock()                            # Messung der Startzeit

for i in xrange(0,Loops):
   # Fügen Sie hier Ihren zu messenden Sourcecode ein ( kann dem Inhalt der MainLoop entsprechen, jedoch ohne while 1 )
   a += 1                                       # Diese Zeile ist nur ein Beispiel

time_end = Clock()
Time01 = time_end - time_start - TimeLoop

TimeAll = DiffClock(time_start)                 # Messung der kompletten Ausführungszeit
Done    = 2                                     # Programm fertig!

Run-Datei

# -*- coding: iso-8859-1 -*-
from mc.pymc import Run

m = Run(node_id       = 1,                            # CANopen Knotenadresse des Gerätes
        prg_filename  = "benchmark.py",               # Dateiname des MPU2 Programms
        mpu_filename  = None,                         # Optionaler Dateiname eines kompilierten MPU2-Programms
        store         = False,                        # True = MPU2-Programm wird nach Übertragung im Gerät gespeichert
        start         = True,                         # True = MPU2-Programm wird nach Übertragung im Gerät gestartet
        dump          = 2)                            # dump Bit 0 = Kompilierter Code des MPU2-Programms wird ausgegeben
                                                      #      Bit 1 = Globale Variablen werden ausgegeben
                                                      #      Bit 2 = Interne Programmlabels werden ausgegeben

# Abfrage bzw. Setzen der Variablen des MPU2-Programms.
# m.GlobalVars beinhaltet alle Variablen des MPU2-Programms.
if m:
   import time

   d = m.Dev                                 # d = Dsa-Instanz

   print "Starte MPU2 Benchmark..."

   while 1:
      time.sleep(1.0)                        # Warte eine Sekunde bis zur nächsten Abfrage, um das Ergebnis nicht zu verfälschen.
      if d.SdoRd(m.GlobalVars.Done) == 2:    # Abbruchbedingung => Programm ist fertig
         break

   print "...MPU2 Programm hat alle Schleifendurchgänge durchlaufen. Fertig!"

   Loops = d.SdoRd(m.GlobalVars.Loops)       # Liest die Anzahl der durchlaufenen Schleifen ab

   # Hilfsfunktion um Ausführungszeit in µs zu berechnen
   def GetExecTime (var):
      return float(d.SdoRd(var))/Loops * 1000

   device_code = (d.SdoRd(0x3020,0)<<16) | d.SdoRd(0x3020,1)
   version     = (d.SdoRd(0x3023,0)<<16) | d.SdoRd(0x3023,1)

   print "DeviceCode                   = %04X.%04X" % (((device_code>>16) & 0xFFFF), (device_code & 0xFFFF))
   print "Firmware Version             = %X.%02X.%02X.%02X" % ((version>>24)&0xFF, (version>>16)&0xFF, (version>>8)&0xFF, (version>>0)&0xFF)
   print "BoostLevel                   = %d"          % d.SdoRd(m.GlobalVars.BoostLevel)
   print ''
   print "Ausführungszeit für Schleife = %10.1f [µs]" % GetExecTime(m.GlobalVars.TimeLoop)
   print "Ausführungszeit Time01       = %10.1f [µs]" % GetExecTime(m.GlobalVars.Time01)
   print ''

   # Ausführungszeit des letzten Benchmarks hier eintragen, um Änderung zu berechnen!
   TimeLast = 10000
   TimeAll  = d.SdoRd(m.GlobalVars.TimeAll)

   print "Komplette Ausführungszeit    = %d [ms] (Delta = %.3f [%%])" % (TimeAll, (float(TimeAll)-float(TimeLast))/TimeLast * 100.0)


Diagnose/Simulationsmodus

Es existieren verschiedene Methoden um das Verhalten eines MPU Programms zu analysieren.

Allgemeine Informationen in edcTools

Sie können die wichtigsten Informationen über das Gerät und die MPU in edcTools auslesen. Wählen Sie dazu das Modul "DC Status" aus.

Sie sehen auf einen Blick die aktuellen Sollwerte, Istwerte, Begrenzungen, das Statusregister des Geräts und Informationen über die MPU.
Dies kann bei der Erstdiagnose sehr hilfreich sein.

Simulationsmodus

Bei der Entwicklung eines komplexeren MPU2 Programms empfiehlt es sich, den Simulationsmodus zu nutzen. Dabei wird das MPU Programm direkt auf dem Computer ausgeführt. Die Motion Process Unit auf dem Gerät ist währenddessen deaktivert. Der Computer liest und schreibt Variablen auf dem Gerät via CAN-Bus. Dies hat den Vorteil dass Sie sich Meldungen und Variablenwerte mit dem "print" Befehl direkt in PLC anzeigen lassen können. Dabei ist jedoch zu beachten dass die maximale Programmgröße für die MPU während der Entwicklung überschritten werden kann, ohne dass dies frühzeitig bemerkt wird. Auch das Zeitverhalten des MPU2 Programms ist anders, da die Kommunikation über den CAN Bus die Ausführung verzögert.

Um ein Programm im Simulationsmodus auszuführen, starten Sie das Programm direkt und ohne eine Run-Datei.

Bedingungen

Folgende Bedingungen müssen zwingend in Ihrem Programm erfüllt sein, damit der Simulationsmodus gestartet werden kann:

# 1. Folgender Import muss zwingend vorhanden sein
from mc._pymc_builtins_ import *    # Import für Simulation am PC

# 2. Die folgenden 3 Zeilen müssen zwingend vorhanden sein
if not PYMC:
   SpGp_NodeId(1)                # NodeId des Geräts für Sp()/Gp() Funktionen festlegen (für Simulation)
   Sp(0x5000,0, 3)               # evtl. vorhandenes MPU2-Programm auf dem Gerät anhalten (stört sonst Simulation)

# 3. Alle Objekte müssen ausschließlich über die Funktion Gp() ausgelesen und über die Funktion Sp() gesetzt werden
position = Gp(0x3762, 0x00)      # aktuelle Position auslesen
Sp(0x3762, 0x00, 1000)           # aktuelle Position auf 1000 setzen

# 4. Bei Zugriff auf globale Variablen innerhalb von Funktionen müssen diese am Anfang der Funktion global deklariert werden
MyTestVar = 10

def IncrementMyTestVar():
   global MyTestVar              # zwingend notwendig, sonst kennt der Simulationsmodus diese Variable nicht
   MyTestVar += 1
   return MyTestVar

test_var = IncrementMyTestVar()
print "Test_var = %s" % (test_var)  # Ausgabe der Variable

Ausgabe von Meldungen und Variablenwerte mit dem "print" Befehl

Nutzen Sie den print Befehl um das Verhalten Ihres Programms zu analysieren.

from mc._pymc_builtins_ import *

if not PYMC:
   SpGp_NodeId(1)
   Sp(0x5000,0, 3)

while 1:
   system_clock = Gp(0x3850, 0x00)
   print "Aktuelle Position: %s  Aktuelle Systemzeit: %s" % (Gp(0x3762, 0x00), system_clock)    # Variablenwerte ausgeben

   if system_clock > 10000:
      print "Systemzeit ist größer als 10000 ms"                                                # Meldung ausgeben

Auslesen von Variablen via edcTools - MPU2 Tool

Mit diesem Tool können alle globalen Variablen des MPU-Programms ausgelesen und auch gesetzt werden. Es wird der Name, die Adresse (Index und Subindex), sowie der Wert der Variablen angezeigt. Die Variablen können automatisch gepollt, oder per Tastendruck ausgelesen werden. Es besteht auch die Möglichkeit ausschließlich Benutzer-Variablen anzeigen zu lassen, und Änderung dieser im Gerät zu speichern.

Auslesen von Variablen via Skript

Mit einem Python Skript können Sie die CAN Objekte des Geräts auslesen und weiterverwenden. So können Sie zum Beispiel ein Skript schreiben, welches Daten bei einem bestimmten Ereignis in eine Datei speichert.

Python Skript

Erstellen Sie ein Python Skript wie im folgenden Beispiel um die Objekte und Variablen auszulesen. Sie müssen den Objektindex und Subindex jeder MPU2 Variable kennen. Diese werden bei der Kompilierung des MPU2 Programms ausgegeben (wenn Sie dies in "dump" aktiviert haben).

from mc.dsa import Dsa
import time

d = Dsa(1)                    # d = Dsa-Instance mit der CANopen Knotenadresse des Geräts

# Variablen auslesen
var1 = d.SdoRd(0x5101, 0x01)  # 0x5101.01 ist die erste Variable im MPU Programm
var2 = d.SdoRd(0x5101, 0x02)  # 0x5101.02 ist die zweite Variable im MPU Programm

# Variablen beschreiben
d.SdoWr(0x5101, 0x01, 5)      # 0x5101.01 auf  5 setzen
d.SdoWr(0x5101, 0x02, 10)     # 0x5101.02 auf 10 setzen

# Zyklisch Variablen auslesen und "printen"
while True:
   time.sleep(0.5)                                    # 500 ms warten vor jeder Abfrage um den Bus nicht zu überlasten
   print "Variable 1: %s   Variable 2: %s" % (d.SdoRd(0x5101, 0x01), d.SdoRd(0x5101, 0x02))
   print "Position: %s" % (d.SdoRd(0x3762, 0x00))     # Objekt 0x3762.00 auslesen

Run-Datei

In einer Run-Datei eines MPU2 Programms können Sie folgendermaßen auf die Objekte und Variablen zugreifen:

# -*- coding: iso-8859-1 -*-
from mc.pymc import Run
import time

m = Run(node_id       = 1,                                     # CANopen Knotenadresse des Gerätes
        prg_filename  = "mein_programm.py",                    # Dateiname des MPU2 Programms
        mpu_filename  = None,                                  # Optionaler Dateiname eines kompilierten MPU2-Programms
        store         = False,                                 # True = MPU2-Programm wird nach Übertragung im Gerät gespeichert
        start         = True,                                  # True = MPU2-Programm wird nach Übertragung im Gerät gestartet
        dump          = 2)                                     # dump Bit 0 = Kompilierter Code des MPU2-Programms wird ausgegeben
                                                               #      Bit 1 = Globale Variablen werden ausgegeben
                                                               #      Bit 2 = Interne Programmlabels werden ausgegeben

# Abfrage bzw. Setzen der Variablen des MPU-Programms.
# m.GlobalVars beinhaltet alle Variablen des MPU-Programms
if m:
   d = m.Dev                                             # d = Dsa-Instance

   # Variablen auslesen
   var1 = d.SdoRd(m.GlobalVars.MyVariable1)              # MyVariable1 ist eine Beispielvariable aus dem MPU Programm
   var2 = d.SdoRd(m.GlobalVars.MyVariable2)              # MyVariable2 ist eine Beispielvariable aus dem MPU Programm

   # Variablen beschreiben
   d.SdoWr(m.GlobalVars.MyVariable1, 5)                  # MyVariable1 auf  5 setzen
   d.SdoWr(m.GlobalVars.MyVariable2, 10)                 # MyVariable1 auf 10 setzen

   # Zyklisch Variablen auslesen und "printen"
   while True:
      time.sleep(0.5)                                    # 500 ms warten vor jeder Abfrage um den Bus nicht zu überlasten
      print "Variable 1: %s   Variable 2: %s" % (d.SdoRd(m.GlobalVars.MyVariable1), d.SdoRd(m.GlobalVars.MyVariable2))
      print "Position: %s" % (d.SdoRd(0x3762, 0x00))     # Objekt 0x3762.00 auslesen

Auslesen von Variablen via PLC CAN Monitor

Im Programm PLC ist ein CAN Monitor enthalten. Mit diesem ist es möglich, die CAN-Objekte eines Geräts auszulesen und zu ändern.

Führen Sie folgende Schritte durch um ein CAN-Objekt auszulesen:
  1. Öffnen Sie PLC
  2. Öffnen Sie CAN Monitor in PLC

3. Folgen Sie den Schritten im ersten Bild
    1. Klicken Sie auf "New CAN-Object"
    2. Vergeben Sie einen Namen für das CAN Objekt
    3. Wählen Sie "SDO" aus
    4. Tragen Sie die Knotennummer Ihres Geräts ein
    5. Klicken Sie auf "OK"

4. Folgen Sie den Schritten im zweiten Bild
    1. Wählen Sie das neu angelegte Objekt aus
    2. Klicken Sie auf "New CAN-Variabel"
    3. Vergeben Sie einen Namen für die CAN Variable
    4. Tragen Sie den Index der Variable ein
    5. Tragen Sie den SubIndex der Variable ein
    6. Klicken Sie auf "OK"

5. Wählen Sie das neu angelegte Objekt aus und drücken Sie "STRG + R" zum Auslesen oder "STRG + T" zum Beschreiben der Variable.


Inhalt - Beispiele

LEDs ansteuern

Maskieren und shiften

Digitale Eingänge einlesen

Zustandsmaschine

Auf ein Ereignis warten

Steuern über dig. Eingänge

Rel. Positionierung über analogen Eingang

Referenzfahrt starten

Kommunikation aus MPU2 heraus

Display

SPI-V2


LEDs ansteuern

Es ist möglich, den Zustand der LED's des Geräts innerhalb der MPU zu ändern.

MPU2-Quellcode

# -*- coding: iso-8859-1 -*-
#*===========================================================================*#
#*        Copyright (c) 1997-2013 by ENGEL. All rights reserved.         *#
#*                                                                           *#
#* File     : demo_leds.py                                                   *#
#*                                                                           *#
#* Project  : PLC                                                           *#
#* System   : MPU2                                                           *#
#* Version  : 1.00                                                           *#
#* Company  : ENGEL                                                      *#
#*                                                                           *#
#* Author   : ENGEL             mailto:                                  *#
#* Date     : 30.01.2013                                                     *#
#*---------------------------------------------------------------------------*#
#* Customer : ENGEL                                                      *#
#* Name     : Support                                                        *#
#* OrderNr. :                                                                *#
#* Descr.   : Beispiel für Ansteuerung der LED's                             *#
#* History  :                                                                *#
#*===========================================================================*#
from mc._pymc_builtins_ import *          # Import für Simulation am PC

# Globale Variablen zur Programmidentifikation --------------------------------
AppId       = 0x00000001               # eindeutige ID der Applikation
AppVersion  = 0x01000000               # Version der Applikation zB. 01.00.00.00

# Initialisierung - Simulation-------------------------------------------------
if not PYMC:
   '''
   Dieser Abschnitt wird ausgeführt, wenn das Program direkt im PLC gestartet wird.
   Dadurch wird das MPU2 Programm am Rechner simuliert (in Verbindung mit dem Gerät).
   Dies ermöglich eine vereinfachte Diagnose, da "print" Befehle möglich werden.
   ACHTUNG: Das Zeitverhalten des Programms verändert sich, da die Ausführung der Sp()/Gp() Funktionen
   durch die Kommunikation zwischen PC und Gerät verzögert wird.

   Wenn Sie keine Simulation möchten, starten Sie das Programm über die Run() Funktion.
   '''
   SpGp_NodeId(1)                      # NodeId des Geräts für Sp()/Gp() Funktionen festlegen (für Simulation)
   Sp(0x5000,0, 3)                     # evtl. vorhandenes MPU2-Programm auf dem Gerät anhalten (stört sonst Simulation)

# Hilfsfunktion(en) -----------------------------------------------------------
# Initialisierung - Steuerung -------------------------------------------------
def InitPars ():
   Sp(0x3158,0, 1)                     # LED - Benutzersteuerung aktivieren

# Hauptprogramm ===============================================================
InitPars()                             # Initialisierung durchführen

# Hauptschleife ---------------------------------------------------------------
while 1:
   for i in xrange(0,3):
      Sp(0x3158,1, 1<<i)               # LED - Zustand setzen (Bit0 = Power, Bit1 = Status, Bit2 = Error)
      Delay(300)                       # 300 ms warten

Run-Datei

# -*- coding: iso-8859-1 -*-
from mc.pymc import Run

m = Run(node_id       = 1,                            # CANopen Knotenadresse des Gerätes
        prg_filename  = "demo_leds.py",               # Dateiname des MPU2 Programms
        mpu_filename  = None,                         # Optionaler Dateiname eines kompilierten MPU2-Programms
        store         = False,                        # True = MPU2-Programm wird nach Übertragung im Gerät gespeichert
        start         = True,                         # True = MPU2-Programm wird nach Übertragung im Gerät gestartet
        dump          = 2)                            # dump Bit 0 = Kompilierter Code des MPU2-Programms wird ausgegeben
                                                      #      Bit 1 = Globale Variablen werden ausgegeben
                                                      #      Bit 2 = Interne Programmlabels werden ausgegeben


Maskieren und shiften

Da eine Variable innerhalb der MPU immer aus 4 Byte (Integer32) besteht, wäre es ineffizient, für jede Information die nur ein Bit benötigt (Wahrheitswerte), die kompletten 4 Byte Speicherplatz zu verwenden. Durch Maskierung der einzelnen Bits, können bis zu 32 verschiedene Wahrheitswerte in einer Variable gespeichert werden.

Solch eine Maske kann zum Beispiel durch Bitshifting erstellt werden.

MASK_1 = 1 << 4      # entspricht folgender Maske: 0000 0000 0000 0000 0000 0000 0001 0000
MASK_2 = 1 << 31     # entspricht folgender Maske: 1000 0000 0000 0000 0000 0000 0000 0000
MASK_3 = 0xFFFF      # entspricht folgender Maske: 0000 0000 0000 0000 1111 1111 1111 1111
MASK_4 = 0xEF00FFFF  # entspricht folgender Maske: 1110 1111 0000 0000 1111 1111 1111 1111

Nützliche Funktionen

Mit den folgenden Funktionen können Zustände von Bits und Flankenwechsel erkannt werden, sowie Bits gelöscht, gesetzt und invertiert werden. Dazu muss die entsprechende Funktion mit der gewünschten Maske aufgerufen werden.

#----------------------------------------------------------
# Flankenerkennung 0->1 auf Bit "mask"
def IsBitEdgeChangeToHigh(last, new, mask):
   return ((new ^ last) & new) & mask

#----------------------------------------------------------
# Flankenerkennung 1->0 auf Bit "mask"
def IsBitEdgeChangeToLow(last, new, mask):
   return ((new ^ last) & last) & mask

#----------------------------------------------------------
# Erkennt ob bestimmte Bits gesetzt sind
def IsBitHigh(value, mask):
   return (value & mask)

#----------------------------------------------------------
# Erkennt ob bestimmte Bits gelöscht sind
def IsBitLow(value, mask):
   return (value ^ mask) & mask

#----------------------------------------------------------
# Setzen der in der maske gesetzten Bits auf High
def SetBitsToHigh(value, mask):
   return (value | mask)

#----------------------------------------------------------
# Zurücksetzen der in der maske gesetzten Bits auf Low
def SetBitsToLow(value, mask):
   return (value & (~mask))

#----------------------------------------------------------
# Invertieren der in der maske gesetzten Bits
def InvertBits(value, mask):
   return (value ^ mask)


Digitale Eingänge einlesen

Da sich der Zustand der digitalen Eingänge jederzeit ändern kann, sollten Sie den Zustand der Eingänge nur einmal pro Zyklus an einer zentralen Stelle in Ihrem Programm ablesen.
Ansonsten kann es zu nicht vorhersehbaren Zuständen kommen.

Da viele Schalter oder Relais prellen können, sollten Sie beim Einlesen der Eingänge eine Filterfunktion nutzen, welche das Prellen erkennt. Das folgende Beispiel zeigt solch eine Funktion.

MPU2-Quellcode

# -*- coding: iso-8859-1 -*-
#*===========================================================================*#
#*        Copyright (c) 1997-2013 by ENGEL. All rights reserved.         *#
#*                                                                           *#
#* File     : demo_read_digital_inputs.py                                    *#
#*                                                                           *#
#* Project  : PLC                                                           *#
#* System   : MPU2                                                           *#
#* Version  : 1.00                                                           *#
#* Company  : ENGEL                                                      *#
#*                                                                           *#
#* Author   : ENGEL             mailto:                                  *#
#* Date     : 30.01.2013                                                     *#
#*---------------------------------------------------------------------------*#
#* Customer : ENGEL                                                      *#
#* Name     : Support                                                        *#
#* OrderNr. :                                                                *#
#* Descr.   : Beispiel für Einlesen der digitalen Eingänge                   *#
#*                                                                           *#
#*    In dieser Applikation erfolgt die Steuerung über dig. Eingänge.        *#
#*    Die dig. Eingänge werden wie folgt ausgewertet:                        *#
#*                                                                           *#
#*     din3..0  = Kommando                                                   *#
#*     din4     = KommandoTrigger                                            *#
#*                                                                           *#
#*    Wenn am din4 (KommandoTrigger) eine steigende Flanke erkannt wird,     *#
#*    dann wird ein Kommando (din3..0) ausgeführt. Damit ist es möglich      *#
#*    bis zu 16 Kommandos zu definierten. In diesem Beispiel wurden folgende *#
#*    Kommandos implementiert:                                               *#
#*                                                                           *#
#*     0     Fehler löschen             (din3..0 = Low)                      *#
#*     1     Endstufe deaktivieren      (din1 = high)                        *#
#*     2     Endstufe aktivieren        (din2 = high)                        *#
#*                                                                           *#
#* History  :                                                                *#
#*===========================================================================*#
from mc._pymc_builtins_ import *          # Import für Simulation am PC

# Globale Variablen zur Programmidentifikation --------------------------------
AppId       = 0x00000001               # eindeutige ID der Applikation
AppVersion  = 0x01000000               # Version der Applikation zB. 01.00.00.00

# Globale Variablen für Benutzerinterface -------------------------------------
Cmd               = 0                  # Kommando
InputFilterTime   = 10                 # Eingangsfilterzeit in ms

# Konstanten ------------------------------------------------------------------
DIN_BIT_TRIGGER = 0x10
DIN_MASK_CMD    = 0x0F

# Globale Hilfsvariablen ------------------------------------------------------
LastDin = 0
LastCmd = 0

# Initialisierung - Simulation-------------------------------------------------
if not PYMC:
   '''
   Dieser Abschnitt wird ausgeführt, wenn das Program direkt im PLC gestartet wird.
   Dadurch wird das MPU2 Programm am Rechner simuliert (in Verbindung mit dem Gerät).
   Dies ermöglich eine vereinfachte Diagnose, da "print" Befehle möglich werden.
   ACHTUNG: Das Zeitverhalten des Programms verändert sich, da die Ausführung der Sp()/Gp() Funktionen
   durch die Kommunikation zwischen PC und Gerät verzögert wird.

   Wenn Sie keine Simulation möchten, starten Sie das Programm über die Run() Funktion.
   '''
   SpGp_NodeId(1)                # NodeId des Geräts für Sp()/Gp() Funktionen festlegen (für Simulation)
   Sp(0x5000,0, 3)               # evtl. vorhandenes MPU2-Programm auf dem Gerät anhalten (stört sonst Simulation)

# Hilfsfunktion(en) -----------------------------------------------------------
# Liest Zustand der digitalen Eingänge mit Filter (verhindert Prellen)
def DigitalInputFilter(last_din):
   din = Gp(0x3120,0)                                 # Zustand der digitalen Eingänge lesen
   if din != last_din:                                # Prüfen ob Eingang sich geändert hat
      time_start = Clock()                            # Lese Startzeit für Filter
      while DiffClock(time_start) < InputFilterTime:  # Lese Zustand der digitalen Eingänge für InputFilterTime in ms
         new_din = Gp(0x3120,0)                       # Zustand der digitalen Eingänge lesen
         if din != new_din:                           # Digitale Eingänge haben sich geändert => Prellen? => Kein neuen Wert für Eingang übernehmen!
            break
      else:                                           # Schleife wurde vollständig durchlaufen, ohne dass sich die digitalen Eingänge geändert haben
         last_din = din                               # Neuen Zustand der Eingänge übernehmen
   return last_din

# Flankenerkennung 0->1 auf Bitmaske
def IsBitEdgeChangeToHigh(last, new, mask):
   return ((new ^ last) & new) & mask

# Hauptprogramm ===============================================================
# Hauptschleife ---------------------------------------------------------------
while 1:
   # Auswertung der digitalen Eingänge ----------------------------------------
   din = DigitalInputFilter(LastDin)
   if din != LastDin:
      if IsBitEdgeChangeToHigh(LastDin, din, DIN_BIT_TRIGGER):
         Cmd = din & DIN_MASK_CMD
      LastDin = din

   # Kommandoauswertung -------------------------------------------------------
   if Cmd != LastCmd:
      if Cmd == 0:
         Sp(0x3000,0, 1)                              # Fehler löschen
      elif Cmd == 1:
         Sp(0x3004,0, 0)                              # Endstufe deaktivieren
      elif Cmd == 2:
         Sp(0x3004,0, 1)                              # Endstufe aktivieren
      LastCmd = Cmd

Run-Datei

# -*- coding: iso-8859-1 -*-
from mc.pymc import Run

m = Run(node_id       = 1,                            # CANopen Knotenadresse des Gerätes
        prg_filename  = "demo_read_digital_inputs.py",# Dateiname des MPU2 Programms
        mpu_filename  = None,                         # Optionaler Dateiname eines kompilierten MPU2-Programms
        store         = False,                        # True = MPU2-Programm wird nach Übertragung im Gerät gespeichert
        start         = True,                         # True = MPU2-Programm wird nach Übertragung im Gerät gestartet
        dump          = 2)                            # dump Bit 0 = Kompilierter Code des MPU2-Programms wird ausgegeben
                                                      #      Bit 1 = Globale Variablen werden ausgegeben
                                                      #      Bit 2 = Interne Programmlabels werden ausgegeben


Zustandsmaschine

Es wird empfohlen, die Hauptschleife eines MPU2 Programms mit einer Zustandsmaschine zu versehen.

Dabei handelt es sich um ein Steuerkonzept, welches eine abstrakte Maschine zum Vorbild nimmt, die über einen internen Zustand verfügt. Dieser Zustand beinhaltet alle Informationen zum Betrieb der Maschine. Die Maschine arbeitet, indem sie von einem Zustand in einen anderen Zustand übergeht und bei derartigen Zustandsübergängen Aktionen ausführt. Dabei ergibt sich der Folgezustand aus dem momentanen Zustand und einem Ereignis, z. B. einem Tastendruck.

MPU2-Quellcode

# -*- coding: iso-8859-1 -*-
#*===========================================================================*#
#*        Copyright (c) 1997-2013 by ENGEL. All rights reserved.         *#
#*                                                                           *#
#* File     : demo_statemachine.py                                           *#
#*                                                                           *#
#* Project  : PLC                                                           *#
#* System   : MPU2                                                           *#
#* Version  : 1.00                                                           *#
#* Company  : ENGEL                                                      *#
#*                                                                           *#
#* Author   : ENGEL             mailto:                                  *#
#* Date     : 30.01.2013                                                     *#
#*---------------------------------------------------------------------------*#
#* Customer : ENGEL                                                      *#
#* Name     : Support                                                        *#
#* OrderNr. :                                                                *#
#* Descr.   : Beispiel für die Zustandsmaschine in MPU2                      *#
#* History  :                                                                *#
#*===========================================================================*#
from mc._pymc_builtins_ import *          # Import für Simulation am PC

# Globale Variablen zur Programmidentifikation --------------------------------
AppId       = 0x00000001               # eindeutige ID der Applikation
AppVersion  = 0x01000000               # Version der Applikation zB. 01.00.00.00

# Globale Variablen für Benutzerinterface -------------------------------------
Cmd               = 0                  # Kommando
InputFilterTime   = 10                 # Eingangsfilterzeit in ms

# Konstanten ------------------------------------------------------------------
STATE_Init                    = 0
STATE_Idle                    = 1
STATE_StartHoming             = 2
STATE_Wait4HomingDone         = 3
STATE_Move2Pos                = 4
STATE_Wait4Pos                = 5
STATE_Error                   = 6

CMD_BIT_StartPos              = (1<<2)
CMD_BIT_StartHoming           = (1<<1)
CMD_BIT_ClearError            = (1<<0)

DIN_BIT_TRIGGER               = 0x10
DIN_MASK_CMD                  = 0x0F

# Globale Hilfsvariablen ------------------------------------------------------
State                         = STATE_Init
LastState                     = STATE_Init
LastCmd                       = 0
LastDin                       = 0

# Initialisierung - Simulation-------------------------------------------------
if not PYMC:
   '''
   Dieser Abschnitt wird ausgeführt, wenn das Program direkt im PLC gestartet wird.
   Dadurch wird das MPU2 Programm am Rechner simuliert (in Verbindung mit dem Gerät).
   Dies ermöglich eine vereinfachte Diagnose, da "print" Befehle möglich werden.
   ACHTUNG: Das Zeitverhalten des Programms verändert sich, da die Ausführung der Sp()/Gp() Funktionen
   durch die Kommunikation zwischen PC und Gerät verzögert wird.

   Wenn Sie keine Simulation möchten, starten Sie das Programm über die Run() Funktion.
   '''
   SpGp_NodeId(1)                      # NodeId des Geräts für Sp()/Gp() Funktionen festlegen (für Simulation)
   Sp(0x5000,0, 3)                     # evtl. vorhandenes MPU2-Programm auf dem Gerät anhalten (stört sonst Simulation)

# Hilfsfunktion(en) -----------------------------------------------------------
# Merkt sich den aktuellen State in LastState und setzt den nächsten State
def NextState(state):
   global State, LastState
   LastState = State
   State     = state

# Liest Zustand der digitalen Eingänge mit Filter (verhindert Prellen)
def DigitalInputFilter(last_din):
   din = Gp(0x3120,0)                                 # Zustand der digitalen Eingänge lesen
   if din != last_din:                                # Prüfen ob Eingang sich geändert hat
      time_start = Clock()                            # Lese Startzeit für Filter
      while DiffClock(time_start) < InputFilterTime:  # Lese Zustand der digitalen Eingänge für InputFilterTime in ms
         new_din = Gp(0x3120,0)                       # Zustand der digitalen Eingänge lesen
         if din != new_din:                           # Digitale Eingänge haben sich geändert => Prellen? => Kein neuen Wert für Eingang übernehmen!
            break
      else:                                           # Schleife wurde vollständig durchlaufen, ohne dass sich die digitalen Eingänge geändert haben
         last_din = din                               # Neuen Zustand der Eingänge übernehmen
   return last_din

# Flankenerkennung 0->1 auf Bitmaske
def IsBitEdgeChangeToHigh(last, new, mask):
   return ((new ^ last) & new) & mask

# Prüft ob ein Fehler vorliegt und startet die Fehlerbehandlung falls nötig
def CheckError():
   if Gp(0x3001,0):
      NextState(STATE_Error)

# Auswertung der digitalen Eingänge -------------------------------------------
def CheckInputs():
   global LastDin, Cmd
   din = DigitalInputFilter(LastDin)
   if din != LastDin:
      if IsBitEdgeChangeToHigh(LastDin, din, DIN_BIT_TRIGGER):
         Cmd = din & DIN_MASK_CMD
      LastDin = din

# Initialisierung - Steuerung -------------------------------------------------
def InitPars ():
   Sp(0x3004, 0x00, 0)                 # DEV_Enable - Sperren
   Sp(0x3000, 0x00, 1)                 # DEV_Cmd - Fehler löschen
   Sp(0x3000, 0x00, 0x82)              # DEV_Cmd - Defaultparameter

   Sp(0x3900, 0x00, 1)                 # MOTOR_Type
   Sp(0x3911, 0x00, 2)                 # MOTOR_Polarity

   Sp(0x3910, 0x00, 10)                # MOTOR_PolN
   Sp(0x3962, 0x00, 2000)              # MOTOR_ENC_Resolution

   Sp(0x3901, 0x00, 3000)              # MOTOR_Nn
   Sp(0x3902, 0x00, 24000)             # MOTOR_Un

   Sp(0x3350, 0x00, 2410)              # VEL_Feedback
   Sp(0x3550, 0x00, 2410)              # SVEL_Feedback

   Sp(0x3221, 0x00, 15000)             # CURR_LimitMaxPos
   Sp(0x3223, 0x00, 15000)             # CURR_LimitMaxNeg

   Sp(0x3003,0,7)                      # PosMode

# Hauptprogramm ===============================================================
# Hauptschleife ---------------------------------------------------------------
while 1:
   CheckError()                              # Fehlerüberprüfung bei jedem Schleifendurchlauf
   CheckInputs()                             # Überprüfung der dig. Eingänge bei jedem Schleifendurchlauf

   #---------------------------------------------------------------------------
   if State == STATE_Init:
      InitPars()
      NextState(STATE_Idle)

   #---------------------------------------------------------------------------
   elif State == STATE_Idle:
      # Kommandoauswertung ----------------------------------------------------
      if Cmd != LastCmd:
         if Cmd == CMD_BIT_StartHoming:
            NextState(STATE_StartHoming)     # Homing starten
            LastCmd = Cmd
         elif Cmd == CMD_BIT_StartPos:
            NextState(STATE_Move2Pos)        # Positionierung starten
            LastCmd = Cmd

   #---------------------------------------------------------------------------
   elif State == STATE_StartHoming:
      Sp(0x3004,0, 1)                        # Endstufe aktivieren
      Sp(0x37B2,0, 35)                       # Referenzfahrt - Methode => Homing mittels der aktuellen Position
      Sp(0x37B0,0, 1)                        # Referenzfahrt wird gestartet
      NextState(STATE_Wait4HomingDone)

   #---------------------------------------------------------------------------
   elif State == STATE_Wait4HomingDone:
      if Gp(0x37B1,0x00) & (1<<4):           # Referenzfahrt wurde erfolgreich durchgeführt
         Cmd = 0                             # Cmd zurücksetzen damit neuer Befehl empfangen werden kann
         LastCmd = 0                         # LastCmd zurücksetzen damit neuer Befehl empfangen werden kann
         NextState(STATE_Idle)

   #---------------------------------------------------------------------------
   elif State == STATE_Move2Pos:
      Sp(0x3004,0, 1)                        # Endstufe aktivieren
      Sp(0x3000,1,0)                         # Gerätekommando - Ausführbar bei Änderung - Togglekommando
      Sp(0x3000,0x10, 2000)                  # Gerätekommando - Daten0 - Geschwindigkeit
      Sp(0x3000,0x11, 10000)                 # Gerätekommando - Daten1 - Zielposition
      Sp(0x3000,1,0x34)                      # Gerätekommando - Ausführbar bei Änderung - CMD_Movr
      NextState(STATE_Wait4Pos)

   #---------------------------------------------------------------------------
   elif State == STATE_Wait4Pos:
      if Gp(0x3002,0) & (1<<4):              # Ziel erreicht
         Cmd = 0                             # Cmd zurücksetzen damit neuer Befehl empfangen werden kann
         LastCmd = 0                         # LastCmd zurücksetzen damit neuer Befehl empfangen werden kann
         NextState(STATE_Idle)

   #---------------------------------------------------------------------------
   elif State == STATE_Error:
      error = Gp(0x3001,0)
      if error == 0:
         NextState(STATE_Idle)
      # Kommandoauswertung ----------------------------------------------------
      else:
         Sp(0x3004,0, 0)                     # Endstufe deaktivieren
         if (Cmd != LastCmd) and (Cmd == CMD_BIT_ClearError):
            Sp(0x3000,0,1)                   # Fehler löschen
            LastCmd = Cmd

Run-Datei

# -*- coding: iso-8859-1 -*-
from mc.pymc import Run

m = Run(node_id       = 1,                            # CANopen Knotenadresse des Gerätes
        prg_filename  = "demo_statemachine.py",       # Dateiname des MPU2 Programms
        mpu_filename  = None,                         # Optionaler Dateiname eines kompilierten MPU2-Programms
        store         = False,                        # True = MPU2-Programm wird nach Übertragung im Gerät gespeichert
        start         = True,                         # True = MPU2-Programm wird nach Übertragung im Gerät gestartet
        dump          = 2)                            # dump Bit 0 = Kompilierter Code des MPU2-Programms wird ausgegeben
                                                      #      Bit 1 = Globale Variablen werden ausgegeben
                                                      #      Bit 2 = Interne Programmlabels werden ausgegeben


Auf ein Ereignis warten

Wenn Sie auf ein bestimmtes Ereignis warten möchten, zum Beispiel einen Flankenwechsel eines digitalen Eingangs oder das Toggeln eines Statusbits, gehen Sie wie im folgenden Beispiel vor.
An den Zuständen STATE_Wait4HomingDone und STATE_Wait4Pos können Sie sehen wie Sie dies am besten realisieren.

MPU2-Quellcode

# -*- coding: iso-8859-1 -*-
#*===========================================================================*#
#*        Copyright (c) 1997-2013 by ENGEL. All rights reserved.         *#
#*                                                                           *#
#* File     : demo_statemachine.py                                           *#
#*                                                                           *#
#* Project  : PLC                                                           *#
#* System   : MPU2                                                           *#
#* Version  : 1.00                                                           *#
#* Company  : ENGEL                                                      *#
#*                                                                           *#
#* Author   : ENGEL             mailto:                                  *#
#* Date     : 30.01.2013                                                     *#
#*---------------------------------------------------------------------------*#
#* Customer : ENGEL                                                      *#
#* Name     : Support                                                        *#
#* OrderNr. :                                                                *#
#* Descr.   : Beispiel für die Zustandsmaschine in MPU2                      *#
#* History  :                                                                *#
#*===========================================================================*#
from mc._pymc_builtins_ import *          # Import für Simulation am PC

# Globale Variablen zur Programmidentifikation --------------------------------
AppId       = 0x00000001               # eindeutige ID der Applikation
AppVersion  = 0x01000000               # Version der Applikation zB. 01.00.00.00

# Globale Variablen für Benutzerinterface -------------------------------------
Cmd               = 0                  # Kommando
InputFilterTime   = 10                 # Eingangsfilterzeit in ms

# Konstanten ------------------------------------------------------------------
STATE_Init                    = 0
STATE_Idle                    = 1
STATE_StartHoming             = 2
STATE_Wait4HomingDone         = 3
STATE_Move2Pos                = 4
STATE_Wait4Pos                = 5
STATE_Error                   = 6

CMD_BIT_StartPos              = (1<<2)
CMD_BIT_StartHoming           = (1<<1)
CMD_BIT_ClearError            = (1<<0)

DIN_BIT_TRIGGER               = 0x10
DIN_MASK_CMD                  = 0x0F

# Globale Hilfsvariablen ------------------------------------------------------
State                         = STATE_Init
LastState                     = STATE_Init
LastCmd                       = 0
LastDin                       = 0

# Initialisierung - Simulation-------------------------------------------------
if not PYMC:
   '''
   Dieser Abschnitt wird ausgeführt, wenn das Program direkt im PLC gestartet wird.
   Dadurch wird das MPU2 Programm am Rechner simuliert (in Verbindung mit dem Gerät).
   Dies ermöglich eine vereinfachte Diagnose, da "print" Befehle möglich werden.
   ACHTUNG: Das Zeitverhalten des Programms verändert sich, da die Ausführung der Sp()/Gp() Funktionen
   durch die Kommunikation zwischen PC und Gerät verzögert wird.

   Wenn Sie keine Simulation möchten, starten Sie das Programm über die Run() Funktion.
   '''
   SpGp_NodeId(1)                      # NodeId des Geräts für Sp()/Gp() Funktionen festlegen (für Simulation)
   Sp(0x5000,0, 3)                     # evtl. vorhandenes MPU2-Programm auf dem Gerät anhalten (stört sonst Simulation)

# Hilfsfunktion(en) -----------------------------------------------------------
# Merkt sich den aktuellen State in LastState und setzt den nächsten State
def NextState(state):
   global State, LastState
   LastState = State
   State     = state

# Liest Zustand der digitalen Eingänge mit Filter (verhindert Prellen)
def DigitalInputFilter(last_din):
   din = Gp(0x3120,0)                                 # Zustand der digitalen Eingänge lesen
   if din != last_din:                                # Prüfen ob Eingang sich geändert hat
      time_start = Clock()                            # Lese Startzeit für Filter
      while DiffClock(time_start) < InputFilterTime:  # Lese Zustand der digitalen Eingänge für InputFilterTime in ms
         new_din = Gp(0x3120,0)                       # Zustand der digitalen Eingänge lesen
         if din != new_din:                           # Digitale Eingänge haben sich geändert => Prellen? => Kein neuen Wert für Eingang übernehmen!
            break
      else:                                           # Schleife wurde vollständig durchlaufen, ohne dass sich die digitalen Eingänge geändert haben
         last_din = din                               # Neuen Zustand der Eingänge übernehmen
   return last_din

# Flankenerkennung 0->1 auf Bitmaske
def IsBitEdgeChangeToHigh(last, new, mask):
   return ((new ^ last) & new) & mask

# Prüft ob ein Fehler vorliegt und startet die Fehlerbehandlung falls nötig
def CheckError():
   if Gp(0x3001,0):
      NextState(STATE_Error)

# Auswertung der digitalen Eingänge -------------------------------------------
def CheckInputs():
   global LastDin, Cmd
   din = DigitalInputFilter(LastDin)
   if din != LastDin:
      if IsBitEdgeChangeToHigh(LastDin, din, DIN_BIT_TRIGGER):
         Cmd = din & DIN_MASK_CMD
      LastDin = din

# Initialisierung - Steuerung -------------------------------------------------
def InitPars ():
   Sp(0x3004, 0x00, 0)                 # DEV_Enable - Sperren
   Sp(0x3000, 0x00, 1)                 # DEV_Cmd - Fehler löschen
   Sp(0x3000, 0x00, 0x82)              # DEV_Cmd - Defaultparameter

   Sp(0x3900, 0x00, 1)                 # MOTOR_Type
   Sp(0x3911, 0x00, 2)                 # MOTOR_Polarity

   Sp(0x3910, 0x00, 10)                # MOTOR_PolN
   Sp(0x3962, 0x00, 2000)              # MOTOR_ENC_Resolution

   Sp(0x3901, 0x00, 3000)              # MOTOR_Nn
   Sp(0x3902, 0x00, 24000)             # MOTOR_Un

   Sp(0x3350, 0x00, 2410)              # VEL_Feedback
   Sp(0x3550, 0x00, 2410)              # SVEL_Feedback

   Sp(0x3221, 0x00, 15000)             # CURR_LimitMaxPos
   Sp(0x3223, 0x00, 15000)             # CURR_LimitMaxNeg

   Sp(0x3003,0,7)                      # PosMode

# Hauptprogramm ===============================================================
# Hauptschleife ---------------------------------------------------------------
while 1:
   CheckError()                              # Fehlerüberprüfung bei jedem Schleifendurchlauf
   CheckInputs()                             # Überprüfung der dig. Eingänge bei jedem Schleifendurchlauf

   #---------------------------------------------------------------------------
   if State == STATE_Init:
      InitPars()
      NextState(STATE_Idle)

   #---------------------------------------------------------------------------
   elif State == STATE_Idle:
      # Kommandoauswertung ----------------------------------------------------
      if Cmd != LastCmd:
         if Cmd == CMD_BIT_StartHoming:
            NextState(STATE_StartHoming)     # Homing starten
            LastCmd = Cmd
         elif Cmd == CMD_BIT_StartPos:
            NextState(STATE_Move2Pos)        # Positionierung starten
            LastCmd = Cmd

   #---------------------------------------------------------------------------
   elif State == STATE_StartHoming:
      Sp(0x3004,0, 1)                        # Endstufe aktivieren
      Sp(0x37B2,0, 35)                       # Referenzfahrt - Methode => Homing mittels der aktuellen Position
      Sp(0x37B0,0, 1)                        # Referenzfahrt wird gestartet
      NextState(STATE_Wait4HomingDone)

   #---------------------------------------------------------------------------
   elif State == STATE_Wait4HomingDone:
      if Gp(0x37B1,0x00) & (1<<4):           # Referenzfahrt wurde erfolgreich durchgeführt
         Cmd = 0                             # Cmd zurücksetzen damit neuer Befehl empfangen werden kann
         LastCmd = 0                         # LastCmd zurücksetzen damit neuer Befehl empfangen werden kann
         NextState(STATE_Idle)

   #---------------------------------------------------------------------------
   elif State == STATE_Move2Pos:
      Sp(0x3004,0, 1)                        # Endstufe aktivieren
      Sp(0x3000,1,0)                         # Gerätekommando - Ausführbar bei Änderung - Togglekommando
      Sp(0x3000,0x10, 2000)                  # Gerätekommando - Daten0 - Geschwindigkeit
      Sp(0x3000,0x11, 10000)                 # Gerätekommando - Daten1 - Zielposition
      Sp(0x3000,1,0x34)                      # Gerätekommando - Ausführbar bei Änderung - CMD_Movr
      NextState(STATE_Wait4Pos)

   #---------------------------------------------------------------------------
   elif State == STATE_Wait4Pos:
      if Gp(0x3002,0) & (1<<4):              # Ziel erreicht
         Cmd = 0                             # Cmd zurücksetzen damit neuer Befehl empfangen werden kann
         LastCmd = 0                         # LastCmd zurücksetzen damit neuer Befehl empfangen werden kann
         NextState(STATE_Idle)

   #---------------------------------------------------------------------------
   elif State == STATE_Error:
      error = Gp(0x3001,0)
      if error == 0:
         NextState(STATE_Idle)
      # Kommandoauswertung ----------------------------------------------------
      else:
         Sp(0x3004,0, 0)                     # Endstufe deaktivieren
         if (Cmd != LastCmd) and (Cmd == CMD_BIT_ClearError):
            Sp(0x3000,0,1)                   # Fehler löschen
            LastCmd = Cmd

Run-Datei

# -*- coding: iso-8859-1 -*-
from mc.pymc import Run

m = Run(node_id       = 1,                            # CANopen Knotenadresse des Gerätes
        prg_filename  = "demo_statemachine.py",       # Dateiname des MPU2 Programms
        mpu_filename  = None,                         # Optionaler Dateiname eines kompilierten MPU2-Programms
        store         = False,                        # True = MPU2-Programm wird nach Übertragung im Gerät gespeichert
        start         = True,                         # True = MPU2-Programm wird nach Übertragung im Gerät gestartet
        dump          = 2)                            # dump Bit 0 = Kompilierter Code des MPU2-Programms wird ausgegeben
                                                      #      Bit 1 = Globale Variablen werden ausgegeben
                                                      #      Bit 2 = Interne Programmlabels werden ausgegeben


Steuern über dig. Eingänge

Das folgende Beispiel zeigt, wie man eine Applikation über die digitalen Eingänge ansteuern kann.

MPU2-Quellcode

# -*- coding: iso-8859-1 -*-
#*===========================================================================*#
#*        Copyright (c) 1997-2013 by ENGEL. All rights reserved.         *#
#*                                                                           *#
#* File     : demo_cmd_via_digital_inputs.py                                 *#
#*                                                                           *#
#* Project  : PLC                                                           *#
#* System   : MPU2                                                           *#
#* Version  : 1.00                                                           *#
#* Company  : ENGEL                                                      *#
#*                                                                           *#
#* Author   : ENGEL             mailto:                                  *#
#* Date     : 19.02.2013                                                     *#
#*---------------------------------------------------------------------------*#
#* Customer : ENGEL                                                      *#
#* Name     : Support                                                        *#
#* OrderNr. :                                                                *#
#* Descr.   : Beispiel für Kommandos per digitalen Eingängen                 *#
#*                                                                           *#
#*    In dieser Applikation erfolgt die Steuerung über dig. Eingänge.        *#
#*    Die dig. Eingänge werden wie folgt ausgewertet:                        *#
#*                                                                           *#
#*     din0     => 0 = Endstufe deaktivert   / 1 = Endstufe aktiviert        *#
#*     din1     => 0 = Stopp mit Haltemoment / 1 = Bewegung aktiv            *#
#*     din2     => Drehrichtungsumschaltung                                  *#
#*     ain0     => Drehzahlsollwertvorgabe                                   *#
#*                                                                           *#
#* History  :                                                                *#
#*===========================================================================*#
from mc._pymc_builtins_ import *          # Import für Simulation am PC

# Globale Variablen zur Programmidentifikation --------------------------------
AppId       = 0x00000001               # eindeutige ID der Applikation
AppVersion  = 0x01000000               # Version der Applikation zB. 01.00.00.00

# Globale Variablen für Benutzerinterface -------------------------------------
Cmd               = 0                  # Kommando
InputFilterTime   = 10                 # Eingangsfilterzeit in ms

# Konstanten ------------------------------------------------------------------
DIN_MASK_CMD            = 0x07
DIN_MASK_CMD_PowerStage = 0x01
DIN_MASK_CMD_StartStop  = 0x02
DIN_MASK_CMD_MovingDir  = 0x04

# Globale Hilfsvariablen ------------------------------------------------------
LastDin        = 0
LastCmd        = 0
LastPowerStage = 0
LastStartStop  = 0
LastMovingDir  = 0

# Initialisierung - Simulation-------------------------------------------------
if not PYMC:
   '''
   Dieser Abschnitt wird ausgeführt, wenn das Program direkt im PLC gestartet wird.
   Dadurch wird das MPU2 Programm am Rechner simuliert (in Verbindung mit dem Gerät).
   Dies ermöglich eine vereinfachte Diagnose, da "print" Befehle möglich werden.
   ACHTUNG: Das Zeitverhalten des Programms verändert sich, da die Ausführung der Sp()/Gp() Funktionen
   durch die Kommunikation zwischen PC und Gerät verzögert wird.

   Wenn Sie keine Simulation möchten, starten Sie das Programm über die Run() Funktion.
   '''
   SpGp_NodeId(1)                      # NodeId des Geräts für Sp()/Gp() Funktionen festlegen (für Simulation)
   Sp(0x5000,0, 3)                     # evtl. vorhandenes MPU2-Programm auf dem Gerät anhalten (stört sonst Simulation)

# Hilfsfunktion(en) -----------------------------------------------------------
# Liest Zustand der digitalen Eingänge mit Filter (verhindert Prellen)
def DigitalInputFilter(last_din):
   din = Gp(0x3120,0)                                 # Zustand der digitalen Eingänge lesen
   if din != last_din:                                # Prüfen ob Eingang sich geändert hat
      time_start = Clock()                            # Lese Startzeit für Filter
      while DiffClock(time_start) < InputFilterTime:  # Lese Zustand der digitalen Eingänge für InputFilterTime in ms
         new_din = Gp(0x3120,0)                       # Zustand der digitalen Eingänge lesen
         if din != new_din:                           # Digitale Eingänge haben sich geändert => Prellen? => Kein neuen Wert für Eingang übernehmen!
            break
      else:                                           # Schleife wurde vollständig durchlaufen, ohne dass sich die digitalen Eingänge geändert haben
         last_din = din                               # Neuen Zustand der Eingänge übernehmen
   return last_din

# Flankenerkennung 0->1 auf Bit "mask"
def IsBitEdgeChangeToHigh(last, new, mask):
   return ((new ^ last) & new) & mask

# Erkennt ob bestimmte Bits gesetzt sind
def IsBitHigh(value, mask):
   return (value & mask)

# Initialisierung - Steuerung -------------------------------------------------
def InitPars ():
   Sp(0x3004, 0x00, 0)                 # DEV_Enable - Sperren
   Sp(0x3000, 0x00, 1)                 # DEV_Cmd - Fehler löschen
   Sp(0x3000, 0x00, 0x82)              # DEV_Cmd - Defaultparameter

   Sp(0x3900, 0x00, 1)                 # MOTOR_Type
   Sp(0x3911, 0x00, 2)                 # MOTOR_Polarity

   Sp(0x3910, 0x00, 10)                # MOTOR_PolN
   Sp(0x3962, 0x00, 2000)              # MOTOR_ENC_Resolution

   Sp(0x3901, 0x00, 3000)              # MOTOR_Nn
   Sp(0x3902, 0x00, 24000)             # MOTOR_Un

   Sp(0x3350, 0x00, 2410)              # VEL_Feedback
   Sp(0x3550, 0x00, 2410)              # SVEL_Feedback

   Sp(0x3221, 0x00, 15000)             # CURR_LimitMaxPos
   Sp(0x3223, 0x00, 15000)             # CURR_LimitMaxNeg

   Sp(0x3003, 0x00, 3)                 # DEV_Mode

   Sp(0x310a, 0x00, 50)                # IO_AIN0_DeadBand

   Sp(0x3304, 0x00, 256)               # VEL_DesiredValue_Source
   Sp(0x3305, 0x00, 2000)              # VEL_DesiredValue_Reference

   Sp(0x3341, 0x00, 20)                # VEL_Acc_dT
   Sp(0x3343, 0x00, 20)                # VEL_Dec_dT
   Sp(0x3345, 0x00, 1)                 # VEL_Dec_QuickStop_dT

   Sp(0x3004, 0x00, 0)                 # DEV_Enable

# Hauptprogramm ===============================================================
InitPars()

# Hauptschleife ---------------------------------------------------------------
while 1:
   # Auswertung der digitalen Eingänge ----------------------------------------
   din = DigitalInputFilter(LastDin)
   if din != LastDin:
      Cmd = din & DIN_MASK_CMD
      LastDin = din

   # Kommandoauswertung -------------------------------------------------------
   if Cmd != LastCmd:
      power_stage = IsBitHigh(Cmd, DIN_MASK_CMD_PowerStage)
      was_enabled = False
      if power_stage != LastPowerStage:
         if power_stage:
            Sp(0x3004,0, 1)                     # Endstufe aktivieren
            was_enabled = True
         else:
            Sp(0x3004,0, 0)                     # Endstufe deaktivieren
         LastPowerStage = power_stage

      start_stop = IsBitHigh(Cmd, DIN_MASK_CMD_StartStop)
      if (start_stop != LastStartStop) or was_enabled:
         if start_stop:
            Sp(0x3000, 0x00, 0x04)              # Continue Bewegung
         else:
            Sp(0x3000, 0x00, 0x02)              # QuickStop Bewegung
         LastStartStop = start_stop

      moving_dir = IsBitHigh(Cmd, DIN_MASK_CMD_MovingDir)
      if moving_dir != LastMovingDir:
         abs_vel_ref = abs(Gp(0x3305, 0x00))
         # Drehrichtungsumkehr
         if moving_dir:
            Sp(0x3305, 0x00, -abs_vel_ref)      # Negative Drehrichtung
         else:
            Sp(0x3305, 0x00, abs_vel_ref)       # Positive Drehrichtung
         LastMovingDir = moving_dir

      LastCmd = Cmd

Run-Datei

# -*- coding: iso-8859-1 -*-
from mc.pymc import Run

m = Run(node_id       = 1,                                  # CANopen Knotenadresse des Gerätes
        prg_filename  = "demo_cmd_via_digital_inputs.py",   # Dateiname des MPU2 Programms
        mpu_filename  = None,                               # Optionaler Dateiname eines kompilierten MPU2-Programms
        store         = False,                              # True = MPU2-Programm wird nach Übertragung im Gerät gespeichert
        start         = True,                               # True = MPU2-Programm wird nach Übertragung im Gerät gestartet
        dump          = 2)                                  # dump Bit 0 = Kompilierter Code des MPU2-Programms wird ausgegeben
                                                            #      Bit 1 = Globale Variablen werden ausgegeben
                                                            #      Bit 2 = Interne Programmlabels werden ausgegeben


Rel. Positionierung über analogen Eingang

Dieses Beispiel zeigt, wie man eine relative Positionierung über den analogen Eingang durchführt.

MPU2-Quellcode

# -*- coding: iso-8859-1 -*-
#*===========================================================================*#
#*        Copyright (c) 1997-2013 by ENGEL. All rights reserved.         *#
#*                                                                           *#
#* File     : demo_position_analog_relative.py                               *#
#*                                                                           *#
#* Project  : PLC                                                           *#
#* System   : MPU2                                                           *#
#* Version  : 1.00                                                           *#
#* Company  : ENGEL                                                      *#
#*                                                                           *#
#* Author   : ENGEL             mailto:                                  *#
#* Date     : 23.10.2013                                                     *#
#*---------------------------------------------------------------------------*#
#* Customer : ENGEL                                                      *#
#* Name     : Support                                                        *#
#* OrderNr. :                                                                *#
#* Descr.   : Beispiel für relative Positionierung über analogen Eingang     *#
#*                                                                           *#
#*    In dieser Applikation erfolgt die Steuerung über einen digitalen und   *#
#*    einen analogen Eingang.                                                *#
#*                                                                           *#
#*    Bei einer steigenden Flanke des din0 wird die aktuelle Position auf 0  *#
#*    gesetzt und eine absolute Positionierung auf die errechnete Position,  *#
#*    solange der din0 auf HIGH ist, durchgeführt.                           *#
#*                                                                           *#
#*    Die dig. Eingänge werden wie folgt ausgewertet:                        *#
#*                                                                           *#
#*     din0     => 0 = Positionierung auf aktuelle Kommandoposition          *#
#*              => 1 = Absolute Positionierung auf errechnete Position       *#
#*     ain0     => Positionsvorgabe für absolute Positionierung              *#
#*                                                                           *#
#* History  :                                                                *#
#*===========================================================================*#
from mc._pymc_builtins_ import *          # Import für Simulation am PC

# Globale Variablen zur Programmidentifikation --------------------------------
AppId       = 0x00000001               # eindeutige ID der Applikation
AppVersion  = 0x01000000               # Version der Applikation zB. 01.00.00.00

# Globale Variablen für Benutzerinterface -------------------------------------
Cmd               = 0                  # Kommando
InputFilterTime   = 10                 # Eingangsfilterzeit in ms
Velocity          = 500                # Geschwindigkeit für die Bewegungen
PositionMax       = 5000               # Maximale relative Position bei 10V am Analogeingang
SampleTime        = 10                 # Zeit in ms bis die nächste Positionsberechnung durchgeführt wird

# Konstanten ------------------------------------------------------------------
DIN_MASK_CMD            = 0x01
DIN_MASK_CMD_DoAbsPos   = 0x01
MASK_CMD_ToggleBit      = 0x80
CMD_HOME_SetPos         = 0x58
CMD_Mova                = 0x33
CMD_Movr                = 0x34

# Globale Hilfsvariablen ------------------------------------------------------
LastDin           = 0
LastCmd           = 0
LastToggleBit     = 0
LastSamplePoint   = 0
WasHomed          = False

# Initialisierung - Simulation-------------------------------------------------
if not PYMC:
   '''
   Dieser Abschnitt wird ausgeführt, wenn das Program direkt im PLC gestartet wird.
   Dadurch wird das MPU2 Programm am Rechner simuliert (in Verbindung mit dem Gerät).
   Dies ermöglich eine vereinfachte Diagnose, da "print" Befehle möglich werden.
   ACHTUNG: Das Zeitverhalten des Programms verändert sich, da die Ausführung der Sp()/Gp() Funktionen
   durch die Kommunikation zwischen PC und Gerät verzögert wird.

   Wenn Sie keine Simulation möchten, starten Sie das Programm über die Run() Funktion.
   '''
   SpGp_NodeId(1)                      # NodeId des Geräts für Sp()/Gp() Funktionen festlegen (für Simulation)
   Sp(0x5000,0, 3)                     # evtl. vorhandenes MPU2-Programm auf dem Gerät anhalten (stört sonst Simulation)

# Hilfsfunktion(en) -----------------------------------------------------------
# Liest Zustand der digitalen Eingänge mit Filter (verhindert Prellen)
def DigitalInputFilter(last_din):
   din = Gp(0x3120,0)                                 # Zustand der digitalen Eingänge lesen
   if din != last_din:                                # Prüfen ob Eingang sich geändert hat
      time_start = Clock()                            # Lese Startzeit für Filter
      while DiffClock(time_start) < InputFilterTime:  # Lese Zustand der digitalen Eingänge für InputFilterTime in ms
         new_din = Gp(0x3120,0)                       # Zustand der digitalen Eingänge lesen
         if din != new_din:                           # Digitale Eingänge haben sich geändert => Prellen? => Kein neuen Wert für Eingang übernehmen!
            break
      else:                                           # Schleife wurde vollständig durchlaufen, ohne dass sich die digitalen Eingänge geändert haben
         last_din = din                               # Neuen Zustand der Eingänge übernehmen
   return last_din

# Flankenerkennung 0->1 auf Bit "mask"
def IsBitEdgeChangeToHigh(last, new, mask):
   return ((new ^ last) & new) & mask

# Flankenerkennung 1->0 auf Bit "mask"
def IsBitEdgeChangeToLow(last, new, mask):
   return ((new ^ last) & last) & mask

# Erkennt ob bestimmte Bits gesetzt sind
def IsBitHigh(value, mask):
   return (value & mask)

# Invertieren der in der maske gesetzten Bits
def InvertBits(value, mask):
   return (value ^ mask)

# Führt ein Gerätekommando aus, mit Togglebit
def ExecDevCommand(cmd, data0, data1, data2):
   global LastToggleBit
   LastToggleBit = InvertBits(LastToggleBit, MASK_CMD_ToggleBit)
   Sp(0x3000, 0x10, data0)
   Sp(0x3000, 0x11, data1)
   Sp(0x3000, 0x12, data2)
   Sp(0x3000, 0x01, cmd | LastToggleBit)

# Initialisierung - Steuerung -------------------------------------------------
def InitPars ():
   Sp(0x3003, 0x00, 7)                 # DEV_Mode

   Sp(0x310a, 0x00, 50)                # IO_AIN0_DeadBand

   Sp(0x3050, 0x00, 305)               # DEV_DinEnable          Endstufe freigegeben bei steigender Flanke von din1
   Sp(0x3051, 0x00, -305)              # DEV_DinClearError      Fehler löschen bei fallender Flanke von din1

   Sp(0x3004, 0x00, 1)                 # DEV_Enable

# Hauptprogramm ===============================================================
InitPars()

LastDin  = DigitalInputFilter(LastDin) # Initialisierung mit Startwerten => für Flankenerkennung
Cmd      = LastDin & DIN_MASK_CMD
LastCmd  = Cmd

# Hauptschleife ---------------------------------------------------------------
while 1:
   # Auswertung der digitalen Eingänge ----------------------------------------
   din = DigitalInputFilter(LastDin)
   if din != LastDin:
      Cmd = din & DIN_MASK_CMD
      LastDin = din

   # Kommandoauswertung -------------------------------------------------------
   if Cmd != LastCmd:
      if IsBitEdgeChangeToHigh(LastCmd, Cmd, DIN_MASK_CMD_DoAbsPos):
         # Steigende Flanke des 'Starte Positionierung' Eingang erkannt => Setze aktuelle Position auf 0
         ExecDevCommand(CMD_HOME_SetPos, 0, 0, 0)
         WasHomed = True
      elif IsBitEdgeChangeToLow(LastCmd, Cmd, DIN_MASK_CMD_DoAbsPos):
         # Fallende Flanke des 'Starte Positionierung' Eingang erkannt => Starte relative Positionierung auf aktuelle Kommandoposition
         ExecDevCommand(CMD_Movr, Velocity, 0, 0)
      LastCmd = Cmd

   if WasHomed and IsBitHigh(Cmd, DIN_MASK_CMD_DoAbsPos):
      if DiffClock(LastSamplePoint) > SampleTime:
         # Positionierung ist aktiv => Analogeinang wird ausgewertet und in Position umgerechnet => Absolute Positionierung auf errechnete Position
         LastSamplePoint = Clock()
         ain0_value = Gp(0x3100, 0x00)

         abs_pos = ((ain0_value/10) * PositionMax) / 1000
         if abs_pos > PositionMax:
            abs_pos = PositionMax
         elif abs_pos < -PositionMax:
            abs_pos = -PositionMax

         ExecDevCommand(CMD_Mova, Velocity, abs_pos, 0)

Run-Datei

# -*- coding: iso-8859-1 -*-
from mc.pymc import Run

m = Run(node_id       = 1,                                  # CANopen Knotenadresse des Gerätes
        prg_filename  = "demo_position_analog_relative.py", # Dateiname des MPU2 Programms
        mpu_filename  = None,                               # Optionaler Dateiname eines kompilierten MPU2-Programms
        store         = False,                              # True = MPU2-Programm wird nach Übertragung im Gerät gespeichert
        start         = True,                               # True = MPU2-Programm wird nach Übertragung im Gerät gestartet
        dump          = 2)                                  # dump Bit 0 = Kompilierter Code des MPU2-Programms wird ausgegeben
                                                            #      Bit 1 = Globale Variablen werden ausgegeben
                                                            #      Bit 2 = Interne Programmlabels werden ausgegeben


Referenzfahrt starten

Um eine Referenzfahrt durchzuführen, gehen Sie wie im folgenden Beispiel vor.
Die Initialisierung der Referenzfahrt erfolgt einmalig zu Beginn des Programms und wird über einen Zustand der Zustandsmaschine (STATE_StartHoming) gestartet. Danach wird im nächsten Zustand (STATE_Wait4HomingDone) auf eine erfolgreiche Referenzierung gewartet.

MPU2-Quellcode

# -*- coding: iso-8859-1 -*-
#*===========================================================================*#
#*        Copyright (c) 1997-2013 by ENGEL. All rights reserved.         *#
#*                                                                           *#
#* File     : demo_start_homing.py                                           *#
#*                                                                           *#
#* Project  : PLC                                                           *#
#* System   : MPU2                                                           *#
#* Version  : 1.00                                                           *#
#* Company  : ENGEL                                                      *#
#*                                                                           *#
#* Author   : ENGEL             mailto:                                  *#
#* Date     : 19.02.2013                                                     *#
#*---------------------------------------------------------------------------*#
#* Customer : ENGEL                                                      *#
#* Name     : Support                                                        *#
#* OrderNr. :                                                                *#
#* Descr.   : Beispiel für Referenzfahrt in MPU2                             *#
#* History  :                                                                *#
#*===========================================================================*#
from mc._pymc_builtins_ import *          # Import für Simulation am PC

# Globale Variablen zur Programmidentifikation --------------------------------
AppId       = 0x00000001               # eindeutige ID der Applikation
AppVersion  = 0x01000000               # Version der Applikation zB. 01.00.00.00

# Globale Variablen für Benutzerinterface -------------------------------------
Cmd               = 0                  # Kommando
InputFilterTime   = 10                 # Eingangsfilterzeit in ms

# Konstanten ------------------------------------------------------------------
STATE_Init                    = 0
STATE_Idle                    = 1
STATE_StartHoming             = 2
STATE_Wait4HomingDone         = 3
STATE_Move2Pos                = 4
STATE_Wait4Pos                = 5
STATE_Error                   = 6

CMD_BIT_StartPos              = (1<<2)
CMD_BIT_StartHoming           = (1<<1)
CMD_BIT_ClearError            = (1<<0)

DIN_BIT_TRIGGER               = 0x10
DIN_MASK_CMD                  = 0x0F

# Globale Hilfsvariablen ------------------------------------------------------
State                         = STATE_Init
LastState                     = STATE_Init
LastCmd                       = 0
LastDin                       = 0

# Initialisierung - Simulation-------------------------------------------------
if not PYMC:
   '''
   Dieser Abschnitt wird ausgeführt, wenn das Program direkt im PLC gestartet wird.
   Dadurch wird das MPU2 Programm am Rechner simuliert (in Verbindung mit dem Gerät).
   Dies ermöglich eine vereinfachte Diagnose, da "print" Befehle möglich werden.
   ACHTUNG: Das Zeitverhalten des Programms verändert sich, da die Ausführung der Sp()/Gp() Funktionen
   durch die Kommunikation zwischen PC und Gerät verzögert wird.

   Wenn Sie keine Simulation möchten, starten Sie das Programm über die Run() Funktion.
   '''
   SpGp_NodeId(1)                      # NodeId des Geräts für Sp()/Gp() Funktionen festlegen (für Simulation)
   Sp(0x5000,0, 3)                     # evtl. vorhandenes MPU2-Programm auf dem Gerät anhalten (stört sonst Simulation)

# Hilfsfunktion(en) -----------------------------------------------------------
# Merkt sich den aktuellen State in LastState und setzt den nächsten State
def NextState(state):
   global State, LastState
   LastState = State
   State     = state

# Liest Zustand der digitalen Eingänge mit Filter (verhindert Prellen)
def DigitalInputFilter(last_din):
   din = Gp(0x3120,0)                                 # Zustand der digitalen Eingänge lesen
   if din != last_din:                                # Prüfen ob Eingang sich geändert hat
      time_start = Clock()                            # Lese Startzeit für Filter
      while DiffClock(time_start) < InputFilterTime:  # Lese Zustand der digitalen Eingänge für InputFilterTime in ms
         new_din = Gp(0x3120,0)                       # Zustand der digitalen Eingänge lesen
         if din != new_din:                           # Digitale Eingänge haben sich geändert => Prellen? => Kein neuen Wert für Eingang übernehmen!
            break
      else:                                           # Schleife wurde vollständig durchlaufen, ohne dass sich die digitalen Eingänge geändert haben
         last_din = din                               # Neuen Zustand der Eingänge übernehmen
   return last_din

# Flankenerkennung 0->1 auf Bitmaske
def IsBitEdgeChangeToHigh(last, new, mask):
   return ((new ^ last) & new) & mask

# Prüft ob ein Fehler vorliegt und startet die Fehlerbehandlung falls nötig
def CheckError():
   if Gp(0x3001,0):
      NextState(STATE_Error)

# Auswertung der digitalen Eingänge -------------------------------------------
def CheckInputs():
   global LastDin, Cmd
   din = DigitalInputFilter(LastDin)
   if din != LastDin:
      if IsBitEdgeChangeToHigh(LastDin, din, DIN_BIT_TRIGGER):
         Cmd = din & DIN_MASK_CMD
      LastDin = din

# Initialisierung - Steuerung -------------------------------------------------
def InitPars ():
   Sp(0x3004, 0x00, 0)                 # DEV_Enable - Sperren
   Sp(0x3000, 0x00, 1)                 # DEV_Cmd - Fehler löschen
   Sp(0x3000, 0x00, 0x82)              # DEV_Cmd - Defaultparameter

   Sp(0x3900, 0x00, 1)                 # MOTOR_Type
   Sp(0x3911, 0x00, 2)                 # MOTOR_Polarity

   Sp(0x3910, 0x00, 10)                # MOTOR_PolN
   Sp(0x3962, 0x00, 2000)              # MOTOR_ENC_Resolution

   Sp(0x3901, 0x00, 3000)              # MOTOR_Nn
   Sp(0x3902, 0x00, 24000)             # MOTOR_Un

   Sp(0x3350, 0x00, 2410)              # VEL_Feedback
   Sp(0x3550, 0x00, 2410)              # SVEL_Feedback

   Sp(0x3221, 0x00, 15000)             # CURR_LimitMaxPos
   Sp(0x3223, 0x00, 15000)             # CURR_LimitMaxNeg

   Sp(0x3003,0,7)                      # PosMode

   Sp(0x3055, 0x00, 304)               # DEV_DinLimitPos     - digitaler Eingang 0 als Limiteingang, Hi-Aktiv

   Sp(0x37B2, 0x00, 18)                # POS_HomingMethod    - Homing mittels des positiven Limitschalters
   Sp(0x37B4, 0x00, 100)               # POS_HomingVelSwitch - Geschwindigkeit für Schaltersuche
   Sp(0x37B4, 0x01, 50)                # POS_HomingVelZero   - Geschwindigkeit für Nullpunktanfahrt

# Hauptprogramm ===============================================================
# Hauptschleife ---------------------------------------------------------------
while 1:
   CheckError()                              # Fehlerüberprüfung bei jedem Schleifendurchlauf
   CheckInputs()                             # Überprüfung der dig. Eingänge bei jedem Schleifendurchlauf

   #---------------------------------------------------------------------------
   if State == STATE_Init:
      InitPars()
      NextState(STATE_Idle)

   #---------------------------------------------------------------------------
   elif State == STATE_Idle:
      # Kommandoauswertung ----------------------------------------------------
      if Cmd != LastCmd:
         if Cmd == CMD_BIT_StartHoming:
            NextState(STATE_StartHoming)     # Homing starten
            LastCmd = Cmd
         elif Cmd == CMD_BIT_StartPos:
            NextState(STATE_Move2Pos)        # Positionierung starten
            LastCmd = Cmd

   #---------------------------------------------------------------------------
   elif State == STATE_StartHoming:
      Sp(0x3004,0, 1)                        # Endstufe aktivieren
      Sp(0x37B0,0, 1)                        # Referenzfahrt wird gestartet
      NextState(STATE_Wait4HomingDone)

   #---------------------------------------------------------------------------
   elif State == STATE_Wait4HomingDone:
      if Gp(0x37B1,0x00) & (1<<4):           # Referenzfahrt wurde erfolgreich durchgeführt
         Cmd = 0                             # Cmd zurücksetzen damit neuer Befehl empfangen werden kann
         LastCmd = 0                         # LastCmd zurücksetzen damit neuer Befehl empfangen werden kann
         NextState(STATE_Idle)

   #---------------------------------------------------------------------------
   elif State == STATE_Move2Pos:
      Sp(0x3004,0, 1)                        # Endstufe aktivieren
      Sp(0x3000,1,0)                         # Gerätekommando - Ausführbar bei Änderung - Togglekommando
      Sp(0x3000,0x10, 2000)                  # Gerätekommando - Daten0 - Geschwindigkeit
      Sp(0x3000,0x11, 10000)                 # Gerätekommando - Daten1 - Zielposition
      Sp(0x3000,1,0x34)                      # Gerätekommando - Ausführbar bei Änderung - CMD_Movr
      NextState(STATE_Wait4Pos)

   #---------------------------------------------------------------------------
   elif State == STATE_Wait4Pos:
      if Gp(0x3002,0) & (1<<4):              # Ziel erreicht
         Cmd = 0                             # Cmd zurücksetzen damit neuer Befehl empfangen werden kann
         LastCmd = 0                         # LastCmd zurücksetzen damit neuer Befehl empfangen werden kann
         NextState(STATE_Idle)

   #---------------------------------------------------------------------------
   elif State == STATE_Error:
      error = Gp(0x3001,0)
      if error == 0:
         NextState(STATE_Idle)
      # Kommandoauswertung ----------------------------------------------------
      else:
         Sp(0x3004,0, 0)                     # Endstufe deaktivieren
         if (Cmd != LastCmd) and (Cmd == CMD_BIT_ClearError):
            Sp(0x3000,0,1)                   # Fehler löschen
            LastCmd = Cmd

Run-Datei

# -*- coding: iso-8859-1 -*-
from mc.pymc import Run

m = Run(node_id       = 1,                            # CANopen Knotenadresse des Gerätes
        prg_filename  = "demo_start_homing.py",       # Dateiname des MPU2 Programms
        mpu_filename  = None,                         # Optionaler Dateiname eines kompilierten MPU2-Programms
        store         = False,                        # True = MPU2-Programm wird nach Übertragung im Gerät gespeichert
        start         = True,                         # True = MPU2-Programm wird nach Übertragung im Gerät gestartet
        dump          = 2)                            # dump Bit 0 = Kompilierter Code des MPU2-Programms wird ausgegeben
                                                      #      Bit 1 = Globale Variablen werden ausgegeben
                                                      #      Bit 2 = Interne Programmlabels werden ausgegeben


Kommunikation aus MPU2 heraus

Es ist möglich, innerhalb der MPU mit anderen Geräten zu kommunizieren.

In der MPU2 existieren zwei verschiedene Möglichkeiten. Entweder man konfiguriert ein PDO Mapping bei beiden Geräten (1. Beispiel) oder man kommuniziert über SDO Anfragen (2. Beispiel).

1. PDO Mapping

MPU2-Quellcode

# -*- coding: iso-8859-1 -*-
#*===========================================================================*#
#*        Copyright (c) 1997-2013 by ENGEL. All rights reserved.         *#
#*                                                                           *#
#* File     : demo_communication_from_mpu_pdo.py                             *#
#*                                                                           *#
#* Project  : PLC                                                           *#
#* System   : MPU2                                                           *#
#* Version  : 1.00                                                           *#
#* Company  : ENGEL                                                      *#
#*                                                                           *#
#* Author   : ENGEL             mailto:                                  *#
#* Date     : 05.02.2013                                                     *#
#*---------------------------------------------------------------------------*#
#* Customer : ENGEL                                                      *#
#* Name     : Support                                                        *#
#* OrderNr. :                                                                *#
#* Descr.   : Beispiel für Kommunikation via PDO in MPU2                     *#
#* History  :                                                                *#
#*===========================================================================*#
from mc._pymc_builtins_ import *          # Import für Simulation am PC

# Globale Variablen zur Programmidentifikation --------------------------------
AppId       = 0x00000001               # eindeutige ID der Applikation
AppVersion  = 0x01000000               # Version der Applikation zB. 01.00.00.00

# Globale Variablen für Benutzerinterface -------------------------------------
# Die Namen der Variablen dürfen nicht verändert werden
SendVar1       = 0
SendVar2       = 0
ReceiveVar1    = 0
ReceiveVar2    = 0

# Initialisierung - Simulation-------------------------------------------------
if not PYMC:
   '''
   Dieser Abschnitt wird ausgeführt, wenn das Program direkt im PLC gestartet wird.
   Dadurch wird das MPU2 Programm am Rechner simuliert (in Verbindung mit dem Gerät).
   Dies ermöglich eine vereinfachte Diagnose, da "print" Befehle möglich werden.
   ACHTUNG: Das Zeitverhalten des Programms verändert sich, da die Ausführung der Sp()/Gp() Funktionen
   durch die Kommunikation zwischen PC und Gerät verzögert wird.

   Wenn Sie keine Simulation möchten, starten Sie das Programm über die Run() Funktion.
   '''
   SpGp_NodeId(1)                      # NodeId des Geräts für Sp()/Gp() Funktionen festlegen (für Simulation)
   Sp(0x5000,0, 3)                     # evtl. vorhandenes MPU2-Programm auf dem Gerät anhalten (stört sonst Simulation)

# Hauptprogramm ===============================================================
old_receive1 = 0
old_receive2 = 0

# Hauptschleife ---------------------------------------------------------------
while 1:
   # Beispiel: Zählt die Zustandsänderungen der RxPDO's
   if ReceiveVar1 != old_receive1:
      old_receive1 = ReceiveVar1
      SendVar1 += 1

   if ReceiveVar2 != old_receive2:
      old_receive2 = ReceiveVar2
      SendVar2 += 1

Run-Datei

# -*- coding: iso-8859-1 -*-
from mc.pymc import Run

m = Run(node_id       = 1,                                     # CANopen Knotenadresse des Gerätes
        prg_filename  = "demo_communication_from_mpu_pdo.py",  # Dateiname des MPU2 Programms
        mpu_filename  = None,                                  # Optionaler Dateiname eines kompilierten MPU2-Programms
        store         = False,                                 # True = MPU2-Programm wird nach Übertragung im Gerät gespeichert
        start         = True,                                  # True = MPU2-Programm wird nach Übertragung im Gerät gestartet
        dump          = 2)                                     # dump Bit 0 = Kompilierter Code des MPU2-Programms wird ausgegeben
                                                               #      Bit 1 = Globale Variablen werden ausgegeben
                                                               #      Bit 2 = Interne Programmlabels werden ausgegeben

# Abfrage bzw. Setzen der Variablen des MPU-Programms.
# m.GlobalVars beinhaltet alle Variablen des MPU-Programms
if m:
   d = m.Dev                                    # d = Dsa-Instance

   print "PDO's parametrieren..."

   # Tx-PDO-Mapping parametrieren
   #  +----+----+----+----+----+----+----+----+
   #  | B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 |    Bytes des Tx-PDO's
   #  +----+----+----+----+----+----+----+----+
   #  |lsb            msb |lsb            msb |
   #  +---- SendVar1 -----+---- SendVar2 -----+    Zugewissene Variablen
   d.TxPdo_Mapping(1, [m.GlobalVars.SendVar1+[32], m.GlobalVars.SendVar2+[32]])
   #                                          ^                           ^
   #                                          +-- Datenlänge in Bits      +-- Datenlänge in Bits
   #                                              Mögliche Werte der Datenlänge: 8, 16, 32

   d.TxPdo_InhibitTime(1, 100)                  # TxPDO 1: Verzögerungszeit in [100 µs]
   d.TxPdo_CobId(1, 0x180+d.NodeId)             # TxPDO 1: CobId des PDO's

   # Rx-PDO-Mapping parametrieren
   #  +----+----+----+----+----+----+----+----+
   #  | B0 | B1 | B2 | B3 | B4 | B5 | B6 | B7 |    Bytes des Rx-PDO's
   #  +----+----+----+----+----+----+----+----+
   #  |lsb            msb |lsb            msb |
   #  +--- ReceiveVar1 ---+--- ReceiveVar2 ---+    Zugewissene Variablen
   d.RxPdo_Mapping(1, [m.GlobalVars.ReceiveVar1+[32], m.GlobalVars.ReceiveVar2+[32]])
   #                                             ^                              ^
   #                                             +-- Datenlänge in Bits         +-- Datenlänge in Bits
   #                                                 Mögliche Werte der Datenlänge: 8, 16, 32

   d.RxPdo_CobId(1, 0x200+d.NodeId)             # RxPDO 1: CobId des PDO's

   # Bei Fehlern sollen die PDO's nicht deaktiviert werden (CANopen bleibt in Operational-Zustand).
   d.ErrorBehaviour(1, 1)                       # Bei Communication Error
   d.ErrorBehaviour(2, 1)                       # Bei Output Error
   d.ErrorBehaviour(3, 1)                       # Bei Input Error

   d.StartNode()                                # PDO's jetzt aktivieren
   #d.AutoOperational(100)                       # Nach dem Einschalten des Geräts werden die PDO's nach 100ms aktiviert.
   #d.SaveParam_Comm()                           # Kommunikationsparameter speichern

   print "Fertig."

2. SDO Funktionen

MPU2-Quellcode

# -*- coding: iso-8859-1 -*-
#*===========================================================================*#
#*        Copyright (c) 1997-2013 by ENGEL. All rights reserved.         *#
#*                                                                           *#
#* File     : demo_communication_from_mpu_sdo.py                             *#
#*                                                                           *#
#* Project  : PLC                                                           *#
#* System   : MPU2                                                           *#
#* Version  : 1.00                                                           *#
#* Company  : ENGEL                                                      *#
#*                                                                           *#
#* Author   : ENGEL             mailto:                                  *#
#* Date     : 05.02.2013                                                     *#
#*---------------------------------------------------------------------------*#
#* Customer : ENGEL                                                      *#
#* Name     : Support                                                        *#
#* OrderNr. :                                                                *#
#* Descr.   : Beispiel für Kommunikation via SDO in MPU2                     *#
#* History  :                                                                *#
#*===========================================================================*#
from mc._pymc_builtins_ import *          # Import für Simulation am PC

# Globale Variablen zur Programmidentifikation --------------------------------
AppId       = 0x00000001               # eindeutige ID der Applikation
AppVersion  = 0x01000000               # Version der Applikation zB. 01.00.00.00

# Konstanten ------------------------------------------------------------------
CONST_NodeId_OtherDevice = 2           # CANopen Knotenadresse eines Reglers

# Globale Hilfsvariablen ------------------------------------------------------
Position      = 0
PositionValid = 0
Another       = 0
AnotherValid  = 0

# Initialisierung - Simulation-------------------------------------------------
if not PYMC:
   '''
   Dieser Abschnitt wird ausgeführt, wenn das Program direkt im PLC gestartet wird.
   Dadurch wird das MPU2 Programm am Rechner simuliert (in Verbindung mit dem Gerät).
   Dies ermöglich eine vereinfachte Diagnose, da "print" Befehle möglich werden.
   ACHTUNG: Das Zeitverhalten des Programms verändert sich, da die Ausführung der Sp()/Gp() Funktionen
   durch die Kommunikation zwischen PC und Gerät verzögert wird.

   Wenn Sie keine Simulation möchten, starten Sie das Programm über die Run() Funktion.
   '''
   SpGp_NodeId(1)                      # NodeId des Geräts für Sp()/Gp() Funktionen festlegen (für Simulation)
   Sp(0x5000,0, 3)                     # evtl. vorhandenes MPU2-Programm auf dem Gerät anhalten (stört sonst Simulation)

# Hilfsfunktion(en) -----------------------------------------------------------
# Überprüft ob die letzte SDO Anfrage erfolgreich war
def CheckForCommunicationError():
   comm_error = Gp(0x3001, 0x20)             # Fehlerregister für SDO aus MPU
   return comm_error != 0                    # Gibt WAHR zurück wenn ein Fehler aufgetaucht ist

# Initialisierung - Steuerung -------------------------------------------------
def InitPars ():
   SpxGpx_NodeId(CONST_NodeId_OtherDevice)   # CANopen Knotenadresse für externe Kommunikation setzen

   if 1:
      # Aktiviere "extended cob ids" für SDO Kommunikation
      SpxGpx_TxCobId(0x20000600)
      SpxGpx_RxCobId(0x20000580)
   else:
      # Aktiviere "standard cob ids" für SDO Kommunikation
      SpxGpx_TxCobId(0x600)                  # Default
      SpxGpx_RxCobId(0x580)                  # Default

   Spx(0x3158,0, 1)                          # LED - Benutzersteuerung auf 'OtherDevice' aktivieren

# Hauptprogramm ===============================================================
InitPars()                                   # Initialisierung durchführen

# Hauptschleife ---------------------------------------------------------------
while 1:
   Position = Gpx(0x3762, 0x00)              # aktuelle Position von 'OtherDevice' auslesen
   if not CheckForCommunicationError():
      PositionValid = Position

   Another  = Gpx(127, 0x3762, 0x00)         # aktuelle Position von NodeId 127 auslesen
   if not CheckForCommunicationError():
      AnotherValid = Another

   for i in xrange(0,3):
      Spx(0x3158,1, 1<<i)                    # LED - Zustand auf 'OtherDevice' setzen (Bit0 = Power, Bit1 = Status, Bit2 = Error)
      Delay(300)                             # 300 ms warten

Run-Datei

# -*- coding: iso-8859-1 -*-
from mc.pymc import Run

m = Run(node_id       = 1,                                     # CANopen Knotenadresse des Gerätes
        prg_filename  = "demo_communication_from_mpu_sdo.py",  # Dateiname des MPU2 Programms
        mpu_filename  = None,                                  # Optionaler Dateiname eines kompilierten MPU2-Programms
        store         = False,                                 # True = MPU2-Programm wird nach Übertragung im Gerät gespeichert
        start         = True,                                  # True = MPU2-Programm wird nach Übertragung im Gerät gestartet
        dump          = 2)                                     # dump Bit 0 = Kompilierter Code des MPU2-Programms wird ausgegeben
                                                               #      Bit 1 = Globale Variablen werden ausgegeben
                                                               #      Bit 2 = Interne Programmlabels werden ausgegeben


Display

Um verschiedene benutzerdefinierte Texte auf einem Terminal (z.B. mcPL-T1, mcPL-P4) anzuzeigen, gehen Sie wie im folgenden Beispiel vor.

MPU2-Quellcode

Im MPU2 Quellcode empfiehlt es sich, die Hilfsfunktionen DispClear() und DispPrintTxt(column, line, txt_nr) anzulegen.
DispClear() löscht den kompletten Inhalt des Displays und DispPrintTxt(column, line, txt_nr) zeigt einen vordefinierten Text (siehe Abschnitt "Run-Datei") in einer gewünschten Spalte und Zeile an.

# -*- coding: iso-8859-1 -*-
#*===========================================================================*#
#*        Copyright (c) 1997-2013 by ENGEL. All rights reserved.         *#
#*                                                                           *#
#* File     : demo_display.py                                                *#
#*                                                                           *#
#* Project  : PLC                                                           *#
#* System   : MPU2                                                           *#
#* Version  : 1.00                                                           *#
#* Company  : ENGEL                                                      *#
#*                                                                           *#
#* Author   : ENGEL             mailto:                                  *#
#* Date     : 05.02.2013                                                     *#
#*---------------------------------------------------------------------------*#
#* Customer : ENGEL                                                      *#
#* Name     : Support                                                        *#
#* OrderNr. :                                                                *#
#* Descr.   : Beispiel für Textdarstellung auf dem Terminal                  *#
#* History  :                                                                *#
#*===========================================================================*#
from mc._pymc_builtins_ import *          # Import für Simulation am PC

# Globale Variablen zur Programmidentifikation --------------------------------
AppId       = 0x00000001               # eindeutige ID der Applikation
AppVersion  = 0x01000000               # Version der Applikation zB. 01.00.00.00

# Konstanten ------------------------------------------------------------------
CONST_NodeId_OtherDevice = 1           # CANopen Knotenadresse eines Reglers

# Globale Hilfsvariablen ------------------------------------------------------
Counter     = 0                              # Zähler mit 0 initialisieren
ActEncPos   = 0
Buttons     = 0

# Initialisierung - Simulation-------------------------------------------------
if not PYMC:
   '''
   Dieser Abschnitt wird ausgeführt, wenn das Program direkt im PLC gestartet wird.
   Dadurch wird das MPU2 Programm am Rechner simuliert (in Verbindung mit dem Gerät).
   Dies ermöglich eine vereinfachte Diagnose, da "print" Befehle möglich werden.
   ACHTUNG: Das Zeitverhalten des Programms verändert sich, da die Ausführung der Sp()/Gp() Funktionen
   durch die Kommunikation zwischen PC und Gerät verzögert wird.

   Wenn Sie keine Simulation möchten, starten Sie das Programm über die Run() Funktion.
   '''
   SpGp_NodeId(1)                      # NodeId des Geräts für Sp()/Gp() Funktionen festlegen (für Simulation)
   Sp(0x5000,0, 3)                     # evtl. vorhandenes MPU2-Programm auf dem Gerät anhalten (stört sonst Simulation)

# Hilfsfunktionen ------------------------------------------------------------
# Vordefinierten Text in Spalte, Zeile anzeigen
def DispPrintTxt (column, line, txt_nr):
   column &= 0xFF
   line   &= 0xFF
   Sp(0x3860,4, (column<<24) | (line<<16) | (txt_nr & 0xFFFF))

# Inhalt des Displays löschen
def DispClear ():
   Sp(0x3860,0, (0x0002<<16))

# Inhalt einer Zeile löschen
def DispClearLine (line):
   Sp(0x3860,0, (0x0002<<16) | (line & 0xFF))

# Initialisierung - Steuerung -------------------------------------------------
def InitPars ():
   SpxGpx_NodeId(CONST_NodeId_OtherDevice)   # CANopen Knotenadresse für externe Kommunikation setzen
   DispClear()                               # Inhalt des Displays löschen
   DispPrintTxt(4,1, 0)                      # Header in Spalte 2, Zeile 1 anzeigen

# Hauptprogramm ===============================================================
InitPars()                                   # Initialisierung durchführen

# Hauptschleife ---------------------------------------------------------------
while 1:
   Counter   += 1                            # Zähler inkrementieren
   Integer    = Counter/100
   Fraction   = Counter%100

   ActEncPos  = Gpx(1, 0x396A,0)             # Aktuelle Position von externen Gerät auslesen
   Buttons    = Gp(0x3861,4)                 # Aktuell gedrückte Knöpfe vom Display auslesen

   DispPrintTxt(1,3, 1)                      # Text 1 in Spalte 1, Zeile 3 anzeigen
   DispPrintTxt(1,4, 2)                      # Text 2 in Spalte 1, Zeile 4 anzeigen
   DispPrintTxt(1,5, 3)                      # Text 3 in Spalte 1, Zeile 5 anzeigen
   DispPrintTxt(1,6, 4)                      # Text 4 in Spalte 1, Zeile 6 anzeigen
   Delay(100)                                # 100ms warten

Run-Datei

Die Texte des Displays können in der "Run-Datei" definiert werden. Dabei können Sie direkt auf die globalen Variablen des MPU2-Programms zugreifen.

# -*- coding: iso-8859-1 -*-
from mc.pymc import Run
from mc.display import *

m = Run(node_id       = 1,                            # CANopen Knotenadresse des Gerätes
        prg_filename  = "demo_display.py",            # Dateiname des MPU2 Programms
        mpu_filename  = None,                         # Optionaler Dateiname eines kompilierten MPU2-Programms
        store         = False,                        # True = MPU2-Programm wird nach Übertragung im Gerät gespeichert
        start         = False,                        # True = MPU2-Programm wird nach Übertragung im Gerät gestartet
        dump          = 2)                            # dump Bit 0 = Kompilierter Code des MPU2-Programms wird ausgegeben
                                                      #      Bit 1 = Globale Variablen werden ausgegeben
                                                      #      Bit 2 = Interne Programmlabels werden ausgegeben

# Abfrage bzw. Setzen der Variablen des MPU-Programms.
# m.GlobalVars beinhaltet alle Variablen des MPU-Programms
if m:
   d = m.Dev                                       # d = Dsa-Instance
   t = Display(d)

   # Texte vorbereiten und im Gerät speichern                                                # txt_nr für DispPrintTxt
   # Im MPU-Programm werden diese Texte über DispPrintTxt aufgerufen.
   t.AddText( "ENGEL - DEMO" )                                                           # 0
   t.AddText(("Counter  = %-6ld",  m.GlobalVars.Counter))      # (Text, [Ausgabeparameter])  # 1
   t.AddText(("Counter2 = %ld.%ld", m.GlobalVars.Integer, m.GlobalVars.Fraction))            # 2
   t.AddText(("Position = %-6ld",  m.GlobalVars.ActEncPos))                                  # 3
   t.AddText(("Buttons  = %-6ld",  m.GlobalVars.Buttons))                                    # 4

   t.StoreTexts()                                  # Speichert die vordefinierten Texte im Gerät ab
   m.Prg.Start()                                   # Startet das MPU Programm


SPI-V2

Die Antriebsregler der EDC-Exx Reihe von ENGEL besitzen ein SPI Interface (mcSPI-V2) zur Anbindung von Busschnittstellen oder Erweiterungsbaugruppen. Besonders für die Modul-Varianten gibt es Bedarf für kundenspezifische Erweiterungsfunktionen. Deshalb wurde ein IC basierend auf einem CPLD ALTERA MAX3000A entworfen, um diese Funktionen auf Zusatz- oder Träger-Boards zu realisieren. Der mcSPI-IC1 ist ein Baustein zur Erweiterung um 8 digitale Eingänge und 8 digitale Ausgänge. Zudem kann eine Slave-SPI Schnittstelle für die Anbindung von AD/DA-Wandlern, Real-Time-Clock, LCD-Displays oder EEPROMs verwendet werden. Über die spezielle Adressierung können bis zu 8 IC mcSPI-IC1 an einen einzigen Regler angeschlossen werden. Durch das kompakte TQFP44 Package können so verschiedenste Zusatzfunktionen auch auf kleinen Leiterplatten realisiert werden.

Es ist möglich, innerhalb der MPU die SPI Schnittstelle der Regler (falls vorhanden) über das mcSPI-V2 Protokoll anzusprechen.
Das folgende Beispiel zeigt die Kommunikation mit dem EEPROM AT25320 über mcSPI-V2 auf dem mcSPI-IC1-EVB Demo-Board.

MPU2-Quellcode

# -*- coding: iso-8859-1 -*-
#*===========================================================================*#
#*        Copyright (c) 1997-2013 by ENGEL. All rights reserved.         *#
#*                                                                           *#
#* File     : demo_mcSPI-V2_AT25320.py                                       *#
#*                                                                           *#
#* Project  : PLC                                                           *#
#* System   : MPU2                                                           *#
#* Version  : 1.02                                                           *#
#* Company  : ENGEL                                                      *#
#*                                                                           *#
#* Author   : ENGEL             mailto:                                  *#
#* Date     : 18.02.2013                                                     *#
#*---------------------------------------------------------------------------*#
#* Customer : ENGEL                                                      *#
#* Name     : Support                                                        *#
#* OrderNr. :                                                                *#
#* Descr.   : Beispiel für Kommunikation mit EEPROM AT25320 über mcSPI-V2    *#
#* History  :                                                                *#
#* 03.07.14 : ~SetBlockAddress() ersetzt durch SetAddress()                  *#
#*(V1.01 MH):                                                                *#
#* 16.02.15 : ~SetAddress() => (block_address & 0x83) statt 0x0F             *#
#*(V1.02 MH):                                                                *#
#*===========================================================================*#
from mc._pymc_builtins_ import *          # Import für Simulation am PC

# Globale Variablen zur Programmidentifikation --------------------------------
AppId       = 0x00000001               # eindeutige ID der Applikation
AppVersion  = 0x01000000               # Version der Applikation zB. 01.00.00.00

# Konstanten ------------------------------------------------------------------
BLOCK_ADDR_IO     = 0x81               # Ermöglicht die I/Os des Chips zu nutzen
BLOCK_ADDR_SPI2   = 0x82               # Ermöglicht die Slaves auf dem SPI2 Kanal anzusprechen (tunnelt die SPI Daten durch den Chip zum Slave)

# AT25320 Instruction Set
INST_WREN   = 0x06                     # 0000 X110 - EEPROM Write Enable Instruction
INST_WRDI   = 0x04                     # 0000 X100 - EEPROM Write Disable Instruction
INST_RDSR   = 0x0500                   # 0000 X101 - EEPROM Read Status Register
INST_WRSR   = 0x0100                   # 0000 X101 - EEPROM Write Status Register
INST_READ   = 0x03000000               # 0000 X011 - EEPROM Read Data Instruction
INST_WRITE  = 0x02000000               # 0000 X010 - EEPROM Write Data Instruction

# Globale Hilfsvariablen ------------------------------------------------------
ChipAddress = 0x00                     # mcSPI-IC1 Chip Adresse
Status      = 0                        # Status Register des EEPROM
MemAddr     = 0x00AA                   # Speicheradresse
MemData     = 0x00                     # Memory Data

# Initialisierung - Simulation-------------------------------------------------
if not PYMC:
   '''
   Dieser Abschnitt wird ausgeführt, wenn das Program direkt im PLC gestartet wird.
   Dadurch wird das MPU2 Programm am Rechner simuliert (in Verbindung mit dem Gerät).
   Dies ermöglich eine vereinfachte Diagnose, da "print" Befehle möglich werden.
   ACHTUNG: Das Zeitverhalten des Programms verändert sich, da die Ausführung der Sp()/Gp() Funktionen
   durch die Kommunikation zwischen PC und Gerät verzögert wird.

   Wenn Sie keine Simulation möchten, starten Sie das Programm über die Run() Funktion.
   '''
   SpGp_NodeId(1)                      # NodeId des Geräts für Sp()/Gp() Funktionen festlegen (für Simulation)
   Sp(0x5000,0, 3)                     # evtl. vorhandenes MPU2-Programm auf dem Gerät anhalten (stört sonst Simulation)

# Hilfsfunktion(en) -----------------------------------------------------------
# Setzt Adresse und Modus des Chips
def SetAddress(chip_address, block_address):
   Sp(0x386D,0x10,(((chip_address&0x0F)<<4) | (block_address & 0x83)))

# data = 8 Bits zum Austausch
def Exchange8Bit(data):
   Sp(0x386D,0x11, data)
   return Gp(0x386D,0x11)

# data = 16 Bits zum Austausch
def Exchange16Bit(data):
   Sp(0x386D,0x12, data)
   return Gp(0x386D,0x12)

# data = 24 Bits zum Austausch
def Exchange24Bit(data):
   Sp(0x386D,0x13, data)
   return Gp(0x386D,0x13)

# data = 32 Bits zum Austausch
def Exchange32Bit(data):
   Sp(0x386D,0x14, data)
   return Gp(0x386D,0x14)

# Hauptprogramm ===============================================================
SetAddress(ChipAddress, BLOCK_ADDR_SPI2)           # Selektiere gewünschten Chip in SPI2 Modus(BLOCK_ADDR_SPI2)

# Hauptschleife ---------------------------------------------------------------
while 1:
   Status = Exchange16Bit(INST_RDSR) & 0x00FF      # Status Register lesen
   if (Status & 0x0003) == 0:                      # Überprüfe /RDY und WEN Bit
      # Daten auslesen
      MemData = Exchange32Bit(INST_READ | (MemAddr << 8)) & 0x000000FF

      MemData += 1                                 # Ausgelesenen Wert inkrementieren
      if MemData >= 0xFF:
         MemData = 0

      # Daten schreiben
      Exchange8Bit(INST_WREN)                                  # "Write Enable" setzen
      Exchange32Bit((INST_WRITE | (MemAddr << 8)) | MemData)   # Daten in EEPROM schreiben

Run-Datei

# -*- coding: iso-8859-1 -*-
from mc.pymc import Run

m = Run(node_id       = 1,                            # CANopen Knotenadresse des Gerätes
        prg_filename  = "demo_mcSPI-V2_AT25320.py",   # Dateiname des MPU2 Programms
        mpu_filename  = None,                         # Optionaler Dateiname eines kompilierten MPU2-Programms
        store         = False,                        # True = MPU2-Programm wird nach Übertragung im Gerät gespeichert
        start         = True,                         # True = MPU2-Programm wird nach Übertragung im Gerät gestartet
        dump          = 2)                            # dump Bit 0 = Kompilierter Code des MPU2-Programms wird ausgegeben
                                                      #      Bit 1 = Globale Variablen werden ausgegeben
                                                      #      Bit 2 = Interne Programmlabels werden ausgegeben


Inhalt - Service

Gewährleistung

Lagerung

Transport

Entsorgung

Copyright


Gewährleistung

Die Gewährleistung erlischt beim Öffnen des Gerätegehäuses oder bei unsachgemäßem Betrieb.

ENGEL kann darüber hinaus keine Garantie auf Ersatz für Beschädigung am Modul geben, die bei einer fehlerhaften Beschaltung entstehen.

ENGEL behält sich das Recht vor, Änderungen an der vorliegenden Dokumentation, an der in der Dokumentation beschriebenen Software und Produkten, die dem technischen Fortschritt dienen, ohne Vorankündigung vorzunehmen.

Alle Informationen und technische Angaben in dieser Dokumentation wurden mit größter Sorgfalt zusammengestellt. ENGEL kann jedoch weder Garantie noch juristische Verantwortung oder irgendeine Haftung für Folgen, die auf fehlerhafte Angaben zurückgehen, übernehmen.


Lagerung

Lagern Sie bitte das Modul geschützt vor Staub, Schmutz und Feuchtigkeit. Achten Sie darauf, dass die Lagerungsbedingungen nicht außerhalb der Lagerungstemperatur bzw. Luftfeuchtigkeit liegt (siehe "Technische Daten" des Gerätes).


Transport

Transportieren Sie die Module bitte unter Lagerungsbedingungen, zusätzlich noch stoßgeschützt.


Entsorgung

Die Geräte sind mit ihren hochintegrierten Platinen elektronischer Sondermüll und müssen dementsprechend entsorgt werden.

Bitte erfüllen Sie die gesetzlichen Verpflichtungen und entsorgen Sie die hier vorgestellten Geräte bei Unbrauchbarkeit entsprechend der gesetzlichen Regelung.
Damit leisten Sie u.a. einen aktiven Beitrag zum Umweltschutz.


Copyright

Kein Teil dieser Dokumentation darf ohne vorherige schriftliche Genehmigung von miControl in irgendeiner Form (Fotokopie, Mikrofilm oder andere Verfahren) reproduziert oder unter Verwendung elektronischer Systeme verarbeitet, vervielfältigt oder an Dritte weitergegeben werden.

Wir weisen darauf hin, dass die in der Dokumentation verwendeten Soft- und Hardwarebezeichnungen, Markennamen und Warenzeichen der jeweiligen Firmen im Allgemeinen, dem warenzeichen-, marken- oder patentrechtlichem Schutz unterliegen. Unter anderem: IBM, IBM PC und PS/2 sind eingetragene Warenzeichen der International Business Machines Corporation. MS-DOS, Windows und Windows NT sind eingetragene Warenzeichen der Microsoft Corporation.

Die eingetragenen Warenzeichen wurden in der Dokumentation nicht besonders kenntlich gemacht. Es kann also aus dem Fehlen der Markierung „®“ nicht geschlossen werden, dass die Bezeichnung ein freies Warenzeichen ist.

Copyright(c) 2019 by miControl. All rights reserved.