hallo an die runde!
wieder mal eine frage eines anfängers.
ich soll u.a. die beleuchtung bei einem fahrzeug per can-bus steuern.
für das blinklicht verwende ich den BLINK-baustein aus der UTIL.lib.
soweit so gut!
ich benutze für die bereiche fahrzeug vorne und fahrzeug hinten zwei
gleiche i/o - module. die module arbeiten als slaves und über CAN-bus
(2.0B) mit dem master verbunden.
das blinklicht selbst funktioniert auch, bis auf folgende phänomene:
zeitverzögerung (ca. 0,3 sek).
tastverhältnis (ON/OFF), obwohl die beiden zeiten fix und gleich eingestellt
sind.
ich habe die beleuchtung in ein eigenes programm gepackt, das zyklisch
vom PLC_prg aus aufgerufen wird.
der PLC_PRG_TASK ist zyklisch mit einem intervall von 20ms eingestellt.
ist der erste effekt ein CAN-bus typischer? der task für den bus ist auch
zyklisch mit 100ms eingestellt.
warum sich plötzlich das tastverhältnis ändert ist mir schleierhaft!
Eine Gleichzeitigkeit kannst Du bei CANopen mit dem Sync-Modus erreichen
mein CAN-bussystem basiert leider nicht auf CANopen.
trotzdem danke für die info.
Ich hab mir anstelle des BLINK-Bausteins einen eigenen Taktgenerator
mittels eines zyklischen Zählers gebastelt. Eine als BYTE definierte
Variable wird bei jedem Durchlauf um einen Wert erhöht, wodurch
mehrere verschiedene Blinksignale erzeugt werden.
Ich hab dann noch die Zykluszeit für den PLC_PRG-Task auf einen
Wert eingestellt, der mit einem Vielfachen von 2 multipliziert wiederum
meine gewünschte Blinkerfrequenz ergibt.
Und siehe da, mit diesem "Timer" funktioniert es plötzlich!
Auch die vordere und die hintere Blinkerlampe blinken im Takt. Ich versteh
die Welt nicht mehr...
Hat jemand eine Idee, warum das so funktioniert, und mit dem BLINK-
Baustein nicht?
Noch eine interessante Beobachtung:
Ich beschreibe bei beiden Varianten jeweils für links und rechts eine
eigene Variable mit dem Blinksignal. Die Ansteuerung der eigentlichen
Lampenausgänge erfolgt unmittelbar hintereinander.
Bei Verwendung des BLINK-Bausteins werden selbst zwei Lampen, die sich
auf dem gleichen I/O-Modul befinden, unterschiedlich angesteuert
Log in to post a comment.
hallo an die runde!
wieder mal eine frage eines anfängers.
ich soll u.a. die beleuchtung bei einem fahrzeug per can-bus steuern.
für das blinklicht verwende ich den BLINK-baustein aus der UTIL.lib.
soweit so gut!
ich benutze für die bereiche fahrzeug vorne und fahrzeug hinten zwei
gleiche i/o - module. die module arbeiten als slaves und über CAN-bus
(2.0B) mit dem master verbunden.
das blinklicht selbst funktioniert auch, bis auf folgende phänomene:
zeitverzögerung (ca. 0,3 sek).
tastverhältnis (ON/OFF), obwohl die beiden zeiten fix und gleich eingestellt
sind.
ich habe die beleuchtung in ein eigenes programm gepackt, das zyklisch
vom PLC_prg aus aufgerufen wird.
der PLC_PRG_TASK ist zyklisch mit einem intervall von 20ms eingestellt.
ist der erste effekt ein CAN-bus typischer? der task für den bus ist auch
zyklisch mit 100ms eingestellt.
warum sich plötzlich das tastverhältnis ändert ist mir schleierhaft!
Eine Gleichzeitigkeit kannst Du bei CANopen mit dem Sync-Modus erreichen
mein CAN-bussystem basiert leider nicht auf CANopen.
trotzdem danke für die info.
Ich hab mir anstelle des BLINK-Bausteins einen eigenen Taktgenerator
mittels eines zyklischen Zählers gebastelt. Eine als BYTE definierte
Variable wird bei jedem Durchlauf um einen Wert erhöht, wodurch
mehrere verschiedene Blinksignale erzeugt werden.
Ich hab dann noch die Zykluszeit für den PLC_PRG-Task auf einen
Wert eingestellt, der mit einem Vielfachen von 2 multipliziert wiederum
meine gewünschte Blinkerfrequenz ergibt.
Und siehe da, mit diesem "Timer" funktioniert es plötzlich!
Auch die vordere und die hintere Blinkerlampe blinken im Takt. Ich versteh
die Welt nicht mehr...
Hat jemand eine Idee, warum das so funktioniert, und mit dem BLINK-
Baustein nicht?
Noch eine interessante Beobachtung:
Ich beschreibe bei beiden Varianten jeweils für links und rechts eine
eigene Variable mit dem Blinksignal. Die Ansteuerung der eigentlichen
Lampenausgänge erfolgt unmittelbar hintereinander.
Bei Verwendung des BLINK-Bausteins werden selbst zwei Lampen, die sich
auf dem gleichen I/O-Modul befinden, unterschiedlich angesteuert