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

Page 2 of 2 FirstFirst 12
Results 11 to 17 of 17

Thread: Temperaturerfassung

  1. #11
    Join Date
    05.06.2018
    Location
    Landkreis Osnabrück
    Posts
    312
    Danke
    30
    Erhielt 54 Danke für 41 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Du überwachst Datum/Uhrzeit der SPS
    Tageswechsel kann man erkennen
    Monatswechsel kann man erkennen

    Um Daten zu verkleinern wird aus vorangeganger Stunde/Tag der Mittelwert gebildet und im Folgetag/Monat mit eingebunden.

  2. #12
    S_Liner is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    15.07.2016
    Posts
    181
    Danke
    51
    Erhielt 6 Danke für 3 Beiträge

    Default

    Ähm ja , wenn ein Kunde von euch das jeden Tag haben will, wie schreibt ihr die Daten in den DB. Du schreibst doch jetzt nicht 365 Wörter in den DB vor oder?

    Du überwachst Datum/Uhrzeit der SPS
    Tageswechsel kann man erkennen
    Monatswechsel kann man erkennen

    Um Daten zu verkleinern wird aus vorangeganger Stunde/Tag der Mittelwert gebildet und im Folgetag/Monat mit eingebunden.
    Sorry, das versteh ich nicht.

    Gruß

  3. #13
    Join Date
    05.06.2018
    Location
    Landkreis Osnabrück
    Posts
    312
    Danke
    30
    Erhielt 54 Danke für 41 Beiträge

    Default

    Code:
    FUNCTION_BLOCK "Mittelwertbildung"
    TITLE = Mittelwertbildung
    { S7_Optimized_Access := 'TRUE' }
    AUTHOR : 'zensiert'
    VERSION : 0.1
       VAR_INPUT 
          Analogwert : Real;
       END_VAR
    
    
       VAR_OUTPUT 
          Analogwert_gemittelt : Real;
       END_VAR
    
    
       VAR 
          "Wertspeicherung Register" : Array[0..60] of Real;
          Schleife : Int;
          Schleifez : Int;
          P_Trig_Clock : Bool;
          P_Trig_old : Bool;
          Zwischenwert : Real;
          Wertezahl : Real;
       END_VAR
    
    
    
    
    BEGIN
    	//
    	// Es soll ein Mittelwert des Analogeingangs gebildet werden.
    	// 
    	// Hierfür wird permanent ein Schieberegister genutzt und immer der aktuelle Wert hinzugefügt.
    	
    	IF "Clock_1Hz" AND NOT #"P_Trig_old" THEN // positive Flanke
    	    FOR #Schleife := 1 TO 59 DO
    	        #"Wertspeicherung Register"[#Schleife - 1] := #"Wertspeicherung Register"[#Schleife];
    	    END_FOR;
    	    #Zwischenwert := 0;
    	    #Wertezahl := 0.0;
    	    #"Wertspeicherung Register"[59] := #Analogwert;
    	    FOR #Schleifez := 1 TO 59 DO
    	        #Zwischenwert := #Zwischenwert + #"Wertspeicherung Register"[#Schleifez];
    	        #Wertezahl := #Wertezahl + 1.0;
    	    END_FOR;
    	    #P_Trig_Clock := true;
    	    #Analogwert_gemittelt := #Zwischenwert / #Wertezahl;
    	END_IF;
    	#"P_Trig_old" := "Clock_1Hz";
    END_FUNCTION_BLOCK
    Ganz grob gesehen wird dieser Baustein den Mittelwert der vergangenen 60 Sekunden bilden.
    Sein Ergebnis wird mit dem gleichen FB, jedoch minütlich geschrieben.
    Dessen Ergebnis wird in dem gleichen FB, jedoch verändert zu 24h geschrieben.
    Dessen Ergenis wird in dem gleichen FB, jedoch verändert zu 365 Tage geschrieben.

    Resultat: Mittelwert Minute, Stunde, Tag, Jahr. Wenn ich mag - noch mehr.
    Die Zeitpunkte der Aktivierung müssen natürlich angepasst werden.
    Die Min-Max Werte können anderweitig mitgeschrieben werden.

    So in etwa.
    Den gesamten zusammenhängenden Code darf ich leider nicht veröffentlichen.
    Das in dem geposteten FB die Clock nach aussen geführt werden sollte, ebenso wie das Array, sollte klar sein, da es sonst zu Bereichsverletzungen kommt. Also anpassbar durch Eingangsvariablen.

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

    S_Liner (26.03.2020)

  5. #14
    S_Liner is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    15.07.2016
    Posts
    181
    Danke
    51
    Erhielt 6 Danke für 3 Beiträge

    Default

    Also erstmal vielen Dank für deine Mühe, aber für SCL bin ich noch nicht bereit.

    Ganz grob gesehen wird dieser Baustein den Mittelwert der vergangenen 60 Sekunden bilden.
    Sein Ergebnis wird mit dem gleichen FB, jedoch minütlich geschrieben.
    Dessen Ergebnis wird in dem gleichen FB, jedoch verändert zu 24h geschrieben.
    Dessen Ergenis wird in dem gleichen FB, jedoch verändert zu 365 Tage geschrieben.

    Resultat: Mittelwert Minute, Stunde, Tag, Jahr. Wenn ich mag - noch mehr.
    Die Zeitpunkte der Aktivierung müssen natürlich angepasst werden.
    Die Min-Max Werte können anderweitig mitgeschrieben werden.
    Auch hier weiß ich nicht so wirklich was du mir sagen willst. Liegt eventuell auch daran das ich mit dem Baustein nichts anfangen kann, sorry...

    Ich formuliere meine Frage mal um.

    Jede Stunde hat 3 Werte, das am Tag sind 24x3 Werte. Ihr schreibt doch keinen DB mit beispielsweise 365 Tage wo jeder Tag 3 Werte hat. Das wäre ja ein riesen DB.
    Mich interessiert wie man solch Datenmengen handelt. Warum läuft das bei euch unendlich? Wie speichert Ihr die Werte?

    Gruß

  6. #15
    Join Date
    22.06.2009
    Location
    Sassnitz
    Posts
    14,786
    Danke
    1,217
    Erhielt 4,364 Danke für 3,517 Beiträge

    Default

    Ach so riesig ist das gar nicht: 365 * 3 * 4 Byte = 4380 Byte. Das kann die SPS locker im Arbeitsspeicher speichern. Heutzutage steuern SPS Prozesse samt Barcode- und Daten-Verwaltung, wo ein einzelnes Werkstück schon so viel Daten produziert...
    Allerdings nimmt man den Arbeitsspeicher einer SPS nicht zur Langzeitspeicherung von Daten, weil das viel zu unsicher ist, ob da nicht jemand dran rumspielt. Um Daten für längere Zeit zu speichern archiviert man sie auf einen sicheren Datenträger. siehe dazu auch mal den Beitrag #7

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #16
    Join Date
    22.06.2009
    Location
    Sassnitz
    Posts
    14,786
    Danke
    1,217
    Erhielt 4,364 Danke für 3,517 Beiträge

    Default

    PS: Deine CPU 315-2DP kann Daten ziemlich Langzeit-sicher auf die Memorycard der CPU speichern (z.B. 1x täglich), siehe SFC84 "WRIT_DBL". Direkt von der Memorycard in der CPU kann aber kein externes Programm die Daten lesen, dafür müsste die CPU mithelfen und mit SFC83 "READ_DBL" die Daten zurück in den Arbeitsspeicher holen. (Oder man macht Urlöschen oder entnimmt die Memorycard aus der CPU, was aber mit einem STOP der CPU verbunden ist)

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. #17
    S_Liner is offline Erfahrener Benutzer
    Themenstarter
    Join Date
    15.07.2016
    Posts
    181
    Danke
    51
    Erhielt 6 Danke für 3 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ok, vielen dank PN/DP... Dann werde ich mir die Möglichleit aus Beitrag 7 und die von eben mal genauer anschauen und testen.
    Gruß

Similar Threads

  1. Replies: 1
    Last Post: 01.02.2016, 10:41
  2. Replies: 4
    Last Post: 28.05.2014, 13:25
  3. Temperaturerfassung per Funk
    By brecher2000 in forum Antriebstechnik
    Replies: 6
    Last Post: 10.04.2013, 17:34
  4. Mini-Kamera für Temperaturerfassung
    By knabi in forum Elektronik
    Replies: 0
    Last Post: 16.02.2011, 07:09
  5. Temperaturerfassung
    By Christian Schröder in forum Simatic
    Replies: 2
    Last Post: 03.07.2006, 18:31

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •