Timer während Ablauf wieder starten (FX2N)

Blue

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

wie kann ich das programmieren?
Wenn ich ein Taster drücke, läuft ein Timer ab der einen Ausgang schaltet (ausschaltverzögert).
Drücke ich den Taster wieder, wird der Timer nach ablauf automatisch wieder gestartet.

Ich steh da momentan grad voll auf der Leitung :confused:

Es handelt sich um eine Mitsubishi FX2N-64MT.

mfg.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

also ich versuch mal es etwas anderst zu erklären.

Wenn ich einen Taster drücke läuft ein Förderband (ca. 10sec).
Ist das Förderband abgelaufen wird es beladen.
Ist das Förderband beladen drücke ich wieder den Taster und es läuft wieder
die ca. 10sec ab.
Das funktioniert auch soweit. Nur möchte ich es jetzt so haben das ich den
Prozess wieder starten kann wenn das Förderband noch nicht abgelaufen ist.
Also "vorbestätigen".

Ich hoffe es ist jetzt etwas verständlicher.

mfg.
 
Quick and Dirty:
Das heißt, das Förderband läft nach dem letzten Tastendruck immer 10 Sekunden nach.

LDP X0 //Taster
SET M0

LD M0
ANI X0
OUT T0 K100

LD T0
RST M0

LD M0
OUT Y0 //Förderband

Mfg
Manuel
 
Hallo,

danke für den Vorschlag.
Leider kam meine Beschreibung wohl doch nicht ganz so rüber wie ich mir es vorstellte.
Also mit deinem Programmiervorschlag wird der Timer wieder resetet sobald man den Taster drückt und zählt von erneutem hoch.
Nur sollte der Timer trotz Tastendruck erst fertig ablaufen und dann von erneutem anfangen.

Ich versuche es nochmal:

Taster wird gedrückt, Förderband läuft.
Wird der Taster während dem Ablauf des Bandes wieder gedrückt,
läuft das Band trotzdem seine zeit ab, aber startet selbstständig wieder.
Hoffentlich ist es jetzt verständlicher.

Aber danke für die Hilfe.

mfg.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich versuche es nochmal:

Taster wird gedrückt, Förderband läuft.
Wird der Taster während dem Ablauf des Bandes wieder gedrückt,
läuft das Band trotzdem seine zeit ab, aber startet selbstständig wieder.
Hoffentlich ist es jetzt verständlicher.

Aber danke für die Hilfe.

mfg.


bist du dir da ganz sicher

was ist wenn einer 10 mal auf denn taster drückt dann hast du 100 sek
ist das wirklich so von dir geplant

die idee mit denn neustart finde ich besser

ansonsten musst du hergehen einen zähler generieren wie oft wurde der taster gedrückt und dann jedes mal denn timer neustarten wenn der zähler nicht null ist
 
Nochmal Quick and Dirty:

LDP X0
SET M0
ADD D0 K10 D0

LD M0
ANDP M8013
DEC D0

LD<= D0 K0
RST M0

LD M0
OUT Y0
 
Hallo,

nein ich will mit einem weiteren Tastendruck nicht die Zeit hochdrücken,
sondern nur "vorbestätigen" das nach der abgelaufenen Zeit das Band wieder ablaufen kann.
Sonst müsste ich am Taster stehenbleiben und warten bis die Zeit abgelaufen ist.

Also:
Das Förderband braucht ca. 10sec bis es vollständig entladen ist.
Das Material fliegt in einen Behälter.
Zum den Behälter wegnehmen und einen neuen drunter stellen, brauche
ich aber vieleicht nur 4sec.
Lassen wir mal das beladen des Förderbandes weg.
Habe ich nun den Behälter gewechselt und den Taster wieder gedrückt
läuft das Band nach den abgelaufenen 10sec wieder automatisch los.
Das ganze wiederholt sich so lange bis ich Feierabend mache.

Ich hoffe jetzt wird es verständlich

danke
mfg.
 
Wenn der Taster gedrückt wird während das Band läuft, dann muß dieser Tasterdruck zwischengespeichert werden und nach Ablauf der 10sec wird über das gespeicherte Signal der Timer und demzufolge das Band wieder gestartet. Ist doch gar nicht so schwer.

Gruß jmb
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Was du brauchst ist ein Automat, der einfach geplant werden kann:

Zustand 1: Warten auf Tastendruck
Zustand 2: Band läuft. Bei Tastendruck weiter zu Zustand 3. Wenn 10s abgelaufen sind weiter zu Zustand 4
Zustand 3: Wenn 10 s abgelaufen sind, weiter zu Zustand 2
Zustand 4: Band stoppen und weiter zu Zustand 1

Das musst du nur noch in AWL oder ST umsetzen. Ich kann nur ST

VAR_CONSTANT
STATE_WAIT : UINT := 0;
STATE_RUN : UINT := 1;
STATE_ACK : UINT := 2;
STATE_END : UINT := 3;
END_VAR

VAR
timer : TON;
state :UNIT := STATE_WAIT;
END_VAR

timer(PT:=t#10s)

CASE state OF
STATE_WAIT:
band := FALSE;
timer.IN := FALSE;
IF button THEN
state := STATE_RUN;
END_IF

STATE_RUN:
band := TRUE;
timer.IN := TRUE;
IF button THEN
state := STATE_ACK;
END_IF
IF timer.Q THEN
state := STATE_END;
END_IF;

STATE_ACK:
IF timer.Q THEN
state := STATE_RUN;
timer.IN := FALSE;
END_IF;

STATE_END:
state := STATE_WAIT;
band := FALSE;
END_CASE


So oder ähnlich sollte die Logig sein. Einfach einen Automaten skizzieren und der Rest ergibt sich von selbst.
 
Zuletzt bearbeitet:
Hallo,

danke für die Antwort.
Leider hab ich mit ST nix am Hut. Könnte das jehmand übersetzten in AWL?


mfg.
 
Wieso programmierst du eigentlich mit AWL? ST als Pascal-Dialekt ist doch wesentlich einfacher, weil besser zu lesen und man kann das Problem fast in natürlicher Sprache beschreiben, während AWL ja einen Assembler-Charakter hat.
 
Zurück
Oben