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

Seite 7 von 8 ErsteErste ... 5678 LetzteLetzte
Ergebnis 61 bis 70 von 75

Thema: Drehzahlmessung

  1. #61
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.718
    Danke
    398
    Erhielt 2.400 Danke für 2.000 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
    //Bedingung für weiteren Verlauf
          U     #Drehzahlsensor; 
          U     #Flankenmerker; 
          SPB   M001;
    Das hat nicht funktioniert, weill der Sprung nur ausgeführt wird, wenn INI da und FM da. sonst wird nicht gesprungen.
    Du willst aber eigentlich Springen wenn INI nicht da oder FM da. Das war dann auch mein Vorschlag ...

  2. Folgender Benutzer sagt Danke zu Larry Laffer für den nützlichen Beitrag:

    stift (08.04.2008)

  3. #62
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    das hier ist vielleicht noch interessant für dich zu wissen:

    Der Flankenoperand FO hat in Step7® ein speicherndes Verhalten. Aus diesem Grund kann der Flankenoperand nur in Merkerbits, in Datenbits von Globaldatenbausteinen oder in statische Lokaldatenbits gespeichert werden.

    Eine Ausnahme bilden Flankenoperanden die im Organisationsbaustein OB1 programmiert sind. Hier können Flankenoperanden in temporären Lokaldatenbits gespeichert werden. In Funktionsbausteinen FB und in Funktionen FC erzeugt die Speicherung eines Flankenoperanden in temporären Lokaldatenbits ein Fehlverhalten des Anwenderprogrammes.
    Quelle
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  4. Folgender Benutzer sagt Danke zu vierlagig für den nützlichen Beitrag:

    stift (08.04.2008)

  5. #63
    Registriert seit
    15.01.2008
    Ort
    München
    Beiträge
    256
    Danke
    76
    Erhielt 17 Danke für 14 Beiträge

    Standard

    hi, ich hab meine zweipunktregelung gerade zum laufen gebracht.
    1. habe ich auf die momentane zeit für umdrehung 20 addiert und 20 abgezogen und die ergebnisse dann wieder mit der momentanen zeit verglichen. Jetzt speichere ich immer ne vergleichswert vom letzten zyklus.
    2. hat meine bitverknüpfung überhaupt nicht gepasst.

    Hier mal meine lösung, falls es euch interessiert:
    Code:
    FUNCTION_BLOCK "Drehzahlerrechnung"
    TITLE =
    VERSION : 0.1
    
    VAR_INPUT
      Motor_Ein : BOOL ; 
      Zykluszeit : INT ; 
      Drehzahlsensor : BOOL ; 
    END_VAR
    VAR_OUTPUT
      Zeit_fuer_Umdrehung : REAL ; 
      Momentandrehzahl : INT ; 
    END_VAR
    VAR
      Zwischenspeicher : INT ; 
      Vergleichswert : REAL ; 
      unterer_Schaltpunkt : REAL ; 
      oberer_Schaltpunkt : REAL ; 
      Flankenmerker : BOOL ; 
      Zeit_f_Umdrehung : REAL ; 
    END_VAR
    BEGIN
    NETWORK
    TITLE =Stoppen der Zeit für eine Umdrehung
    
          U     #Motor_Ein; 
          SPBN  M002; 
    
    //Aufaddieren der Zykluszeit von 0b1 zum erhalten der Zeit für eine halbe Umdrehung in ms
          L     #Zykluszeit; 
          L     #Zwischenspeicher; 
          +I    ; 
          T     #Zwischenspeicher; 
    
    //Bedingung für weiteren Verlauf
          UN    #Drehzahlsensor; 
          O     #Flankenmerker; 
          SPB   M001; 
    
    //Berechnen der Zeit für Umdrehung in s (Datentyp real)
          L     #Zwischenspeicher; 
          L     2; 
          *I    ; 
          ITD   ; 
          DTR   ; 
          L     1.000000e+003; 
          /R    ; 
          T     #Zeit_f_Umdrehung; 
    
    //Schmitt-Trigger zum Stabilisieren aller folgenden Rechenwerte
          L     #Zeit_f_Umdrehung; 
          L     2.000000e-002; 
          +R    ; 
          T     #oberer_Schaltpunkt; 
          L     #Zeit_f_Umdrehung; 
          L     2.000000e-002; 
          -R    ; 
          T     #unterer_Schaltpunkt; 
          U(    ; 
          U(    ; 
          L     #oberer_Schaltpunkt; 
          L     #Vergleichswert; 
          >R    ; 
          )     ; 
          NOT   ; 
          O(    ; 
          U(    ; 
          L     #unterer_Schaltpunkt; 
          L     #Vergleichswert; 
          <R    ; 
          )     ; 
          NOT   ; 
          )     ; 
          )     ; 
          SPBNB M004; 
          L     #Zeit_f_Umdrehung; 
          T     #Zeit_fuer_Umdrehung; 
          T     #Vergleichswert; 
    
    //Rücksetzten des Zwischenspeichers
    M004: L     0; 
          T     #Zwischenspeicher; 
    M001: U     "Sensor-Drehzahl"; 
          =     #Flankenmerker; 
          LOOP  M003; 
    
    M002: L     0; 
          T     #Zwischenspeicher; 
          T     #Vergleichswert; 
          T     #Zeit_fuer_Umdrehung; 
          T     #Momentandrehzahl; 
    M003: NOP   0; 
    NETWORK
    TITLE =Berechnen der Drehzahl
    
          L     6.000000e+001; 
          L     #Zeit_fuer_Umdrehung; 
          /R    ; 
          RND   ; 
          DTB   ; 
          BTI   ; 
          T     #Momentandrehzahl; 
    
    END_FUNCTION_BLOCK

  6. #64
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    es gibt eine stelle in deinem code, die mir nicht gefällt

    Code:
    U    "Sensor-Drehzahl"
    es handelt sich dabei ja offensichtlich um eine globale variable mit symbol...

    nachteil: du kannst deinen baustein nicht wirklich in eine bibliothek ablegen und für andere anwendungen wieder auspacken, also nicht ohne zu prüfen ob "Sensor-Drehzahl" in dem anderen programm der globalen adresse in deinem aktuellen programm entspricht und diese ggf. anzupassen ... auch kannst du so nicht mehrere drehzahlmessungen in einer CPU realisieren
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  7. Folgender Benutzer sagt Danke zu vierlagig für den nützlichen Beitrag:

    stift (09.04.2008)

  8. #65
    Registriert seit
    15.01.2008
    Ort
    München
    Beiträge
    256
    Danke
    76
    Erhielt 17 Danke für 14 Beiträge

    Standard

    hast recht
    werd ich ändern

  9. #66
    Registriert seit
    15.01.2008
    Ort
    München
    Beiträge
    256
    Danke
    76
    Erhielt 17 Danke für 14 Beiträge

    Standard

    hi, ich brauch noch ne kleine ergänzung, komm aber nicht klar.
    ich möchte in meinem fb sowas wie ein statusbit, als ausgang der 1 ist, wenn eine änderung erfolgt, also der zweipunktregler 1 ist, und meine neue zeit_fuer_umdrehung schiebt. Drum hab ich folgendes ergänzt:

    Code:
     U(    ; 
          U(    ; 
          L     #oberer_Schaltpunkt; 
          L     #Vergleichswert; 
          >R    ; 
          )     ; 
          NOT   ; 
          O(    ; 
          U(    ; 
          L     #unterer_Schaltpunkt; 
          L     #Vergleichswert; 
          <R    ; 
          )     ; 
          NOT   ; 
          )     ; 
          )     ; 
          SPBNB M004; 
     
          FP   #HM_Aenderung
         =    #Aenderung
          L     #Zeit_f_Umdrehung; 
          T     #Zeit_fuer_Umdrehung; 
          T     #Vergleichswert; 
     
    //Rücksetzten des Zwischenspeichers
    M004: L     0; 
          T     #Zwischenspeicher; 
    M001: U     "Sensor-Drehzahl"; 
          =     #Flankenmerker; 
          LOOP  M003; 
     
    M002: L     0; 
          T     #Zwischenspeicher; 
          T     #Vergleichswert; 
          T     #Zeit_fuer_Umdrehung; 
          T     #Momentandrehzahl; 
    M003: NOP   0;
    Allerdings geht meine CPU jetzt wegen eines bereichslängenfehlers immer in stop. Wie würdet ihr mein problem lösen?

  10. #67
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    hast du den aufrufenden baustein auch nochmal hochgeladen? und den instanz-db? schließlich hast du ja eine lokaldaten-änderung vorgenommen...
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  11. #68
    Registriert seit
    15.01.2008
    Ort
    München
    Beiträge
    256
    Danke
    76
    Erhielt 17 Danke für 14 Beiträge

    Standard

    oops, ich hab in meinem fc den aufruf zum fb zwar geändert, aber dadurch dass ich meinen fb noch mal leicht umstrukturiert habe, hat er den aufruf wohl nicht akzeptiert.
    Leider funktioniert mein programm aber auch nicht.
    #Aenderung ist immer 0 und geht nie auf 1

  12. #69
    Registriert seit
    08.08.2007
    Ort
    Dresden
    Beiträge
    9.648
    Danke
    1.059
    Erhielt 2.046 Danke für 1.627 Beiträge

    Standard

    Zitat Zitat von stift Beitrag anzeigen
    #Aenderung ist immer 0 und geht nie auf 1
    so wie du es programmiert hast ist #aenderung auch nur einen zyklus aktiv
    [SIGNATUR]
    Ironie setzt Intelligenz beim Empfänger voraus.
    [/SIGNATUR]

  13. #70
    Registriert seit
    15.01.2008
    Ort
    München
    Beiträge
    256
    Danke
    76
    Erhielt 17 Danke für 14 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    und wie sollte ich das dann lösen?
    ich bin schon seit 9 uhr am kämpfen. Leider fällt mir keine andere lösung ein. Wenn mein zweipunktregle auslöst, hab ich doch ne flanke... ahh, das problem liegt darin dass mein #HM_Aenderung einmal auf 1 geht und dann nie mehr auf null gehen kann oder. Desshalb kann er auch keine positive flanke registrieren oder?
    Wie kann ich denn dann dieses problem lösen?

    ....
    FB #Aenderung
    = #Aenderung ????

Ähnliche Themen

  1. Drehzahlmessung mit SPS
    Von kleiner_thomas im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 02.10.2011, 17:47
  2. Drehzahlmessung mit Fm-3501
    Von awe_wolfsburg im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 28.06.2010, 15:07
  3. Drehzahlmessung mit normalen DI??
    Von s7-spsler im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 12.10.2009, 21:55
  4. Drehzahlmessung über Zähler
    Von Nordkurve im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 03.04.2007, 17:32
  5. Drehzahlmessung mit S7-300
    Von VyRuz im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 08.11.2005, 07:34

Lesezeichen

Berechtigungen

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