Introduction to Canoe Tool
This is a step-by-step tutorial to introduce the process of developing a CANoe test application with CANoe’s Test Feature Set. Using this document as a guide, you will be able to better understand how to use CANoe’s Testing tool.
The CANoe is very well-known for its network simulation capabilities. The canoe tool not only has the capability to simulate multiple nodes in a network, but it can also simulate multiple networks of various bus types such as CAN, LIN, MOST, and FlexRay, Ethernet, etc. Imagine a vehicle with multiple data networks, consisting of a CAN network for power-train, The LIN networks for body electronics and lightings, MOST for entertainment and GPS navigation, and FlexRay for chassis, CANoe can be used to model all the network data and functions in these bus systems. When network data and functions need to be evaluated and validated at the design, implementation, or production stage, CANoe can become a test tool as well as a network simulation tool to test these network functions. This is made possible in CANoe with the Test Feature Set. TFS has been part of CANoe since version 5.0. It provides the user with the ability to implement and execute a sequential set of test instructions written in XML, CAPL, or both. Since version 5.0, numerous improvements have been made to TFS to support various bus types: CAN, LIN, MOST, Flex-Ray, & Ethernet.
How to Simulate a CAN Network in Canoe?
We will begin by developing a CAN database to symbolically represent the data on a CAN network. Since this tutorial does not pertain to any type of network, this database will help us define a simulated, virtual CAN network. The network will have two simulated network nodes and a panel as a user interface. The panel will give the user the ability to set the ignition to on/off, the doors to lock/unlock, and the window to up/down.
Once the simulated network is implemented, then you can use the TFS to define a few test cases in both XML and CAPL to test the functional behavior of the network.
How to create a Create a New Directory in Canoe?
- Before loading CANoe, create a new directory called “test TFS” to contain the new configuration.
- Load CANoe and use the main menu to go to File → New Configuration. A prompt will appear to select the default template and then click [OK].
- Go to File → Save Configuration As. Name the file “testTFS.cfg” and save it into the new directory. Then, click [OK].
How to setup a CAN Database?
A network database is not required, but it is always helpful to have one. In most test applications, a network database will save a lot of time and effort in implementing the test cases. If one is not available, creating a database is a good first step.
How to create a new Database File in Canoe?
- On the CANoe toolbar, click the CANdb++ Editor button (the one with 4 interconnected red nodes) to launch the integrated database tool.
- In the CANdb++ Editor, go to File → Create Database. A prompt appears to select a template. Select the empty template.
- Name the empty DBC file “testTFS.dbc” and save it into the “test TFS” directory.
How to Create a CAN Network Nodes in Canoe?
- Select “Network Nodes” from the tree view on the left pane of the Overall View window, right-click on it, and select New. Name the first network node “Doors” and then click [OK].
- Repeat the step above to create a second network node and name it “MainControl“.
How to create a Message in Canoe?
We will now create five messages for our simple test application.
- Select “Messages” in the tree view on the left pane of the Overall View window, right-click on it, and select New.
- Set up the messages as follows: a) Message1 Name = Ignition_Status. –> Set the DLC (Data Length Code) to “1”, for 1 byte of data. –> Select the Transmitter tab and click [Add]. Select “MainControl” and then click [OK]. b) Message2 Name = Locking_ControlRq –> Set the DLC to “1”. –> Set “MainControl” to be the transmitter of the message. c) Message3 Name = Locking_SysState. –> Set the DLC to “1”. –> Set “Doors” to be the transmitter of the message. d) Message4 Name = Window_Rqst –> Set the DLC to “1”. –> Set “MainControl” to be the transmitter of the message. e) Message5 Name = Window_State –> Set the DLC to “2” –> Set “Doors” to be the transmitter of the message.
How to create a Signal in Canoe?
We will now create five signals to represent data within the messages we have just created,
- Select “Signals” in the tree view on the left pane of the Overall View window, right-click on it, and select New.
- Set up the signals as follows: a) Signal1 Name = Ignition_Status –> Enter “1” for Length (bit). –> Select “unsigned” for the Value Type. –> Set Minimum to “0” and Maximum to “1” –> Switch to the Message tab. Add the message, “IgnitionStatus”, and click [OK] b) Signal2 Name = LockRequest –> Enter “1” for Length (bit). –> Select “unsigned” for the Value Type. –> Set Minimum to “0” and Maximum to “1”. –> Switch to the Message tab. Add the message, “LockingControlRq”, and click [OK]. c) Signal3 Name = LockState –> Enter “1” for Length (bit). –> Select “unsigned” for the Value Type. –> Set Minimum to “0” and Maximum to “1”. –> Switch to the Message tab. Add the message, “LockingSysState”, and click [OK]. d) Signal4 Name = WindowPosition. –> Enter “8” for Length (bit). –> Select “unsigned” for the Value Type. –> Set Minimum to “0” and Maximum to “15”. –> Switch to the Message tab. Add the message, “WindowState”, and click [OK]. e) Signal5 Name = WindowStatus. –> Enter “2” for Length (bit). –> Select “unsigned” for the Value Type. –> Set Minimum to “0” and Maximum to “2”. –> Switch to the Message tab. Add the message, “WindowRq”, and click [OK].
How to Create and Assignee Value Tables in Canoe?
Value tables can be made for each signal to symbolically represent the different value states. We will create a value table for four of our signals.
1) Select View → Value Tables.
2) Right-click anywhere on the empty page and select New to create a value table.
3) Setup the value tables as follows:
a) Name = IgnitStatus
? In the Value Descriptions tab, click the [Add] button twice.
? Replace the description for “0x0” to “Engine Off”
? Replace the description for “0x1” to “Engine On”
b) Name = LockRq
? In the Value Descriptions tab, click the [Add] button twice.
? Replace the description for “0x0” to “Request to Lock”
? Replace the description for “0x1” to “Request to Unlock”
c) Name = LockStatus
? In the Value Descriptions tab, click the [Add] button twice.
? Replace the description for “0x0” to “Unlocked”
? Replace the description for “0x1” to “Locked”
d) Name = WinStatus
? In the Value Descriptions tab, click the [Add] button three times.
? Replace the description for “0x0” to “Nothing”
? Replace the description for “0x1” to “Roll Window Up”
? Replace the description for “0x2” to “Roll Window Down”
4) Go back to the Overall View window.
5) Double-click on “Ignition_Status” under Signals. In the window that appears, select “IgnitStatus” in the drop-down box for Value Table. Click [Ok].
6) Double-click on “LockRequest” under Signals. In the window that appears, select “LockRq” in the drop-down box for Value Table. Click [Ok].
7) Double-click on “LockState” under Signals. In the window that appears, select “LockStatus” in the drop-down box for Value Table. Click [Ok].
8) Double-click on “WindowStatus” under Signals. In the window that appears, select “WinStatus” in the drop-down box for Value Table. Click [Ok].
How to create the Environment Variables in Canoe?
The Environment variables are defined to represent user inputs on the panel. When a user selects a button on the panel, for example, the environment variable associated with that button will be set to a value and simultaneously trigger an event to be executed within its virtual network node.
- Select “Environment variables” in the tree view on the left pane of the Overall View window, right-click on it, and select New.
- Setup the environment variables as follows: a) Name = IgnitionStart —-> Expand the Access drop-down list and select ReadWrite. –> Set Maximum value to “0x1” b) Name = LockRq –> Expand the Access drop-down list and select ReadWrite. –> Set Maximum value to “0x1” c) Name = Window –> Expand the Access drop-down list and select ReadWrite. –> Set Maximum value to “15” d) Name = WindowDown –> Expand the Access drop-down list and select ReadWrite. –> Set Maximum value to “0x1” e) Name = WindowUp –> Expand the Access drop-down list and select ReadWrite. –> Set Maximum value to “0x1”
- Now, let’s save the database by selecting File?Save.
- Close the CANdb++ Editor.
How to Associate a Database in Canoe?
- Go to CANoe and select the menu command View → Simulation Setup to make sure the Simulation Setup window is displayed.
- Expand the tree list on the right pane and select Databases. Right-click on it and select Add.
- Associate the “testTFS.dbc” database file.
How to Create User Test Panel in Canoe?
There are two tools available to create graphic control panels, Panel Designer and Panel Editor. Each tool may be used as a separate application program; however, it is recommended to open them from CANoe so the associated database is a reference. We will use Panel Designer in this example to create the panel.
How to Open Panel Designer?
- To open the Panel Designer, click on the icon with a blue meter on the main toolbar of CANoe or via menu File → Open Panel Designer.
- On the menu bar of Panel Designer, select File → Save Panel As.
- Using the extension .xvp and the path to the new directory, name the file “Test.xvp”. Click [OK]. “Test” will also be the title of the panel when displayed in CANoe.
How to create Switches in Canoe?
Three switches will be used in this tutorial; one for “IgnitionStart”, “LockRq”, and “Window”. The following steps show how to add a panel switch.
- On the top-right side of the Panel Designer, there should be a Toolbox box. Scroll down the list of Vector Standard Controls and click on “Switch/Indicator” and drag it onto the gray platform in the center of Panel Designer. A box with a dashed border and a black color switch should then appear.
- On the bottom-right side of the Panel Designer, the properties of this switch should be displayed in the Properties box.
- Set the State Count to 2 and the State Values to ‘0’ for State 1 and ‘1’ for State 2.
- Under the Symbol section, set the symbol filter to Environment Variable. Next, click on Symbol, and then click on the button to the right of the white box.
- A window should appear with the list of environment variables, expand the Environment variable list, and select “IgnitionStart”. Afterward, click [OK]. (Alternatively, the environment variable can be assigned by dragging it from the Symbol Explorer on the left pane to the switch box.)
- Under the Toolbox section, scroll down the list, drag and drop “Static Text” next to the switch on the gray platform. A box with the words “Description” should appear.
- In the Properties box, replace the text box property, Font Text, from “Description” to “Ignition Start”.
- Repeat steps 1-7 and creates the following switches for the following environment variables –> “LockRq” –> “Window” with a State Count of 17.
- (Optional) Switch images may be replaced with user-created graphics.
- For “LockRq” and “Window”, the lock and window image from CANoe’s Central Locking State Demo was used. (Images used: “LockUnlock.bmp” and “WindowsLeft.bmp”. Located in the file directory: “C:…Demo_CAN_CNTestFeatureSetCentralLockingSystemPanelsBitmaps”). See Figure 1.

How to Add Push Buttons in Canoe?
Next, we will add two push buttons to control the vehicle’s window position.
- On the top-right side of the Panel Designer, there should be a Toolbox box. Scroll down the list of Vector Standard Controls and drag and drop “Button” onto the gray platform. A push-button image should appear with the name “Button”.
- On the bottom-right side of the Panel Designer, the properties of this button should be displayed in the Properties box.
- Under the Text section, replace “Button” with “Window Down”.
- Under the Symbol section, set the symbol filter to Environment Variable. Next, click on Symbol, and then click on the button to the right of the white box.
- A window should appear with the list of environment variables, expand the Environment variable list, and select “WindowDown”. Afterward, click [OK]. (Alternatively, the environment variable can be assigned by dragging it from the Symbol Explorer on the left pane to the switch box.)
- Resize the button to fit the text.
- Repeat steps 1-6, to create a button labeled “Window Up” and assigned the “WindowUp” environment variable.
- Save the panel by going to the menu File @ Save.
How to Associate the Panel to CANoe?
There are many ways to associate a panel to CANoe. The easiest method is by clicking once on the blue icon that looks like a meter with a plus sign on the toolbar of Panel Designer. Afterward, CANoe should be associated with a “Test” panel that looks like the above figure.
How to Add Nodes to the Network?
- Go back to CANoe and open the Simulation Setup window.
- In the left half of the window, right-click on the black/red parallel lines and select Insert network node. A new node will appear on the network with the default name “ECU 1”.
- Right-click on this new node and select Configuration….
- Expand the CANdb Name drop-down list and select the node name “test TFS:: MainControl”. Click [Ok]. The node name should change from “ECU 1” to “MainControl”. The new node will appear in the tree list to the right.
- Add the second node “Doors” in the same manner.

CANoe Interaction Layer:
The function of the Canoe interaction layer is to map the signals into their Transmitted messages(send a message) and to control the transmitting of these Tx messages as a send model function. The transmission behavior of the CAN messages/signals are defined in the CAN database as their attributes. So the CANoeIL will design the transmission behavior of the CAN messages/signals according to the attributes at run time simulation.
This feature was newly added in the CANoe, previously it was done by CAPL coding which was using more time to map the signals and all. So now the tester can do it by CANoeIL which is very easy than these worst CAPL coding and offers more capability, and fully encapsulation functionality and now the CAPLcode will only having simulation codes.
By using the CANoeIL, you can map the CAN signals with the control panels, and different modules in ECU, and also can map another ECU easily. If the signal value is getting changed at any time, then the Interaction Layer will route this signal immediately to the specific CANoiIL and it will send to the specific destination easily.

Network Management in CANoeIL:
NEXT IS WHAT? Will Update Soon…..