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

Results 1 to 4 of 4

Thread: S120 CU310-2PN Referenzieren

  1. #1
    Join Date
    20.05.2007
    Posts
    54
    Danke
    7
    Erhielt 0 Danke für 0 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    vielleicht hat jemand einen Tipp für mich...

    Ich habe einen Sinamics S120 mit CU320-2PN und SSI Sin/Cos Absolutwertgeber. Der wird als Einfachpositionierer betrieben und kommuniziert mittels Telegramm 111 mit einer S7-1500.
    Nach Spannungausfall (also auch täglichem Ausschalten der Anlage am Hauptschalter) wird das Bit11 (Referenzpunkt gesetzt) des ZSW1 nicht mehr mit "True" beschrieben und der FU positioniert daher auch nicht mehr. Den richtigen Positionswert zeigt er auch nach wie vor an.
    Ich muss jedesmal im Einrichtbetrieb den Antrieb in die 0° Position "tippen" und dann per Pos_STW2 Bit1 (Referenzpunkt setzen) auf 0° referenzieren.

    Es gibt doch bestimmt eine einfachere Möglichkeit dies zu tun... hoffe es kann mir jemand helfen.

    Danke vorab
    Reply With Quote Reply With Quote S120 CU310-2PN Referenzieren  

  2. #2
    Join Date
    26.11.2016
    Posts
    103
    Danke
    23
    Erhielt 14 Danke für 14 Beiträge

    Default

    Servus,

    Referenzierst du den Antrieb immer mit dem STW oder hast du auch schonmal über die Antriebssteuertafel eine Absolutwertgeberjustage gemacht ?
    Referenzpunkt setzen und Absolutwertgeberjustage sind 2 unterschiedliche Referenziermethoden.

    Mit freundlichen Grüßen
    Piit


    Gesendet von iPhone mit Tapatalk

  3. Folgender Benutzer sagt Danke zu Piit278 für den nützlichen Beitrag:

    zako (11.06.2019)

  4. #3
    Join Date
    05.04.2012
    Posts
    1,151
    Danke
    113
    Erhielt 278 Danke für 244 Beiträge

    Default

    -... da gibts auch einen recht komfortablen Baustein (egal ob Du eine S7-1200/1500 oder SINAMICS S/V/G mit Einfachpositionierer hast):
    https://support.industry.siemens.com...view/109760317

    Du hast nur inkrementell gesetzt. In den meisten Anwendungen möchte man aber schon eine Absolutwertgeberjustage (also nicht flüchtig abspeichern), wenn man schon einen Absolutwertgeber hat. Aber ist ja nicht verkehrt wenn man alle Möglichkeiten hat.

    Du hast ja auch eine S7-1500. Dann könntest Du auch mit Technologieobjekte arbeiten (also ohne EPos im Antrieb, dafür Sollwertinterpolation in der Steuerung). Aber das ist Geschmackssache. Das TO ist evtl. noch benutzerfreundlicher.
    Last edited by zako; 11.06.2019 at 22:54.

  5. #4
    Join Date
    27.05.2004
    Location
    Thüringen/Berlin
    Posts
    12,864
    Danke
    626
    Erhielt 2,867 Danke für 2,077 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich hab den FB_SINA_PARA Baustein von Siemens dazu genutzt. Der ist bei der Drive-Lib dabei. Den von Zako gennnten kannte ich noch gar nicht.
    Dazu habe ich das in einer kleinen Schrittkette laufen lassen. Ist rel. lang, aber nur, weil ich die Werte auch wieder zurücklese und kontrolliere.
    Wäre wohl nicht unbedingt nötig. Man kann auch einen Absolutwert vorgeben. Insgesamt kann man die Schrittkette als Vorlage nutzen, um beliebige Parameter im Servo aus der SPS heraus zu schreiben und zu lesen, die über das jeweilige Telegramm und EPOS nicht errreichbar sind.

    Hier mal die Schrittkette zur Orientierung.

    Code:
    REGION Parameter_Absolut_Set
    
    
    (* --- Schrittkette Absolutwert setzen und remanent im Servo abspeichern --- *)
    
    
    CASE #nSchrittketteParaSetAbs OF
      1:  // Startwerte setzen
        #FB_SINA_PARA_S_Instance.ReadWrite      := 1; //schreiben
        #FB_SINA_PARA_S_Instance.AxisNo         := #I_AxisNo_Starter;
        #FB_SINA_PARA_S_Instance.hardwareId     := #I_HWID_Sollwert_Slot;
        #FB_SINA_PARA_S_Instance.Parameter      := 2599;
        #FB_SINA_PARA_S_Instance.Index          := 0;
        #FB_SINA_PARA_S_Instance.ValueWrite2    := #I_SetAbsolutwertValue;
        #nSetAbsolut_ok := 0;
     
        #nSchrittketteParaSetAbs := 2;
        
      2:  // Auftrag starten
        #FB_SINA_PARA_S_Instance.Start  := True; 
    
    
        IF #FB_SINA_PARA_S_Instance.Busy
            AND NOT #FB_SINA_PARA_S_Instance.Done
        THEN 
            #nSchrittketteParaSetAbs := 3;
        END_IF;
     
      3:  // Auftrag fertig
        #FB_SINA_PARA_S_Instance.Start  := True; 
    
    
        IF NOT #FB_SINA_PARA_S_Instance.Busy
            AND #FB_SINA_PARA_S_Instance.Done
        THEN 
            #nSchrittketteParaSetAbs := 4; 
            #FB_SINA_PARA_S_Instance.Start  := False; 
        END_IF;
    
    
      4:  // Rückmeldung auslesen
        #FB_SINA_PARA_S_Instance.ReadWrite      := 0; //lesen
        #nSchrittketteParaSetAbs := 5;
    
    
      5:  // Rückmeldung auslesen starten
        #FB_SINA_PARA_S_Instance.Start  := True;
    
    
        IF #FB_SINA_PARA_S_Instance.Busy
            AND NOT #FB_SINA_PARA_S_Instance.Done
        THEN 
            #nSchrittketteParaSetAbs := 6;
        END_IF;
     
      6:  // Auftrag fertig
        #FB_SINA_PARA_S_Instance.Start  := True; 
    
    
        IF NOT #FB_SINA_PARA_S_Instance.Busy
            AND #FB_SINA_PARA_S_Instance.Done
        THEN 
            #nSchrittketteParaSetAbs := 11; 
            #FB_SINA_PARA_S_Instance.Start  := False; 
        END_IF;
    
    
      7: //Korrekter Wert zurückgelesen?
        IF (#FB_SINA_PARA_S_Instance.ValueRead2 =  #I_SetAbsolutwertValue) THEN
            #nSchrittketteParaSetAbs := 11;
            #nSetAbsolut_ok := 1;
        ELSE
            #nSchrittketteParaSetAbs := 4; 
        END_IF; 
    
    
      11:  // Startwerte setzen Geberpos setzen
        #FB_SINA_PARA_S_Instance.ReadWrite      := 1; //schreiben
        #FB_SINA_PARA_S_Instance.AxisNo         := #I_AxisNo_Starter;
        #FB_SINA_PARA_S_Instance.hardwareId     := #I_HWID_Sollwert_Slot;
        #FB_SINA_PARA_S_Instance.Parameter      := 2507;
        #FB_SINA_PARA_S_Instance.Index          := 0;
        #FB_SINA_PARA_S_Instance.ValueWrite1    := 2.0;
     
        #nSchrittketteParaSetAbs := 12;
        
      12:  // Auftrag starten
        #FB_SINA_PARA_S_Instance.Start  := True; 
    
    
        IF #FB_SINA_PARA_S_Instance.Busy
            AND NOT #FB_SINA_PARA_S_Instance.Done
        THEN 
            #nSchrittketteParaSetAbs := 13;
        END_IF;
     
      13:  // Auftrag fertig
        #FB_SINA_PARA_S_Instance.Start  := True; 
    
    
        IF NOT #FB_SINA_PARA_S_Instance.Busy
            AND #FB_SINA_PARA_S_Instance.Done
        THEN 
            #nSchrittketteParaSetAbs := 14; 
            #FB_SINA_PARA_S_Instance.Start  := False; 
        END_IF;
    
    
      14:  // Rückmeldung auslesen
        #FB_SINA_PARA_S_Instance.ReadWrite      := 0; //lesen
        #nSchrittketteParaSetAbs := 15;
    
    
      15:  // Rückmeldung auslesen starten
        #FB_SINA_PARA_S_Instance.Start  := True;
    
    
        IF #FB_SINA_PARA_S_Instance.Busy
            AND NOT #FB_SINA_PARA_S_Instance.Done
        THEN 
            #nSchrittketteParaSetAbs := 16;
        END_IF;
     
      16:  // Auftrag fertig
        #FB_SINA_PARA_S_Instance.Start  := True; 
    
    
        IF NOT #FB_SINA_PARA_S_Instance.Busy
            AND #FB_SINA_PARA_S_Instance.Done
        THEN 
            #nSchrittketteParaSetAbs := 21; 
            #FB_SINA_PARA_S_Instance.Start  := False; 
        END_IF;
    
    
      17: //Korrekter Wert zurückgelesen?
        IF (#FB_SINA_PARA_S_Instance.ValueRead1 =  3.0) THEN
            #nSchrittketteParaSetAbs := 21;
            #nSetAbsolut_ok := 2;
        ELSE
            #nSchrittketteParaSetAbs := 14; 
        END_IF; 
    
    
      21:  // Startwerte setzen RAM nach ROM kopieren
        #FB_SINA_PARA_S_Instance.ReadWrite      := 1; //schreiben
        #FB_SINA_PARA_S_Instance.AxisNo         := #I_AxisNo_Starter;
        #FB_SINA_PARA_S_Instance.hardwareId     := #I_HWID_Sollwert_Slot;
        #FB_SINA_PARA_S_Instance.Parameter      := 971;
        #FB_SINA_PARA_S_Instance.Index          := 0;
        #FB_SINA_PARA_S_Instance.ValueWrite1    := 1.0;
     
        #nSchrittketteParaSetAbs := 22;
        
      22:  // Auftrag starten
        #FB_SINA_PARA_S_Instance.Start  := True; 
    
    
        IF #FB_SINA_PARA_S_Instance.Busy
            AND NOT #FB_SINA_PARA_S_Instance.Done
        THEN 
            #nSchrittketteParaSetAbs := 23;
        END_IF;
     
      23:  // Auftrag fertig
        #FB_SINA_PARA_S_Instance.Start  := True; 
    
    
        IF NOT #FB_SINA_PARA_S_Instance.Busy
            AND #FB_SINA_PARA_S_Instance.Done
        THEN 
            #nSchrittketteParaSetAbs := 24; 
            #FB_SINA_PARA_S_Instance.Start  := False; 
        END_IF;
    
    
      24:  // Rückmeldung auslesen
        #FB_SINA_PARA_S_Instance.ReadWrite      := 0; //lesen
        #nSchrittketteParaSetAbs := 25;
    
    
      25:  // Rückmeldung auslesen starten
        #FB_SINA_PARA_S_Instance.Start  := True;
    
    
        IF #FB_SINA_PARA_S_Instance.Busy
            AND NOT #FB_SINA_PARA_S_Instance.Done
        THEN 
            #nSchrittketteParaSetAbs := 26;
        END_IF;
     
      26:  // Auftrag fertig
        #FB_SINA_PARA_S_Instance.Start  := True; 
    
    
        IF NOT #FB_SINA_PARA_S_Instance.Busy
            AND #FB_SINA_PARA_S_Instance.Done
        THEN 
            #nSchrittketteParaSetAbs := 27; 
            #FB_SINA_PARA_S_Instance.Start  := False;         
        END_IF;
    
    
    27: //Korrekter Wert zurückgelese?
        IF (#FB_SINA_PARA_S_Instance.ValueRead1 = 0.0) THEN
            #nSchrittketteParaSetAbs := 31;
             #nSetAbsolut_ok := 3;
        ELSE
            #nSchrittketteParaSetAbs := 24; 
        END_IF; 
    
    
      31:  // Ende
        #nSchrittketteParaSetAbs := 0;
        #IO_stAxis_CMD.set_absolut := False;
        #CMD_SetAbsoulut := False;
     
    ELSE  // Statement section ELSE
        ;
    END_CASE;
    
    
    END_REGION
    
    (* --- Aufruf Parametrierung Siemens -- *)
    #FB_SINA_PARA_S_Instance();
    
    
    (* --- Timeout Parameter übertragen --- *)
    #TON_ParameterTimeout(IN:=#CMD_SetAbsoulut,
                           PT:=t#10s);
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

Similar Threads

  1. Sicheres Referenzieren S120
    By Vetsrob in forum Antriebstechnik
    Replies: 8
    Last Post: 13.08.2018, 10:14
  2. Replies: 0
    Last Post: 25.04.2017, 16:33
  3. Replies: 5
    Last Post: 21.07.2016, 14:40
  4. Handbuch CU310-2 PN Sinamics S120
    By Zersch in forum Antriebstechnik
    Replies: 1
    Last Post: 23.04.2015, 14:11
  5. S120 CU310 Fehler an SPS?
    By SPSSchlumpf in forum Antriebstechnik
    Replies: 2
    Last Post: 15.10.2009, 10:25

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •