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

Ergebnis 1 bis 6 von 6

Thema: S7 200 Drehzahl errechnen

  1. #1
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 276 Danke für 86 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi,

    ich möchte in einem Baustein die Zeit zwischen zwei Impulsen messen. Zum Bsp. um eine Drehzahl oder einen Durchfluß zu errechnen. Wie würdet ihr das angehen?

    Ich habe das unter einer S7 300 schon realisiert mit einem IEC-TON. Bei dem gibts ja die ms am ET Ausgang.

    Für Anregungen bin ich dankbar

    pt
    Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.

    Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.
    Zitieren Zitieren S7 200 Drehzahl errechnen  

  2. #2
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Du kannst die Milisekunden lesen mittels:
    MOV MWx,Ty.

    Den Timer würde ich nicht starten, sondern mit einer längeren Zeitdauer durchlaufen lassen.
    Wenn ich mich richtig erinnere:

    U SM 0.0 // imer ein
    TONR Tx,10000 // Timer ein mit reload, geht bei 10000
    // wieder auf 0

    Bei einer Flanke, besser bei einem Interrupt, lädtst du den Timerstand und ziehst den vorigen davon ab. Wenn das Ergebnis negativ ist, war ein Überlauf dazwischen und du addierst 10000.
    Dann speicherst du den Timerwert als neuen vorigen.

    Schnelle Impulse zählst du besser mittels der integrierten high speed counter.

  3. #3
    plc_tippser ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 276 Danke für 86 Beiträge

    Standard

    Hi Zottel,

    den Timer wollte ich nicht starten sondern laufen lassen, bei pos. Flanke des Messzykluses den Wert auf T_Start speichern, bei der negativen den T_Start vom aktuellen abziehen.

    MOV MWxx, TY werde ich mir angucken.

    Bis denn, pt
    Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.

    Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.

  4. #4
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Sorry,
    es muss heißen:

    MOVW Tx,MWy

    Habe das gestern so aus dem Gedächtnis hingeschrieben, nach dem ich ein paar Stunden Atmel programmiert habe...

    Das Durchlaufen lassen des Timers habe ich vorgeschlagen, da ich vermute, daß es einfacher zusammen mit Interrupts zu handhaben ist. Generell ist so eine Zeitmessung besser mit Interrupts zu handhaben, da sonst Start und Ende der Periodendauer mit einer Unsicherheit von einer Zykluszeit behaftet sind.

    Hauptprogramm:
    LD SM0.0
    TONR Tx,+10000

    der Tiner läuft jetzt immer und auch über die 10000 hinaus. Er stoppt allerdings beim erreichbaren Höchstwert von 32767, was mir gestern nicht bewußt war

    In einem Interruptprogramm kannst du nun schreiben:
    L SM0.0
    MOVW Tx,MWy // erreichten Wert lesen
    R Tx,1 // Timer zurücksetzen

    Auf diese Weise sparst du das Abziehen des alten Wertes. Allerdings findet das Rücksetzen eben um die Bearbeitungszeit der MOV-Instruktion zu spät statt. Das wäre nicht so schlimm, schlimm wirds, wenn ein Interrupt zwischen MOVW und R stattfindet.
    Abhilfe:
    Entweder Interrupts vor MOV sperren und nach R freigeben oder, wenn du dir das vom Timing her nicht leisten kannst, vor dem MOV einen Merker löschen, diesen Merker in allen
    anderen Interruptroutinen setzen.
    Der Merker hat dann die Bedeutung: Interrupt aufgetreten. Merker nach R testen und in diesem Fall das Ergebnis verwerfen.

  5. #5
    plc_tippser ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    07.05.2004
    Ort
    Campbelltown
    Beiträge
    2.437
    Danke
    131
    Erhielt 276 Danke für 86 Beiträge

    Standard

    jetzt habe ich mir ein Bein ausgerissen und diese Mist200er in IEC programmiert, damit ich diese sch... Timer habe und nu kommt mir der Vogel um die Ecke und teilt mir mit, dass die Messzelle auch noch einen analogen Ausgang hat, der mir die Durchflußmenge angibt.

    warum

    pt
    Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.

    Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.

  6. #6
    Registriert seit
    07.07.2004
    Beiträge
    3.285
    Danke
    38
    Erhielt 584 Danke für 382 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo pt,
    warum
    ist zwar jetzt offtopic, aber ein Klick und Du weisst warum
    http://www.fen-net.de/norbert.arnold.../j_murphy.html
    Gruss
    Question_mark

Ähnliche Themen

  1. Integral in SCL errechnen
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 14
    Letzter Beitrag: 15.01.2011, 16:30
  2. Hubzahl errechnen
    Von bastler im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 03.09.2009, 22:59
  3. Bandgeschwindigkeit errechnen
    Von poppycock im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 12.01.2009, 12:35
  4. Drehzahl errechnen
    Von MSB im Forum Programmierstrategien
    Antworten: 1
    Letzter Beitrag: 18.10.2008, 08:56
  5. Produktionsleistung errechnen S7/300
    Von digga im Forum Simatic
    Antworten: 16
    Letzter Beitrag: 22.12.2006, 06:44

Lesezeichen

Berechtigungen

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