Forum: Mikrocontroller und Digitale Elektronik Botschaft Dauerhaft Senden Capl


von Stefan (Gast)


Lesenswert?

Hallo Zusammen,

ich wollte die Signale einer Botschaft auf die Init-Werte zurücksetzen.
Das geht Normalerweise mit dem Befehl setSignalStartValues(message msg).
Das Problem ist, die Botschaft msg wird mit dem Befehl Output(msg) nur 
einmal gesendet und dadurch werden Signal nicht richtig zurückgesetzt.

Die Frage ist: wie kann ich eine Botschaft dauerhaft auf dem Bus senden? 
gibt es einen anderen Befehl außer "Output", wodurch die Botschaft 
permanent aufm Bus bleibt?

Danke und Gruß

von Guest (Gast)


Lesenswert?

Welches Gerät? Welcher Bus? Wovon redest Du?

Sonst schick mal '42' auf den Bus und wart ab was passiert.

von Thomas E. (picalic)


Lesenswert?

Guest schrieb:
> Welches Gerät? Welcher Bus? Wovon redest Du?

CAPL - Du musst auch die Überschrift lesen!
(CAPL kenne ich zwar auch nicht, aber Google hätte Deine Frage in 2 
Sekunden beantwortet!)

von Guest (Gast)


Lesenswert?

Thomas E. schrieb:
> CAPL - Du musst auch die Überschrift lesen!

Prima, verstecken wir die wichtigsten Informationen damit man auch die 
erst suchen muß.

von Stefan (Gast)


Lesenswert?

Guest schrieb:
> Welches Gerät? Welcher Bus? Wovon redest Du?
>
> Sonst schick mal '42' auf den Bus und wart ab was passiert.

Gerät: Steuergerät "X"
Bus: CAN

Wie wovon rede ich :-). Ich möchte nur wissen von den Leute die von capl 
Ahnung haben, mit welchem Capl-Befehl eine Botschaft dauerhaft auf dem 
CAN-Bus gesendet werden kann.

von Stefan (Gast)


Lesenswert?

Thomas E. schrieb:
> Guest schrieb:
>> Welches Gerät? Welcher Bus? Wovon redest Du?
>
> CAPL - Du musst auch die Überschrift lesen!
> (CAPL kenne ich zwar auch nicht, aber Google hätte Deine Frage in 2
> Sekunden beantwortet!)

Hast du echt die Lösung gefunden? wenn du Output meinst dann ist es 
falsch! Ansonsten bitte sag es :-)

von Peter (Gast)


Lesenswert?

CAPL ist Eventgetrieben.

Lege dir einen Timer an und sende die Nachricht bei jedem Timer Event. 
Beispiel ist in canoe enthalten.

von Thomas E. (picalic)


Lesenswert?

Stefan schrieb:
> Hast du echt die Lösung gefunden?

Nein, sorry, ich bezog mich nur auf die zitierte Frage vom Gast, worum 
es überhaupt geht.

von Axel S. (a-za-z0-9)


Lesenswert?

Stefan schrieb:
> Die Frage ist: wie kann ich eine Botschaft dauerhaft auf dem Bus senden?
> gibt es einen anderen Befehl außer "Output", wodurch die Botschaft
> permanent aufm Bus bleibt?

Die Frage ergibt keinen Sinn. Ein Bus ist ein Transportmedium für Daten, 
z.B. in Form von Botschaften. Eine solche Botschaft belegt den Bus, 
während sie übertragen wird. Aber sie verbleibt nicht auf dem Bus, was 
auch genau so gewünscht ist. Sonst wäre der Bus ja nicht mehr für 
weitere Kommunikation nutzbar.

Man kann natürlich die gleiche Botschaft immer und immer wieder senden. 
Das ergibt zwar i.d.R. keinen Sinn und hat den unangenehmen Nebeneffekt, 
den Bus zu verstopfen. Aber wenn man das unbedingt will ...

Und wie man eine Botschaft sendet, weißt du ja anscheinend. Was soll die 
Frage dann? Brauchst du Hilfe dabei, eine Endlosschleife zu schreiben?

von Dr. Sommer (Gast)


Lesenswert?

Axel S. schrieb:
> Das ergibt zwar i.d.R. keinen Sinn und hat den unangenehmen Nebeneffekt,
> den Bus zu verstopfen.

Das ist bei Automatisierungs-und Fahrzeugbussen wie CAN absolut üblich 
und sinnvoll, denn der Zustand der Anlage ändert sich ja ständig und 
muss daher immer wieder aufs neue übertragen werden.

Die richtige Antwort wurde schon gegeben, also keine weitere Diskussion 
nötig:

Peter schrieb:
> Lege dir einen Timer an

von fishbone (Gast)


Lesenswert?

Was spricht gegen den IG (interactive generator), der das bequem 
übernimmt?

von Dr. Sommer (Gast)


Lesenswert?

fishbone schrieb:
> Was spricht gegen den IG (interactive generator), der das bequem
> übernimmt?

Vielleicht dass das kein CAPL ist und man da nicht automatisch 
programmatisch die Daten ändern kann?

von Soul E. (Gast)


Lesenswert?

Axel S. schrieb:

> Man kann natürlich die gleiche Botschaft immer und immer wieder senden.
> Das ergibt zwar i.d.R. keinen Sinn und hat den unangenehmen Nebeneffekt,
> den Bus zu verstopfen. Aber wenn man das unbedingt will ...

Der Fachbegriff dafür ist "zyklisch", engl. "cyclic.".

Wie bereits oben geschrieben macht man das beim CAN indirekt über einen 
Timer und beim LIN direkt über die Scheduling-Tabelle.

von Axel S. (a-za-z0-9)


Lesenswert?

Dr. Sommer schrieb:
> Axel S. schrieb:
>> Das ergibt zwar i.d.R. keinen Sinn und hat den unangenehmen Nebeneffekt,
>> den Bus zu verstopfen.
>
> Das ist bei Automatisierungs-und Fahrzeugbussen wie CAN absolut üblich
> und sinnvoll, denn der Zustand der Anlage ändert sich ja ständig und
> muss daher immer wieder aufs neue übertragen werden.

Klar. Ein neuer Zustand muß übertragen werden.
Aber doch nicht immer der gleiche.

von Dr. Sommer (Gast)


Lesenswert?

Axel S. schrieb:
> Klar. Ein neuer Zustand muß übertragen werden.
> Aber doch nicht immer der gleiche.

Je nach Anwendung, durchaus auch das - z.B. "der Controller lebt noch 
und der Akku ist noch nicht in Übertemperatur und der Motor darf weiter 
laufen". Kommt die Nachricht nicht mehr an, ist der Controller 
abgestürzt und man sollte die Anlage abschalten weil so die Akku 
Temperatur Überwachung nicht mehr funktioniert!

von J.L. (Gast)


Lesenswert?

Du kannst Botschaften über den sogenannten Interactionlayer zyklisch 
senden lassen.
Dazu benötigst du aber eine dbc-File in der die entsprechenden Attribute 
definiert sind.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.