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