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