【CANoe】小白入门简单工程demo:发动机, 灯光, 仪表盘交互
Demo流程
准备工作
需求分析
通信网络定义层面
- 整个网络是由几个ECU组成的
ECU定义层面
- 每个ECU发送哪些报文,接收哪些报文
报文定义层面
- 每个报文的优先级为多少,报文的信号组成是什么
信号定义层面
- 每个信号的数据类型,和对应的真是物理值之间的转换方式(factor,offset值的设置)
环境变量层面
- 需要的环境变量有哪些
网络拓扑分析
- 总结用到的报文和信号
报文和信号的定义规划
- 考虑发动机ECU和灯光ECU报文的优先级关系
- 定义 发动机ECU报文 为:EngineState(0x123, DLC=1)
- 定义 灯光ECU报文 为:LightState (0x321, DLC=1)
环境变量定义规划
- 方便通过panel实现报文收发、模拟传感器输入(发动机点火、加速踏板)、汽车执行器输出(车灯)、人机交互(仪表盘)等
工程步骤
- 1.所有项目相关的文件都放在一个文件夹
- database,node,panel,logging,..
- 2.创建数据库,保存在database中,使用xl模板
- 查看attribute list
- 创建node, message, signal,并关联
- signal的注意点:
- 默认signed,要改为unsigned -- 实际少有负数
- 根据实际设置max,min
- message的注意点:
- 设置位循环帧,设置地址,DLC
- node>message>signal
- 3.关联数据库到仿真节点
- 4.设置系统变量,环境变量
- 高版本不用
- 5.设置面板
- 6.编辑代码
在CANoe中新建DBC数据库
CANoe软件和硬件准备
- 安装,并连接CANoe设备
新建CANoe工程
- new-CAN 500kBaud-双击并保存
新增dbc模板
- tool-打开CANoedb编辑器,file-new-Vector basic模板(最后一个模板)
- 注:这个模板会相对其他模板,在属性部分包含较全的属性,推荐使用
- 注:这个模板会相对其他模板,在属性部分包含较全的属性,推荐使用
新建信号
- 左侧大纲选中signal-右击-new,并写入信号的信息
- 信号名,长度,字节顺序,数据类型,系数Factor,偏移offset,max,min
- 注:一般信号为非负数,故value type选为unsigned
- 注:一般信号为非负数,故value type选为unsigned
新建报文
- 左侧大纲选中message-右击-new,并写入报文的信息
- signal标签中:可添加相关的signal到本报文中
- layout标签:报文布局
- attribute标签:报文属性
- 设置循环帧
- 在message的attribute标签中,设置循环时间和循环类型(cycle)如图
- 在message的attribute标签中,设置循环时间和循环类型(cycle)如图
- 报文-信号关联窗口:
- 双击(左)报文下的某个信号,或(右)报文的信号列表中的信号,打开“报文-信号关联窗口”
- 注:本窗口不同于单独双击信号或报文打开的没有关联的信号窗口或报文窗口
- 设置报文-信号关联的数值,如startbit等
- 双击(左)报文下的某个信号,或(右)报文的信号列表中的信号,打开“报文-信号关联窗口”
新建节点
- 左侧大纲选中nodes-右击-new,并写入节点的信息
- TX message标签中:添加需要发送的message包含到节点中
- mapped RX sig.标签中:添加需要从其他节点接收的信号:
添加环境变量
- 左侧大纲选中Environment variables-右击-new,并写入环境变量的信息
- 无法添加环境变量:new为灰 -- 可能因为是Demo版本的问题
一致性检查
- view-communication matrix:查看节点之间报文和信号的收发关系(通信矩阵)
- file-consistency check:执行一致性检查,看整个数据库的定义是否存在错误
检查有误:
创建好的dbc大纲
- 以下文的light-switch panel为例的dbc
simulation setup导入数据库
法1:先添加dbc,后依次添加ECU并选择
-
CAN network下的DataBase添加dbc
- simulation窗口:右侧大纲
- CAN network-CAN-database:右击-add-添加刚创建的dbc
-
CAN线拓扑图添加网络节点
- 左侧的CAN总线图-右击-Insert Network Node
- 生成的默认名ECU节点(如 ECU1...)-右击-Configuration,在Network Node选择想要的节点
法2:CAN network-import wizard直接导入dbc和节点
-
CAN network下的DataBase选import导入
- CAN network-CAN-database:右击-import wizard
- select选择dbc文件
-
选择所需的ECU节点,并导入dbc和节点
- 从上一步所选的dbc文件中的ECU节点中选择所需节点,并“>>”移入右侧方框
- 确认将要import的dbc和节点后-完成
- 所需的dbc和ECU节点将被一次性导入simulation中
创建系统变量和环境变量
变量选取
- 根据panel中的控件添加所需的系统变量
- canoe12中无法在dbc中添加环境变量,如上一章所示,先跳过
创建系统变量
- CANoe界面-environment下-系统变量
- 系统变量窗口的空白处:右键-new-输入参数
- 初始值/max/min,数据类型等
- 注:类型没有布尔,可以用int代替,如图
- panel中以switch和light控件为例,因此:
- 添加如下两个系统变量
- 添加如下两个系统变量
CANoe中新建面板Panel
新增panel文件并保存
- 打开panel编辑器:CANoe tool-panel Designer
- 注意:panel designer与有道等翻译软件不兼容,不要同时打开!!
- 保存默认生成的panel文件:重命名,文件位置选择等
设置控件
- 将右侧toolbox中的控件拖入panel虚线框中
- 选中控件-右侧属性properties窗口设置控件属性
- 属性窗口的symbol:需要重点设置的属性,关联signal或变量
- 这里关联上一步添加的系统变量值
- 这里关联上一步添加的系统变量值
panel与capl
- 下一步通过CAPL更好地控制panel的控件
CAPL程序设计
参考链接
- 【CANoe】小白入门简单工程demo:light 和 switch
- CAN总线原理-精华整理
- Step by Step学习CANoe三大工具链
- CANOE入门(一): CANoe7.6演示
- CANO入门(三): 同链接2的easy示例复刻