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

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 36

Thema: Mittelwertbildung SIWAREX U

  1. #1
    Registriert seit
    18.12.2008
    Beiträge
    255
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi Ihr,

    ich glaube ich brauche etwas Hilfe.

    Ich habe hier eine Wägezelle, die an einem Siwarex U angeschlossen ist.

    Zum Eintrag des Gewichts in einen Datenbaustein muss ja die SFC59 aufgerufen werden - das klappt soweit auch gut!


    Nun soll aber eine Mittelwertbildung aus drei hintereinander folgenden Wiegungen erfolgen.

    Dazu habe ich über Timer 3x eine Wartezeit und 3x einen Wiegestart programmiert.

    Jetzt rufe ich die SFC59 über die 3x Wiegestarts 3x auf - also:

    Code:
           U     "1. Wiegestart"
           S     M     39.6
           CALL  "RD_REC"                               // SFC59
           REQ    :=M39.6
           IOID   :=B#16#54
           LADDR  :=W#16#12A
           RECNUM :=B#16#1F
           RET_VAL:=MW156
           BUSY   :=M39.7
           RECORD :=P#DB6.DBX0.0 BYTE 10
          UN    M     39.7
          R     M     39.6
    usw.

    Ich könnte dann die drei Messwerte im DB6 addieren und durch 3 teilen und hätte meinen Mittelwert.

    Frage:

    Das Problem hierbei ist jedoch der Zeiger hinter RECORD - dieser Eintrag müsste ja bei jedem der drei Aufrufe anders sein, geht das?

    Oder gibt es einen besseren Weg?

    Vielen Dank!
    Geändert von petzi (08.06.2010 um 14:43 Uhr)
    Grüße
    petzi
    Zitieren Zitieren Mittelwertbildung SIWAREX U  

  2. #2
    Registriert seit
    25.08.2006
    Beiträge
    247
    Danke
    36
    Erhielt 64 Danke für 58 Beiträge

    Standard

    Das Problem hierbei ist jedoch der Zeiger hinter RECORD - dieser Eintrag müsste ja bei jedem der drei Aufrufe anders sein, geht das?
    Sicher geht das

    Code:
           U     "1. Wiegestart"
           S     M     39.0
           CALL  "RD_REC"                               // SFC59
           REQ    :=M39.0
           IOID   :=B#16#54
           LADDR  :=W#16#12A
           RECNUM :=B#16#1F
           RET_VAL:=MW156
           BUSY   :=M39.1
           RECORD :=P#DB6.DBX0.0 BYTE 10
          UN    M     39.1
          R     M     39.0
    
           U     "2. Wiegestart"
           S     M     39.2
           CALL  "RD_REC"                               // SFC59
           REQ    :=M39.2
           IOID   :=B#16#54
           LADDR  :=W#16#12A
           RECNUM :=B#16#1F
           RET_VAL:=MW156
           BUSY   :=M39.3
           RECORD :=P#DB6.DBX10.0 BYTE 10
          UN    M     39.3
          R     M     39.2
    
           U     "3. Wiegestart"
           S     M     39.4
           CALL  "RD_REC"                               // SFC59
           REQ    :=M39.4
           IOID   :=B#16#54
           LADDR  :=W#16#12A
           RECNUM :=B#16#1F
           RET_VAL:=MW156
           BUSY   :=M39.5
           RECORD :=P#DB6.DBX20.0 BYTE 10
          UN    M     39.5
          R     M     39.4
    Mit der negativen Flanke vom 3. BUSY (M39.5) addierste dann deine
    3 Messwerte und bildest deinen Mittelwert.

    Geht aber bestimmt auch eleganter

    Pylades

  3. #3
    petzi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.12.2008
    Beiträge
    255
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Danke für deine Antwort pylades, ja ok - so geht es!

    Ich dachte halt eine FC1 zu basteln, in der die SFC59 enthalten ist.

    Und dann:

    Code:
    U "1. Wiegestart"
    SPB M001
     
    U "2. Wiegestart"
    SPB M002
     
    U "3. Wiegestart"
    SPB M003
     
    M001: Call FC1
    BEA
     
    M002: Call FC1
    BEA
     
    M003: Call FC1
    Und für den Wert RECORD halt jedesmal eine andere Deklaration verwenden...

    So geht es wohl nicht, oder?
    Geändert von petzi (08.06.2010 um 15:00 Uhr)
    Grüße
    petzi

  4. #4
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Warum willst du denn alles speichern.
    Nur im DB6.DBW0 steht einzig und alleine das Gewicht.
    Die Siwarex kannst du normal mitlaufen lassen.
    Beim Wiegen speichert du halt die drei Werte in einem Db ab.

  5. #5
    Registriert seit
    23.04.2009
    Ort
    Allgäu
    Beiträge
    3.042
    Danke
    241
    Erhielt 863 Danke für 617 Beiträge

    Standard

    Zitat Zitat von petzi Beitrag anzeigen
    Und für den Wert RECORD halt jedesmal eine andere Deklaration verwenden...
    Das hat ja pylades gemacht, immer um 10 Byte erhöht.

    Zitat Zitat von petzi Beitrag anzeigen
    Ich dachte halt eine FC1 zu basteln, in der die SFC59 enthalten ist.

    So geht es wohl nicht, oder?
    Doch geht auch:

    Code:
         U "1. Wiegestart"
         SPB M001
     
         U "2. Wiegestart"
         SPB M002
     
         U "3. Wiegestart"
         SPB M003
      L 0
      T Zwischenergebnis
     
    M001: Call FC1
      UN M39.7
      SPB End1 // Warten auf Busy Signal 
      L Zwischenergebnis
      L DB6.DBW 0
      +I
      T Zwischenergebnis
    End1:NOP 0
         BEA
     
    M002: Call FC1
      UN M39.7
      SPB End2 // Warten auf Busy Signal 
      L Zwischenergebnis
      L DB6.DBW 0
      +I
      T Zwischenergebnis
    End2:NOP 0
         BEA
     
    M003: Call FC1
      UN M39.7
      SPB End3 // Warten auf Busy Signal 
      L Zwischenergebnis
      L DB6.DBW 0
      +I
      T Zwischenergebnis
      L 3
      /I
      T Mittelwert
    End3:NOP 0
    Vorraussetzung ist natürlich das dass Busy Signal nur ein Zyklus ansteht, aber das ist glaube ich auch so.
    Sind aber glaube Doppelwörter, also die I & W werden D
    Gruß
    Paule
    ----------------------------------------------------------------------------
    > manchmal verliert man und manchmal gewinnen die anderen <

  6. #6
    petzi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.12.2008
    Beiträge
    255
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Zitat Zitat von jabba Beitrag anzeigen
    Warum willst du denn alles speichern.
    Nur im DB6.DBW0 steht einzig und alleine das Gewicht.
    Die Siwarex kannst du normal mitlaufen lassen.
    Beim Wiegen speichert du halt die drei Werte in einem Db ab.
    Hallo jabba,

    glaube das ist mein Problem... wie kann ich beim Wiegen denn bestimmen, wo die Werte abgespeichert werden sollen? Wird nur ein Mal gewogen, so wird durch die SFC59 das Gewicht doch ín den DB6.DBW0 geschrieben. Wenn nun dreimal gewogen werden soll, so muss doch die SFC59 auch drei Mal aktiviert werden, oder verstehe ich das falsch?

    @Paule: Ja ok, danke. Nicht so elegant, oder? Gibt es auch eine "schönere" Alternative für mein Vorhaben?
    Geändert von petzi (08.06.2010 um 20:08 Uhr)
    Grüße
    petzi

  7. #7
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Ich verwende das Beispiel von Siemens, und da wird solange nicht geschrieben wird z.B. für Tara immer gelesen. Somit hat man immer den aktuellen Istwert der Waage im DBW0 als Integer liegen.
    Wo geht denn dann das Ergeniss aus dem db6 hin, oder fängst du erst an mit der Siwarex?

    Code:
          U     "Wiegen1"
          FP    M      xx.0
          SPBNB _00e
          L     DB6.DBW    0  // Istwert
          T     DB7.DBW    0  // Speicher 1
    _00e: NOP   0

  8. #8
    petzi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.12.2008
    Beiträge
    255
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Ja, fange erst an mit der Siwarex.

    Habe mir halt über Timer drei Merker gebastelt, die die drei Wiegungen anstoßen sollen.

    Dazu muss doch drei Mal die SFC59 aufgerufen werden, oder nicht? Und unter RECORD steht ja in der SFC59 der Ablageort für das Gewicht.

    NUR: Dann wird mein Ergebnis der ersten Wiegung ja von der zweiten überschrieben, usw.
    Geändert von petzi (08.06.2010 um 20:16 Uhr)
    Grüße
    petzi

  9. #9
    Registriert seit
    04.02.2007
    Beiträge
    2.544
    Danke
    167
    Erhielt 731 Danke für 528 Beiträge

    Standard

    Im Prinzip musst du erst einmal festlegen , ob du den Wert der Waage so wie du vorhast nur bei Bedarf abholst, oder so wie ich es mache immer.

    Wenn man später den Istwert noch anzeigen will, z.B. auf einem Panel sollte man den Wert zyklisch abholen.

    Danach ist es eigentlich ganz einfach. Lege einen DB an mit den drei Messwerten und dem Mittelwert.

    Wenn die erste Messung erfolgen soll diese Abfragen, einen Puls bilden und aus dem DB6 den DBW0 in den DB7 DBW0 schieben.
    Bei der zweiten Messung den DB6.DBW0 nach DB7.DBW2 usw.
    Wenn alle durch sind, den Mittelwert berechnen.

  10. #10
    petzi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.12.2008
    Beiträge
    255
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke jabba,

    was mir aber trotz Allem noch immer nicht klar ist:

    1) Die drei Merker "1.Wiegestart", "2.Wiegestart" und "3.Wiegestart" müssen doch jedesmal die SFC59 aufrufen, oder nicht?

    2) Und falls ja, dann muss am Ende der SFC59 doch immer das Schieben aus dem DB6.DBW0 in einen anderen DB stehen, oder?

    3) Wie kann ich den Wert zyklisch abholen?

    Der Mittelwert soll dann am Panel angezeigt werden!

    Danke für die Hilfe...
    Geändert von petzi (08.06.2010 um 21:00 Uhr)
    Grüße
    petzi

Ähnliche Themen

  1. Mittelwertbildung
    Von pinolino im Forum Simatic
    Antworten: 45
    Letzter Beitrag: 26.01.2010, 20:06
  2. Gleitende Mittelwertbildung
    Von SPS_NEU im Forum Simatic
    Antworten: 21
    Letzter Beitrag: 18.09.2009, 17:20
  3. Variable Mittelwertbildung
    Von Farinin im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 03.04.2009, 06:05
  4. Mittelwertbildung S5-95U
    Von demo im Forum Simatic
    Antworten: 13
    Letzter Beitrag: 28.08.2007, 21:10
  5. Mittelwertbildung
    Von Servomaster im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 18.10.2005, 06:42

Lesezeichen

Berechtigungen

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