Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 11

Thema: S7/224XP PTO funktioniert nicht richtig

  1. #1
    Registriert seit
    18.02.2009
    Ort
    Köln
    Beiträge
    196
    Danke
    54
    Erhielt 15 Danke für 5 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo alle zusammen.

    Ich möchte mit einer 224XP mittels PTO und den Onbord Ausgängen einen SM ansteuern. Mittels PTO Assistenten bekomme ich den SM bis ca.10U/s zum laufen.(höher geht nicht, da nur 24V Lastspannung vorhanden sind)
    Mit dem PLS Baustein und Verwendung von SMW68 bekomme ich das Ganze auch zum laufen, aber leider nur bis 5U/s. (SMW68 steht bei 500µs)
    Wenn ich nun die Zykluszeit verringere, dann erhöht sich die Drehzahl ab 500µs nicht mehr. (einstellbar ist die Drehzahl von 65000µs - 500µs)
    Warum?

    Hab ich was vergessen?
    Handbuch und Step7 MicroWin hat mir nicht geholfen.
    Zitieren Zitieren S7/224XP PTO funktioniert nicht richtig  

  2. #2
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.739
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Zitat Zitat von rerdma3s Beitrag anzeigen
    ...
    Hab ich was vergessen?
    ...
    Vlt. wär's ratsam zu posten, was Du bis dato programmiert hast.
    Ist dann sicher einfacher, Dir zu helfen.

  3. #3
    rerdma3s ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.02.2009
    Ort
    Köln
    Beiträge
    196
    Danke
    54
    Erhielt 15 Danke für 5 Beiträge

    Standard

    Sorry, das es so lang gedauert hat. Ich hatte keine Möglichkeit zu antworten.

    Habe den Code mal angehängt. Mehr ist nicht drin im Programm.

    Hat jemand eine Idee wiso der Motor nicht schneller drehen kann?
    Angehängte Grafiken Angehängte Grafiken
    • Dateityp: bmp PTO.bmp (484,3 KB, 26x aufgerufen)

  4. #4
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.739
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Ich denk mal, das Problem ist, das Du immer nur einen Impuls pro Aufruf mit PLS machen läßt.

    500µs=0,5ms: Wenn drunter nichts geht, wird Deine Zykluszeit (SMW22-26) in diesem Bereich liegen (die sich bei mehr Programm auch noch erhöht), denn der PTO wird bei Dir momentan ja nur einmal pro Zyklus neu geladen. Deshalb wird der PTO normalerweise über einen Interrupt und nicht im normalen Programmablauf neu geladen, wenn die vorherige Impulsfolge ausgegeben wurde.

    Lade mal zusätzlich den SMD72 mit Werten von 2 bis 4 (Impulsen), wenn Du kleiner als 500µs wirst, und schau, ob sich die Drehzahl erhöht.


    Hab' mal den Beispielcode aus der Hilfe für Dich angepaßt, wie ich es versuchen würde:
    Code:
    ORGANIZATION_BLOCK MAIN:OB1
    TITLE=PROGRAMMKOMMENTARE
    BEGIN
    Network 1 // Hauptprogramm für Impulsfolge im Einzel-Segment-Betrieb (PTO)
    LD     V10.0                       // Bit zum Aktivieren/deaktivieren PTO
    LPS
    EU                                 // Bei Wechsel auf High
    R      A0.0, 1                     // Ausgang A0.0 zurücksetzen
    MOVB   16#85, SMB67                // Steuerbyte einrichten
                                       // - Funktion PTO wählen
                                       // - Einzel-Segment-Betrieb einstellen
                                       // - In µs inkrementieren
                                       // - Impulszählwert und Zykluszeitwert einstellen
                                       // - Funktion PTO freigeben
    MOVW   VW0, SMW68                  // Zykluszeit von VW0 laden.
    MOVD   +4, SMD72                   // Impulszählwert auf jeweils 4 Impulse setzen.
    ATCH   INT0, 19                    // Interruptprogramm 0
                                       // für die Bearbeitung der Interrupts PTO beendet definieren
    ENI                                // Alle Interrupts freigeben
    PLS    0                           // Funktion PTO aufrufen, PLS0 => A0.0
    LPP
    ED                                 // Bei Wechsel auf Low
    R      SM67.7, 1                   // PTO deaktivieren und
    DTCH   19                          // Interrupts PTO deaktivieren und
    DISI                               // alle Interrupts wieder sperren
    END_ORGANIZATION_BLOCK
     
    INTERRUPT_BLOCK INT_0:INT0
    TITLE=INTERRUPTPROGRAMM-KOMMENTARE
    BEGIN
    Network 1 // Beginn Interrupt 0
    LD     SM0.0                       // Bei jedem Interrupt
    MOVW   VW0, SMW68                  // neue Zykluszeit von VW0 laden und
    PLS    0                           // PTO neu starten
    END_INTERRUPT_BLOCK
    Angehängte Dateien Angehängte Dateien
    Geändert von hucki (01.08.2010 um 01:54 Uhr) Grund: angepaßtes Beispiel aus MicroWIN-Hilfe

  5. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    rerdma3s (01.08.2010)

  6. #5
    rerdma3s ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.02.2009
    Ort
    Köln
    Beiträge
    196
    Danke
    54
    Erhielt 15 Danke für 5 Beiträge

    Standard

    Vielen Dank Hucki,

    das du mir so ausführlich geholfen hast. Ich hab dein Programm noch nicht 100% verstanden.Das ist aber nicht schlimm, da ich mit den Interrupts noch nicht gearbeitet habe. Du hast mir den Weg gezeigt (PLS läuft nur mit Interrupts ordentlich), den Rest muss ich mir erarbeiten.

    PS:
    Mit deinem Programm läuft der Motor bis zu 35µs!

    Gruß Rene

  7. #6
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.739
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Zitat Zitat von rerdma3s Beitrag anzeigen
    ...
    Mit deinem Programm ...
    Zuviel der Ehre, steht ja fast so in der MicroWin-Hilfe


    Noch mal zur Erklärung:

    Du richtest den PTO mit einer Impulsfolge ein. Das war bei Dir die Festlegung der Impuls-Zykluszeit und ein Impuls.
    Diese Impulsfolge wird mit jedem Aufruf von PLS gestartet.
    Das war bei Dir einmal pro Programm-Zyklus. Der Programm-Zyklus hat aber eine bestimmte Dauer.
    Da er ja am Anfang und Ende auch noch die Prozessabbilder machen muss, kamst Du nicht unter eine Programm-Zykluszeit von 500µs.

    Programm-Zykluszeit=500µs * 1 Impuls machten bei Dir max. 5U/s.

    Auch wenn Du die Impuls-Zykluszeit auf 250µs festgelegt hast, wurde ja PLS trotzdem nur einmal pro Programm-Zyklus aufgerufen. Du hattest zwar einen Impuls der nur 125µs dauerte aber eben nur alle 500µs den nächsten Impuls, also 2 je ms und nicht 4.

    Wenn Du jetzt den Impulszähler auf 2 festlegst, dann gibt PLS 2 Impulse pro PLS-Aufruf/Programm-Zyklus aus. Das heißt, wenn die Impuls-Zykluszeit 250µs beträgt und PLS alle 500µs aufgerufen wird, dann hast Du auch wirklich alle 250µs einen neuen Impuls, also die gewünschten 4 je ms.



    Bis jetzt hattest Du aber nur 3 Befehle in Deinem Programm. Wenn das Programm umfangreicher wird, erhöht sich natürlich auch die Zykluszeit.
    Dann werden die 2 Impulse mit der Impuls-Zykluszeit von 250µs vlt. nur noch alle 5ms erzeugt. Also die ersten 0,5ms 2 Impulse, dann 4,5ms warten auf den nächsten Aufruf. Das entspräche einer effektiven Impuls-Zykluszeit von 2,5ms.

    Deshalb benutzt man den Interrupt. Wenn der PTO die 2 Impuls-Zyklen ausgegeben hat, gibt's eine Rückmeldung, die den Interrupt 19 startet. Das Hauptprogramm wird unterbrochen, der PTO wird im Interrupt neu gestartet und das Hauptprogramm wird wieder an der Stelle fortgesetzt, wo unterbrochen wurde. So startest Du trotz längerem Hauptprogramm trotzdem alle 500µs 2 neue Impulse ('n paar µs Bearbeitungszeit für den Interupt kommen allerdings noch hinzu).

    Diese Unterbrechung ist rein theoretisch nach jedem AWL-Befehl möglich.
    Die Ausführungsdauer dieser Befehle schwankt allerdings stark zwischen einfachen Verknüpfungen mit 0,22µs und komplizierten Rechenoperation mit bis zu 1000µs oder sogar darüber. Dort sind also die Grenzen in der Impuls-Zykluszeit.
    Deshalb ist es von Vorteil den PTO auch im Interrupt mit mehr als nur einem Impuls zu laden. Somit hat man trotz geringer Impuls-Zykluszeit mehr Zeit bis zum nächsten PLS-Aufruf und der damit verbundenen Unterbrechung des Hauptprogrammes. Denn je häufiger das Hauptprogramm unterbrochen wird, um so größer ist natürlich auch dessen Zykluszeit. Außerdem werden so eventuelle Wartezeiten des Interrupts auf die Beendigung eines Befehls minimiert.


    Der Nachteil ist natürlich, das dann in obigen Programm mit jedem PLS-Aufruf auch immer 4 Impulse ausgegeben werden. Wenn Du also wieder langsamer wirst, solltest Du nicht nur die Impuls-Zykluszeit erhöhen, sondern auch die Anzahl der ausgegebenen Impulse wieder verringern, um den Motor wieder genauer steuern zu können.




    PS: Ich hoffe, ich konnte es einigermaßen verständlich rüberbringen, bin ja kein Lehrer.
    Geändert von hucki (01.08.2010 um 21:20 Uhr) Grund: Ausbesserung der Erklärungen und Legasthenie-Anfälle

  8. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    rerdma3s (01.08.2010)

  9. #7
    rerdma3s ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.02.2009
    Ort
    Köln
    Beiträge
    196
    Danke
    54
    Erhielt 15 Danke für 5 Beiträge

    Standard

    Obwohl du kein Lehrer bist hab ich alles verstanden

    Danke Gruß Rene

  10. #8
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.739
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Zitat Zitat von rerdma3s Beitrag anzeigen
    ...läuft der Motor bis zu 35µs!
    ...
    Versuch's mal mit noch mehr Impulsen also z.B. 8 anstatt 4 (oder noch mehr):
    Code:
    ...
    MOVD   +8, SMD72                   // Impulszählwert auf jeweils 8 Impulse setzen.
    ...
    Vlt. kommst Du ja so noch weiter runter, denn auch die Interrupt-Aufrufe sind ja zeitlich nach unten begrenzt.

    Es ist auf jeden Fall von Vorteil, bei Verringerung der Impuls-Zykluszeit die Impulsanzahl zu erhöhen und umgekehrt.


    Davon mal abgesehen, welche Impuls-Mindestlänge braucht denn der SM, um die Impulse noch sicher als solche zu erkennen?

  11. #9
    rerdma3s ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.02.2009
    Ort
    Köln
    Beiträge
    196
    Danke
    54
    Erhielt 15 Danke für 5 Beiträge

    Standard

    Die Endstufe kann 400KHz

    Und ich kann bis 25600 Pulse/Umdrehung auflösen

  12. #10
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.739
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von rerdma3s Beitrag anzeigen
    Die Endstufe kann 400KHz...
    Macht minimal 2,5µs Impuls-Zykluszeit (1.000.000µs/400.000Hz), oder

    Dann kannst Du ja noch ein bißchen rumprobieren.

    Wenn ich das mal überschlage: 35µs * 4 Impulse macht ca. alle 140µs ein Interrupt.
    Bei 2,5µs könntest Du in der Zwischenzeit also min. ca. 56 Impulse erzeugen.

    Ich würd' die Impulszahl bei diesen Impuls-Zykluszeiten dann ruhig mal auf 100 erhöhen. Oder noch höher.


    Interessiert mich jetzt irgendwie, denn ich hab' mich bis dato auch nur theoretisch damit beschäftigt.
    Geändert von hucki (01.08.2010 um 23:02 Uhr)

Ähnliche Themen

  1. Lageregler - überwachen ob er richtig funktioniert
    Von Merten1982 im Forum Programmierstrategien
    Antworten: 13
    Letzter Beitrag: 07.01.2011, 01:28
  2. Antworten: 1
    Letzter Beitrag: 14.10.2010, 10:13
  3. Tazer funktioniert nicht richtig
    Von Automatik-Holgi im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 08.08.2010, 12:40
  4. Kurvenanzeige funktioniert nicht richtig
    Von MeisterLampe81 im Forum HMI
    Antworten: 2
    Letzter Beitrag: 22.12.2009, 06:46
  5. SFB4 funktioniert nicht richtig auf 416-2DP
    Von Astralavista im Forum Simatic
    Antworten: 35
    Letzter Beitrag: 24.12.2008, 13:53

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •