VAR
timer : TON;
END_VAR
timer(PT:=t#1000s,IN:=FALSE);
timer(in:=TRUE);
time := timer.ET;
Code:VAR timer : TON; END_VAR timer(PT:=t#1000s,IN:=FALSE); timer(in:=TRUE); time := timer.ET;
timer(IN:={Startbedingung,bool},PT:={länger als die längste mögliche Taktzeit,time});
time := timer.ET; (*So wie im vorigen Beispiel angegeben*)
VAR
ZyklusZaehler:UDINT;
GemesseneZeit:TIME;
END_VAR;
IF Triggerflanke
THEN
GemesseneZeit:=UDINT_TO_TIME(Zykluszaehler*Taskzykluszeit);
Zykluszaehler:=0;
END_IF;
ZyklusZaehler:=ZyklusZaehler+1;
Wie kann ich in ST einen digitalen Eingang auf die positive oder negative Flanke abfragen?
VAR
timer :TON;
GemesseneZeit:TIME;
ZyklusZaehler:UDINT;
fStartflanke: R_TRIG;
END_VAR
fStartflanke(CLK:= DI_Conv1TriggerPosNotReached);
IF (fStartflanke.Q) THEN
GemesseneZeit:=UDINT_TO_TIME(Zykluszaehler*10); (*10 = 10ms Taskzyklus *)
Zykluszaehler:=0;
END_IF;
ZyklusZaehler:=ZyklusZaehler+1;
Ja, die sind mir bekannt, nur deren Aufruf mittels Structur Text leider nicht.
fbRTrig: R_TRIG;
bInput1 AT %I*: BOOL;
fbRTrig(CLK:= bInput1);
fbRTrig();
IF NOT fbRTrig.Q THEN[INDENT]/* Dein Code */[/INDENT]
END_IF
A
Zum Schluss musst du den Baustein noch auswerten:
Code:fbRTrig(); IF NOT fbRTrig.Q THEN[INDENT]/* Dein Code */[/INDENT] END_IF
IF NOT fbRTrig.Q THEN[INDENT]/* Dein Code */
[/INDENT]
END_IF
Es reicht aber, die Funktion einmal aufzurufen. Den 2.Aufruf fbRTrig(); kannst Du Dir sparen.
Code:IF NOT fbRTrig.Q THEN[INDENT]/* Dein Code */ [/INDENT] END_IF
fbRTrig.CLK:= bInput1;
fbRTrig(CLK:= bInput1);
If fbRTrig.Q Then
..
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?