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

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 33

Thema: SEW Movidrive, Positionieren und Drehmoment

  1. #1
    Registriert seit
    25.11.2008
    Ort
    Westpfalz
    Beiträge
    1.550
    Danke
    187
    Erhielt 212 Danke für 186 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Experten,

    bin zur Zeit in der Planungsphase und möchte mit einem SEW-Movidrive einen Servo zum einen Positionieren und zum anderen ein Werkstück verpressen.

    Im Einzelnen soll die Achse in eine Vorab-Position verfahren werden. Dann soll ein Werkstück auf ein anderes gepresst werden und bis zu 10 Sekunden angedrückt werden. Dazu würde ich zunächst positionieren und anhand des Stromes erfassen, wenn das Werkstück angedrückt ist. Nun muss bei Ist=Sollposition das Moment aufrecht erhalten werden. Anschließend soll die Achse in die Homeposition zurückverfahren.

    Steuerung ist eine S7. Takt und Zykluszeit zweitrangig.
    Für die Positionierung soll die erweiterte Buspositionierung eingesetzt werden. Für das Andrücken würde ich gerne die Parametrierung über Profidrive Datensatz 47 (Read/Write Record) anwenden.
    Als Grundlage habe ich zur Zeit das Beispiel von SEW(FB100). Und hier nun die Fragen an euch:

    Wer hat das so ähnlich gemacht und kann mir Tipps geben?
    Insbesondere welche Parameter müsste ich für die Momentenregelung angreifen?
    Wo finde ich Informationen, bei SEW gibts so einige Applikationen, aber dazu habe ich nichts gefunden.

    PS.: Änderungen an der Hardware oder IPOS-Programmierung stehen derzeit nicht zur Diskussion.

    Vielen Dank für Antworten
    Mäuseklavier
    and we all support the team (S.King - Die Arena)
    Zitieren Zitieren SEW Movidrive, Positionieren und Drehmoment  

  2. #2
    Registriert seit
    25.06.2007
    Ort
    Dresden
    Beiträge
    3.930
    Danke
    465
    Erhielt 878 Danke für 634 Beiträge

    Standard

    Zitat Zitat von Mäuseklavier Beitrag anzeigen
    .....
    bin zur Zeit in der Planungsphase
    ...
    bei SEW gibts so einige Applikationen, aber dazu habe ich nichts gefunden.
    ...
    Solche Aufgabenstellungen würde ich immer erst mal mit den SEW-Experten besprechen.
    Im allgemeinen wird so etwas am Ende an SEW outgesourced.
    Die haben Servicetechniker, ehe du dass weißt, was die Wissen (MÜSSEN)...

    Frank
    Grüße Frank

  3. #3
    Avatar von Sinix
    Sinix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.11.2008
    Ort
    Westpfalz
    Beiträge
    1.550
    Danke
    187
    Erhielt 212 Danke für 186 Beiträge

    Standard

    Hallo Frank,

    diese Vorgehensweise ist prinzipiell richtig und praktizieren wir oft auch.
    SEW würde hier auf eine selbstentwickelte IPOS-Programmierung zurückgreifen. Das ist aber nicht in meinem Sinne, ich möchte die Programmierung selbst in der Hand haben, zum einen wegen späterer Diagnose, zum anderen zur Vermeidung von Problemen bei Gerätetausch. Warum soll ich also nicht eine Lösung entwickeln, die auf vorhandene Programmierstrategien zurückgreift. An und für sich ist die Anwendung auch nicht zu kompliziert um ausgesourced zu werden. Kenne ich die Parameter die ich angreifen muss und funktioniert die Parametrierung über Datensatz 47 ist der Rest nur noch Gutenberg.

    MfG
    MK
    and we all support the team (S.King - Die Arena)

  4. #4
    Avatar von Sinix
    Sinix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.11.2008
    Ort
    Westpfalz
    Beiträge
    1.550
    Danke
    187
    Erhielt 212 Danke für 186 Beiträge

    Standard

    Hi,

    bin jetzt einen Schritt weiter und kann die Betriebsart im Parameter 8574 von Servo&IPOS auf Servo&Momentenregelung umschalten. Leider geht dies im Moment nur wenn ich an DI0 die Reglerfreigabe wegnehme. Weiß jemand eine Möglichkeit ohne über die Reglerfreigabe an der Klemmleiste in den Betriebszustand 1 zu kommen?

    Gruß MK
    and we all support the team (S.King - Die Arena)
    Zitieren Zitieren keiner hier eine Ahnung?  

  5. #5
    Registriert seit
    06.01.2005
    Ort
    im schönen Lipperland
    Beiträge
    4.472
    Danke
    498
    Erhielt 1.143 Danke für 736 Beiträge

    Standard

    Warum nicht IPOS ? ... du kannst du die Erweiterte Buspositionierung anwenden um zu positionieren und beim Pressen musst du einen Wert angeben der "im Werkstück" liegt. Den Pressdruck stellt du über den Parameter Drehmoment aus deiner Steuerung ein.
    Früher gab es Peitschen .... heute Terminkalender

  6. #6
    Avatar von Sinix
    Sinix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.11.2008
    Ort
    Westpfalz
    Beiträge
    1.550
    Danke
    187
    Erhielt 212 Danke für 186 Beiträge

    Standard

    Zitat Zitat von Lipperlandstern Beitrag anzeigen
    Warum nicht IPOS ? ... du kannst du die Erweiterte Buspositionierung anwenden um zu positionieren und beim Pressen musst du einen Wert angeben der "im Werkstück" liegt. Den Pressdruck stellt du über den Parameter Drehmoment aus deiner Steuerung ein.
    Kein IPOS, siehe oben.
    Welchen Parameter Drehmoment meinst du?

    Zur Zeit schalte ich ja die Betriebsart um, da wird statt der Sollposition der Sollstrom in %In vorgegeben.
    and we all support the team (S.King - Die Arena)

  7. #7
    Registriert seit
    13.10.2007
    Beiträge
    12.032
    Danke
    2.787
    Erhielt 3.269 Danke für 2.157 Beiträge

    Standard

    Wenn du dir nicht den eigenen Weg mit IPOS verstellen würdest, könntest
    du mit ganz einfachen Mitteln den Parameter direkt in die Peripherie legen.
    Ich würde wirklich mal bei SEW anfragen, das ist kein Hexenwerk und für
    dich später eine einfache und schnelle Lössung.
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

  8. #8
    Avatar von Sinix
    Sinix ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.11.2008
    Ort
    Westpfalz
    Beiträge
    1.550
    Danke
    187
    Erhielt 212 Danke für 186 Beiträge

    Standard

    Hallo Helmut,

    und von welchem Parameter schreibst du?

    Wie schon oben beschrieben funktioniert das ganze und so kompliziert ist es in der S7 nicht. Zum Fc140 kommt der FB100 mit 3 Netzwerken zur Umschaltung dazu. Ich sehe da nur Vorteile. Zwei Probleme Beschäftigen mich noch. Erstens das ich beim Umschalten der Betriebsart die Reglerfreigabe wegnehmen muss. Zweitens die Auflösung des Iststroms in der S7.

    Wie würde sowas in einem IPOS-Programm aussehen? Gebe ich da Position und Strom gleichzeitig in der Betriebsart Servo&IPOS vor?

    Mfg
    and we all support the team (S.King - Die Arena)

  9. #9
    Registriert seit
    13.10.2007
    Beiträge
    12.032
    Danke
    2.787
    Erhielt 3.269 Danke für 2.157 Beiträge

    Standard

    Hallo Mäuseklavier,
    du kannst ja jeden Parameter auf die Profibusschnittstelle ziehen und auch
    direkt beschreiben, also währe es möglich auch zur Laufzeit den Maximal
    Strom zu ändern. Ich habe mal ein IPOS Programm geschrieben um mit den
    Dezentralen FU's MQP (Igel) ein Positionierung durchzuführen. Hier ein Teil
    zur Variabeln Deklaration und wie Werte in den Feldbus umgeladen werden.

    Code:
    /*==================================================================================================
                  IPOS-Quelldatei
        Erstellt am 25.11.05 Helmut_von_der_Reparatur
     
    Ansteuerung Antrieb durch die SPS/Application (DP-Prozessausgangsdaten)
    --------------------------------------------------------------------------
    Wenn bei den Sollwerten Geschwindigkeit oder Rampe eine "0" vorgegeben wird
    fährt der Antrieb mit Wert aus den Parametern.
    1.   Wort   =   Steuerwort
    2/3. Wort   =   Zielposition
    4.   Wort   =   Soll-Geschwindigkeit
    5.   Wort   =   Hochlaufzeit
    6.   Wort   =   Tieflaufzeit
    7.   Wort   =   IPOS-Ausgänge
    Belegung Steuerwort
    15 14 13 12 11 10 9  8  7  6  5  4  3  2  1  0
    |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
    |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Reglersperre /Freigabe
    |  |  |  |  |  |  |  |  |  |  |  |  |  |  Freigabe /Schnellstop
    |  |  |  |  |  |  |  |  |  |  |  |  |  Freigabe /Halt
    |  |  |  |  |  |  |  |  |  |  |  |  reserviert
    |  |  |  |  |  |  |  |  |  |  |  reserviert
    |  |  |  |  |  |  |  |  |  |  reserviert
    |  |  |  |  |  |  |  |  |  Reset
    |  |  |  |  |  |  |  |  reserviert
    |  |  |  |  |  |  |  Referenzieren
    |  |  |  |  |  |  Automatik
    |  |  |  |  |  Tippen plus
    |  |  |  |  Tippen minus
    |  |  |  reserviert
    |  |  reserviert
    |  reserviert
    reserviert
    Belegung IPOS-Ausgänge
    15 14 13 12 11 10 9  8  7  6  5  4  3  2  1  0
    |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
    |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  DO0
    |  |  |  |  |  |  |  |  |  |  |  |  |  |  DO1
    ----           reserviert           ----
    Rückmeldung Antrieb an die SPS/Application (DP-Prozesseingangsdaten)
    --------------------------------------------------------------------------
    1.   Wort   =   Statuswort
    2/3. Wort   =   Ist-Position
    4.   Wort   =   Ist-Geschwindigkeit
    5.   Wort   =   frei
    6.   Wort   =   Geräteauslastung
    7.   Wort   =   IPOS-Eingänge
    Belegung Statuswort
    15 14 13 12 11 10 9  8  7  6  5  4  3  2  1  0
    |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
    |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  Motor-Dreht
    |  |  |  |  |  |  |  |  |  |  |  |  |  |  Umrichter Betriebsbereit
    |  |  |  |  |  |  |  |  |  |  |  |  |  Antrieb referenziert
    |  |  |  |  |  |  |  |  |  |  |  |  Zielposition erreicht
    |  |  |  |  |  |  |  |  |  |  |  Bremse geöffnet
    |  |  |  |  |  |  |  |  |  |  Fehler
    |  |  |  |  |  |  |  |  |  Endschalter rechts
    |  |  |  |  |  |  |  |  Endschalter links
    Umrichterstatus / Fehler-Code
    Belegung IPOS-Eingänge
    15 14 13 12 11 10 9  8  7  6  5  4  3  2  1  0
    |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |
    |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  DI0
    |  |  |  |  |  |  |  |  |  |  |  |  |  |  DI1
    |  |  |  |  |  |  |  |  |  |  |  |  |  DI2
    |  |  |  |  |  |  |  |  |  |  |  |  DI3
    ----         reserviert       ----
    ==================================================================================================*/
    #include <const.h>
    #include <io.h>
    #pragma initials  90 127
    #pragma globals  210 300
    #pragma var      301 400
    //-----  Movilink - Profil  -----
    MOVCOM      mc;
    MCPDATA     mcd;
    MCPARADATA  mcpara;
    MOVLNK      ml;
    MLDATA      mld;
    GSPODATA10  DP_OUT;
    SSPIDATA10  DP_IN;
    //-----  Algemeine Variablen  -----
    #define   Betriebsart                   H0
    #define   Rueckgabe_betriebsart         H1
    #define   Statuswort                    H2
    #define   Schnellstop_Rampe             H3
    #define   Soll_Speed                    H7
    #define   START                         _BitSet(mcd.PO1, 2)
    #define   STOP                          _BitClear(mcd.PO1, 2)
    long Freigabe, Servicebetrieb, Schmier_T1, Schmier_T2;
    //-----  Variablen Skalierung  -----
    #define   Faktor_Position               H10
    #define   Divisor_Position              H11
    #define   Faktor_Speed                  H12
    #define   Divisor_Speed                 H13
    //-----  Variablen Status  -----
    #define   Linkslauf                     H20
    #define   Rechtslauf                    H21
    #define   IST_Speed                     H22
    #define   Motor_dreht_SET               _BitSet(Statuswort, 0)
    #define   Motor_dreht_RESET             _BitClear(Statuswort, 0)
    #define   Motor_dreht                   (Statuswort & 0x1)
    #define   Bereit_SET                    _BitSet(Statuswort, 1)
    #define   Bereit_RESET                  _BitClear(Statuswort, 1)
    #define   Bereit                        (Statuswort & 0x2)
    #define   Bremse_SET                    _BitSet(Statuswort, 4)
    #define   Bremse_RESET                  _BitClear(Statuswort, 4)
    #define   Bremse                        (Statuswort & 0x10)
    long H511_speicher, H511_differenz;
    //-----  Variablen Endlagen  -----
    #define   SW_endschalter_links          H25
    #define   SW_endschalter_rechts         H26
    #define   HW_endschalter_links_aktiv    H27
    #define   HW_endschalter_rechts_aktiv   H28
    #define   Endschalter_links             ((InputLevel >> 2) & 1)
    #define   Endlage_links_SET             _BitSet(Statuswort, 7)
    #define   Endlage_links_RESET           _BitClear(Statuswort, 7)
    #define   Endlage_links                 (Statuswort & 0x80)
    #define   Endschalter_rechts            ((InputLevel >> 3) & 1)
    #define   Endlage_rechts_SET            _BitSet(Statuswort, 6)
    #define   Endlage_rechts_RESET          _BitClear(Statuswort, 6)
    #define   Endlage_rechts                (Statuswort & 0x40)
    long SW_endschalter_aktiv, SW_Endlage_links, SW_Endlage_rechts,
         SW_endschalter_links_MM, SW_endschalter_rechts_MM,
         HW_Endlage_links, HW_Endlage_rechts;
    //-----  Variablen Tippen  -----
    #define   Tippen_links_Speed            H30
    #define   Tippen_links_Rampe_auf        H31
    #define   Tippen_links_Rampe_ab         H32
    #define   Tippen_rechts_Speed           H33
    #define   Tippen_rechts_Rampe_auf       H34
    #define   Tippen_rechts_Rampe_ab        H35
    //-----  Automatik  -----
    #define   Auto_Speed                    H41
    #define   Auto_Rampe_auf                H42
    #define   Auto_Rampe_ab                 H43
    #define   Pos_erreicht_SET              _BitSet(Statuswort, 3)
    #define   Pos_erreicht_RESET            _BitClear(Statuswort, 3)
    #define   Pos_erreicht                  (Statuswort & 0x8)
    long Auto_Schmier;
    //-----  Zielregelung  -----
    #define   Reg_Fenster                   H51
    #define   Reg_Divisor_Rampe_min         H52
    #define   Reg_Divisor_Rampe_max         H53
    #define   Reg_Faktor_Rampe              H54
    #define   Reg_Divisor_Rampe             H55
    #define   Reg_Mindestdrehzahl           H56
    #define   Reg_Lose                      H57
    #define   Verz_Ziel                     H58
    long Reg_Schmier, Reg_Differenz, Reg_Speed, Reg_Lose_fahren,
         Reg_Lose_gefahren;
    //-----  Referenzieren  -----
    #define  Referenziert_SET               _BitSet(Statuswort, 2)
    #define  Referenziert_RESET             _BitClear(Statuswort, 2)
    #define  Referenziert                   (Statuswort & 0x4)
    //-----  Position Speicher  -----
    #define  Start_Pos_Speicher              H90
    long Start_Pos_Schmier;
    MOVLNK   Start_Pos;
    //-----  Störung  -----
    #define  Sammelstoerung_SET             _BitSet(Statuswort, 5)
    #define  Sammelstoerung_RESET           _BitClear(Statuswort, 5)
    #define  Sammelstoerung                 (Statuswort & 0x20)
    #define  MM_OVER_CURRENT                1
    #define  MM_DC_LINK                     7
    #define  MM_THERM_OV_OUT                11
    #define  MM_THERM_OV_MOT                84
    #define  MM_THERM_OV_BRAKE              85
    #define  MQX_IPOS_ILLOP                 10
    #define  MQX_SYSTEM_FAULT               91
    #define  FEHLER_RESET                   (DP_OUT.PO1 & 0b1000000)
    #define  STOERUNG_MM                    (mcd.PI1 & 0b100000)
    #define  TIMEOUT_MOVIMOT                0x05000002
    long MQX_Fehler, Fehler;
    //-----  Betriebsarten  -----
    #define  Referenzieren         1
    #define  Automatik             2
    #define  Hand_rechts           4
    #define  Hand_links            8
     
    /*=============================================
           Funktion Task2
    ===============================================*/
    Funktion_Task2()
      {
      //-----  Bei Servicebetrieb = "0", Feldbussignale an MQX  -----
      if(!Servicebetrieb)
        _GetSys(DP_OUT, GS_PODATA );
        _SetSys(SS_PIDATA, DP_IN );
      //-----  Freigabe  ----
      _BitMove(mcd.PO1, 6, DP_OUT.PO1, 6);
      if((DP_OUT.PO1 & 0x6) == 6)
        {
        _BitSet (mcd.PO1, 1);
        Freigabe = 1;
        }
        else
        {
        _BitClear (mcd.PO1, 1);
        mcd.PO3 = Schnellstop_Rampe;
        Freigabe = 0;
        }
      //-----  Rueckmeldungen an die SPS  -----
      if(Sammelstoerung)
        Schmier_T2 = Fehler << 8;
        else
        Schmier_T2 = Rueckgabe_betriebsart << 8;
      DP_IN.PI1 = Schmier_T2 | Statuswort;
      Schmier_T2 = ActPos_Mot * Divisor_Position / Faktor_Position;
      DP_IN.PI2 = Schmier_T2 >> 16;
      DP_IN.PI3 = Schmier_T2 & 0xFFFF;
      DP_IN.PI4 = IST_Speed;
      DP_IN.PI6 = mcd.PI2;
      DP_IN.PI7 = H483;
      //-----  Steuersignale an den MQX  -----
    //  StdOutpIPOS = DP_OUT.PO6;
      H481 = DP_OUT.PO7;
      //-----  Betriebsart auswählen  -----
      Betriebsart = (DP_OUT.PO1 & 0xFF00) >> 8;
      //-----  Allgemeine Verwaltung  -----
      Funktion_Status();
      Funktion_Endlage();
      Funktion_Start_Pos();
      Fehlerauswertung();
      }
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

  10. Folgender Benutzer sagt Danke zu rostiger Nagel für den nützlichen Beitrag:

    Sinix (31.03.2011)

  11. #10
    Registriert seit
    13.10.2007
    Beiträge
    12.032
    Danke
    2.787
    Erhielt 3.269 Danke für 2.157 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    ....teil 2

    Code:
    /*=============================================
        Funktion Task 1
    ===============================================*/
    Funktion_Task1()
      {
        Funktion_Hand_rechts();
        Funktion_Hand_links();
        Funktion_Automatik();
        Funktion_Referenzieren();
        STOP;
      }
    
    /*=============================================
                       Task2
    ===============================================*/
    Task2()
      {
      //Funktion_Task1();
      Funktion_Task2();
      }
    /*=============================================
                  Interrupt-Routine
    ===============================================*/
    Interrupt()
      {
        Funktion_Geschwindigkeit();
      }
    /*=============================================
       Hauptfunktion (IPOS-Eintrittsfunktion)
    ===============================================*/
    main()
      {
      /*-------------------------------------
                 Initialisierung
      --------------------------------------*/
      Statuswort = 0;
      Rueckgabe_betriebsart = 0;
      Servicebetrieb = 0;
      //-----  Initialisierung des Prozeßausgangsdatenpuffers  -----
      DP_OUT.BusType = 3;             // Bus Type: Feldbus
      DP_OUT.Len     = 10;            // Länge 10 Worte
      //-----  Initialisierung des Prozeßeingangsdatenpuffers  -----
      DP_IN.Len      = 10;            // Länge 6 Worte
      //-----  Struktur Verbindung MQX <-> Movilink initalisieren  -----
      mc.BusType     = ML_BT_S1;      // Komunikation via RS-485 zum Movilink
      mc.Address     = 1;             // Umrichteradresse
      mc.Format      = ML_FT_3;       // 3 Prozessdatenworte
      mc.PdPointer   = numof(mcd);    // Pointer auf Proßessdaten
      mc.ParaPointer = numof(mcpara); // Pointer auf Parameterdaten
      mcd.PO1        = 0;             // Mowimot Statuswort auf "0" setzen
      _MovCommDef(mc);                // Einrichten der Kommunikationsbeziehung
      _MovCommOn();                   // Start der zyklischen Kommunikation
      //-----  Struktur Verbindung Position_Speicher <-> Movilink initalisieren  -----
      Start_Pos.BusType  = ML_BT_S1;
      Start_Pos.Address  = 253;
      Start_Pos.Format   = ML_FT_PAR;
      Start_Pos.Service  = ML_S_WR;
      Start_Pos.Index    = 11090;
      Start_Pos.DPointer = numof(Start_Pos_Speicher);
      //-----  gesicherte Position zurückspeichern  -----
      H511 = Start_Pos_Speicher;
      if(H511 !=0)
        Referenziert_SET;
        else
        Referenziert_RESET;
      //-----  Task2 aktivieren  -----
      _SetTask2(T2_START, Task2);
      //-----  Interrupt-Routine aktivieren  -----
      _SetInterrupt(SI_TIMER0, Interrupt);     // Ermittlung der Geschwindigkeit
       T0_Reload = 50;
      //----- Schleife Task 1 aufrufen  -----
      while(1)
        {
         Funktion_Task1();
         //Funktion_Task2();
        }
      }
    - - -
    Wer als Werkzeug nur einen Hammer hat, sieht in jedem Problem einen Nagel.

Ähnliche Themen

  1. Drehmoment/Kraft in %: Umrechnung in N/Nm
    Von Zizou im Forum Antriebstechnik
    Antworten: 9
    Letzter Beitrag: 03.05.2011, 19:34
  2. Drehmoment Dämpfung
    Von Anton323 im Forum Antriebstechnik
    Antworten: 9
    Letzter Beitrag: 10.10.2010, 20:27
  3. Motorauslegung: Drehmoment und Leistungsberechnung
    Von iPDI im Forum Antriebstechnik
    Antworten: 2
    Letzter Beitrag: 16.08.2010, 21:55
  4. Drehmoment eines Motors
    Von Lipperlandstern im Forum Stammtisch
    Antworten: 3
    Letzter Beitrag: 12.01.2006, 10:07
  5. Drehmoment bei FU Motoren
    Von MRT im Forum Schaltschrankbau
    Antworten: 11
    Letzter Beitrag: 05.09.2005, 23:50

Lesezeichen

Berechtigungen

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