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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 13

Thema: Programmteile nur 1 mal beim Start ausführen.

  1. #1
    Registriert seit
    30.09.2009
    Beiträge
    7
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    habe als Neuling im Thema SPS mal ne grundsätzliche Frage zum Systemstart.

    Ich habe mir mit einem Beckhoff BC9100 eine Lichtsteuerung gebaut. Die Grundfunktionen funktionieren schon mal ganz ok.

    Nun zu meiner Frage:
    Ich möchte beim Start des Controllers einen Codeteil haben, der genau 1mal ausgeführt wird. Grundsätzlich wäre das mit einer einfachen boolschen VAR und einer IF-Abfrage ja einfach zu lösen. Gibt es hierzu bestimmte Herangehensweisen wie solche Initialisierungsroutinen "fachmännisch" abgebildet werden oder ist hierfür einfach die oben angesprochenen IF-Lösung die richtige.

    Vielen Dank im Voraus für die Führung eines "Babys" bei den ersten Gehversuchen

    lg
    Zitieren Zitieren Programmteile nur 1 mal beim Start ausführen.  

  2. #2
    Registriert seit
    06.04.2008
    Beiträge
    7
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Taskkonfiguration->Systemereignisse->Start->Programmaufruf

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

    Standard

    Eine Alternative ist die boolsche Variable "SystemTaskInfoArr[1].firstCycle" aus der TcSystem.lib. Diese gibt dir ein TRUE zurück, solange die Steuerung im ersten Zyklus ist.
    A programmer is just a tool which converts caffeine into code.

  4. #4
    Registriert seit
    25.11.2010
    Ort
    OWL
    Beiträge
    745
    Danke
    27
    Erhielt 164 Danke für 142 Beiträge

    Standard

    Zitat Zitat von Cerberus Beitrag anzeigen
    Eine Alternative ist die boolsche Variable "SystemTaskInfoArr[1].firstCycle" aus der TcSystem.lib. Diese gibt dir ein TRUE zurück, solange die Steuerung im ersten Zyklus ist.
    Die gibt es aber nur bei PC's. Bei BC's muss man das dann doch selbst machen.
    Ich schreibe dafür in meinen PRG's und FB's eine eigene Aktion "Init". Die boolesche Variable für den ersten Zyklus brauche ich dann nur im Hauptprogramm abfragen, um "Main.Init" aufzurufen. "Main.Init" ruft dann die Init-Aktionen der weiteren PRG's auf, diese wiederum die Init-Aktionen der FB's.

  5. Folgender Benutzer sagt Danke zu StructuredTrash für den nützlichen Beitrag:

    Cerberus (09.05.2011)

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

    Standard

    Zitat Zitat von StructuredTrash Beitrag anzeigen
    Die gibt es aber nur bei PC's. Bei BC's muss man das dann doch selbst machen.
    Okay, das wusste ich nicht!
    A programmer is just a tool which converts caffeine into code.

  7. #6
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Der Kode lautet dann so:

    Code:
    VAR 
      init : boolean := True;
    END_VAR
    
    IF init THEN
      bla bla
      init := False;
    END_IF;
    Jede Variable wird beim ersten Ausführen des Blockes initialisiert. Die Initialisierung wird hier mit True festgelegt. Damit ist es kein Problem einen Init-Run durchzuführen.
    Geändert von drfunfrock (09.05.2011 um 10:17 Uhr)

  8. Folgende 2 Benutzer sagen Danke zu drfunfrock für den nützlichen Beitrag:

    apmIng (09.05.2011),majaestix (10.05.2011)

  9. #7
    Registriert seit
    13.01.2007
    Beiträge
    304
    Danke
    35
    Erhielt 29 Danke für 25 Beiträge

    Ausrufezeichen

    Dieser Code funktioniert aber wirklich nur beim allerersten Mal nach Start von TwinCAT! Wenn man das Programm z.B. über PLC-Control stoppt und danach wieder startet funktioniert das nicht mehr.

    Zudem darf (wie im Code richtig dargestellt) die Variable auf keinen Fall PERSISTENT sein.

    Für den Zweck FirstScanRun hat mir einmal ein Beckhoff Mitarbeiter einen Code geschrieben. Generell vermisse ich die Systemvariablen üblicher SPS-Systeme schon ein wenig. (Systemtakte etc.) Sicher kann man alles selber machen, aber man muss es leider halt auch.

    LG
    Zitieren Zitieren Vorsicht  

  10. #8
    Registriert seit
    14.08.2004
    Beiträge
    824
    Danke
    45
    Erhielt 73 Danke für 66 Beiträge

    Standard

    Zitat Zitat von MarkusP Beitrag anzeigen
    Dieser Code funktioniert aber wirklich nur beim allerersten Mal nach Start von TwinCAT! Wenn man das Programm z.B. über PLC-Control stoppt und danach wieder startet funktioniert das nicht mehr.
    Das stimmt so nicht. Es funktioniert nach einen gewöhnlichen Boot und wenn man das Programm nach einem Stopp über PLC-Control startet.

  11. #9
    redseadiver28 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.09.2009
    Beiträge
    7
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo zusammen,

    war letzte Woche leider verhindert, aber trotzdem vielen Dank für die Hilfe.

    Ich weiß jetzt, dass ich grundsätzlich nicht ganz falsch liege. Das mit der TCSystem.lib klingt auch spannend, ur halt wieder nicht mit nem BC.

    @drfunfrock: vielen Dank für dein Beispiel

    lg

    redseadiver28

  12. #10
    Registriert seit
    13.01.2007
    Beiträge
    304
    Danke
    35
    Erhielt 29 Danke für 25 Beiträge

    Ausrufezeichen


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von drfunfrock Beitrag anzeigen
    Das stimmt so nicht. Es funktioniert nach einen gewöhnlichen Boot und wenn man das Programm nach einem Stopp über PLC-Control startet.
    Habe das nun mit einem CX getestet, zumindest hier funktioniert das nicht! (wie ich schon beschrieben hatte) Hättest mich fast verunsichert...
    Vielleicht verhält sich aber der BC anders, aber bei einem CX hätte das u.U. fatale Auswirkungen.

    Ein ähnliches Verhalten gibt es auch bei den Konstanten. Will man die z.B. später einmal ändern, genügt es nicht dies im Code zu tun, man muss die SPS neu initialisieren oder den neuen Wert online eingeben. Konstanten sind genaugenommen nur Variablen mit einem Initialwert.

    LG
    Zitieren Zitieren Cx  

Ähnliche Themen

  1. Probleme beim Start von S7
    Von papabär im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 22.09.2008, 19:46
  2. Fehler beim start von WinCC 6.2
    Von Jochen Kühner im Forum HMI
    Antworten: 5
    Letzter Beitrag: 13.06.2008, 12:23
  3. Hilfe beim Start mit SPS
    Von solojo im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 26.09.2007, 17:21
  4. Beim Systemstart Befehle ausführen.
    Von Chriz im Forum PC- und Netzwerktechnik
    Antworten: 1
    Letzter Beitrag: 08.05.2007, 01:49
  5. Bluescreen beim Start von ProTool/Pro
    Von Andi F im Forum HMI
    Antworten: 7
    Letzter Beitrag: 27.10.2004, 12:53

Stichworte

Lesezeichen

Berechtigungen

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