Gleichzeitigkeit...

hepo
2009-04-03
2009-04-23
  • hepo - 2009-04-03

    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:

    1. das blinklicht hinten hat gegenüber dem vorderen einen merkliche

    zeitverzögerung (ca. 0,3 sek).

    1. nach ca. 20 blinksignalen ändert sich plötzlich unregelmäßig das

    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!

     
  • controllfreak - 2009-04-04

    Eine Gleichzeitigkeit kannst Du bei CANopen mit dem Sync-Modus erreichen

     
  • hepo - 2009-04-05

    mein CAN-bussystem basiert leider nicht auf CANopen.

    trotzdem danke für die info.

     
  • hepo - 2009-04-23

    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.