Ablaufüberwachung
No se pudo cargar la disponibilidad de retiro
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
#TimerMswird 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
#StartLearningaktiviert#IsLearning, setzt#LearnIndex := 0,#TimerMs := 0,#ForceFirstLearn := TRUE. -
Änderungserkennung: Ein Schritt wird aufgenommen, wenn sich ein beliebiger Kanal gegenüber
#LastDI/AI/INTgeändert hat oder#ForceFirstLearnaktiv ist. -
Schrittaufzeichnung: Speichert
Timestamp = #TimerMsund Snapshots aller 10 DI, 4 AI und 2 INT in#LearnSteps[#LearnIndex]; aktualisiert#Last*;#LearnIndex++. -
Grenze: Maximal 100 gelernte Schritte (
#LearnIndex < 100). -
Ende: Wenn
#StartLearninglosgelassen wird, setzt der Baustein#LearningDone := TRUEund#IsLearning := FALSE.
Vergleichsmodus
-
Start: Flanke auf
#StartCompareaktiviert#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
#CRecgebildet 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
#TimerMsdas Fensterende überschreitet, ohne Änderung ⇒ Code4900 + step; Schritt wird dennoch als abgearbeitet gezählt. -
Abschluss: Ende bei
#CompareIndex >= #LearnIndexoder 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]) mitTimestampund 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