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

Ergebnis 1 bis 9 von 9

Thema: SFCs und deren abarbeitung

  1. #1
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Kann mir einer sagen wie sich die Abarbeitung von SFCs auf die Zykluszeit
    auswirkt?
    Oder anders gefragt wann werden diese abgearbeitet in jedem Zyklus (also getriggert an die HW-Uhr)?

    Mein Problem ist folgendes ich schiebe verschiedene E/A -bereiche mittels SFC 20 in einen DB und von dort aus mit SFC 15 in den Übergabespeicher der CPU (vielleicht nicht schön aber gut nachvollziehbar für Studenten).

    Frage ist nun, kann ich davon ausgehen das dies in jedem Zyklus passiert?
    Zitieren Zitieren Gelöst: SFCs und deren abarbeitung  

  2. "Hallo,

    diese beiden SFCs arbeiten synchron, d.h., sie werden bei einem Aufruf immer vollständig abgearbeitet.

    Es gibt auch asynchrone, wie z.B. SFC25, die haben ein DONE-Flag und laufen über mehrere Zyklen.

    Aber du schreibt: "also getriggert an die HW-Uhr". Das ist nicht ganz richtig. Entweder ruft du die SFCs im OB1 auf, dann verlängert er die Zykluszeit um seine Ablaufdauer, aber der Zyklus kann trotzdem unterschiedlich lang sein.

    Oder du rufst deinen SFC in einem der Zeit-OBs auf, dann wird das zyklische Programm im OB1 im projektierten Zeitraster unterbrochen.
    Wenn der Zyklus aber kürzer ist als dein Aufrufintervall des Zeit-OBs
    bekommst du u.U. nicht alle Wechsel des Prozessabbildes mit, denn das
    wird immer am Anfang des OB1-Zyklus aktualisiert.

    Also: besser im OB1.

    Die aktuelle Zyklusdauer kannst du im Simatic-Manger ablesen oder
    du siehst dir mal OB1_PREV_CYCLE (Lokaldaten des OB1) genauer an.

    Viel Erfolg!"


  3. #2
    Anonymous Gast

    Standard

    Hallo,

    diese beiden SFCs arbeiten synchron, d.h., sie werden bei einem Aufruf immer vollständig abgearbeitet.

    Es gibt auch asynchrone, wie z.B. SFC25, die haben ein DONE-Flag und laufen über mehrere Zyklen.

    Aber du schreibt: "also getriggert an die HW-Uhr". Das ist nicht ganz richtig. Entweder ruft du die SFCs im OB1 auf, dann verlängert er die Zykluszeit um seine Ablaufdauer, aber der Zyklus kann trotzdem unterschiedlich lang sein.

    Oder du rufst deinen SFC in einem der Zeit-OBs auf, dann wird das zyklische Programm im OB1 im projektierten Zeitraster unterbrochen.
    Wenn der Zyklus aber kürzer ist als dein Aufrufintervall des Zeit-OBs
    bekommst du u.U. nicht alle Wechsel des Prozessabbildes mit, denn das
    wird immer am Anfang des OB1-Zyklus aktualisiert.

    Also: besser im OB1.

    Die aktuelle Zyklusdauer kannst du im Simatic-Manger ablesen oder
    du siehst dir mal OB1_PREV_CYCLE (Lokaldaten des OB1) genauer an.

    Viel Erfolg!

  4. #3
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Wenn du keine Bedingung benutzt, die den Aufruf des SFC überspringt, wird er in jedem Zyklus ausgeführt.
    Insbesondere beim SFC20 wirkt sich auch die Länge der Daten auf die Laufzeit aus.
    Der SFC15 versendet ja Profibus-Daten. Ohne daß ich eine Dokumentation dazu kenne, gehe ich davon aus, daß das in 2 Teilen erfolgt: Der SFC 15 wird die Daten in einen Übergabespeicher schreiben, aus dem das Betriebssytem (eventuell auch ein Koprozessor für die DP-Slave-Funktion) diese holt und versendet.
    Wenn der Übergabespeicher voll ist, wird es die Fehlermeldung 80C1 (voriger Auftrag nicht abgearbeitet) geben.
    Mit der Hardwareuhr hat das alles gar nix zu tun. Sie triggert einzig Weckalarm-OBs.

    Oder anders gefragt wann werden diese abgearbeitet in jedem Zyklus (also getriggert an die HW-Uhr)?
    Hier scheint mir ein grundsätzlicher Verständnisfehler zu liegen:
    Die zyklische Bearbeitung eines SPS-Programms erfolgt NICHT durch irgeneine Uhr, sondern -vereinfacht gesagt- dadurch, daß vom Ende des OB1 an dessen Anfang gesprungen wird.

    [/code]

  5. #4
    automatix Gast

    Standard

    Ohne daß ich eine Dokumentation dazu kenne, gehe ich davon aus, daß das in 2 Teilen erfolgt: Der SFC 15 wird die Daten in einen Übergabespeicher schreiben, aus dem das Betriebssytem (eventuell auch ein Koprozessor für die DP-Slave-Funktion) diese holt und versendet.
    Yo das ist ist vollkommen richtig so.

    Hier scheint mir ein grundsätzlicher Verständnisfehler zu liegen:
    Die zyklische Bearbeitung eines SPS-Programms erfolgt NICHT durch irgeneine Uhr, sondern -vereinfacht gesagt- dadurch, daß vom Ende des OB1 an dessen Anfang gesprungen wird.
    Der prinzipielle ablauf eines sps-programms ist mir schon völlig klar, auch dass die Zykluszeit von ausgeführten Code und der Menge der PAE/PAA abhängt. Nur giebt es Steuerungen wo eben nicht alle Funktionsaufrufe innnerhalb eines Zyklusses bewerkstelligt werden bzw. abgeschlossen sind. --> Darauf zielte meine Frage ab.

    Anmerkung ab 1998/1999 (ich weiß nicht so genau) werden zu beginn des Zykluses das PAA geschrieben dann das PAE gelesen und der OB1 abgearbeitet.

    mfG


    // edit markus
    quote

  6. #5
    automatix Gast

    Standard

    soory dat mit dem quote hat wohl nicht geklappt

  7. #6
    Registriert seit
    27.08.2004
    Ort
    Bei Bremen
    Beiträge
    648
    Danke
    11
    Erhielt 12 Danke für 10 Beiträge

    Standard

    Es gibt SFC / SFB die über mehrere Zyklen laufen können.
    Diese machen in der Regel das Done Flag.

    Daher die Bausteine mit einem Done-Flag sollten jeden Zyklus aufgerufen werden. Allgemein verlängern Sie die Zykluszeit, wenn sie aktiv sind. Genauere Infos siehe "F1"..

    Die anderen sind dann aktiv und werden dann ausgeführt, wenn die aufgerufen werden (wie jeder andere Baustein auch)
    Laufzeiten sind in der Dokumentation enthalten.

    Sehr vereinfacht kann man sagen "Bausteine, die für Kommunikation und Sonderbaugruppen zu tun haben können über mehrere Zyklen laufen. Die meisten anderen sind wie jeder andere Baustein auch zu sehen.
    Gruß
    Heinz

  8. #7
    Registriert seit
    16.06.2003
    Ort
    88356 Ostrach
    Beiträge
    4.811
    Danke
    1.230
    Erhielt 1.101 Danke für 527 Beiträge

    Standard

    sfc20 und sfc15 werden mit einem aufruf komplett abgearbeitet.

    der aufruf der beiden gleich nach einander bzw. im selben zyklus ist daher kein problem.

    kann das auch aufgrund meines aktuellen projektes bestätigen, habe einen sfc20 aufruf direkt vor einem sfc15 aufruf. funktioniert problemlos.

    viele grüße aus cincinaty ky

  9. #8
    Registriert seit
    16.12.2004
    Ort
    Schleswig-Holstein
    Beiträge
    400
    Danke
    21
    Erhielt 23 Danke für 20 Beiträge

    Standard

    Es gibt SFC / SFB die über mehrere Zyklen laufen können.
    Diese machen in der Regel das Done Flag.
    Aber aufpassen in diesem Fall, ich weiss nicht ob es für alle solchen SFCs gilt, aber bei der SFC12 habe ich lernen müssen, man darf nicht das DONE Bit ablesen und dann das SFC überspringen. Wenn man das macht läuft das SFC nicht weiter. Man muss das SFC in jedem Zyklus abrufen egal ob BUSY oder nicht.

  10. #9
    Registriert seit
    27.08.2004
    Ort
    Bei Bremen
    Beiträge
    648
    Danke
    11
    Erhielt 12 Danke für 10 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Heinz
    Daher die Bausteine mit einem Done-Flag sollten jeden Zyklus aufgerufen werden.
    Stimmt!!!!
    Gruß
    Heinz

Ähnliche Themen

  1. Aufruf eines SFCs in AWL-Quelle geht nicht
    Von rrauch im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 22.07.2010, 16:50
  2. Antworten: 6
    Letzter Beitrag: 23.09.2009, 09:59
  3. Antworten: 14
    Letzter Beitrag: 20.05.2009, 12:38
  4. FC Abarbeitung im OB1
    Von K3ul3 im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 17.11.2008, 08:55
  5. Datenaustausch zwischen CPUs über SFCs
    Von Andy Latte im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 01.04.2008, 07:43

Lesezeichen

Berechtigungen

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