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

Ergebnis 1 bis 5 von 5

Thema: Einmalige Ausführung pro Zyklus

  1. #1
    Registriert seit
    24.04.2008
    Ort
    Lübeck
    Beiträge
    324
    Danke
    8
    Erhielt 64 Danke für 62 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hey Leute,

    ich habe einen Programmteil, welcher sehr rechenintensiv ist. Eigentlich benötige ich die Berechnung nur ein einziges mal pro Zyklus.

    Wenn der Baustein aber mehrere Male aufgerufen wird, wird dieser jedes mal komplett abgearbeitet, obwohl die Ergebnisse für diesen Zyklus eventuell schon anstehen.

    Habe schon überlegt, irgendwie den Zyklustick zu speichern und abzufragen. Jedoch ist das auslesen der Ticks etc. recht aufwendig für die CPU.

    Hat da jemand von euch irgendwie schonmal was umgesetzt, best practice oder ne Idea?
    Zitieren Zitieren Einmalige Ausführung pro Zyklus  

  2. #2
    Registriert seit
    06.07.2007
    Beiträge
    2.811
    Danke
    174
    Erhielt 274 Danke für 253 Beiträge

    Standard

    Hier mal zwei Ideen:

    1. Kannst du in deinem Baustein ein IN/OUT hinzufügen? Dann setze zu Beginn des Zyklus eine Var auf false und übergib diese deinem Baustein. Im Baustein führst du den Code nur aus, wenn diese Var false ist. Gleichzeitig setzt du im Baustein die Var auf true und gibst sie wieder raus. Bei jedem weiteren Aufruf dieses Bausteins ist diese Var true bis ein neuer Zyklus beginnt.

    2. Das Ganze ohne IN/OUT: Du nimmst eine globale Var und setzt sie zu Beginn eines jeden Zyklus auf false. Den Baustein führst du nur aus, wenn die Var false ist. Gleichzeitig setzt du im Baustein die Var auf true. Gleiches Ergebnis wie oben.

    3. Das ganze mit einer lokalen Var: Du nimmst eine lokale Var und setzt sie zu Beginn eines jeden Zyklus auf false. Den Baustein rufst du nur auf, wenn die Var false ist. Nach dem ersten Aufruf des Bausteins setzt du für den Rest des Zyklus die Var auf true.

    Ich hoffe du kannst eine der Ideen umsetzen und gebrauchen.

    Mfg Cerberus
    Geändert von Cerberus (09.03.2010 um 07:44 Uhr) Grund: Kleinere Schreibfehler
    A programmer is just a tool which converts caffeine into code.

  3. #3
    Neals ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.04.2008
    Ort
    Lübeck
    Beiträge
    324
    Danke
    8
    Erhielt 64 Danke für 62 Beiträge

    Standard

    Danke für deine Vorschläge.

    Der Baustein soll ein Bibliotheks-Baustein sein. Daher habe ich keine Kontrolle über den Zyklus und es kann passieren, dass der "Anwender" diesen Baustein 20 mal aufruft.

  4. #4
    Registriert seit
    25.11.2008
    Ort
    Westpfalz
    Beiträge
    1.550
    Danke
    187
    Erhielt 212 Danke für 186 Beiträge

    Standard

    Die Berechnung ist sicher an veränderbaren Parametern geknüpft. Vielleicht kannst du nur bei Änderung der Parameter die Berechnung anstoßen.

    Um Ceberus sein Vorschlag aufzugreifen (best practice):

    OB1:

    SET
    M 10.0
    CALL FC 1 //1. Berechnung
    CALL FC 1 //2. Aufruf
    ...
    CALL FC 1 //n.Aufruf

    FC 1:

    UN M10.0
    BEB
    //Berechnung
    SET
    R M10.0
    and we all support the team (S.King - Die Arena)

  5. #5
    Neals ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    24.04.2008
    Ort
    Lübeck
    Beiträge
    324
    Danke
    8
    Erhielt 64 Danke für 62 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Danke euch beiden!

    Habe es jetzt über den CycleCount in SystemTaskInfoArr aus der TcBase-Bibliothek gelöst. Darüber kann ich leicht erkennen, ob ich noch im gleichen, oder in einem neuen Zyklus bin.

Ähnliche Themen

  1. Beckhoff-Modbus praktische Ausführung ?
    Von cas im Forum CODESYS und IEC61131
    Antworten: 3
    Letzter Beitrag: 18.05.2010, 20:44
  2. Wiederholte Ausführung
    Von husox81 im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 29.09.2008, 15:45
  3. einmalige abfrage der eingänge
    Von MarcusS81 im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 01.09.2008, 15:36
  4. Profibus-DP-Zyklus mit OB1-Zyklus synchronisieren?
    Von Supervisor im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 08.06.2006, 13:09
  5. Bit auf 1 im Zyklus?
    Von apachler im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 18.11.2005, 16:53

Lesezeichen

Berechtigungen

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