Step 7 Schrittkette auf Fehler abfragen?

spirit

Level-1
Beiträge
961
Reaktionspunkte
23
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Ihr,

ich hänge mal grad wieder an einem Problemchen - wäre lieb, wenn ich mir helfen könntet.

Ich möchte gerne nach Bearbeitung einer Schrittkette (z.B. zehn Schritte) abfragen, ob auch alle Schritte korrekt durchlaufen wurden ...

Mein Ansatz:

IF (Schrittkette >0) AND (Schrittkette < 10) THEN
Merker := 1;
END_IF;

Also, wenn die Schrittkette nicht bis in Schritt 10 gelangt, dann soll "Merker" gesetzt werden. Das passiert auch; allerdings halt auch, wenn die SK den letzten Schritt erreicht.

Frage:

Wie könnte ich das umgehen, dass der Merker bei jedem Durchlauf der Kette gesetzt wird, obwohl ja alles ok ist?


Lieben Dank!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie kommt denn eine lineare Schrittkette in Schritt 10, wenn nicht vorher alle Schritte bearbeitet wurden ...

Ähm gar nicht! Das ist ja genau das, was ich erfassen möchte. Wenn also nach Abarbeitung einer SK der letzte Schritt (hier 10) nicht erreicht wird, dann soll "Merker" gesetzt werden.

Das passiert bei meinem Code aber auch, wenn die SK komplett durchlaufen wird ...
 
Üblicherweise werden Schrittketten mit Zeiten überwacht.
Entweder du machst das die Kette gesamt oder für jeden Schritt.
 
D.h. Du brauchst eigentlich eine Überwachung (ich nehme mal an eine bestimmte Zeit)

Warum setzt Du dann nicht im Schritt 1 einen Merker der die Überwachung startet, bzw in Schritt 10 dann zurücksetzt. Wenn Deine Überwachung abläuft hast du eigentlich dein Signal.

Gruß Peter
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ähm gar nicht! Das ist ja genau das, was ich erfassen möchte. Wenn also nach Abarbeitung einer SK der letzte Schritt (hier 10) nicht erreicht wird, dann soll "Merker" gesetzt werden.

Das passiert bei meinem Code aber auch, wenn die SK komplett durchlaufen wird ...

Ist dein Ansatz richtig? Erst nach Ende der Schrittkette zu prüfen?
Normal ist es doch so, dass jeder Schritt mit einer Zeit überwacht wird und dann eine ausagekräftige Meldung ausgegeben wird.
Also eine Überwachungszeit für jede Änderung des Schrittzählers.
Mit einer Schrittnummer einen Timer starten, solange dieser unverändert ist läuft die Zeit.

Wobei ich keine Schrittkette in SCL schreiben würde.


bike
 
Ok, ich danke euch schon mal!

Also wenn ich das richtig verstanden habe, dann in Schritt 1 einen Merker setzen und diesen in Schritt 10 rücksetzen.

Am Ende der SK einen Timer TON mit diesem Merker starten - wenn der Timer abläuft, dann passt was nicht. War das so von euch gemeint?


Danke ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein, der Timer muß schon in Schritt 1 gestartet werden, weil du im Fehlerfall gar nicht bis zum Schritt 10 kommst. Schritt 10 schaltet den Timer wieder aus.

Abfragen mußt du dann den Timer extern ( Ausserhalb der Schrittkette )

Mfg
 
Also wenn ich das richtig verstanden habe, dann in Schritt 1 einen Merker setzen und diesen in Schritt 10 rücksetzen.
Am Ende der SK einen Timer TON mit diesem Merker starten - wenn der Timer abläuft, dann passt was nicht. War das so von euch gemeint?

Du hast es richtig verstanden.
Denk aber daran, dass du den Merker auch resetest wenn die Kette gewollt gestoppt oder abgebrochen wird.
 
Nein, der Timer muß schon in Schritt 1 gestartet werden, weil du im Fehlerfall gar nicht bis zum Schritt 10 kommst. Schritt 10 schaltet den Timer wieder aus.

Abfragen mußt du dann den Timer extern ( Ausserhalb der Schrittkette )

Mfg

Danke magier,

aber wird der Timer nicht in Schritt 1 gestartet; nämlich durch den Merker, den ich in Schritt 1 setze?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn du nur einen Timer nutzen willst, darf der Timer überhaupt nicht in der Schrittkette sitzen, weil er dann nur abgearbeitet wird, wenn die Kette im entsprechenden Schritt steht. Deshalb den Timer extern, sprich außerhalb der Schrittkette programmieren. Wenn deine Schritte von der Länge her aber stark variieren, ich sage jetzt mal übertrieben einer dauert 30 Sekunden der andere 30 Minuten, dann ist ein Timer mit fester Zeit nicht unbedingt der beste Ansatz ;)
 
Wenn die Zeit aber nicht immer gleich ist, zBsp. bleibt ein Transportwagen da stehen wo er zuletzt etwas abgelegt hat, nun weiß ich ja im Vorfeld nicht wo der steht und muß die Fahrzeit erst berechnen. Ich hab dann meist in jedem Schritt einen Timer und es wird die Zykluszeit in dem Schritt überwacht.
Wenn es nur sowas wie Reinfahren, Spannen, Pressen usw. ist kann man ja wie schon vorgeschlagen einen Timer außerhalb der Kette nehmen und wenn der kommt einfach die Schrittnummer auslesen.
 
Wenn du nur einen Timer nutzen willst, darf der Timer überhaupt nicht in der Schrittkette sitzen, weil er dann nur abgearbeitet wird, wenn die Kette im entsprechenden Schritt steht. Deshalb den Timer extern, sprich außerhalb der Schrittkette programmieren. Wenn deine Schritte von der Länge her aber stark variieren, ich sage jetzt mal übertrieben einer dauert 30 Sekunden der andere 30 Minuten, dann ist ein Timer mit fester Zeit nicht unbedingt der beste Ansatz ;)

Hm sorry,

aber glaube das verstehe ich nicht so ganz oder "reden" wir nur aneinander vorbei?

Also ich hatte vor den Timer am Ende der SK zu platzieren; zwar im gleichen FB wie die SK aber nicht in einem Schritt der Kette. Lediglich der den Timer auslösende Merker ist Bestandteil eines Schrittes der Kette ...

Oder ist das falsch?
 
Jetzt noch einige Fragen nachgeschoben ...

Wenn ich nun jede einzelne Zylinderbewegung überwachen möchte, dann ufert das aber doch auch ganz schnell aus, oder?

Dann bräuchte ich ja für jede Zylinderbewegung (GS/AS) je einen eigenen Timer. Bei langen Schrittketten wäre das ein sehr großer Aufwand, oder nicht?

Und beeinflussen so viele Timer die Zykluszeit nicht negativ?


Lieben Dank!
 
Du kannst folgender Massen vorgehen:
Wenn die Schrittkette aktiv ist, einen Merker setzen.
Mit diesem Merker eine Zeit starten.
Mit jeder Weiterschaltung mit einer Flanke den Timer zurücksetzen.
Wenn die Zeit abgelaufen ist, wird der Timer = 1 und dem Schrittzähler, kannst du eine Meldung entsprechend generieren.

Wobei ich Bewegungsüberwachungen ich nicht in einer Schrittkette machen würde.
Wir machen für jeden Aktor die Steuerung und Überwachung extern in einer eigenen Funktion.


bike
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du kannst folgender Massen vorgehen:
Wenn die Schrittkette aktiv ist, einen Merker setzen.
Mit diesem Merker eine Zeit starten.
Mit jeder Weiterschaltung mit einer Flanke den Timer zurücksetzen.
Wenn die Zeit abgelaufen ist, wird der Timer = 1 und dem Schrittzähler, kannst du eine Meldung entsprechend generieren.

Wobei ich Bewegungsüberwachungen ich nicht in einer Schrittkette machen würde.
Wir machen für jeden Aktor die Steuerung und Überwachung extern in einer eigenen Funktion.


bike


Danke bike,

nur wie würde dann so eine Überwachung extern in einer eigenen FC aussehen?

Dann musst du ja die einzelnen Schrittkettenpositionen nach Außen führen - aber wie handelts du dann für die einzelnen Schritte die Überwachung?

Kannst du vielleicht mal für einen Zyl. ein Beispiel posten?

Danke!
 
Die Schrittkette sagt:
Schritt 0815 Aktiv (Bit in DB oder Merker)

Der Externe Baustein steuert dann die Hardware + macht die Überwachung ala
O Schritt0815
O Schritt0818
= Zylinderxy->AS

Jeder Schritt ist, ganz gleich welche Aktion er Auslöst nur ein Bit in einem DB oder alternativ ein Merker.


Den Treiberbaustein kann man dann ganz wunderbar mit einem UDT als Parameterbereich in einen FB verpacken mit Handbetrieb und allem PiPaPo.
Im Treiberbaustein steht dann etwas ala:
U Ausgang_AS
UN Rückmeldung_AS
= Timer1

Mfg
Manuel
 
Nehmen wir mal an deine Schrittkette brauch ca. 20 Sekunden wenn alles normal funktioniert, jetzt rechnen wir etwas Puffer drauf und sagen, wenn die Kette in 30 Sekunden nicht durchlaufen ist, ist was faul.
Also startest du mit der Schrittkette einen Timer für 30 Sekunden. Sollte die SK in dieser Zeit nicht beim letzte Schritt ankommen, wird eine Fehlerbehandlung durchgeführt, der aktuelle Schritt ausgelesen und ein Meldung (Zyklusüberwachung, Zeitüberschreitung) bzw. was du willst ausgegeben. Am besten geht das, wenn die Schritte als Integer hochgezählt werden, die kann man ja in einen globalen DB bzw auf ein MW legen.
Falls der Ablauf komplexer wird, kann man das ja mit Timern in den einzelnen Schritten machen.
 
Zurück
Oben