Eine Verständnisfrage (pos. Flanke)...

anne

Level-1
Beiträge
347
Reaktionspunkte
2
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi Ihr,

ich habe eine Verständnisfrage, bei der ich grad nicht weiter komme…

Über eine positive Flanke wird eine Funktion (siehe Bild 1) aufgerufen. In der aufgerufenen Funktion FC2 (Aufruf erfolgt in OB1) wird in Netzwerk 1 ein Ausgang gesetzt (siehe Bild 2) - ebenfalls über eine positive Flanke. Dieser Merker "M_Write_Time" wird über einen Taster am Bedienpanel gesetzt.

Mein Problem:

Wie kann das überhaupt klappen?

Angenommen es wird der Starttaster gedrückt, so wird ja der Ausgang A5.0 noch nicht gesetzt, da die Aufrufbedingung (positive Flanke der LS) noch nicht vorhanden ist. Nun kommt die pos. Flanke der Lichtschranke und die Funktion FC2 wird aufgerufen:

Aber nun steht doch die pos. Flanke von "M_Write_Time" nicht mehr an. Dennoch startet jetzt der Antrieb!

Frage: Wird hier die pos. Flanke des Merkers "M_Write_Time" gespeichert, bis der Funktionsaufruf erfolgt?


Lieben Dank für eine Erklärung!
 

Anhänge

  • Bild1.jpg
    Bild1.jpg
    9,7 KB · Aufrufe: 58
  • Bild2.jpg
    Bild2.jpg
    7,3 KB · Aufrufe: 55
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Da du nur einen Zyklus lang in die Function springst aber dort nochmals eine Flanke abfrägst, die wiederum einen 2. Zyklus benötigt um sauber zu arbeiten, funktioniert das alles nicht richtig.

D.h, du solltest länger in dem Baustein bleiben (min 2.Zyklen), damit die Flankenauswertung garantiert ist.
 
D.h, du solltest länger in dem Baustein bleiben (min 2.Zyklen), damit die Flankenauswertung garantiert ist.

Danke für deine Antwort Verpolt - nun das Programm funktioniert eigentlich schon...

Frage: Wie könnte ich das bewerkstelligen, dass ich z.B. 2 Zyklen im aufgerufenen Baustein verweile?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke für deine Antwort Verpolt - nun das Programm funktioniert eigentlich schon...

Frage: Wie könnte ich das bewerkstelligen, dass ich z.B. 2 Zyklen im aufgerufenen Baustein verweile?

Warum benötigst du für den FC-Aufruf eine Flanke?

Lass den immer aurufen und nimm die Bedingung mit in den Baustein.
 
Nun, weil in dem FC ein schneller Zähler programmiert ist, der eben nur bei der Bedingung "pos. Flanke von LS" aktiviert werden soll.

Warum klappt das Programm aber überhaupt?

Wird hier die pos. Flanke des Merkers "M_Write_Time" gespeichert, bis der Funktionsaufruf erfolgt?
 
Nun, weil in dem FC ein schneller Zähler programmiert ist, der eben nur bei der Bedingung "pos. Flanke von LS" aktiviert werden soll.

Warum klappt das Programm aber überhaupt?

Wird hier die pos. Flanke des Merkers "M_Write_Time" gespeichert, bis der Funktionsaufruf erfolgt?

Flanke an LS + gedrückte (gesetzte?) Taste am TP--->FC wird bearbeitet-->Der Flankenmerker wird gesetzt.
FC wird nicht mehr bearbeitet.
Erneuter Aufruf durch Flanke an LS--->FC wird bearbeitet--->gesetzter Flankenmerker (vom vorherigen Aufruf) löst Flanke aus und SETZT deinen Ausgang
 
Zuviel Werbung?
-> Hier kostenlos registrieren
gesetzter Flankenmerker (vom vorherigen Aufruf) löst Flanke aus und SETZT deinen Ausgang

Danke Verpolt,

d.h. also schon, dass die einmal ausgelöste pos. Flanke des Merkers "M_Write_Time" (durch Drücken des Tasters) so lange gespeichert bleibt, bis der Funktionsaufruf erfolgt, oder?
 
Danke Verpolt,

d.h. also schon, dass die einmal ausgelöste pos. Flanke des Merkers "M_Write_Time" (durch Drücken des Tasters) so lange gespeichert bleibt, bis der Funktionsaufruf erfolgt, oder?

Deine globaleVariable "M_Write_Time" ist ein Merker und wird unabhängigd vom Aufruf des FC geschrieben(gespeichert). Springst du in den FC, so wird die Flanke im FC ausgelöst. Da du aber nur einen Zyklus lang im FC bleibst, ist die Flankenauswertung nicht "sauber". Bei einer negativen Flanke müßtest auf den erneuten FC Aufruf warten.

Drücken (setzten?) der Taste wird gespeichert in "M_Write_Time", unabhängig vom Aufruf der FC.

Wird jetzt der FC über die LS-Flanke einmal aufgerufen, dann setzt der gesetzte "M_Write_Time" den Flankenmerker "irgendwasTag M9.0?). Der setzt den Ausgang.

Der Flankenmerker "irgendwasTag M9.0" bekommt zum Beispiel gar nicht mit, dass die Taste wieder losgelassen(rückgesetzt) wurde. Da kann es passieren, daß bei einem Aufruf des FC die Flanke nicht auslöst, weil der Flankenmerker immernoch von vorher gesetzt ist.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hm, aja danke vierlagig - hatte irgendwie deine Antwort nicht verstanden, sorry!

Richtigerweise wird ja eigentlich nicht die pos. Flanke gespeichert, da ja zu einem best. Zeitpunkt der Merker M9.0 über einen Taster gesetzt wurde und nun beim Funktionsaufruf einfach nur eine pos. Flanke bildet, oder sehe ich das falsch?
 
Ok Verpolt - danke, du warst schneller als ich mit meiner Antwort aus Thread #12. Dann wird also die Flanke im eigentlichen Sinn nicht gespeichert, richtig?
 
Wird jetzt der FC über die LS-Flanke einmal aufgerufen, dann setzt der gesetzte "M_Write_Time" den Flankenmerker "irgendwasTag M9.0?). Der setzt den Ausgang.

Der Flankenmerker "irgendwasTag M9.0" bekommt zum Beispiel gar nicht mit, dass die Taste wieder losgelassen(rückgesetzt) wurde. Da kann es passieren, daß bei einem Aufruf des FC die Flanke nicht auslöst, weil der Flankenmerker immernoch von vorher gesetzt ist.

Der Flankenmerker ist aber doch der M15.0 - also wird doch der Ausgang A5.0 über den Flankenmerker M15.0 gesetzt...

Danke!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ok Verpolt - danke, du warst schneller als ich mit meiner Antwort aus Thread #12. Dann wird also die Flanke im eigentlichen Sinn nicht gespeichert, richtig?

Stell die einfach vor, du springst in den Baustein und deine Bedingung vor der Positiven Flanke ist 1--fertig. Erst jetzt wird der M15.0 (Flankenmerker/Hilfsmerker) für einen Zyklus 1.

Da du nicht ein zweites mal reingehst (LS-Flanke) bleibt der M15.0 auf 1. Wird deine Taste zurückgesetzt (Bedingung=0) und du springst wieder in den Baustein ist die Flanke nicht funktionsfähig, da noch von vorher die 1 gespeichert ist usw.....
 
Zuletzt bearbeitet:
Stell die einfach vor, du springst in den Baustein und deine Bedingung vor der Positiven Flanke ist 1--fertig. Erst jetzt wird der M15.0 (Flankenmerker/Hilfsmerker) für einen Zyklus 1.

Da du nicht ein zweites mal reingehst (LS-Flanke) bleibt der M15.0 auf 1. Wird deine Taste zurückgesetzt (Bedingung=0) und du springst wieder in den Baustein ist die Flanke nicht funktionsfähig, da noch von vorher die 1 gespeichert ist.

und ich stell mir grad vor, dass es am ende des OB1 einen FC999 gibt in dem steht:

Code:
if(M15.0) then M15.0:=false end_if;

:rolleyes:
 
Zurück
Oben