-> Hier kostenlos registrieren
Hallo zusammen,
ich hätte da mal wieder eine Frage.
Ich hab da eine CANopen Masterklemme die alle 15 ms eine Sync-Nachricht auf den CAN-Bus schickt. Wenn ich es richtig verstanden habe, dann "toggelt" die Variable CANState im System Manager immer zwischen 0 und 0x8000 beim Versenden der Sync-Nachricht.
Also hab ich die Variable CANState nun mit einer Task verknüpft und ein IF-Konstrukt programmiert, wenn CANState = 0x8000 dann die 1. Instanz des Bausteins GETSYSTEMTIME aufrufen und wenn CANState = 0, dann die 2. Instanz des Bausteins GETSYSTEMTIME aufrufen.
Die beiden Zahlenwerte subtrahiere ich nun voneinander um die "angebliche" CANopen Sync Zeit zu bekommen.
Allerdings pendelt der Wert immer zwischen 5 ms, 10 ms und 15 ms, also 0x249F0, 0x186A0 und 0x0C350.
Ich dachte es könnte vielleicht mit der Sync Cycle Multiplier zusammenhängen. Die Zykluszeit der Task beträgt 5 ms und der Sync Cycle Multiplier steht auf 3, so dass die Task 3 mal aufgerufen wird, bevor das nächste Sync gesendet wird.
Allerdings habe ich nun mal testweise den Sync Cycle Multiplier auf 1 gesetzt und der Messwert toggelt immer noch zwischen 5 ms, 10 ms und 15 ms.
Hat jemand schonmal so eine Zeitmessung mit der SPS realisiert und kann mir sagen ob das überhaupt der richtige weg ist ?
MfG fontsix
ich hätte da mal wieder eine Frage.
Ich hab da eine CANopen Masterklemme die alle 15 ms eine Sync-Nachricht auf den CAN-Bus schickt. Wenn ich es richtig verstanden habe, dann "toggelt" die Variable CANState im System Manager immer zwischen 0 und 0x8000 beim Versenden der Sync-Nachricht.
Also hab ich die Variable CANState nun mit einer Task verknüpft und ein IF-Konstrukt programmiert, wenn CANState = 0x8000 dann die 1. Instanz des Bausteins GETSYSTEMTIME aufrufen und wenn CANState = 0, dann die 2. Instanz des Bausteins GETSYSTEMTIME aufrufen.
Die beiden Zahlenwerte subtrahiere ich nun voneinander um die "angebliche" CANopen Sync Zeit zu bekommen.
Allerdings pendelt der Wert immer zwischen 5 ms, 10 ms und 15 ms, also 0x249F0, 0x186A0 und 0x0C350.
Ich dachte es könnte vielleicht mit der Sync Cycle Multiplier zusammenhängen. Die Zykluszeit der Task beträgt 5 ms und der Sync Cycle Multiplier steht auf 3, so dass die Task 3 mal aufgerufen wird, bevor das nächste Sync gesendet wird.
Allerdings habe ich nun mal testweise den Sync Cycle Multiplier auf 1 gesetzt und der Messwert toggelt immer noch zwischen 5 ms, 10 ms und 15 ms.
Hat jemand schonmal so eine Zeitmessung mit der SPS realisiert und kann mir sagen ob das überhaupt der richtige weg ist ?
MfG fontsix