Ich habe eine Applikation, bei der ich mit einem Sensor, der auf einer pendelnden Sercos-Servo-Achse montiert ist, den Pendelbereich abtasten muß und dabei die Messergebnisse möglichst hochauflösend den Positionswerten zuordnen muß. Die Messwerte werden dazu benutzt, den Vorschub einer zweiten Servoachse zu regeln; die Totzeit zwischen Meßwertaufnahme und
Vorschubanpassung sollte möglichst gering sein.
Wäre es in Codesys Softmotion + Sercos-Karte grundsätzlich möglich, eine zum Sercos-Zyklus synchrone Task zu programmieren,die die Messdaten über eine Sercos-IO-Box einliest, filtert, und das Ergebnis als Geschwindigkeitssollwert einer zweiten Sercos-Achse übergibt ?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Andreas Setzer hat geschrieben:
Hallo,
Ich habe eine Applikation, bei der ich mit einem Sensor, der auf einer pendelnden Sercos-Servo-Achse montiert ist, den Pendelbereich abtasten muß und dabei die Messergebnisse möglichst hochauflösend den Positionswerten zuordnen muß. Die Messwerte werden dazu benutzt, den Vorschub einer zweiten Servoachse zu regeln; die Totzeit zwischen Meßwertaufnahme und
Vorschubanpassung sollte möglichst gering sein.
Wäre es in Codesys Softmotion + Sercos-Karte grundsätzlich möglich, eine zum Sercos-Zyklus synchrone Task zu programmieren,die die Messdaten über eine Sercos-IO-Box einliest, filtert, und das Ergebnis als Geschwindigkeitssollwert einer zweiten Sercos-Achse übergibt ?
Hallo,
dieses ist möglich!
CoDeSys Softmotion unterstützt auch Sercos IO's.
Ich würde vorschlagen einen Sercos IO Knoten zu nehmen und diesen (wenn die Filterung nicht zu aufwendig ist) in der selben Task in der auch die Motion gemacht wird, aufzurufen.
Wie liegen die Messdaten vor ? Analog, RS485 oder TTL?
Durch diese Anbindung der Messdaten an den Sercosbus sollten die Ergebnisse optimal sein und können entsprechend auch wieder einer weiteren(oder mehreren) Achsen als Sollwert vorgegeben werden.
mfg
Edwin Schwellinger
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
danke für deine schnelle Antwort. Die IO-Anbindung macht mir weniger Sorgen. Mir wäre wichtig zu wissen, ob ich eine SPS-Task mit dem Sercos-Takt synchronisieren kann ( z.B. indem man mit der "bSync"-Variable einer AxisGroup die SPS-Task triggert ? ) und man den Geschwindigkeitssollwert einer Achse in dieser Task selbstständig über "wCyclicDataSx" vorgeben kann ? Ich suche eben eine Antriebssteuerung, die mir bei noch akzeptablem Aufwand eine flexible Programmierung der Antriebe erlaubt, um die oben beschriebene schnelle Regelung zu realisieren.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Andreas Setzer hat geschrieben:
Hallo Edwin,
danke für deine schnelle Antwort. Die IO-Anbindung macht mir weniger Sorgen. Mir wäre wichtig zu wissen, ob ich eine SPS-Task mit dem Sercos-Takt synchronisieren kann ( z.B. indem man mit der "bSync"-Variable einer AxisGroup die SPS-Task triggert ? ) und man den Geschwindigkeitssollwert einer Achse in dieser Task selbstständig über "wCyclicDataSx" vorgeben kann ? Ich suche eben eine Antriebssteuerung, die mir bei noch akzeptablem Aufwand eine flexible Programmierung der Antriebe erlaubt, um die oben beschriebene schnelle Regelung zu realisieren.
Hallo Andreas,
ich verstehe nicht genau warum du das in ner seperaten Task machen willst.
Ich würde die neuen (selbst generierten)Sollwerte für die Zusatzachse,
ebenfalls in der "normalen" Motion Task über nen SMC_ControlAxisByVel
an die entsprechende Achse geben.
Das ist kein Aufwand und funktioniert bestens.
mfg
Edwin
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ok, ich werde schauen, ob ich mit den SMC Befehlen zu Rande komme. Zu den restlichen Punkten habe ich ein paar Erklärungen im "SercosDriveLib_E.pdf"-Dokument der Demoversion von Codesys gefunden.
Danke nochmal für die Hilfe
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hallo,
Ich habe eine Applikation, bei der ich mit einem Sensor, der auf einer pendelnden Sercos-Servo-Achse montiert ist, den Pendelbereich abtasten muß und dabei die Messergebnisse möglichst hochauflösend den Positionswerten zuordnen muß. Die Messwerte werden dazu benutzt, den Vorschub einer zweiten Servoachse zu regeln; die Totzeit zwischen Meßwertaufnahme und
Vorschubanpassung sollte möglichst gering sein.
Wäre es in Codesys Softmotion + Sercos-Karte grundsätzlich möglich, eine zum Sercos-Zyklus synchrone Task zu programmieren,die die Messdaten über eine Sercos-IO-Box einliest, filtert, und das Ergebnis als Geschwindigkeitssollwert einer zweiten Sercos-Achse übergibt ?
Hallo,
dieses ist möglich!
CoDeSys Softmotion unterstützt auch Sercos IO's.
Ich würde vorschlagen einen Sercos IO Knoten zu nehmen und diesen (wenn die Filterung nicht zu aufwendig ist) in der selben Task in der auch die Motion gemacht wird, aufzurufen.
Wie liegen die Messdaten vor ? Analog, RS485 oder TTL?
Durch diese Anbindung der Messdaten an den Sercosbus sollten die Ergebnisse optimal sein und können entsprechend auch wieder einer weiteren(oder mehreren) Achsen als Sollwert vorgegeben werden.
mfg
Edwin Schwellinger
Hallo Edwin,
danke für deine schnelle Antwort. Die IO-Anbindung macht mir weniger Sorgen. Mir wäre wichtig zu wissen, ob ich eine SPS-Task mit dem Sercos-Takt synchronisieren kann ( z.B. indem man mit der "bSync"-Variable einer AxisGroup die SPS-Task triggert ? ) und man den Geschwindigkeitssollwert einer Achse in dieser Task selbstständig über "wCyclicDataSx" vorgeben kann ? Ich suche eben eine Antriebssteuerung, die mir bei noch akzeptablem Aufwand eine flexible Programmierung der Antriebe erlaubt, um die oben beschriebene schnelle Regelung zu realisieren.
Hallo Andreas,
ich verstehe nicht genau warum du das in ner seperaten Task machen willst.
Ich würde die neuen (selbst generierten)Sollwerte für die Zusatzachse,
ebenfalls in der "normalen" Motion Task über nen SMC_ControlAxisByVel
an die entsprechende Achse geben.
Das ist kein Aufwand und funktioniert bestens.
mfg
Edwin
Hallo Edwin,
Ok, ich werde schauen, ob ich mit den SMC Befehlen zu Rande komme. Zu den restlichen Punkten habe ich ein paar Erklärungen im "SercosDriveLib_E.pdf"-Dokument der Demoversion von Codesys gefunden.
Danke nochmal für die Hilfe