CAN-Nachricht über CANalyzer schicken

Gast #4200028
Lesenswert?

Hallo,
ich habe eine CAN-Kommunikation und möchte diese zunächst testen.
Jetzt habe cih CANalyzer von Vector. Ist es dort irgendwie möglich, im 
laufenden Betrieb eine Nachricht zu erstellen?
Also ich kann bisher direkt über CANalyzer und CAPL vorher definierte 
Nachrichten verschicken.
Da ich die Zustände im laufenden Betrieb aber nicht vorhersagen kann, 
möchte ich gerne Nachrichten, bzw. die Daten der Nachrichten im 
laufenden betrieb bestimmen und verschicken.
ist soetwas irgendwie möglich?
#4200059
Lesenswert?

Johannes schrieb:
> Da ich die Zustände im laufenden Betrieb aber nicht vorhersagen kann,
> möchte ich gerne Nachrichten, bzw. die Daten der Nachrichten im
> laufenden betrieb bestimmen und verschicken.
> ist soetwas irgendwie möglich?

Das klingt jetzt aber eher nach Restbussimulation als nach Analyse.
Dafür ist soweit ich weiß CANoe gedacht, dass in der Hinsicht vieles zu 
bieten hat.

Aber was hindert dich daran, in deinem CAPL Code dynamisch die zu 
sendenden Daten/Signale) festzulegen?
Gast #4200124
Lesenswert?

Ja, nur dass der Interaktive Generatorblock nur mit CANoe funktioniert 
(soweit ich das weiss) und ich leider nur CANalyzer habe.

Zumindestens wird, wenn ich beim Senden auf 'jetzt' drücke, keine 
Nachricht rausgesendet.
das habe ich getestet. Beim Suchen im Internet, wird dieser Block immer 
nur mit CANoe in verbindung gebracht.
Aber so etwas wäre schon sehr schick.
#4200156
Lesenswert?

Ich habe selber nur eine Canalyzer Lizenz (allerdings gerade nicht 
installiert, daher kann ich's nicht im Detail nachvollziehen) und schon 
mit dem IG gearbeitet. Deswegen bin ich mir 100% sicher, dass das damit 
geht. Also jedenfalls das zyklische oder manuelle Senden von Daten mit 
variablem Inhalt auf unterschiedlichen IDs. Ob man damit durch eine 
empfangene Botschaft getriggert senden kann weiß ich nicht.
Du musst in deinem Netzwerk den IG hinzufügen, dort eine vordefinierte 
.dbc. konfigurieren und kannst dann dort Botschaften hinzufügen und 
senden.
So ungefähr jedenfalls :-)
Gast #4200225
Lesenswert?

Boris P. schrieb:
> Du musst ihn natürlich in den Sendezweig des Messaufbaus stecken

Das habe ich.

Boris P. schrieb:
> Reicht dir denn ein manuelles Senden? Oder willst du programmatisch
> senden?

Ich möchte ja manuell Senden. Programmatisch habe ich ja schon, aber nur 
mit vorher definierten daten.

Bisher ist auf fast jeder Taste meiner Tastatur eine Nachricht mit 
bestimmten Daten hinterlegt. diese kommen auch an meinem Board an.
Aber wenn ich jetzt einen Wert senden möchte/muss, den ich nciht 
berücksichtigt habe, muss ich die ganze messung abbrechen, den wert neu 
hinzufügen und neu messen. Dann ist ncoh nichtmals klar, dass dieser 
wert wieder benötigt wird.
so habe ich die nachricht erstellt. wenn ich jetzt auf 'Sende' klicke, 
passiert nichts. Im CAN-Trace wird auch nichts angezeigt, dass eine 
Nachricht versendet wurde.
Angehängte Dateien:
Gast #5134494
Lesenswert?

Ich hätte auch noch ne Frage zu CanOe, CAPL und CanDB.

Ich würde gerne über einen Button einen "Startbefehl" an den IG 
übermitteln.
Dieser schickt dann Datenpakete an meinen Microcontroller.
Wie muss ich das im CAPL programmieren.
Habe schon viel versucht aber nicht zum gewünschten Erfolg gekommen.

Wenn es einfacher ist, dann ich auch im CAPL die zusendende Nachricht 
hinterlegen, das der IG nur noch "angeschuckt" werden muss.

Hoffe hier kann mir jmd helfen
Gast #5134628
Lesenswert?

rosch92 schrieb:
> Wenn es einfacher ist, dann ich auch im CAPL die zusendende Nachricht
> hinterlegen, das der IG nur noch "angeschuckt" werden muss.

Wozu dann überhaupt den IG? Kannst es ja gleich über CAPL machen ;-)
1
variables
2
{
3
  msTimer mTimer;
4
}
5

6
on start
7
{
8
  setTimerCyclic(mTimer, 250);
9
}
10

11
on timer mTimer
12
{
13
  message 100 msg;
14
  msg.DLC = 1;
15
  msg.BYTE(0) = 0xff;
16
  output(msg);
17
}
Gast #5154894
Lesenswert?

Wurx schrieb:
> rosch92 schrieb:
>> Wenn es einfacher ist, dann ich auch im CAPL die zusendende Nachricht
>> hinterlegen, das der IG nur noch "angeschuckt" werden muss.
>
> Wozu dann überhaupt den IG? Kannst es ja gleich über CAPL machen ;-)
> variables

Genau, ich will ja den IG los werden und das ganze über einen Button 
starten lassen :)
Gast #5154920
Lesenswert?

variables
{
  msTimer mTimer;
}


on envVar Button1
{
    setTimerCyclic(mTimer, 250);
}


on timer mTimer
{

  message 100 msg;
  msg.id = 0x1;
  msg.DLC = 1;
  msg.BYTE(0) = 0xff;
  output(msg);
}


Wo ist mein Fehler?
Bei Statusänderung von Button1 soll eine CAN-Botschaft auf den Bus 
gelegt werden mit der ID 1 und 1x Datenbit FF.
Leider sehe ich im Trace nichts
Gast #5155154
Lesenswert?

Borislav B. schrieb:
> rosch92 schrieb:
> Wo ist mein Fehler?
>
> Im Prinzip sieht das richtig aus. Der Fehler liegt also irgendwo im
> Detail.
> Ich hab dir mal ein Beispiel gemacht (für CANoe 9 und 10).
>
> Das läuft bei mir einwandfrei (getestet mit virtuellem CAN Kanal).


Vielen Dank! Es funktioniert!
Aber wie stell ich ein das die Nachricht nur 1x geschickt wird?
#5155483
Lesenswert?

rosch92 schrieb:
> Vielen Dank! Es funktioniert!
> Aber wie stell ich ein das die Nachricht nur 1x geschickt wird?

Dann lässt du den timer weg, und packst den Sende-Code direkt in den on 
sysvar Handler. Dann wird nur 1x gesendet, wenn sich die Systemvariable 
(durch den Button auf dem Panel) ändert.

Zusätzlich solltest du noch prüfen, ob die Variable == 1 ist, und nur 
dann senden. Sonst gehen zwei Botschaften raus, eine beim runterdrücken 
und eine beim loslassen des Buttons.
Gast #5340046
Lesenswert?

Borislav B. schrieb:
> Zusätzlich solltest du noch prüfen, ob die Variable == 1 ist, und nur
> dann senden. Sonst gehen zwei Botschaften raus, eine beim runterdrücken
> und eine beim loslassen des Buttons.


Wie bekomme ich das hin?
Direkt nach on envvar eine if-Abfrage auf die Variablen?
Oder wo muss das ganze rein?

on envvar Linkslauf
{
  if(Linkslauf == 1){
  message 100 msg;
  msg.id = 255;
  msg.DLC = 3;
  msg.BYTE(0) = 0xEE;
  output(msg);
  }
}


Gibt es beim CAPL den "=="-Vergleichoperator? Der wird bei mir rot 
unterschrichen
Beitrag #6104270 wurde von einem Moderator gelöscht.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren