Uploaded by yassines

CAN 7.CAN CANoe Simul

advertisement
Fundamentals Workshop
_4
cw
CANoe
0;
1/83
02
82
Creating CANoe Simulations
VF
e
No
CA
1/83
Agenda
1
u
Motivation
3
Implementation
5
CAPL Introduction
11
Principe de la Simulation des I/Os avec CANoe sans IL
46
Simulation avec IL
56
Miscellaneous
82
0;
02
82
_4
cw
2/83
VF
e
No
CA
2/83
Motivation
Idée de base
u
Problème Réel
ECU A
ECU B
(real)
ECU C
ECU D
Bus
u
Implementation avec CANoe
CANoe (Simulation Setup)
e.g. CANcardXL
0;
02
3/83
Interface
82
Bus
_4
cw
ECU
Node A
VF
e
No
CA
3/83
Agenda
1
u
Motivation
3
Implementation
5
CAPL Introduction
11
Principe de la Simulation des I/Os avec CANoe sans IL
46
Simulation avec IL
56
Miscellaneous
82
0;
02
82
_4
cw
4/83
VF
e
No
CA
4/83
Implementation
SUT et son environnement
CANoe
simul.
module
2
simul.
module
1
System Simulation
simul.
module
3
simulated
bus
CANcardXLe
cw
CH1
IOcab
SUT
I/O
System Under Test
82
_4
CANcab
CH2
0;
02
5/83
CAN message
(Signaux)
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
5/83
Implementation
Variables Systèmes
u
Pour un ECU réel, les I/O sont connectés au PC (CANoe) via un HW externe .
u
CANoe représente les I/O ports sous forme de System Variables.
u
Pour un ECU réel avec un HW d’acquisition, les variables sont crées
automatiquement par CANoe
u
Pour un ECU simulé il n’y a pas de HW externe, les variables sont crées
manuellement
cw
ECU
CANoe
External
Hardware
ECU
_4
IO Ports
System Variables
...
82
0;
02
6/83
Bus interface
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
6/83
Implementation
Noeud réseau Simulé
u
Les tâches du noeud simulé dans CANoe se résument en:
1. Stimulation des I/O et signaux via des panels,
2. Envoie de messages sur le bus avec valeur du signal
3. Réception de messages
4. Affichage des I/O et signaux via des panels suivant reception
Panel
Capteur, signaux de
contrôles et de display
ECU A
(real)
82
_4
cw
4
1
02
2
Messages avec signaux
0;
7/83
3
VF
e
No
CA
7/83
Implementation
Systèmes variables
_4
cw
82
variables Systèmes sont sauvegardées dans la configuration de
0;
8/83
02
CANoe dans un fichier XML externe.
VF
e
No
CA
8/83
Implementation
Simulation Capteurs/actionneurs (I/O) et signaux
u
Les I/O sont modélisés dans CANoe par des variables systèmes connectés
au panel
Panel
Signal/Variables Systèmes: STIMULIS de l’ECU
u
Signal/Variables Systèmes
L’ECU stimulé va réagir en utilisant son
applicatif associé pour traiter les évènements:
cw
Processing event:
CAPL
On message/signal <name>{……}
_4
On sysvar <Variables Système name>
0;
9/83
02
82
{……….}
VF
e
No
CA
9/83
Agenda
1
u
Motivation
3
Implementation
5
CAPL Introduction
11
Principe de la Simulation des I/Os avec CANoe sans IL
46
Simulation avec IL
56
Miscellaneous
82
0;
02
82
_4
cw
10/83
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
10/83
CAPL Introduction
Langage évènementiel
u
Evènements liés aux bus
u
Evènements liés aux périphériques
u
Evènements temporels
u
Langage basé sur le C
u
Facilités du langage: Accès aux données de la messagerie.
u
Interface utilisateur conviviale et intuitive
u
Environnement de développement intégré
0;
02
82
_4
cw
11/83
u
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
11/83
CAPL Introduction
Program structure
CAPL-Program
Variables: int counter = 0;
EventProc.1
e.g. evaluate a
message
EventProc.4
e.g. Errorhandling
EventProc.3
e.g. Action on
user input
EventProc.2
0;
12/83
02
82
_4
cw
e.g. Error
handling
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
12/83
CAPL Introduction
Principle
Contrôle Séquentiel
Traitement des Evènements
Fonction 1
Fonction 1
Reception
CAN message
Ex. Sruter le bus
Reception
error frame
Fonction 2
cw
Ex. Action si
erreur
_4
Fonction 3
User input
t
Fonction 2
Ex. Error handling
Fonction 3
Ex. Action on user
input
t
0;
02
13/83
82
Ex. Attente entrée
utilisateur
Ex. Evaluation of
message
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
13/83
CAPL Introduction
Events & event procedures
u
u
on Start
{
write ("Start CANalyzer");
}
Start de la Mesure
on stopMeasurement
{
write ("Stop CANalyzer");
}
Stop Mesure
Réception message
u
Time event
cw
u
on message 0x123
{
write ("CAN Message 0x123");
}
_4
on timer tmrCycle
{
write ("within cycle");
}
Appuie touche clavier
0;
02
14/83
82
u
on key 'a'
{
write ("Key >a< pressed");
}
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
14/83
CAPL Introduction
CAPL Programs
u
Comment attacher le source code CAPL à un Network Node.
u
Le CAPL peut être crée ou modifié
0;
VF
.
02
82
_4
cw
15/83
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
15/83
CAPL Introduction
CAPL browser
Global Variables
Browser tree
Event
procedures
(List of events)
82
_4
cw
(also definition of
local variables)
Symbols
&
Functions
Compiler messages
0;
02
16/83
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
16/83
CAPL Introduction
Creating a CAPL program
Compiler et sauvegarder le programme ➔ un fichier exécutable
u
via Compiler menu
u
Par le Shortcut:
u
Par l’ Icon
F9
_4
cw
82
Si erreurs➔ voir fenêtre “output”
Double click sur l’erreur ➔ ligne de code responsbale.
0;
02
17/83
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
17/83
CAPL Introduction
Syntax & comments
//Comment
u
/*Block Comment
en ANSI-C*/
u
Point virgule en fin
de’instruction
u
Accolades pour les
procedures des
évenements
0;
18/83
02
82
_4
cw
u
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
18/83
CAPL Introduction
Text output
u
CAPL code:
write
write
write
write
write
Résultat:
0;
19/83
02
82
_4
cw
u
("+++++++++++++++++++++++++++++");
("+++++++ INFORMATION +++++++");
(" This is the write function. ");
("Good luck for the next steps!");
("+++++++++++++++++++++++++++++");
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
19/83
Exercise 1
CAPL Introduction
on key procedures
on key 'a'
// react to pressing the a key
on key ' '
// react to pressing the Space bar
on key 0x20
// react to pressing the key with ASCII Code 0x20
on key F1
// react to pressing the F1 key
on key ctrlF12
// react to pressing the keys ctrl+F12
// react to each key stroke, except …
0;
02
20/83
// react to pressing the Home key
82
on key *
// react to pressing the Page up key
_4
on key Home
cw
on key PageUp
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
20/83
CAPL Introduction
Exercises 1: Affichage commentaire dans write window
1.Insérer
un « Network node » dans la fenêtre de « simulation set
up » et lui associer un fichier CAPL non existant
2.Ecrire
un code CAPL qui affiche le commentaire “HELLO” dans la
fenêtre write sur appuie touche clavier ‘h’.
3.Tester
et sauvegarder votre configuration.
0;
VF
….
02
82
_4
cw
21/83
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
21/83
CAPL Introduction
Variables Globales
u
Variables globales
variables { int counter; }
write
read
on key 'a'
{
write("%d", counter);
}
0;
22/83
02
82
_4
cw
on message 0x1a1
{
counter = counter+1;
}
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
22/83
CAPL Introduction
Liste des variables
Type
Name
Whole numbers
signed
int
long
int64
byte
word
dword
qword
16
32
64
8
16
32
64
Floating decimal
numbers
float
double
64
64
Individual
character
char
unsigned
_4
cw
according to IEEE
according to IEEE
8
Message variables for CAN
message
for CAN messages
Timer variables
timer
mstimer
time unit s (and/or ns)
time unit ms
No unit
Unit milliseconds
0;
02
82
23/83
Bit Note
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
23/83
CAPL Introduction
Exercise 2a
Variables in CAPL
u
CAPL-Code:
int
i
// Declaration and initialization of an integer
// Declaration and initialization of a character
// Declaration of a float, implicit initialization to 0.0
= 100;
char ch = 'a';
float x;
write
write
write
write
write
Résultat:
0;
24/83
02
82
_4
cw
u
("Hundred in decimal format: %d", i);
("Hundred in hexadecimal format: %x", i);
("Pi as float: %f", pi);
("The decimal ASCII-Code of %c is %d", ch, ch);
("The value of x is %f", x);
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
24/83
CAPL Introduction
Exercises 2a: Affichage suivant format
Ecrire un programme CAPL qui affiche la valeur d’une variable
température:
1.
Touche clavier ‘+’ incrémente la variable de 1
2.
Touche clavier ‘-’ décrémente la variable de 1
cw
3.
Touche clavier ‘a’ affiche la variable en décimal (%d)
_4
{
Int temperature;
On Key ‘+’
}
e
temperature++;
No
{
CA
}
VF
Variable
0;
25/83
02
82
et hexadécimal (%x)
On Key ‘-’
{
temperature--;
}
On Key ‘a’
{
Write (‘’ temperature en decimal %d et hexadecimal %x ’’, temperature, temperature);
}
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
25/83
CAPL Introduction
Important operators
u
Même opérateurs qu’en C disponibles en CAPL
Operator
Description
Example
+
-
Addition, subtraction
-
*
/
Multiplication, division
-
++
--
Increase or decrease by 1
a++;
Modulo division (returns the whole number from
division without remainder)
a = 5 % 3;
%
// a is 2
<=
Less than or less than or equal to
returns TRUE or FALSE
>
>=
Greater than or greater than or equal to
returns TRUE or FALSE
==
!=
Comparison for equality or inequality
returns TRUE or FALSE
=
Assignment operator
a = 5 % 3; Value 2 is assigned to a
&&
Logical AND
returns TRUE or FALSE
||
Logical OR
returns TRUE or FALSE
!
Logical NOT
makes a TRUE statement FALSE and vice versa
&
Bitwise AND
1 & 7
// is 1 (0001 & 0111 → 0001)
|
Bitwise OR
1 | 7
// is 7 (0001 | 0111 → 0111)
~
Bitwise complement
~1
// is 14 (0001 → 1110)
^
Bitwise XOR
1^1
// is 0 (001 ^ 001 → 0)
Move bits to the right or left
1 << 3 // is 8 (0001 → 1000)
0;
02
<<
82
_4
cw
<
>>
26/83
// always increases a by 1
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
26/83
CAPL Introduction
Evènement message
on message 0x64
{
if (…)
write (" Warning: critical temperature!");
}
0;
27/83
02
82
_4
cw
on message frmEngineData
{
if (..)
write ("Warning: critical temperature!");
}
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
27/83
CAPL Introduction
Exercice 2b: Compteur de Trames
ID = 0xA0
1.
Le CANister est configuré de sorte qu’à chaque fois que les touches
T1 ou T2 sont appuyées, le message (ID = 0xA0) est envoyé sur le
2.
cw
bus.
Écrire un programme CAPL qui compte ces messages, et affiche la
_4
valeur du compteur dans la fenêtre « Write » sur appuie de la barre
ESPACE de votre clavier.
0;
02
82
28/83
{
}
Count++;
e
{
No
On message frmKey12
CA
int count;
VF
Variable
}
On Key ‘ ‘ //Space
{
Write(“valeur du count %d”, count);
count=0;
}
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
28/83
CAPL Introduction
Conditions en CAPL
if
0;
29/83
02
82
_4
cw
if (condition)
{
Code s’execute, si condition vraie
}
else
// optional
{
Code executé, si condition non vrai
}
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
29/83
Exercise 2c
CAPL Introduction
Keyword this
u
Pour récupérer l’information de l’event du message reçu, le CAPL
utilise le mot clé ’this’
u
Ce mot clé permet d’accéder aux champs de l’event
u
Syntax: <Variable> = this.<Selector>;
cw
CAN message
4 0xB8 0x00 0xF0 0x49
0;
30/83
02
82
_4
22.210471 1 0x1A1 Rx
Access to
properties
&
symbolic
names
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
30/83
CAPL Introduction
Exercice 2c:Compteur de Trames suivant valeur du signal
ID = 0xA0
Modifier le programme de l’exercice précédent, pour que le
cw
1.
nombre de messages soit enregistré dans deux compteurs
_4
différents selon que l’on appuie sur la touche T1 ou T2 du
CANister.
0;
02
82
31/83
{
VF
Variable
On Message frmKey12
If (this.sigKey1==1) Count1++;
e
{
No
CA
Int count1, count2;
Else
If (this.sigKey2==1) Count2++;
}
On Key ‘ ‘
{
if (count1>=10 ) write("ERREUR T1 ==> \n" );
else if (count2>=10 ) write("ERREUR T2 ==> \n" );
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
31/83
write("nbr de trames frmKey1 %d frmKey2 %d", count1, count2);
count1=0; count2=0;
}
0;
02
82
_4
cw
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
CAPL Introduction
Conditions en CAPL
0;
32/83
02
82
_4
cw
switch (rapport_vitesse)
{
case 0:
vitesse =0;
break;
case 1 :
vitesse = Regime/200;
break;
case 2 :
vitesse = Regime/150;
break;
case 3 :
vitesse = Regime/100;
break;
case 4 :
vitesse = Regime/50;
break;
case 5 :
vitesse = Regime/27;
break;
}
VF
On message 0x1A1
{
If (this.sigkey1==1) key =1;
Else If (this.sigkey2==1) key =2;
Else if…
Rotary= this.sigRotary.phys*70;
@Sys_vitesse = Calcul(Rotary,key);
e
No
CA
Float Function calcul(float rotary, int key)
{float vitesse;
switch (key)
{
case 0:
vitesse =0;
break;
case 1 :
vitesse = rotary/20.4;
break;
case 2 :
vitesse = rotary/15.3;
break;
case 3 :
vitesse = rotary/10.3;
break;
case 4 :
vitesse = rotary/5.3;
break;
case 5 :
vitesse = rotary/2.3;
break;
}
Return (vitesse);
}
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
32/83
CAPL Introduction
Boucles en CAPL
u
Fin de boucles (comparable au C)
▪ continue
▪ break
Initialisation
Condition pour l‘exécution
Fin de boucle
33/83
0;
02
82
_4
cw
char s[10];
int i;
for (i = 0; i < 10; i=i+1)
s[i] = 'x';
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
33/83
CAPL Introduction
Conditions et boucle
Conditions
if
(a == 100) write ("Value is 100");
else if (a == 500) write ("Value is 500");
else
write ("Value is not 100 or 500");
if
switch (a)
{
case 100: write ("Value is 100"); break;
switch
case 500: write ("Value is 500"); break;
default:
write ("Value is not 100 or 500"); break;
}
Loops
for (a = 0; a < 100; a++)
{
for
write ("Value of %d", a);
}
cw
while (a < 100)
{
write ("Value of %d", a);
while
_4
a++;
}
82
do
{
do while
write ("Value of %d", a);
a++;
0;
34/83
while (a < 100)
02
}
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
34/83
CAPL Introduction
Accès en symbolique et non symbolique
13.6701 sec
ID 0x64 DLC 3
RTR Chan. 0xFF 0x01 0xA4
on message 0x64
{
if (this.byte(2) == 0xFF) //valeur brute
write (" Warning: critical temperature!");
}
cw
0;
35/83
02
82
_4
on message frmEngineData
{
if (this.sigTemperature.phys >= 150) //valeur physique
write ("Warning: critical temperature!");
}
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
35/83
CAPL Introduction
Tx Selectors
Description
Value range
BYTE(n)
WORD(n)
DWORD(s)
QWORD(n)
Can be used to write the data bytes
(int, long and char are also possible)
n
n
n
n
ID
Message identifier
Standard: 0...0x7FF (0...2047)
Extended: 0…0x1FFFFFFFx (0…536870911)
(default = 1FFFFFFFx)
DLC
Message length
0...8
(default = 0)
CAN
Channel number
1...32 and *
(default = 1)
RTR
Selector for distinguishing data or
remote frames
=
=
=
=
0...7
0...6
0...4
0
rtr = 0 → data frame (default = 0)
rtr = 1 → remote frame
0;
36/83
02
82
_4
cw
Type
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
36/83
CAPL Introduction
Exercise 3
ID ou nom du message
de CANdb
message
Nom de la Variable
(défini par l‘utilisateur)
on key 'a' {
message MotorData msg;
msg.temperature.phys = 60; // in degrees Cel.
msg.speed.phys = 4300;
// in rpm’s
output(msg);
}
cw
on key 'b' {
_4
message * msg ;
msg.DLC=2;
82
msg.id=0x100;
output(msg); }
0;
37/83
message 0x123 msgTest;
= 3;
CA
...
VF
Example
msgTest.dlc
02
msg.byte(0) = 0x0B; msg.byte(1)=0x0A;
// 3 data bytes
// 1st data byte is set to 0x23
msgTest.word(1) = 0xe47a;
// 2nd and 3rd byte are set, INTEL!
msgTest.can
// CAN channel is 2
output (msgTest);
e
= 2;
No
msgTest.byte(0) = 0x23;
// Transmission Request to CAN controller
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
37/83
CAPL Introduction
Exercice 3: Envoie de message
ID = 0x1A1, byte(0)=cnt
ID = 0x1A0, byte(0)=cnt
Écrire un programme CAPL qui sur réception du message MsgMoteur :
cw
1) Copie le premier octet du message ID 0x1A1 (MsgMoteur) dans le
premier octet d’un message ID 0x1A0 (FrmLamps).
38/83
0;
02
82
_4
2) Envoie le message FrmLamps sur le bus.
{
}
msg.byte(0) = this.byte(0);
e
{
No
On message FrmStatus
CA
Message frmlamps msg;
VF
Variable
Output(msg);
}
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
38/83
CAPL Introduction
Principe
u
Les timer, permettent de créer des évènements dépendants du
temps en CAPL.
u
Chaque "periode" utilise une variable spéciale (timer variable).
u
Après expiration du temps de cette variable, la procédure liée au
timer est exécutée.
cw
t
Timer event !
82
_4
Démarrage du timer
0;
02
39/83
on timer procedure
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
39/83
CAPL Introduction
➢
➢
➢
msTimer myTimer;
// Temporisation (ms)
➢
Timer myTimer2;
// Temporisation (s)
Fonctions
➢
setTimer(myTimer,100); // Initialise la Temporisation (100 ms)
➢
setTimer(myTimer2,60); // Initialise la Temporisation (60 s)
➢
cancelTimer(myTimer);
Procédure évènementielle
_4
➢
on timer myTimer {...}
écoulée
// Évènement Temporisation myTimer //
82
➢
Possibilité de programmer des temporisations périodiques en CAPL :
➢
Initialiser à nouveau la temporisation après l’évènement temporisation écoulée.
0;
02
40/83
// Arrêt et remise à zéro
cw
➢
Variables
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
40/83
CAPL Introduction
Exemple : Envoi d’un message périodique d’ID = 100 sur le bus toutes les 20
millisecondes, sur un appui de la touche 'a‘ :
variables
{
mstimer myTimer;
message 100 msg;
}
on key 'a'
{
settimer(myTimer,20);
// Définit une temporisation (ms)
// Définit un message à émettre ...
// Réagit à un événement touche 'a'...
cw
// Initialise et démarre la
// temporisation à 20 ms
// Après que le temps se soit écoulé ...
// ... Envoie un message cyclique
}
0;
02
41/83
82
_4
}
on timer myTimer
{
output(msg);
settimer(myTimer,20);
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
41/83
Exercise 4
CAPL Introduction
Exemple : Envoi d’un message périodique d’ID = 100 sur le bus toutes les 20
millisecondes, sur un appui de la touche 'a‘ :
cw
variables
{
mstimer myTimer;
message 100 msg;
}
on key 'a'
{
settimerCyclic(myTimer,20);
// Initialise et démarre la
// temporisation à 20 ms (non en sec)
// ... Envoie un message cyclique
}
0;
02
82
42/83
// Réagit à un événement touche 'a'...
// Après que le temps se soit écoulé ...
_4
}
on timer myTimer
{
output(msg);
// Définit une temporisation (ms)
// Définit un message à émettre ...
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
42/83
CAPL Introduction
Exercice 4: Envoie cyclique d’un message
ID = 0x1A0,
byte(0)=cnt
1.
CANister est configuré pour recevoir le message ID=0x1A0
2.
Écrire un programme CAPL qui effectue les actions suivantes:
cw
Touche ‘d’ du clavier ➔ Envoie du message 1A0 tous les 100ms avec
_4
incrémentation de l’octet 0 de ce message.
43/83
Mstimer T;
}
On Key ‘s’
e
{settimercyclic(T,100);}
No
On Key ‘d’
CA
Message frmlamps msg;
VF
{
0;
Variable
02
82
Sur appuie Touche ‘s’ du clavier ➔ Arrêt de l’émission.
{canceltimer(T);}
On timer T
{
msg.byte(0)++;
Output(msg);
}
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
43/83
Agenda
1
u
Motivation
3
Implementation
5
CAPL Introduction
11
Principe de la Simulation des I/Os avec CANoe sans IL
46
Simulation avec IL
56
Miscellaneous
82
0;
02
82
_4
cw
45/83
VF
e
No
CA
45/83
Principe de la Simulation des I/Os avec CANoe sans IL
Exemple
variables Systèmes
NodeB
Modèle Simulé
Panel de contrôle
Unité de Contrôle
Fenêtre droite
ID
DATA
0;
46/83
02
82
_4
cw
Modèle Simulé l
VF
e
No
CA
46/83
Principe de la Simulation des I/Os avec CANoe sans IL
Séquence
1.Création de variables systèmes pour les « panels »
2.Création des panels connectés à ces variables.
3.Insérer les panels à la configuration de CANoe
4. Création des CAPL dans le «Simulation setup»
0;
02
82
_4
cw
47/83
VF
e
No
CA
47/83
Principe de la Simulation des I/Os avec CANoe sans IL
Step 1: Add environment variables
_4
cw
82
variables Systèmes sont sauvegardées dans la configuration de
0;
48/83
02
CANoe ou dans un fichier XML externe.
VF
e
No
CA
48/83
Principe de la Simulation des I/Os avec CANoe sans IL
Accès aux I/O (variables systèmes)
Pour le traitement des variables Systèmes:
u
Forcer une variable système à une valeur : @<Variable name> = Variable;
u
Lecture d'une variables système : Variable =@ <Variable name>;
u
Procédures évènementielles pour variables systèmes:
on SysVar < Sys name>
}
0;
49/83
02
82
_4
……..
cw
{
VF
e
No
CA
49/83
Principe de la Simulation des I/Os avec CANoe sans IL
Step 2: Create the panels with Panel Designer
Filtre
variables
systèmes
Vector
Standard
Controls
Drag & Drop
Drag & Drop
Symbol
Explorer
1.
cw
2.
Properties
of the
active
control
Drag & Drop
_4
Taille du panel
0;
02
82
50/83
VF
e
No
CA
50/83
Principe de la Simulation des I/Os avec CANoe sans IL
Step 3: Configuration de CANoe
u
Lorsque le panel est sauvegardé dans
Panel Designer, il est automatiquement
assigné à la configuration CANoe.
Menu Home➔ Afficher le panel
cw
dans la Configuration de CANoe
Boite-Vitesse_Manuelle
0;
02
82
_4
51/83
VF
e
No
CA
51/83
Principe de la Simulation des I/Os avec CANoe sans IL
Window types pour les panels
3 types d’affichage sont disponibles pour les panels:
u Standard window
u MDI window (Multiple Document Interface)
u Docking window
0;
02
82
_4
cw
52/83
VF
e
No
CA
Minimize a docked
window
52/83
Principe de la Simulation des I/Os avec CANoe sans IL
Exercise 5
Step4. Création de CAPL
sysled
systemp
on sysvar systemp
{
Message moteur msg;
on message moteur
{
...
if (this.temperature.phys>50)
@sysled= 1 ;
...
}
msg.temperature=
NodeB
_4
cw
Output(msg);
...
}
CAPL
CAPL
CAN bus
0;
02
82
53/83
@this;
VF
e
No
CA
53/83
Principe de la Simulation des I/Os avec CANoe sans IL
Exercise 5
1- Simuler l’envoie de la trame FrmLamps en
sys_LED
utilisant un panel associé à la variable
«sys_LED» pour ON/OFF des 4 Leds
Input
2- Modifier le CAPL exercise associé au Network
LEDs
ON
cw
Node de la fenêtre «Simulation Setup».
0;
54/83
02
82
_4
CANoe en mode réel (ou simulé)
VF
e
No
CA
54/83
Agenda
1
u
Motivation
3
Implementation
5
CAPL Introduction
11
Principe de la Simulation des I/Os avec CANoe sans IL
46
Simulation avec IL
56
Miscellaneous
82
0;
02
82
_4
cw
55/83
VF
e
No
CA
55/83
Simulation avec IL
Configuration d'une vraie ECU
u
Voici à quoi peut ressembler la configuration d'un ECU :
(Simulated) Sensor signals, controls, displays
Application
Diagnostics
Layer
Interaction
Layer
Network
Management
Transport Protocol
cw
CAN Driver
_4
CAN Controller
Transceiver
0;
02
82
56/83
Universal
Measurement
and
Calibration
Protocol
VF
e
No
CA
56/83
Simulation avec IL
création manuelle des programmes CAPL
App
App
App
App
(IL)
(IL)
(IL)
(IL)
Le rôle de l’IL est d’envoyer les
signaux sur le bus suivant le
modèle spécifié par lOEM.
CAPL
Variables
D’Env/Syst
CAPL
82
_4
cw
CAPL
Les programmes CAPL sont créés manuellement
0;
02
57/83
Les panels sont
créés
manuellement
VF
e
No
CA
57/83
Simulation avec IL
CANoe IL
u
Differents modèles existent, suivant l‘OEM; Chacun possède sa
spécifique CANoe IL.
u
“OEM-specific Interaction“ Layers suivantes sont disponibles:
OEM
Package
Daimler AG
Daimler
Chrysler
Chrysler
FMC: Ford, Jaguar, Volvo
EuCD
GM
Porsche
VAG
Renault
Renault
cw
General Motors: GM, Opel, Saab
VAG
_4
VAG: VW, Audi, Seat, Skoda, Bentley
0;
02
58/83
Pour la simulation, Vector a développé une dll générique:
82
u
VF
Depending on network type (OEM) there are different send models defined for which one special CANoe
IL is made available.
e
No
CA
58/83
Simulation avec IL
Conditions pour utiliser l’IL générique Vector
u
Vos nœuds doivent être des
nœuds de la database
u
chaque nœud ➔onglet
component: CANoeILNLVector.dll
_4
cw
0;
59/83
02
82
R-Click et choisir un noeud de la base (pas Default)
VF
e
No
CA
59/83
Simulation avec IL
IL: Vos tâches
u
La librarie «CANoeILNLVector.dll» vous permet de:
1.
Stimuler vos signaux directement via
➢
2.
les panels ou CAPL.
envoie
réception
Configurer l’IL
>
spécifier le modèle d’envoie du signal
0;
02
82
_4
cw
60/83
VF
Depending on network type (OEM) there are different send models defined for which one special CANoe
IL is made available.
e
No
CA
60/83
Exercise 6
Simulation avec IL
Stimulation du signal via le CAPL
u
Pour lire la valeur d’un signal:
<Varname> = getSignal (<Signalname>);
<Varname> = $<Signalname>;
u
//Brève notation
Pour écrire la valeur d’un signal:
setSignal (<Signalname>, <Value to be set>);
0;
61/83
02
82
_4
cw
$<Signalname> = <Value to be set>; //Brève notation
VF
e
No
CA
61/83
Simulation avec IL
Exo 6: CANoe. en mode Réel/Simulé
1- Modifier le nœud exercise pour qu’il devienne le noeud CCU.
2. Vérifier que la librairie IL est associé au nœud CCU
LEDs
ON
3- Via IL configuration, configurer les signaux Leds en cyclique, le
Cycletime de la trame FrmLamps à 100 ms. Tester l’exercice
précédent
4. Pourquoi cela ne marche plus? Comment modifier le code CAPL
cw
du nœud CCU pour que les LEDs s’allument?
_4
5. Modifier le modèle d’envoie des signaux sigLeds par ‘on change’
82
6. Tester les signaux SigLeds en « IfActifwithRepetition »,
0;
62/83
02
Cycle Time Fast =50ms et Repetition=5
VF
e
No
CA
62/83
Simulation avec IL
Le Modèle IfActifWithRepetion
cw
L’attribut IfActifwithRepetition et InactivValue associé au Signal_start :
_4
Si Signal_start != InactivVAlue ➔ message du signal est envoyé cycliquement sur le bus
avec la valeur de l’attribut cycleTimeFast du message
82
Si Signal_start = InactivValue ➔ le message est envoyé suivant l’attribut répétion
0;
02
63/83
VF
e
No
CA
63/83
Simulation avec IL
CAPL Signal Event
u
on signal event procedure (change et update), this permet
l’accès à la valeur
physique du signal:
on signal sigTemp
{
if ( this > 120 )
{
cw
write ("Temperature too high!");
write ("Momentary value: %1.2f°C", this );
0;
02
64/83
82
}
_4
}
VF
e
No
CA
64/83
Simulation avec IL
CAPL Event procedures
u
On signal change: on signal <DB Signal>
Event
ID
u
Sig A = 0
ID
Event
Sig A = 1
ID
Sig A = 1
ID
Sig A = 0
On signal update: on signal_update <DB Signal>
Event
Event
Event
ID
ID
ID
Sig A = 1
Sig A = 0
ID
Sig A = 0
0;
02
65/83
Sig A = 1
82
_4
cw
Event
VF
e
No
CA
65/83
Simulation avec IL
Exemple
sysled
systemp
on signal temperature
{
...
if (this >50)
@sysled= 1 ;
...
}
on sysvar systemp
{
//Message moteur msg;
//msg.temperature= @this;
//Output(msg);
$temperature = @this
}
_4
cw
NodeB
CAPL
CAPL
0;
02
82
66/83
CAN bus
VF
e
No
CA
66/83
Projet TB
Simulation avec IL
Exemple
sysled
temperature
on signal temperature
{
...
if (this >50)
@sysled= 1 ;
...
}
_4
cw
NodeB
CAPL
0;
02
82
67/83
CAN bus
VF
e
No
CA
67/83
Simulation avec IL
1st Step: Creation de la configuration
3
1
0;
70/83
02
82
_4
cw
2
more special for SOME-IP.
Create a new Configuration:
Click on New Configuration…
u
Select template Ethernet.tcn or SOME-IP.tcn.
u
Press OK.
e
u
No
In the main menu select File.
CA
u
VF
Over the main menu a new CANoe configuration may be created. There are templates available for Ethernet and
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
70/83
Simulation avec IL
Projet TB: Création configuration CANoe avec le Wizard
1. Créer une nouvelle configuration CANoe à partir de deux databases
(Moteur.dbc et Habitacle.dbc). Utiliser le template CAN500K 2Channels:
2. Sélectionner les
2 databases
3. Sélectionner tous les nœuds de chaque database et les assigner
CAN1 pour le Moteur et le CAN2 pour l’Habitacle.
cw
4. Choisir le
0;
71/83
02
82
_4
5. Mettre CANoe en mode simulé.
VF
e
No
CA
71/83
Exercise 3
Simulation avec IL
Projet TB: Simulation du Nœud Start
sig_start(0..1)
1
Start
2
Msg_Start: sig_start sur 1 bit
Le signal sig_start est «IfActifwithRepetition» avec un facteur de
_4
cw
répétition de 5, donc la trame Msg_start sera envoyée cycliquement
(50ms) si sig_start=1 et sera envoyée 5 fois si sig_start=0.
02
82
0;
72/83
VF
L’attribut cyclicIfActifwithRepetition associé au signal sig:
CA
Si sig != InactivVAlue ➔ le message du signal sig est envoyé sur le bus avec le cycleTimeFast du
message
Si sig = InactyivValue ➔ le message est envoyé si la répétion est différente de 0
e
No
Remarque:
1.
On aurait pu créer une variable système Sys_Start associé au switch
2.
un CAPL pour le nœud Start avec l’event on sysvar Sys_start pour
mettre à jour le $sig_start= @this
72/83
Simulation avec IL
Panel Switch à plusieurs états
u
Pour certains contrôles une bitmap est
utilisée pour améliorer la représentation.
Default
State
1
2
3
0;
02
82
_4
cw
73/83
VF
In older CANoe versions the Bitmap
Library is in the following directory:
CA
C:\Programme\CANoe\Demo_AddO
n
e
No
73/83
Simulation avec IL
Panel Nœud Moteur
Tour_min(0..7000)
Gear(0..5)
cw
Pour créer ce panel, Connecter le signal Tour_min à une «Track bar» et le signal Gear à
_4
un «switch indicator» à 6 états associé à l’image «gear.bmp» du répertoire Bitmap du
0;
02
74/83
82
projet..
VF
e
No
CA
© 2015. Vector France SAS. All rights reserved. Any distribution or copying is subject to prior written approval by Vector. V1.43 | 2016-08-30
74/83
Simulation avec IL
2: Simulation du Nœud Moteur
Msg_Moteur:
Moteur
1
Tour_Min 8 bit
Gear 3 bits
Tour_min(0..7000)
2
Gear(0..5)
cw
Les signaux «Tour_min» et «Gear» ont l’attribut «Cyclic» à 100ms
L’envoie de ce message est lié à la condition sig_start =1.
_4
Créer un CAPL associé au nœud Moteur pour bloquer ou débloquer la trame msg_moteur
suivant la valeur de sig_start (utiliser les fonctions de la librairie CANoeIL, voir Note Page)
0;
02
82
76/83
{
else ILDisableMsg("msgmoteur");
}
{
e
ILDisableMsg("msgmoteur");
No
on start
CA
if (this) ILEnableMsg("msgmoteur");
VF
on signal sigstart
}
76/83
Simulation avec IL
3. Simulation du Nœud TB
Tour_min
1
4
Créer le Panel TB associé au signal
TB
Moteur
Tour_min
2
_4
cw
3
Message Msg_Moteur
82
Msg_Moteur
0;
02
78/83
VF
e
No
CA
78/83
Simulation avec IL
4. Nœud TB: Vitesse
1.
Compléter le panel TB avec une 2ème jauge connectée signal vitesse
2.
Créer le CAPL du nœud TB pour afficher la vitesse du véhicule via la 2ème jauge.
3.
Lancer CANoe en mode simulé
Sig_start
Gear
Tour_Min
Tour_min
0;
79/83
02
82
_4
cw
vitesse
VF
e
No
CA
79/83
Simulation avec IL
Database Habitacle
1) Compléter le CAPL du nœud
TB pour simuler la
communication du clignotant
2) Valider cette communication.
0;
02
82
_4
cw
80/83
VF
e
No
CA
80/83
Miscellaneous
Debugging in CAPL
u
Step 1: Ouvrir le debugger
(fonctionne avec simulation setup et
measurement setup.)
_4
cw
u
Step 2: Activer le Mode Debug
0;
VF
Note:
02
82
82/83
e
No
CA
Debugging a CANoe model only works in „Simulated bus“ mode or when using CAPL test modules. When using
real hardware, the simulation is not stopped for debugging purposes.
82/83
Miscellaneous
Debugging in CAPL
u
Step 3: Inserer des breakpoint (Double
click au début de la ligne de code ou
click droit)
u
Step 4: Démarrer la simulation, lire les
valeurs (variables peuvent être placées
cw
dans une «watchlist »
individuellement.)
0;
02
82
_4
83/83
VF
e
No
CA
83/83
Download