Sercos-Takt synchrone Tasks möglich ?

2006-02-07
2006-02-11
  • Andreas Setzer - 2006-02-07

    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 ?

     
  • eschwellinger

    eschwellinger - 2006-02-07

    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

     
  • Andreas Setzer - 2006-02-09

    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.

     
  • eschwellinger

    eschwellinger - 2006-02-10

    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

     
  • Andreas Setzer - 2006-02-11

    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

     

Log in to post a comment.