Zeitmessung mit IEC Timer

Zuviel Werbung?
-> Hier kostenlos registrieren
Zeit2:=TON.ET ist nur eine Zuweisung. In Zeit2 wird der Wert geschrieben, den der TON bei seinem letzten Aufruf in ET geschrieben hat, also der Wert, der auch schon in Zeit1 geschrieben wurde.
Mit TON(ET=>Zeit2) wird der Timer dagegen ein zweites Mal aufgerufen. Meine Hoffnung war, das er dabei auch ET erneut aktualisiert. Das scheint bei Deiner Steuerung ja auch so zu sein, aber das Beispiel
Beckhoff zeigt, dass nicht jede Steuerung das so macht. Vermutlich werden bei Beckhoff die ET's aller TON's nicht bei ihrem Aufruf im Programm, sondern nur einmal vor Beginn des Programmzyklus aktualisiert.
Sehen kann man das, wenn man eine sehr lange Zykluszeit vorwählt, in der die Entwicklungsumgebung ohne weiteres ihre Online-Anzeige mehrmals pro Programmzyklus aktualisieren kann. Bei einer Zykluszeit von z. B. 500 ms kann man dann sehen, dass die ET's aller TON's immer Vielfache von 500 ms sind, es gibt nie Zwischenwerte.

Hi StructeredTrash

da es den Aufruf mit ET=>Zeit2 jetzt leider in B&R nicht gibt habe ich es doch nochmal mit Zeit2:=TON.ET gemacht und siehe da, es funktioniert.
Der Code sieht so jetzt doch wieder so aus:

TON(IN:=Start, PT:=t#100s);




IF Start=TRUE THEN
U:=230;

Zeit1:=TON.ET;


FOR i:=0 TO 3000000 BY 1 DO
wert:=wert+1;
x:=x+1;
RR:=RR+1;
P:=(U*U) /RR;
y:=SQRT(x);
z:=SIN(y);
e:=EXP(x);
m:=ATAN(e);
END_FOR;

TON(IN:=Start,
PT:=t#100s);
Zeit2:=TON.ET;


Start:=False;

END_IF;

Dauer:=#Zeit2-#Zeit1;


Du sagtest doch, dass sich bei TwinCat ET nur alle 500ms also bei jedem Programmyyklus aktualisiert.
Aber es scheint zu funktionieren.
Es wird mir eine Dauer von 15-17ms ausgegeben.
Warum geht es jetzt doch obwohl es sich nur alle 500ms aktualisiert?
Oder habe ich jetzt komplett einen Denkfehler?????

Vielen Dank Gruß
 
Ich habe mein Programm gerade von zwei wieder auf einen Timer zurückgebaut, und jetzt funktioniert es auch. So recht erklären kann ich mir das nicht, aber da muss in der ursprünglichen Version wohl ein Fehler gewesen sein.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe mein Programm gerade von zwei wieder auf einen Timer zurückgebaut, und jetzt funktioniert es auch. So recht erklären kann ich mir das nicht, aber da muss in der ursprünglichen Version wohl ein Fehler gewesen sein.

Sehr komisch. Aber Danke das du es auch nochmal probiert hast.
Heisst das jetzt, dass es sich doch nicht nur alle 500ms aktualisiert????

Kennst du dich eigentlich mit B&R Automation Runtime aus????

Vielen Dank nochmal

Gruß
 
Die Anzeige wird auch weiterhin nur alle 500 ms aktualisiert. Kann natürlich sein, dass dies sowieso nur einmal pro Taskzyklus erfolgt. Die von ET zurückgelieferten Zeiten sind allerdings jetzt unterschiedlich, so wie eigentlich erwartet.

Mit B&R kenne ich mich leider nicht aus.
 
Die Anzeige wird auch weiterhin nur alle 500 ms aktualisiert. Kann natürlich sein, dass dies sowieso nur einmal pro Taskzyklus erfolgt. Die von ET zurückgelieferten Zeiten sind allerdings jetzt unterschiedlich, so wie eigentlich erwartet.

Mit B&R kenne ich mich leider nicht aus.

Irgendwie raff ich ich grad garnichts mehr.
Bei mir ändert sich die Anzeige von ET nicht alle 500ms sondern so schnell wie auch die Dauer berechnet wird. Also wenn die Differenz Dauer=25ms sind ändert sich mein ET Wert auch in 25ms Schritten.
Wie und wo kommst du auf 500ms. Tut mir echt leid, da du es ja schonmal erklärt hast. Aber Ich verstehs grad nicht.:oops:
Kannst dus mir bitte nochmal erklären???

Vielen Dank
 
Zurück
Oben