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

Ergebnis 1 bis 9 von 9

Thema: Zyklischer Aufruf bzw zyklisches Einlesen von Analogwerten >= 30 Min

  1. #1
    Registriert seit
    15.11.2015
    Beiträge
    3
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    ich bin neu in der SPS Programmierung und bin ein wenig was am ausprobieren wo ich denke mal nicht die richtigen Worte zum suchen finde.

    Ich möchte eine Steuerung aufbauen, welche sich nach der Aussentemperatur richtet. dazu habe ich mir eine Schiebung gebaut und auch alles andere ist mir logisch wie ich es realisieren muss.

    damit sich in miner Schiebung nicht ständig der Sollwert für miene Regelung ändert möchte ich den Temperaturwert des Fühlers nur ca. alle 30 Minuten in mienen DB schreiben um ihn von dort dann zu verarbeiten. gibt es da eine Möglichkeit bei einer S7 300 mit TIA Portal programmiert, ohne die CPU zu stark zu fordern (zeit gesteuerter Inerrupt oder ähnliches)? Oder muss ich es über einen zeitgesteuerten Script im "WinCC" realisieren (was ich aber vermeiden möchte)?

    es ist nicht gerade einfach von "C-Script" Programmierung auf S7 zu wechseln

    Danke bereits im Voraus für eure Ideen.

    Gruss

    Wegy
    Zitieren Zitieren Zyklischer Aufruf bzw zyklisches Einlesen von Analogwerten >= 30 Min  

  2. #2
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    Mehrere Möglichkeiten:

    1. Du nutzt einen Zeit-OB, das findest du in der Hardwarekonfig.
    Dort kannst du ein Zeitintervall einstellen.
    Dann legst du den OB im Programm an.
    Dieser OB wird dann in dem Intervall jeweils einmal aufgerufen, das du eingestellt hast.
    In dem OB liest und schreibst du die Daten. (oder eben schieben)

    2. Du progammierst einen SE-Timer.
    Den Ausgang des Timers auf einen Merker (z.B. M100.0)
    Auf den Eingang des Timers als UN (UND Nicht) diesen M100.0
    Der Timer bekommt als Zeitwert 30min.
    Dann wird alle 30 Min. für genau enen Zyklus der M100.0 True.
    Mit dem Merker kannst du dann z.Bsp einen Move versorgen, der dann deine Werte schiebt.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    Wegy81 (20.11.2015)

  4. #3
    Wegy81 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.11.2015
    Beiträge
    3
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Ralle,

    Danke für den Tip mit dem in Zyklen denken.
    da hätte ich selbst drauf kommen können.
    jetzt läuft es wie ich es haben wollte.

    Gruß

    Wegy

  5. #4
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.520 Danke für 1.282 Beiträge

    Standard

    Zitat Zitat von Wegy81 Beitrag anzeigen
    Hallo Ralle,

    Danke für den Tip mit dem in Zyklen denken.
    da hätte ich selbst drauf kommen können.
    jetzt läuft es wie ich es haben wollte.

    Gruß

    Wegy
    Damit machst du Regelungstechnisch aber das schlechtest mögliche.
    Das Ergebnis ist eine sprunghafte Änderung einer Momentaufnahme.

    Hier wäre es wesentlich besser den Wert über 30 Minuten zu mitteln.
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  6. #5
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.222
    Danke
    533
    Erhielt 2.698 Danke für 1.950 Beiträge

    Standard

    @MSB
    Das bringt aber nur wirklich etwas, wenn der Wert um einen bestimmten Mittelwert schwankt. Wenn er langsam absinkt, wie am Abend, dann liegt er über den Mittelwert nach 30Min. auch nicht gerade richtig. Oder sehe ich das falsch?
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  7. #6
    Registriert seit
    15.01.2005
    Ort
    In der Mitte zwischen Bayreuth/Weiden
    Beiträge
    6.732
    Danke
    314
    Erhielt 1.520 Danke für 1.282 Beiträge

    Standard

    Zitat Zitat von Ralle Beitrag anzeigen
    @MSB
    Das bringt aber nur wirklich etwas, wenn der Wert um einen bestimmten Mittelwert schwankt. Wenn er langsam absinkt, wie am Abend, dann liegt er über den Mittelwert nach 30Min. auch nicht gerade richtig. Oder sehe ich das falsch?
    Es geht bei dem Wert auch nicht unbedingt um "richtig", sondern um eine möglichste sanfte Änderung als Berechnungsgrundlage für Sachen wie Vorlauftemperatur und Co.
    Selbst die Tatsache das der Wert dann natürlich zeitverzögert ist, ist dabei ein durchaus erwünschter Nebeneffekt.
    Warum denn einfach, wenn man auch Siemens einsetzen kann!

    Wer die grundlegenden Freiheiten aufgibt, um vorübergehend ein wenig Sicherheit zu bekommen, verdient weder Freiheit noch Sicherheit (B. Franklin).

  8. #7
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von Wegy81 Beitrag anzeigen
    ohne die CPU zu stark zu fordern
    Egal, ob Dein Code alle 100 ms oder alle 30 Minuten ausgeführt wird: Du forderst die CPU nicht zu stark.
    Eine SPS-CPU läuft immer auf "Hochtouren", auch wenn keine Ereignisse abzuarbeiten sind.
    Einen kompletten PID-Regler mit Statistik auszuführen fordert die CPU nicht mehr als alle 30 Minuten auf einen bei der Abfrage womöglich zufällig verfälschten Temperaturwert zu reagieren.

    Zitat Zitat von Wegy81 Beitrag anzeigen
    es ist nicht gerade einfach von "C-Script" Programmierung auf S7 zu wechseln
    Es erfordert insbesondere ein Umdenken von ereignisorientierter Programmierung auf zustandsorientierte Programmierung. Man muß verinnerlichen, daß das ganze Anwenderprogramm im OB1 pausenlos immer wieder abgearbeitet wird (zyklisch, quasi in einer While-Schleife). Wird das Programm länger, dann dauert die Abarbeitung länger, die Auslastung der CPU bleibt aber die selbe, weil nach dem Ende eines Durchlaufs gleich wieder oben angefangen wird. Die CPU schafft nur nicht mehr so viele Durchläufe (Zyklen) pro Sekunde.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #8
    Wegy81 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    15.11.2015
    Beiträge
    3
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Ihr,

    Vielen lieben Dank für die vielen Anregungnen.
    Hier mien Lösungsansatz wie ich die Sache ran angehe:

    ich habe mir eine lineare, negative Schiebung gebastelt, was bedeutet in einem Temperaturbereich aussen von -8°C bis +10°C bewegt sich meine Vorlauftemperatur zwischen 45°C und 60°C (je kälter es aussen ist, desto wärmer wird die Vorlauftemperatur).
    diesen Errechneten Wert (Y_ERG) runde ich und nehme ihn als Sollwert für meinen PID Regler, dessen Aussgang ich auf einen Dreipunktregler setze um mein Mischventil anzutreiben.
    in der Schiebung kann ich die Schrittweite anpassen um somit das Verhältnis wie sensibel die Schiebung reagiert zu variiren ( je häher der Wert desto kleiner die Sprünge bei X Wert Änderungen).
    mit dieser Variante denke ich das ich den Einganswert vom Aussenfühler stark genug glätte um keine zu Sprunghaften Änderungen am Regelventil zu bekommen.
    das ist momentan alles noch reine Theorie und nur im Simulator getestet .

    sobald ich richtige Erfahrungswerte habe, werde ich hier die Lösung nochmals genauer erläutern und ein paar Bilder der Lösung anhängen.

    Gruß

    Wegy

  10. #9
    Registriert seit
    08.02.2007
    Ort
    A-2320
    Beiträge
    2.252
    Danke
    244
    Erhielt 332 Danke für 303 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Harald hat es Dir schon gesagt, CPU- Ressourcen sparen kannst Du sowieso nicht.
    Also lass den Regler laufend mit dem aktuellen Istwert regeln und gut ist es.
    Was ich aber noch machen würde ist, dem Stellwert eine Totzone zu verpassen, das heisst erst eine Stellsignaländerung wenn der Stellwert sich zB um +/-3% geändert hat. Das schont das Stellorgan und deep down denke ich, ist es ja das, was Du EIGENTLICH erreichen willst.

Ähnliche Themen

  1. Beckhoff: Frage zum einlesen von Analogwerten KL3062 Beckhoff
    Von klaus313 im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 20.09.2015, 10:45
  2. Zyklisches Ansteuern von Ausgänge
    Von informer_at im Forum Sonstige Steuerungen
    Antworten: 31
    Letzter Beitrag: 06.07.2015, 18:01
  3. Zyklischer Variablenexport WinCC
    Von Hannibal16 im Forum HMI
    Antworten: 10
    Letzter Beitrag: 13.12.2013, 11:26
  4. Programmierung von Analogwerten
    Von Andi_W im Forum Simatic
    Antworten: 15
    Letzter Beitrag: 04.04.2008, 20:43
  5. Scalieren von Analogwerten
    Von A.Ott im Forum Simatic
    Antworten: 18
    Letzter Beitrag: 22.02.2007, 10:53

Lesezeichen

Berechtigungen

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