超经典CANoe工程案例.pdf
《超经典CANoe工程案例.pdf》由会员分享,可在线阅读,更多相关《超经典CANoe工程案例.pdf(37页珍藏版)》请在三一文库上搜索。
1、. . CANoe 入门 Step by step系列(一)基础应用 CANoe是 Vector公司的针对汽车电子行业的总线分析工具,现在我用CANoe7.6 版本进行介绍,其他版本功能 基本差不多。 硬件我使用的是CAN case XL. 1,CANoe 软件的安装很简单,先装驱动, 再装软件。 安装完成, 插上 USB ,连接硬件, 这样在控制面板中,Vector Hardware 进行查看 通过查看信息可知,CANcaseXL中的两个piggy ,一个是251(高速 CAN ),一个是7269(LIN ),另外常用的 还有 1054(低速 CAN ,或称容错CAN ),因为 CANcas
2、eXL中只能支持两路通讯,这样piggy 可以自由组合 2, 硬件连接正常,打开CANoe软件 File-New Configuration 可以选择新建工程的模版,我们这里选择CAN_500kBaud.tcn, 这样新建了波特率为 500K CAN工程,可以File-Save Configuration,进行保存 3, 接下来就要使用CAN db+ Editor工具对总线网络节点,消息,信号,进行定义了。 点击工具栏的这个图标,或开始菜单中找这个工具启动 启动后, File-Create Database,选择 CANTemplate.dbc, 选择目录及文件名,进行保存 . . 右键 Ne
3、twork nodes-New ,进行网络节点的定义, 这里只需要填写Name即可,例如: Node_A 然后添加Node_B,完成后如下图,这样在Network nodes目录下面添加出来两个节点 节点添加完成后,下一步添加CAN消息,右键Messages-New, 这是需要定义名称,ID,DLC等信息,如下: . . 然后在 Transmitters页面,点击Add 按钮,添加Node_A为发送节点,意思就是说,此消息是从Node_A节点发 送出来的 其实还有一种方法就是,此时暂时不定义发送节点,然后直接以拖曳的方式拖曳到发送节点上,功能上是一样 的 有了消息,消息里携带的东西自然是信号咯
4、,那么我们开始创建一个信号 右键 Signals-New,填写如下信息 . . 信号当然要放到消息中咯,切换到Messages 页面, Add 我们刚刚建立的Message_A, 当然和上面一样,采用拖 曳的方式从Signal到 Message 中建立关联也是可以的。 上面信息中Intel模式和 Motorola格式的区别如下: . . 用 0 和 1 来表示开关信号状态似乎还不是很直观,我们可以使用on 和 off来表示就好了,于是View-Value Tables, 右键空白处 -New,键入如下信息: . . 定义好了之后,还需要跟信号进行关联。右键需要关联的信号-Edit Signal
5、,Value Table 中关联刚才建立的 那个 Value Talbe项 这样一个信号就完成了,另外还需要加一个类似的信号,可以点击Signal根目录,在右边选择Signal复制, 及粘贴,然后双击复制好的Signal后,进行一些编辑,然后用上面方法关联Message 即可快速建立第二个信号 了,是不是很方便 继续添加第三个信号,Indicator_A,跟上面一样,但是我这个信号想放在Message 的第二个字节的位置,怎么 办? 其实很简单,有两种方法:第一种,右键已经关联好的,即在Message 目录下的信号,Edit mapped signal, 在弹出的对话框中的Startbit中填
6、 8,这样就这个信号就跑到该消息的第二个字节中了。第二种方法,右键该 消息 -Edit Message,在 Layout 页面中,拖动信号的色块进行移动 . . 以上 Message_A 消息及消息下所定义已经定义完成 . . 如法炮制另外一个消息Message_B,完成后如下图。 下面创建环境变量,右键Environment variables . . 陆续把其他环境变量加好,Indicator的 Access 属性为 Write哦,加完如下: . . 数据库的定义这款基本上就OK了。保存后关闭CANdb+ Editor,回到 CANoe主程序中。 请在 Configuration-Opti
7、ons-Configuration Settings-Channel Usage 设置使用的通讯通道,因为这个只 需要 1 路 CAN ,其他都设置为0 就可以。 点这个选项页面可出现 Simulate Setup 界面 . . 右键 Databases-Add,把刚刚创建好的dbc 给加载进来,之后再连线上右键-Insert Network Node 结果如下: 右键这个ECU模块 -Configuration,在 Network Node 选择 Node_A,完成,然后添加Node_B . . 完成后如下图,这样dbc 与 CANoe的关联就好了。 4,界面设计 网络及相应的关系设置好之后
8、,应该设计界面了,一个良好的界面可以直观的显示及控制各种信号。 界面设计工具有两种:一种是Panel Designer,新的界面设计工具,另外一种是Panel Editor是老的界面设计 工具,无论采用何种工具设计的界面,都可以和CANoe很好的兼容,没有问题。下面我们先用第一种界面设计 工具来完成界面的设计 点击工具栏的这个图标或 File-Open Panel Designer,打开界面编辑器,界面如下: . . 保存一下该界面,起名为Panel_A, 一个空的界面上可以放置右上边若干组件。放置好之后,选中界面上的组件 的时候,右下侧回显示当前选中的组件的属性,可以更改相应的大小位置等,但
9、最重要的是Symbol 属性,这里 要说一下,每个界面组件也都需要与CANoe关联,否则单纯的界面是没有任何意义的,关联主要是信号和环境 变量,在 Symbol 属性的 Symbol Filter属性中可以进行选择,我们这里关联的是环境变量,所以选择 Environment Variable,然后再点击上面的Symbol 属性,然后在弹出的页面中选择相应关联的变量 完成后可以按同样的方法设计Panel_B, 也可以 Save As 的方法快速建立同样的Panel 但是与环境变量的关联和 界面的文字需要进行微调。这样两个Panel 都已完成。也已经建立了与CANoe之间的关联。 5,CAPL编程
10、 . . 所有的前期准备工作和组装工作都已完成,现在需要编写程序使整个系统有机的运行起来。回到CANoe的 Simulation Setup 界面,然后点击Node_A模块的,像铅笔一样的图标,填写程序名称,这里Node_A,然后打 开编程界面,完成以下程序。然后完成Node_B程序。小技巧:如果背不出具体的消息名称,信号名称或环境变 量,可以右键程序空白处,你会得到意外的惊喜,试试看。 OK大功告成 6,运行 . . 现在点击工具栏,运行程序。注意:这里表示实际的网络,所有的消息是发送到物理的网络上 的,如果只是验证程序,设置成这样就可以了。完整运行结果如下: 就是这样,一步一步的,我们完成
11、了第一个完整的CANoe应用工程,虽然这只是入门第一步,但整个CANoe的 开发流程基本涵盖,如果能跑出上面的运行结果,依然能够给我们很多的惊喜。我们需要这样的惊喜,因为这 是我们继续前行的动力。 . . CANoe 入门 Step by step系列(二) CAPL编程 CAPL就是 Communication Application Programming Laguage的缩写, CAPL类似于 C语言的语法,因此所有的 语法请参考C语言教程, 这里不在这里进行详述,关于 C 语言,毫无疑问的, 首先推荐大家看谭浩强老师的书, 经典中的经典, 看完这本C 语言应该没问题了。CAPL在 CA
12、Noe中起到重要的作用,他将所有的部分联系起来(请 看下图)现在我们给予上一节的基础上,来着重介绍CAPL编程。 CAPL语法是 C语言的,又有一些C+的特性, this指针,事件等,对于事件的理解可以学习任意一种面对对象 语言,首推C#.NET, 可以参考我的博客学习,当然这个似乎比CAPL本身更加难,事件也更加多,但这并不妨碍 对事件的理解,其中的事件类型如下图: 下面来几个小例子帮助理解 . . 来个 CANoe版本的 hello world!来兴奋一小下吧。开整 在打开 CANoe ,新建个工程,在Simulation Setup中加个 Network node ,点铅笔,忘了吗,上一
13、节刚讲过,右 键 Start-New,键入如下代码 编译后,关闭CAPL Brower 。运行 CANoe工程,结果如下, 哇塞成功咯,好有成就感啊。 . . 这个例子似乎跟CAN通讯没啥太大关系啊,好,我们接下来再做一个例子 运行结果如下,按键盘b 键,将发送一个CAN消息,连 dlc 是啥都不知道的同学,推荐先学习一下CAN基础知 识,推荐瑞萨公司的CAN入门书,讲的非常的好。 . . 运行刚刚的那个例子你会发现,按一下b,只发送一条消息,但在实际应用中CAN消息都是循环连续发送的, 我们要对刚刚的程序进行一些修改。完成这样的功能。程序如下: variables message 0x400
14、 msgA = dlc=1; mstimer timerA; int conditionA = 0; on key a conditionA = !conditionA; if(conditionA =1) setTimer(timerA,200); on timer timerA if(conditionA=1) setTimer(timerA,200); msgA.byte(0) = msgA.byte(0)-1; output(msgA); 运行结果如下:按A键, Timer 启动,发送消息 . . 接下来我们一起来看总结一下CAPL编程的要点: . . . . . . . . . .
15、. . . . CAPL编程的学习,需要通过不断在实践中的积累,此外别无他法。以上真真儿的只是入门,如果你真心看过, 不如你真心写过。 . . CANoe 入门 Step by step系列(三)简单例子的剖析 最好的学习方式是什么?模仿。有人会问,那不是山寨么?但是我认为,那是模仿的初级阶段,当把别人最好 的设计已经融化到自己的血液里,变成自己的东西,而灵活运用的时候,才是真正高级阶段。正所谓画虎画皮 难画骨。但初级阶段仍然是必须经历的过程,他会使你在达到高级阶段的过程中少走很多弯路,下面我们来迈 出这一步。先研究一下别人的简单例子。 最好的例子莫过于Vector本身的 Demo了,这个在安
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 经典 CANoe 工程 案例
链接地址:https://www.31doc.com/p-5231073.html