基于CANoe的CAN总线设计基础与简例

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于CANoe的CAN总线设计基础与简例CANoe概述CANoe是德国Vecto:公司开发的一套通用的CAN总线系统的开发、测试和分析工具。CANoe的主要组成部分和各自功能为:CANdb++编辑器:用CANdb++编辑器可以创建或编辑数据库文件(*.dbc)。数据库文件中包括了CANoe所用到的信号的信息,这当中包括了报文和信号的网络节点和符号名称,以及环境变量等信息。CAPL浏览器:利用CAPL浏览器可以创建用于测量和模拟面板的CAPL程序。因为数据库的应用,在编程时可以使用直观的报文和信号的名称,而不必使用二进制代码的报文头和数据。CANoe主程序:用于测量和模拟CAN系统。通过File/Database菜单,可以在主程序中关联一个或多个数据库。面板编辑器:通过面板编辑器可以创建面板。面板的作用是作为用户和在CANoe里的模拟面板里被模拟的网络节点的I/O接口。除了标准按钮和开关,在面板编辑器中也可使用位图作为显示和控制器件。可以使用任意的位图编辑软件创建合适的位图,然后用十面板编辑器。任何显示和控制兀件都要和数据库中的环境变量关联好,这样CAPL程序可以在CANoe主程序中读写显示和控制兀件。使用CANoe进行开发的三个阶段使用CANoe的开发过程可以分为3个阶段:第一个阶段是利用数字仿真进行网络需求分析和设计阶段。该阶段首先要定义网络里的通讯需求,包括:需要几个节点;在网络中要发送多少个报文;数据从哪个节点传输到哪个节点;每个报文的具体组成;有哪些外部的输入输出。然后,利用网络数据库工具CANdb++建立起CAN通讯数据库。接下来,建立网络拓扑结构,选择总线的波特率,定义节点的网络行为,使用CANoe建立各个网络节点的模型,并通过仿真来预估在设定波特率情况下的总线负载和延迟。通过第一个阶段的仿真可以检验各个节点功能的完善性和网络的合理性,也可以监控网络负载和延迟。第一阶段如图3-3所示。图3-3完全数字仿真第二个阶段是节点实现和半物理仿真阶段。第一个阶段结束后,我们能够得到一个完整的系统功能模型。接下来,可以开发真实的控制器节点,并利用总线接口与CANoe上剩余的虚拟节点相连接,来测试真实节点的功能,如通信、纠错。对于并行开发的节点,就可以不受其它节点开发步骤的影响。第二阶段如图3-4所示。图3-4半物理仿真第三个阶段是全系统集成阶段。开发的最终阶段将逐步把所有的虚拟节点用真实的节点来替代,此时,CANoe只是观察分析的工具了。在这个过程中,整个系统包括各个功能节点都能详细的检查到。由于利用功能模块取代真实的网络节点能减少错误的发生,因此通过这两种状态的切换能检查其功能的完善性。第三阶段如图3-5所示。图3-5完全物理网络3.3面板的设计面板编辑器用于创建图形面板。在图形面板中可以在模拟测量的过程中方便地改变离散或是连续的环境变量的值。面板编辑器既可以单独启动也可以从CANoe主程序中启动,从CANoe主程序中启动时,和主程序中关联的数据库会自动关联到面板编辑器中。表3-1为所有控制面板的元件一览。所有放在面板上的元件称为“控件”。“控件”可分为控制元件和显示元件,控制元件(如开关,按钮等)用于改变环境变量的值,显示元件用于显示环境变量的值(如报警灯等)。对于不同类型的环境变量有特定的元件可用,如对于离散的变量可用开关和显示灯等,对于连续的变量可用滑块,对于字符串型的环境变量可用文字输入框。除此之外,还可以放入静态的和环境变量无关的元件,如作为背景的位图,用于说明的文字等。所有的“控件”(显示和控制元件)必须和数据库中的一个环境变量或信号相关联。3.4CAPL编程3.4.1CAPL简介CANoe的通用性、易用性很大程度上是因为用户可以对CANoe进行编程。CAPL是CANAccessProgrammingLanguage的缩写。CAPL是一种类C语言的程序语言。利用CAPL可以在单个的应用中对CANoe进行编程。在网络节点的开发过程中,往往会出现其他网络节点还不可用的问题,为了模拟系统环境,这些网络节点的数据流要通过CAPL的编程来模拟,CAPL节点作为功能块插入到数据流图中。CAPL的输入是事件发生器,CAPL可以对报文,定时器以及键盘输入做出反应,所以CANoe可以用来监控和检测特殊的问题,如CANoe可以对发布到总线的特定报文做出反应,然后可以调用户自定义的分析和测试函数。CAPL同样也可为控制器的开发模拟总线环境,通过CAPL,对怎样的事件做出怎样的反应可以完全由用户来定义决定。因为CANoe有两个硬件接口,通过CAPL的编程也可以实现网关的功能。必须要注意的是,在测试设置面板中插入的CAPL块能产生报文,但是不能发布到真实总线中去,如果要向总线发布报文,必须把CAPL块插入到模拟设置面板中。在CAPL编程中应尽量引用数据库中的报文,这样做对于提高开发效率非常有用,例如,如果要改变某条报文的优先级,只需改变数据库中这条报文的识别码,然后重新编译CAPL程序即可实现,否则要在CAPL中去改变每个用到这条报文的地方,非常繁琐而且容易出错。3.4.2CAPL数据类型一、CAPL数据类型如下表所示二、数据定义变量定义inti;message0x123HiRain;messageMotorDataVector;三、关键字thisthis代表触发事件的对象onmessage100{bytebyte_0;byte_0=this.byte(0);//将ID为100的报文的信号byte的值送变量byte_0,this指ID为100的报文...}onenvVarSwitch{intval;val=getvalue(this);得到环境变量Switch的值送val,this指Switch...}3.4.3CAPLBroswer3.4.3CAPL事件1、消息事件onmessage123//对消息123(dec)反应onmessage0x123//对消息123(hex)反应onmessageMotorData//对消息MotorData(符号名字)反应onmessageCAN1.123//对CAN通道1收到消息123反应onmessage*//对所有消息反应onmessage100-200//对100-200间消息反应2、键盘事件onkey0x20//按空格键反应onkeyF1//按F1键反应onkeyCtrl-F12//按Ctrl+F12键反应onkeyPageUP//按PageUp键反应onkeyHome//按Home键反应onkey*//按所有键反应onkey‘a’//对按键a反应onkey‘‘//对空格反应3、时间事件定时器声明msTimermyTimer;//将myTimer申明ms为单位的变量timermyTimer;//将myTimer申明s为单位的变量定时器函数setTimer(myTimer,20);//将定时值设定为20ms,并启动cancelTimer(myTimer);//停止定时器myTimer定时器事件ontimermyTimer//对myTimer设定的时间到反应4、环境变量事件环境变量函数getValue()//获取环境变量的值putValue()//设置环境变量的值环境变量事件onenvVarXXX5、输出文本WriteWindowwrite函数inth=100;charch=‘a’;chars100[8]=“hundred”;write(“Hundredasanumber:%d,%x”,h,h);write(“Hundredasastring:%s”,s100);write(“Thesquarerootoftwois%6.4g”,sqrt(2.0));3.4.4CAPL响应1、对的报文响应onmessage0x64{if(this.byte(2)==0xFF)write(“Thirdbyteofthemessageisinvalid”);}onmessageMotorData{if(this.temperature.phys=150)write(“Warning:criticaltemperature”);}2、对键盘响应onkey‘a’{messageMotorDatamMoDa;mMoDa.temperature.phys=60;mMoDa.speed.phys=4300;output(mMoDa);}onkey‘b’{message100m100={dlc=1};m100.byte(0)=0x0B;output(m100);}3、定时器处理Variables{message0x555msg1={dlc=1};msTimertimer1;}onstart{setTimer(timer1,100);}ontimertimer1{setTimer(timer1,100);msg1.byte(0)=msg1.byte(0)+1;output(msg1);}4、环境变量的处理onenvVarevSwitch{messageMotorDatamsg;msg.bsSwitch=getValue(this);output(msg);}3.5CANoe数据库在一个联网的总线系统上的所有数据和它们之间的相互关系,通常都存储在一个集中数据库中,CANoe提供一个数据库编辑器,在这里可以随意的创建和更改数据库中的信息。由数据库编辑器创建的数据库可以被各个程序和工具调用,如图3-6所示。数据库中的两个对象之间可以通过关联建立联系。例如,将一个信号和一个报文关联,就可以决定在哪条报文中发送这条信号,可能的关联关系见表3-2。表3-2数据库中可关联的对象图3-6数据库和其他应用下面对CANoe中的数据库中的各种对象做一下简要说明:整车即整车上的网络系统,可能包括一个以上的总线网络,相互之间由网关进行连接。网络:通常包括多个控制单元,控制单元被连接到同一个总线上,通过总线交换信息。控制单元:控制单元是在网络中分布的执行单元。控制单元通过属于它的网络节点和网络交换信息。一个控制单元可以包括多个网络节点。环境变量也被指派到不同的控制单元。因为控制单元在网络中不是独立的,在CANoe测试运行的时候不能改变控制单元的名称和描述。环境变量:CANoe提供环境变量来模拟网络节点针对功能总线做出的反应。环境变量由系统环境中的事件和状态来描述,如外界压力,温度,开工位置等。通过用户定义的控制面板可以随意地更改环境变量,也即改变系统环境中的状态。在CAPL中对于环境变量变化做出反应的事件可用“onenvVar”语句来描述。GetValue()语句和putValue()语句用来读和写环境变量。环境变量由以下系统参数来定义,符号化的名称数据类型,包括整型,字符串,浮点型,数据型等修改权,包括无限制,只读(传感器型),可写(执行元件型),特定控制器可读写等单位,机环境变量的物理单位最大最小值长度注释网络节点:网络节点是控制单元和网络交换数据的接口,控制单元通过网络节点从网络收发信息。网络节点由以下系统参数来定义符号化的网络节点名称地址节点组:多个网络节点可以组成节点组,例如,网络上所有同一家制造商提供的节点可以组成一个节点组。节点组也可用来构建网络的变种,所有车型变种都会用到的节点可以组成一个节点组,这个节点组和网络的所有变种相关联,选装的网络节点再单独和网络关联。报文:即在总线上传递的报文信息,由以下系统参数定义,符号化的报文名称识别位(CANID),在一个网络中必须统一分配,不能重复使用字节数传递类型循环时间(如果报文被周期性的发送)网络节点,即发送这条报文的网络节点报文信号注释信号:信号是信息的最小单元,由以下系统参数定义符号化信号名称信号长度格式数据类型系数,基准和物理单位。“原始值”是网络上传递的实际数据,“物理值”是真实反应的物理量大小(如速度,转速,温度等)。信号转换公式用于把原始值转换成物理值:物理值=(原始值×系数)+

1 / 30
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功