sooo... bin jetzt endlich mal dazugekommen, das ganze mal auszuprobieren. jetzt stehe ich bloß vor einem seltsamen problem. hier erstmal der code des bausteins, falls das helfen könnte
Code:
FUNCTION FC155 : VOID
TITLE = 'Zeitmessung'
VAR_INPUT
Start :BOOL;
Stopp :BOOL;
Reset :BOOL;
OB1_Cycle :INT;
END_VAR
VAR_OUTPUT
ZW :INT;
END_VAR
VAR_IN_OUT
ET :INT;
RUN :BOOL;
END_VAR
IF Start AND NOT RUN AND NOT Stopp THEN
RUN := TRUE;
ET := 0;
END_IF;
IF RUN AND NOT Stopp THEN
ET := ET + OB1_Cycle;
END_IF;
IF Stopp THEN
ZW := (ET + 5) / 10;
RUN := FALSE;
END_IF;
IF Reset THEN
ZW := 0;
ET := 0;
RUN := FALSE;
END_IF;
END_FUNCTION
der baustein wird 13 mal in einem fc abgearbeitet, der ansonsten nichts weiteres enthält. die belegung könnt ihr am bild im anhang sehen. sie sieht im prinzip immer gleich aus. beim testen habe ich bloß die zeitmessung am ersten aufruf verwendet.
jetzt zum problem
ich will die zeitwerte in einen datenbaustein speichern. der baustein macht die messung und die berechnung am ende richtig und gibt den wert auch richtig aus, jedoch nur, solange das stopp-signal anliegt. sobald es wegfällt, bekommt das datenbausteinwort den wert 120. wenn ich dann wieder das stopp-signal anlege, bekommt das wort wieder den richtigen wert, bis es wieder weg ist. der datenbaustein wird sonst nirgends beschrieben und sämtliche belegungen sind eindeutig und nicht mehrfach verwendet.
wenn ich nun den ausgang mit einem merkerwort belege und dieses dann in das datenbausteinwort transferiere, behalten beide ihren richtigen wert.
noch etwas lustiges ist, dass alle nachfolgenden aufrufe am ausgang 120 ausgeben. sobald bei einem aufruf ein stopp-signal anliegt, haben alle folgenden ausgänge den wert null.
vielleicht ist es nur ein kleiner billiger fehler, aber ich komm einfach ned drauf :???:
ich hoffe, ihr könnt mir hier ein wenig weiterhelfen...
ich freu mich über eine antwort
mfg matthias