Igus D1 Motorsteuerung für ein Flächenportal über Modbus TCP/IP

Dachladde

Level-1
Beiträge
2
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich arbeite derzeit an meinem Technikerprojekt und baue dafür einen Prototypen. Dieser hat an einem Flächenportal ein Abstandssensor verbaut.

Mein Problem ist nun folgendes:
Meine übergeordnete Steuerung ist eine ET200SP.
Ich habe zwei D1 Motorsteuerungen der Firma Igus zu meinem Flächenportal mitbestellt, diese soll ich über Modbus TCP/IP ansteuern.
Im Endeffekt benötige ich:
  • Die Aktuelle Position der Achsen
  • Ein Befehl zum Referenzieren
  • Tippen positiv/negativ
  • Fahrt auf einen vorher in der Sps errechneten Wert
  • Start / Stop


Die Firma Igus hat mir ein "Musterprogramm" mitgeliefert. Dafür erhalte ich leider keinen weiteren Support

Ich hoffe ihr könnt mir irgendwie weiterhelfen.

Mit Freundlichen Grüßen
 

Anhänge

  • 20201125-1xdryveD1+Siemens1511C+ModbusTCP(Gateway).zip
    9,5 MB · Aufrufe: 27
Hi,

hast du dir das Musterprogramm schon mal angesehen oder einen Testaufbau damit vorgenommen?
Viel schoener vorbereitet bekommt man das eigentlich selten bereitgestellt, besser geht immer aber eigentlich ist im Programm alles was du forderst vorhanden.

Zum Technikerprojekt gehoert es eigentlich dazu, sich mit einer Sache auseinander zu setzen und etwas Zeit zu investieren.

Du schreibst ja nicht mal, wo du Probleme hast oder es scheitert.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn die D1 Motorsteuerung von Igus mal richtig Modbus TCP könnte dann würde man auch kein Beispiel brauchen.
Das Protokoll was die von Igus als Modbus TCP verkaufen ist auch alle Fälle nicht Modbus TCP.

Mit dem
MB_CLIENT von Siemens oder mit Software wie Modbus Poll bekommt man keine Verbindung. Also kann das nicht ganz Modbus TCP konform sein
und ist was eigenes.
 
Falls hier noch Bedarf vorhanden ist ....
Im Handbuch von der igus D1 ist die Schnittstelle (Ethernet TCP/IP Modbus Gateway by CANopen) gut beschrieben.
Es gibt ebenfalls ein neuen Musterprogramm (No.13) auf der Webseite. Hier ist ein kompletter Baustein drin, welcher einfach zu beschalten ist.
 
Die kann aber kein richtiges Modbus TCP/IP
oder es gibt mittlerweile eine neue Firmware….

Wenn die Modbus TCP/IP könnte dann hätte man auch kein Problem mit Tools wie zum Beispiel Modbus Poll zu arbeiten.
Klappte aber damals vor ca. 2 Jahren nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... Die kann aber kein richtiges Modbus TCP/IP...
das steht auch nirgends so im Handbuch. Es ist Ethernet TCP/IP Modbus Gateway by CANopen.
Dazu gibt es im Musterprogram ein fertigen FB, welcher über die Standard Siemens PN Verkabelung funktioniert.

Wenn man sich eine Siemens 1212C mit PN kauft, dann kann diese später auch kein EtherCAT.
 
Tja das Handbuch habe ich aber nicht gelesen vor dem Kauf sondern mich darauf verlassen was auf der Internetseite stand…
Und das war auf alle Fälle nicht korrekt
 
OK, wenn da nur Modbus TCP gestanden hat, ist das nicht gut.
Hab grad nochmal auf der Webseite geschaut, da steht nur Ethernet TCP/IP Modbus Gateway by CANopen oder Modbus TCP/IP Gateway.
Es läuft auf jeden Fall mit Siemens CPU's.....
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ja das ist ja auch schön und die Steuerung ist ja auch nicht schlecht.
Ich habe das wie gesagt vor 2 Jahren mal für einen Test gekauft.

Aber klär mich doch einmal auf.. Warum steht da überhaupt etwas von Modbus ?oder Modbus TCP/IP Gateway.
was denkt man dann? Alles klar die Kiste kann Modbus TCP/IP oder sehe ich das falsch ?
 
Das "Modbus TCP" sagt erst einmal nur grob in welche Richtung es geht.
Die zugehörige Norm ist die komplette Information. Du meist warscheinlich Norm IEC 61158

igus D1 Handbuch standardsiert nach CiA 309:
Die Kommunikation mittels Modbus TCP ist als Gateway implementiert und dient lediglich als Telegramm Übertragung. Grundlage ist CiA 309 "Access from other networks" Teil 1 "General principles and services" und Teil 2 "Modbus/TCP mapping“
 
Bin auch gerade das erste mal mit der dryve D1 Steuerung und dem Modbus Protokoll konfrontiert.

Verbdinung steht, ich bekomme auch die Rückmeldung das Modbus aktiv ist und auch dass Motorstrom freigegeben ist ("Status", muss ich noch umbenennen).
1691592011697.png

Mir erschliesst sich aus dem Handbuch noch nicht so ganz was jetzt relevante Ein-Ausgangsparameter für die Modbus Kommunikation sind (Bsp.: Was ist mit den ganzen OBJ_* Variablen, ist dass für CANopen oder für Modbus?). Auch dass ich nicht die aktuelle Geschwindigkeit und Position angezeigt bekomme.. muss ich dafür extra die Objekte auslesen welche mir im Webinterface auf der Fahrprofil Seite angezeigt werden?

Wie habt ihr zB auch Tippbetrieb realisiert aber auch wie muss ich dass Modbus Interface des Bausteins verwenden damit ich sauber positionieren kann?

Verwende Bausteinversion D9V15:
1691592301398.png
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das "Modbus TCP" sagt erst einmal nur grob in welche Richtung es geht.
Die zugehörige Norm ist die komplette Information. Du meist warscheinlich Norm IEC 61158

igus D1 Handbuch standardsiert nach CiA 309:
Die Kommunikation mittels Modbus TCP ist als Gateway implementiert und dient lediglich als Telegramm Übertragung. Grundlage ist CiA 309 "Access from other networks" Teil 1 "General principles and services" und Teil 2 "Modbus/TCP mapping“
Ich wäre froh bereits früher auf diese Aussage gestoßen sein, habe mir selbst stundenlang die Zähne ausgebissen wieso normale Modbus TCP Kommunikation mir eigentlich eine sinnvollen Daten ausgibt -> da ich normalerweise nicht gerne die fertigen Blöcke der Hersteller verwende.

In diesem Falle habe ich mir selbst noch einen Block darüber geschrieben der mir die ganzen nötigen Variablen ansteuert.

Du findest alles, zwar schwierig aber doch, im Handbuch heraus, aber hier noch eine kurze Zusammenfassung:

Prinzipiell die ganz große Problematik! Es kann teilweise, nach meinen Messungen, bis zu 250ms dauern das Befehle über die Schnittstelle angenommen und verarbeitet wurden. Kann bei sehr vielen Fehlerfällen zu großer Verwirrung führen.
Dadurch muss das SWITCH_ACTIVE z.B. deutlich früher gesetzt werden als der START Befehl, ansonsten wird der einfach ignoriert.

Die IPs, HW_IDs und CON_IDs sollten klar sein.
ENABLE startet die Kommunikation -> muss für die Quittierung rückgesetzt werden, ansonsten funktioniert diese nicht.
SWITCH_ACTIVE, schaltet dein Modus in "Lageregelung" (nenne ich mal so).

OPM_SET kannst du im Handbuch finden, aber die wichtigsten:
(Modenr.: 1=Jog u. Auto(Position-Controlled); 3=Jog u. Auto(Speed-Controlled); 6=Ref-Drive(with position from fieldbus))

PP_RELATIV -> wenn TRUE dann relativ positionieren
PP_POS -> Zielposition, darauf auf die Webserver-Konfig für Vorschub usw. achten (m.M. nach komischerweise standardmäßig mm/100)
PPPV_VEL -> Zielgeschwindigkeit (für Richtungswechsel im Jog-Modus dementsprechend einen negativen Wert angeben)
PPPV_ACC -> Ich habe für mich ACC von DCC getrennt, ist standardmäßig nur ein Parameter (Beschleunigung, Entschleunigung)
START -> Muss TRUE sein egal ob Positionierung, Referenzfahrt oder Jog-Modus
STOP -> Dementsprechend zu START invertiert)
ERROR_RESET -> Quittiert die Fehler am D1

Die restlichen Variablen sollten als Status relativ klar sein was sie zu bedeuten haben.

Zusätzlich darauf achten DI7 muss unbedingt verkabelt werden, ist für die Freigabe zuständig und kann nicht anders übergeben werden.
Unbedingt die Einschaltreihenfolge, gibt ein eigenes Kapitel dafür im Handbuch, beachten.

Und dann der Überclue bei dem ganzen:
Wenn du eine Referenzfahrt auf negativen/positiven Endschalter durchführen möchtest und keine Absolutwertgeberjustage, dann benötigst du zusätzlich noch eine "Nullpunkt-Geschwindigkeit" und "Nullpunkt-Beschleunigung", die darfst du natürlich bei deaktivierter Freigabe und deaktivierter Modbus Kommunikation in der Kategorie "Fahrprofile" am Webserver direkt in der Hex-Tabelle eingeben bzw. gibt es daneben die Dez-Eingabe. Könnte man sich in der Vorlage zusätzlich ausprogrammieren, ist jedoch den Aufwand kaum Wert.
Alleine dafür hätte ich schon jemanden an den Kragen hüpfen können.
Ansonsten steht dein Achse beim referenzieren, fehlerlos.

Im gesamten muss ich mich sehr kritisch der Low-Cost-Automation gegenüber äußern, für verdrahtete, einfache Anwendungsbeispiele absolut super, aber für komplexere Aufgaben mit Schnittstellen absolut fehl am Platz. Hat bis jetzt nur Zeit, Nerven und Geld gekostet.
 
Ich wäre froh bereits früher auf diese Aussage gestoßen sein, habe mir selbst stundenlang die Zähne ausgebissen wieso normale Modbus TCP Kommunikation mir eigentlich eine sinnvollen Daten ausgibt -> da ich normalerweise nicht gerne die fertigen Blöcke der Hersteller verwende.

In diesem Falle habe ich mir selbst noch einen Block darüber geschrieben der mir die ganzen nötigen Variablen ansteuert.

Du findest alles, zwar schwierig aber doch, im Handbuch heraus, aber hier noch eine kurze Zusammenfassung:

Prinzipiell die ganz große Problematik! Es kann teilweise, nach meinen Messungen, bis zu 250ms dauern das Befehle über die Schnittstelle angenommen und verarbeitet wurden. Kann bei sehr vielen Fehlerfällen zu großer Verwirrung führen.
Dadurch muss das SWITCH_ACTIVE z.B. deutlich früher gesetzt werden als der START Befehl, ansonsten wird der einfach ignoriert.

Die IPs, HW_IDs und CON_IDs sollten klar sein.
ENABLE startet die Kommunikation -> muss für die Quittierung rückgesetzt werden, ansonsten funktioniert diese nicht.
SWITCH_ACTIVE, schaltet dein Modus in "Lageregelung" (nenne ich mal so).

OPM_SET kannst du im Handbuch finden, aber die wichtigsten:
(Modenr.: 1=Jog u. Auto(Position-Controlled); 3=Jog u. Auto(Speed-Controlled); 6=Ref-Drive(with position from fieldbus))

PP_RELATIV -> wenn TRUE dann relativ positionieren
PP_POS -> Zielposition, darauf auf die Webserver-Konfig für Vorschub usw. achten (m.M. nach komischerweise standardmäßig mm/100)
PPPV_VEL -> Zielgeschwindigkeit (für Richtungswechsel im Jog-Modus dementsprechend einen negativen Wert angeben)
PPPV_ACC -> Ich habe für mich ACC von DCC getrennt, ist standardmäßig nur ein Parameter (Beschleunigung, Entschleunigung)
START -> Muss TRUE sein egal ob Positionierung, Referenzfahrt oder Jog-Modus
STOP -> Dementsprechend zu START invertiert)
ERROR_RESET -> Quittiert die Fehler am D1

Die restlichen Variablen sollten als Status relativ klar sein was sie zu bedeuten haben.

Zusätzlich darauf achten DI7 muss unbedingt verkabelt werden, ist für die Freigabe zuständig und kann nicht anders übergeben werden.
Unbedingt die Einschaltreihenfolge, gibt ein eigenes Kapitel dafür im Handbuch, beachten.

Und dann der Überclue bei dem ganzen:
Wenn du eine Referenzfahrt auf negativen/positiven Endschalter durchführen möchtest und keine Absolutwertgeberjustage, dann benötigst du zusätzlich noch eine "Nullpunkt-Geschwindigkeit" und "Nullpunkt-Beschleunigung", die darfst du natürlich bei deaktivierter Freigabe und deaktivierter Modbus Kommunikation in der Kategorie "Fahrprofile" am Webserver direkt in der Hex-Tabelle eingeben bzw. gibt es daneben die Dez-Eingabe. Könnte man sich in der Vorlage zusätzlich ausprogrammieren, ist jedoch den Aufwand kaum Wert.
Alleine dafür hätte ich schon jemanden an den Kragen hüpfen können.
Ansonsten steht dein Achse beim referenzieren, fehlerlos.

Im gesamten muss ich mich sehr kritisch der Low-Cost-Automation gegenüber äußern, für verdrahtete, einfache Anwendungsbeispiele absolut super, aber für komplexere Aufgaben mit Schnittstellen absolut fehl am Platz. Hat bis jetzt nur Zeit, Nerven und Geld gekostet.
Das meiste was du erwähnt hast, hab ich auch schon so umgesetzt/ist mir klar.

Mir gehts eben um die OBJ_ Parameter am Baustein und was ich damit anstellen soll/muss.. muss ich mich morgen mal darum kümmern, aber bisher gar kein Freund von der igus Lösung.. das soll auch irgendwann mal vom digitalen Zwilling aus gesteuert/gelesen werden.. über mqtt.. ich freu mich jetzt schon!
 
Hab's glaube ich raus, wie der Spaß bei igus funktioniert.. werde trotzdem schauen dass für alles an Maschinen danach wieder was solides reinkommt und keine Schrittmotor-Modbus-Lowcost-Lösung. Vermisse mein 105er Telegramm :D
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich wäre froh bereits früher auf diese Aussage gestoßen sein, habe mir selbst stundenlang die Zähne ausgebissen wieso normale Modbus TCP Kommunikation mir eigentlich eine sinnvollen Daten ausgibt -> da ich normalerweise nicht gerne die fertigen Blöcke der Hersteller verwende.

In diesem Falle habe ich mir selbst noch einen Block darüber geschrieben der mir die ganzen nötigen Variablen ansteuert.

Du findest alles, zwar schwierig aber doch, im Handbuch heraus, aber hier noch eine kurze Zusammenfassung:

Prinzipiell die ganz große Problematik! Es kann teilweise, nach meinen Messungen, bis zu 250ms dauern das Befehle über die Schnittstelle angenommen und verarbeitet wurden. Kann bei sehr vielen Fehlerfällen zu großer Verwirrung führen.
Dadurch muss das SWITCH_ACTIVE z.B. deutlich früher gesetzt werden als der START Befehl, ansonsten wird der einfach ignoriert.

Die IPs, HW_IDs und CON_IDs sollten klar sein.
ENABLE startet die Kommunikation -> muss für die Quittierung rückgesetzt werden, ansonsten funktioniert diese nicht.
SWITCH_ACTIVE, schaltet dein Modus in "Lageregelung" (nenne ich mal so).

OPM_SET kannst du im Handbuch finden, aber die wichtigsten:
(Modenr.: 1=Jog u. Auto(Position-Controlled); 3=Jog u. Auto(Speed-Controlled); 6=Ref-Drive(with position from fieldbus))

PP_RELATIV -> wenn TRUE dann relativ positionieren
PP_POS -> Zielposition, darauf auf die Webserver-Konfig für Vorschub usw. achten (m.M. nach komischerweise standardmäßig mm/100)
PPPV_VEL -> Zielgeschwindigkeit (für Richtungswechsel im Jog-Modus dementsprechend einen negativen Wert angeben)
PPPV_ACC -> Ich habe für mich ACC von DCC getrennt, ist standardmäßig nur ein Parameter (Beschleunigung, Entschleunigung)
START -> Muss TRUE sein egal ob Positionierung, Referenzfahrt oder Jog-Modus
STOP -> Dementsprechend zu START invertiert)
ERROR_RESET -> Quittiert die Fehler am D1

Die restlichen Variablen sollten als Status relativ klar sein was sie zu bedeuten haben.

Zusätzlich darauf achten DI7 muss unbedingt verkabelt werden, ist für die Freigabe zuständig und kann nicht anders übergeben werden.
Unbedingt die Einschaltreihenfolge, gibt ein eigenes Kapitel dafür im Handbuch, beachten.

Und dann der Überclue bei dem ganzen:
Wenn du eine Referenzfahrt auf negativen/positiven Endschalter durchführen möchtest und keine Absolutwertgeberjustage, dann benötigst du zusätzlich noch eine "Nullpunkt-Geschwindigkeit" und "Nullpunkt-Beschleunigung", die darfst du natürlich bei deaktivierter Freigabe und deaktivierter Modbus Kommunikation in der Kategorie "Fahrprofile" am Webserver direkt in der Hex-Tabelle eingeben bzw. gibt es daneben die Dez-Eingabe. Könnte man sich in der Vorlage zusätzlich ausprogrammieren, ist jedoch den Aufwand kaum Wert.
Alleine dafür hätte ich schon jemanden an den Kragen hüpfen können.
Ansonsten steht dein Achse beim referenzieren, fehlerlos.

Im gesamten muss ich mich sehr kritisch der Low-Cost-Automation gegenüber äußern, für verdrahtete, einfache Anwendungsbeispiele absolut super, aber für komplexere Aufgaben mit Schnittstellen absolut fehl am Platz. Hat bis jetzt nur Zeit, Nerven und Geld gekostet.
Ich hab nur noch ein Problem und zwar mit dem "Ready Signal" zB nach Not-Aus.. (24V wegnehmen)

Aktuell ist es so.. wenn Ready true und ErrorModbus false und ErrorFunktion false dann Enable true, ansonsten Enable false.. hab ich ver-odert mit meinem QuittierSignal, weil ja Enable false sein muss für eine Quittierung (nur wie soll diese funktionieren wenn der Enable für die Modbus Schnittstelle ist die ja quittiert werden soll?).

Hier Screenshots:
Wenn Verbindung noch nicht aufgebaut:
1691683209011.png

HMI Schnittstelle:
1691683248123.png

Wenn ich dann Quittierung drücke:
1691683369396.png

Schnittstelle sieht dann so aus:
1691683503323.png

Quittierung halte ich dann immer gedrückt bis das Ready Signal kommt.. dauert immer ein paar Zyklen..

Ich hab auch schon die Routine für "Ready" im Handbuch gesehen aber werde da noch nicht ganz schlau daraus.
 
Zuletzt bearbeitet:
Ich hab nur noch ein Problem und zwar mit dem "Ready Signal" zB nach Not-Aus.. (24V wegnehmen)

Aktuell ist es so.. wenn Ready true und ErrorModbus false und ErrorFunktion false dann Enable true, ansonsten Enable false.. hab ich ver-odert mit meinem QuittierSignal, weil ja Enable false sein muss für eine Quittierung (nur wie soll diese funktionieren wenn der Enable für die Modbus Schnittstelle ist die ja quittiert werden soll?).

Hier Screenshots:
Wenn Verbindung noch nicht aufgebaut:
Anhang anzeigen 70715

HMI Schnittstelle:
Anhang anzeigen 70716

Wenn ich dann Quittierung drücke:
Anhang anzeigen 70717

Schnittstelle sieht dann so aus:
Anhang anzeigen 70718

Quittierung halte ich dann immer gedrückt bis das Ready Signal kommt.. dauert immer ein paar Zyklen..

Ich hab auch schon die Routine für "Ready" im Handbuch gesehen aber werde da noch nicht ganz schlau daraus.
Hab's gelöst.. hab die Freigabe für den Antrieb ActivateMotor mit einem TON von 2s beschalten

Also Freigabe 24V -> Freigabe Portal -> Rückmeldung Spannung Antriebe iO -> Bausteinkommunikation aktivieren -> 2s später Freigabe Antrieb -> Selbsthaltung über Ready Signal
 
Hallo,

freut mich dass es sich schon erledigt hat.

Habe die Quittierung eben auch mit einem Delay versehen damit es funktioniert und dementsprechend die Kommunikation deaktiviert:
1691742119064.png
 
Ich habe mehrere Anlagen bereits in Betrieb, jedoch ohne HMI oder andere Anzeigemöglichkeiten.
Aber ich frage programmseitig immer ein selbst generiertes "InPos" mit einer gewissen Toleranz zusätzlich ab, dabei wird eben die aktuelle Position übernommen.

Die sollte normalerweise schon dauerhaft gesendet werden, wie gesagt, darauf achten dass die Modbus Kommunikation relativ langsam ist und bei mir in manchen Fällen 200ms benötigt hat.
 
Ich schau's mir noch mal an, kann sein dass es gestern zu lange ging und ich darauf nicht mehr geachtet hatte :D

Jo Position kommt tatsächlich zyklisch an, war gestern abend einfach nur durch
 
Zuletzt bearbeitet:
Zurück
Oben