Ablaufüberwachung
Verfügbarkeit für Abholungen konnte nicht geladen werden
Beschreibung
Der Funktionsbaustein SequenceLearnCompare_FB lernt eine Folge von Signalzuständen (10 digitale, 4 analoge und 2 Integer-Werte) mit Zeitstempeln und vergleicht sie später zyklusgenau mit Live-Daten. Jede Zustandsänderung wird als Schritt erfasst (Zeitmarke, DI/AI/INT-Snapshot). Im Vergleichsmodus wird Schritt für Schritt geprüft, ob innerhalb eines konfigurierbaren Zeitfensters (#TimeTolerance
) die erwarteten Änderungen auftreten und ob die Werte übereinstimmen. Abweichungen werden mit eindeutigen Fehlercodes protokolliert und verständlich als Text gemeldet.
Hinweis: Der Baustein dient der Ablaufvalidierung/Qualitätssicherung und ersetzt keine sicherheitsgerichteten Funktionen.
Funktionsweise
Zeitbasis & Reset
-
Zeitbasis: Der interne Millisekunden-Zähler
#TimerMs
wird je Zyklus um 10 ms erhöht (STEP 0). -
Reset: Setzt alle Indizes, Zähler und Status zurück (
#LearnIndex
,#CompareIndex
,#ErrorIndex
,#ErrorCount
,#MismatchIndex = -1
, Flags, Errorcode-Array). Beendet die Bearbeitung im aktuellen Zyklus (RETURN).
Lernmodus
-
Start: Flanke auf
#StartLearning
aktiviert#IsLearning
, setzt#LearnIndex := 0
,#TimerMs := 0
,#ForceFirstLearn := TRUE
. -
Änderungserkennung: Ein Schritt wird aufgenommen, wenn sich ein beliebiger Kanal gegenüber
#LastDI/AI/INT
geändert hat oder#ForceFirstLearn
aktiv ist. -
Schrittaufzeichnung: Speichert
Timestamp = #TimerMs
und Snapshots aller 10 DI, 4 AI und 2 INT in#LearnSteps[#LearnIndex]
; aktualisiert#Last*
;#LearnIndex
++. -
Grenze: Maximal 100 gelernte Schritte (
#LearnIndex < 100
). -
Ende: Wenn
#StartLearning
losgelassen wird, setzt der Baustein#LearningDone := TRUE
und#IsLearning := FALSE
.
Vergleichsmodus
-
Start: Flanke auf
#StartCompare
aktiviert#IsComparing
, setzt#CompareIndex := 0
,#ErrorIndex := 0
,#TimerMs := 0
,#Match := TRUE
,#ForceFirstCompare := TRUE
; löscht Fehlerliste. -
Fenster: Pro Schritt gilt ein Zeitfenster
[expectedTime - TimeTolerance, expectedTime + TimeTolerance]
, wobeiexpectedTime = #LearnSteps[#CompareIndex].StepRecord.Timestamp
. Untergrenze: mindestens 0. -
Live-Änderung: Nur bei erkannten Änderungen (wie im Lernmodus) wird ein Vergleichs-Snapshot
#CRec
gebildet und bewertet. -
Timing-Check: Abweichung
|#CRec.Timestamp - expectedTime|
>#TimeTolerance
⇒ Fehlercode4000 + #CompareIndex
. -
Signal-Checks:
- DI: Ungleichheit ⇒ Code
1000 + step * 10 + diIndex
. - AI: Absolutdifferenz >
0.01
⇒ Code2000 + step * 10 + aiIndex
. - INT: Ungleichheit ⇒ Code
3000 + step * 10 + intIndex
.
- DI: Ungleichheit ⇒ Code
-
Kein Ereignis im Fenster: Wenn
#TimerMs
das Fensterende überschreitet, ohne Änderung ⇒ Code4900 + step
; Schritt wird dennoch als abgearbeitet gezählt. -
Abschluss: Ende bei
#CompareIndex >= #LearnIndex
oder wenn 10 Fehler erfasst wurden. Dann#CompareDone := TRUE
,#IsComparing := FALSE
,#ErrorCount := #ErrorIndex
.
Diagnose-Meldetexte
Bei #ErrorCount > 0
wird aus dem ersten Fehlercode ein Klartext erzeugt:
- 1xxx → DI-Fehler in Schritt S
- 2xxx → AI-Fehler in Schritt S
- 3xxx → INT-Fehler in Schritt S
- 4xxx → Zeitfehler in Schritt S
- Sonst → Unbekannter Fehlercode
Ohne Fehler: Vergleich erfolgreich – keine Abweichung (wenn #CompareDone
und #Match
), sonst Kein Fehler. Das Flag #HasError
wird entsprechend gesetzt.
Technische Details
- Kanäle: 10× DI, 4× AI (REAL), 2× INT
-
Lernspeicher: Bis zu 100 Schritte (
#LearnSteps[0..99]
) mitTimestamp
und Snapshots -
Fehlerliste: Bis zu 10 Einträge (
#ErrorCodes[0..9]
),#ErrorCount
,#MismatchIndex
(erster abweichender Schritt) -
Toleranz:
#TimeTolerance
(TIME), Vergleichsschwelle AI:0.01
-
Zeitbasis:
#TimerMs
(INT/DINT-basiert), Inkrement: 10 ms/Zyklus -
Steuerflags:
#StartLearning
,#LearningDone
,#StartCompare
,#CompareDone
,#Match
,#HasError
Fehlercodes (Mapping)
-
1000 + step * 10 + diIdx
→ DI-Mismatch (diIdx 0..9) -
2000 + step * 10 + aiIdx
→ AI-Abweichung > 0.01 (aiIdx 0..3) -
3000 + step * 10 + intIdx
→ INT-Mismatch (intIdx 0..1) -
4000 + step
→ Zeitabweichung des Ereignisses > Toleranz -
4900 + step
→ Keine Änderung im Zeitfenster (Event verpasst)
Einsatzmöglichkeiten
- Ablaufaufnahme und spätere Reproduzierbarkeits-/End-of-Line-Prüfung
- Prozessvergleich nach Instandsetzung oder Parametrierung
- Qualitätssicherung (Schrittketten-Validierung)
- Fehleranalyse mit erstem Abweichungsschritt (
#MismatchIndex
)
Kompatibilität
- Siemens TIA Portal V16 (S7-1200/1500), SCL
- Einsetzbar mit PLCSIM zu Test- und Validierungszwecken
Lieferumfang
- SCL-Baustein SequenceLearnCompare_FB (Code gemäß oben beschriebenem Verhalten)
- Kommentierte Schnittstellen und Fehlermatrix
- Kurzanleitung zur Inbetriebnahme (Lernen/Prüfen/Diagnose)
Support
Unterstützung bei:
- Anpassung von Kanalanzahl, AI-Schwellwerten oder Toleranzen
- Erweiterung der Fehlercodes und Diagnoseausgaben (z. B. mehr als 10 Fehler)
- Export/Logging der Schritte und Ergebnisse (z. B. in DB oder Datei)
- Integration in bestehende Anlagensequenzen und HMI-Meldungen