SFCs und deren abarbeitung

A

Anonymous

Guest
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?
 
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!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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]
 
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
 
Zuviel Werbung?
-> Hier kostenlos registrieren
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.
 
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
 
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.
 
Zurück
Oben