Taktzeitmessung in TinCAT 3 mit Impulsticks Zählen

clumsi

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

ich möchte eine Schrittkette für eine Automatisierung zyklisch mit definierter Taktzeit starten und ggf. auch die Zeitdauern für bestimmte Teilabläufe bestimmen.

Hierzu habe ich mir überlegt, ein mit 2 TON-Bausteinen erzeugtes Impulssignal als Zeitbasis zu nehmen und die Ticks zu zählen, um auf die Zeit zu kommen.

Ich bin mir jedoch nicht sicher, wie genau das Impulssignal in Abhängigkeit der TwinCAT-Zykluszeit und der Impulsfrequenz ist:

  • Angenommen die Task-Zykluszeit liegt bei 10 ms und die EIN- und AUS-Dauer (also die beiden Zeiten der TON-Bausteine) liegen bei jeweils 5 ms: Müsste doch eigentlich zu einem Fehler führen, da die 5 ms des TON mit der TwinCAT-Zykluszeit doch gar nicht realisiert werden kann? Es gibt aber kein Fehler und scheint erstmal zu funktionieren; aber nicht genau.
  • Für Testzwecke habe ich nach Buttonklick 2 LED nach 10 s einschalten lassen. LED_1 wird mit der Tick-Zähl-Methode angesteuert, LED_2 wird direkt mit einem TON und der Startzeit von 10 s angesteuert. è LED_2 kommt früher.
  • Der Zeitversatz ist größer, wenn die Impulse für die Tick-Zähl-Methode kürzer werden und mehr gezählt werden muss…..

Woran könnte das liegen? Habt ihr Ideen oder Tipps für mich?

Ich wünsche euch schonmal nen schönes Wochenende 😉

Viele Grüße,
clumsi
 
Wenn ein TON eine kürzere Zeit als die Zykluszeit messen soll, dann gibt das keinen Fehler - nur die Zeit stimmt halt nicht. In einem Zyklus wird der TON gestartet und in den folgenden Zyklen wird verglichen, ob zwischenzeitlich >= Zeit vergangen ist als am TON angegeben. In dem Fall meldet der TON.Q "abgelaufen". Bei TON-Zeit 5ms und 10ms Task-Zykluszeit ist der TON bereits im nächsten Zyklus abgelaufen - was aber erst nach 10ms festgestellt/bemerkt wird. Dann muß der TON noch neu gestartet werden, dafür muß er einmal mit IN=0 aufgerufen werden, wofür je nach Programmierung zwei weitere Zyklen (je 10ms) vergehen können, oder der TON wird im selben Zyklus wo er abgelaufen ist ein zweites mal mit IN=0 aufgerufen und ein drittes mal mit IN=1 damit er gleich wieder neu startet.

Wenn Du eine feste Task-Zykluszeit hast, dann kannst Du doch einfach die Zyklen zählen und brauchst keinen TON/Timer.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn Du eine feste Task-Zykluszeit hast, dann kannst Du doch einfach die Zyklen zählen und brauchst keinen TON/Timer.
Eine bekannte Zykluszeit ist noch nicht mal nötig, man kann die Zykluszeit auch auslesen und diese dann für die Berechnung nutzen, siehe hier.
 
Zurück
Oben