Welcome to our new forum
All users of the legacy CODESYS Forums, please create a new account at account.codesys.com. But make sure to use the same E-Mail address as in the old Forum. Then your posts will be matched. Close

Servo-Ansteuerung

riffraff
2016-12-27
2016-12-29
  • riffraff - 2016-12-27

    Hallo,

    hat jemand von euch Erfahrung mit Codesys auf Raspi und Ansteuerung von Servos?

    Das im Raspi-Paket von Codesys enthaltene "SoftMotion Servo Example.project" funktioniert problemlos.
    Ich will den Servo aber nicht wie im Codesys-Beispiel über eine Schrittkette ansprechen, sondern über FUP.
    Deshalb habe ich wie im screenshot gezeigt einen einfachen ersten Versuch unternommen, der aber in dieser Art nicht funktioniert. Die Bausteine „MC_Power“ und „MC_MoveAbsolute“ habe ich mir aus dem Codesys-Beispiel „ausgeliehen“.

    Müssen da im Vorfeld evtl. irgendwelche Initialisierungen des Servos gemacht werden?

    Gruß

    IMG: servo.JPG

     
  • riffraff - 2016-12-27

    Oder ist diese automatisch angelegte FB-Instanz der richtige Weg (???)
    Wenn ja, kennt jemand eine Beschreibung der FB-Eingangsbeschaltung…

    IMG: fb_instanz.JPG

     
  • riffraff - 2016-12-27

    oder so (?)

    IMG: 3versuch.JPG

     
  • eschwellinger

    eschwellinger - 2016-12-27

    Hi,

    so wie im ersten screenshot müsste schon gehen.
    Nur musst du die Instanzen auch in PLC_PRG deklarieren MC_Power zum enablen und den MC_Move usw.... so wie in deinem ersten "Post".

    Grüße
    Edwin

     
  • riffraff - 2016-12-27

    Hallo Edwin,

    danke für den Hinweis - ich bin neu in dem Thema und tappe gerade noch ziemlich im Dunkeln

    Ich denke, es ist nur noch ein kleiner Schritt zum funktionierenden Servo
    Kannst du dir den FALSE Status des "MC_Power" Bausteins erklären?

    Gruß
    Werner

    IMG: fb_instanz.JPG

     
  • eschwellinger

    eschwellinger - 2016-12-28

    Hi,
    stelle bitte die Task auf dem Drive auf deine MotionTask also MainTask.
    Mehr fällt mir nicht ein.. mit dem ServoBeispiel hatte es funktioniert?

    SM_Drive_Servo.wCommunicationstate bitte mal ins Watchfenster tippen und schauen ob der auf 100 steht.

    Grüße
    Edwin

    IMG: MotionTask.jpg

     
  • riffraff - 2016-12-28

    Hallo Edwin,

    ja, ServoExample Project funktioniert problemlos.
    Das arbeitet übrigens mit "Zykluseinstellungen des übergeordneten ..." Task.

    Taskumstellung bringt lediglich eine Veränderung:

    bei "Zykluseinstellungen des übergeordneten ..."
    toggelt der nAxisState zwischen "power off" und "stopping" (siehe screenshot)

    bei "Main-Task"
    verbleibt nAxisState fest auf "stopping"

    Ich habe jetzt nur den "MC_Power" Baustein im Programm und will den, wie beim ServoExampleProject, erst mal auf den Status TRUE bringen...

    Fällt dir noch eine Fehlerquelle ein, die das in meinem Programm verhindert?

    Gruß
    Werner

    IMG: 2.JPG

    IMG: 1.JPG

     
  • eschwellinger

    eschwellinger - 2016-12-28

    Hi,
    mach man den enable des MC_Power erst wenn du Axis.wcommunicationstate = 100 hast... sollte nichts machen aber wer weiß...
    und könntest mal dein Projekt anhängen.

    Grüße
    Edwin

     
  • riffraff - 2016-12-28

    verzögertes Setzen des xAxisEnable bringt auch keine Veränderung.
    Habe das Projekt mal angehängt...

    Gruß
    Werner

     
  • eschwellinger

    eschwellinger - 2016-12-28

    Hi,
    schau mal in das Taskdeployment.
    hm.. versuch mal deinen POU im IOProfinet Task auzurufen.
    Kann nicht testen habe keine Hardware zur Hand.
    Wenn man ne 2.Achse dazumacht geht's aber halt nicht mit der ersten..
    Grüße
    Edwin

    IMG: zweiteAchse.jpg

     
  • riffraff - 2016-12-28

    Hallo Edwin,

    an das Taskdeployment hatte ich noch gar nicht gedacht...
    ... ist aber wohl auch nicht die Ursache.

    Um das ganze Profinet-Thema als Ursache außen vor zu lassen, habe ich den gesamten "Ethernet" Zweig gelöscht - jetzt gibts keinen Profinet-Task mehr.

    Dann habe ich die Buszyklus-Optionen für Adafruit und SM_Drive_Servo 1:1 aus dem (funktionierenden) SoftMotion Servo Example.project übernommen - und der Status von MC_Power bleibt trotzdem auf false!

    Jetzt fällt mir nur noch ein, mein gesamtes Projekt schrittweise aus dem funktionierenden "SoftMotion Servo Example.project" heraus aufzubauen (?)

    Gruß
    Werner

    IMG: 4.JPG

    IMG: 3.JPG

    IMG: 2.JPG

    IMG: 1.JPG

     
  • riffraff - 2016-12-29

    Hallo Edwin,

    kurzes feedback:
    Ich habe jetzt ein Projekt Schritt für Schritt komplett neu aufgesetzt.
    - Motion FB's samt Ansteuerung definiert - lief
    - Alte Visualisierung aus Vorprojekt übernommen - lief
    - Ethernet/Profinet-Konfiguration aus Vorprojekt übernommen - wieder keinen Zugriff auf den Servo

    Dann habe ich deinen ersten Hinweis
    "stelle bitte die Task auf dem Drive auf deine MotionTask also MainTask"
    nochmal aufgegriffen und siehe da - es läuft

    Nochmals besten Dank für deine Unterstützung - bin jetzt in dem Servo-Thema etwas sicherer unterwegs

    Gruß
    Werner

     

Log in to post a comment.