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

Ergebnis 1 bis 6 von 6

Thema: Azyklischer Parameterzugriff über FB 283 SINA_FB realisieren

  1. #1
    Registriert seit
    16.10.2012
    Beiträge
    743
    Danke
    51
    Erhielt 36 Danke für 29 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Guten Abend allesamt.

    Wollte mal folgendes fragen:
    Habe von ein Paar Wochen einen FB schreiben müssen, wo ein azyklischer Parameterzugriff auf den Antrieb über FB 283 stattfindet.
    Sprich, es werden Paramemeter in den DB geschrieben, danach wird geprüft, ob der Auftrag mit "done" quittiert wurde, danach nächster Parametersatz geschrieben, dann Ende.
    Zur Stunde lief das Ganze eigentlich (meine ich jedenfalls), aber gestern ist mir beim erneuten Test in der Anlage aufgefallen, daß dort wohl mist läuft, der Baustein "verläuft" sich irgendwie, es entsteht ein Kreislauf weil bestimmte Merker nicht zum richtigen Zeitpunkt zurückgesetzt werden, oder aus anderen Gründen. Ich habe den Code mal angehängt, vielleicht weiß einer Rat, wie man diese Routine geschickter implementieren könnte, oder was ich falsch mache ?

    Thanx im Voraus,

    Grüße DracoFB148.pdf
    Zitieren Zitieren Azyklischer Parameterzugriff über FB 283 SINA_FB realisieren  

  2. #2
    Avatar von Draco Malfoy
    Draco Malfoy ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.10.2012
    Beiträge
    743
    Danke
    51
    Erhielt 36 Danke für 29 Beiträge

    Standard

    Hat niemand schon mal soetwas implementieren müssen ?

  3. #3
    Registriert seit
    24.02.2014
    Ort
    Augsburg
    Beiträge
    12
    Danke
    0
    Erhielt 4 Danke für 2 Beiträge

    Standard

    Mit wieviele Sinamic-Achsen redest du denn azyklisch über den FB283?

  4. #4
    Avatar von Draco Malfoy
    Draco Malfoy ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.10.2012
    Beiträge
    743
    Danke
    51
    Erhielt 36 Danke für 29 Beiträge

    Lächeln

    Zitat Zitat von sternenreise Beitrag anzeigen
    Mit wieviele Sinamic-Achsen redest du denn azyklisch über den FB283?
    Jeweils nur mit einer zur selben Zeit. Mir ist später übrigens eingefallen daß die Timer möglicherweise woanders belegt sein könnten. Diese Erkenntnis setzte sich mit dem Auftauchen gewisser ... ähm... zusätzlicher Unterlagen durch. Daher wird das Problem des azyklischen Zugriffes jetzt mittlerweile über eine GRAPH Kette gelöst.

    Trotzdem wär cool zu hören, ob diese Schrittkette, so wie die ist, gut programmiert ist oder noch verbesserungswürdig ist. Wobei, ich, unabhängig von dieser möglicherweise eher theoretischen Fragestellung feststellen muss, daß GRAPH schon ne sinnvolle Erfindung ist, irgendwie.

    P.S. Die Bezeichnet der Timer sind nachträglich durch Symboltabellenimport hinzugekommen. Zur Tatzeit schienen die Timer, nach Informationen aus der Kreuzreferenztabelle jedenfalls, nicht belegt worden zu sein.
    Geändert von Draco Malfoy (07.04.2014 um 18:36 Uhr)

  5. #5
    Registriert seit
    24.02.2014
    Ort
    Augsburg
    Beiträge
    12
    Danke
    0
    Erhielt 4 Danke für 2 Beiträge

    Standard

    Ich habe das in SCL gelöst:
    Code:
    #Acycle_Busy := (NOT #AcycleReady) OR #Basis.single.busy;
    
    // Single
    IF (NOT #Acycle_Busy) THEN                  // Wenn bereit
      
      // Ram to Rom
      IF #HMI.ACycle.RamToRom THEN
        #HMI.ACycle.RamToRom := 0;
        
        #Basis.single.tasksi := 971;          // Antriebsobjekt Parameter speichern
        #Basis.single.Ind    := 0;
        #Basis.single.Data   := 1;
        #Basis.single.WR     := 1;  
      END_IF;
    
    END_IF;
    
    // Multi 
    IF (NOT #InitDone) AND (NOT #Acycle_Busy) THEN                  // Wenn bereit
      IF (NOT #HMI.ACycle.InitDone_Flag) THEN
       
        #Basis.single.tasksi := 30010;          // Bis zu 10 beliebige Parameter lesen/schreiben
        #Basis.single.Ind    := 1;              // gibt den ersten zu bearbeitenden chain_PNU_xy an
        #Basis.single.Data   := 5;              // gibt den letzten zu bearbeitenden chain_PNU_xy an
        
        // Wert 1
        #Basis.chain.chain_PNU_1  := 2504;      // Motorumdrehungen
        #Basis.chain.chain_IND_1  := 0;
        #Basis.chain.chain_Data_1 := 0;
        // Wert 2
        #Basis.chain.chain_PNU_2  := 2505;      // Lastumdrehungen
        #Basis.chain.chain_IND_2  := 0;
        #Basis.chain.chain_Data_2 := 0;
        // Wert 3
        #Basis.chain.chain_PNU_3  := 2506;      // LU pro Lastumdrehung
        #Basis.chain.chain_IND_3  := 0;
        #Basis.chain.chain_Data_3 := 0;
        // Wert 5  
        #Basis.chain.chain_PNU_5  := 2000;      // n Motor Bezugsdrehzahl
        #Basis.chain.chain_IND_5  := 0;
        #Basis.chain.chain_Data_5 := 0;  
        
        #Basis.single.RD       := 1;              // Lesen anstoßen
        #HMI.ACycle.InitDone_Flag := 1;              // Verarbeitungsmerker
      ELSE IF #Basis.single.Done THEN
          // Waiting for Response
          // Wert 1 + 2
          #Motor.i_Getriebe := DINT_TO_REAL(#Basis.chain.chain_Data_1) / DINT_TO_REAL(#Basis.chain.chain_Data_2); // Motorumdrehungen / Lastumdrehungen
          // Wert 3
          #Motor.LU_rotation := #Basis.chain.chain_Data_3; // LU pro Lastumdrehung
          // Wert 5 
          #DintToReal :=  #Basis.chain.chain_Data_5;        // wird als REal übertragen und als DINT im DB abgelegt
          #Motor.n_Motor := REAL_TO_DINT(#OutDintToReal);   // n Motor Bezugsdrehzahl
          
          #InitDone              := 1;
          #HMI.ACycle.InitDone_Flag := 0;              // Verarbeitungsmerker 
          END_IF;
      END_IF;    
    
    END_IF;

  6. Folgender Benutzer sagt Danke zu sternenreise für den nützlichen Beitrag:

    Draco Malfoy (08.04.2014)

  7. #6
    Avatar von Draco Malfoy
    Draco Malfoy ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    16.10.2012
    Beiträge
    743
    Danke
    51
    Erhielt 36 Danke für 29 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    @Sternenriese: Vielen Dank für den Code!! Hast Du den schon mal getestet, funktioniert anständig ?

Ähnliche Themen

  1. Parameterzugriff auf FU über Profibus
    Von cravate im Forum Antriebstechnik
    Antworten: 4
    Letzter Beitrag: 28.03.2013, 12:49
  2. Expotentielle Funktion über Logo realisieren
    Von Blabla33 im Forum Programmierstrategien
    Antworten: 3
    Letzter Beitrag: 27.12.2012, 15:42
  3. Suche Quellcode für Sinamic FB 283
    Von Waldi1954 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 27.09.2010, 11:11
  4. Watchog realisieren?
    Von ottopaul im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 18.04.2008, 06:31
  5. Antworten: 2
    Letzter Beitrag: 05.10.2006, 14:01

Lesezeichen

Berechtigungen

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