Signalablauf: Konkurrierende Schreib- und Löschzugriffe auf denselben Datensatz
Das folgende Signalablauf-Diagramm zeigt das Verhalten der Rezeptur-FBs SF_RecipeWrite und SF_RecipeDeleteDataSet wenn sie gleichzeitig auf dieselbe Datei und denselben Datensatz zugreifen. Durch diese konkurrierenden Operationen kann nur ein FB seine Ausführung erfolgreich beenden.
Hinweis
1) Um die Darstellung zu vereinfachen, wird im Signalablauf für jeden Zustandswechsel der FBs eine Dauer von einem Zyklus der Sicherheitssteuerung angenommen. In der Realität können hierfür mehrere Zyklen nötig sein. Die Dauer, um Rezepturdaten vollständig zu lesen/schreiben, variiert und hängt von der Menge der zu verarbeitenden Daten ab. |
0 | Nach dem Start der Sicherheitssteuerung sind beide FBs deaktiviert. Folglich sind die Done-Ausgänge beider FBs SAFEFALSE und beide DiagCode-Ausgänge zeigen den Wert 0000 (Zustand Idle). |
1 | SF_RecipeWrite und SF_RecipeDeleteDataSet werden aktiviert, indem ihre Activate-Eingänge auf TRUE gesteuert werden.In der Folge durchlaufen beide FBs die Zustände 8002 (Prepare), 8004 (Warten auf Bereitschaft) und 8006 (Warten auf den Befehl zur Ausführung am Eingang CommandWrite bzw. CommandDelete). |
2 | Eine steigende Flanke an CommandWrite und CommandDelete startet die Ausführung der FBs.Für beide FBs sind an den Eingängen IDRecipeFile und IDRecipeDataSet dieselben Werte angelegt.SF_RecipeWrite
|
3 | SF_RecipeDeleteDataSet hat die Daten validiert und damit seine Operation erfolgreich abgeschlossen. Ausgang Done steuert auf SAFETRUE (DiagCode = 8000).Die Validierung im Baustein SF_RecipeWrite war dagegen nicht erfolgreich, da die geschriebenen Daten zwischenzeitlich gelöscht wurden. Ausgang Done bleibt SAFEFALSE und am Ausgang DiagCode liegt der Wert C070 an. |