Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Re: Zykluszeiten einhalten Kategorie: CAN-Bus (von Tobias - 29.01.2009 11:07)
Als Antwort auf Re: Zykluszeiten einhalten von reneforster - 28.01.2009 19:16
Ich nutze:
C-Control II Unit, CC2-Application-Board, OSOPT V3.1
> Hallo Tobias,
>
> > habe eine Frage zum Zyklischen Senden über CAN. Ich muss eine Zykluszeit von ca. 20ms einhalten,
> > weil die Botschaft von einem Gateway geroutet wird.
>
> Musst Du jetzt eigentlich mind. 20ms Pause oder ein genaues Zeitfenster einhalten?
>
>
> > Nur weiÃ? ich nicht, wie ich diese einhalten kann,
> > weil das Senden zwischen 3-6ms dauert, auch manchmal über 10 ms und ich so keine Wartezeit mit
> > sleep generieren kann. Vielen Dank schonmal im Vorraus für eure Hilfe.
>
> Ich denke mal, der Zusammenhang liegt im Programm bzw. generell beim Multithreading. Da kannst Du
> leider nicht genau bestimmen, wenn der "Sendethread" abgearbeitet wird. Eventuell wird das Ergebniss
> etwas besser, wenn dein "Sendethread" mit hoher Prio läuft und die anderen Threads mit niegriger Prio.
> Des Weiteren in diesen Fall die Anzahl der Theads verringern.
>
> Aber das ist halt beim Multithreading alles nur Kosmetik.
>
> Weitere Ansätze wären im Sendethread nicht mit sleep zu arbeiten, sondern den freilaufenden Systemtimer
> abzufragen und ein Sendevorgang erst nach Ablauf von xx ms zu beginnen.
>
> So würde ich jedenfalls mal beginnen, um ein genaueres Intervall zu erhalten.
> Wie genau muss das denn eigentlich sein?
>
>
> Rene

Hallo Rene,
danke für deine schnelle Antwort. Also es sollten im besten Fall 20 ms sein, aber hab erfahren, dass
ich bis zu 5% Toleranz haben darf. Und gestern durch mehreres Probieren und umstrukturieren bin ich
auch auf eine saubere Zykluszeit gekommen. Mit Priorität habe ich es auch zuerst versucht, aber hat
nicht so viel gebracht. Eher weniger Systemmodule gebrauchen. Hab halt das Problem, das meine
Botschaft vom Gateway weiter geroutet wird und da alle 6 Sekunden das veraltet-Bit gesetzt wird für so
ca. 600ms. Obwohl ich mit der Zykluszeit korrekt bin und der Botschaftszähler wird in CanOE auch
richtig angezeigt. Aber denke, dass mir da nur jemand weiterhelfen kann, der sich mit dem Gateway
auskennt! ;)

GruÃ? Tobias


    Antwort schreiben


Antworten: