einen FC genau einmal durchlaufen lassen. danach wieder resetten

superkato

Level-1
Beiträge
220
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
hi,

Wenn das VKE meines Programms = 1 ist, dann aktiviert ein merker m1.0 den FC.

Da mir das zu schnell läuft hab ich überlegt, ein Totzeitglied in form eines Impulsgebers reinzubauen, was auch funktioniert. also wenn VKE=1 dann soll der merker m1.0 nur 1 sekunde aktiv bleiben.

Das ist aber falsch glaub ich, weil dann die Schaltung die dran hängt, so lange wie die positive 1 aktiv ist läuft und wenn es auf einmal 0 ist bleibt die schaltung stehen und einer der gesetzten Ausgänge m4.0 (m4.0 setzt dann am sr einen A4.0) bleibt "1"

Wie kann ich nun programmieren, dass
1. wenn m1.0 ist die schaltung genau nur einmal durchläuft.

2. Das der Ausgang , also der m4.0 wieder 0 ist nach dem er eine 1 hatte.

3. statt SR Gliedern müsste ich ja eigentliche eine "Tasterfunktion mit Raste" benutzen. also einmal 1 = ein und nochmal 1 = 0

(wenn ich mich nicht irre gibts ja eine schaltung mit einem XOR glied und positiver flanken erkennung).


Würde super happy sein wenn mir da jemand hilft,

übrigens großes lob an dieses Forum, mir wurde wirklich sehr bei Fragen wo ich nich weiterkam geholfen!

gruß
sk
 
Code:
U     M    100.0                  //Abarbeitung Anfordern (zB. Dein VKE)
FP    M    100.1                  //Flankenmerker - Positive Flanke
S     M      1.0                  //Setze M1.0
SPBN  _x10                        //Springe Wenn False zu _x10
 
//abzuarbeitenter Code
 
R     M      1.0                  //Nach Abarbeitung Rücksetzen M1.0
_x10: NOP   0
 
@mst:
Hast Du ihn verstanden?

@superkato:
Ich verstehe nicht, worauf Du hinauswillst.

Ich habe Dich so verstanden: Du möchtest, dass Dein Baustein genau einen Zyklus lang abgearbeitet wird, Du möchtest aber, dass die Zuweisungen in diesem Baustein nach der Bausteinbearbeitung wieder FALSE sind.
 
@mst:
Hast Du ihn verstanden?

@superkato:
Ich verstehe nicht, worauf Du hinauswillst.

Ich habe Dich so verstanden: Du möchtest, dass Dein Baustein genau einen Zyklus lang abgearbeitet wird, Du möchtest aber, dass die Zuweisungen in diesem Baustein nach der Bausteinbearbeitung wieder FALSE sind.


ja genau .. ok dann hab ich mst nicht verstanden.
nich das da ein dauersignal aufm ausgang ist wenn die schaltung auf einmal stopt.

deswegen würd ich sie gerne genau einmal durchlaufen lassen.
30sec warten und dann noch mal.
 
Das kannst Du auf zwei Arten erreichen:
Entweder setzt Du vor Deinem Bausteinaufruf alles auf FALSE was in dem Baustein zugewiesen wird und rufst dann den Baustein in Abhängigkeit von einer Flanke auf (der Code von mst nur ohne den M1.0) oder Du verknüpfst in dem Baustein jede Zuweisung auf UND mit der Flanke.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
eigentlich müsste es so ausschauen oder?

also der m0.3 ist 1 die funktion wird aufgerufen.

würde es was bringen im nw 2 vorher eine flanken erkennung einzubauen also so dass die flanke die kette dort einmal durchlaufen lässt?

gruß.
sk



Uploaded with ImageShack.us
 
Zuletzt bearbeitet:
Das ist aber falsch glaub ich, weil dann die Schaltung die dran hängt, so lange wie die positive 1 aktiv ist läuft und wenn es auf einmal 0 ist bleibt die schaltung stehen und einer der gesetzten Ausgänge m4.0 (m4.0 setzt dann am sr einen A4.0) bleibt "1"

Wie kann ich nun programmieren, dass
1. wenn m1.0 ist die schaltung genau nur einmal durchläuft.

2. Das der Ausgang , also der m4.0 wieder 0 ist nach dem er eine 1 hatte.

3. statt SR Gliedern müsste ich ja eigentliche eine "Tasterfunktion mit Raste" benutzen. also einmal 1 = ein und nochmal 1 = 0

Hallo superkato,

wenn ich das richtig verstanden habe, hast du einen Baustein, in dem der A4.0 angesprochen wird.
Dieser Baustein wird bedingt aufgerufen.

Wenn dem so ist, dann ist folgendes Problem:
Alle Zuweisungen (S, R; =) innerhalb dieses Bausteins werden nach dessen Aufruf, nicht mehr bearbeitet.
d.h. der Zustand bleibt so wie beim letzten Zyklusdurchlauf erhalten.

Abhilfe wäre ein Rücksetzen ausserhalb des Bausteins, wenn dieser nicht bearbeitet wird (VKE ist identisch mit NichtSprung).
Das wäre dann aber eine Mehrfachzuweisung und nicht "gern gesehen".
Ist nur in ganz seltenen Fällen nötig, was hier bestimmt nicht zutrifft.

Muss der Baustein wirklich bedingt aufgerufen werden ?

Kannst du den mal posten ?

Edit:
Ich glaub ich werd langsam alt
Sind DIE schnell

Gruß Roland
 
Zuletzt bearbeitet:
So, wie Du es jetzt geschrieben hast, werden Deine Bausteine bearbeitet, solange der M0.4 TRUE ist. Außerdem hast Du immer noch das Problem, dass die OUT an den Bausteine den Zustand behalten, den sie haben, wenn die Bearbeitung endet.
 
Hallo superkato,


Wenn dem so ist, dann ist folgendes Problem:
Alle Zuweisungen (S, R; =) innerhalb dieses Bausteins werden nach dessen Aufruf, nicht mehr bearbeitet.
d.h. der Zustand bleibt so wie beim letzten Zyklusdurchlauf erhalten.


Gruß Roland

also die vier merker unten gehen an einen FC90 wo die Merker die Ausgänge in Form von "Taster mit Raste " aktivieren
(taster geht S von an einem SR und der SR setzt dann A4.x)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So, wie Du es jetzt geschrieben hast, werden Deine Bausteine bearbeitet, solange der M0.4 TRUE ist. Außerdem hast Du immer noch das Problem, dass die OUT an den Bausteine den Zustand behalten, den sie haben, wenn die Bearbeitung endet.

genau das ist das problem.

ich will das wenn der true is das da unten nur einmal durchlaufen wird und nicht so lang m0.4 true ist.

edit
und das die merker nach dem durchlauf wieder 0 gehen, damit ich kein dauersignal auf dem merker hab.
 
Zuletzt bearbeitet:
An Deiner Stelle würde ich im letzten Baustein (vielleicht könntest Du von dem Mal den Code posten) über eine Flanke von "Minimalwert unterschritten" den Merker für den passenden Motor setzen ,wenn eine der Einschaltbedingungen fehlt wieder zurücksetzen und den ganzen Mist mit nur einmal durchlaufen vergessen.
 
An Deiner Stelle würde ich im letzten Baustein (vielleicht könntest Du von dem Mal den Code posten) über eine Flanke von "Minimalwert unterschritten" den Merker für den passenden Motor setzen ,wenn eine der Einschaltbedingungen fehlt wieder zurücksetzen und den ganzen Mist mit nur einmal durchlaufen vergessen.

ich hab mal an den ausgängen vom letzten bausten die ausgangsmerker jeweils mit dem m0.4 verundet , also wenn der aktiv ist können die gesetzt werden wenn nicht dann sind die wieder 0

so hätte ich das problem beseitigt.

bleibt nur noch offen wie ich das alles genau einmal ablaufen lasse:
alle 40sec einmal drchlaufen wenn m0.4 =1
wenn 0 dann 0
 
@superkato
Du müsstest Mal den Code der Bausteine posten, sonst kann Dir langsam keiner mehr helfen.
 
Zurück
Oben