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

Ergebnis 1 bis 2 von 2

Thema: Berechnung von Teile pro Stunde u. Berechnung Tellerdrehzah

  1. #1
    Registriert seit
    02.09.2005
    Beiträge
    27
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute wenn ich nochmal nerven darf,

    habe noch 2, wirklich nur noch 2 Sachen die mir ein wenig Kopfschmerzen bereiten. Wäre mal wieder für eine Lösung sehr dankbar....

    Problem 1:

    Teile pro Stunde:
    Ich möchte mir die Teile pro Stunde ausrechnen lassen, dieser Wert soll sich immer wieder automatisch aktualisieren... Hätte den Gesamt teile Zähler VW4001. Komme hier echt garnicht klar.


    Problem 2:

    Teller Drehzahl:
    Ich habe an einem Motor einen Inkrementalgeber. Eine Umdrehung entsprechen 100 Inkremente... Naja würde mir aus dem ganz gerne die Geschwindigkeit berechnen... Woher nehm ich die Zeit???

    Also Leute, schreibt bitte auch wenn ihr mich für völlig bescheuert haltet...


    Danke danke

    Mfg
    Andre
    Zitieren Zitieren Berechnung von Teile pro Stunde u. Berechnung Tellerdrehzah  

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von andreHST
    Hallo Leute wenn ich nochmal nerven darf,
    Problem 1:

    Teile pro Stunde:
    Ich möchte mir die Teile pro Stunde ausrechnen lassen, dieser Wert soll sich immer wieder automatisch aktualisieren... Hätte den Gesamt teile Zähler VW4001. Komme hier echt garnicht klar.
    VW4001 ist nicht verboten, aber wenn ich es noch richtig weiß, sind in der 200er auch die Bytes durchnummeriert, so daß:
    VW4000 die Bytes VB4000 und VB4001 umfaßt
    VW4002 die Bytes VB4001 und VB4002,
    VW4001 die Bytes VB4002 und VB4000 und damit VW4000 oder VW4002 überlagern würde. Es ist also nicht verwendbar, wenn du anderswo VW4000 oder VW4002 verwendest!
    Andersherum ergibt die Parametrierung mit dem TD200-Assistent mit 50% Wahrscheinlichkeit ungerade Adressen. Dann ist es in Ordnung, da die Bytes davor und dahinter byteweise für einzelne Zeichen genutzt werden.

    Aktualisierung pro Stunde:

    a) Timer kann eine Stunde: //weiß ich jetzt nicht

    LD Tx // Stunde abgelaufen
    S Mx.y,1 //Neuberechnung durchführen

    b) Timer kann keine Stunde, aber 1 Minute:
    LD Tx // Minute abgelaufen
    +i +1,MB10 // MB10 zählt Minuten
    LDI= 60,MB10 // Stunde erreicht?
    MOVB 0,MB10 // von vorne
    S Mx.y,1 //Neuberechnung durchführen


    LD Mx.y
    call Neuberechnung

    Neuberechnung:
    MOVW VW4001,AC0 // Annahme Teilezähler läuft durch, Gesamtteile
    MOVW AC0,AC1
    -I VW4050,AC0 //VW4050 hat den Zählerstand vor einer Stunde
    MOVW AC0, VW4052 //VW4052 ist die Differenz, also die Teile pro Stunde
    MOVW AC1,VW4050 // speichere den Zählerstand für die nächste Berechnung
    R Mx.y,1 //Neuberechnung erledigt
    RET


    Häufigere Aktualisierung, z.B alle 10 Min, mit verminderter Genauigkeit:

    LD Tx // Zeit 10 abgelaufen
    S Mx.y,1 //Neuberechnung durchführen

    LD Mx.y
    call Neuberechnung

    Neuberechnung:
    MOVW VW4001,AC0 // Annahme Teilezähler läuft durch, Gesamtteile
    MOVW AC0,AC1
    -I VW4050,AC0 //VW4050 hat den Zählerstand vor 10 Minuten
    *I +6,AC0 //AC0 ist die Differenz, also die Teile pro 10 Min
    MOVW AC0, VW4052 //VW4052 ist jetzt 6*Teile pro 10 Min, also Teile Stunde
    MOVW AC1,VW4050 // speichere den Zählerstand für die nächste Berechnung
    R Mx.y,1 //Neuberechnung erledigt
    RET

    Häufigere Aktualisierung, z.B alle 10 Min, mit voller Genauigkeit:

    LD Tx // Zeit 10 abgelaufen
    S Mx.y,1 //Neuberechnung durchführen

    LD Mx.y
    call Neuberechnung

    Neuberechnung:
    MOVW VW4001,AC0 // Annahme Teilezähler läuft durch, Gesamtteile
    MOVW AC0,AC1
    -I VW4050,AC0 //VW4050 hat den Zählerstand vor 60 Minuten
    MOVW AC0, VW4052 //VW4052 ist jetzt Teile Stunde
    MOVW VW4054,VW4050 //VW4054 hat den Zählerstand vor 50 Minuten
    MOVW VW4056,VW4054 //VW4056 hat den Zählerstand vor 40 Minuten
    MOVW VW4058,VW4056 //VW4058 hat den Zählerstand vor 30 Minuten
    MOVW VW4060,VW4058 //VW4060 hat den Zählerstand vor 20 Minuten
    MOVW VW4062,VW4060 //VW4062 hat den Zählerstand vor 10 Minuten
    MOVW AC1,VW4062 // speichere den Zählerstand für die nächste Berechnung
    R Mx.y,1 //Neuberechnung erledigt
    RET

    Das funktioniert natürlich erst, wenn eine Stunde abgelaufen ist und alle Speicher einen Inhalt haben. Also könntest du in den ersten 50 Minuten die Differenz immer zu demjenigen Speicher bilden, der schon einen Inhalt hat. Das sind dann 5 verschiedenen Fälle...
    Außerdem mußt du in allen Beispielen die Speicher initialisieren (z.B) im Anlauf auf 0 setzen, sonst bekommst du bei der 1. Berechnung Müll. Ebenso mußt du etwas tun, wenn du den Gesamtteilezähler zurücksetzt oder wenn er überläuft.

    Problem 2:

    Teller Drehzahl:
    Ich habe an einem Motor einen Inkrementalgeber. Eine Umdrehung entsprechen 100 Inkremente... Naja würde mir aus dem ganz gerne die Geschwindigkeit berechnen... Woher nehm ich die Zeit???
    Die Zeit nimmst du am besten von einem Tinmer der einen Interrupt auslösen kann. Die Berechnung ähnelt der der Teile pro Stunde. Du kannst sie im Interrupt-Programm durchführen. Wird aber viel berechnet, so ist das nicht gut, da ein Interrupt-Programm so kurz wie möglich sein sollte. Das machst du dann so:

    Interrupt-Programm:
    MOV Zählerstand, ZwischenSpeicherZählerstand
    MOV Timer, ZwischenSpeicherZeit // höhere Genauigkeit, falls Interrupt-Programm verzögert aufgerufen wird
    S MerkerDasNeuGerechnetWerdenMuss,1
    RETI

    Und im Hauptprogramm:
    LD MerkerDasNeuGerechnetWerdenMuss
    Call Neuberechnung

    Unterprogramm Neuberechnung:
    MOVD ZwischenSpeicherZählerstand,AC0
    -D ZählerstandAlt, AC0
    ITD AC0,AC0
    DTR AC0,AC0
    MOVD ZwischenSpeicherZeit,AC1
    -D ZeitAlt, AC1
    ITD AC1,AC1
    DTR AC1,AC1
    /R AC1,AC0 //Impulse // Zeit = Frequenz
    * FaktorDrehzahl, AC0 // irgendein Faktor für Anzeige in U/min oder Meter/pro Jahr oder so
    MOVR AC0,Ergebnis
    MOVD ZwischenSpeicherZählerstand,ZählerstandAlt
    MOVD ZwischenSpeicherZeit,ZeitAlt // für die Differenzbildung beim nächsten mal
    R MerkerDasNeuGerechnetWerdenMuss,1 // erledigt
    RET

    Das Zähle des Inkrementalgebers erledigst du am besten mit einem der schnellen Zähler, die die 200 hat.
    Zitieren Zitieren Re: Berechnung von Teile pro Stunde u. Berechnung Tellerdreh  

Ähnliche Themen

  1. mittelwert berechnung
    Von candemirkorkmaz im Forum Sonstige Steuerungen
    Antworten: 1
    Letzter Beitrag: 27.07.2011, 13:11
  2. Berechnung im DB?
    Von motamas im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 14.06.2010, 11:43
  3. Berechnung??
    Von Prog22 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 12.04.2010, 18:39
  4. Berechnung
    Von SebastianLicht im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 05.06.2009, 11:35
  5. MPI CRC Berechnung
    Von Hannes im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 20.07.2007, 13:37

Lesezeichen

Berechtigungen

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