Sereinfehler

peraho

Level-1
Beiträge
68
Reaktionspunkte
1
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

habe folgende Aufgabe:

Wird ein fehler drei mal hintereinander ausgelöst, soll die Anlage gesperrt werden und nur über Passwort wieder freigegeben werden.

Hat jemand schon etwas ähnliche gemacht mit "Serienfehlern".

Die Fehler melde ich über ein Boolsches Array an WinCC.
Da mehrere Fehler gleichzeitig anstehen können, müsste ich ja auch mehrere Zähler verwenden.
Oder ich schreibe immer die letzten drei Fehlernummern in ein Schieberegister und vergleiche diese.

Was meint Ihr denn???

Gruß Peraho
 
Hallo Peraho,

wie meinst Du das mit dem Fehler drei mal hintereinander?
In einem bestimmten Zeitraum oder drei mal der gleiche Fehler hintereinander oder...?

Wenn Deine Fehler in einem Boolschen-Array liegen, kannst Du ja eine Schleife
darüber laufen lassen, die bei positiver Flanke hochzählt (ein DBW in nem DB)
und bei pos. Vergleich mit 3 die Anlage sperrt.

Grüße
Gebs
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Gebs,

also angenommen der Fehler x kommt, wird quittiert. kommt ein 2. und 3. mal ( je nach dem er wieder quittiert wurde). Dann soll die Anlage gesperrt werden.
Mit der Schleife, ok. Aber dann brauch ich ja für jeden Fehler ein Zähler?
Oder steh ich grad aufm Schlauch?
Gruß Peraho
 
keinen zähler
Code:
u alarm1
spbn end1
l alarmzähler1
l 1
+I
t alarmzähler1
end1:nop 0

so in etwa
 
Hallo Peraho,

Du kannst in ein DBW reinzählen:

Code:
// Positive Flanken der Fehler bilden
L   Altwerte_Fehler
L   Aktuelle_Fehler
XOW
UW
T  Pos_Flanken_Fehler

// Altwerte Fehler merken
L   Aktuelle_Fehler
T  Altwerte_Fehler

// Zeiger initialisieren
L  P#0.0
LAR1

AUF DB 1 // DB für Fehlerzählung
// Schleife für Fehler zählen
L  16  // bei 16 Fehlermeldungen
Loop: T  #LoopCounter

L Pos_Flanken_Fehler
SLW 1
SPZ WEIT

L  DBW[AR1,P#0.0] // Zählwert
+1
T  DBW[AR1,P#0.0]
L  3
==I
SPZ WEIT
SET
S Fehler_3_mal
WEIT: +AR1 P#2.0
L  #LoopCounter
Loop Loop

Ist nur eine Grobfassung, sollte aber so funktionieren.

Grüße
Gebs
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi,

also da von gerhadr verstehe ich. müsste es aber für jeden Fehler programmieren.

Das mit der Schleife hab ich noch nicht ganz verstanden.

Gruß Peraho
 
ja ist es. mit
L Pos_Flanken_Fehler // das wird da Wort mit den Alarmen sein
SLW 1 // immer um 1 weiter schieben in jedem durchlauf
SPZ WEIT und wenn 0 springe WEIT
WEIT:+AR1 P#2.0 nächstes DBW
 
Zuletzt bearbeitet:
Die ersten 10 Zeilen sind ne Wortweise Flankenauswertung oder?

richtig!

In der Schleife lade ich dann die pos. Flanken, schiebe das linke Bit raus.
Ist das Bit = 0 überspringe (SPZ) ich die Zählung.
Habe gerade noch einen Fehler gefunden :oops::
Code:
L Pos_Flanken_Fehler
SLW 1
[COLOR=Red]T Pos_Flanken_Fehler[/COLOR]
Wenn ein Fehler vorhanden ist wird der Wert hochgezählt.
Ist der Wert = 3 dann wird der Merker für die Sperrung gesetzt.

Ich hoffe, das macht es klarer.

Grüße
Gebs
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Code:
L  #LoopCounter// ist bei Loop nicht notwendig
Loop Loop // ist das möglich das man [COLOR=red]Loop[/COLOR] als sprungmarke verwenden kann??ist auf jeden fall nicht schön
 
Hi,

wenn Du zuerst schiebst und dann gleich Null prüfst, dann wird doch das Bit 0 nie geprüft, oder sehe ich das falsch?
Sonst is mir die Schleife und die Sprünge klar.
 
Hi,

tja da ich bisher in Step7 keine Schleifen benutzt habe kann ich dazu nicht viel sagen.

Gruß Peraho
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Gerhard,

Es ist möglich, da S7 Case-Sensitiv ist und der Befehl LOOP heisst.
Zum 2.: Du hast recht, dass es unschön ist. Der Code soll aber nur eine Denkhilfe sein.

Grüße
Gebs
 
ja du schiebst 16 mal,aber wo überprüfst du das bit 0??du rotierst ja das wort nicht du schmeißt links einfach nur raus
 
Zurück
Oben