Step 7 Messwerte in Datenbaustein speichern.

Stoph

Level-1
Beiträge
9
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,
Ich habe da ein Problem und komme leider nicht weiter.
Ich möchte einen Messwert aufnehmen und diesen zu 2 unterschiedlichen Zeiten in einen DB abspeichern und anschließend diese auswerten in der SPS. Es gibt da noch eine Schwierigkeit es soll gewährleistet sein, dass die Anzahl der Messwerte von 1-100 einstellbar ist und die Einzelnen werde zwischen 1ms-300ms abgespeichert werden. Wie ich diese einstellen werde ist noch nicht sicher ob dies über die HMI erfolgt oder über einen Typ abhängigen Datensatz. Habe also 2 Array in einen DB so deklariert. Array [0..99]
Aktuelle habe ich dies in einen FB realisiert welchen ich von außen beschrieben kann um ihn öfters aufzurufen. So ist mein Ansatz wobei ich die Zeitliche Abtastung noch nicht mit eingebunden habe da ich hierfür noch keine Idee habe.

Code:
Netzwerk 1:
      L     0                           // oder deinen Anfangswert
      T     #Anfangsadresse_DI 

Netzwerk 2:
     U     #Neues_Teil_Messen
      SPBN  end
      R     #Neues_Teil_Messen
      L     #Anfangsadresse_DI
      SLD   3
      LAR1  
      L     P#0.0
      LAR2  
 
      L     0                           // Anzahl Schleifen
      T     #Schleifenzaehler
p2:   AUF   #Datenbankbaustein

      L     #in_Gewicht_ist
      T     DBD [AR1,P#0.0]
      +AR1  P#4.0
      L     #Schleifenzaehler
      L     #max_anzahl   // Wert wird von HMI eingestellt
      ==I                               
      SPB   end

      L     #Schleifenzaehler
      +     1
      T     #Schleifenzaehler
      LOOP  p2
end:  NOP   0

Hoffe mir kann von euch jemand helfen.

Danke euch shcon mal

Gruß
Stoph
 
Hallo,
für die zeitliche Abtastung gibt es mehrere Möglichkeiten - es schränkt sich allerdings durch deinen Wunsch nach 1 ms wie der ein bißchen ein.
In diesem Fall würde ich den FB im OB35 aufrufen, der als Aufrufintervall 1 ms voreingestellt bekommt.
Nun mußt du deinem Baustein einen IN-Parameter verpassen mit dem du festlegst, in welchem Intervall er auszeichnen soll.
In deinem Baustein zählst du die Aufrufe mit und immer wenn internerZähler >= VorgabeIntervall ist dann schreibst du einen Wert mit und löscht deinen internen Zähler wieder.

Mit der Werte-Begrenzung kannst du im Grunde genauso verfahren.

Gruß
Larry
 
Zurück
Oben